https://mooseframework.inl.gov
Functions
small_elastic_tri_states.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 small_elastic_tri_states.C.

55 {
56  auto emod = props[0];
57 
58  const double temperature = temp[0];
59  const double voltage = predef[0];
60 
61  // External field-dependent contribution
62  emod *= (temperature + voltage) / 1000;
63 
64  // State-dependent contribution of elasticity modulus.
65  emod *= (1 + statev[0] * 10.0);
66 
67  auto enu = props[1];
68  auto ebulk3 = emod / (1.0 - 2.0 * enu);
69  auto eg2 = emod / (1.0 + enu);
70  auto eg = eg2 / 2.0;
71  auto elam = (ebulk3 - eg2) / 3.0;
72 
73  // elastic stiffness
74  for (int k1 = 0; k1 < *ndi; ++k1)
75  {
76  for (int k2 = 0; k2 < *ndi; ++k2)
77  ddsdde[k1 * *ntens + k2] = elam;
78  ddsdde[k1 * *ntens + k1] += eg2;
79  }
80  for (int k1 = *ndi; k1 < *ntens; ++k1)
81  ddsdde[k1 * *ntens + k1] = eg;
82 
83  // calculate stress
84  for (int k1 = 0; k1 < *ntens; ++k1)
85  for (int k2 = 0; k2 < *ntens; ++k2)
86  stress[k1] += ddsdde[k1 * *ntens + k2] * dstran[k2];
87 
88  statev[0] += std::fabs(dstran[0]) + std::fabs(dstran[1]);
89 }
static const std::string temperature
Definition: NS.h:59