36 template<
typename Real,
typename Matrix>
50 template<
typename Real>
71 return s0 * (lambda1 - 1)*(lambda1 - 1) +
s0 * (lambda2 - 1)*(lambda2 - 1) +
s0 * (lambda3 - 1)*(lambda3 - 1);
91 template<
typename Real>
112 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
113 Real sq1 = lambda1 * lambda1;
114 Real sq2 = lambda2 * lambda2;
115 Real sq3 = lambda3 * lambda3;
116 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
117 return 0.5*
s0*(I - 3)*(I - 3) + 0.25*
s1*(II - 2 * I + 3);
122 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
124 Real D1 = 2 *
s0*I +
s1 * lambda1*lambda1;
125 Real D2 = 2 *
s0*I +
s1 * lambda2*lambda2;
126 Real D3 = 2 *
s0*I +
s1 * lambda3*lambda3;
150 template<
typename Real>
171 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
172 Real sqrtIII = lambda1 * lambda2*lambda3;
173 return s0 * (I - 3 - 2 *
log(sqrtIII)) +
s1 * (sqrtIII - 1)*(sqrtIII - 1);
178 Real sq1 = lambda1 * lambda1;
179 Real sq2 = lambda2 * lambda2;
180 Real sq3 = lambda3 * lambda3;
195 Real sqrtIII = lambda1* lambda2* lambda3;
197 Real sq1 = lambda1 * lambda1;
198 Real sq2 = lambda2 * lambda2;
199 Real sq3 = lambda3 * lambda3;
202 D(0, 0) = 2 *
s0 / sq1 + 2 *
s1 * sqrtIII / sq1;
203 D(1, 1) = 2 *
s0 / sq2 + 2 *
s1 * sqrtIII / sq2;
204 D(2, 2) = 2 *
s0 / sq3 + 2 *
s1 * sqrtIII / sq3;
215 template<
typename Real,
int n>
223 for (
int i = 0; i <= n; i++)
225 for (
int j = 0; j <= n; j++)
227 C[i][j] =
Real(12000);
234 Real sq1 = lambda1 * lambda1;
235 Real sq2 = lambda2 * lambda2;
236 Real sq3 = lambda3 * lambda3;
237 Real I1 = sq1 + sq2 + sq3;
238 Real I2 = sq1 * sq2 + sq2 * sq3 + sq3 * sq1;
241 for (
int i = 0; i <= n; i++)
243 for (
int j = 0; j <= n; j++)
254 Real sq1 = lambda1 * lambda1;
255 Real sq2 = lambda2 * lambda2;
256 Real sq3 = lambda3 * lambda3;
257 Real I1 = sq1 + sq2 + sq3;
258 Real I2 = sq1 * sq2 + sq2 * sq3 + sq3 * sq1;
263 for (
int i = 0; i <= n; i++)
265 for (
int j = 0; j <= n; j++)
267 int i_minus_one = i - 1 < 0 ? 0 : i - 1;
268 int j_minus_one = j - 1 < 0 ? 0 : j - 1;
270 int i_minus_one_even = 2 * floor(i_minus_one / 2);
271 int j_minus_one_even = 2 * floor(j_minus_one / 2);
272 int i_even = 2 * floor(i / 2);
273 int j_even = 2 * floor(j / 2);
276 if (i_minus_one_even == i_minus_one && j_even == j)
278 C1_positive =
Real(1);
280 else if (i_minus_one_even != i_minus_one && j_even == j)
284 else if (i_minus_one_even == i_minus_one && j_even != j)
290 C1_positive = I1 * I2 + 9;
294 if (i_even == i && j_minus_one_even == j_minus_one)
296 C2_positive =
Real(1);
298 else if (i_even != i && j_minus_one_even == j_minus_one)
302 else if (i_even == i && j_minus_one_even != j_minus_one)
308 C2_positive = I1 * I2 + 9;
311 int exp_i = i < 0 ? 1 : i;
312 int exp_j = j < 0 ? 1 : j;
313 D1 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq1;
314 D2 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq2;
315 D3 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq3;
321 D(0, 0) = D1 * lambda1;
322 D(1, 1) = D2 * lambda2;
323 D(2, 2) = D3 * lambda3;
330 Real sq1 = lambda1 * lambda1;
331 Real sq2 = lambda2 * lambda2;
332 Real sq3 = lambda3 * lambda3;
333 Real I1 = sq1 + sq2 + sq3;
334 Real I2 = sq1 * sq2 + sq2 * sq3 + sq3 * sq1;
339 for (
int i = 0; i <= n; i++)
341 for (
int j = 0; j <= n; j++)
343 int i_minus_one = i - 1 < 0 ? 0 : i - 1;
344 int j_minus_one = j - 1 < 0 ? 0 : j - 1;
346 int i_minus_one_even = 2 * floor(i_minus_one / 2);
347 int j_minus_one_even = 2 * floor(j_minus_one / 2);
348 int i_even = 2 * floor(i / 2);
349 int j_even = 2 * floor(j / 2);
352 if (i_minus_one_even == i_minus_one && j_even == j)
356 else if (i_minus_one_even != i_minus_one && j_even == j)
360 else if (i_minus_one_even == i_minus_one && j_even != j)
366 C1_positive = 3 * I1 + 3 * I2;
370 if (i_even == i && j_minus_one_even == j_minus_one)
374 else if (i_even != i && j_minus_one_even == j_minus_one)
378 else if (i_even == i && j_minus_one_even != j_minus_one)
384 C2_positive = 3 * I1 + 3 * I2;
387 int exp_i = i < 0 ? 1 : i;
388 int exp_j = j < 0 ? 1 : j;
389 D1 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq1;
390 D2 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq2;
391 D3 += 2 * exp_i *
C[i][j] *
pow(I1 - 3,
Real(i_minus_one_even))*
pow(I2 - 3,
Real(j_even)) * C1_positive + 4 * exp_j *
C[i][j] *
pow(I1 - 3,
Real(i_even))*
pow(I2 - 3,
Real(j_minus_one_even))*C2_positive*sq3;
410 template<
typename Real>
429 Real sq1 = lambda1 * lambda1;
430 Real sq2 = lambda2 * lambda2;
431 Real sq3 = lambda3 * lambda3;
432 Real E1 = ((sq1*sq1 - 1) / 4 + (1 / sq1 - 1) / 2) / 3;
433 Real E2 = ((sq2*sq2 - 1) / 4 + (1 / sq2 - 1) / 2) / 3;
434 Real E3 = ((sq3*sq3 - 1) / 4 + (1 / sq3 - 1) / 2) / 3;
436 return s0 * (E1 + E2 + E3);
442 D(0, 0) =
s0 * (lambda1*lambda1) / 3;
443 D(1, 1) =
s0 * (lambda2*lambda2) / 3;
444 D(2, 2) =
s0 * (lambda3*lambda3) / 3;
451 D(0, 0) = lambda1 *
s0 / (lambda1*lambda1*lambda1*lambda1) / 3;
452 D(1, 1) = lambda2 *
s0 / (lambda2*lambda2*lambda2*lambda2) / 3;
453 D(2, 2) = lambda3 *
s0 / (lambda3*lambda3*lambda3*lambda3) / 3;
462 template<
typename Real>
480 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
481 Real sq1 = lambda1 * lambda1;
482 Real sq2 = lambda2 * lambda2;
483 Real sq3 = lambda3 * lambda3;
484 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
485 Real J = lambda1 * lambda2 * lambda3;
486 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
487 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
488 return s0 * (cbrtIII * I - 3) +
s1 * (J - 1) * (J - 1) +
s2 * (0.5 * cbrtIII * cbrtIII * (I * I - II) - 3);
493 Real sq1 = lambda1 * lambda1;
494 Real sq2 = lambda2 * lambda2;
495 Real sq3 = lambda3 * lambda3;
497 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
498 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
499 Real J = lambda1 * lambda2 * lambda3;
500 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
501 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
503 Real D1 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2.0 / 3.0 *
s2 / lambda1 * II * cbrtIII * cbrtIII + 2 *
s2 * I * cbrtIII * cbrtIII;
504 Real D2 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2.0 / 3.0 *
s2 / lambda2 * II * cbrtIII * cbrtIII + 2 *
s2 * I * cbrtIII * cbrtIII;
505 Real D3 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2.0 / 3.0 *
s2 / lambda3 * II * cbrtIII * cbrtIII + 2 *
s2 * I * cbrtIII * cbrtIII;
516 Real sq1 = lambda1 * lambda1;
517 Real sq2 = lambda2 * lambda2;
518 Real sq3 = lambda3 * lambda3;
520 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
521 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
522 Real J = lambda1 * lambda2 * lambda3;
523 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
524 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
527 D(0, 0) = 2.0 / 3.0 *
s0 / lambda1 * cbrtIII * I + 2 *
s1 / lambda1 * J + 2.0 / 3.0 *
s2 * cbrtIII * cbrtIII / lambda1 * I * I + 2 *
s2 * lambda1 * lambda1 * lambda1 * cbrtIII * cbrtIII;
528 D(1, 1) = 2.0 / 3.0 *
s0 / lambda2 * cbrtIII * I + 2 *
s1 / lambda2 * J + 2.0 / 3.0 *
s2 * cbrtIII * cbrtIII / lambda2 * I * I + 2 *
s2 * lambda2 * lambda2 * lambda2 * cbrtIII * cbrtIII;
529 D(2, 2) = 2.0 / 3.0 *
s0 / lambda3 * cbrtIII * I + 2 *
s1 / lambda3 * J + 2.0 / 3.0 *
s2 * cbrtIII * cbrtIII / lambda3 * I * I + 2 *
s2 * lambda3 * lambda3 * lambda3 * cbrtIII * cbrtIII;
540 template<
typename Real>
559 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
560 Real sq1 = lambda1 * lambda1;
561 Real sq2 = lambda2 * lambda2;
562 Real sq3 = lambda3 * lambda3;
563 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
564 Real J = lambda1 * lambda2 * lambda3;
565 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
566 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
567 return s0 * (cbrtIII * I - 3) +
s1 * (J - 1) * (J - 1) +
s2 *
exp(
s3 * (cbrtIII * I - 3) - 1);
572 Real sq1 = lambda1 * lambda1;
573 Real sq2 = lambda2 * lambda2;
574 Real sq3 = lambda3 * lambda3;
576 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
577 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
578 Real J = lambda1 * lambda2 * lambda3;
579 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
580 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
582 Real D1 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2 *
s2 *
s3 * cbrtIII *
exp(
s3 * (cbrtIII * I - 3));
583 Real D2 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2 *
s2 *
s3 * cbrtIII *
exp(
s3 * (cbrtIII * I - 3));
584 Real D3 = 2 *
s0 * cbrtIII + 2.0 *
s1 * J * J + 2 *
s2 *
s3 * cbrtIII *
exp(
s3 * (cbrtIII * I - 3));
595 Real sq1 = lambda1 * lambda1;
596 Real sq2 = lambda2 * lambda2;
597 Real sq3 = lambda3 * lambda3;
599 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
600 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
601 Real J = lambda1 * lambda2 * lambda3;
602 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
603 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
606 D(0, 0) = 2.0 / 3.0 *
s0 / lambda1 * cbrtIII * I + 2 *
s1 / lambda1 * J + 2.0 / 3.0 *
s2 *
s3 * cbrtIII / lambda1 * I *
exp(
s3 * (cbrtIII * I - 3));
607 D(1, 1) = 2.0 / 3.0 *
s0 / lambda2 * cbrtIII * I + 2 *
s1 / lambda2 * J + 2.0 / 3.0 *
s2 *
s3 * cbrtIII / lambda2 * I *
exp(
s3 * (cbrtIII * I - 3));
608 D(2, 2) = 2.0 / 3.0 *
s0 / lambda3 * cbrtIII * I + 2 *
s1 / lambda2 * J + 2.0 / 3.0 *
s2 *
s3 * cbrtIII / lambda3 * I *
exp(
s3 * (cbrtIII * I - 3));
620 template<
typename Real>
638 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
639 Real sq1 = lambda1 * lambda1;
640 Real sq2 = lambda2 * lambda2;
641 Real sq3 = lambda3 * lambda3;
642 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
646 return 0.5 *
s0 * (II - 3) + 0.25 *
s0 *
s1 * (II * II - 9) +
s0 *
s2 / 6.0 * (II * II * II - 27);
651 Real sq1 = lambda1 * lambda1;
652 Real sq2 = lambda2 * lambda2;
653 Real sq3 = lambda3 * lambda3;
655 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
657 Real D1 = 2 *
s0 * lambda1 * lambda1 + 2.0 * lambda1 * lambda1 *
s0 *
s1 * II + 2.0 *
s0 *
s2 * lambda1 * lambda1 * II * II;
658 Real D2 = 2 *
s0 * lambda2 * lambda2 + 2.0 * lambda2 * lambda2 *
s0 *
s1 * II + 2.0 *
s0 *
s2 * lambda2 * lambda2 * II * II;
659 Real D3 = 2 *
s0 * lambda3 * lambda3 + 2.0 * lambda3 * lambda3 *
s0 *
s1 * II + 2.0 *
s0 *
s2 * lambda3 * lambda3 * II * II;
685 template<
typename Real>
702 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
703 Real sq1 = lambda1 * lambda1;
704 Real sq2 = lambda2 * lambda2;
705 Real sq3 = lambda3 * lambda3;
706 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
707 Real J = lambda1 * lambda2 * lambda3;
708 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
709 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
710 return s0 * (II - 3) + 2.0 *
s0 *
log(J) +
s1 * (J - 1) * (J - 1);
715 Real sq1 = lambda1 * lambda1;
716 Real sq2 = lambda2 * lambda2;
717 Real sq3 = lambda3 * lambda3;
719 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
720 Real J = lambda1 * lambda2 * lambda3;
721 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
722 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
724 Real D1 = 4.0 *
s0 * lambda1 * lambda1 * lambda1 + 2.0 *
s1 * J * J / lambda1;
725 Real D2 = 4.0 *
s0 * lambda2 * lambda2 * lambda2 + 2.0 *
s1 * J * J / lambda2;
726 Real D3 = 4.0 *
s0 * lambda3 * lambda3 * lambda3 + 2.0 *
s1 * J * J / lambda3;
729 D(0, 0) = D1 / lambda1;
730 D(1, 1) = D2 / lambda2;
731 D(2, 2) = D3 / lambda3;
737 Real sq1 = lambda1 * lambda1;
738 Real sq2 = lambda2 * lambda2;
739 Real sq3 = lambda3 * lambda3;
741 Real II = sq1 * sq1 + sq2 * sq2 + sq3 * sq3;
742 Real J = lambda1 * lambda2 * lambda3;
743 Real sqrtIII = 1 / (lambda1 * lambda2 * lambda3);
744 Real cbrtIII = 1 / cbrt(sq1 * sq2 * sq3);
746 D(0, 0) = 4.0 *
s0 / lambda1 + 2.0 *
s1 * J / lambda1;
747 D(1, 1) = 4.0 *
s0 / lambda2 + 2.0 *
s1 * J / lambda2;
748 D(2, 2) = 4.0 *
s0 / lambda3 + 2.0 *
s1 * J / lambda3;
758 template<
typename Real>
776 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
777 return s0 * (I - 3) +
s1 * (I - 3) * (I - 3);
784 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
787 Real D1 = 2.0 *
s0 + 4 *
s1 * I + 6 * lambda1 *
s2 * I * I + 54 *
s2;
788 Real D2 = 2.0 *
s0 + 4 *
s1 * I + 6 * lambda2 *
s2 * I * I + 54 *
s2;
789 Real D3 = 2.0 *
s0 + 4 *
s1 * I + 6 * lambda3 *
s2 * I * I + 54 *
s2;
802 Real I = lambda1 * lambda1 + lambda2 * lambda2 + lambda3 * lambda3;
805 D(0, 0) = 12.0 * lambda1 *
s1 + 36.0 * lambda1 *
s2 * I;
806 D(1, 1) = 12.0 * lambda2 *
s1 + 36.0 * lambda2 *
s2 * I;
807 D(2, 2) = 12.0 * lambda3 *
s1 + 36.0 * lambda3 *
s2 * I;
819 template<
typename Real>
843 res(0, 0) = lambda1 * lambda1;
844 res(1, 1) = lambda2 * lambda2;
845 res(2, 2) = lambda3 * lambda3;
846 res =
V * res *
V.transpose();
860 res(0, 0) = l1 ? (
Real) 1 : (
Real) 0;
861 res(1, 1) = l2 ? (
Real) 1 : (
Real) 0;
862 res(2, 2) = l3 ? (
Real) 1 : (
Real) 0;
871 if (i >= 3 || j >= 3 || i < 0 || j < 0)
873 res(i, j) = (
Real) 1.0;
874 res(j, i) = (
Real) 1.0;
880 auto FTF =
getF_TF(lambda1, lambda2, lambda3,
V);
882 for (
int i = 0; i < 3; i++) {
883 energy +=
pow(
s[i] * (FTF(i, i) - 1), 2);
884 energy +=
s[i] *
s[(i + 1) % 3] *
pow(FTF(i, (i + 1) % 3), 2) / (FTF(i, i) * FTF((i + 1) % 3, (i + 1) % 3));
886 energy +=
s[0] *
s[1] *
s[2] *
pow(
getJ(lambda1, lambda2, lambda3) -1,2);
893 auto FTF =
getF_TF(lambda1, lambda2, lambda3,
V);
894 auto J =
getJ(lambda1, lambda2, lambda3);
895 for (
int i = 0; i < 3; i++) {
896 if (FTF(i, i) >= (1.0+0.05)) {
903 res =
get_diag(lambda1, lambda2, lambda3) *
V.transpose() * res *
V *
get_diag(1 / lambda1, 1 / lambda2, 1 / lambda3);
904 if (J >= (1.0 + 0.05)) {
905 res += 20 * J * (J-1) *
s[0] *
s[1] *
s[2] *
get_diag(1/
pow(lambda1,2), 1/
pow(lambda2,2), 1/
pow(lambda3,2));
914 auto FTF =
getF_TF(lambda1, lambda2, lambda3,
V);
915 auto J =
getJ(lambda1, lambda2, lambda3);
917 for (
int i = 0; i < 3; i++) {
918 if (FTF(i, i) < (1.0 -0.05) )
920 res += 400 * (1 - FTF(i, i)) *
pow(
s[i], 2) *
get_diag_bool(i == 0, i == 1, i == 2);
924 res += 200 *
s[i] *
s[(i + 1) % 3] * FTF(i, (i + 1) % 3) / (FTF(i, i) * FTF((i + 1) % 3, (i + 1) % 3)) *
get_entry(i, (i + 1) % 3);
925 res += 200 *
s[i] *
s[(i + 1) % 3] *
pow(FTF(i, (i + 1) % 3),2) / (FTF(i, i) * FTF((i + 1) % 3, (i + 1) % 3)) * (
927 get_diag_bool((i+1)%3 == 0, (i+1)%3 == 1, (i+1)%3 == 2) / FTF((i + 1) % 3, (i + 1) % 3) );
930 res =
get_diag(lambda1, lambda2, lambda3) *
V.transpose() * res *
V;
932 if (J < (1.0 - 0.05)) {
933 res += 20 * J * (1 - J) *
s[0] *
s[1] *
s[2] *
get_diag(1/lambda1, 1/lambda2, 1/lambda3);
950 template<
typename Real>
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC ArrudaBoyceModel()
DYN_FUNC ArrudaBoyceModel(Real _s0, Real _s1, Real _s2)
DYN_FUNC SquareMatrix< Real, 3 > get_diag(Real l1, Real l2, Real l3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3, SquareMatrix< Real, 3 > V)
DYN_FUNC Real getJ(Real l1, Real l2, Real l3)
DYN_FUNC SquareMatrix< Real, 3 > get_diag_bool(bool l1, bool l2, bool l3)
DYN_FUNC SquareMatrix< Real, 3 > get_entry(int i, int j)
DYN_FUNC SquareMatrix< Real, 3 > getF_TF(Real lambda1, Real lambda2, Real lambda3, SquareMatrix< Real, 3 > V)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3, SquareMatrix< Real, 3 > V)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3, SquareMatrix< Real, 3 > V)
DYN_FUNC void getInfo(Real lambda1, Real lambda2, Real lambda3, SquareMatrix< Real, 3 > V)
DYN_FUNC FiberModel(Real _s0, Real _s1, Real _s2)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC FungModel(Real _s0, Real _s1, Real _s2, Real _s3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
virtual DYN_FUNC Matrix getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)=0
virtual DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)=0
virtual DYN_FUNC Matrix getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)=0
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC LinearModel(Real _s0, Real _s1)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC MooneyRivlinModel()
DYN_FUNC MooneyRivlinModel(Real _s0, Real _s1, Real _s2)
DYN_FUNC NeoHookeanModel(Real _s0, Real _s1)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC NeoHookeanModel()
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC OgdenModel(Real _s0, Real _s1)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC PolynomialModel()
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC StVKModel(Real _s0, Real _s1)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC XuModel(Real _s0)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorPositive(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC Real getEnergy(Real lambda1, Real lambda2, Real lambda3)
DYN_FUNC YeohModel(Real _s0, Real _s1, Real _s2)
DYN_FUNC SquareMatrix< Real, 3 > getStressTensorNegative(Real lambda1, Real lambda2, Real lambda3)
This is an implementation of AdditiveCCD based on peridyno.
DYN_FUNC Complex< Real > log(const Complex< Real > &)
DYN_FUNC Complex< Real > pow(const Complex< Real > &, const Real &)
DYN_FUNC Complex< Real > exp(const Complex< Real > &)
FungModel< Real > fungModel
FiberModel< Real > fiberModel
OgdenModel< Real > ogdenModel
LinearModel< Real > linearModel
YeohModel< Real > yeohModel
StVKModel< Real > stvkModel
MooneyRivlinModel< Real > mrModel
ArrudaBoyceModel< Real > abModel
NeoHookeanModel< Real > neohookeanModel