www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
AbaqusUmatMaterial Class Reference

#include <AbaqusUmatMaterial.h>

Inheritance diagram for AbaqusUmatMaterial:
[legend]

Public Types

enum  CRACKING_RELEASE { CR_ABRUPT = 0, CR_EXPONENTIAL, CR_POWER, CR_UNKNOWN }
 

Public Member Functions

 AbaqusUmatMaterial (const InputParameters &parameters)
 
virtual ~AbaqusUmatMaterial ()
 
virtual void initStatefulProperties (unsigned n_points)
 
virtual void applyThermalStrain ()
 
virtual void applyVolumetricStrain ()
 
const QBase * qrule ()
 
const Point & q_point (unsigned i) const
 
Real JxW (unsigned i) const
 

Static Public Member Functions

static void rotateSymmetricTensor (const ColumnMajorMatrix &R, const SymmTensor &T, SymmTensor &result)
 

Protected Member Functions

virtual void initQpStatefulProperties ()
 
virtual void computeStress ()
 Compute the stress (sigma += deltaSigma) More...
 
virtual void initialSetup ()
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void computeProperties ()
 
void computeElasticityTensor ()
 
virtual bool updateElasticityTensor (SymmElasticityTensor &tensor)
 Return true if the elasticity tensor changed. More...
 
virtual void elementInit ()
 
virtual void modifyStrainIncrement ()
 Modify increment for things like thermal strain. More...
 
virtual void crackingStrainDirections ()
 Determine cracking directions. Rotate elasticity tensor. More...
 
virtual unsigned int getNumKnownCrackDirs () const
 
virtual void computeEshelby ()
 
virtual void computeStrainEnergyDensity ()
 
virtual void computeThermalJvec ()
 
virtual void computeCurrentInstantaneousThermalExpansionCoefficient ()
 
virtual void crackingStressRotation ()
 
virtual Real computeCrackFactor (int i, Real &sigma, Real &flagVal)
 
virtual void finalizeStress ()
 Rotate stress to current configuration. More...
 
virtual void computePreconditioning ()
 
void applyCracksToTensor (SymmTensor &tensor, const RealVectorValue &sigma)
 
void elasticityTensor (SymmElasticityTensor *e)
 
SymmElasticityTensorelasticityTensor () const
 
const SolidMechanics::Elementelement () const
 
int delta (int i, int j) const
 
template<typename T >
MaterialProperty< T > & createProperty (const std::string &prop_name)
 
template<typename T >
const MaterialProperty< T > & getPropertyOld (const std::string &prop_name)
 
virtual void checkElasticConstants ()
 
virtual void createElasticityTensor ()
 
virtual void computeConstitutiveModelStress ()
 Compute the stress (sigma += deltaSigma) More...
 
void createConstitutiveModel (const std::string &cm_name)
 

Protected Attributes

FileName _plugin
 
std::vector< Real > _mechanical_constants
 
std::vector< Real > _thermal_constants
 
unsigned int _num_state_vars
 
unsigned int _num_props
 
void * _handle
 
umat_t _umat
 
Real _SSE
 
Real _SPD
 
Real _SCD
 
Real _DRPLDT
 
Real _RPL
 
Real _PNEWDT
 
Real _DTIME
 
Real _TEMP
 
Real _DTEMP
 
Real _CMNAME
 
Real _CELENT
 
int _NDI
 
int _NSHR
 
int _NTENS
 
int _NSTATV
 
int _NPROPS
 
int _NOEL
 
int _NPT
 
int _LAYER
 
int _KSPT
 
int _KSTEP
 
int _KINC
 
Real * _STATEV
 
Real * _DDSDDT
 
Real * _DRPLDE
 
Real * _STRAN
 
Real _PREDEF [1]
 
Real _DPRED [1]
 
Real _COORDS [3]
 
Real _DROT [3][3]
 
Real * _DFGRD0
 
Real * _DFGRD1
 
Real * _STRESS
 
Real * _DDSDDE
 
Real * _DSTRAN
 
Real _TIME [2]
 
Real * _PROPS
 
const VariableGradient & _grad_disp_x
 
const VariableGradient & _grad_disp_y
 
const VariableGradient & _grad_disp_z
 
const VariableGradient & _grad_disp_x_old
 
const VariableGradient & _grad_disp_y_old
 
const VariableGradient & _grad_disp_z_old
 
MaterialProperty< std::vector< Real > > & _state_var
 
const MaterialProperty< std::vector< Real > > & _state_var_old
 
MaterialProperty< ColumnMajorMatrix > & _Fbar
 
const MaterialProperty< ColumnMajorMatrix > & _Fbar_old
 
MaterialProperty< Real > & _elastic_strain_energy
 
MaterialProperty< Real > & _plastic_dissipation
 
MaterialProperty< Real > & _creep_dissipation
 
Moose::CoordinateSystemType _coord_type
 
const std::string _appended_property_name
 
bool _bulk_modulus_set
 
bool _lambda_set
 
bool _poissons_ratio_set
 
bool _shear_modulus_set
 
bool _youngs_modulus_set
 
Real _bulk_modulus
 
Real _lambda
 
Real _poissons_ratio
 
Real _shear_modulus
 
Real _youngs_modulus
 
const Function * _youngs_modulus_function
 
const Function * _poissons_ratio_function
 
const CRACKING_RELEASE _cracking_release
 
Real _cracking_stress
 
const Real _cracking_residual_stress
 
const Real _cracking_beta
 
const std::string _compute_method
 
const Function *const _cracking_stress_function
 
Real _cracking_alpha
 
std::vector< unsigned int > _active_crack_planes
 
const unsigned int _max_cracks
 
const Real _cracking_neg_fraction
 
const bool _has_temp
 
const VariableValue & _temperature
 
const VariableValue & _temperature_old
 
const VariableGradient & _temp_grad
 
const Real _alpha
 
const Function * _alpha_function
 
PiecewiseLinear * _piecewise_linear_alpha_function
 
bool _has_stress_free_temp
 
Real _stress_free_temp
 
bool _mean_alpha_function
 
Real _ref_temp
 
std::map< SubdomainID, std::vector< MooseSharedPointer< VolumetricModel > > > _volumetric_models
 
std::set< std::string > _dep_matl_props
 
MaterialProperty< SymmTensor > & _stress
 
SymmTensor _stress_old
 
MaterialProperty< SymmTensor > & _total_strain
 
const MaterialProperty< SymmTensor > & _total_strain_old
 
MaterialProperty< SymmTensor > & _elastic_strain
 
const MaterialProperty< SymmTensor > & _elastic_strain_old
 
MaterialProperty< RealVectorValue > * _crack_flags
 
const MaterialProperty< RealVectorValue > * _crack_flags_old
 
RealVectorValue _crack_flags_local
 
MaterialProperty< RealVectorValue > * _crack_count
 
const MaterialProperty< RealVectorValue > * _crack_count_old
 
MaterialProperty< ColumnMajorMatrix > * _crack_rotation
 
const MaterialProperty< ColumnMajorMatrix > * _crack_rotation_old
 
MaterialProperty< RealVectorValue > * _crack_strain
 
const MaterialProperty< RealVectorValue > * _crack_strain_old
 
MaterialProperty< RealVectorValue > * _crack_max_strain
 
const MaterialProperty< RealVectorValue > * _crack_max_strain_old
 
ColumnMajorMatrix _principal_strain
 
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
 
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
 
SymmTensor _d_strain_dT
 
MaterialProperty< SymmTensor > & _d_stress_dT
 
SymmTensor _total_strain_increment
 Total strain increment, including mechanical strains and eigenstrains. More...
 
SymmTensor _mechanical_strain_increment
 Mechanical strain increment, which is the total strain increment minus eigenstrains. More...
 
SymmTensor _strain_increment
 In most models, this is the mechanical strain increment, but for inelastic models, it has the inelastic component subtracted from it, so it is the elastic strain increment. More...
 
const bool _compute_JIntegral
 
const bool _compute_InteractionIntegral
 
MaterialProperty< Real > * _SED
 
const MaterialProperty< Real > * _SED_old
 
MaterialProperty< RankTwoTensor > * _Eshelby_tensor
 
MaterialProperty< RealVectorValue > * _J_thermal_term_vec
 
MaterialProperty< Real > * _current_instantaneous_thermal_expansion_coef
 
std::vector< SubdomainID > _block_id
 
std::map< SubdomainID, MooseSharedPointer< ConstitutiveModel > > _constitutive_model
 
std::set< MooseSharedPointer< ConstitutiveModel > > _models_to_free
 
bool _constitutive_active
 
bool & _step_zero
 Restartable data to check for the zeroth and first time steps for thermal calculations. More...
 
bool & _step_one
 

Private Member Functions

void computeCrackStrainAndOrientation (ColumnMajorMatrix &principal_strain)
 
SolidMechanics::ElementcreateElement ()
 

Private Attributes

const MaterialProperty< SymmTensor > & _stress_old_prop
 
SolidMechanics::Element_element
 
SymmElasticityTensor_local_elasticity_tensor
 

Detailed Description

Definition at line 59 of file AbaqusUmatMaterial.h.

Member Enumeration Documentation

◆ CRACKING_RELEASE

Enumerator
CR_ABRUPT 
CR_EXPONENTIAL 
CR_POWER 
CR_UNKNOWN 

Definition at line 47 of file SolidModel.h.

48  {
49  CR_ABRUPT = 0,
51  CR_POWER,
53  };

Constructor & Destructor Documentation

◆ AbaqusUmatMaterial()

AbaqusUmatMaterial::AbaqusUmatMaterial ( const InputParameters &  parameters)

Definition at line 34 of file AbaqusUmatMaterial.C.

35  : SolidModel(parameters),
36  _plugin(getParam<FileName>("plugin")),
37  _mechanical_constants(getParam<std::vector<Real>>("mechanical_constants")),
38  _thermal_constants(getParam<std::vector<Real>>("thermal_constants")),
39  _num_state_vars(getParam<unsigned int>("num_state_vars")),
40  _grad_disp_x(coupledGradient("disp_x")),
41  _grad_disp_y(coupledGradient("disp_y")),
42  _grad_disp_z(coupledGradient("disp_z")),
43  _grad_disp_x_old(coupledGradientOld("disp_x")),
44  _grad_disp_y_old(coupledGradientOld("disp_y")),
45  _grad_disp_z_old(coupledGradientOld("disp_z")),
46  _state_var(declareProperty<std::vector<Real>>("state_var")),
47  _state_var_old(getMaterialPropertyOld<std::vector<Real>>("state_var")),
48  _Fbar(declareProperty<ColumnMajorMatrix>("Fbar")),
49  _Fbar_old(getMaterialPropertyOld<ColumnMajorMatrix>("Fbar")),
50  _elastic_strain_energy(declareProperty<Real>("elastic_strain_energy")),
51  _plastic_dissipation(declareProperty<Real>("plastic_dissipation")),
52  _creep_dissipation(declareProperty<Real>("creep_dissipation"))
53 {
54 #if defined(METHOD)
55  _plugin += std::string("-") + QUOTE(METHOD) + ".plugin";
56 #endif
57 
58  // Size and create full (mechanical+thermal) material property array
60  std::vector<Real> props_array(_num_props);
61  for (unsigned int i = 0; i < _mechanical_constants.size(); ++i)
62  props_array[i] = _mechanical_constants[i];
63  for (unsigned int i = _mechanical_constants.size(); i < _num_props; ++i)
64  props_array[i] = _thermal_constants[i];
65 
66  // Read mesh dimension and size UMAT arrays
67  if (_mesh.dimension() == 3) // 3D case
68  {
69  _NTENS = 6; // Size of the stress or strain component array (NDI+NSHR)
70  _NSHR = 3; // Number of engineering shear stress components
71  _NDI = 3; // Number of direct stress components (always 3)
72  }
73  else if (_mesh.dimension() == 2) // 2D case
74  {
75  _NTENS = 4;
76  _NSHR = 1;
77  _NDI = 3;
78  }
79 
80  _STATEV = new Real[_num_state_vars];
81  _DDSDDT = new Real[_NTENS];
82  _DRPLDE = new Real[_NTENS];
83  _STRAN = new Real[_NTENS];
84  _DFGRD0 = new Real[9];
85  _DFGRD1 = new Real[9];
86  _STRESS = new Real[_NTENS];
87  _DDSDDE = new Real[_NTENS * _NTENS];
88  _DSTRAN = new Real[_NTENS];
89  _PROPS = new Real[_num_props];
90 
91  for (unsigned int i = 0; i < _num_state_vars; ++i)
92  {
93  _STATEV[i] = 0.0;
94  }
95 
96  for (int i = 0; i < _NTENS; ++i)
97  {
98  _DDSDDT[i] = 0.0;
99  _DRPLDE[i] = 0.0;
100  _STRAN[i] = 0.0;
101  _STRESS[i] = 0.0;
102  _DSTRAN[i] = 0.0;
103  }
104 
105  for (unsigned int i = 0; i < 9; ++i)
106  {
107  _DFGRD0[i] = 0.0;
108  _DFGRD1[i] = 0.0;
109  }
110 
111  for (int i = 0; i < _NTENS * _NTENS; ++i)
112  {
113  _DDSDDE[i] = 0.0;
114  }
115 
116  // Assign materials properties from vector form into an array
117  for (unsigned int i = 0; i < _num_props; ++i)
118  {
119  _PROPS[i] = props_array[i];
120  }
121 
122  // Size UMAT state variable (NSTATV) and material constant (NPROPS) arrays
125 
126  // Open the library
127  _handle = dlopen(_plugin.c_str(), RTLD_LAZY);
128 
129  if (!_handle)
130  {
131  std::ostringstream error;
132  error << "Cannot open library: " << dlerror() << '\n';
133  mooseError(error.str());
134  }
135 
136  // Reset errors
137  dlerror();
138 
139  // Snag the function pointer from the library
140  {
141  void * pointer = dlsym(_handle, "umat_");
142  _umat = *reinterpret_cast<umat_t *>(&pointer);
143  }
144 
145  // Catch errors
146  const char * dlsym_error = dlerror();
147  if (dlsym_error)
148  {
149  dlclose(_handle);
150  std::ostringstream error;
151  error << "Cannot load symbol 'umat_': " << dlsym_error << '\n';
152  mooseError(error.str());
153  }
154 }

