80 double G = E / 2.0 / (1.0 + nu);
81 double lambda = 2.0 * G * nu / (1.0 - 2.0 * nu);
85 for (
int i = 0; i < 6; i++)
86 eps[i] = stran[i] + dstran[i];
90 for (
int i = 0; i < 3; i++)
92 stress[i] = lambda * eps_trace + 2.0 * G *
eps[i];
93 stress[i + 3] = G *
eps[i + 3];
96 Eigen::Matrix<double, 6, 6> C;
99 for (
int i = 0; i < 6; i++)
100 for (
int j = 0; j < 6; j++)
101 ddsdde[6 * i + j] = 0.0;
103 for (
int i = 0; i < 3; i++)
105 ddsdde[6 * i + 0] = C(0, i);
106 ddsdde[6 * i + 1] = C(1, i);
107 ddsdde[6 * i + 2] = C(2, i);
108 ddsdde[6 * (i + 3) + (i + 3)] = C(i + 3, i + 3);
112 auto eigenvalues = C.eigenvalues();
114 if (*npt == 8 && time[0] == 0.0)
115 for (
int index_i = 0; index_i < *ntens; index_i++)
116 Moose::out <<
"Eigenvalues " << index_i <<
" " << eigenvalues(index_i).real() << std::endl;
void umat_(double *stress, double *statev, double *ddsdde, double *sse, double *spd, double *scd, double *rpl, double *ddsddt, double *drplde, double *drpldt, double *stran, double *dstran, double *time, double *dtime, double *temp, double *dtemp, double *predef, double *dpred, char *cmname, int *ndi, int *nshr, int *ntens, int *nstatv, double *props, int *nprops, double *coords, double *drot, double *pnewdt, double *celent, double *dfgrd0, double *dfgrd1, int *noel, int *npt, int *layer, int *kspt, int *kstep, int *kinc, short cmname_len)
void buildStiffnessMatrix(Eigen::Ref< Eigen::Matrix< double, 6, 6 > > C, const double &G, const double &lambda)
build a 6x6 representation of the stiffness tensor in C from the shear modulus G and Lame's first par...