Go to the documentation of this file.
14 #define usingADLAROMANCEStressUpdateBase \
15 usingRadialReturnCreepStressUpdateBaseMembers; \
16 using ADLAROMANCEStressUpdateBase<compute_stage>::getTransform; \
17 using ADLAROMANCEStressUpdateBase<compute_stage>::getTransformCoefs; \
18 using ADLAROMANCEStressUpdateBase<compute_stage>::getInputLimits; \
19 using ADLAROMANCEStressUpdateBase<compute_stage>::getCoefs
21 template <ComputeStage>
33 template <ComputeStage compute_stage>
47 const ADReal & scalar)
override;
50 const ADReal & )
override
81 const Real & mobile_dislocations_old,
82 const Real & immobile_dislocations_old,
83 const ADReal & trial_stress,
84 const Real & effective_strain_old,
86 const ADReal & environmental,
87 ADReal & mobile_dislocation_increment,
88 ADReal & immobile_dislocation_increment,
89 ADReal & rom_effective_strain,
90 ADReal & rom_effective_strain_derivative);
106 std::vector<std::vector<ADReal>> & converted,
107 std::vector<std::vector<ADReal>> & dconverted);
119 const std::vector<std::vector<ADReal>> & drom_inputs,
120 std::vector<std::vector<std::vector<ADReal>>> & polynomial_inputs,
121 std::vector<std::vector<std::vector<ADReal>>> & dpolynomial_inputs);
134 void computeValues(
const std::vector<std::vector<Real>> & coefs,
135 const std::vector<std::vector<std::vector<ADReal>>> & polynomial_inputs,
136 const std::vector<std::vector<std::vector<ADReal>>> & dpolynomial_inputs,
137 std::vector<ADReal> & rom_outputs,
138 std::vector<ADReal> & drom_outputs);
152 const std::vector<ADReal> & old_input_values,
153 const std::vector<ADReal> & rom_outputs,
154 const std::vector<ADReal> & drom_outputs,
155 std::vector<ADReal> & input_value_increments,
156 std::vector<ADReal> & dinput_value_increments);
166 computePolynomial(
const ADReal & value,
const unsigned int degree,
const bool derivative =
false);
184 virtual std::vector<std::vector<ROMInputTransform>>
getTransform() = 0;
208 virtual std::vector<std::vector<Real>>
getCoefs() = 0;
void computeROMStrainRate(const Real dt, const Real &mobile_dislocations_old, const Real &immobile_dislocations_old, const ADReal &trial_stress, const Real &effective_strain_old, const ADReal &temperature, const ADReal &environmental, ADReal &mobile_dislocation_increment, ADReal &immobile_dislocation_increment, ADReal &rom_effective_strain, ADReal &rom_effective_strain_derivative)
Computes the ROM Strain rate.
const Real _window
Window applied to input maximum and minimum values.
ADReal _immobile_dislocation_increment
Container for immobile dislocation increment.
void checkInputWindows(std::vector< ADReal > &input)
Function to check input values against applicability windows set by ROM data set.
const Real _initial_mobile_dislocations
Initial mobile dislocation value.
declareADValidParams(ADLAROMANCEStressUpdateBase)
Real _immobile_old
Container for old immobile dislocation value.
Real _mobile_old
Container for old mobile dislocation value.
virtual ADReal computeResidual(const ADReal &effective_trial_stress, const ADReal &scalar) override
Compute the residual for a predicted value of the scalar.
ADReal _mobile_dislocation_increment
Container for mobile dislocation increment.
const ADVariableValue & _environmental
Optionally coupled environmental factor.
const bool _extrapolate_stress
Flag to optinoally allow model extrapolation to zero stress.
const ADVariableValue & _temperature
Coupled temperature variable.
WindowFailure
Enum to error, warn, or ignore checks that ensure ROM input is within applicability window.
std::vector< std::vector< Real > > _transform_coefs
Transform coefficients defined by the ROM data set.
const Real _max_immobile_increment
Maximum immobile dislocation increment.
virtual std::vector< std::vector< Real > > getInputLimits()=0
ADMaterialProperty(Real) &_mobile_dislocations
Material properties for mobile (glissile) dislocation densities (1/m^2)
void convertOutput(const Real dt, const std::vector< ADReal > &old_input_values, const std::vector< ADReal > &rom_outputs, const std::vector< ADReal > &drom_outputs, std::vector< ADReal > &input_value_increments, std::vector< ADReal > &dinput_value_increments)
Computes the output variable increments from the ROM predictions by bringing out of the normalized ma...
enum ADLAROMANCEStressUpdateBase::WindowFailure _window_failure
const MaterialProperty< Real > & _mobile_dislocations_old
const Real _max_mobile_increment
Maximum mobile dislocation increment.
virtual void initQpStatefulProperties() override
const Function *const _mobile_function
Optional mobile dislocation forcing function.
ADReal _derivative
Container for derivative of creep rate with respect to strain.
virtual std::vector< std::vector< ROMInputTransform > > getTransform()=0
bool _use_env
Flag that checks if environmental factor is included in ROM data set.
const MaterialProperty< Real > & _immobile_dislocations_old
virtual ADReal computeDerivative(const ADReal &, const ADReal &) override
Compute the derivative of the residual as a function of the scalar variable.
virtual void initialSetup() override
std::vector< std::vector< ROMInputTransform > > _transform
Transform rules defined by the ROM data set.
const Function *const _creep_strain_old_forcing_function
Optional old creep strain forcing function.
unsigned int _degree
Legendre polynomial degree for the ROM data set.
ADLAROMANCEStressUpdateBase(const InputParameters ¶meters)
void computeValues(const std::vector< std::vector< Real >> &coefs, const std::vector< std::vector< std::vector< ADReal >>> &polynomial_inputs, const std::vector< std::vector< std::vector< ADReal >>> &dpolynomial_inputs, std::vector< ADReal > &rom_outputs, std::vector< ADReal > &drom_outputs)
Arranges the calculated Legendre polynomials into the order expected by the ROM coefficients and ulti...
usingRadialReturnCreepStressUpdateBaseMembers
std::vector< std::vector< unsigned int > > getMakeFrameHelper() const
void buildPolynomials(const std::vector< std::vector< ADReal >> &rom_inputs, const std::vector< std::vector< ADReal >> &drom_inputs, std::vector< std::vector< std::vector< ADReal >>> &polynomial_inputs, std::vector< std::vector< std::vector< ADReal >>> &dpolynomial_inputs)
Assemble the array of Legendre polynomials to be multiplied by the ROM coefficients.
std::vector< std::vector< Real > > _input_limits
Input limits defined by the ROM data set.
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
This class provides baseline functionallity for creep models based on the stress update material in a...
virtual std::vector< std::vector< Real > > getTransformCoefs()=0
std::vector< std::vector< unsigned int > > _makeframe_helper
Helper container defined by the ROM data set.
virtual std::vector< std::vector< Real > > getCoefs()=0
ADReal computePolynomial(const ADReal &value, const unsigned int degree, const bool derivative=false)
Calculate the value or derivative of Legendre polynomial up to 3rd order.
std::vector< std::vector< std::vector< Real > > > getTransformedLimits() const
const unsigned int _stress_index
Index corresponding to the position for the stress in the input vector.
std::vector< std::vector< Real > > _coefs
Coefficients used with Legendre polynomials defined by the ROM data set.
const std::string temperature
const Function *const _immobile_function
Optional immobile dislocation forcing function.
unsigned int _num_outputs
Number of inputs to the ROM data set.
virtual void computeStressFinalize(const ADRankTwoTensor &plastic_strain_increment) override
Perform any necessary steps to finalize state after return mapping iterations.
unsigned int _num_coefs
Total number of Legendre polynomial coefficients for the ROM data set.
void convertInput(const std::vector< ADReal > &input, std::vector< std::vector< ADReal >> &converted, std::vector< std::vector< ADReal >> &dconverted)
Convert the input variables into the form expected by the ROM Legendre polynomials to have a normaliz...
std::vector< std::vector< std::vector< Real > > > _transformed_limits
Limits transformed from readabile input to ROM readable limits.
MaterialProperty< Real > & _failed
Material property to indicate if material point is outside of input limits.
const bool _verbose
Flag to output verbose infromation.
static InputParameters validParams()
unsigned int _num_inputs
Number of inputs for the ROM data set.
const Real _initial_immobile_dislocations
Initial immobile dislocation value.