◆ ~AbaqusUmatMaterial()

AbaqusUmatMaterial::~AbaqusUmatMaterial ( )
virtual

Definition at line 156 of file AbaqusUmatMaterial.C.

157 {
158  delete _STATEV;
159  delete _DDSDDT;
160  delete _DRPLDE;
161  delete _STRAN;
162  delete _DFGRD0;
163  delete _DFGRD1;
164  delete _STRESS;
165  delete _DDSDDE;
166  delete _DSTRAN;
167  delete _PROPS;
168 
169  dlclose(_handle);
170 }

Member Function Documentation

◆ applyCracksToTensor()

void SolidModel::applyCracksToTensor ( SymmTensor tensor,
const RealVectorValue &  sigma 
)
protectedinherited

Definition at line 1123 of file SolidModel.C.

1124 {
1125  // Form transformation matrix R*E*R^T
1126  const ColumnMajorMatrix & R((*_crack_rotation)[_qp]);
1127 
1128  // Rotate to crack frame
1129  rotateSymmetricTensor(R.transpose(), tensor, tensor);
1130 
1131  // Reset stress if cracked
1132  if ((*_crack_flags)[_qp](0) < 1)
1133  {
1134  tensor(0, 0) = sigma(0);
1135  }
1136  if ((*_crack_flags)[_qp](1) < 1)
1137  {
1138  tensor(1, 1) = sigma(1);
1139  }
1140  if ((*_crack_flags)[_qp](2) < 1)
1141  {
1142  tensor(2, 2) = sigma(2);
1143  }
1144 
1145  // Rotate back to global frame
1146  rotateSymmetricTensor(R, tensor, tensor);
1147 }

Referenced by SolidModel::crackingStressRotation().

◆ applyThermalStrain()

void SolidModel::applyThermalStrain ( )
virtualinherited

Definition at line 591 of file SolidModel.C.

592 {
593  if (_has_temp && !_step_zero)
594  {
595  Real inc_thermal_strain;
596  Real d_thermal_strain_d_temp;
597 
598  Real old_temp;
600  old_temp = _stress_free_temp;
601  else
602  old_temp = _temperature_old[_qp];
603 
604  Real current_temp = _temperature[_qp];
605 
606  Real delta_t = current_temp - old_temp;
607 
608  Real alpha = _alpha;
609 
610  if (_alpha_function)
611  {
612  Point p;
613  Real alpha_current_temp = _alpha_function->value(current_temp, p);
614  Real alpha_old_temp = _alpha_function->value(old_temp, p);
615 
617  {
618  Real alpha_stress_free_temperature = _alpha_function->value(_stress_free_temp, p);
619  Real small(1e-6);
620 
621  Real numerator = alpha_current_temp * (current_temp - _ref_temp) -
622  alpha_old_temp * (old_temp - _ref_temp);
623  Real denominator = 1.0 + alpha_stress_free_temperature * (_stress_free_temp - _ref_temp);
624  if (denominator < small)
625  mooseError("Denominator too small in thermal strain calculation");
626  inc_thermal_strain = numerator / denominator;
627  d_thermal_strain_d_temp = alpha_current_temp * (current_temp - _ref_temp);
628  }
629  else
630  {
631  inc_thermal_strain = delta_t * 0.5 * (alpha_current_temp + alpha_old_temp);
632  d_thermal_strain_d_temp = alpha_current_temp;
633  }
634  }
635  else
636  {
637  inc_thermal_strain = delta_t * alpha;
638  d_thermal_strain_d_temp = alpha;
639  }
640 
641  _strain_increment.addDiag(-inc_thermal_strain);
642  _d_strain_dT.addDiag(-d_thermal_strain_d_temp);
643  }
644 }

Referenced by SolidModel::modifyStrainIncrement().

◆ applyVolumetricStrain()

void SolidModel::applyVolumetricStrain ( )
virtualinherited

Definition at line 649 of file SolidModel.C.

650 {
651  const Real V0Vold = 1 / _element->volumeRatioOld(_qp);
652  const SubdomainID current_block = _current_elem->subdomain_id();
653  const std::vector<MooseSharedPointer<VolumetricModel>> & vm(_volumetric_models[current_block]);
654  for (unsigned int i(0); i < vm.size(); ++i)
655  {
656  vm[i]->modifyStrain(_qp, V0Vold, _strain_increment, _d_strain_dT);
657  }
658 }

Referenced by SolidModel::modifyStrainIncrement().

◆ checkElasticConstants()

void SolidModel::checkElasticConstants ( )
protectedvirtualinherited

Reimplemented in MacroElastic.

Definition at line 377 of file SolidModel.C.

378 {
379  int num_elastic_constants = _bulk_modulus_set + _lambda_set + _poissons_ratio_set +
381 
382  if (num_elastic_constants != 2)
383  {
384  std::string err("Exactly two elastic constants must be defined for material '");
385  err += name();
386  err += "'.";
387  mooseError(err);
388  }
389 
390  if (_bulk_modulus_set && _bulk_modulus <= 0)
391  {
392  std::string err("Bulk modulus must be positive in material '");
393  err += name();
394  err += "'.";
395  mooseError(err);
396  }
397  if (_poissons_ratio_set && (_poissons_ratio <= -1.0 || _poissons_ratio >= 0.5))
398  {
399  std::string err("Poissons ratio must be greater than -1 and less than 0.5 in material '");
400  err += name();
401  err += "'.";
402  mooseError(err);
403  }
405  {
406  std::string err("Shear modulus must not be negative in material '");
407  err += name();
408  err += "'.";
409  mooseError(err);
410  }
412  {
413  std::string err("Youngs modulus must be positive in material '");
414  err += name();
415  err += "'.";
416  mooseError(err);
417  }
418 
419  // Calculate lambda, the shear modulus, and Young's modulus
420  if (_lambda_set && _shear_modulus_set) // First and second Lame
421  {
425  }
426  else if (_lambda_set && _poissons_ratio_set)
427  {
428  _shear_modulus = (_lambda * (1.0 - 2.0 * _poissons_ratio)) / (2.0 * _poissons_ratio);
431  }
432  else if (_lambda_set && _bulk_modulus_set)
433  {
434  _shear_modulus = 3.0 * (_bulk_modulus - _lambda) / 2.0;
438  }
439  else if (_lambda_set && _youngs_modulus_set)
440  {
442  ((_youngs_modulus - 3.0 * _lambda) / 4.0) +
443  (std::sqrt((_youngs_modulus - 3.0 * _lambda) * (_youngs_modulus - 3.0 * _lambda) +
444  8.0 * _lambda * _youngs_modulus) /
445  4.0);
447  }
449  {
450  _lambda = (2.0 * _shear_modulus * _poissons_ratio) / (1.0 - 2.0 * _poissons_ratio);
453  }
455  {
456  _lambda = _bulk_modulus - 2.0 * _shear_modulus / 3.0;
460  (3 * _bulk_modulus - 2 * _shear_modulus) / (2 * (3 * _bulk_modulus + _shear_modulus));
461  }
463  {
467  }
469  {
472  (3.0 * _bulk_modulus * (1.0 - 2.0 * _poissons_ratio)) / (2.0 * (1.0 + _poissons_ratio));
475  }
476  else if (_youngs_modulus_set && _poissons_ratio_set) // Young's Modulus and Poisson's Ratio
477  {
479  ((1.0 + _poissons_ratio) * (1 - 2.0 * _poissons_ratio));
480  _shear_modulus = _youngs_modulus / (2.0 * (1.0 + _poissons_ratio));
481  }
483  {
484  _lambda = 3.0 * _bulk_modulus * (3.0 * _bulk_modulus - _youngs_modulus) /
485  (9.0 * _bulk_modulus - _youngs_modulus);
489  }
490 
491  _lambda_set = true;
492  _shear_modulus_set = true;
493  _youngs_modulus_set = true;
494  _poissons_ratio_set = true;
495 }

Referenced by SolidModel::initialSetup().

◆ computeConstitutiveModelStress()

void SolidModel::computeConstitutiveModelStress ( )
protectedvirtualinherited

Compute the stress (sigma += deltaSigma)

Definition at line 841 of file SolidModel.C.

842 {
843  // Given the stretching, compute the stress increment and add it to the old stress. Also update
844  // the creep strain
845  // stress = stressOld + stressIncrement
846 
847  const SubdomainID current_block = _current_elem->subdomain_id();
848  MooseSharedPointer<ConstitutiveModel> cm = _constitutive_model[current_block];
849 
850  mooseAssert(_constitutive_active, "Logic error. ConstitutiveModel not active.");
851 
852  // Let's be a little careful and check for a non-existent
853  // ConstitutiveModel, which could be returned as a default value
854  // from std::map::operator[]
855  if (!cm)
856  mooseError("Logic error. No ConstitutiveModel for current_block=", current_block, ".");
857 
858  cm->setQp(_qp);
859  cm->computeStress(
860  *_current_elem, *elasticityTensor(), _stress_old, _strain_increment, _stress[_qp]);
861 }

Referenced by SolidModel::computeProperties().

◆ computeCrackFactor()

Real SolidModel::computeCrackFactor ( int  i,
Real &  sigma,
Real &  flagVal 
)
protectedvirtualinherited

Definition at line 1408 of file SolidModel.C.

1409 {
1411  {
1412  if ((*_crack_max_strain)[_qp](i) < (*_crack_strain)[_qp](i))
1413  {
1414  std::stringstream err;
1415  err << "Max strain less than crack strain: " << i << " " << sigma << ", "
1416  << (*_crack_max_strain)[_qp](i) << ", " << (*_crack_strain)[_qp](i) << ", "
1417  << _principal_strain(0, 0) << ", " << _principal_strain(1, 0) << ", "
1418  << _principal_strain(2, 0) << _elastic_strain[_qp] << std::endl;
1419  mooseError(err.str());
1420  }
1421  const Real crackMaxStrain((*_crack_max_strain)[_qp](i));
1422  // Compute stress that follows exponental curve
1426  (crackMaxStrain - (*_crack_strain)[_qp](i))));
1427  // Compute ratio of current stiffness to original stiffness
1428  flagVal = sigma * (*_crack_strain)[_qp](i) / (crackMaxStrain * _cracking_stress);
1429  }
1430  else
1431  {
1432  if (_cracking_residual_stress == 0)
1433  {
1434  const Real tiny(1e-16);
1435  flagVal = tiny;
1436  sigma = tiny * (*_crack_strain)[_qp](i) * _youngs_modulus;
1437  }
1438  else
1439  {
1441  flagVal = sigma / ((*_crack_max_strain)[_qp](i) * _youngs_modulus);
1442  }
1443  }
1444  if (flagVal < 0)
1445  {
1446  std::stringstream err;
1447  err << "Negative crack flag found: " << i << " " << flagVal << ", "
1448  << (*_crack_max_strain)[_qp](i) << ", " << (*_crack_strain)[_qp](i) << ", " << std::endl;
1449  mooseError(err.str());
1450  }
1451  return flagVal;
1452 }

Referenced by SolidModel::crackingStressRotation().

◆ computeCrackStrainAndOrientation()

void SolidModel::computeCrackStrainAndOrientation ( ColumnMajorMatrix &  principal_strain)
privateinherited

Definition at line 1152 of file SolidModel.C.

1153 {
1154  // The rotation tensor is ordered such that known dirs appear last in the list of
1155  // columns. So, if one dir is known, it corresponds with the last column in the
1156  // rotation tensor.
1157  //
1158  // This convention is based on the eigen routine returning eigen values in
1159  // ascending order.
1160  const unsigned int numKnownDirs = getNumKnownCrackDirs();
1161 
1163 
1164  (*_crack_rotation)[_qp] = (*_crack_rotation_old)[_qp];
1165 
1166  if (numKnownDirs == 0)
1167  {
1168  ColumnMajorMatrix e_vec(3, 3);
1169  _elastic_strain[_qp].columnMajorMatrix().eigen(principal_strain, e_vec);
1170  // If the elastic strain is beyond the cracking strain, save the eigen vectors as
1171  // the rotation tensor.
1172  (*_crack_rotation)[_qp] = e_vec;
1173  }
1174  else if (numKnownDirs == 1)
1175  {
1176  // This is easily the most complicated case.
1177  // 1. Rotate the elastic strain to the orientation associated with the known
1178  // crack.
1179  // 2. Extract the upper 2x2 diagonal block into a separate tensor.
1180  // 3. Run the eigen solver on the result.
1181  // 4. Update the rotation tensor to reflect the effect of the 2 eigenvectors.
1182 
1183  // 1.
1184  ColumnMajorMatrix RT((*_crack_rotation)[_qp].transpose());
1185  SymmTensor ePrime;
1186  rotateSymmetricTensor(RT, _elastic_strain[_qp], ePrime);
1187 
1188  // 2.
1189  ColumnMajorMatrix e2x2(2, 2);
1190  e2x2(0, 0) = ePrime(0, 0);
1191  e2x2(1, 0) = ePrime(1, 0);
1192  e2x2(0, 1) = ePrime(0, 1);
1193  e2x2(1, 1) = ePrime(1, 1);
1194 
1195  // 3.
1196  ColumnMajorMatrix e_val2x1(2, 1);
1197  ColumnMajorMatrix e_vec2x2(2, 2);
1198  e2x2.eigen(e_val2x1, e_vec2x2);
1199 
1200  // 4.
1201  ColumnMajorMatrix e_vec(3, 3);
1202  e_vec(0, 0) = e_vec2x2(0, 0);
1203  e_vec(1, 0) = e_vec2x2(1, 0);
1204  e_vec(2, 0) = 0;
1205  e_vec(0, 1) = e_vec2x2(0, 1);
1206  e_vec(1, 1) = e_vec2x2(1, 1);
1207  e_vec(2, 1) = 0;
1208  e_vec(2, 0) = 0;
1209  e_vec(2, 1) = 0;
1210  e_vec(2, 2) = 1;
1211  (*_crack_rotation)[_qp] = (*_crack_rotation_old)[_qp] * e_vec;
1212 
1213  principal_strain(0, 0) = e_val2x1(0, 0);
1214  principal_strain(1, 0) = e_val2x1(1, 0);
1215  principal_strain(2, 0) = ePrime(2, 2);
1216  }
1217  else if (numKnownDirs == 2 || numKnownDirs == 3)
1218  {
1219  // Rotate to cracked orientation and pick off the strains in the rotated
1220  // coordinate directions.
1221  ColumnMajorMatrix RT((*_crack_rotation)[_qp].transpose());
1222  SymmTensor ePrime;
1223  rotateSymmetricTensor(RT, _elastic_strain[_qp], ePrime);
1224  principal_strain(0, 0) = ePrime.xx();
1225  principal_strain(1, 0) = ePrime.yy();
1226  principal_strain(2, 0) = ePrime.zz();
1227  }
1228  else
1229  {
1230  mooseError("Invalid number of known crack directions");
1231  }
1232 }

