Base class of the "Lagrangian" kernel system. More...
#include <LagrangianStressDivergenceBase.h>
Public Types | |
| enum | FBarMode { FBarMode::Total, FBarMode::Incremental } |
Mirrors ComputeLagrangianStrainBase::FBarMode. More... | |
| typedef std::vector< int > | JvarMap |
Public Member Functions | |
| LagrangianStressDivergenceBase (const InputParameters ¶meters) | |
| virtual void | computeOffDiagJacobian (unsigned int jvar) override |
| unsigned int | mapJvarToCvar (unsigned int jvar) |
| int | mapJvarToCvar (unsigned int jvar, const JvarMap &jvar_map) |
| bool | mapJvarToCvar (unsigned int jvar, unsigned int &cvar) |
| const JvarMap & | getJvarMap () |
| const JvarMap & | getParameterJvarMap (std::string parameter_name) |
Static Public Member Functions | |
| static InputParameters | validParams () |
Protected Member Functions | |
| virtual RankTwoTensor | gradTest (unsigned int component)=0 |
| virtual RankTwoTensor | gradTrial (unsigned int component)=0 |
| virtual void | initialSetup () override |
Derive _large_kinematics from the strain calculator's LARGE_KINEMATICS guarantee. More... | |
| virtual void | precalculateJacobian () override |
| virtual void | precalculateOffDiagJacobian (unsigned int jvar) override |
| virtual void | precalculateJacobianDisplacement (unsigned int component)=0 |
| Prepare the average shape function gradients for stabilization. More... | |
| virtual Real | computeQpJacobian () override |
| virtual Real | computeQpOffDiagJacobian (unsigned int jvar) override |
| virtual Real | computeQpJacobianDisplacement (unsigned int alpha, unsigned int beta)=0 |
| virtual Real | computeQpJacobianTemperature (unsigned int cvar)=0 |
| virtual Real | computeQpJacobianOutOfPlaneStrain ()=0 |
| RankTwoTensor | deltaPK1NonLocalFBar (const RankTwoTensor &delta_F_avg) const |
Non-local F-bar contribution to deltaPK1 at the current _qp, given the perturbation delta_F_avg of the element-average F. More... | |
| bool | hasGuaranteedMaterialProperty (const MaterialPropertyName &prop, Guarantee guarantee) |
Protected Attributes | |
| bool | _large_kinematics |
| If true use large deformation kinematics. More... | |
| const bool | _stabilize_strain |
| If true calculate the deformation gradient derivatives for F_bar. More... | |
| const FBarMode | _F_bar_mode |
| What F gets F-bar volumetric correction (Total vs. More... | |
| const std::string | _base_name |
| Prepend to the material properties. More... | |
| const unsigned int | _alpha |
| Which component of the vector residual this kernel is responsible for. More... | |
| const unsigned int | _ndisp |
| Total number of displacements/size of residual vector. More... | |
| std::vector< unsigned int > | _disp_nums |
| The displacement numbers. More... | |
| std::vector< std::vector< RankTwoTensor > > | _avg_grad_trial |
| std::vector< Real > | _avg_grad_spatial_test |
Element-averaged spatial (deformed-frame) gradient of test functions for the kernel's component _alpha: _avg_grad_spatial_test[i] = (1/V_x) int_e (grad_x test_i)_alpha dV_x Used for OLD-compat B-bar volumetric correction in F_bar_mode = incremental. More... | |
| std::vector< std::vector< Real > > | _avg_grad_spatial_phi |
Element-averaged spatial gradient of trial functions per component: _avg_grad_spatial_phi[component][j] = (1/V_x) int_e (grad_x phi_j)_component dV_x Populated alongside _avg_grad_spatial_test for the Jacobian's B-bar contribution. More... | |
| std::vector< std::vector< std::vector< std::vector< Real > > > > | _avg_test_phi_cross |
| Element-averaged cross product (on displaced mesh) of spatial test/trial gradients: avg_test_phi_cross[b1][b2][i][j] = (1/V_x) int_e (grad_x test_i){b1} * (grad_x phi_j)_{b2} dV_x Indexed by [b1][b2] in {0,1,2}^2. More... | |
| const MaterialProperty< RankTwoTensor > & | _F_ust |
| The unmodified deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > & | _F_ust_old |
| Old unstabilized deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > & | _F_avg |
| The element-average deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > & | _f_inv |
| The inverse increment deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > & | _F_inv |
| The inverse deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > * | _F_ust_inv = nullptr |
| F_ust^{-1} and det(F_ust) from the strain calculator, consumed by the F-bar spatial push-forward (grad_x = F_ust^{-T} grad_X, J_ust = det F_ust) on both the residual and Jacobian sweeps. More... | |
| const MaterialProperty< Real > * | _F_ust_det = nullptr |
| const MaterialProperty< RankTwoTensor > & | _F |
| The actual (stabilized) deformation gradient. More... | |
| const MaterialProperty< RankTwoTensor > & | _F_actual |
| The literal deformation gradient at n+1 (I + grad u_{n+1}), independent of alpha and F-bar. More... | |
| const MaterialProperty< RankFourTensor > & | _d_deformation_gradient_increment_d_F |
| Derivative of the spatial velocity gradient increment w.r.t. F_{n+1}. More... | |
| const MaterialProperty< RankFourTensor > & | _d_F_d_grad_u |
| Derivative of F_{n+1} w.r.t. the displacement gradient. More... | |
| const MaterialProperty< RankFourTensor > & | _d_F_stab_d_F_ust |
| Partials of the F-bar-stabilized deformation gradient. More... | |
| const MaterialProperty< RankFourTensor > & | _d_F_stab_d_F_avg |
| const MooseVariable * | _temperature |
| Temperature, if provided. This is used only to get the trial functions. More... | |
| const MooseVariable * | _out_of_plane_strain |
| Out-of-plane strain, if provided. More... | |
| std::vector< std::vector< const MaterialProperty< RankTwoTensor > * > > | _deigenstrain_dargs |
| Eigenstrain derivatives wrt generate coupleds. More... | |
| const MaterialProperty< RankFourTensor > * | _dcauchy_stress_d_eigenstrain = nullptr |
| Derivative of the Cauchy stress with respect to the eigenstrain (published by ComputeLagrangianObjectiveStress; can be overridden by other Cauchy-providing materials). More... | |
| const MaterialProperty< RankFourTensor > * | _d_nl_fbar = nullptr |
| Composed non-local F-bar operator D_nl = cauchy_jac : d(dL)/dF : d(F_stab)/d(F_avg), published per qp by the stress material (once per element, shared by all displacement kernels). More... | |
| const unsigned int | _n_args |
Base class of the "Lagrangian" kernel system.
This class provides a common structure for the "new" tensor_mechanics kernel system. The goals for this new system are 1) Always-correct jacobians 2) A cleaner material interface
This class provides common input properties and helper methods, most of the math has to be done in the subclasses
Definition at line 29 of file LagrangianStressDivergenceBase.h.
|
strong |
Mirrors ComputeLagrangianStrainBase::FBarMode.
Replicated here (rather than included) so this header doesn't need to pull in the templated strain header.
| Enumerator | |
|---|---|
| Total | |
| Incremental | |
Definition at line 39 of file LagrangianStressDivergenceBase.h.
| LagrangianStressDivergenceBase::LagrangianStressDivergenceBase | ( | const InputParameters & | parameters | ) |
Definition at line 57 of file LagrangianStressDivergenceBase.C.
|
overrideprotectedvirtual |
Reimplemented in TotalLagrangianWeakPlaneStress.
Definition at line 191 of file LagrangianStressDivergenceBase.C.
|
protectedpure virtual |
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
Referenced by computeQpJacobian(), and computeQpOffDiagJacobian().
|
protectedpure virtual |
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
Referenced by computeQpOffDiagJacobian().
|
protectedpure virtual |
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
Referenced by computeQpOffDiagJacobian().
|
overrideprotectedvirtual |
Reimplemented in TotalLagrangianWeakPlaneStress.
Definition at line 210 of file LagrangianStressDivergenceBase.C.
|
protected |
Non-local F-bar contribution to deltaPK1 at the current _qp, given the perturbation delta_F_avg of the element-average F.
Implements the shared chain deltaF_stab_NL = _d_F_stab_d_F_avg * deltaF_avg deltadL_NL = _d_deformation_gradient_increment_d_F * deltaF_stab_NL deltasigma_NL = _cauchy_jacobian * deltadL_NL deltaPK1_NL = det(F_ust) * deltasigma_NL * F_ust^{-T} (large kinematics) = deltasigma_NL (small kinematics, PK1 == sigma) Returns zero when F-bar is off (!_stabilize_strain). Used by the TL displacement Jacobian, the WPS off-diag Jacobian, and the homogenization scalar<->disp Jacobian – anywhere the disp perturbation chains through F-bar's non-local route.
Consumes the strain/stress material's per-qp _d_nl_fbar operator so the inner (test, trial) loop pays only one R4*R2 (and, in the large-kinematics branch, one R2*R2*R2 PK1 wrap) per call instead of three R4*R2 chains plus a per-call 3x3 inverse.
Definition at line 197 of file LagrangianStressDivergenceBase.C.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), and HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian().
|
protectedpure virtual |
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
|
protectedpure virtual |
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
|
protectedinherited |
Definition at line 28 of file GuaranteeConsumer.C.
Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), ADComputeSmearedCrackingStress::initialSetup(), ComputeSmearedCrackingStress::initialSetup(), ComputeLinearElasticPFFractureStress::initialSetup(), CriticalTimeStep::initialSetup(), ComputeStVenantKirchhoffStress::initialSetup(), ComputeMultipleInelasticStressBase::initialSetup(), ADComputeMultipleInelasticStress::initialSetup(), initialSetup(), and ComputeLagrangianStressBase::initialSetup().
|
overrideprotectedvirtual |
Derive _large_kinematics from the strain calculator's LARGE_KINEMATICS guarantee.
Reimplemented in UpdatedLagrangianStressDivergenceBase< G >, UpdatedLagrangianStressDivergenceBase< G >, TotalLagrangianStressDivergenceBase< G >, TotalLagrangianStressDivergenceBase< G >, TotalLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
Definition at line 138 of file LagrangianStressDivergenceBase.C.
Referenced by TotalLagrangianStressDivergenceBase< G >::initialSetup(), and UpdatedLagrangianStressDivergenceBase< G >::initialSetup().
|
overrideprotectedvirtual |
Reimplemented in TotalLagrangianStressDivergenceBase< G >, and TotalLagrangianWeakPlaneStress.
Definition at line 161 of file LagrangianStressDivergenceBase.C.
Referenced by TotalLagrangianStressDivergenceBase< G >::precalculateJacobian().
|
protectedpure virtual |
Prepare the average shape function gradients for stabilization.
Implemented in UpdatedLagrangianStressDivergenceBase< G >, and TotalLagrangianStressDivergenceBase< G >.
Referenced by precalculateJacobian(), and precalculateOffDiagJacobian().
|
overrideprotectedvirtual |
Reimplemented in TotalLagrangianStressDivergenceBase< G >.
Definition at line 174 of file LagrangianStressDivergenceBase.C.
Referenced by TotalLagrangianStressDivergenceBase< G >::precalculateOffDiagJacobian().
|
static |
Definition at line 14 of file LagrangianStressDivergenceBase.C.
Referenced by TotalLagrangianStressDivergenceBase< G >::baseParams(), and UpdatedLagrangianStressDivergenceBase< G >::baseParams().
|
protected |
Which component of the vector residual this kernel is responsible for.
Definition at line 109 of file LagrangianStressDivergenceBase.h.
Referenced by computeQpJacobian(), computeQpOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeQpOffDiagJacobianScalar(), HomogenizedTotalLagrangianStressDivergence::computeScalarJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarResidual(), and precalculateJacobian().
|
protected |
Element-averaged spatial gradient of trial functions per component: _avg_grad_spatial_phi[component][j] = (1/V_x) int_e (grad_x phi_j)_component dV_x Populated alongside _avg_grad_spatial_test for the Jacobian's B-bar contribution.
Definition at line 134 of file LagrangianStressDivergenceBase.h.
|
protected |
Element-averaged spatial (deformed-frame) gradient of test functions for the kernel's component _alpha: _avg_grad_spatial_test[i] = (1/V_x) int_e (grad_x test_i)_alpha dV_x Used for OLD-compat B-bar volumetric correction in F_bar_mode = incremental.
Populated by the TL kernel's precalculateResidual / precalculateJacobian overrides when _stabilize_strain == true. The trial-function analog is published per (component, j) in _avg_grad_spatial_phi and used by the Jacobian.
Definition at line 129 of file LagrangianStressDivergenceBase.h.
|
protected |
Definition at line 120 of file LagrangianStressDivergenceBase.h.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian(), precalculateJacobian(), and precalculateOffDiagJacobian().
|
protected |
Element-averaged cross product (on displaced mesh) of spatial test/trial gradients: avg_test_phi_cross[b1][b2][i][j] = (1/V_x) int_e (grad_x test_i){b1} * (grad_x phi_j)_{b2} dV_x Indexed by [b1][b2] in {0,1,2}^2.
Only the (b1, b2) entries needed for the current Jacobian call are populated by the TL kernel's computeAvgTestPhiCross(beta) helper. Used for the B-bar Jacobian's non-local term (d(avg_grad_spatial_test)/dU).
Definition at line 141 of file LagrangianStressDivergenceBase.h.
|
protected |
Prepend to the material properties.
Definition at line 106 of file LagrangianStressDivergenceBase.h.
Referenced by initialSetup(), and LagrangianStressDivergenceBase().
|
protected |
Derivative of the spatial velocity gradient increment w.r.t. F_{n+1}.
Definition at line 177 of file LagrangianStressDivergenceBase.h.
|
protected |
Derivative of F_{n+1} w.r.t. the displacement gradient.
Definition at line 180 of file LagrangianStressDivergenceBase.h.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), and HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian().
|
protected |
Definition at line 190 of file LagrangianStressDivergenceBase.h.
Referenced by HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian().
|
protected |
Partials of the F-bar-stabilized deformation gradient.
Used by the UL kernel to assemble the F-bar Jacobian contribution. For F-bar off, _d_F_stab_d_F_ust = I^(4) and _d_F_stab_d_F_avg = 0, so the kernel chain reduces to the unstabilized case. TL also uses _d_F_stab_d_F_avg directly for the non-local F-bar Jacobian contribution to PK1 (since after the F_ust-wrap architectural change PK1 = det(F_ust) sigma F_ust^{-T} no longer contains the non-local F-bar effect – it has to enter through the sigma-via-dL chain explicitly).
Definition at line 189 of file LagrangianStressDivergenceBase.h.
Referenced by HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian().
|
protected |
Composed non-local F-bar operator D_nl = cauchy_jac : d(dL)/dF : d(F_stab)/d(F_avg), published per qp by the stress material (once per element, shared by all displacement kernels).
deltaPK1NonLocalFBar(deltaF_avg) collapses to one R4*R2 contraction against it. Fetched only when _stabilize_strain (nullptr otherwise).
Definition at line 212 of file LagrangianStressDivergenceBase.h.
Referenced by LagrangianStressDivergenceBase().
|
protected |
Derivative of the Cauchy stress with respect to the eigenstrain (published by ComputeLagrangianObjectiveStress; can be overridden by other Cauchy-providing materials).
Only fetched when eigenstrains are coupled, since only the temperature off-diagonal Jacobian needs it. Will be nullptr otherwise; subclasses that consume it must guard accordingly.
Definition at line 206 of file LagrangianStressDivergenceBase.h.
Referenced by LagrangianStressDivergenceBase().
|
protected |
Eigenstrain derivatives wrt generate coupleds.
Definition at line 199 of file LagrangianStressDivergenceBase.h.
Referenced by LagrangianStressDivergenceBase().
|
protected |
The displacement numbers.
Definition at line 115 of file LagrangianStressDivergenceBase.h.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), computeQpOffDiagJacobian(), LagrangianStressDivergenceBase(), and precalculateOffDiagJacobian().
|
protected |
The actual (stabilized) deformation gradient.
With the generalized midpoint rule this is the alpha-weighted F, NOT the literal F at n+1.
Definition at line 170 of file LagrangianStressDivergenceBase.h.
Referenced by HomogenizedTotalLagrangianStressDivergence::computeScalarResidual().
|
protected |
The literal deformation gradient at n+1 (I + grad u_{n+1}), independent of alpha and F-bar.
Used by the UL kernel to convert spatial gradients to reference-frame gradients.
Definition at line 174 of file LagrangianStressDivergenceBase.h.
|
protected |
The element-average deformation gradient.
Definition at line 152 of file LagrangianStressDivergenceBase.h.
|
protected |
What F gets F-bar volumetric correction (Total vs.
Incremental). Must match the strain calc's F_bar_mode. Incremental mode changes how _avg_grad_trial is computed so the non-local F-bar chain captures deltaf_avg (= avg of deltaF_ust * F_ust_old^{-1}) instead of deltaF_avg.
Definition at line 103 of file LagrangianStressDivergenceBase.h.
Referenced by UpdatedLagrangianStressDivergenceBase< G >::UpdatedLagrangianStressDivergenceBase().
|
protected |
The inverse increment deformation gradient.
Definition at line 155 of file LagrangianStressDivergenceBase.h.
|
protected |
The inverse deformation gradient.
Definition at line 158 of file LagrangianStressDivergenceBase.h.
|
protected |
The unmodified deformation gradient.
Definition at line 144 of file LagrangianStressDivergenceBase.h.
|
protected |
Definition at line 166 of file LagrangianStressDivergenceBase.h.
Referenced by deltaPK1NonLocalFBar(), and LagrangianStressDivergenceBase().
|
protected |
F_ust^{-1} and det(F_ust) from the strain calculator, consumed by the F-bar spatial push-forward (grad_x = F_ust^{-T} grad_X, J_ust = det F_ust) on both the residual and Jacobian sweeps.
Fetched only when _stabilize_strain (nullptr otherwise). The strain material computes them once per qp (shared by all displacement kernels), replacing the former per-kernel F_ust-inverse/det cache and the per-test/trial recomputation.
Definition at line 165 of file LagrangianStressDivergenceBase.h.
Referenced by LagrangianStressDivergenceBase().
|
protected |
Old unstabilized deformation gradient.
Only consulted in F_bar_mode = incremental for the kernel's element-average of grad_phi * F_ust_old^{-1}. Always fetched (cheap) so the kernel doesn't need conditional property bookkeeping.
Definition at line 149 of file LagrangianStressDivergenceBase.h.
|
protected |
If true use large deformation kinematics.
Derived in initialSetup() from the strain calculator's LARGE_KINEMATICS guarantee (single source of truth); the kernel's own large_kinematics parameter is deprecated.
Definition at line 95 of file LagrangianStressDivergenceBase.h.
Referenced by HomogenizedTotalLagrangianStressDivergence::computeScalarJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarResidual(), deltaPK1NonLocalFBar(), and initialSetup().
|
protected |
Total number of displacements/size of residual vector.
Definition at line 112 of file LagrangianStressDivergenceBase.h.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), computeQpOffDiagJacobian(), LagrangianStressDivergenceBase(), and precalculateOffDiagJacobian().
|
protected |
Out-of-plane strain, if provided.
Definition at line 196 of file LagrangianStressDivergenceBase.h.
Referenced by computeQpOffDiagJacobian(), and UpdatedLagrangianStressDivergenceBase< G >::UpdatedLagrangianStressDivergenceBase().
|
protected |
If true calculate the deformation gradient derivatives for F_bar.
Definition at line 98 of file LagrangianStressDivergenceBase.h.
Referenced by TotalLagrangianWeakPlaneStress::computeQpOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarOffDiagJacobian(), HomogenizedTotalLagrangianStressDivergence::computeScalarQpOffDiagJacobian(), deltaPK1NonLocalFBar(), LagrangianStressDivergenceBase(), precalculateJacobian(), precalculateOffDiagJacobian(), and UpdatedLagrangianStressDivergenceBase< G >::UpdatedLagrangianStressDivergenceBase().
|
protected |
Temperature, if provided. This is used only to get the trial functions.
Definition at line 193 of file LagrangianStressDivergenceBase.h.
Referenced by computeQpOffDiagJacobian().
1.8.14