89 double lambda1 = eVals.
at(1);
90 double lambda2 = eVals.
at(2);
91 double lambda3 = eVals.
at(3);
94 E1 = 1. / 2. * log(lambda1);
95 E2 = 1. / 2. * log(lambda2);
96 E3 = 1. / 2. * log(lambda3);
98 E1 = 1. / ( 2. *
m ) * ( pow(lambda1,
m) - 1. );
99 E2 = 1. / ( 2. *
m ) * ( pow(lambda2,
m) - 1. );
100 E3 = 1. / ( 2. *
m ) * ( pow(lambda3,
m) - 1. );
104 for (
int i = 1; i < 4; i++ ) {
105 for (
int j = 1; j < 4; j++ ) {
106 SethHillStrain.
at(i, j) = E1 * eVecs.
at(i, 1) * eVecs.
at(j, 1) + E2 *eVecs.
at(i, 2) * eVecs.
at(j, 2) + E3 *eVecs.
at(i, 3) * eVecs.
at(j, 3);
111 auto stressVector = sMat->giveRealStressVector_3d(SethHillStrainVector, gp, tStep);
114 stressVector.at(4) = 2;
115 stressVector.at(5) = 2;
116 stressVector.at(6) = 2;
119 stressM.at(4) *= 1. / 2.;
120 stressM.at(5) *= 1. / 2.;
121 stressM.at(6) *= 1. / 2.;
126 auto L2 = tmp.second;
131 stressVector.at(4) *= 0.5;
132 stressVector.at(5) *= 0.5;
133 stressVector.at(6) *= 0.5;
139 status->setPmatrix(P);
140 status->setTLmatrix(
TL);
141 status->letTempStressVectorBe(firstPKv);
196LargeStrainMasterMaterial :: constructL1L2TransformationMatrices(
const FloatArrayF<3> &eigenValues,
const FloatArrayF<6> &stressM,
double E1,
double E2,
double E3)
const
199 double gamma12, gamma13, gamma23, gamma112, gamma221, gamma113, gamma331, gamma223, gamma332, gamma;
200 double lambda1 = eigenValues.
at(1);
201 double lambda2 = eigenValues.
at(2);
202 double lambda3 = eigenValues.
at(3);
203 double lambda1P = pow(lambda1,
m - 1);
204 double lambda2P = pow(lambda2,
m - 1);
205 double lambda3P = pow(lambda3,
m - 1);
206 if ( ( lambda1 == lambda2 ) && ( lambda2 == lambda3 ) ) {
207 gamma12 = gamma13 = gamma23 = 1. / 2. * lambda1P;
209 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
210 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
211 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
212 answer2.
at(4, 4) = 1. / 2. * ( stressM.
at(2) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda2,
m - 2);
213 answer2.
at(5, 5) = 1. / 2. * ( stressM.
at(1) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda3,
m - 2);
214 answer2.
at(6, 6) = 1. / 2. * ( stressM.
at(1) + stressM.
at(2) ) * (
m - 1 ) * pow(lambda1,
m - 2);
216 answer2.
at(1, 5) = answer2.
at(5, 1) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
217 answer2.
at(1, 6) = answer2.
at(6, 1) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
218 answer2.
at(2, 4) = answer2.
at(4, 2) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
219 answer2.
at(2, 6) = answer2.
at(6, 2) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
220 answer2.
at(3, 4) = answer2.
at(4, 3) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
221 answer2.
at(3, 5) = answer2.
at(5, 3) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
223 answer2.
at(4, 5) = answer2.
at(5, 4) = 1. / 2. * stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
224 answer2.
at(4, 6) = answer2.
at(6, 4) = 1. / 2. * stressM.
at(5) * (
m - 1 ) * pow(lambda1,
m - 2);
225 answer2.
at(5, 6) = answer2.
at(6, 5) = 1. / 2. * stressM.
at(4) * (
m - 1 ) * pow(lambda1,
m - 2);
226 }
else if ( lambda1 == lambda2 ) {
227 gamma12 = 1. / 2. * lambda1P;
228 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
229 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
230 gamma113 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda3 ) - 2 * ( E1 - E3 ) ) / ( ( lambda1 - lambda3 ) * ( lambda1 - lambda3 ) );
231 gamma331 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda1 ) - 2 * ( E3 - E1 ) ) / ( ( lambda3 - lambda1 ) * ( lambda3 - lambda1 ) );
234 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
235 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
236 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
238 answer2.
at(4, 4) = stressM.
at(2) * gamma113 + stressM.
at(3) * gamma331;
239 answer2.
at(5, 5) = stressM.
at(1) * gamma113 + stressM.
at(3) * gamma331;
240 answer2.
at(6, 6) = 1. / 2. * ( stressM.
at(1) + stressM.
at(2) ) * (
m - 1 ) * pow(lambda1,
m - 2);
242 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma113;
243 answer2.
at(1, 6) = answer2.
at(6, 1) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
244 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma113;
245 answer2.
at(2, 6) = answer2.
at(6, 2) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
246 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma331;
247 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma331;
248 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma113;
249 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma113;
250 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma113;
251 }
else if ( lambda2 == lambda3 ) {
252 gamma23 = 1. / 2. * lambda2P;
253 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
254 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
255 gamma112 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda2 ) - 2 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda1 - lambda2 ) );
256 gamma221 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda1 ) - 2 * ( E2 - E1 ) ) / ( ( lambda2 - lambda1 ) * ( lambda2 - lambda1 ) );
258 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
259 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
260 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
262 answer2.
at(4, 4) = 1. / 2. * ( stressM.
at(2) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda2,
m - 2);
263 answer2.
at(5, 5) = stressM.
at(1) * gamma112 + stressM.
at(3) * gamma221;
264 answer2.
at(6, 6) = stressM.
at(1) * gamma112 + stressM.
at(2) * gamma221;
266 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma112;
267 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma112;
268 answer2.
at(2, 4) = answer2.
at(4, 2) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
269 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(6) * gamma221;
270 answer2.
at(3, 4) = answer2.
at(4, 3) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
271 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma221;
272 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma221;
273 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma221;
274 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma221;
275 }
else if ( lambda1 == lambda3 ) {
276 gamma13 = 1. / 2. * lambda1P;
277 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
278 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
279 gamma223 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda3 ) - 2 * ( E2 - E3 ) ) / ( ( lambda2 - lambda3 ) * ( lambda2 - lambda3 ) );
280 gamma332 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda2 ) - 2 * ( E3 - E2 ) ) / ( ( lambda3 - lambda2 ) * ( lambda3 - lambda2 ) );
282 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
283 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
284 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
286 answer2.
at(4, 4) = stressM.
at(2) * gamma223 + stressM.
at(3) * gamma332;
287 answer2.
at(5, 5) = 1. / 2. * ( stressM.
at(1) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda3,
m - 2);
288 answer2.
at(6, 6) = stressM.
at(1) * gamma332 + stressM.
at(2) * gamma223;
290 answer2.
at(1, 5) = answer2.
at(5, 1) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
291 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma332;
292 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma223;
293 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(4) * gamma223;
294 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma332;
295 answer2.
at(3, 5) = answer2.
at(5, 3) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
296 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma332;
297 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma332;
298 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma332;
300 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
301 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
302 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
304 gamma112 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda2 ) - 2 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda1 - lambda2 ) );
305 gamma221 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda1 ) - 2 * ( E2 - E1 ) ) / ( ( lambda2 - lambda1 ) * ( lambda2 - lambda1 ) );
306 gamma113 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda3 ) - 2 * ( E1 - E3 ) ) / ( ( lambda1 - lambda3 ) * ( lambda1 - lambda3 ) );
307 gamma331 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda1 ) - 2 * ( E3 - E1 ) ) / ( ( lambda3 - lambda1 ) * ( lambda3 - lambda1 ) );
308 gamma223 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda3 ) - 2 * ( E2 - E3 ) ) / ( ( lambda2 - lambda3 ) * ( lambda2 - lambda3 ) );
309 gamma332 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda2 ) - 2 * ( E3 - E2 ) ) / ( ( lambda3 - lambda2 ) * ( lambda3 - lambda2 ) );
311 gamma = ( lambda1 * ( E2 - E3 ) + lambda2 * ( E3 - E1 ) + lambda3 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda2 - lambda3 ) * ( lambda3 - lambda1 ) );
313 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
314 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
315 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
317 answer2.
at(4, 4) = stressM.
at(2) * gamma223 + stressM.
at(3) * gamma332;
318 answer2.
at(5, 5) = stressM.
at(1) * gamma113 + stressM.
at(3) * gamma331;
319 answer2.
at(6, 6) = stressM.
at(1) * gamma112 + stressM.
at(2) * gamma221;
321 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma113;
322 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma112;
323 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma223;
324 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(6) * gamma221;
325 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma332;
326 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma331;
327 answer2.
at(4, 5) = answer2.
at(5, 4) = 2. * stressM.
at(6) * gamma;
328 answer2.
at(4, 6) = answer2.
at(6, 4) = 2. * stressM.
at(5) * gamma;
329 answer2.
at(5, 6) = answer2.
at(6, 5) = 2. * stressM.
at(4) * gamma;
333 answer1.
at(1, 1) = lambda1P;
334 answer1.
at(2, 2) = lambda2P;
335 answer1.
at(3, 3) = lambda3P;
336 answer1.
at(4, 4) = gamma23;
337 answer1.
at(5, 5) = gamma13;
338 answer1.
at(6, 6) = gamma12;
339 return {answer1, answer2};
343LargeStrainMasterMaterial :: give3dMaterialStiffnessMatrix_dPdF(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
348 auto stiffness = sMat->give3dMaterialStiffnessMatrix(mode, gp, tStep);
350 stiffness.at(1, 4) = 2. * stiffness.at(1, 4);
351 stiffness.at(4, 1) = 2. * stiffness.at(4, 1);
352 stiffness.at(1, 5) = 2. * stiffness.at(1, 5);
353 stiffness.at(5, 1) = 2. * stiffness.at(5, 1);
354 stiffness.at(1, 6) = 2. * stiffness.at(1, 6);
355 stiffness.at(6, 1) = 2. * stiffness.at(6, 1);
356 stiffness.at(2, 4) = 2. * stiffness.at(2, 4);
357 stiffness.at(4, 2) = 2. * stiffness.at(4, 2);
358 stiffness.at(2, 5) = 2. * stiffness.at(2, 5);
359 stiffness.at(5, 2) = 2. * stiffness.at(5, 2);
360 stiffness.at(2, 6) = 2. * stiffness.at(2, 6);
361 stiffness.at(6, 2) = 2. * stiffness.at(6, 2);
362 stiffness.at(3, 4) = 2. * stiffness.at(3, 4);
363 stiffness.at(4, 3) = 2. * stiffness.at(4, 3);
364 stiffness.at(3, 5) = 2. * stiffness.at(3, 5);
365 stiffness.at(5, 3) = 2. * stiffness.at(5, 3);
366 stiffness.at(3, 6) = 2. * stiffness.at(3, 6);
367 stiffness.at(6, 3) = 2. * stiffness.at(6, 3);
368 stiffness.at(4, 4) = 4. * stiffness.at(4, 4);
369 stiffness.at(4, 5) = 4. * stiffness.at(4, 5);
370 stiffness.at(5, 4) = 4. * stiffness.at(5, 4);
371 stiffness.at(4, 6) = 4. * stiffness.at(4, 6);
372 stiffness.at(6, 4) = 4. * stiffness.at(6, 4);
373 stiffness.at(5, 5) = 4. * stiffness.at(5, 5);
374 stiffness.at(5, 6) = 4. * stiffness.at(5, 6);
375 stiffness.at(6, 5) = 4. * stiffness.at(6, 5);
376 stiffness.at(6, 6) = 4. * stiffness.at(6, 6);
379 auto stiffness2 =
dot(status->givePmatrix(), junk) + status->giveTLmatrix();