Referenced by SolidModel::crackingStressRotation().

◆ computeCurrentInstantaneousThermalExpansionCoefficient()

void SolidModel::computeCurrentInstantaneousThermalExpansionCoefficient ( )
protectedvirtualinherited

Definition at line 1646 of file SolidModel.C.

1647 {
1649  "_current_instantaneous_thermal_expansion_coef not initialized");
1650 
1651  (*_current_instantaneous_thermal_expansion_coef)[_qp] = 0.0;
1652 
1653  if (_alpha_function)
1654  {
1655  Point p;
1656  Real current_temp = _temperature[_qp];
1657 
1658  if (!_mean_alpha_function)
1659  {
1660  Real alpha = _alpha_function->value(current_temp, p);
1661  (*_current_instantaneous_thermal_expansion_coef)[_qp] = alpha;
1662  }
1663  else
1664  {
1665  Real small(1e-6);
1666  Real dalphabar_dT = _alpha_function->timeDerivative(current_temp, p);
1667  Real alphabar_Tsf = _alpha_function->value(_stress_free_temp, p);
1668  Real alphabar = _alpha_function->value(current_temp, p);
1669  Real numerator = dalphabar_dT * (current_temp - _ref_temp) + alphabar;
1670  Real denominator = 1.0 + alphabar_Tsf * (_stress_free_temp - _ref_temp);
1671  if (denominator < small)
1672  mooseError("Denominator too small in thermal strain calculation");
1673  (*_current_instantaneous_thermal_expansion_coef)[_qp] = numerator / denominator;
1674  }
1675  }
1676  else
1678 }

Referenced by SolidModel::computeProperties(), and SolidModel::computeThermalJvec().

◆ computeElasticityTensor()

void SolidModel::computeElasticityTensor ( )
protectedinherited

Definition at line 865 of file SolidModel.C.

866 {
867  if (_cracking_stress_function != NULL)
868  {
869  _cracking_stress = _cracking_stress_function->value(_t, _q_point[_qp]);
870  }
871 
873 
875 
877 
879 
881 
882  if (changed || _cracking_stress > 0)
883  {
885  }
886 }

Referenced by SolidModel::computeProperties().

◆ computeEshelby()

void SolidModel::computeEshelby ( )
protectedvirtualinherited

Definition at line 792 of file SolidModel.C.

793 {
794  mooseAssert(_SED, "_SED not initialized");
795  mooseAssert(_Eshelby_tensor, "_Eshelby_tensor not initialized");
796  // Cauchy stress (sigma) in a colum major matrix:
797  ColumnMajorMatrix stress_CMM;
798  stress_CMM(0, 0) = _stress[_qp].xx();
799  stress_CMM(0, 1) = _stress[_qp].xy();
800  stress_CMM(0, 2) = _stress[_qp].xz();
801  stress_CMM(1, 0) = _stress[_qp].xy();
802  stress_CMM(1, 1) = _stress[_qp].yy();
803  stress_CMM(1, 2) = _stress[_qp].yz();
804  stress_CMM(2, 0) = _stress[_qp].xz();
805  stress_CMM(2, 1) = _stress[_qp].yz();
806  stress_CMM(2, 2) = _stress[_qp].zz();
807 
808  // Deformation gradient (F):
809  ColumnMajorMatrix F;
811  // Displacement gradient (H):
812  ColumnMajorMatrix H(F);
813  H.addDiag(-1.0);
814  Real detF = _element->detMatrix(F);
815  ColumnMajorMatrix Finv;
816  _element->invertMatrix(F, Finv);
817  ColumnMajorMatrix FinvT;
818  FinvT = Finv.transpose();
819  ColumnMajorMatrix HT;
820  HT = H.transpose();
821 
822  // 1st Piola-Kirchoff Stress (P):
823  ColumnMajorMatrix piola;
824  piola = stress_CMM * FinvT;
825  piola *= detF;
826 
827  // HTP = H^T * P = H^T * detF * sigma * FinvT;
828  ColumnMajorMatrix HTP;
829  HTP = HT * piola;
830 
831  ColumnMajorMatrix WI;
832  WI.identity();
833  WI *= (*_SED)[_qp];
834  WI *= detF;
835  (*_Eshelby_tensor)[_qp] = WI - HTP;
836 }

Referenced by SolidModel::computeProperties().

◆ computePreconditioning()

void SolidModel::computePreconditioning ( )
protectedvirtualinherited

Definition at line 944 of file SolidModel.C.

945 {
946  mooseAssert(_local_elasticity_tensor, "null elasticity tensor");
947 
948  // _Jacobian_mult[_qp] = *_local_elasticity_tensor;
949  // _d_stress_dT[_qp] = *_local_elasticity_tensor * _d_strain_dT;
952 }

Referenced by SolidModel::computeProperties().

◆ computeProperties()

void SolidModel::computeProperties ( )
protectedvirtualinherited

Definition at line 729 of file SolidModel.C.

730 {
731  if (_t_step >= 1)
732  _step_zero = false;
733 
734  if (_t_step >= 2)
735  _step_one = false;
736 
737  elementInit();
738  _element->init();
739 
740  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
741  {
744 
747 
749 
751  computeStress();
752  else
754 
755  if (_compute_JIntegral)
757 
759 
761 
762  finalizeStress();
763 
764  if (_compute_JIntegral)
765  computeEshelby();
766 
769 
772 
774  }
775 }

◆ computeStrainEnergyDensity()

void SolidModel::computeStrainEnergyDensity ( )
protectedvirtualinherited

Definition at line 780 of file SolidModel.C.

781 {
782  mooseAssert(_SED, "_SED not initialized");
783  mooseAssert(_SED_old, "_SED_old not initialized");
784  (*_SED)[_qp] = (*_SED_old)[_qp] +
785  _stress[_qp].doubleContraction(_mechanical_strain_increment) / 2 +
786  _stress_old_prop[_qp].doubleContraction(_mechanical_strain_increment) / 2;
787 }

Referenced by SolidModel::computeProperties().

◆ computeStress()

void AbaqusUmatMaterial::computeStress ( )
protectedvirtual

Compute the stress (sigma += deltaSigma)

Reimplemented from SolidModel.

Definition at line 182 of file AbaqusUmatMaterial.C.

183 {
184  // Calculate deformation gradient - modeled from "solid_mechanics/src/materials/Nonlinear3D.C"
185  // Fbar = 1 + grad(u(k))
186  ColumnMajorMatrix Fbar;
187 
188  Fbar(0, 0) = _grad_disp_x[_qp](0);
189  Fbar(0, 1) = _grad_disp_x[_qp](1);
190  Fbar(0, 2) = _grad_disp_x[_qp](2);
191  Fbar(1, 0) = _grad_disp_y[_qp](0);
192  Fbar(1, 1) = _grad_disp_y[_qp](1);
193  Fbar(1, 2) = _grad_disp_y[_qp](2);
194  Fbar(2, 0) = _grad_disp_z[_qp](0);
195  Fbar(2, 1) = _grad_disp_z[_qp](1);
196  Fbar(2, 2) = _grad_disp_z[_qp](2);
197 
198  Fbar.addDiag(1);
199  _Fbar[_qp] = Fbar;
200 
201  Real myDFGRD0[9] = {_Fbar_old[_qp](0, 0),
202  _Fbar_old[_qp](1, 0),
203  _Fbar_old[_qp](2, 0),
204  _Fbar_old[_qp](0, 1),
205  _Fbar_old[_qp](1, 1),
206  _Fbar_old[_qp](2, 1),
207  _Fbar_old[_qp](0, 2),
208  _Fbar_old[_qp](1, 2),
209  _Fbar_old[_qp](2, 2)};
210  Real myDFGRD1[9] = {_Fbar[_qp](0, 0),
211  _Fbar[_qp](1, 0),
212  _Fbar[_qp](2, 0),
213  _Fbar[_qp](0, 1),
214  _Fbar[_qp](1, 1),
215  _Fbar[_qp](2, 1),
216  _Fbar[_qp](0, 2),
217  _Fbar[_qp](1, 2),
218  _Fbar[_qp](2, 2)};
219 
220  for (unsigned int i = 0; i < 9; ++i)
221  {
222  _DFGRD0[i] = myDFGRD0[i];
223  _DFGRD1[i] = myDFGRD1[i];
224  }
225 
226  // Recover "old" state variables
227  for (unsigned int i = 0; i < _num_state_vars; ++i)
228  _STATEV[i] = _state_var_old[_qp][i];
229 
230  // Pass through updated stress, total strain, and strain increment arrays
231  for (int i = 0; i < _NTENS; ++i)
232  {
233  _STRESS[i] = _stress_old.component(i);
234  _STRAN[i] = _total_strain[_qp].component(i);
236  }
237 
238  // Pass through step , time, and coordinate system information
239  _KSTEP = _t_step; // Step number
240  _TIME[0] = _t; // Value of step time at the beginning of the current increment - Check
241  _TIME[1] = _t - _dt; // Value of total time at the beginning of the current increment - Check
242  _DTIME = _dt; // Time increment
243  for (unsigned int i = 0; i < 3; ++i) // Loop current coordinates in UMAT COORDS
244  _COORDS[i] = _coord[i];
245 
246  // Connection to extern statement
247  _umat(_STRESS,
248  _STATEV,
249  _DDSDDE,
250  &_SSE,
251  &_SPD,
252  &_SCD,
253  &_RPL,
254  _DDSDDT,
255  _DRPLDE,
256  &_DRPLDT,
257  _STRAN,
258  _DSTRAN,
259  _TIME,
260  &_DTIME,
261  &_TEMP,
262  &_DTEMP,
263  _PREDEF,
264  _DPRED,
265  &_CMNAME,
266  &_NDI,
267  &_NSHR,
268  &_NTENS,
269  &_NSTATV,
270  _PROPS,
271  &_NPROPS,
272  _COORDS,
273  _DROT,
274  &_PNEWDT,
275  &_CELENT,
276  _DFGRD0,
277  _DFGRD1,
278  &_NOEL,
279  &_NPT,
280  &_LAYER,
281  &_KSPT,
282  &_KSTEP,
283  &_KINC);
284 
285  // Energy outputs
287  _plastic_dissipation[_qp] = _SPD;
288  _creep_dissipation[_qp] = _SCD;
289 
290  // Update state variables
291  for (unsigned int i = 0; i < _num_state_vars; ++i)
292  _state_var[_qp][i] = _STATEV[i];
293 
294  // Get new stress tensor - UMAT should update stress
295  SymmTensor stressnew(_STRESS[0], _STRESS[1], _STRESS[2], _STRESS[3], _STRESS[4], _STRESS[5]);
296  _stress[_qp] = stressnew;
297 }

◆ computeThermalJvec()

void SolidModel::computeThermalJvec ( )
protectedvirtualinherited

Definition at line 1630 of file SolidModel.C.

1631 {
1632  mooseAssert(_J_thermal_term_vec, "_J_thermal_term_vec not initialized");
1633 
1634  Real stress_trace = _stress[_qp].xx() + _stress[_qp].yy() + _stress[_qp].zz();
1635 
1637  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
1638  {
1639  Real dthermstrain_dx =
1641  (*_J_thermal_term_vec)[_qp](i) = stress_trace * dthermstrain_dx;
1642  }
1643 }

Referenced by SolidModel::computeProperties().

◆ crackingStrainDirections()

void SolidModel::crackingStrainDirections ( )
protectedvirtualinherited

Determine cracking directions. Rotate elasticity tensor.

Definition at line 1048 of file SolidModel.C.

1049 {
1050  bool cracking_locally_active(false);
1051  if (_cracking_stress > 0)
1052  {
1053  // Compute whether cracking has occurred
1054  (*_crack_rotation)[_qp] = (*_crack_rotation_old)[_qp];
1055 
1056  ColumnMajorMatrix RT((*_crack_rotation)[_qp].transpose());
1057  SymmTensor ePrime;
1058  rotateSymmetricTensor(RT, _elastic_strain[_qp], ePrime);
1059 
1060  for (unsigned int i(0); i < 3; ++i)
1061  {
1062  (*_crack_max_strain)[_qp](i) = (*_crack_max_strain_old)[_qp](i);
1063 
1064  if (_cracking_neg_fraction == 0 && ePrime(i, i) < 0)
1065  {
1066  _crack_flags_local(i) = 1;
1067  }
1068  else if (_cracking_neg_fraction > 0 &&
1069  (*_crack_strain)[_qp](i) * _cracking_neg_fraction > ePrime(i, i))
1070  {
1071  if (-(*_crack_strain)[_qp](i) * _cracking_neg_fraction > ePrime(i, i))
1072  {
1073  _crack_flags_local(i) = 1;
1074  }
1075  else
1076  {
1077  // s = a*e^2 + b*e + c
1078  // a = (Ec-Eo)/(4etr)
1079  // b = (Ec+Eo)/2
1080  // c = (Ec-Eo)*etr/4
1081  // etr = _cracking_neg_fraction * strain when crack occurred
1082  const Real etr = _cracking_neg_fraction * (*_crack_strain)[_qp](i);
1083  const Real Eo = _cracking_stress / (*_crack_strain)[_qp](i);
1084  const Real Ec = Eo * (*_crack_flags_old)[_qp](i);
1085  const Real a = (Ec - Eo) / (4 * etr);
1086  const Real b = (Ec + Eo) / 2;
1087  // Compute the ratio of the current transition stiffness to the original stiffness
1088  _crack_flags_local(i) = (2 * a * etr + b) / Eo;
1089  cracking_locally_active = true;
1090  }
1091  }
1092  else
1093  {
1094  _crack_flags_local(i) = (*_crack_flags_old)[_qp](i);
1095  if (_crack_flags_local(i) < 1)
1096  {
1097  cracking_locally_active = true;
1098  }
1099  }
1100  }
1101  }
1102  if (cracking_locally_active)
1103  {
1104  // Adjust the elasticity matrix for cracking. This must be used by the
1105  // constitutive law.
1106  if (_compute_method == "ShearRetention")
1108  else
1110 
1111  ColumnMajorMatrix R_9x9(9, 9);
1112  const ColumnMajorMatrix & R((*_crack_rotation)[_qp]);
1115 
1117  }
1118 }

