@@ -24,16 +24,18 @@ class LinearElasticIsotropic : public SmallStrainMechModel, public LinearModel<3
2424 lambda[i] = bulk_modulus[i] - (2.0 / 3.0 ) * mu[i];
2525 }
2626
27- double lambda_ref = (*max_element (lambda.begin (), lambda.end ()) +
28- *min_element (lambda.begin (), lambda.end ())) /
27+ if (kapparef_mat.isZero ()) {
28+ double lambda_ref = (*max_element (lambda.begin (), lambda.end ()) +
29+ *min_element (lambda.begin (), lambda.end ())) /
30+ 2 ;
31+ double mu_ref = (*max_element (mu.begin (), mu.end ()) +
32+ *min_element (mu.begin (), mu.end ())) /
2933 2 ;
30- double mu_ref = (*max_element (mu.begin (), mu.end ()) +
31- *min_element (mu.begin (), mu.end ())) /
32- 2 ;
3334
34- kapparef_mat = Matrix<double , 6 , 6 >::Zero ();
35- kapparef_mat.topLeftCorner (3 , 3 ).setConstant (lambda_ref);
36- kapparef_mat += 2 * mu_ref * Matrix<double , 6 , 6 >::Identity ();
35+ kapparef_mat = Matrix<double , 6 , 6 >::Zero ();
36+ kapparef_mat.topLeftCorner (3 , 3 ).setConstant (lambda_ref);
37+ kapparef_mat += 2 * mu_ref * Matrix<double , 6 , 6 >::Identity ();
38+ }
3739
3840 phase_stiffness = new Matrix<double , 24 , 24 >[n_mat];
3941 Matrix<double , 6 , 6 > phase_kappa;
@@ -105,7 +107,7 @@ class LinearElasticTriclinic : public SmallStrainMechModel, public LinearModel<3
105107
106108 // Assemble stiffness matrices for each material
107109 C_mats.resize (n_mat);
108- kapparef_mat = Matrix<double , 6 , 6 >::Zero ();
110+ Matrix< double , 6 , 6 > kappa_temp = Matrix<double , 6 , 6 >::Zero ();
109111
110112 for (size_t i = 0 ; i < n_mat; ++i) {
111113 Matrix<double , 6 , 6 > C_i = Matrix<double , 6 , 6 >::Zero ();
@@ -122,10 +124,12 @@ class LinearElasticTriclinic : public SmallStrainMechModel, public LinearModel<3
122124 C_i = C_i.selfadjointView <Eigen::Upper>();
123125
124126 C_mats[i] = C_i;
125- kapparef_mat += C_i;
127+ kappa_temp += C_i;
126128 }
127129
128- kapparef_mat /= n_mat;
130+ if (kapparef_mat.isZero ()) {
131+ kapparef_mat = kappa_temp / n_mat;
132+ }
129133
130134 // Compute phase stiffness matrices
131135 phase_stiffness = new Matrix<double , 24 , 24 >[n_mat];
0 commit comments