Fdot = new Matrix3d[nmax]; // memory usage: 9 doubles
delete[] Fincr;
Fincr = new Matrix3d[nmax]; // memory usage: 9 doubles
delete[] K;
K = new Matrix3d[nmax]; // memory usage: 9 doubles
delete[] PK1;
PK1 = new Matrix3d[nmax]; // memory usage: 9 doubles; total 5*9=45 doubles
delete[] detF;
detF = new double[nmax]; // memory usage: 1 double; total 46 doubles
delete[] smoothVelDifference;
smoothVelDifference = new Vector3d[nmax]; // memory usage: 3 doubles; total 49 doubles
delete[] R;
R = new Matrix3d[nmax]; // memory usage: 9 doubles; total 67 doubles
delete[] FincrInv;
FincrInv = new Matrix3d[nmax]; // memory usage: 9 doubles; total 85 doubles
delete[] W;
W = new Matrix3d[nmax]; // memory usage: 9 doubles; total 94 doubles
delete[] D;
D = new Matrix3d[nmax]; // memory usage: 9 doubles; total 103 doubles
delete[] numNeighsRefConfig;
numNeighsRefConfig = new int[nmax]; // memory usage: 1 int; total 108 doubles
delete[] CauchyStress;
CauchyStress = new Matrix3d[nmax]; // memory usage: 9 doubles; total 118 doubles
delete[] hourglass_error;
hourglass_error = new double[nmax];
delete[] particle_dt;
particle_dt = new double[nmax];
}
if (first) { // return on first call, because reference connectivity lists still needs to be built. Also zero quantities which are otherwise undefined.
first = false;
for (int i = 0; i < atom->nlocal; i++) {
Fincr[i].setZero();
detF[i] = 0.0;
smoothVelDifference[i].setZero();
D[i].setZero();
numNeighsRefConfig[i] = 0;
CauchyStress[i].setZero();
hourglass_error[i] = 0.0;
particle_dt[i] = 0.0;
}
return;
}
/*
* calculate deformations and rate-of-deformations
*/
PairTlsph::PreCompute();
/*
* calculate stresses from constitutive models
*/
PairTlsph::AssembleStress();
/*
* QUANTITIES ABOVE HAVE ONLY BEEN CALCULATED FOR NLOCAL PARTICLES.
* NEED TO DO A FORWARD COMMUNICATION TO GHOST ATOMS NOW
*/
comm->forward_comm_pair(this);
/*
* compute forces between particles
*/
updateFlag = 0;
ComputeForces(eflag, vflag);
}
void PairTlsph::ComputeForces(int eflag, int vflag) {
// Calculate magnitude of deviatoric strain rate. This is used for deciding if shear modulus should be computed from current rate or be taken as the initial value.