Referenced by SolidModel::computeElasticityTensor().

◆ crackingStressRotation()

void SolidModel::crackingStressRotation ( )
protectedvirtualinherited

Definition at line 1237 of file SolidModel.C.

1238 {
1239  if (_cracking_stress_function != NULL)
1240  {
1241  _cracking_stress = _cracking_stress_function->value(_t, _q_point[_qp]);
1242  }
1243 
1244  if (_cracking_stress > 0)
1245  {
1246 
1248 
1249  for (unsigned i(0); i < 3; ++i)
1250  {
1251  if (_principal_strain(i, 0) > (*_crack_max_strain_old)[_qp](i))
1252  {
1253  (*_crack_max_strain)[_qp](i) = _principal_strain(i, 0);
1254  }
1255  }
1256 
1257  // Check for new cracks.
1258  // This must be done in the crack-local coordinate frame.
1259 
1260  // Rotate stress to cracked orientation.
1261  ColumnMajorMatrix R((*_crack_rotation)[_qp]);
1262  ColumnMajorMatrix RT((*_crack_rotation)[_qp].transpose());
1263  SymmTensor sigmaPrime;
1264  rotateSymmetricTensor(RT, _stress[_qp], sigmaPrime);
1265 
1266  unsigned int num_cracks(0);
1267  for (unsigned i(0); i < 3; ++i)
1268  {
1269  _crack_flags_local(i) = 1;
1270  (*_crack_strain)[_qp](i) = (*_crack_strain_old)[_qp](i);
1271  if ((*_crack_flags_old)[_qp](i) < 1)
1272  {
1273  ++num_cracks;
1274  }
1275  }
1276 
1277  bool new_crack(false);
1278  bool cracked(false);
1279  RealVectorValue sigma;
1280  for (unsigned i(0); i < 3; ++i)
1281  {
1282  sigma(i) = sigmaPrime(i, i);
1283  (*_crack_flags)[_qp](i) = (*_crack_flags_old)[_qp](i);
1284  if (sigma(i) <= 1e-4)
1285  {
1286  if ((*_crack_flags)[_qp](i) == 1)
1287  {
1288  (*_crack_max_strain)[_qp](i) = _principal_strain(i, 0);
1289  }
1290  }
1291 
1292  // _cracked_this_step[_q_point[_qp]] = 0;
1293  Real crackFactor(1);
1294  if (_cracking_release == CR_POWER)
1295  {
1296  (*_crack_count)[_qp](i) = (*_crack_count_old)[_qp](i);
1297  }
1298  if ((_cracking_release == CR_POWER && sigma(i) > _cracking_stress &&
1299  _active_crack_planes[i] == 1
1300  // && (*_crack_count)[_qp](i) == 0
1301  )
1302  // || _cracked_this_step_count[_q_point[_qp]] > 5
1303  )
1304  {
1305  cracked = true;
1306  ++((*_crack_count)[_qp](i));
1307  // _cracked_this_step[_q_point[_qp]] = 1;
1308  // Assume Poisson's ratio drops to zero for this direction. Stiffness is then Young's
1309  // modulus.
1310  const Real stiff = _youngs_modulus_function
1311  ? _youngs_modulus_function->value(_temperature[_qp], Point())
1312  : _youngs_modulus;
1313 
1314  if ((*_crack_count_old)[_qp](i) == 0)
1315  {
1316  new_crack = true;
1317  ++num_cracks;
1318 
1319  (*_crack_strain)[_qp](i) = _cracking_stress / stiff;
1320  }
1321  // Compute stress, factor....
1322  (*_crack_flags)[_qp](i) *= 1. / 3.;
1323 
1324  if ((*_crack_max_strain)[_qp](i) < (*_crack_strain)[_qp](i))
1325  {
1326  (*_crack_max_strain)[_qp](i) = (*_crack_strain)[_qp](i);
1327  }
1328  sigma(i) = (*_crack_flags)[_qp](i) * stiff * _principal_strain(i, 0);
1329  }
1330  else if ((_cracking_release != CR_POWER && (*_crack_flags_old)[_qp](i) == 1 &&
1331  sigma(i) > _cracking_stress && num_cracks < _max_cracks &&
1332  _active_crack_planes[i] == 1)
1333  // || _cracked_this_step_count[_q_point[_qp]] > 5
1334  )
1335  {
1336  // A new crack
1337  // _cracked_this_step[_q_point[_qp]] = 1;
1338 
1339  cracked = true;
1340  new_crack = true;
1341  ++num_cracks;
1342 
1343  // Assume Poisson's ratio drops to zero for this direction. Stiffness is then Young's
1344  // modulus.
1345  const Real stiff = _youngs_modulus_function
1346  ? _youngs_modulus_function->value(_temperature[_qp], Point())
1347  : _youngs_modulus;
1348 
1349  (*_crack_strain)[_qp](i) = _cracking_stress / stiff;
1350  if ((*_crack_max_strain)[_qp](i) < (*_crack_strain)[_qp](i))
1351  {
1352  (*_crack_max_strain)[_qp](i) = (*_crack_strain)[_qp](i);
1353  }
1354 
1355  crackFactor = computeCrackFactor(i, sigma(i), (*_crack_flags)[_qp](i));
1356 
1357  (*_crack_flags)[_qp](i) = crackFactor;
1358  _crack_flags_local(i) = crackFactor;
1359 
1360  // May want to set the old value. This may help with the nonlinear solve
1361  // since the stress cannot bounce between just below the critical stress and
1362  // effectively zero. However, this may set allow cracking prematurely.
1363  // (*_crack_flags_old)[_qp](i) = crackFactor;
1364  // (*_crack_strain_old)[_qp](i) = _principal_strain(i,0);
1365  }
1366  else if (_cracking_release != CR_POWER && (*_crack_flags_old)[_qp](i) < 1 &&
1367  std::abs(_principal_strain(i, 0) - (*_crack_max_strain)[_qp](i)) < 1e-10)
1368  {
1369  // Previously cracked,
1370  // Crack opening
1371  cracked = true;
1372  crackFactor = computeCrackFactor(i, sigma(i), (*_crack_flags)[_qp](i));
1373  (*_crack_flags)[_qp](i) = crackFactor;
1374  _crack_flags_local(i) = crackFactor;
1375  }
1376  else if (_cracking_neg_fraction > 0 &&
1379  {
1380  // s = a*e^2 + b*e + c
1381  // a = (Ec-Eo)/(4etr)
1382  // b = (Ec+Eo)/2
1383  // c = (Ec-Eo)*etr/4
1384  // etr = _cracking_neg_fraction * strain when crack occurred
1385  cracked = true;
1386  const Real etr = _cracking_neg_fraction * (*_crack_strain)[_qp](i);
1387  const Real Eo = _cracking_stress / (*_crack_strain)[_qp](i);
1388  const Real Ec = Eo * (*_crack_flags_old)[_qp](i);
1389  const Real a = (Ec - Eo) / (4 * etr);
1390  const Real b = (Ec + Eo) / 2;
1391  const Real c = (Ec - Eo) * etr / 4;
1392  sigma(i) = (a * _principal_strain(i, 0) + b) * _principal_strain(i, 0) + c;
1393  }
1394  }
1395 
1396  if (!new_crack)
1397  {
1398  (*_crack_rotation)[_qp] = (*_crack_rotation_old)[_qp];
1399  }
1400  if (cracked)
1401  {
1402  applyCracksToTensor(_stress[_qp], sigma);
1403  }
1404  }
1405 }

Referenced by SolidModel::computeProperties().

◆ createConstitutiveModel()

void SolidModel::createConstitutiveModel ( const std::string &  cm_name)
protectedinherited

Definition at line 1591 of file SolidModel.C.

1592 {
1593 
1594  Factory & factory = _app.getFactory();
1595  InputParameters params = factory.getValidParams(cm_name);
1596 
1597  params.applyParameters(parameters());
1598  params.set<SubProblem *>("_subproblem") = &_subproblem;
1599  params.applySpecificParameters(parameters(), {"_material_data_type", "_neighbor"}, true);
1600 
1601  MooseSharedPointer<ConstitutiveModel> cm =
1602  factory.create<ConstitutiveModel>(cm_name, name() + "Model", params, _tid);
1603 
1604  _models_to_free.insert(
1605  cm); // Keep track of the dynamic memory that is created internally to this object
1606 
1607  _constitutive_active = true;
1608  for (unsigned i(0); i < _block_id.size(); ++i)
1609  {
1610  _constitutive_model[_block_id[i]] = cm;
1611  }
1612 }

Referenced by CLSHPlasticMaterial::CLSHPlasticMaterial(), Elastic::Elastic(), LinearStrainHardening::LinearStrainHardening(), and PowerLawCreep::PowerLawCreep().

◆ createElasticityTensor()

void SolidModel::createElasticityTensor ( )
protectedvirtualinherited

Reimplemented in MacroElastic.

Definition at line 500 of file SolidModel.C.

501 {
502  bool constant(true);
503 
506  {
507  constant = false;
508  }
509 
511  mooseAssert(_youngs_modulus_set, "Internal error: Youngs modulus not set");
512  mooseAssert(_poissons_ratio_set, "Internal error: Poissons ratio not set");
515  iso->calculate(0);
516  elasticityTensor(iso);
517 }

Referenced by SolidModel::initialSetup().

◆ createElement()

SolidMechanics::Element * SolidModel::createElement ( )
privateinherited

Definition at line 1467 of file SolidModel.C.

1468 {
1469  std::string mat_name = name();
1470  InputParameters parameters = emptyInputParameters();
1471  parameters += this->parameters();
1472 
1474 
1475  std::string formulation = getParam<MooseEnum>("formulation");
1476  std::transform(formulation.begin(), formulation.end(), formulation.begin(), ::tolower);
1477  if (formulation == "nonlinear3d")
1478  {
1479  if (!isCoupled("disp_x") || !isCoupled("disp_y") || !isCoupled("disp_z"))
1480  mooseError("Nonlinear3D requires all three displacements");
1481 
1482  if (isCoupled("disp_r"))
1483  mooseError("Linear must not define disp_r");
1484 
1485  if (_coord_type == Moose::COORD_RZ)
1486  mooseError("Nonlinear3D formulation requested for coord_type = RZ problem");
1487 
1488  element = new SolidMechanics::Nonlinear3D(*this, mat_name, parameters);
1489  }
1490  else if (formulation == "nonlinearrz")
1491  {
1492  if (!isCoupled("disp_r") || !isCoupled("disp_z"))
1493  mooseError("NonlinearRZ must define disp_r and disp_z");
1494 
1495  element = new SolidMechanics::NonlinearRZ(*this, mat_name, parameters);
1496  }
1497  else if (formulation == "axisymmetricrz")
1498  {
1499  if (!isCoupled("disp_r") || !isCoupled("disp_z"))
1500  mooseError("AxisymmetricRZ must define disp_r and disp_z");
1501  element = new SolidMechanics::AxisymmetricRZ(*this, mat_name, parameters);
1502  }
1503  else if (formulation == "sphericalr")
1504  {
1505  if (!isCoupled("disp_r"))
1506  mooseError("SphericalR must define disp_r");
1507  element = new SolidMechanics::SphericalR(*this, mat_name, parameters);
1508  }
1509  else if (formulation == "planestrain")
1510  {
1511  if (!isCoupled("disp_x") || !isCoupled("disp_y"))
1512  mooseError("PlaneStrain must define disp_x and disp_y");
1513  element = new SolidMechanics::PlaneStrain(*this, mat_name, parameters);
1514  }
1515  else if (formulation == "nonlinearplanestrain")
1516  {
1517  if (!isCoupled("disp_x") || !isCoupled("disp_y"))
1518  mooseError("NonlinearPlaneStrain must define disp_x and disp_y");
1519  element = new SolidMechanics::NonlinearPlaneStrain(*this, mat_name, parameters);
1520  }
1521  else if (formulation == "linear")
1522  {
1523  if (isCoupled("disp_r"))
1524  mooseError("Linear must not define disp_r");
1525  if (_coord_type == Moose::COORD_RZ)
1526  mooseError("Linear formulation requested for coord_type = RZ problem");
1527  element = new SolidMechanics::Linear(*this, mat_name, parameters);
1528  }
1529  else if (formulation != "")
1530  mooseError("Unknown formulation: " + formulation);
1531 
1532  if (!element && _coord_type == Moose::COORD_RZ)
1533  {
1534  if (!isCoupled("disp_r") || !isCoupled("disp_z"))
1535  {
1536  std::string err(name());
1537  err += ": RZ coord sys requires disp_r and disp_z for AxisymmetricRZ formulation";
1538  mooseError(err);
1539  }
1540  element = new SolidMechanics::AxisymmetricRZ(*this, mat_name, parameters);
1541  }
1542  else if (!element && _coord_type == Moose::COORD_RSPHERICAL)
1543  {
1544  if (!isCoupled("disp_r"))
1545  {
1546  std::string err(name());
1547  err += ": RSPHERICAL coord sys requires disp_r for SphericalR formulation";
1548  mooseError(err);
1549  }
1550  element = new SolidMechanics::SphericalR(*this, mat_name, parameters);
1551  }
1552 
1553  if (!element)
1554  {
1555  if (isCoupled("disp_x") && isCoupled("disp_y") && isCoupled("disp_z"))
1556  {
1557  if (isCoupled("disp_r"))
1558  mooseError("Error with displacement specification in material " + mat_name);
1559  element = new SolidMechanics::Nonlinear3D(*this, mat_name, parameters);
1560  }
1561  else if (isCoupled("disp_x") && isCoupled("disp_y"))
1562  {
1563  if (isCoupled("disp_r"))
1564  mooseError("Error with displacement specification in material " + mat_name);
1565  element = new SolidMechanics::PlaneStrain(*this, mat_name, parameters);
1566  }
1567  else if (isCoupled("disp_r") && isCoupled("disp_z"))
1568  {
1569  if (_coord_type != Moose::COORD_RZ)
1570  mooseError("RZ coord system not specified, but disp_r and disp_z are");
1571  element = new SolidMechanics::AxisymmetricRZ(*this, mat_name, parameters);
1572  }
1573  else if (isCoupled("disp_r"))
1574  {
1575  if (_coord_type != Moose::COORD_RSPHERICAL)
1576  mooseError("RSPHERICAL coord system not specified, but disp_r is");
1577  element = new SolidMechanics::SphericalR(*this, mat_name, parameters);
1578  }
1579  else if (isCoupled("disp_x"))
1580  element = new SolidMechanics::Linear(*this, mat_name, parameters);
1581  else
1582  mooseError("Unable to determine formulation for material " + mat_name);
1583  }
1584 
1585  mooseAssert(element, "No Element created for material " + mat_name);
1586 
1587  return element;
1588 }

Referenced by SolidModel::SolidModel().

◆ createProperty()

template<typename T >
MaterialProperty<T>& SolidModel::createProperty ( const std::string &  prop_name)
inlineprotectedinherited

Definition at line 231 of file SolidModel.h.

232  {
233  std::string name(prop_name + _appended_property_name);
234  return declareProperty<T>(name);
235  }

◆ delta()

int SolidModel::delta ( int  i,
int  j 
) const
inlineprotectedinherited

Definition at line 228 of file SolidModel.h.

228 { return i == j; }

◆ elasticityTensor() [1/2]

SymmElasticityTensor* SolidModel::elasticityTensor ( ) const
inlineprotectedinherited

◆ elasticityTensor() [2/2]

void SolidModel::elasticityTensor ( SymmElasticityTensor e)
protectedinherited

Definition at line 551 of file SolidModel.C.

552 {
555 }

◆ element()

const SolidMechanics::Element* SolidModel::element ( ) const
inlineprotectedinherited

Definition at line 226 of file SolidModel.h.

226 { return _element; }

Referenced by SolidModel::createElement().

◆ elementInit()

virtual void SolidModel::elementInit ( )
inlineprotectedvirtualinherited

Definition at line 179 of file SolidModel.h.

179 {}

Referenced by SolidModel::computeProperties().

◆ finalizeStress()

void SolidModel::finalizeStress ( )
protectedvirtualinherited

Rotate stress to current configuration.

Definition at line 932 of file SolidModel.C.

933 {
934  std::vector<SymmTensor *> t(3);
935  t[0] = &_elastic_strain[_qp];
936  t[1] = &_total_strain[_qp];
937  t[2] = &_stress[_qp];
939 }

Referenced by SolidModel::computeProperties().

◆ getNumKnownCrackDirs()

unsigned int SolidModel::getNumKnownCrackDirs ( ) const
protectedvirtualinherited

Definition at line 1455 of file SolidModel.C.

1456 {
1457  const unsigned fromElement = _element->getNumKnownCrackDirs();
1458  unsigned int retVal(0);
1459  for (unsigned int i(0); i < 3 - fromElement; ++i)
1460  {
1461  retVal += ((*_crack_flags_old)[_qp](i) < 1);
1462  }
1463  return retVal + fromElement;
1464 }

Referenced by SolidModel::computeCrackStrainAndOrientation().

◆ getPropertyOld()

template<typename T >
const MaterialProperty<T>& SolidModel::getPropertyOld ( const std::string &  prop_name)
inlineprotectedinherited

Definition at line 238 of file SolidModel.h.

239  {
240  std::string name(prop_name + _appended_property_name);
241  return getMaterialPropertyOld<T>(name);
242  }

◆ initialSetup()

void SolidModel::initialSetup ( )
protectedvirtualinherited

Definition at line 957 of file SolidModel.C.

958 {
959 
961 
963 
964  // Load in the volumetric models and constitutive models
965  bool set_constitutive_active = false;
966  for (unsigned i(0); i < _block_id.size(); ++i)
967  {
968 
969  // const std::vector<MaterialBase*> * mats_p;
970  std::vector<MooseSharedPointer<MaterialBase>> const * mats_p;
971  std::string suffix;
972  if (_bnd)
973  {
974  mats_p = &_fe_problem.getMaterialWarehouse()[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(
975  _block_id[i], _tid);
976  suffix = "_face";
977  }
978  else
979  mats_p = &_fe_problem.getMaterialWarehouse().getActiveBlockObjects(_block_id[i], _tid);
980 
981  const std::vector<MooseSharedPointer<MaterialBase>> & mats = *mats_p;
982 
983  for (unsigned int j = 0; j < mats.size(); ++j)
984  {
985  MooseSharedPointer<VolumetricModel> vm =
986  MooseSharedNamespace::dynamic_pointer_cast<VolumetricModel>(mats[j]);
987  if (vm)
988  {
989  const std::vector<std::string> & dep_matl_props = vm->getDependentMaterialProperties();
990  for (unsigned k = 0; k < dep_matl_props.size(); ++k)
991  {
992  if ("" != dep_matl_props[k] &&
993  _dep_matl_props.find(dep_matl_props[k]) == _dep_matl_props.end())
994  {
995  mooseError("A VolumetricModel depends on " + dep_matl_props[k] +
996  ", but that material property was not given in the dep_matl_props line.");
997  }
998  }
999  _volumetric_models[_block_id[i]].push_back(vm);
1000  }
1001  }
1002 
1003  for (std::map<SubdomainID, MooseSharedPointer<ConstitutiveModel>>::iterator iter =
1004  _constitutive_model.begin();
1005  iter != _constitutive_model.end();
1006  ++iter)
1007  {
1008  iter->second->initialSetup();
1009  }
1010 
1011  if (isParamValid("constitutive_model") && !_constitutive_active)
1012  {
1013  // User-defined name of the constitutive model (a Material object)
1014  std::string constitutive_model = getParam<std::string>("constitutive_model") + suffix;
1015 
1016  for (unsigned int j = 0; j < mats.size(); ++j)
1017  {
1018  MooseSharedPointer<ConstitutiveModel> cm =
1019  MooseSharedNamespace::dynamic_pointer_cast<ConstitutiveModel>(mats[j]);
1020 
1021  if (cm && cm->name() == constitutive_model)
1022  {
1023  _constitutive_model[_block_id[i]] = cm;
1024  set_constitutive_active = true;
1025  break;
1026  }
1027  }
1028 
1029  if (!set_constitutive_active)
1030  mooseError("Unable to find constitutive model " + constitutive_model);
1031  }
1032  }
1033  if (set_constitutive_active)
1034  _constitutive_active = true;
1035 
1037  {
1038  // Make sure that timeDerivative is supported for _alpha_function. If not, it will error out.
1039  Point dummy_point;
1040  Real dummy_temp = 0;
1041  _alpha_function->timeDerivative(dummy_temp, dummy_point);
1042  }
1043 }

◆ initQpStatefulProperties()

void AbaqusUmatMaterial::initQpStatefulProperties ( )
protectedvirtual

Reimplemented from SolidModel.

Definition at line 173 of file AbaqusUmatMaterial.C.

174 {
175  // Initialize state variable vector
176  _state_var[_qp].resize(_num_state_vars);
177  for (unsigned int i = 0; i < _num_state_vars; ++i)
178  _state_var[_qp][i] = 0.0;
179 }

◆ initStatefulProperties()

void SolidModel::initStatefulProperties ( unsigned  n_points)
virtualinherited

Reimplemented in AbaqusCreepMaterial.

Definition at line 1615 of file SolidModel.C.

1616 {
1617  for (_qp = 0; _qp < n_points; ++_qp)
1618  {
1620  }
1622  {
1623  const SubdomainID current_block = _current_elem->subdomain_id();
1624  MooseSharedPointer<ConstitutiveModel> cm = _constitutive_model[current_block];
1625  cm->initStatefulProperties(n_points);
1626  }
1627 }

◆ jacobianSetup()

void SolidModel::jacobianSetup ( )
protectedvirtualinherited

Definition at line 533 of file SolidModel.C.

534 {
535  // if (_cracking_stress > 0)
536  // {
537  // for (std::map<Point, unsigned>::iterator i = _cracked_this_step.begin();
538  // i != _cracked_this_step.end(); ++i)
539  // {
540  // if (i->second)
541  // {
542  // ++_cracked_this_step_count[i->first];
543  // }
544  // }
545  // }
546 }

◆ JxW()

Real SolidModel::JxW ( unsigned  i) const
inlineinherited

◆ modifyStrainIncrement()

void SolidModel::modifyStrainIncrement ( )
protectedvirtualinherited

Modify increment for things like thermal strain.

Definition at line 560 of file SolidModel.C.

561 {
562  bool modified = false;
563  _d_strain_dT.zero();
564 
565  const SubdomainID current_block = _current_elem->subdomain_id();
567  {
568  MooseSharedPointer<ConstitutiveModel> cm = _constitutive_model[current_block];
569 
570  // Let's be a little careful and check for a non-existent
571  // ConstitutiveModel, which could be returned as a default value
572  // from std::map::operator[]
573  if (!cm)
574  mooseError("ConstitutiveModel not available for block ", current_block);
575 
576  cm->setQp(_qp);
577  modified |= cm->modifyStrainIncrement(*_current_elem, _strain_increment, _d_strain_dT);
578  }
579 
580  if (!modified)
581  {
583  }
584 
586 }

Referenced by SolidModel::computeProperties().

◆ q_point()

const Point& SolidModel::q_point ( unsigned  i) const
inlineinherited

◆ qrule()

const QBase* SolidModel::qrule ( )
inlineinherited

◆ rotateSymmetricTensor()

void SolidModel::rotateSymmetricTensor ( const ColumnMajorMatrix &  R,
const SymmTensor T,
SymmTensor result 
)
staticinherited

Definition at line 663 of file SolidModel.C.

666 {
667 
668  // R T Rt
669  // 00 01 02 00 01 02 00 10 20
670  // 10 11 12 * 10 11 12 * 01 11 21
671  // 20 21 22 20 21 22 02 12 22
672  //
673  const Real T00 = R(0, 0) * T.xx() + R(0, 1) * T.xy() + R(0, 2) * T.zx();
674  const Real T01 = R(0, 0) * T.xy() + R(0, 1) * T.yy() + R(0, 2) * T.yz();
675  const Real T02 = R(0, 0) * T.zx() + R(0, 1) * T.yz() + R(0, 2) * T.zz();
676 
677  const Real T10 = R(1, 0) * T.xx() + R(1, 1) * T.xy() + R(1, 2) * T.zx();
678  const Real T11 = R(1, 0) * T.xy() + R(1, 1) * T.yy() + R(1, 2) * T.yz();
679  const Real T12 = R(1, 0) * T.zx() + R(1, 1) * T.yz() + R(1, 2) * T.zz();
680 
681  const Real T20 = R(2, 0) * T.xx() + R(2, 1) * T.xy() + R(2, 2) * T.zx();
682  const Real T21 = R(2, 0) * T.xy() + R(2, 1) * T.yy() + R(2, 2) * T.yz();
683  const Real T22 = R(2, 0) * T.zx() + R(2, 1) * T.yz() + R(2, 2) * T.zz();
684 
685  result.xx(T00 * R(0, 0) + T01 * R(0, 1) + T02 * R(0, 2));
686  result.yy(T10 * R(1, 0) + T11 * R(1, 1) + T12 * R(1, 2));
687  result.zz(T20 * R(2, 0) + T21 * R(2, 1) + T22 * R(2, 2));
688  result.xy(T00 * R(1, 0) + T01 * R(1, 1) + T02 * R(1, 2));
689  result.yz(T10 * R(2, 0) + T11 * R(2, 1) + T12 * R(2, 2));
690  result.zx(T00 * R(2, 0) + T01 * R(2, 1) + T02 * R(2, 2));
691 }

Referenced by SolidModel::applyCracksToTensor(), SolidModel::computeCrackStrainAndOrientation(), SolidModel::crackingStrainDirections(), and SolidModel::crackingStressRotation().

◆ timestepSetup()

void SolidModel::timestepSetup ( )
protectedvirtualinherited

Definition at line 522 of file SolidModel.C.

523 {
524  // if (_cracking_stress > 0)
525  // {
526  // _cracked_this_step_count.clear();
527  // }
528 }

◆ updateElasticityTensor()

bool SolidModel::updateElasticityTensor ( SymmElasticityTensor tensor)
protectedvirtualinherited

Return true if the elasticity tensor changed.

Reimplemented in MacroElastic.

Definition at line 891 of file SolidModel.C.

892 {
893  bool changed(false);
895  {
896  const SubdomainID current_block = _current_elem->subdomain_id();
897  MooseSharedPointer<ConstitutiveModel> cm = _constitutive_model[current_block];
898 
899  // Let's be a little careful and check for a non-existent
900  // ConstitutiveModel, which could be returned as a default value
901  // from std::map::operator[]
902  if (!cm)
903  mooseError("ConstitutiveModel not available for block ", current_block);
904 
905  cm->setQp(_qp);
906  changed |= cm->updateElasticityTensor(tensor);
907  }
908 
910  {
911  SymmIsotropicElasticityTensor * t = dynamic_cast<SymmIsotropicElasticityTensor *>(&tensor);
912  if (!t)
913  {
914  mooseError("Cannot use Youngs modulus or Poissons ratio functions");
915  }
916  t->unsetConstants();
917  Point p;
919  ? _youngs_modulus_function->value(_temperature[_qp], p)
920  : _youngs_modulus));
922  ? _poissons_ratio_function->value(_temperature[_qp], p)
923  : _poissons_ratio));
924  changed = true;
925  }
926  return changed;
927 }

