IntegratorBase::IntegratorBase(int r, double timestep, double dampingMassCoef, double dampingStiffnessCoef) { this->r = r; this->timestep = timestep; this->dampingMassCoef = dampingMassCoef; this->dampingStiffnessCoef = dampingStiffnessCoef; internalForceScalingFactor = 1.0; q = (double*) malloc(sizeof(double) * r); qvel = (double*) malloc(sizeof(double) * r); qaccel = (double*) malloc(sizeof(double) * r); q_1 = (double*) malloc(sizeof(double) * r); qvel_1 = (double*) malloc(sizeof(double) * r); qaccel_1 = (double*) malloc(sizeof(double) * r); externalForces = (double*) malloc(sizeof(double) * r); internalForces = (double*) malloc(sizeof(double) * r); qresidual = (double*) malloc(sizeof(double) * r); qdelta = (double*) malloc(sizeof(double) * r); buffer = (double*) malloc(sizeof(double) * r); ResetToRest(); memset(externalForces,0,sizeof(double) * r); memset(internalForces,0,sizeof(double) * r); }
IntegratorBaseDense::IntegratorBaseDense(int r, double timestep, double * massMatrix, ReducedForceModel * reducedForceModel, double dampingMassCoef, double dampingStiffnessCoef) : IntegratorBase(r, timestep, dampingMassCoef, dampingStiffnessCoef), useStaticSolver(0), usePlasticDeformations(0), plasticThreshold2(DBL_MAX), plasticfq(NULL), totalfq(NULL) { r2 = r * r; this->massMatrix = (double*) malloc (sizeof(double) * r2); dampingMatrix = (double*) malloc (sizeof(double) * r2); tangentStiffnessMatrix = (double*) malloc (sizeof(double) * r2); memcpy(this->massMatrix, massMatrix,sizeof(double) * r2); forceAssemblyTime = systemSolveTime = 0.0; this->reducedForceModel = reducedForceModel; tangentStiffnessMatrixOffset = (double*) calloc (r2, sizeof(double)); IPIV = new IPIVC(r); ResetToRest(); memset(externalForces,0,sizeof(double) * r); memset(internalForces,0,sizeof(double) * r); }