void HomogeneousNeoHookeanIsotropicMaterial::ComputeEnergyGradient(int elementIndex, double * invariants, double * gradient) // invariants and gradient are 3-vectors { double IIIC = invariants[2]; gradient[0] = 0.5 * muLame; gradient[1] = 0.0; gradient[2] = (-0.5 * muLame + 0.25 * lambdaLame * log(IIIC)) / IIIC; AddCompressionResistanceGradient(elementIndex, invariants, gradient); }
void HomogeneousMooneyRivlinIsotropicMaterial::ComputeEnergyGradient(int elementIndex, double * invariants, double * gradient) // invariants and gradient are 3-vectors { double Ic = invariants[0]; double IIc = invariants[1]; double IIIc = invariants[2]; gradient[0] = (Ic * mu01) / pow(IIIc, 2.0 / 3.0) + mu10 / pow(IIIc, 1.0 / 3.0); gradient[1] = (-0.5 * mu01) / pow(IIIc, 2.0 / 3.0); gradient[2] = (-1.0 / 3.0 * (Ic * Ic - IIc) * mu01) / pow(IIIc, 5.0 / 3.0) - (1.0 / 3.0 * Ic * mu10) / pow(IIIc, 4.0 / 3.0) + ((-1.0 + sqrt(IIIc)) * v1) / sqrt(IIIc); AddCompressionResistanceGradient(elementIndex, invariants, gradient); }