Referenced by SolidModel::computeElasticityTensor().

Member Data Documentation

◆ _active_crack_planes

std::vector<unsigned int> SolidModel::_active_crack_planes
protectedinherited

Definition at line 87 of file SolidModel.h.

Referenced by SolidModel::crackingStressRotation(), and SolidModel::SolidModel().

◆ _alpha

const Real SolidModel::_alpha
protectedinherited

◆ _alpha_function

const Function* SolidModel::_alpha_function
protectedinherited

◆ _appended_property_name

const std::string SolidModel::_appended_property_name
protectedinherited

Definition at line 62 of file SolidModel.h.

Referenced by SolidModel::createProperty(), and SolidModel::getPropertyOld().

◆ _block_id

std::vector<SubdomainID> SolidModel::_block_id
protectedinherited

◆ _bulk_modulus

Real SolidModel::_bulk_modulus
protectedinherited

Definition at line 70 of file SolidModel.h.

Referenced by SolidModel::checkElasticConstants().

◆ _bulk_modulus_set

bool SolidModel::_bulk_modulus_set
protectedinherited

Definition at line 64 of file SolidModel.h.

Referenced by SolidModel::checkElasticConstants().

◆ _CELENT

Real AbaqusUmatMaterial::_CELENT
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _CMNAME

