https://mooseframework.inl.gov
Functions
elastic_print_c.C File Reference

Go to the source code of this file.

Functions

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)
 

Function Documentation

◆ umat_()

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 
)

Definition at line 17 of file elastic_print_c.C.

55 {
56  const double E = props[0];
57  const double nu = props[1];
58  const double Ebulk = E / (1.0 - 2.0 * nu);
59  const double Eg2 = E / (1.0 + nu);
60  const double Eg = Eg2 / 2.0;
61  const double Elam = (Ebulk - Eg2) / 3.0;
62 
63  // elastic stiffness
64  for (int k1 = 0; k1 < *ndi; ++k1)
65  {
66  for (int k2 = 0; k2 < *ndi; ++k2)
67  ddsdde[k1 * *ntens + k2] = Elam;
68  ddsdde[k1 * *ntens + k1] += Eg2;
69  }
70  for (int k1 = *ndi; k1 < *ntens; ++k1)
71  ddsdde[k1 * *ntens + k1] = Eg;
72 
73  // calculate stress
74  for (int k1 = 0; k1 < *ntens; ++k1)
75  for (int k2 = 0; k2 < *ntens; ++k2)
76  stress[k1] += ddsdde[k1 * *ntens + k2] * dstran[k2];
77 
78  if (*npt == 8)
79  {
80  Moose::out << std::fixed << std::setprecision(7);
81  for (int k1 = 0; k1 < *ntens; ++k1)
82  Moose::out << "stran " << k1 << " = " << stran[k1] << "\n";
83 
84  for (int k1 = 0; k1 < *ntens; ++k1)
85  Moose::out << "dstran " << k1 << " = " << dstran[k1] << "\n";
86 
87  for (int k1 = 0; k1 < *ntens; ++k1)
88  Moose::out << "stress " << k1 << " = " << stress[k1] << "\n";
89 
90  for (int k1 = 0; k1 < *ndi; ++k1)
91  Moose::out << "coords " << k1 << " = " << coords[k1] << "\n";
92 
93  for (int k1 = 0; k1 < *ndi * *ndi; ++k1)
94  Moose::out << "dfgrd0 " << k1 << " = " << dfgrd0[k1] << "\n";
95 
96  for (int k1 = 0; k1 < *ndi * *ndi; ++k1)
97  Moose::out << "dfgrd1 " << k1 << " = " << dfgrd1[k1] << "\n";
98 
99  for (int k1 = 0; k1 < *ndi * *ndi; ++k1)
100  Moose::out << "drot " << k1 << " = " << drot[k1] << "\n";
101 
102  Moose::out << "time 0 = " << time[0] << "\n";
103  Moose::out << "time 1 = " << time[1] << "\n";
104  Moose::out << "celent = " << *celent << "\n";
105  Moose::out << std::defaultfloat;
106  Moose::out << "ndi = " << *ndi << "\n";
107  Moose::out << "nshr = " << *nshr << "\n";
108  Moose::out << "ntens = " << *ntens << "\n";
109  Moose::out << "noel = " << *noel << "\n";
110  Moose::out << "npt = " << *npt << "\n";
111  Moose::out << "layer = " << *layer << "\n";
112  Moose::out << "kspt = " << *kspt << "\n";
113  Moose::out << "kstep = " << *kstep << "\n";
114  Moose::out << "kinc = " << *kinc << "\n";
115  Moose::out << "cmname = " << cmname << "\n";
116  }
117 }