https://mooseframework.inl.gov
Loading...
Searching...
No Matches
TotalLagrangianStressDivergenceBase.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
13#include "GradientOperator.h"
14
26template <class G>
28{
29public:
33 virtual void initialSetup() override;
34
35protected:
36 virtual RankTwoTensor gradTest(unsigned int component) override;
37 virtual RankTwoTensor gradTrial(unsigned int component) override;
38 virtual void precalculateJacobianDisplacement(unsigned int component) override;
39 virtual void precalculateResidual() override;
40 virtual void precalculateJacobian() override;
41 virtual void precalculateOffDiagJacobian(unsigned int jvar) override;
42 virtual Real computeQpResidual() override;
43 virtual Real computeQpJacobianDisplacement(unsigned int alpha, unsigned int beta) override;
44 virtual Real computeQpJacobianTemperature(unsigned int cvar) override;
45 virtual Real computeQpJacobianOutOfPlaneStrain() override;
46
50
53 void computeAverageGradientSpatialPhi(unsigned int beta);
54
61 void computeAvgTestPhiCross(unsigned int beta);
62
65 Real gradXTestComponent(unsigned int component) const;
66
68 Real gradXPhiComponent(unsigned int component) const;
69
72
77
83
90
91protected:
95 virtual RankTwoTensor gradTrialUnstabilized(unsigned int component);
96
97private:
104 void populateLocalPK1Cache(unsigned int beta);
105
110
115 std::vector<std::vector<RankTwoTensor>> _dpk1_grad_trial_cache;
116
120 std::vector<std::vector<RankTwoTensor>> _grad_trial_cache;
121
127 std::vector<std::vector<RankTwoTensor>> _delta_PK1_NL_cache;
128
133 std::vector<std::vector<RankTwoTensor>> _dpk1_total_cache;
134
137 std::vector<Real> _pk1_ddot_F_ust;
138
142 std::vector<std::vector<Real>> _dA_dU_cache;
143};
Base class of the "Lagrangian" kernel system.
Enforce equilibrium with a total Lagrangian formulation.
std::vector< std::vector< RankTwoTensor > > _delta_PK1_NL_cache
Fully wrapped non-local F-bar contribution to deltaPK1 per (qp, j) for the current column: _d_nl_fbar...
std::vector< Real > _pk1_ddot_F_ust
pk1 : F_ust per qp for the B-bar volumetric correction (see cachePK1ContractionFUst).
void computeAvgTestPhiCross(unsigned int beta)
Compute element-averaged cross product (grad_x test_i)_{b1} * (grad_x phi_j)_{b2} for b1,...
virtual RankTwoTensor gradTrial(unsigned int component) override
virtual Real computeQpJacobianTemperature(unsigned int cvar) override
std::vector< std::vector< Real > > _dA_dU_cache
d(pk1 : F_ust)/dU per (qp, j) for the current column – the B-bar Jacobian's dA/dU term.
std::vector< std::vector< RankTwoTensor > > _grad_trial_cache
Cached gradTrialUnstabilized(beta) per (qp, j) for the current column.
std::vector< std::vector< RankTwoTensor > > _dpk1_grad_trial_cache
_dpk1_d_grad_u[qp] * gradTrial(beta) per (qp, j) for the current Jacobian column's beta.
void cachePK1ContractionFUst()
Cache pk1 : F_ust per qp (the J * tr(sigma) factor of the B-bar volumetric correction).
virtual RankTwoTensor gradTrialUnstabilized(unsigned int component)
The unstabilized trial function gradient.
virtual void precalculateOffDiagJacobian(unsigned int jvar) override
virtual void precalculateJacobianDisplacement(unsigned int component) override
Prepare the average shape function gradients for stabilization.
void computeAverageGradientSpatialTest()
Compute element-averaged spatial gradient of test functions for component _alpha, filling _avg_grad_s...
virtual RankTwoTensor gradTest(unsigned int component) override
const MaterialProperty< RankTwoTensor > & _pk1
The 1st Piola-Kirchhoff stress.
const MaterialProperty< RankFourTensor > & _dpk1_bypass_fbar
Variant of _dpk1 (= pk1_jacobian) computed WITHOUT the F-bar chain factor _d_F_stab_d_F_ust in the si...
void computeAverageGradientSpatialPhi(unsigned int beta)
Compute element-averaged spatial gradient of trial functions for component beta, filling _avg_grad_sp...
const MaterialProperty< RankFourTensor > & _dpk1_d_grad_u
The derivative of the PK1 stress with respect to the displacement gradient (grad u_{n+1}).
const MaterialProperty< RankFourTensor > & _dpk1
The derivative of the PK1 stress with respect to the deformation gradient (F that the stress material...
virtual Real computeQpJacobianDisplacement(unsigned int alpha, unsigned int beta) override
static InputParameters validParams()
Real gradXTestComponent(unsigned int component) const
(grad_x test_i)_component at the current _qp, where the push-forward uses the unstabilized F (= F_act...
Real gradXPhiComponent(unsigned int component) const
(grad_x phi_j)_component at the current _qp, same push-forward as gradXTestComponent.
void populateLocalPK1Cache(unsigned int beta)
Populate the per-(qp, j) caches consumed by computeQpJacobianDisplacement.
std::vector< std::vector< RankTwoTensor > > _dpk1_total_cache
Local + non-local PK1 derivative per (qp, j): _dpk1_grad_trial_cache + _delta_PK1_NL_cache.
virtual void initialSetup() override
Derive _large_kinematics from the strain calculator's LARGE_KINEMATICS guarantee.