Real AbaqusUmatMaterial::_CMNAME
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _compute_InteractionIntegral

const bool SolidModel::_compute_InteractionIntegral
protectedinherited

Definition at line 154 of file SolidModel.h.

Referenced by SolidModel::computeProperties(), and SolidModel::SolidModel().

◆ _compute_JIntegral

const bool SolidModel::_compute_JIntegral
protectedinherited

◆ _compute_method

const std::string SolidModel::_compute_method
protectedinherited

Definition at line 83 of file SolidModel.h.

Referenced by SolidModel::crackingStrainDirections().

◆ _constitutive_active

bool SolidModel::_constitutive_active
protectedinherited

◆ _constitutive_model

std::map<SubdomainID, MooseSharedPointer<ConstitutiveModel> > SolidModel::_constitutive_model
protectedinherited

◆ _coord_type

Moose::CoordinateSystemType SolidModel::_coord_type
protectedinherited

Definition at line 60 of file SolidModel.h.

Referenced by SolidModel::createElement(), and SolidModel::SolidModel().

◆ _COORDS

Real AbaqusUmatMaterial::_COORDS[3]
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _crack_count

MaterialProperty<RealVectorValue>* SolidModel::_crack_count
protectedinherited

Definition at line 125 of file SolidModel.h.

Referenced by SolidModel::initQpStatefulProperties(), and SolidModel::SolidModel().

◆ _crack_count_old

const MaterialProperty<RealVectorValue>* SolidModel::_crack_count_old
protectedinherited

Definition at line 126 of file SolidModel.h.

Referenced by SolidModel::crackingStressRotation(), and SolidModel::SolidModel().

◆ _crack_flags

MaterialProperty<RealVectorValue>* SolidModel::_crack_flags
protectedinherited

◆ _crack_flags_local

RealVectorValue SolidModel::_crack_flags_local
protectedinherited

◆ _crack_flags_old

const MaterialProperty<RealVectorValue>* SolidModel::_crack_flags_old
protectedinherited

Definition at line 123 of file SolidModel.h.

Referenced by SolidModel::crackingStressRotation(), and SolidModel::SolidModel().

◆ _crack_max_strain

MaterialProperty<RealVectorValue>* SolidModel::_crack_max_strain
protectedinherited

◆ _crack_max_strain_old

const MaterialProperty<RealVectorValue>* SolidModel::_crack_max_strain_old
protectedinherited

◆ _crack_rotation

MaterialProperty<ColumnMajorMatrix>* SolidModel::_crack_rotation
protectedinherited

◆ _crack_rotation_old

const MaterialProperty<ColumnMajorMatrix>* SolidModel::_crack_rotation_old
protectedinherited

Definition at line 128 of file SolidModel.h.

Referenced by SolidModel::SolidModel().

◆ _crack_strain

MaterialProperty<RealVectorValue>* SolidModel::_crack_strain
protectedinherited

◆ _crack_strain_old

const MaterialProperty<RealVectorValue>* SolidModel::_crack_strain_old
protectedinherited

Definition at line 130 of file SolidModel.h.

Referenced by SolidModel::crackingStressRotation(), and SolidModel::SolidModel().

◆ _cracking_alpha

Real SolidModel::_cracking_alpha
protectedinherited

Definition at line 86 of file SolidModel.h.

Referenced by SolidModel::computeCrackFactor(), and SolidModel::SolidModel().

◆ _cracking_beta

const Real SolidModel::_cracking_beta
protectedinherited

Definition at line 82 of file SolidModel.h.

Referenced by SolidModel::computeCrackFactor().

◆ _cracking_neg_fraction

const Real SolidModel::_cracking_neg_fraction
protectedinherited

◆ _cracking_release

const CRACKING_RELEASE SolidModel::_cracking_release
protectedinherited

◆ _cracking_residual_stress

const Real SolidModel::_cracking_residual_stress
protectedinherited

Definition at line 81 of file SolidModel.h.

Referenced by SolidModel::computeCrackFactor().

◆ _cracking_stress

Real SolidModel::_cracking_stress
protectedinherited

◆ _cracking_stress_function

const Function* const SolidModel::_cracking_stress_function
protectedinherited

◆ _creep_dissipation

MaterialProperty<Real>& AbaqusUmatMaterial::_creep_dissipation
protected

Definition at line 103 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _current_instantaneous_thermal_expansion_coef

MaterialProperty<Real>* SolidModel::_current_instantaneous_thermal_expansion_coef
protectedinherited

◆ _d_strain_dT

SymmTensor SolidModel::_d_strain_dT
protectedinherited

◆ _d_stress_dT

MaterialProperty<SymmTensor>& SolidModel::_d_stress_dT
protectedinherited

Definition at line 142 of file SolidModel.h.

Referenced by SolidModel::computePreconditioning().

◆ _DDSDDE

Real * AbaqusUmatMaterial::_DDSDDE
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _DDSDDT

Real * AbaqusUmatMaterial::_DDSDDT
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _dep_matl_props

std::set<std::string> SolidModel::_dep_matl_props
protectedinherited

Definition at line 106 of file SolidModel.h.

Referenced by SolidModel::initialSetup(), and SolidModel::SolidModel().

◆ _DFGRD0

Real * AbaqusUmatMaterial::_DFGRD0
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _DFGRD1

Real * AbaqusUmatMaterial::_DFGRD1
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _DPRED

Real AbaqusUmatMaterial::_DPRED[1]
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _DROT

Real AbaqusUmatMaterial::_DROT[3][3]
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _DRPLDE

Real * AbaqusUmatMaterial::_DRPLDE
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _DRPLDT

Real AbaqusUmatMaterial::_DRPLDT
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _DSTRAN

Real * AbaqusUmatMaterial::_DSTRAN
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _DTEMP

Real AbaqusUmatMaterial::_DTEMP
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _DTIME

Real AbaqusUmatMaterial::_DTIME
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _elastic_strain

MaterialProperty<SymmTensor>& SolidModel::_elastic_strain
protectedinherited

◆ _elastic_strain_energy

MaterialProperty<Real>& AbaqusUmatMaterial::_elastic_strain_energy
protected

Definition at line 101 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _elastic_strain_old

const MaterialProperty<SymmTensor>& SolidModel::_elastic_strain_old
protectedinherited

◆ _elasticity_tensor

MaterialProperty<SymmElasticityTensor>& SolidModel::_elasticity_tensor
protectedinherited

◆ _element

SolidMechanics::Element* SolidModel::_element
privateinherited

◆ _Eshelby_tensor

MaterialProperty<RankTwoTensor>* SolidModel::_Eshelby_tensor
protectedinherited

Definition at line 159 of file SolidModel.h.

Referenced by SolidModel::computeEshelby(), and SolidModel::SolidModel().

◆ _Fbar

MaterialProperty<ColumnMajorMatrix>& AbaqusUmatMaterial::_Fbar
protected

Definition at line 99 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _Fbar_old

const MaterialProperty<ColumnMajorMatrix>& AbaqusUmatMaterial::_Fbar_old
protected

Definition at line 100 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _grad_disp_x

const VariableGradient& AbaqusUmatMaterial::_grad_disp_x
protected

Definition at line 91 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _grad_disp_x_old

const VariableGradient& AbaqusUmatMaterial::_grad_disp_x_old
protected

Definition at line 94 of file AbaqusUmatMaterial.h.

◆ _grad_disp_y

const VariableGradient& AbaqusUmatMaterial::_grad_disp_y
protected

Definition at line 92 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _grad_disp_y_old

const VariableGradient& AbaqusUmatMaterial::_grad_disp_y_old
protected

Definition at line 95 of file AbaqusUmatMaterial.h.

◆ _grad_disp_z

const VariableGradient& AbaqusUmatMaterial::_grad_disp_z
protected

Definition at line 93 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _grad_disp_z_old

const VariableGradient& AbaqusUmatMaterial::_grad_disp_z_old
protected

Definition at line 96 of file AbaqusUmatMaterial.h.

◆ _handle

void* AbaqusUmatMaterial::_handle
protected

Definition at line 73 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and ~AbaqusUmatMaterial().

◆ _has_stress_free_temp

bool SolidModel::_has_stress_free_temp
protectedinherited

Definition at line 100 of file SolidModel.h.

Referenced by SolidModel::applyThermalStrain(), and SolidModel::SolidModel().

◆ _has_temp

const bool SolidModel::_has_temp
protectedinherited

◆ _J_thermal_term_vec

MaterialProperty<RealVectorValue>* SolidModel::_J_thermal_term_vec
protectedinherited

Definition at line 160 of file SolidModel.h.

Referenced by SolidModel::computeThermalJvec(), and SolidModel::SolidModel().

◆ _Jacobian_mult

MaterialProperty<SymmElasticityTensor>& SolidModel::_Jacobian_mult
protectedinherited

Definition at line 136 of file SolidModel.h.

Referenced by SolidModel::computePreconditioning().

◆ _KINC

int AbaqusUmatMaterial::_KINC
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _KSPT

int AbaqusUmatMaterial::_KSPT
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _KSTEP

int AbaqusUmatMaterial::_KSTEP
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _lambda

Real SolidModel::_lambda
protectedinherited

Definition at line 71 of file SolidModel.h.

Referenced by SolidModel::checkElasticConstants().

◆ _lambda_set

bool SolidModel::_lambda_set
protectedinherited

Definition at line 65 of file SolidModel.h.

Referenced by SolidModel::checkElasticConstants().

◆ _LAYER

int AbaqusUmatMaterial::_LAYER
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _local_elasticity_tensor

SymmElasticityTensor* SolidModel::_local_elasticity_tensor
privateinherited

◆ _max_cracks

const unsigned int SolidModel::_max_cracks
protectedinherited

Definition at line 88 of file SolidModel.h.

Referenced by SolidModel::crackingStressRotation().

◆ _mean_alpha_function

bool SolidModel::_mean_alpha_function
protectedinherited

◆ _mechanical_constants

std::vector<Real> AbaqusUmatMaterial::_mechanical_constants
protected

Definition at line 67 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial().

◆ _mechanical_strain_increment

SymmTensor SolidModel::_mechanical_strain_increment
protectedinherited

Mechanical strain increment, which is the total strain increment minus eigenstrains.

Definition at line 147 of file SolidModel.h.

Referenced by SolidModel::computeProperties(), and SolidModel::computeStrainEnergyDensity().

◆ _models_to_free

std::set<MooseSharedPointer<ConstitutiveModel> > SolidModel::_models_to_free
protectedinherited

Definition at line 252 of file SolidModel.h.

Referenced by SolidModel::createConstitutiveModel().

◆ _NDI

int AbaqusUmatMaterial::_NDI
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _NOEL

int AbaqusUmatMaterial::_NOEL
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _NPROPS

int AbaqusUmatMaterial::_NPROPS
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _NPT

int AbaqusUmatMaterial::_NPT
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _NSHR

int AbaqusUmatMaterial::_NSHR
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _NSTATV

int AbaqusUmatMaterial::_NSTATV
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _NTENS

int AbaqusUmatMaterial::_NTENS
protected

Definition at line 82 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _num_props

unsigned int AbaqusUmatMaterial::_num_props
protected

Definition at line 70 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial().

◆ _num_state_vars

unsigned int AbaqusUmatMaterial::_num_state_vars
protected

◆ _piecewise_linear_alpha_function

PiecewiseLinear* SolidModel::_piecewise_linear_alpha_function
protectedinherited

Definition at line 99 of file SolidModel.h.

◆ _plastic_dissipation

MaterialProperty<Real>& AbaqusUmatMaterial::_plastic_dissipation
protected

Definition at line 102 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _plugin

FileName AbaqusUmatMaterial::_plugin
protected

Definition at line 66 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial().

◆ _PNEWDT

Real AbaqusUmatMaterial::_PNEWDT
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _poissons_ratio

Real SolidModel::_poissons_ratio
protectedinherited

◆ _poissons_ratio_function

const Function* SolidModel::_poissons_ratio_function
protectedinherited

◆ _poissons_ratio_set

bool SolidModel::_poissons_ratio_set
protectedinherited

◆ _PREDEF

Real AbaqusUmatMaterial::_PREDEF[1]
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _principal_strain

ColumnMajorMatrix SolidModel::_principal_strain
protectedinherited

◆ _PROPS

Real * AbaqusUmatMaterial::_PROPS
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _ref_temp

Real SolidModel::_ref_temp
protectedinherited

◆ _RPL

Real AbaqusUmatMaterial::_RPL
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _SCD

Real AbaqusUmatMaterial::_SCD
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _SED

MaterialProperty<Real>* SolidModel::_SED
protectedinherited

◆ _SED_old

const MaterialProperty<Real>* SolidModel::_SED_old
protectedinherited

Definition at line 158 of file SolidModel.h.

Referenced by SolidModel::computeStrainEnergyDensity(), and SolidModel::SolidModel().

◆ _shear_modulus

Real SolidModel::_shear_modulus
protectedinherited

◆ _shear_modulus_set

bool SolidModel::_shear_modulus_set
protectedinherited

Definition at line 67 of file SolidModel.h.

Referenced by SolidModel::checkElasticConstants().

◆ _SPD

Real AbaqusUmatMaterial::_SPD
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _SSE

Real AbaqusUmatMaterial::_SSE
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _state_var

