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);
}
Ejemplo n.º 2
0
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);
}