MaterialProperty<std::vector<Real> >& AbaqusUmatMaterial::_state_var
protected

Definition at line 97 of file AbaqusUmatMaterial.h.

Referenced by computeStress(), and initQpStatefulProperties().

◆ _state_var_old

const MaterialProperty<std::vector<Real> >& AbaqusUmatMaterial::_state_var_old
protected

Definition at line 98 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _STATEV

Real* AbaqusUmatMaterial::_STATEV
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _step_one

bool& SolidModel::_step_one
protectedinherited

Definition at line 262 of file SolidModel.h.

Referenced by SolidModel::applyThermalStrain(), and SolidModel::computeProperties().

◆ _step_zero

bool& SolidModel::_step_zero
protectedinherited

Restartable data to check for the zeroth and first time steps for thermal calculations.

Definition at line 261 of file SolidModel.h.

Referenced by SolidModel::applyThermalStrain(), and SolidModel::computeProperties().

◆ _strain_increment

SymmTensor SolidModel::_strain_increment
protectedinherited

In most models, this is the mechanical strain increment, but for inelastic models, it has the inelastic component subtracted from it, so it is the elastic strain increment.

Definition at line 151 of file SolidModel.h.

Referenced by SolidModel::applyThermalStrain(), SolidModel::applyVolumetricStrain(), SolidModel::computeConstitutiveModelStress(), SolidModel::computeCrackStrainAndOrientation(), SolidModel::computeProperties(), PLC_LSH::computeStress(), AbaqusCreepMaterial::computeStress(), computeStress(), and SolidModel::modifyStrainIncrement().

◆ _STRAN

Real * AbaqusUmatMaterial::_STRAN
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _STRESS

Real * AbaqusUmatMaterial::_STRESS
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), computeStress(), and ~AbaqusUmatMaterial().

◆ _stress

MaterialProperty<SymmTensor>& SolidModel::_stress
protectedinherited

◆ _stress_free_temp

Real SolidModel::_stress_free_temp
protectedinherited

◆ _stress_old

SymmTensor SolidModel::_stress_old
protectedinherited

◆ _stress_old_prop

const MaterialProperty<SymmTensor>& SolidModel::_stress_old_prop
privateinherited

◆ _TEMP

Real AbaqusUmatMaterial::_TEMP
protected

Definition at line 79 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _temp_grad

const VariableGradient& SolidModel::_temp_grad
protectedinherited

Definition at line 96 of file SolidModel.h.

Referenced by SolidModel::computeThermalJvec().

◆ _temperature

const VariableValue& SolidModel::_temperature
protectedinherited

◆ _temperature_old

const VariableValue& SolidModel::_temperature_old
protectedinherited

Definition at line 95 of file SolidModel.h.

Referenced by SolidModel::applyThermalStrain().

◆ _thermal_constants

std::vector<Real> AbaqusUmatMaterial::_thermal_constants
protected

Definition at line 68 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial().

◆ _TIME

Real AbaqusUmatMaterial::_TIME[2]
protected

Definition at line 85 of file AbaqusUmatMaterial.h.

Referenced by computeStress().

◆ _total_strain

MaterialProperty<SymmTensor>& SolidModel::_total_strain
protectedinherited

◆ _total_strain_increment

SymmTensor SolidModel::_total_strain_increment
protectedinherited

Total strain increment, including mechanical strains and eigenstrains.

Definition at line 145 of file SolidModel.h.

Referenced by SolidModel::computeProperties().

◆ _total_strain_old

const MaterialProperty<SymmTensor>& SolidModel::_total_strain_old
protectedinherited

Definition at line 117 of file SolidModel.h.

Referenced by SolidModel::computeProperties().

◆ _umat

umat_t AbaqusUmatMaterial::_umat
protected

Definition at line 76 of file AbaqusUmatMaterial.h.

Referenced by AbaqusUmatMaterial(), and computeStress().

◆ _volumetric_models

std::map<SubdomainID, std::vector<MooseSharedPointer<VolumetricModel> > > SolidModel::_volumetric_models
protectedinherited

Definition at line 105 of file SolidModel.h.

Referenced by SolidModel::applyVolumetricStrain(), and SolidModel::initialSetup().

◆ _youngs_modulus

Real SolidModel::_youngs_modulus
protectedinherited

◆ _youngs_modulus_function

const Function* SolidModel::_youngs_modulus_function
protectedinherited

◆ _youngs_modulus_set

bool SolidModel::_youngs_modulus_set
protectedinherited

The documentation for this class was generated from the following files:
SolidModel::_youngs_modulus
Real _youngs_modulus
Definition: SolidModel.h:74
AbaqusUmatMaterial::_NPROPS
int _NPROPS
Definition: AbaqusUmatMaterial.h:82
SymmTensor::xx
Real xx() const
Definition: SymmTensor.h:131
SymmElasticityTensor::calculate
void calculate(unsigned int qp)
Public function that will be called whenever the values for this matrix need to be filled in.
Definition: SymmElasticityTensor.C:41
SolidModel::computeThermalJvec
virtual void computeThermalJvec()
Definition: SolidModel.C:1630
AbaqusUmatMaterial::_umat
umat_t _umat
Definition: AbaqusUmatMaterial.h:76
SolidModel::_active_crack_planes
std::vector< unsigned int > _active_crack_planes
Definition: SolidModel.h:87
SolidModel::_compute_JIntegral
const bool _compute_JIntegral
Definition: SolidModel.h:153
SymmElasticityTensor::rotateFromLocalToGlobal
void rotateFromLocalToGlobal(const ColumnMajorMatrix &R)
Definition: SymmElasticityTensor.C:360
AbaqusUmatMaterial::_PNEWDT
Real _PNEWDT
Definition: AbaqusUmatMaterial.h:79
SolidModel::_current_instantaneous_thermal_expansion_coef
MaterialProperty< Real > * _current_instantaneous_thermal_expansion_coef
Definition: SolidModel.h:163
SymmTensor::zx
Real zx() const
Definition: SymmTensor.h:136
SymmIsotropicElasticityTensor
Defines an Isotropic Elasticity Tensor.
Definition: SymmIsotropicElasticityTensor.h:33
SolidModel::_step_one
bool & _step_one
Definition: SolidModel.h:262
SolidModel::createElasticityTensor
virtual void createElasticityTensor()
Definition: SolidModel.C:500
SolidModel::elasticityTensor
SymmElasticityTensor * elasticityTensor() const
Definition: SolidModel.h:224
AbaqusUmatMaterial::_STRAN
Real * _STRAN
Definition: AbaqusUmatMaterial.h:85
SolidModel::_crack_strain_old
const MaterialProperty< RealVectorValue > * _crack_strain_old
Definition: SolidModel.h:130
SolidModel::_cracking_alpha
Real _cracking_alpha
Definition: SolidModel.h:86
AbaqusUmatMaterial::_KSTEP
int _KSTEP
Definition: AbaqusUmatMaterial.h:82
AbaqusUmatMaterial::_num_state_vars
unsigned int _num_state_vars
Definition: AbaqusUmatMaterial.h:69
SolidMechanics::Element::init
virtual void init()
Definition: Element.h:48
SolidModel::_local_elasticity_tensor
SymmElasticityTensor * _local_elasticity_tensor
Definition: SolidModel.h:272
SymmTensor::zz
Real zz() const
Definition: SymmTensor.h:133
SolidModel::_d_stress_dT
MaterialProperty< SymmTensor > & _d_stress_dT
Definition: SolidModel.h:142
SymmTensor::zero
void zero()
Definition: SymmTensor.h:275
SolidModel::CR_ABRUPT
Definition: SolidModel.h:49
SolidModel::_shear_modulus
Real _shear_modulus
Definition: SolidModel.h:73
AbaqusUmatMaterial::_thermal_constants
std::vector< Real > _thermal_constants
Definition: AbaqusUmatMaterial.h:68
SolidModel::crackingStressRotation
virtual void crackingStressRotation()
Definition: SolidModel.C:1237
SolidModel::_cracking_release
const CRACKING_RELEASE _cracking_release
Definition: SolidModel.h:79
AbaqusUmatMaterial::_Fbar
MaterialProperty< ColumnMajorMatrix > & _Fbar
Definition: AbaqusUmatMaterial.h:99
SolidModel::_temperature_old
const VariableValue & _temperature_old
Definition: SolidModel.h:95
AbaqusUmatMaterial::_DDSDDE
Real * _DDSDDE
Definition: AbaqusUmatMaterial.h:85
ConstitutiveModel
Definition: ConstitutiveModel.h:22
SolidModel::_compute_method
const std::string _compute_method
Definition: SolidModel.h:83
SolidMechanics::NonlinearPlaneStrain
NonlinearPlaneStrain is a class for large deformation plane strain.
Definition: NonlinearPlaneStrain.h:21
AbaqusUmatMaterial::_grad_disp_x_old
const VariableGradient & _grad_disp_x_old
Definition: AbaqusUmatMaterial.h:94
SolidModel::_youngs_modulus_set
bool _youngs_modulus_set
Definition: SolidModel.h:68
AbaqusUmatMaterial::_DRPLDT
Real _DRPLDT
Definition: AbaqusUmatMaterial.h:79
SolidModel::_total_strain_increment
SymmTensor _total_strain_increment
Total strain increment, including mechanical strains and eigenstrains.
Definition: SolidModel.h:145
SolidModel::_constitutive_active
bool _constitutive_active
Definition: SolidModel.h:253
SolidModel::computeStrainEnergyDensity
virtual void computeStrainEnergyDensity()
Definition: SolidModel.C:780
SymmElasticityTensor::adjustForCracking
virtual void adjustForCracking(const RealVectorValue &crack_flags)
Definition: SymmElasticityTensor.C:372
AbaqusUmatMaterial::_PROPS
Real * _PROPS
Definition: AbaqusUmatMaterial.h:85
SolidModel::_SED
MaterialProperty< Real > * _SED
Definition: SolidModel.h:157
SymmElasticityTensor::form9x9Rotation
void form9x9Rotation(const ColumnMajorMatrix &R_3x3, ColumnMajorMatrix &R_9x9) const
Definition: SymmElasticityTensor.C:341
SolidModel::_appended_property_name
const std::string _appended_property_name
Definition: SolidModel.h:62
AbaqusUmatMaterial::_creep_dissipation
MaterialProperty< Real > & _creep_dissipation
Definition: AbaqusUmatMaterial.h:103
SolidModel::_crack_flags
MaterialProperty< RealVectorValue > * _crack_flags
Definition: SolidModel.h:122
SymmElasticityTensor::adjustForCrackingWithShearRetention
virtual void adjustForCrackingWithShearRetention(const RealVectorValue &crack_flags)
Definition: SymmElasticityTensor.C:378
SolidModel::_J_thermal_term_vec
MaterialProperty< RealVectorValue > * _J_thermal_term_vec
Definition: SolidModel.h:160
SolidModel::getNumKnownCrackDirs
virtual unsigned int getNumKnownCrackDirs() const
Definition: SolidModel.C:1455
SolidModel::_max_cracks
const unsigned int _max_cracks
Definition: SolidModel.h:88
AbaqusUmatMaterial::_SPD
Real _SPD
Definition: AbaqusUmatMaterial.h:79
AbaqusUmatMaterial::_DPRED
Real _DPRED[1]
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_DRPLDE
Real * _DRPLDE
Definition: AbaqusUmatMaterial.h:85
SymmTensor::component
Real component(unsigned int i) const
Definition: SymmTensor.h:99
SolidModel::_cracking_beta
const Real _cracking_beta
Definition: SolidModel.h:82
SolidModel::_compute_InteractionIntegral
const bool _compute_InteractionIntegral
Definition: SolidModel.h:154
SolidModel::_strain_increment
SymmTensor _strain_increment
In most models, this is the mechanical strain increment, but for inelastic models,...
Definition: SolidModel.h:151
SolidModel::_step_zero
bool & _step_zero
Restartable data to check for the zeroth and first time steps for thermal calculations.
Definition: SolidModel.h:261
SolidModel::_volumetric_models
std::map< SubdomainID, std::vector< MooseSharedPointer< VolumetricModel > > > _volumetric_models
Definition: SolidModel.h:105
SolidModel::_alpha_function
const Function * _alpha_function
Definition: SolidModel.h:98
SolidModel::CR_EXPONENTIAL
Definition: SolidModel.h:50
SolidModel::_Jacobian_mult
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
Definition: SolidModel.h:136
SolidModel::finalizeStress
virtual void finalizeStress()
Rotate stress to current configuration.
Definition: SolidModel.C:932
SolidModel::_mechanical_strain_increment
SymmTensor _mechanical_strain_increment
Mechanical strain increment, which is the total strain increment minus eigenstrains.
Definition: SolidModel.h:147
SolidModel::_stress_old_prop
const MaterialProperty< SymmTensor > & _stress_old_prop
Definition: SolidModel.h:111
AbaqusUmatMaterial::_grad_disp_z_old
const VariableGradient & _grad_disp_z_old
Definition: AbaqusUmatMaterial.h:96
SolidModel::_constitutive_model
std::map< SubdomainID, MooseSharedPointer< ConstitutiveModel > > _constitutive_model
Definition: SolidModel.h:250
AbaqusUmatMaterial::_grad_disp_z
const VariableGradient & _grad_disp_z
Definition: AbaqusUmatMaterial.h:93
SolidModel::_poissons_ratio
Real _poissons_ratio
Definition: SolidModel.h:72
SolidModel::_crack_flags_old
const MaterialProperty< RealVectorValue > * _crack_flags_old
Definition: SolidModel.h:123
AbaqusUmatMaterial::_CELENT
Real _CELENT
Definition: AbaqusUmatMaterial.h:79
AbaqusUmatMaterial::_COORDS
Real _COORDS[3]
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_SSE
Real _SSE
Definition: AbaqusUmatMaterial.h:79
AbaqusUmatMaterial::_RPL
Real _RPL
Definition: AbaqusUmatMaterial.h:79
AbaqusUmatMaterial::_Fbar_old
const MaterialProperty< ColumnMajorMatrix > & _Fbar_old
Definition: AbaqusUmatMaterial.h:100
SolidModel::_block_id
std::vector< SubdomainID > _block_id
Definition: SolidModel.h:248
SolidModel::_coord_type
Moose::CoordinateSystemType _coord_type
Definition: SolidModel.h:60
AbaqusUmatMaterial::_NPT
int _NPT
Definition: AbaqusUmatMaterial.h:82
AbaqusUmatMaterial::_NSHR
int _NSHR
Definition: AbaqusUmatMaterial.h:82
SolidMechanics::AxisymmetricRZ
Definition: AxisymmetricRZ.h:19
AbaqusUmatMaterial::_CMNAME
Real _CMNAME
Definition: AbaqusUmatMaterial.h:79
SymmTensor::xy
Real xy() const
Definition: SymmTensor.h:134
SolidModel::_bulk_modulus_set
bool _bulk_modulus_set
Definition: SolidModel.h:64
SolidMechanics::NonlinearRZ
NonlinearRZ is the base class for all RZ nonlinear solid mechanics material models.
Definition: NonlinearRZ.h:20
SolidMechanics::SphericalR
Definition: SphericalR.h:20
SolidModel::_temp_grad
const VariableGradient & _temp_grad
Definition: SolidModel.h:96
SolidModel::_bulk_modulus
Real _bulk_modulus
Definition: SolidModel.h:70
SolidModel::_d_strain_dT
SymmTensor _d_strain_dT
Definition: SolidModel.h:139
AbaqusUmatMaterial::_LAYER
int _LAYER
Definition: AbaqusUmatMaterial.h:82
SolidModel::_has_stress_free_temp
bool _has_stress_free_temp
Definition: SolidModel.h:100
AbaqusUmatMaterial::_KINC
int _KINC
Definition: AbaqusUmatMaterial.h:82
SolidModel::_lambda_set
bool _lambda_set
Definition: SolidModel.h:65
AbaqusUmatMaterial::_TEMP
Real _TEMP
Definition: AbaqusUmatMaterial.h:79
AbaqusUmatMaterial::_TIME
Real _TIME[2]
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_SCD
Real _SCD
Definition: AbaqusUmatMaterial.h:79
SolidModel::computeEshelby
virtual void computeEshelby()
Definition: SolidModel.C:792
SolidModel::_crack_strain
MaterialProperty< RealVectorValue > * _crack_strain
Definition: SolidModel.h:129
SymmIsotropicElasticityTensor::unsetConstants
void unsetConstants()
Definition: SymmIsotropicElasticityTensor.h:40
SolidModel::applyVolumetricStrain
virtual void applyVolumetricStrain()
Definition: SolidModel.C:649
SolidModel::_cracking_stress_function
const Function *const _cracking_stress_function
Definition: SolidModel.h:84
SolidModel::_models_to_free
std::set< MooseSharedPointer< ConstitutiveModel > > _models_to_free
Definition: SolidModel.h:252
AbaqusUmatMaterial::_STRESS
Real * _STRESS
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_num_props
unsigned int _num_props
Definition: AbaqusUmatMaterial.h:70
SolidModel::computeCrackFactor
virtual Real computeCrackFactor(int i, Real &sigma, Real &flagVal)
Definition: SolidModel.C:1408
SolidModel::updateElasticityTensor
virtual bool updateElasticityTensor(SymmElasticityTensor &tensor)
Return true if the elasticity tensor changed.
Definition: SolidModel.C:891
SolidModel::computeCurrentInstantaneousThermalExpansionCoefficient
virtual void computeCurrentInstantaneousThermalExpansionCoefficient()
Definition: SolidModel.C:1646
SymmTensor::addDiag
void addDiag(Real value)
Definition: SymmTensor.h:281
AbaqusUmatMaterial::_STATEV
Real * _STATEV
Definition: AbaqusUmatMaterial.h:85
SolidModel::_total_strain_old
const MaterialProperty< SymmTensor > & _total_strain_old
Definition: SolidModel.h:117
SymmIsotropicElasticityTensor::setYoungsModulus
void setYoungsModulus(const Real E)
Set the Young's Modulus.
Definition: SymmIsotropicElasticityTensor.C:42
SolidModel::computeConstitutiveModelStress
virtual void computeConstitutiveModelStress()
Compute the stress (sigma += deltaSigma)
Definition: SolidModel.C:841
SolidModel::_crack_flags_local
RealVectorValue _crack_flags_local
Definition: SolidModel.h:124
name
const std::string name
Definition: Setup.h:21
SymmTensor::yz
Real yz() const
Definition: SymmTensor.h:135
AbaqusUmatMaterial::_DTIME
Real _DTIME
Definition: AbaqusUmatMaterial.h:79
SolidModel::elementInit
virtual void elementInit()
Definition: SolidModel.h:179
AbaqusUmatMaterial::_mechanical_constants
std::vector< Real > _mechanical_constants
Definition: AbaqusUmatMaterial.h:67
SolidModel::CR_POWER
Definition: SolidModel.h:51
SolidMechanics::Element
Element is the base class for all of this module's solid mechanics element formulations.
Definition: Element.h:25
SolidModel::_elasticity_tensor
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
Definition: SolidModel.h:135
SolidModel::modifyStrainIncrement
virtual void modifyStrainIncrement()
Modify increment for things like thermal strain.
Definition: SolidModel.C:560
SolidMechanics::Linear
Definition: Linear.h:20
SolidMechanics::Element::detMatrix
static Real detMatrix(const ColumnMajorMatrix &A)
Definition: Element.C:31
SolidModel::_SED_old
const MaterialProperty< Real > * _SED_old
Definition: SolidModel.h:158
AbaqusUmatMaterial::_PREDEF
Real _PREDEF[1]
Definition: AbaqusUmatMaterial.h:85
SolidModel::_youngs_modulus_function
const Function * _youngs_modulus_function
Definition: SolidModel.h:76
SolidModel::_temperature
const VariableValue & _temperature
Definition: SolidModel.h:94
SolidModel::applyThermalStrain
virtual void applyThermalStrain()
Definition: SolidModel.C:591
SolidModel::computeStress
virtual void computeStress()
Compute the stress (sigma += deltaSigma)
Definition: SolidModel.h:190
SolidModel::_mean_alpha_function
bool _mean_alpha_function
Definition: SolidModel.h:102
SolidModel::_shear_modulus_set
bool _shear_modulus_set
Definition: SolidModel.h:67
SymmTensor
Definition: SymmTensor.h:21
AbaqusUmatMaterial::_NTENS
int _NTENS
Definition: AbaqusUmatMaterial.h:82
AbaqusUmatMaterial::_NSTATV
int _NSTATV
Definition: AbaqusUmatMaterial.h:82
SolidMechanics::Element::computeStrain
virtual void computeStrain(const unsigned qp, const SymmTensor &total_strain_old, SymmTensor &total_strain_new, SymmTensor &strain_increment)=0
SolidModel::_cracking_stress
Real _cracking_stress
Definition: SolidModel.h:80
SymmIsotropicElasticityTensor::setPoissonsRatio
void setPoissonsRatio(const Real nu)
Set Poissons Ratio.
Definition: SymmIsotropicElasticityTensor.C:49
AbaqusUmatMaterial::_grad_disp_y
const VariableGradient & _grad_disp_y
Definition: AbaqusUmatMaterial.h:92
SolidModel::applyCracksToTensor
void applyCracksToTensor(SymmTensor &tensor, const RealVectorValue &sigma)
Definition: SolidModel.C:1123
AbaqusUmatMaterial::_plastic_dissipation
MaterialProperty< Real > & _plastic_dissipation
Definition: AbaqusUmatMaterial.h:102
SolidModel::_crack_rotation
MaterialProperty< ColumnMajorMatrix > * _crack_rotation
Definition: SolidModel.h:127
SolidMechanics::Element::volumeRatioOld
virtual Real volumeRatioOld(unsigned) const
Definition: Element.h:60
SolidModel::crackingStrainDirections
virtual void crackingStrainDirections()
Determine cracking directions. Rotate elasticity tensor.
Definition: SolidModel.C:1048
SolidModel::_crack_max_strain
MaterialProperty< RealVectorValue > * _crack_max_strain
Definition: SolidModel.h:131
SolidModel::_total_strain
MaterialProperty< SymmTensor > & _total_strain
Definition: SolidModel.h:116
SolidModel::_Eshelby_tensor
MaterialProperty< RankTwoTensor > * _Eshelby_tensor
Definition: SolidModel.h:159
SolidModel::_dep_matl_props
std::set< std::string > _dep_matl_props
Definition: SolidModel.h:106
SolidModel::_element
SolidMechanics::Element * _element
Definition: SolidModel.h:270
SolidModel::_principal_strain
ColumnMajorMatrix _principal_strain
Definition: SolidModel.h:133
SolidModel::_elastic_strain_old
const MaterialProperty< SymmTensor > & _elastic_strain_old
Definition: SolidModel.h:120
SolidModel::_crack_max_strain_old
const MaterialProperty< RealVectorValue > * _crack_max_strain_old
Definition: SolidModel.h:132
SolidMechanics::Element::computeDeformationGradient
virtual void computeDeformationGradient(unsigned int, ColumnMajorMatrix &)
Definition: Element.h:50
AbaqusUmatMaterial::_grad_disp_x
const VariableGradient & _grad_disp_x
Definition: AbaqusUmatMaterial.h:91
AbaqusUmatMaterial::_handle
void * _handle
Definition: AbaqusUmatMaterial.h:73
SolidModel::CR_UNKNOWN
Definition: SolidModel.h:52
SolidModel::_has_temp
const bool _has_temp
Definition: SolidModel.h:93
SolidModel::_poissons_ratio_set
bool _poissons_ratio_set
Definition: SolidModel.h:66
SolidModel::_crack_count_old
const MaterialProperty< RealVectorValue > * _crack_count_old
Definition: SolidModel.h:126
SolidModel::_stress
MaterialProperty< SymmTensor > & _stress
Definition: SolidModel.h:108
SolidModel::rotateSymmetricTensor
static void rotateSymmetricTensor(const ColumnMajorMatrix &R, const SymmTensor &T, SymmTensor &result)
Definition: SolidModel.C:663
SolidModel::_cracking_neg_fraction
const Real _cracking_neg_fraction
Definition: SolidModel.h:89
AbaqusUmatMaterial::_state_var_old
const MaterialProperty< std::vector< Real > > & _state_var_old
Definition: AbaqusUmatMaterial.h:98
SolidModel::initQpStatefulProperties
virtual void initQpStatefulProperties()
Definition: SolidModel.C:696
AbaqusUmatMaterial::_DFGRD0
Real * _DFGRD0
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_elastic_strain_energy
MaterialProperty< Real > & _elastic_strain_energy
Definition: AbaqusUmatMaterial.h:101
SolidModel::computePreconditioning
virtual void computePreconditioning()
Definition: SolidModel.C:944
SymmTensor::yy
Real yy() const
Definition: SymmTensor.h:132
AbaqusUmatMaterial::_NOEL
int _NOEL
Definition: AbaqusUmatMaterial.h:82
SolidMechanics::PlaneStrain
Definition: PlaneStrain.h:18
SolidMechanics::Element::finalizeStress
virtual void finalizeStress(std::vector< SymmTensor * > &)
Rotate stress to current configuration.
Definition: Element.h:63
SolidModel::_lambda
Real _lambda
Definition: SolidModel.h:71
SolidModel::_ref_temp
Real _ref_temp
Definition: SolidModel.h:103
SolidMechanics::Nonlinear3D
Nonlinear3D is the base class for all 3D nonlinear solid mechanics material models.
Definition: Nonlinear3D.h:24
SolidModel::_stress_old
SymmTensor _stress_old
Definition: SolidModel.h:114
SolidModel::computeCrackStrainAndOrientation
void computeCrackStrainAndOrientation(ColumnMajorMatrix &principal_strain)
Definition: SolidModel.C:1152
SolidMechanics::Element::getNumKnownCrackDirs
virtual unsigned int getNumKnownCrackDirs() const
Definition: Element.h:65
AbaqusUmatMaterial::_DDSDDT
Real * _DDSDDT
Definition: AbaqusUmatMaterial.h:85
SolidModel::_elastic_strain
MaterialProperty< SymmTensor > & _elastic_strain
Definition: SolidModel.h:119
SolidModel::_alpha
const Real _alpha
Definition: SolidModel.h:97
AbaqusUmatMaterial::_DTEMP
Real _DTEMP
Definition: AbaqusUmatMaterial.h:79
SolidModel::SolidModel
SolidModel(const InputParameters &parameters)
Definition: SolidModel.C:140
AbaqusUmatMaterial::_NDI
int _NDI
Definition: AbaqusUmatMaterial.h:82
SolidModel::computeElasticityTensor
void computeElasticityTensor()
Definition: SolidModel.C:865
SolidModel::checkElasticConstants
virtual void checkElasticConstants()
Definition: SolidModel.C:377
AbaqusUmatMaterial::_state_var
MaterialProperty< std::vector< Real > > & _state_var
Definition: AbaqusUmatMaterial.h:97
AbaqusUmatMaterial::_DFGRD1
Real * _DFGRD1
Definition: AbaqusUmatMaterial.h:85
SolidModel::_poissons_ratio_function
const Function * _poissons_ratio_function
Definition: SolidModel.h:77
SolidModel::_stress_free_temp
Real _stress_free_temp
Definition: SolidModel.h:101
SolidModel::element
const SolidMechanics::Element * element() const
Definition: SolidModel.h:226
AbaqusUmatMaterial::_DSTRAN
Real * _DSTRAN
Definition: AbaqusUmatMaterial.h:85
SolidModel::_cracking_residual_stress
const Real _cracking_residual_stress
Definition: SolidModel.h:81
AbaqusUmatMaterial::_plugin
FileName _plugin
Definition: AbaqusUmatMaterial.h:66
AbaqusUmatMaterial::_grad_disp_y_old
const VariableGradient & _grad_disp_y_old
Definition: AbaqusUmatMaterial.h:95
SolidMechanics::Element::invertMatrix
static void invertMatrix(const ColumnMajorMatrix &A, ColumnMajorMatrix &Ainv)
Definition: Element.C:52
AbaqusUmatMaterial::_DROT
Real _DROT[3][3]
Definition: AbaqusUmatMaterial.h:85
AbaqusUmatMaterial::_KSPT
int _KSPT
Definition: AbaqusUmatMaterial.h:82