www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
SS316HLAROMANCEStressUpdateTest< compute_stage > Class Template Reference

#include <SS316HLAROMANCEStressUpdateTest.h>

Inheritance diagram for SS316HLAROMANCEStressUpdateTest< compute_stage >:
[legend]

Public Member Functions

 SS316HLAROMANCEStressUpdateTest (const InputParameters &parameters)
 
virtual void updateState (ADRankTwoTensor &strain_increment, ADRankTwoTensor &inelastic_strain_increment, const ADRankTwoTensor &rotation_increment, ADRankTwoTensor &stress_new, const RankTwoTensor &stress_old, const ADRankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old) override
 A radial return (J2) mapping method is performed with return mapping iterations. More...
 
virtual Real computeReferenceResidual (const ADReal &effective_trial_stress, const ADReal &scalar_effective_inelastic_strain) override
 Compute a reference quantity to be used for checking relative convergence. More...
 
virtual ADReal minimumPermissibleValue (const ADReal &) const override
 Compute the minimum permissible value of the scalar. More...
 
virtual ADReal maximumPermissibleValue (const ADReal &effective_trial_stress) const override
 Compute the maximum permissible value of the scalar. More...
 
bool requiresIsotropicTensor () override
 Does the model require the elasticity tensor to be isotropic? More...
 
void setQp (unsigned int qp)
 Sets the value of the global variable _qp for inheriting classes. More...
 
void resetQpProperties () final
 Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten. More...
 
void resetProperties () final
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Types

enum  WindowFailure { WindowFailure::ERROR, WindowFailure::WARN, WindowFailure::IGNORE }
 Enum to error, warn, or ignore checks that ensure ROM input is within applicability window. More...
 

Protected Member Functions

virtual std::vector< std::vector< ROMInputTransform > > getTransform () override
 Returns vector of the functions to use for the conversion of input variables. More...
 
virtual std::vector< std::vector< Real > > getTransformCoefs () override
 Returns factors for the functions for the conversion functions given in getTransform. More...
 
virtual std::vector< std::vector< Real > > getInputLimits () override
 
virtual std::vector< std::vector< Real > > getCoefs () override
 Material specific coefficients multiplied by the Legendre polynomials for each of the input variables. More...
 
virtual void initialSetup () override
 
virtual void initQpStatefulProperties () override
 
virtual ADReal computeResidual (const ADReal &effective_trial_stress, const ADReal &scalar) override
 Compute the residual for a predicted value of the scalar. More...
 
virtual ADReal computeDerivative (const ADReal &, const ADReal &) override
 Compute the derivative of the residual as a function of the scalar variable. More...
 
virtual void computeStressFinalize (const ADRankTwoTensor &plastic_strain_increment) override
 Perform any necessary steps to finalize state after return mapping iterations. More...
 
virtual Real computeTimeStepLimit () override
 Compute the limiting value of the time step for this material. More...
 
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. More...
 
void checkInputWindows (std::vector< ADReal > &input)
 Function to check input values against applicability windows set by ROM data set. More...
 
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 normalized space from [-1, 1] so that every variable has equal weight. More...
 
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. More...
 
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 ultiplies the Legendre polynomials by the ROM coefficients to compute the the predicted output values. More...
 
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 map to the actual physical values. More...
 
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. More...
 
std::vector< std::vector< std::vector< Real > > > getTransformedLimits () const
 
std::vector< std::vector< unsigned int > > getMakeFrameHelper () const
 
 ADMaterialProperty (Real) &_creep_rate
 Creep rate material property. More...
 
 ADMaterialProperty (RankTwoTensor) &_creep_strain
 Creep strain material property. More...
 
virtual void propagateQpStatefulProperties () override
 If updateState is not called during a timestep, this will be. More...
 
void propagateQpStatefulPropertiesRadialReturn ()
 Propagate the properties pertaining to this intermediate class. More...
 
virtual void computeStressInitialize (const ADReal &, const ADRankFourTensor &)
 Perform any necessary initialization before return mapping iterations. More...
 
void outputIterationSummary (std::stringstream *iter_output, const unsigned int total_it) override
 Output summary information for the convergence history of the model. More...
 
void returnMappingSolve (const ADReal &effective_trial_stress, ADReal &scalar, const ConsoleStream &console)
 Perform the return mapping iterations. More...
 
virtual ADReal initialGuess (const ADReal &)
 Compute an initial guess for the value of the scalar. More...
 
virtual void iterationFinalize (ADReal)
 Finalize internal state variables for a model for a given iteration. More...
 
virtual void outputIterationStep (std::stringstream *iter_output, const ADReal &effective_trial_stress, const ADReal &scalar, const Real reference_residual)
 Output information for a single iteration step to build the convergence history of the model. More...
 
bool converged (const ADReal &residual, const Real reference)
 Check to see whether the residual is within the convergence limits. More...
 

Protected Attributes

 usingADLAROMANCEStressUpdateBase
 
const ADVariableValue & _temperature
 Coupled temperature variable. More...
 
const ADVariableValue & _environmental
 Optionally coupled environmental factor. More...
 
const Real _window
 Window applied to input maximum and minimum values. More...
 
enum ADLAROMANCEStressUpdateBase::WindowFailure _window_failure
 
const bool _extrapolate_stress
 Flag to optinoally allow model extrapolation to zero stress. More...
 
const bool _verbose
 Flag to output verbose infromation. More...
 
const Real _initial_mobile_dislocations
 Initial mobile dislocation value. More...
 
const Real _max_mobile_increment
 Maximum mobile dislocation increment. More...
 
const Function *const _mobile_function
 Optional mobile dislocation forcing function. More...
 
ADReal _mobile_dislocation_increment
 Container for mobile dislocation increment. More...
 
Real _mobile_old
 Container for old mobile dislocation value. More...
 
const Real _initial_immobile_dislocations
 Initial immobile dislocation value. More...
 
const Real _max_immobile_increment
 Maximum immobile dislocation increment. More...
 
const Function *const _immobile_function
 Optional immobile dislocation forcing function. More...
 
ADReal _immobile_dislocation_increment
 Container for immobile dislocation increment. More...
 
Real _immobile_old
 Container for old immobile dislocation value. More...
 
const unsigned int _stress_index
 Index corresponding to the position for the stress in the input vector. More...
 
const Function *const _creep_strain_old_forcing_function
 Optional old creep strain forcing function. More...
 
unsigned int _num_inputs
 Number of inputs for the ROM data set. More...
 
unsigned int _num_outputs
 Number of inputs to the ROM data set. More...
 
unsigned int _degree
 Legendre polynomial degree for the ROM data set. More...
 
unsigned int _num_coefs
 Total number of Legendre polynomial coefficients for the ROM data set. More...
 
std::vector< std::vector< ROMInputTransform > > _transform
 Transform rules defined by the ROM data set. More...
 
std::vector< std::vector< Real > > _transform_coefs
 Transform coefficients defined by the ROM data set. More...
 
std::vector< std::vector< Real > > _input_limits
 Input limits defined by the ROM data set. More...
 
std::vector< std::vector< Real > > _coefs
 Coefficients used with Legendre polynomials defined by the ROM data set. More...
 
bool _use_env
 Flag that checks if environmental factor is included in ROM data set. More...
 
std::vector< std::vector< std::vector< Real > > > _transformed_limits
 Limits transformed from readabile input to ROM readable limits. More...
 
std::vector< std::vector< unsigned int > > _makeframe_helper
 Helper container defined by the ROM data set. More...
 
MaterialProperty< Real > & _failed
 Material property to indicate if material point is outside of input limits. More...
 
ADReal _derivative
 Container for derivative of creep rate with respect to strain. More...
 
 usingRadialReturnCreepStressUpdateBaseMembers
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 
 usingRadialReturnStressUpdateMembers
 
ADReal _three_shear_modulus
 3 * shear modulus More...
 
const MaterialProperty< Real > & _effective_inelastic_strain_old
 
Real _max_inelastic_increment
 
const bool _apply_strain
 
 usingStressUpdateBaseMembers
 
 usingSingleVariableReturnMappingSolutionMembers
 
const std::string _base_name
 Name used as a prefix for all material properties related to the stress update model. More...
 
 usingMaterialMembers
 
bool _check_range
 Whether to check to see whether iterative solution is within admissible range, and set within that range if outside. More...
 
bool _line_search
 Whether to use line searches to improve convergence. More...
 
bool _bracket_solution
 Whether to save upper and lower bounds of root for scalar, and set solution to the midpoint between those bounds if outside them. More...
 

Private Types

enum  InternalSolveOutput { InternalSolveOutput::NEVER, InternalSolveOutput::ON_ERROR, InternalSolveOutput::ALWAYS }
 
enum  SolveState { SolveState::SUCCESS, SolveState::NAN_INF, SolveState::EXCEEDED_ITERATIONS }
 

Private Member Functions

SolveState internalSolve (const ADReal effective_trial_stress, ADReal &scalar, std::stringstream *iter_output=nullptr)
 Method called from within this class to perform the actual return mappping iterations. More...
 
bool convergedAcceptable (const unsigned int it, const Real reference)
 Check to see whether the residual is within acceptable convergence limits. More...
 
void checkPermissibleRange (ADReal &scalar, ADReal &scalar_increment, const ADReal &scalar_old, const ADReal min_permissible_scalar, const ADReal max_permissible_scalar, std::stringstream *iter_output)
 Check to see whether solution is within admissible range, and set it within that range if it is not. More...
 
void updateBounds (const ADReal &scalar, const ADReal &residual, const Real init_resid_sign, ADReal &scalar_upper_bound, ADReal &scalar_lower_bound, std::stringstream *iter_output)
 Update the upper and lower bounds of the root for the effective inelastic strain. More...
 

Private Attributes

enum ADSingleVariableReturnMappingSolution::InternalSolveOutput _internal_solve_output_on
 
const unsigned int _max_its
 Maximum number of return mapping iterations. More...
 
const bool _internal_solve_full_iteration_history
 Whether to output iteration information all the time (regardless of whether iterations converge) More...
 
Real _relative_tolerance
 Relative convergence tolerance. More...
 
Real _absolute_tolerance
 Absolute convergence tolerance. More...
 
Real _acceptable_multiplier
 Multiplier applied to relative and absolute tolerances for acceptable convergence. More...
 
const std::size_t _num_resids
 Number of residuals to be stored in history. More...
 
std::vector< Real > _residual_history
 History of residuals used to check whether progress is still being made on decreasing the residual. More...
 
unsigned int _iteration
 iteration number More...
 
const std::string _svrms_name
 MOOSE input name of the object performing the solve. More...
 
ADReal _initial_residual
 Residual values, kept as members to retain solver state for summary outputting. More...
 
ADReal _residual
 
const MaterialProperty< Real > & _mobile_dislocations_old
 
 ADMaterialProperty (Real) &_mobile_dislocations
 Material properties for mobile (glissile) dislocation densities (1/m^2) More...
 
const MaterialProperty< Real > & _immobile_dislocations_old
 
 ADMaterialProperty (Real) &_immobile_dislocations
 Material properties for immobile (locked) dislocation densities (1/m^2) More...
 

Detailed Description

template<ComputeStage compute_stage>
class SS316HLAROMANCEStressUpdateTest< compute_stage >

Definition at line 15 of file SS316HLAROMANCEStressUpdateTest.h.

Member Enumeration Documentation

◆ InternalSolveOutput

template<ComputeStage compute_stage>
enum ADSingleVariableReturnMappingSolution::InternalSolveOutput
strongprivateinherited
Enumerator
NEVER 
ON_ERROR 
ALWAYS 

Definition at line 156 of file ADSingleVariableReturnMappingSolution.h.

157  {
158  NEVER,
159  ON_ERROR,
160  ALWAYS

◆ SolveState

template<ComputeStage compute_stage>
enum ADSingleVariableReturnMappingSolution::SolveState
strongprivateinherited
Enumerator
SUCCESS 
NAN_INF 
EXCEEDED_ITERATIONS 

Definition at line 163 of file ADSingleVariableReturnMappingSolution.h.

164  {
165  SUCCESS,
166  NAN_INF,
167  EXCEEDED_ITERATIONS
168  };

◆ WindowFailure

template<ComputeStage compute_stage>
enum ADLAROMANCEStressUpdateBase::WindowFailure
strongprotectedinherited

Enum to error, warn, or ignore checks that ensure ROM input is within applicability window.

Enumerator
ERROR 
WARN 
IGNORE 

Definition at line 220 of file ADLAROMANCEStressUpdateBase.h.

220 { ERROR, WARN, IGNORE } _window_failure;

Constructor & Destructor Documentation

◆ SS316HLAROMANCEStressUpdateTest()

template<ComputeStage compute_stage>
SS316HLAROMANCEStressUpdateTest< compute_stage >::SS316HLAROMANCEStressUpdateTest ( const InputParameters &  parameters)

Definition at line 48 of file SS316HLAROMANCEStressUpdateTest.C.

51 {
52 }

Member Function Documentation

◆ ADMaterialProperty() [1/4]

template<ComputeStage compute_stage>
ADRadialReturnCreepStressUpdateBase< compute_stage >::ADMaterialProperty ( RankTwoTensor  ) &
protectedinherited

Creep strain material property.

◆ ADMaterialProperty() [2/4]

template<ComputeStage compute_stage>
ADLAROMANCEStressUpdateBase< compute_stage >::ADMaterialProperty ( Real  ) &
protectedinherited

Creep rate material property.

◆ ADMaterialProperty() [3/4]

template<ComputeStage compute_stage>
ADLAROMANCEStressUpdateBase< compute_stage >::ADMaterialProperty ( Real  ) &
protectedinherited

Material properties for immobile (locked) dislocation densities (1/m^2)

◆ ADMaterialProperty() [4/4]

template<ComputeStage compute_stage>
ADLAROMANCEStressUpdateBase< compute_stage >::ADMaterialProperty ( Real  ) &
protectedinherited

Material properties for mobile (glissile) dislocation densities (1/m^2)

◆ buildPolynomials()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::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 
)
protectedinherited

Assemble the array of Legendre polynomials to be multiplied by the ROM coefficients.

Parameters
rom_inputsVector of converted input values
drom_inputsVector of derivative of converted input values with respect to stress
polynomial_inputsVector of Legendre polynomial transformation
dpolynomial_inputsVector of derivative of Legendre polynomial transformation with respect to stress

Definition at line 451 of file ADLAROMANCEStressUpdateBase.C.

456 {
457  for (unsigned int i = 0; i < _num_outputs; ++i)
458  {
459  for (unsigned int j = 0; j < _num_inputs; ++j)
460  {
461  for (unsigned int k = 0; k < _degree; ++k)
462  {
463  polynomial_inputs[i][j][k] = computePolynomial(rom_inputs[i][j], k);
464 
465  if (j != _stress_index)
466  dpolynomial_inputs[i][j][k] = 0.0;
467  else
468  {
469  // This is not the true derivative, but rather an optimization for computeValues
470  dpolynomial_inputs[i][j][k] = drom_inputs[i][j] *
471  computePolynomial(rom_inputs[i][j], k, true) /
472  polynomial_inputs[i][j][k];
473  }
474  }
475  }
476  }
477 }

◆ checkInputWindows()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::checkInputWindows ( std::vector< ADReal > &  input)
protectedinherited

Function to check input values against applicability windows set by ROM data set.

Parameters
inputVector of input values

Definition at line 360 of file ADLAROMANCEStressUpdateBase.C.

361 {
362  if (compute_stage != RESIDUAL)
363  return;
364 
365  _failed[_qp] = 0.0;
366  for (unsigned int i = 0; i < _num_outputs; ++i)
367  {
368  for (unsigned int j = 0; j < _num_inputs; ++j)
369  {
370  Real high_limit = _input_limits[j][1] * _window;
371  Real low_limit = _input_limits[j][0] * (2.0 - _window);
373  low_limit = 0.0;
374  if (input[j] < low_limit || input[j] > high_limit)
375  {
376  _failed[_qp] += (j + 1) * (j + 1);
378  mooseWarning("In ",
379  _name,
380  ": input parameter number input=",
381  j,
382  " output=",
383  i,
384  " with value (",
385  input[j],
386  ") is out of range (",
387  _input_limits[j][0],
388  " - ",
389  _input_limits[j][1],
390  "), window (",
391  _window,
392  ")");
394  mooseError("In ",
395  _name,
396  ": input parameter number input=",
397  j,
398  " output=",
399  i,
400  " with value (",
401  input[j],
402  ") is out of range (",
403  _input_limits[j][0],
404  " - ",
405  _input_limits[j][1],
406  "), window (",
407  _window,
408  ")");
409  }
410  }
411  }
412 }

◆ checkPermissibleRange()

template<ComputeStage compute_stage>
void ADSingleVariableReturnMappingSolution< compute_stage >::checkPermissibleRange ( ADReal &  scalar,
ADReal &  scalar_increment,
const ADReal &  scalar_old,
const ADReal  min_permissible_scalar,
const ADReal  max_permissible_scalar,
std::stringstream *  iter_output 
)
privateinherited

Check to see whether solution is within admissible range, and set it within that range if it is not.

Parameters
scalarCurrent value of the inelastic strain increment
scalar_incrementIncremental change in scalar from the previous iteration
scalar_oldPrevious value of scalar
min_permissible_scalarMinimum permissible value of scalar
max_permissible_scalarMaximum permissible value of scalar
iter_outputOutput stream

Definition at line 334 of file ADSingleVariableReturnMappingSolution.C.

341 {
342  if (scalar > max_permissible_scalar)
343  {
344  scalar_increment = (max_permissible_scalar - scalar_old) / 2.0;
345  scalar = scalar_old + scalar_increment;
346  if (iter_output)
347  *iter_output << "Scalar greater than maximum ("
348  << MetaPhysicL::raw_value(max_permissible_scalar)
349  << ") adjusted scalar=" << MetaPhysicL::raw_value(scalar)
350  << " scalar_increment=" << MetaPhysicL::raw_value(scalar_increment) << std::endl;
351  }
352  else if (scalar < min_permissible_scalar)
353  {
354  scalar_increment = (min_permissible_scalar - scalar_old) / 2.0;
355  scalar = scalar_old + scalar_increment;
356  if (iter_output)
357  *iter_output << "Scalar less than minimum (" << MetaPhysicL::raw_value(min_permissible_scalar)
358  << ") adjusted scalar=" << MetaPhysicL::raw_value(scalar)
359  << " scalar_increment=" << MetaPhysicL::raw_value(scalar_increment) << std::endl;
360  }
361 }

◆ computeDerivative()

template<ComputeStage compute_stage>
virtual ADReal ADLAROMANCEStressUpdateBase< compute_stage >::computeDerivative ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
inlineoverrideprotectedvirtualinherited

Compute the derivative of the residual as a function of the scalar variable.

The residual should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 49 of file ADLAROMANCEStressUpdateBase.h.

51  {
52  return _derivative;
53  }

◆ computePolynomial()

template<ComputeStage compute_stage>
ADReal ADLAROMANCEStressUpdateBase< compute_stage >::computePolynomial ( const ADReal &  value,
const unsigned int  degree,
const bool  derivative = false 
)
protectedinherited

Calculate the value or derivative of Legendre polynomial up to 3rd order.

Parameters
valueInput to Legendre polynomial
degreeDegree of Legendre polynomial
derivativeFlag to return derivative of Legendre polynomial Legendre
Returns
Computed value from Legendre polynomial

Definition at line 535 of file ADLAROMANCEStressUpdateBase.C.

538 {
539  if (degree == 0)
540  {
541  if (derivative)
542  return 0.0;
543  return 1.0;
544  }
545  else if (degree == 1)
546  {
547  if (derivative)
548  return 1.0;
549  return value;
550  }
551  else if (degree == 2)
552  {
553  if (derivative)
554  return 3.0 * value;
555  return 1.5 * Utility::pow<2>(value) - 0.5;
556  }
557  else
558  {
559  if (derivative)
560  return 7.5 * Utility::pow<2>(value) - 1.5;
561  return 2.5 * Utility::pow<3>(value) - 1.5 * value;
562  }
563 }

◆ computeReferenceResidual()

template<ComputeStage compute_stage>
Real ADRadialReturnStressUpdate< compute_stage >::computeReferenceResidual ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
overridevirtualinherited

Compute a reference quantity to be used for checking relative convergence.

This should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 124 of file ADRadialReturnStressUpdate.C.

126 {
127  return MetaPhysicL::raw_value(effective_trial_stress / _three_shear_modulus) -
128  MetaPhysicL::raw_value(scalar_effective_inelastic_strain);
129 }

◆ computeResidual()

template<ComputeStage compute_stage>
ADReal ADLAROMANCEStressUpdateBase< compute_stage >::computeResidual ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
overrideprotectedvirtualinherited

Compute the residual for a predicted value of the scalar.

This residual should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 180 of file ADLAROMANCEStressUpdateBase.C.

182 {
183  if (_immobile_function)
184  _immobile_old = _immobile_function->value(_t, _q_point[_qp]);
185  else
187 
188  if (_mobile_function)
189  _mobile_old = _mobile_function->value(_t, _q_point[_qp]);
190  else
192 
193  const ADReal trial_stress_mpa = (effective_trial_stress - _three_shear_modulus * scalar) * 1.0e-6;
194 
195  if (trial_stress_mpa < 0.0)
196  mooseException("In ",
197  _name,
198  ": previously calculated scalar (",
199  MetaPhysicL::raw_value(scalar),
200  ") is too high resulting in a negative trial stress (",
201  MetaPhysicL::raw_value(trial_stress_mpa),
202  "). Cutting timestep.");
203 
204  Real effective_strain_old;
206  effective_strain_old = _creep_strain_old_forcing_function->value(_t, _q_point[_qp]);
207  else
208  effective_strain_old =
209  std::sqrt(_creep_strain_old[_qp].doubleContraction(_creep_strain_old[_qp]) / 1.5);
210 
211  ADReal rom_effective_strain = 0.0;
212  ADReal derivative_rom_effective_strain = 0.0;
213 
215  _mobile_old,
217  trial_stress_mpa,
218  effective_strain_old,
219  _temperature[_qp],
220  _environmental[_qp],
223  rom_effective_strain,
224  derivative_rom_effective_strain);
225 
226  if (_verbose && compute_stage == RESIDUAL)
227  {
228  Moose::out << "Verbose information from " << _name << ": \n";
229  Moose::out << " dt: " << _dt << "\n";
230  Moose::out << " old mobile disl: " << _mobile_old << "\n";
231  Moose::out << " old immobile disl: " << _immobile_old << "\n";
232  Moose::out << " initial stress (MPa): " << effective_trial_stress * 1.0e-6 << "\n";
233  Moose::out << " temperature: " << _temperature[_qp] << "\n";
234  Moose::out << " environmental factor: " << _environmental[_qp] << "\n";
235  Moose::out << " calculated scalar strain value: " << scalar << "\n";
236  Moose::out << " trial stress into rom (MPa): " << trial_stress_mpa << "\n";
237  Moose::out << " old effective strain: " << effective_strain_old << "\n";
238  Moose::out << " ROM outputs \n";
239  Moose::out << " effective incremental strain from rom: " << rom_effective_strain << "\n";
240  Moose::out << " new effective strain: " << effective_strain_old + rom_effective_strain << "\n";
241  Moose::out << " new mobile dislocations: " << _mobile_old + _mobile_dislocation_increment
242  << "\n";
243  Moose::out << " new immobile dislocations: " << _immobile_old + _immobile_dislocation_increment
244  << "\n"
245  << std::endl;
246  }
247 
248  _creep_rate[_qp] = rom_effective_strain / _dt;
249  _derivative = derivative_rom_effective_strain * -_three_shear_modulus * 1.0e-6 - 1.0;
250 
251  return rom_effective_strain - scalar;
252 }

◆ computeROMStrainRate()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::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 
)
protectedinherited

Computes the ROM Strain rate.

Parameters
dtTimestep size
mobile_dislocations_oldMobile dislocation density from previous timestep
immobile_dislocations_oldImmobile dislocation density from previous timestep
trial_stressTrial stress from radial return method
effective_strain_oldEffective strain from the previous timestep
temperatureTemperature variable value
environmentalEnvironmental variable value
mobile_dislocation_incrementMobile dislocation density incremental change
immobile_dislocation_incrementImmobile dislocation density incremental change
rom_effective_strainROM calculated effective strain
rom_effective_strain_derivativeDerivative of ROM calculated effective strain with respect to stress

Definition at line 301 of file ADLAROMANCEStressUpdateBase.C.

313 {
314  // Prepare input
315  std::vector<ADReal> input_values = {mobile_dislocations_old,
316  immobile_dislocations_old,
317  trial_stress,
318  effective_strain_old,
319  temperature};
320  if (_use_env)
321  input_values.push_back(environmental);
322 
323  std::vector<std::vector<ADReal>> rom_inputs(_num_outputs, std::vector<ADReal>(_num_inputs));
324  std::vector<std::vector<ADReal>> drom_inputs(_num_outputs, std::vector<ADReal>(_num_inputs));
325 
326  checkInputWindows(input_values);
327  convertInput(input_values, rom_inputs, drom_inputs);
328 
329  std::vector<ADReal> old_input_values = {
330  mobile_dislocations_old, immobile_dislocations_old, effective_strain_old};
331 
332  std::vector<std::vector<std::vector<ADReal>>> polynomial_inputs(
333  _num_outputs, std::vector<std::vector<ADReal>>(_num_inputs, std::vector<ADReal>(_degree)));
334  std::vector<ADReal> rom_outputs(_num_outputs);
335  std::vector<ADReal> input_value_increments(_num_outputs);
336 
337  std::vector<std::vector<std::vector<ADReal>>> dpolynomial_inputs(
338  _num_outputs, std::vector<std::vector<ADReal>>(_num_inputs, std::vector<ADReal>(_degree)));
339  std::vector<ADReal> drom_outputs(_num_outputs);
340  std::vector<ADReal> dinput_value_increments(_num_outputs);
341 
342  buildPolynomials(rom_inputs, drom_inputs, polynomial_inputs, dpolynomial_inputs);
343  computeValues(_coefs, polynomial_inputs, dpolynomial_inputs, rom_outputs, drom_outputs);
344  convertOutput(dt,
345  old_input_values,
346  rom_outputs,
347  drom_outputs,
348  input_value_increments,
349  dinput_value_increments);
350 
351  mobile_dislocation_increment = input_value_increments[0];
352  immobile_dislocation_increment = input_value_increments[1];
353  rom_effective_strain = input_value_increments[2];
354 
355  rom_effective_strain_derivative = dinput_value_increments[2];
356 }

◆ computeStressFinalize()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::computeStressFinalize ( const ADRankTwoTensor &  )
overrideprotectedvirtualinherited

Perform any necessary steps to finalize state after return mapping iterations.

Parameters
inelasticStrainIncrementInelastic strain increment

Reimplemented from ADRadialReturnCreepStressUpdateBase< compute_stage >.

Definition at line 256 of file ADLAROMANCEStressUpdateBase.C.

258 {
259  _mobile_dislocations[_qp] = _mobile_old + _mobile_dislocation_increment;
260  _immobile_dislocations[_qp] = _immobile_old + _immobile_dislocation_increment;
261 
262  if (_verbose && compute_stage == RESIDUAL)
263  {
264  Moose::out << "Finalized verbose information from " << _name << "\n";
265  Moose::out << " increment effective creep strain: "
266  << std::sqrt(2.0 / 3.0 *
267  plastic_strain_increment.doubleContraction(plastic_strain_increment))
268  << "\n";
269  Moose::out << " effective_creep_strain: "
270  << std::sqrt(2.0 / 3.0 * _creep_strain[_qp].doubleContraction(_creep_strain[_qp]))
271  << "\n";
272  Moose::out << " new mobile dislocations: " << _mobile_dislocations[_qp] << "\n";
273  Moose::out << " new immobile dislocations: " << _immobile_dislocations[_qp] << "\n"
274  << std::endl;
275  }
276 
278  plastic_strain_increment);
279 }

◆ computeStressInitialize()

template<ComputeStage compute_stage>
virtual void ADRadialReturnStressUpdate< compute_stage >::computeStressInitialize ( const ADReal &  ,
const ADRankFourTensor &   
)
inlineprotectedvirtualinherited

Perform any necessary initialization before return mapping iterations.

Parameters
effective_trial_stressEffective trial stress
elasticityTensorElasticity tensor

Reimplemented in ADIsotropicPlasticityStressUpdate< compute_stage >, and ADPowerLawCreepStressUpdate< compute_stage >.

Definition at line 109 of file ADRadialReturnStressUpdate.h.

111  {
112  }

◆ computeTimeStepLimit()

template<ComputeStage compute_stage>
Real ADLAROMANCEStressUpdateBase< compute_stage >::computeTimeStepLimit ( )
overrideprotectedvirtualinherited

Compute the limiting value of the time step for this material.

Returns
Limiting time step

Reimplemented from ADRadialReturnStressUpdate< compute_stage >.

Definition at line 283 of file ADLAROMANCEStressUpdateBase.C.

284 {
286 
287  Real mobile_strain_inc = std::abs(MetaPhysicL::raw_value(_mobile_dislocation_increment));
288  if (mobile_strain_inc && _mobile_old)
289  limited_dt =
290  std::min(limited_dt, _dt * _max_mobile_increment * _mobile_old / mobile_strain_inc);
291  Real immobile_strain_inc = std::abs(MetaPhysicL::raw_value(_immobile_dislocation_increment));
292  if (immobile_strain_inc && _immobile_old)
293  limited_dt =
294  std::min(limited_dt, _dt * _max_immobile_increment * _immobile_old / immobile_strain_inc);
295 
296  return limited_dt;
297 }

◆ computeValues()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::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 
)
protectedinherited

Arranges the calculated Legendre polynomials into the order expected by the ROM coefficients and ultiplies the Legendre polynomials by the ROM coefficients to compute the the predicted output values.

Parameters
coefsLegendre polynomials
polynomial_inputsVector of Legendre polynomial transformation
dpolynomial_inputsVector of derivative of Legendre polynomial transformation with respect to stress
rom_outputsOutputs from ROM
drom_outputsDerivative of outputs from ROM with respect to stress

Definition at line 481 of file ADLAROMANCEStressUpdateBase.C.

487 {
488  for (unsigned int i = 0; i < _num_outputs; ++i)
489  {
490  rom_outputs[i] = 0.0;
491  drom_outputs[i] = 0.0;
492  for (unsigned int j = 0; j < _num_coefs; ++j)
493  {
494  ADReal xvals = coefs[i][j];
495  ADReal dxvals = 0.0;
496  for (unsigned int k = 0; k < _num_inputs; ++k)
497  {
498  xvals *= polynomial_inputs[i][k][_makeframe_helper[j][k]];
499  dxvals += dpolynomial_inputs[i][k][_makeframe_helper[j][k]];
500  }
501 
502  rom_outputs[i] += xvals;
503  drom_outputs[i] += dxvals * xvals;
504  }
505  }
506 }

◆ converged()

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::converged ( const ADReal &  residual,
const Real  reference 
)
protectedinherited

Check to see whether the residual is within the convergence limits.

Parameters
residualCurrent value of the residual
referenceCurrent value of the reference quantity
Returns
Whether the model converged

Definition at line 301 of file ADSingleVariableReturnMappingSolution.C.

303 {
304  const Real residual = MetaPhysicL::raw_value(ad_residual);
305  return (std::abs(residual) <= _absolute_tolerance ||
306  std::abs(residual / reference) <= _relative_tolerance);
307 }

◆ convergedAcceptable()

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::convergedAcceptable ( const unsigned int  it,
const Real  reference 
)
privateinherited

Check to see whether the residual is within acceptable convergence limits.

This will only return true if it has been determined that progress is no longer being made and that the residual is within the acceptable limits.

Parameters
residualCurrent iteration count
residualCurrent value of the residual
referenceCurrent value of the reference quantity
Returns
Whether the model converged

Definition at line 311 of file ADSingleVariableReturnMappingSolution.C.

313 {
314  // Require that we have at least done _num_resids evaluations before we allow for
315  // acceptable convergence
316  if (it < _num_resids)
317  return false;
318 
319  // Check to see whether the residual has dropped by convergence_history_factor over
320  // the last _num_resids iterations. If it has (which means it's still making progress),
321  // don't consider it to be converged within the acceptable limits.
322  const Real convergence_history_factor = 10.0;
323  if (std::abs(_residual * convergence_history_factor) <
324  std::abs(_residual_history[(it + 1) % _num_resids]))
325  return false;
326 
327  // Now that it's determined that progress is not being made, treat it as converged if
328  // we're within the acceptable convergence limits
329  return converged(_residual / _acceptable_multiplier, reference);
330 }

◆ convertInput()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::convertInput ( const std::vector< ADReal > &  input,
std::vector< std::vector< ADReal >> &  converted,
std::vector< std::vector< ADReal >> &  dconverted 
)
protectedinherited

Convert the input variables into the form expected by the ROM Legendre polynomials to have a normalized space from [-1, 1] so that every variable has equal weight.

Parameters
inputVector of input values
convertedVector of converted input values
dconvertedVector of derivative of converted input values with respect to stress

Definition at line 416 of file ADLAROMANCEStressUpdateBase.C.

420 {
421  for (unsigned int i = 0; i < _num_outputs; ++i)
422  {
423  for (unsigned int j = 0; j < _num_inputs; ++j)
424  {
425  ADReal x = input[j];
426  ADReal dx = 1.0;
427  if (_transform[i][j] == ROMInputTransform::EXP)
428  {
429  x = std::exp(x / _transform_coefs[i][j]);
430  dx = x / _transform_coefs[i][j];
431  }
432  else if (_transform[i][j] == ROMInputTransform::LOG)
433  {
434  dx = 1.0 / (x + _transform_coefs[i][j]);
435  x = std::log(x + _transform_coefs[i][j]);
436  }
437 
438  converted[i][j] = 2.0 * (x - _transformed_limits[i][j][0]) /
439  (_transformed_limits[i][j][1] - _transformed_limits[i][j][0]) -
440  1.0;
441  if (j == _stress_index)
442  dconverted[i][j] = dx * 2.0 / (_transformed_limits[i][j][1] - _transformed_limits[i][j][0]);
443  else
444  dconverted[i][j] = 0.0;
445  }
446  }
447 }

◆ convertOutput()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::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 
)
protectedinherited

Computes the output variable increments from the ROM predictions by bringing out of the normalized map to the actual physical values.

Parameters
dtTimestep size
old_input_valuesPrevious timestep values of ROM inputs
rom_outputsOutputs from ROM
drom_outputsDerivative of outputs from ROM with respect to stress
input_value_incrementsIncremental change of input values
input_value_incrementsDerivative of the incremental change of input values with respect to stress

Definition at line 510 of file ADLAROMANCEStressUpdateBase.C.

517 {
518  for (unsigned int i = 0; i < _num_outputs; ++i)
519  {
520  input_value_increments[i] = std::exp(rom_outputs[i]) * dt;
521  if (i == 0 || i == 1)
522  {
523  dinput_value_increments[i] = 0.0;
524  input_value_increments[i] *= old_input_values[i];
525  if (i == 0)
526  input_value_increments[i] *= -1.0;
527  }
528  else
529  dinput_value_increments[i] = input_value_increments[i] * drom_outputs[i];
530  }
531 }

◆ getCoefs()

template<ComputeStage compute_stage>
std::vector< std::vector< Real > > SS316HLAROMANCEStressUpdateTest< compute_stage >::getCoefs ( )
overrideprotectedvirtual

Material specific coefficients multiplied by the Legendre polynomials for each of the input variables.

Implements ADLAROMANCEStressUpdateBase< compute_stage >.

Definition at line 96 of file SS316HLAROMANCEStressUpdateTest.C.

97 {
98  return {
99  {-16.438661699503427, 4.591731583001092, 0.6746168063837104, 0.24145810486515984,
100  -0.3061415135744028, 1.1520223218249157, -0.7482454887940548, -0.35697843303205445,
101  -0.10892499973124359, 0.18576851376565173, -0.5455435494659469, -0.005150534561835229,
102  -0.0018255797767778859, -0.36846812967269216, 0.39981632646231446, -0.5914489006827353,
103  2.6105207372747827, -4.162396156461909, 2.9830076699727215, -2.0651905453996733,
104  0.8178037378529552, -0.8935574453789741, 0.14191078394651413, 1.0087656800169498,
105  0.9148366450972389, -1.7884798716986552, 1.8722211043350399, -0.554159507912118,
106  -0.6130399298126576, 2.2199783255928196, -1.944289448467316, 1.6657523375179153,
107  -0.7090939737099689, 2.683483359811362, -1.4418936478032265, 1.3981021284416784,
108  -0.8101765798346605, 1.637313275190536, -0.6788737987517379, 0.15704832592746243,
109  -0.6868357755010948, 1.1015732048545033, -1.257472909608623, 0.0016568210266996175,
110  1.1388481249668985, -3.5513336178846657, 2.5810739023290807, -1.9925732275660266,
111  0.09967219091413426, -0.5090324656630401, 0.08586794656002894, -0.2369516071266844,
112  0.39505866144099855, -1.178011699928902, 0.5585766288277227, -0.5887810261338018,
113  -0.08253134726692224, 0.31248471059370786, -0.17237575208127964, 0.3478394058183767,
114  -0.24838300853662076, 1.0756300490320427, -0.6220570431323722, 0.7352770065781442,
115  -1.401044808269944, 1.7282406276790425, -1.320066831249278, 0.9202801920473576,
116  -1.3475605036364868, 2.030567109817639, -0.9203246659017168, -1.0081675613764673,
117  -0.6927761067054234, 1.1159133903565817, -1.6355387460789643, 0.26469466369599104,
118  -0.2714495908730896, -0.2546546035737265, 0.4855006278230576, -1.124970254561049,
119  3.969945315067889, -10.716007331269793, 7.746271558105946, -4.7077085436321795,
120  1.3480348995071836, -1.2052506753243506, -0.08249302604235709, 2.1442596334964037,
121  2.3720435277791694, -4.9109519389458, 4.833702106261626, -1.7024743261863478,
122  -1.0965449139184784, 4.2608694495284, -3.853598185640294, 3.4079783029737882,
123  -1.6268762563122436, 6.01715032372158, -3.1351424316235352, 2.6146516002481803,
124  -1.6980711488577072, 3.4593718195101246, -1.5277789352694526, 0.3350960417301394,
125  -2.113191874639597, 4.036705181875732, -4.024344074365217, 0.8371616380754858,
126  2.346558926801663, -7.317538004659582, 5.39925602657604, -4.122213051188737,
127  -0.10509113136140513, -0.7569940758403391, 0.020863737314357422, -0.3141988517745631,
128  0.1364437855372671, -0.909895658143796, 0.007975426036864519, -0.6849449120927602,
129  0.9537046500045108, -1.8750669553992338, 1.5550671288219746, -0.1273604449670529,
130  -0.9676256620223285, 3.0990724482326186, -1.932820081958198, 1.672830815663474,
131  -3.0248191794671584, 6.22102158862981, -5.071492009330541, 2.2709090274292976,
132  -0.9053346814616816, 1.349617011816008, -0.679592608823441, -0.651382812007796,
133  -0.7483633604060742, 1.4477494976017624, -1.6999589199986076, 0.5228457321354654,
134  -0.2802770734197111, -0.018009918683674186, 0.2530281275539892, -0.7995818709023297,
135  2.5847355049918406, -7.141885819408344, 5.212083619058831, -3.2630054501933046,
136  2.529712870309595, -4.127311126852874, 2.354746026918292, 0.7200846558553167,
137  2.6459181511891074, -5.793956536625046, 5.28568316649762, -2.194249975378625,
138  -0.84227551787626, 3.2234516523894854, -2.9883362394175492, 2.5670760713110212,
139  0.3493711934206658, 1.0697547273848613, -0.06722458069270942, 0.8887636967119761,
140  -1.8055343341111438, 3.513871108152671, -1.6996275042183697, 0.26106247457209975,
141  -3.255903324112296, 6.93811062828172, -6.07919111859519, 2.1735387591761537,
142  2.139932119200239, -6.224072668759618, 4.702664104901487, -3.2388743290066486,
143  -0.2265512140984356, -0.10189694015571149, -0.1900780573432712, -0.08410753498901613,
144  -0.05988528739544563, -0.09769945150765125, -0.5326063436514232, -0.029048984732071403,
145  1.1047662164637586, -2.498582930624252, 2.0540787604404613, -0.716971013112925,
146  -0.10842342811520211, 0.950146919945837, -0.44672282024112064, 0.8231312836614961,
147  0.10194027998659294, 0.0029591460624942556, -0.3204499899293296, 0.4014713315955305,
148  -1.3180658202036284, 2.575501293016714, -1.8193169342994224, 0.369551307940128,
149  -0.2358041169391072, 0.5321884770200995, -0.625349764519342, 0.2796963348737336,
150  -0.5532456107903272, 0.9566509853611933, -0.617235183595767, -0.024864039156454965,
151  -0.5606232761056162, 0.6321146670670714, -0.43036640563514084, -0.31230665257317014,
152  2.12890978550422, -4.08259404450655, 2.8026606933563016, -0.4900338190855109,
153  0.9964729040439124, -2.3079508515947964, 2.089455838431604, -0.9963693031459115,
154  0.36209732808492845, -0.26388425528421067, -0.05628028397768503, 0.5278323966776952,
155  1.1072697299678111, -1.8105734961645794, 1.4569515010371106, -0.3038748428807594,
156  -1.0755424281669548, 2.060239526828809, -1.1634601799232769, 0.19200963002367644,
157  -1.4772817528646556, 3.3239925942907576, -2.860944773652591, 1.2293189619886107,
158  0.5233572702854872, -1.6396312638680683, 1.3189825010267668, -0.9470363229593204,
159  -0.30557448037643553, 0.49802948289834603, -0.3908033713523764, 0.0861186677934711,
160  -0.4496593135841067, 0.9282205403378612, -0.8718476172289229, 0.31479535196194774,
161  0.9131612123383093, -2.0289872275679954, 1.5460241187174688, -0.6060745524264348,
162  -0.1802423843073484, 0.5150240341972676, -0.2587519002117915, 0.2041224809581763,
163  2.642873215547297, -1.4569964776746929, 0.33512775372946635, -1.7709279811242595,
164  1.2348864385276102, -1.290966359199956, 0.2978370769415051, 1.7135585227515548,
165  0.7382067948346958, -1.1539432327263057, 1.6781840788316913, -0.2762219732394442,
166  -0.030932103341910988, 1.103020161652239, -0.8276451081037521, 1.3772583724348806,
167  -3.3483490934595466, 8.83278850815259, -6.318324937368743, 4.051348280161619,
168  -1.2119219995220192, 0.5477750462014228, 0.5703324540518224, -2.697572690434754,
169  -2.349917025945615, 4.6107946614502, -4.642935448559001, 1.4591601108550094,
170  1.4795853513351176, -5.289041911717504, 4.077977285778616, -3.714088747423375,
171  1.5851018094399478, -4.6713137368205935, 3.0490427253535017, -2.0703103943378665,
172  1.6797056687355507, -3.5618741216603667, 1.4773993069538847, -0.2804514031740837,
173  1.5523195274872705, -2.521232097002212, 2.590022510034032, -0.13225489854812622,
174  -2.385239891023957, 7.202538312209072, -5.125237433239818, 3.969838468619855,
175  -0.09680952630151296, 0.5122769828303717, -0.23684293586120475, 0.21166958643880207,
176  -0.6807280269567855, 2.073635382897919, -0.9240036278788466, 0.9822155053843744,
177  0.0711347483593272, -0.42899794690310955, 0.24527627025963739, -0.47393112153804395,
178  0.575083377523697, -2.258735943294596, 1.3392703540157527, -1.4283846795369755,
179  2.4979981224169023, -7.133250275393948, 4.483167776488699, -4.394152350956574,
180  1.7705171999405138, -0.9353024221491069, -0.39061398163903505, 3.798619759036228,
181  2.088678753352724, -3.7564568935194984, 4.553122158860788, -1.221922314609401,
182  0.5889708816830534, 0.9860623094136827, -0.8089199641544838, 2.5882125529751647,
183  -8.659131232067011, 21.26427864911966, -14.790883765788749, 8.531822031829506,
184  -2.539916784444358, 1.3638222543522716, 0.7595796147361398, -5.370149320457131,
185  -5.803529066208284, 12.055201318580657, -11.608250434859656, 4.307225211756304,
186  2.2223802721127868, -9.305983760510571, 7.431129208998755, -7.464442852360662,
187  3.2495248391351197, -8.901063057710417, 5.45431540242862, -3.511914033559151,
188  3.4637424206594005, -7.161035401280969, 3.000481902854517, -0.2678741019917652,
189  5.024704619427212, -9.697584093781188, 8.860693326103501, -2.2722833628067747,
190  -5.312225249450421, 15.75080776528921, -11.471369678503834, 8.646181385149248,
191  -0.10350706311146496, 0.644388890301343, -0.18427472363691777, 0.2142019656894263,
192  -0.5241463640559232, 2.105837916082237, -0.2647465487825684, 1.064591849775752,
193  -2.404112845339114, 4.852182226954028, -3.786144284415059, 0.9839767736266367,
194  1.9641913014929742, -6.197861546912463, 3.9852465946169104, -3.3014038535111467,
195  4.837860424886458, -11.528502600092907, 7.680249457363971, -4.410620101261884,
196  1.8947049948037602, -2.1326105711923447, 1.1340411774581298, 2.102802650653757,
197  2.12971408564772, -4.369442009658087, 4.657952651585219, -1.778172483725939,
198  0.47814663966710214, 0.624024693883257, -0.4893526259693317, 1.8067159479833208,
199  -4.929839473334141, 12.202922627213411, -8.332476128125563, 5.024820830556564,
200  -5.184133033151738, 7.899127295881044, -4.614224265271332, -2.1749287761049345,
201  -6.38285993959289, 14.033380722627044, -12.569427355192602, 5.3809931287541986,
202  2.2208998357818928, -8.026593292306643, 6.38063797930954, -5.731915900018066,
203  -0.39860358924488537, -0.4733433860092191, -0.14944831034517847, -0.8431312635075301,
204  3.9391511185094714, -7.609613794309553, 3.748321720515378, -0.1447628862806596,
205  6.913274783932138, -14.788323631160893, 12.43420873983996, -4.770283558580559,
206  -4.695319421647582, 13.199491410166956, -9.703322533285245, 6.802274735600804,
207  0.43211468261324626, -0.6780865549226291, 0.4879781406843904, -0.09631258405715926,
208  0.26303093510796316, -0.4094117272470612, 1.4313570986269042, -0.4292297156935092,
209  -2.6270666719647124, 6.0771799415233545, -4.841964874241967, 2.246174323488958,
210  0.38999939276254736, -2.182048876740737, 1.0848653106077109, -1.592426458504633,
211  0.10122916696127504, -0.7366164544364437, 0.3288311360811349, -0.620569276779861,
212  2.681103702110704, -5.058800354134291, 3.6843437693605665, -0.5502227846300229,
213  0.6244971062806144, -1.4635804415738676, 1.6090754277829546, -0.8171707408837392,
214  1.2257060590345645, -2.0027678089245455, 1.423432865020004, 0.036935005940904375,
215  0.9461356222163886, -1.508485084748827, 1.267572125303559, 0.10957892574515427,
216  -4.603585395991104, 8.651142370479647, -6.01941367512336, 0.8745619040273596,
217  -2.0142589908791706, 4.790905602218118, -4.380586859915638, 2.229124677774962,
218  -1.0383341877168277, 1.0090797674201895, -0.4467267146537779, -1.0231133168199449,
219  -2.2976556413341314, 4.403632125133299, -3.2100563291314756, 0.8280312300121295,
220  2.4206809379829792, -4.583950586995343, 2.6828221594914794, -0.28434526671480853,
221  2.9911853637895547, -6.727958119066898, 5.530267262380221, -2.466652625516872,
222  -0.8593887415045174, 2.853834436595207, -2.1497247630613856, 1.7978392276490922,
223  0.6199052104348084, -1.2115153515642305, 0.7639305957236502, -0.21011553144353456,
224  0.8299059835098888, -1.9063451299025473, 1.8162193463213043, -0.8389467054003035,
225  -1.8609503324441903, 4.237675110431155, -3.1931422584311804, 1.4766410734191595,
226  0.1726465086103417, -0.6489416086333222, 0.26446476067212643, -0.27788335443256074,
227  -0.7798085235408507, 1.8026027928572148, -1.718261903617531, 1.4838001909083687,
228  -0.14980998481041752, -0.7732763383537531, 1.5925845302408561, -1.7523198123672046,
229  -0.8636486759933177, 1.828740579308942, -1.8776099034002982, 0.6320003899163567,
230  0.10629793140105903, -1.4280875690747052, 0.9534438014961779, -1.4738499082886847,
231  2.7741584021423478, -5.989508023136295, 4.49332937062718, -2.3562129674246535,
232  0.2714087224157993, 1.5827485285699368, -2.16394735511858, 2.9771663936553523,
233  2.301784902025247, -4.756347747927066, 4.704722611932084, -1.5334584813681431,
234  -1.164847986510722, 5.055204979202244, -3.414161001361208, 3.4808343176555354,
235  -1.2333716574357823, 2.454600976605434, -2.0567019710724708, 0.9042848217941355,
236  -1.0784411087079206, 1.6381866529700346, -0.44691493100253865, -0.48069004240096547,
237  -1.3072770037106238, 2.4336439733742736, -2.3854154430155177, 0.42040994475246407,
238  1.8308572590685799, -6.140070809706231, 4.061184266160126, -3.2396786731187603,
239  0.08917339591789641, -0.04730101040331647, 0.14906704505119706, 0.02534071775880875,
240  0.6383155047515174, -1.290053091084701, 0.9471324685582658, -0.40667731514258776,
241  -0.034401780503685586, -0.11039880313910544, -0.03282162839605007, -0.14226886740652844,
242  -0.4122059193723544, 1.8804709757096134, -1.0045554155876744, 1.0662659907902707,
243  -3.053242911671987, 6.714125717408024, -5.234814744326286, 3.105545944883488,
244  0.03168052184628323, -2.2235345441149548, 3.4552984791225754, -3.691295799333602,
245  -2.2573905356111936, 4.970706412452273, -4.835783817630727, 1.8591831804369576,
246  -0.3934811128419824, -1.7399260918027721, 1.155684143101098, -2.8341160561249126,
247  6.550264779682038, -13.644567804294638, 9.730849191430025, -4.8040960798971355,
248  0.7795275925891474, 2.808226242545061, -3.976260125171393, 6.098467360367067,
249  5.562114180182107, -11.97984327247832, 11.433767898357473, -4.294686236593407,
250  -1.74637108456227, 9.213610306789633, -6.323034499306232, 7.062651413929416,
251  -2.0326519538721186, 3.7470328622148372, -3.1408544566947967, 1.3489653941942379,
252  -1.9618960790685378, 2.5457327875774354, -0.2815311204176396, -1.5910612937877886,
253  -4.503491241368465, 9.313637615181506, -8.214495724416338, 2.617142255010549,
254  3.8380216669174843, -12.96874958841363, 8.794156074436614, -6.969986966374563,
255  0.03072161547243013, 0.22902787107159384, 0.09163848526077345, 0.10777795448666438,
256  -0.13975445140386, 0.6497796768671833, -0.526738165965071, 0.3400607710063923,
257  2.3139458331716014, -5.527511862048414, 3.880304672376951, -2.082774551832699,
258  -1.1106280312451418, 4.488460450418643, -2.568918952907552, 2.4220852098369505,
259  -3.1303359681915026, 6.343026812537573, -4.349170170491561, 2.03939962136792,
260  -0.8780286688997876, 0.24522562496713363, 0.9951954472780926, -2.290101502876496,
261  -2.228074355320132, 5.163268952499493, -4.813144428626401, 2.1630054661800386,
262  -0.12794138192839455, -1.6550683478126302, 1.2135172233975027, -2.250110561020847,
263  3.204185438225977, -6.574104711937252, 4.532781355665065, -2.5814422228140756,
264  3.01121264701942, -2.6976315713400254, 0.4385747500055004, 3.6852756649605,
265  5.893688101001317, -13.254972921102308, 11.959962998866104, -5.162677948479541,
266  -1.9986378107860219, 8.418456385552417, -6.1409839891130105, 5.830539306276478,
267  0.23153112590080127, -0.7088122295754147, -0.06935991023783572, 0.2840478526777588,
268  -2.5803561263892334, 3.6605085258197505, -1.3186652109434363, -1.4214967800071463,
269  -5.392172581749037, 11.951652868709061, -10.05854404513957, 4.18915362432017,
270  3.9322720272029983, -12.024870494933566, 8.627247847180115, -6.01504065215704,
271  -0.3800111265545638, 0.8918502879860171, -0.3494396614951256, 0.15194755676202476,
272  0.042180258431471884, 0.6637522134697065, -0.6606023808708414, 0.9079816956509603,
273  2.132903321966296, -5.569315316330176, 4.2056614295288455, -2.722857702858164,
274  -0.7268217362070573, 3.1841255946201272, -2.0063023118273122, 1.8639352939862874,
275  -0.43017549537762534, 0.7610727506980766, -0.379029252944747, 0.18678139963412832,
276  -1.7040852129575796, 3.042112354945857, -1.944717139864224, 0.01944327785349742,
277  -0.6201772884960519, 1.5929681094075931, -1.5400991512397013, 0.8527474829097628,
278  -1.113233147218125, 1.6666477955004666, -1.1648051781521644, -0.23325482744257897,
279  -0.5891046474425821, 1.2716032516618725, -1.080165606283117, 0.06034678497235291,
280  3.167462404235266, -5.362055959092686, 3.4507170990546, 0.1660987766481412,
281  1.3650192816567142, -3.435879618176841, 3.2730955517472466, -1.7983465971046826,
282  1.1953606783936266, -1.030736142944079, 0.6301973973313579, 1.0856254376813013,
283  1.8372309752521687, -3.743211132386932, 2.397474084238638, -0.6076849626315379,
284  -1.7153714798405417, 2.8449110315668804, -1.6518998553001438, -0.2402448666143755,
285  -1.9350223891960923, 4.500067745539127, -3.6497784015809884, 1.7872296387067763,
286  0.18742594747891417, -1.6666885203303536, 1.2897633587708697, -1.481646601056127,
287  -0.525052069720914, 1.0833692768064793, -0.7194274028643122, 0.23369474084574904,
288  -0.7269094689036137, 1.7905298759651487, -1.2513555515124608, 0.7127765309260212,
289  1.3001691934132396, -3.172260371637094, 2.2663019336614525, -1.3382790843897965,
290  0.49252920365688624, -0.5489115641757962, 0.4896699172895751, 0.146265322338877,
291  0.4586137790174689, -0.3854891242663143, 0.9294773060537409, -0.11369743788964115,
292  -0.133394229625992, 0.780421445146203, -0.8481686449085828, 0.6975058911411907,
293  0.4516870348343218, -1.1737554232313414, 0.8808870963111985, -0.4924414779725339,
294  -0.0820651735921274, 1.1939619708246028, -0.5633016570827749, 1.0701009136319044,
295  -0.9209129464143189, 1.3057828535675071, -1.3342978195869364, 0.3164928273181431,
296  0.0879674076786614, -1.517573702018126, 1.232859549782006, -1.5669063857203582,
297  -0.9319729130511405, 2.054407049814472, -1.8766245149745373, 0.7553344821280916,
298  0.46255579528951785, -3.091887056492851, 1.4849116868135752, -2.278970895283237,
299  0.4247958099713287, -0.5866638757943292, 0.7282702140582842, -0.10762091558717657,
300  0.2841322773201682, 0.3441079546682886, -0.16547895372787025, 0.7049292015799438,
301  0.6449010743126564, -1.3989259812005912, 1.2414176518577733, -0.39111197011516197,
302  -0.5940005022875994, 2.7611457246712234, -1.3265077765245223, 1.6679079730402009,
303  -0.005457937138089619, -0.06611343336226128, -0.024618221757918946, -0.07124301830117474,
304  -0.2921233212491643, 0.08283162888255902, -0.4847193082423473, -0.12106631246206234,
305  0.13977297413293854, -0.014809613247052766, 0.13237993105576606, 0.14368487133469898,
306  -0.09331134104650118, -0.11691399726078089, -0.0034137904974613775, -0.29099983920423256,
307  1.1756105795357144, -1.0988285534112947, 1.7370626928459387, -0.12682284394395538,
308  -0.2268548994215962, 1.5749202756778686, -1.616488525585737, 1.5450006239698268,
309  0.8480148737944546, -2.3297084239966352, 1.8043258589168545, -1.0783703737106407,
310  0.49703861722082365, 1.1223665863071801, -0.25910892902174965, 1.9490548398589453,
311  -1.6744474158622324, 2.201839916408062, -2.21943051321432, 0.5133464252285194,
312  -0.10173604416922899, -2.690951282842434, 2.1921885792398825, -3.2917002176254755,
313  -2.241273880150402, 5.143128155570594, -4.620318037312245, 2.052346216638398,
314  -0.4657893151015742, -3.465192900475813, 1.0599520613905042, -4.042799877122889,
315  0.049663118450553156, 0.4812114710366586, 0.30161661864985945, 0.1816118494825787,
316  0.8478554112225538, 0.4096245041291695, -0.14939545505330898, 1.6105644246854354,
317  1.2766201528866077, -3.001972818514332, 2.6785162059386494, -1.0393816565992893,
318  -0.35191824748471845, 3.97307643671229, -1.6309676829259843, 3.1912566773680737,
319  0.1372224316255597, -0.3806216231387225, 0.05325269392415066, -0.15057225406235375,
320  -0.07936986532149604, -1.0636586322943913, -0.0767012330579746, -0.6893828175889212,
321  -1.149083959595373, 3.062444974464597, -2.000289146300929, 1.1370028772034857,
322  0.5231518767468515, -1.7490033059002599, 1.172122908728852, -1.07459387696872,
323  0.969205508910818, -0.9685247036686633, 1.1133382064363104, -0.09676563118546255,
324  0.06499264023295837, 0.8275805933226366, -0.9230549223939306, 1.2604570672551745,
325  1.0186640070332942, -2.603286585133901, 2.012802702462068, -1.0820766011074738,
326  -0.041867470088618575, 1.7117746472431463, -0.9286927771499904, 1.7283385796235962,
327  -1.0330452139678528, 1.4321440238127252, -1.591565713941236, 0.46773832872349885,
328  -0.5277408613401349, -1.3391649208351737, 1.2697261664361577, -2.5968112208720413,
329  -2.3794171931949677, 5.635545419587288, -4.9066209795710165, 2.385657469043508,
330  0.9520944277828676, -5.340821324462013, 3.1293014652765123, -3.8769949832494603,
331  0.12871074219765433, -0.04661675144416222, 0.7346009582192892, -0.09168430651698145,
332  0.552605561524615, 0.8149509100039722, -0.6260280675451213, 1.6785205832966312,
333  2.1459258002141723, -5.0499666470859665, 4.250499474219396, -1.8336376086444943,
334  -1.5722974157506542, 5.7513409388193395, -3.495558743710717, 3.238216711590212,
335  0.10994492237477971, -0.22802614719694247, -0.02666408318145841, -0.07223139892266772,
336  -0.1840062066912651, -0.7203379510028753, -0.04273834094055928, -0.6957293234845565,
337  -0.5000652461749269, 1.785084932067548, -1.2788031103627873, 0.9955906469695037,
338  -0.009879093624476809, -0.5507347943930654, 0.5274094064734527, -0.844511815631904,
339  0.14785219825716922, 0.01999014033935964, 0.006763599512851215, 0.07309478013621629,
340  0.5022778150687373, -0.696579114854103, 0.4462987956012512, 0.21774400637832514,
341  0.22121097088165698, -0.6883131695030897, 0.605269753952598, -0.4038342192820892,
342  0.6771088635796332, -0.796445375905023, 0.5799772054051573, 0.3656593755167705,
343  0.5025989570785896, -1.135141410988581, 0.5864540328366274, -0.15985543304896055,
344  -1.1274773099648883, 1.4436346502261586, -0.9198877545059077, -0.51705566646433,
345  -0.15072034607510432, 0.7429097858985187, -0.8762166680935479, 0.7700486157318664,
346  -1.239517901391082, 1.3037270307249855, -0.9495211475659744, -0.8362252729948523,
347  -0.9609711775574397, 1.8872458424848446, -0.9989064569017501, 0.28044430637146434,
348  0.9501041851253831, -1.2116206386144768, 0.8240523170716187, 0.31812244109778476,
349  0.19486380859871133, -0.766354096995201, 0.7600285082080518, -0.5533170941289427,
350  0.8404104021392413, -0.8702279142962652, 0.7946955855695705, 0.5017968846714211,
351  0.32388045822517597, -0.6295578471363115, 0.36277722308750526, -0.1244069785980173,
352  0.048311322168956394, -0.3957101418855018, 0.026543142179434653, -0.18081933627445324,
353  -0.40359911936411663, 1.1039205270608363, -0.7203370977213126, 0.4569942043077617,
354  -0.4471149025212071, 0.8510683283711842, -0.6638482878470313, 0.08359694092996506},
355  {-319.9865774959326, -721.9013638496399, -619.9379312992096, -319.64222729206085,
356  -25.39226484298706, -122.94890740513802, -74.14515885710716, -62.31383378058672,
357  73.02835182473063, 153.51671715825796, 124.17517897486687, 44.79567829705775,
358  24.204760629683733, 21.621401999145746, 56.306390311568975, 5.974721373990178,
359  282.6530842334032, 752.3266769051552, 714.9329831898212, 435.84284660220146,
360  39.76033100858331, 216.42412965744734, 132.17112524807453, 111.38254321366549,
361  -17.732472985982895, -32.556071519851685, -42.652169182896614, -10.622830782085657,
362  -12.476747574284673, 27.839447589591146, -60.25829471414909, 0.6320585422217846,
363  -41.00559635460377, -159.76989662647247, -193.22640340030193, -159.7096644602716,
364  -61.59647809714079, -208.386963352561, -142.636331230402, -89.23535558953881,
365  -101.70330782420933, -216.0970136784017, -138.29673520475626, -52.83637527376413,
366  -24.368742530234158, -83.40761088207364, -8.700344819575548, -14.89893463253975,
367  -23.833077784627676, -40.708712324500084, -20.839566573500633, 6.177721438929439,
368  64.30681444704533, 152.290165245533, 114.71973878145218, 49.90313282236457,
369  48.43236447125673, 105.57000994682312, 70.5322176553309, 28.383680613711476,
370  -15.848940536379814, -19.744064763188362, -21.418839775025845, 1.247128739953041,
371  -549.3495618700981, -1309.2103510499, -1129.3677335977554, -577.6787461936474,
372  -42.76388028264046, -225.5191633105278, -131.10021778941154, -117.2493859231472,
373  133.01939775049686, 277.47568885982037, 224.8632774055004, 78.33003294095397,
374  47.427294451743364, 43.61427718400955, 108.61779342591763, 11.239157862961292,
375  515.467934846878, 1362.9347764253616, 1300.2257675528526, 785.9934683591127,
376  65.58063048124313, 391.18784749507904, 226.20342648029327, 203.9688744843006,
377  -30.499821931123734, -51.879274398088455, -72.63297513127327, -12.715259030461311,
378  -28.77635834366083, 43.676186045631766, -120.97004276327789, 0.7401650883257389,
379  -75.12455159425735, -287.490163654089, -351.00710582733154, -286.6452329605818,
380  -106.72429266571999, -372.3679034113884, -247.9194723814726, -159.28402046859264,
381  -188.26481193304062, -402.40348337590694, -257.01683374494314, -101.30265617370605,
382  -41.850921753793955, -150.33087468147278, -11.082882165908813, -27.890117973089218,
383  -42.71092742681503, -73.89889888465405, -38.20654444396496, 10.354451015591621,
384  114.49841406941414, 271.1523659527302, 203.2719375640154, 87.71173138171434,
385  90.80994031578302, 199.12385126948357, 132.91461850702763, 54.718627251684666,
386  -28.313455939292908, -33.37439739704132, -37.05157478898764, 4.270528569817543,
387  -314.67290499806404, -743.2116359472275, -643.5680557489395, -322.83733177930117,
388  -21.518419235944748, -131.95662134885788, -69.66569796204567, -71.27330434322357,
389  75.73549205809832, 155.50005028024316, 126.32962152734399, 40.583167588338256,
390  30.743169521912932, 29.430595841258764, 68.79834266006947, 6.684012424200773,
391  292.1463411748409, 765.0864697694778, 737.9148513376713, 438.69422110915184,
392  29.051980786025524, 220.2016344293952, 112.29864497482777, 117.98384375870228,
393  -15.101801060140133, -20.710423186421394, -35.369509026408195, 0.44754861295223236,
394  -23.343782240524888, 17.179635832551867, -81.62667385209352, 0.23846596479415894,
395  -43.244524009525776, -159.3099965453148, -198.31010561436415, -158.30502377450466,
396  -54.41850829124451, -203.84784957766533, -127.46398551762104, -87.17987554520369,
397  -110.67760817054659, -239.2882884964347, -152.24124915525317, -63.53470415249467,
398  -20.946144081652164, -83.85764585062861, -0.9134360067546368, -16.789048820734024,
399  -23.639900632202625, -41.79728639870882, -21.990316782146692, 4.991240344941616,
400  62.166575610637665, 147.14571079611778, 109.31653237342834, 46.254852920770645,
401  54.677229054272175, 121.20590473338962, 80.7702162489295, 34.60240229219198,
402  -15.357637964189053, -15.810947194695473, -18.56796594709158, 4.811335626989603,
403  -65.95582696050406, -153.63695637136698, -133.65000656619668, -64.94713058322668,
404  -3.5524575114250183, -28.828688137233257, -12.798762198537588, -16.411882359534502,
405  15.699148862622678, 31.422073499299586, 25.614902743138373, 7.055592705029994,
406  7.5705694910138845, 7.475812138058245, 16.496277858503163, 1.393536823336035,
407  60.193044535815716, 155.36981636285782, 152.47236321866512, 88.44700405187905,
408  3.3829326517879963, 45.53899862244725, 18.00070457905531, 25.51108518987894,
409  -2.3632414173334837, -1.4251367412507534, -5.359101697802544, 2.5444473288953304,
410  -7.040167354047298, 1.3816208755015396, -20.953440443612635, 0.15656499983742833,
411  -9.115738125517964, -31.67387538962066, -40.6551374271512, -31.323372594080865,
412  -9.327261662110686, -39.89702647551894, -22.202000403776765, -17.079487377777696,
413  -24.1222442004364, -52.97514010313898, -33.50252613052726, -15.07529472745955,
414  -3.455166080733761, -16.957994333468378, 1.478745418600738, -3.7975828824564815,
415  -4.6949121337383986, -8.540804902091622, -4.6339150331914425, 0.81829465739429,
416  12.006868112832308, 28.267384596168995, 20.78594927676022, 8.428556015715003,
417  12.289927743840963, 27.66831201314926, 18.379103323444724, 8.26194216310978,
418  -2.8723853062838316, -2.2124559618532658, -2.896938835270703, 1.7701615986879915,
419  143.20984813570976, 439.8393032550812, 426.8846901655197, 345.5365710258484,
420  112.32402980327606, 368.9455486834049, 210.05574724078178, 127.59941498935223,
421  -54.56878714635968, -97.27105394005775, -66.75245419889688, -16.425001487135887,
422  -52.47850609570742, -39.63662553951144, -122.57852329313755, -9.994673442095518,
423  43.99023978412151, -141.5780749320984, -286.0021950304508, -445.7983611524105,
424  11.170979544520378, -232.25867922604084, -68.04095420986414, -141.75515630096197,
425  5.046085506677628, -36.533794954419136, -43.792605102062225, -48.480249993503094,
426  8.717931171879172, -106.81560906209052, 106.97562894946896, -20.277681842446327,
427  -175.14315193891525, -261.3960984349251, -102.70397317409515, 137.81638558954,
428  -7.463307544589043, 136.63450273871422, 54.08230924606323, 102.78245381638408,
429  53.69135873764753, 151.56870571523905, 111.68436446785927, 71.37866240739822,
430  56.945003140717745, 200.48863296210766, 38.68668841198087, 55.617834866046906,
431  98.5027959048748, 193.51927265524864, 131.15372048318386, 18.360611733049154,
432  -78.8178216740489, -198.17408306896687, -146.458652690053, -75.52049686014652,
433  -23.543526917696, -66.46633957326412, -44.63471815735102, -29.742974031716585,
434  16.354605440050364, 3.054960235953331, 15.337095558643341, -18.1059400588274,
435  260.9017690420151, 790.6283428668976, 770.1917881965637, 619.5017441213131,
436  192.65637663006783, 659.5199115276337, 354.70170372724533, 229.46977669000626,
437  -97.0101219266653, -168.1130085811019, -114.52113220095634, -22.582430094480515,
438  -102.44465032964945, -79.52769162505865, -235.9823621213436, -18.39485941082239,
439  75.16611048579216, -259.9575071334839, -535.6595925092697, -810.2290297746658,
440  45.0542770922184, -395.0442034602165, -75.43028977513313, -251.69018392264843,
441  8.055412650108337, -75.04210312664509, -84.96225878596306, -97.70624989271164,
442  29.434118278324604, -179.05648794583976, 220.27363850269467, -36.529816284775734,
443  -309.5805540084839, -462.7372804284096, -170.1331620812416, 253.53326381742954,
444  -24.68349525332451, 235.08742481470108, 76.68223765492439, 183.47795851528645,
445  97.88678961992264, 281.32640540599823, 205.21775482594967, 136.24438899755478,
446  97.09605949372053, 359.20642080157995, 58.70804677158594, 102.86759279668331,
447  175.27555429935455, 344.92074117064476, 232.38066971302032, 31.905300304293633,
448  -140.25156678259373, -353.04268980026245, -259.8219749927521, -133.4989468306303,
449  -46.07920406013727, -130.6456087976694, -87.11349493265152, -59.080757431685925,
450  27.23619019240141, -2.296470493078232, 22.06670492887497, -37.38904236257076,
451  145.34909629821777, 435.2465281486511, 431.2319687008858, 342.80402874946594,
452  95.29361535608768, 362.65455079078674, 170.78040757775307, 128.2100275158882,
453  -52.330453868955374, -85.23005904257298, -57.289729688316584, -4.775898311287165,
454  -66.17194585129619, -52.983818139880896, -148.707286529243, -10.261347763240337,
455  36.26905509829521, -150.21300852298737, -319.8152238726616, -459.20738965272903,
456  53.891470678150654, -195.6499465405941, 12.208531774580479, -139.37369089573622,
457  3.1450072303414345, -52.58009295165539, -54.93972562253475, -66.44817750155926,
458  32.25838395766914, -84.97306136321276, 154.59702270943671, -20.96704503148794,
459  -165.34519690275192, -248.60046660900116, -77.98492589592934, 145.860278531909,
460  -26.50801871716976, 118.97281983494759, 18.534690886735916, 100.63548251986504,
461  55.94047202914953, 166.82344248890877, 119.36309642344713, 85.49944019317627,
462  47.78174114972353, 197.73273078724742, 20.171542078256607, 60.27638264745474,
463  95.03377012908459, 187.8789390027523, 125.10295842587948, 16.577477421611547,
464  -76.27406778931618, -191.89646151661873, -140.30987034738064, -71.10110160708427,
465  -29.88087084516883, -85.33055637776852, -56.12644147872925, -39.193508226424456,
466  12.34182763658464, -10.64381456375122, 5.2866223230957985, -26.416764188557863,
467  29.140844233334064, 86.165203794837, 87.26592004299164, 68.66345072165132,
468  15.173388469964266, 72.31028661131859, 25.41345725208521, 26.72163711488247,
469  -9.944649847224355, -14.487810026854277, -9.407006865367293, 1.432327652350068,
470  -16.223470896482468, -12.965214890427887, -35.45035012625158, -1.7916178461164236,
471  5.491390582174063, -31.533909134566784, -71.09934747219086, -94.32129500433803,
472  20.045386359095573, -33.24966334924102, 19.761521488428116, -29.231355670839548,
473  0.15189560037106276, -14.133224783465266, -13.617914509028196, -17.38705325871706,
474  11.557448578067124, -12.751380438741762, 41.329240093473345, -4.720689745619893,
475  -30.926175743341446, -47.49688125401735, -10.387669399380684, 30.253746438771486,
476  -9.227495776489377, 20.34688714146614, -3.7370204515755177, 19.72098494041711,
477  11.766991021111608, 37.09420048817992, 25.854511704295874, 20.565225012600422,
478  7.626628467813134, 39.03192026913166, 0.12657958082854748, 13.03387573827058,
479  18.30918849632144, 36.47551112994552, 23.866147853434086, 2.9960706615820527,
480  -14.86034344509244, -36.94505911320448, -27.02118558064103, -13.044371072202921,
481  -7.338869532570243, -21.242952140048146, -13.602268448099494, -9.910912837367505,
482  1.4094943343661726, -5.2052991120144725, -1.558012985624373, -6.986721289809793,
483  194.55613368749619, 363.20922404527664, 258.47239845991135, -21.50014056265354,
484  79.88516023382545, 58.415563613176346, 81.40692287683487, -19.05189148336649,
485  -2.4915615767240524, -30.62628697603941, -35.53024708107114, -21.8707779571414,
486  46.05520983785391, 49.19318509101868, 111.01560438424349, 11.149826982989907,
487  -301.45326017588377, -585.815321534872, -436.4116711765528, 23.45037581026554,
488  -295.66524240374565, -419.75017251074314, -378.872287735343, -31.737354964017868,
489  -69.66132356226444, -83.43422191590071, -28.4321312867105, 27.146011739969254,
490  -30.944517605006695, 21.413923252373934, -131.2008138783276, 6.152883095666766,
491  149.77494396269321, 313.40141716599464, 246.2496075630188, 8.290028348565102,
492  189.92343170195818, 288.0165140926838, 249.28995061665773, 13.133015498518944,
493  91.89375588297844, 142.12960674613714, 85.21020837128162, -3.721866276115179,
494  -8.119062468409538, -75.6609572917223, 31.44858105108142, -31.845993600785732,
495  -39.679497472941875, -89.87080280482769, -74.5870740711689, -17.720380179584026,
496  -28.388574082404375, -36.17348727583885, -26.873069036751986, 16.044134128838778,
497  -1.2359265945851803, 13.713729098439217, 11.0421570725739, 13.811556093394756,
498  13.263352781534195, 46.78793419897556, 17.545750804245472, 24.41567362472415,
499  352.36238956451416, 659.7030963301659, 462.8493194580078, -40.11937890946865,
500  157.60791140049696, 120.65464842319489, 170.01720502972603, -30.614017829298973,
501  -5.246610093861818, -59.34069639444351, -65.2411313727498, -41.93907292932272,
502  92.81476224213839, 103.70551265776157, 217.62079229950905, 22.3865267354995,
503  -537.9696949720383, -1051.716685116291, -774.7370191216469, 48.558676689863205,
504  -554.3167783692479, -779.3219408243895, -716.2439742311835, -58.58757173269987,
505  -124.43108551949263, -143.22241334617138, -48.643210865557194, 53.33324980735779,
506  -75.08369852602482, 7.948470406234264, -272.10095842182636, 5.433429222553968,
507  264.41010469198227, 558.3307465910912, 435.1077111363411, 11.978554233908653,
508  354.2767720222473, 535.1060254871845, 467.85892629623413, 24.40618324279785,
509  159.92829956114292, 240.0276802033186, 143.6685342490673, -13.318712927401066,
510  -3.3799218758940697, -119.00957979634404, 77.07066605985165, -54.81384375691414,
511  -68.28765796124935, -156.01846221089363, -129.52893897891045, -30.298103339970112,
512  -55.23040894418955, -73.57613241672516, -54.0302337706089, 27.408776070922613,
513  3.7386329621076584, 39.414614364504814, 29.58884610235691, 29.71690531820059,
514  27.94270956516266, 94.58896163105965, 38.32447288930416, 47.9980467222631,
515  197.59904862940311, 372.8886464238167, 255.22694611549377, -24.32850518077612,
516  103.55474026501179, 83.89493180066347, 121.32785315811634, -14.304766312241554,
517  -3.8445410802960396, -37.93139690160751, -37.95234543830156, -26.228546425700188,
518  63.03733542561531, 74.8370949588716, 141.40981792286038, 14.730083419010043,
519  -293.47748151421547, -581.5478477627039, -418.4279505610466, 32.50951064378023,
520  -333.63676792755723, -458.4490780085325, -438.71935127675533, -33.012704730033875,
521  -67.79261567443609, -70.72584643214941, -23.567217774689198, 35.67957103252411,
522  -64.10280515253544, -30.51924527809024, -192.62758535332978, -3.2252634838223457,
523  140.83429726958275, 304.161175519228, 231.79673516750336, 3.904867835342884,
524  210.9984913766384, 316.39660282433033, 281.90581917762756, 14.959389477968216,
525  82.33970741182566, 114.22078964114189, 68.60523694008589, -15.523200631141663,
526  10.849657953716815, -46.73663637973368, 65.90989314392209, -27.694767348468304,
527  -34.34203204512596, -80.10288186371326, -66.56248512864113, -15.053091060370207,
528  -35.306381076574326, -50.87908209860325, -36.157465025782585, 13.245114320889115,
529  9.081833083182573, 39.209674783051014, 27.83540168404579, 22.158657364547253,
530  20.35624634847045, 64.62729816138744, 29.176578417420387, 31.14924938045442,
531  40.07994007319212, 76.52145200967789, 50.34660666063428, -5.425586821511388,
532  25.920167721807957, 21.253748685121536, 32.98670297302306, -2.7181552946567535,
533  -1.0683156661689281, -9.258290328085423, -8.095656760968268, -6.285297063179314,
534  16.290061191655695, 20.3119295258075, 34.79347465373576, 3.4825929049402475,
535  -56.865762108936906, -116.15724470838904, -79.78973741270602, 7.5233434066176414,
536  -74.94013714883476, -99.05806785263121, -100.86159035470337, -6.437417501583695,
537  -13.06487907236442, -10.769808119162917, -3.5376306995749474, 9.483907165005803,
538  -19.979962704703212, -17.10208704508841, -51.707201758399606, -2.482792824972421,
539  26.205167714506388, 59.18637806177139, 43.1707085557282, 0.05568218417465687,
540  46.566217966377735, 69.54719395563006, 63.09117400087416, 3.6643963288515806,
541  14.248882728628814, 16.390287889167666, 10.001122456043959, -5.7962958393618464,
542  6.165282155852765, -3.452998317312449, 20.393796600867063, -4.77440987713635,
543  -5.738696774467826, -13.932636257261038, -11.676455657929182, -2.46123053971678,
544  -8.459120135754347, -13.485467853024602, -8.987117524258792, 1.9079400259070098,
545  4.1034015705809, 13.587514650076628, 9.282169823534787, 6.27242764737457,
546  5.7001293655484915, 16.751195091754198, 8.463948348537087, 7.536002578213811,
547  -127.41247248649597, -273.23415955901146, -216.08943632245064, -53.109304824844,
548  -20.655334286391735, -9.923119701445103, -17.28378640860319, 2.5748325125314295,
549  -80.76058132201433, -143.62633690983057, -87.44792632758617, -15.78640812728554,
550  25.45775567740202, 54.10788720101118, 0.9948954209685326, -2.7030941732227802,
551  197.40762383677065, 436.40736649930477, 355.2216146606952, 90.55003239726648,
552  63.85865109041333, 81.39652086794376, 87.66988714784384, 14.751909324899316,
553  168.40616676583886, 301.95458383113146, 187.8879808075726, 36.05217076279223,
554  -40.37332211062312, -80.00027519464493, 25.583179898560047, 14.656855109147727,
555  -89.23883931338787, -206.30272537469864, -174.33995803445578, -47.75147359445691,
556  -83.26841522753239, -150.3536919504404, -132.05675093457103, -30.77377656288445,
557  -70.81440006196499, -121.12769117951393, -76.15074272453785, -12.860339257866144,
558  26.031718738377094, 44.02991285920143, -33.02415320277214, -12.502613535150886,
559  8.13021151535213, 22.999523408710957, 23.37261837348342, 8.224716356024146,
560  48.29205394163728, 96.40104272961617, 74.40502585284412, 17.49799218494445,
561  -28.287001136690378, -62.73845387995243, -43.61841823160648, -14.279165932908654,
562  -41.1328793708235, -76.85725013539195, -31.30164104141295, -9.216947524808347,
563  -232.47224102169275, -499.7155776768923, -392.7832301557064, -95.90668917447329,
564  -39.27199502289295, -18.353417955338955, -33.91285798698664, 3.799345168285072,
565  -146.36468852311373, -258.41769474744797, -157.17507404461503, -27.184111449867487,
566  40.03140886873007, 85.54715672135353, -10.684138141572475, -9.571909949183464,
567  361.0644107311964, 800.3775283880532, 648.5292449966073, 164.5912908995524,
568  122.76155454292893, 157.6369851231575, 171.3351599574089, 30.2739720325917,
569  299.6402640864253, 532.3460110723972, 329.58685583621264, 60.26658654585481,
570  -55.69063940644264, -108.43430295586586, 80.64295175299048, 39.07632779655978,
571  -162.3885331824422, -376.5413340777159, -316.5989692211151, -86.19527381658554,
572  -161.1771817356348, -292.65605825185776, -256.51643715798855, -60.70279599353671,
573  -119.69412709027529, -200.65002632141113, -125.76921832561493, -19.13633704185486,
574  33.60004383325577, 51.19462522864342, -85.9110007211566, -31.393277171999216,
575  13.834792654961348, 39.88557643443346, 40.927911937236786, 14.292553981766105,
576  92.35836273059249, 184.78733237832785, 141.77308777719736, 33.44560551084578,
577  -56.681279346346855, -124.9874863922596, -86.06096404790878, -27.770048331469297,
578  -73.7751520127058, -137.2699742987752, -53.80869570374489, -15.902045218273997,
579  -132.7829448953271, -286.51735486090183, -222.7509818635881, -53.92619060818106,
580  -24.355369348078966, -10.72351923212409, -22.73146292567253, 1.003207681234926,
581  -82.39800671301782, -143.17356446385384, -86.78355887159705, -13.380858952645212,
582  15.448922185227275, 33.64987591281533, -20.634528417140245, -10.923734162002802,
583  206.99528783932328, 461.66256422549486, 369.8785211686045, 93.11928640771657,
584  77.45327325537801, 100.50419257581234, 111.42518666014075, 21.57816403079778,
585  162.55342736653984, 282.8481093235314, 173.61370004341006, 28.20588217675686,
586  -11.36020402982831, -19.437228739261627, 84.66969529166818, 36.14979255478829,
587  -91.98604912310839, -214.83100809156895, -178.52555517852306, -47.83367006853223,
588  -102.268913988024, -187.68198841065168, -163.5094303227961, -39.66910517029464,
589  -57.72826813161373, -91.794412702322, -57.435109816491604, -6.267338018864393,
590  3.6212102323770523, -3.185544043779373, -77.58430339023471, -27.081134407781065,
591  6.767416412010789, 20.384637270122766, 21.454774547368288, 7.360763698816299,
592  57.22847355157137, 114.96154342219234, 87.01432530209422, 20.425726978108287,
593  -37.95913986116648, -82.72492115944624, -55.989683732390404, -17.339018331840634,
594  -40.98770407028496, -75.84551331400871, -27.784162383526564, -8.605184393003583,
595  -27.69890223722905, -60.20905633084476, -45.96552625577897, -11.07102217595093,
596  -5.770184708759189, -2.267589857801795, -6.029051711782813, -0.2628931760555133,
597  -16.803906788118184, -28.32298395037651, -17.10128319542855, -1.9925966827431694,
598  0.8501922790892422, 2.2318292474374175, -9.015298617072403, -4.029541692696512,
599  43.30088996980339, 97.71143289655447, 76.70476010255516, 19.011556779791135,
600  18.516316768247634, 24.45134593360126, 27.665312031283975, 5.943340483820066,
601  31.32228625472635, 52.39959189109504, 31.85839011054486, 4.029590114485472,
602  3.9815325289964676, 8.971033805981278, 29.728267630096525, 11.677401390799787,
603  -18.853958921507, -44.51408904790878, -36.33444259595126, -9.463241129880771,
604  -24.367780623957515, -45.40601178072393, -39.16127281449735, -9.67790573881939,
605  -8.781066410243511, -12.354203056544065, -7.6645457576960325, -0.02255685906857252,
606  -3.95667262095958, -10.347653854638338, -24.732734559103847, -8.216640959959477,
607  1.0523710083216429, 3.516556518152356, 3.8717917259782553, 1.3317600034642965,
608  13.162220092955977, 26.562333581969142, 19.660394171252847, 4.528601492289454,
609  -9.541912337765098, -20.55062948167324, -13.481911475770175, -3.9094880935736,
610  -8.393170929979533, -15.44016123842448, -5.397031762171537, -1.8849499491043389},
611  {-23.116868224577047, 0.9814518480561674, -0.4574626086978242, 0.2731212502112612,
612  -1.80832606824697, -1.3100434707594104, -4.887285393197089, -1.862417008378543,
613  -0.9547388104838319, -3.282789033197332, -2.0739529411366675, -1.592739936459111,
614  -0.6023786759978975, 0.6123575137753505, -1.3658235105831409, 0.48336517898133025,
615  2.5118469090084545, 3.178696971037425, 1.2048549088649452, -1.130161950015463,
616  3.2952169706404675, 0.7045584607403725, 7.2889855485991575, 1.962299464008538,
617  1.3161048465117346, 4.404822750482708, 2.643633188388776, 2.0249122154782526,
618  0.9983686556734028, -0.9905060346791288, 2.3996701978030615, -0.5573299210518599,
619  -0.5973731594567653, -1.6777561560738832, -0.9785690638818778, 0.35098910774104297,
620  -1.056794415184413, 1.7297311072179582, -2.5085173105471767, 0.051661304365552496,
621  0.20847605637391098, 0.5580918283958454, 0.38840099837398157, 0.5321697721956298,
622  -0.8970914578530937, -0.829317786017782, -2.097641384898452, -0.46949827575008385,
623  0.3919832281571871, 0.7491124252483132, 0.4027491231172462, -0.03149444193695672,
624  -0.31152788148210675, -1.3276201323460555, -0.442070925320877, -0.25697186951583717,
625  -0.6250742776173865, -2.120492760106572, -1.4493075768405106, -1.3238525462948019,
626  0.6661531082063448, 1.5234150271862745, 1.3023051659401972, 0.6421327311400091,
627  -1.6789274433394894, -3.8287529130466282, -2.0439049813430756, 2.1433148398064077,
628  -4.2907792196492665, -2.6809790381230414, -9.517558609484695, -3.4967220305697992,
629  -1.903069550433429, -6.034001696680207, -3.7760812049382366, -2.7633051097218413,
630  -1.3061555309104733, 1.2499774747993797, -2.8959826252248604, 0.9278741607849952,
631  1.5014557486283593, 4.590397299441975, 2.3175584523705766, -3.2588622291805223,
632  6.6080304310889915, 0.6688554672291502, 14.696704015892465, 3.338072460377589,
633  2.392970500921365, 7.543645469297189, 4.799875126685947, 3.072669691639021,
634  2.083852840340114, -1.8326570572389755, 4.9736981184687465, -0.9773275824845769,
635  -0.931554734299425, -2.8464465941651724, -1.703389959584456, 1.0280862998042721,
636  -2.1660510621441063, 3.763313409057446, -5.129659075115342, 0.28970237728208303,
637  0.4947354956238996, 1.9050694455218036, 0.9580126215005293, 1.744694052147679,
638  -1.7954534462478478, -1.4950901749834884, -4.18893348518759, -0.8248382047167979,
639  0.4880793127595098, 1.2666140705841826, 0.761877254335559, -0.12663449143292382,
640  -0.6090124403344817, -2.412317824535421, -0.8217957523957011, -0.3607200434198603,
641  -1.220688678746228, -4.521684665174689, -2.8427117373794317, -2.8734976496489253,
642  1.2271342720487155, 2.726891670085024, 2.3805775715736672, 1.0479627638997044,
643  -0.9986699027940631, -1.4054935877211392, -1.0164572403300554, 2.7007327437167987,
644  -3.1079241229163017, -0.8871015863260254, -6.884893141919747, -1.7223275710712187,
645  -1.10283406569215, -3.4156905793352053, -2.1722750964108855, -1.362208534948877,
646  -0.9673443023057189, 0.8518175168719608, -2.1474313098879065, 0.5878635474218754,
647  0.6274636642483529, 2.0288397194817662, 0.7297484798473306, -2.899558925186284,
648  4.830390916962642, -1.2206527947855648, 10.746998705493752, 1.1495970446849242,
649  1.3529759487137198, 3.5474548422789667, 2.6894157543429174, 0.8476963145949412,
650  1.6192582681469503, -1.3259960802388377, 3.7988178623636486, -0.6669898357358761,
651  -0.3882997530454304, -1.5862409543478861, -0.7367794012534432, 0.8350108853155689,
652  -1.5580833980347961, 2.8489295898471028, -3.689987167803338, 0.342830110428622,
653  0.3181003265635809, 2.6117144642266794, 0.6207119202299509, 2.2525177606294164,
654  -1.2021170735679334, -0.8547672989952844, -2.7848481892433483, -0.43484290440392215,
655  0.2597501403761271, 0.7310897408169694, 0.292402504805068, -0.10252243881041068,
656  -0.39343069770620787, -1.2842565232567722, -0.48938799917596043, 0.022517978693940677,
657  -0.7831108191021485, -3.494854785181815, -1.8581897690310143, -2.267170724371681,
658  0.6876961255620699, 1.5421161139092874, 1.2760864103329368, 0.4979915988878929,
659  0.03504245060321409, -0.5081893532769755, 0.26652632516925223, 0.821483424937469,
660  -1.0446263486010139, 0.45651482534594834, -2.2889794512157096, -0.0035710721640498377,
661  -0.22893063041192363, -0.6817280723407748, -0.45394952446076786, -0.1660316836932907,
662  -0.34288291644224955, 0.3636645135884464, -0.7490280414931476, 0.20963646538803005,
663  -0.14997775820302195, 0.7037302149110474, -0.46075599384494126, -0.6598072609776864,
664  1.5373261920831283, -1.2194628641664167, 3.4031999971339246, -0.26284185577969765,
665  0.2725231368385721, 0.3940407584886998, 0.5350668487953953, -0.22589841188164428,
666  0.5370612338938372, -0.47899165713897673, 1.231294733206596, -0.2518895742832683,
667  0.04606554469501134, -0.4912358322617365, 0.06465166110137943, 0.15757806080682712,
668  -0.44013287911730004, 0.7982243686419679, -1.0450759065060993, 0.09295746496172796,
669  0.05893265593476826, 1.2237371377032105, 0.11265726017882116, 1.0293852136601345,
670  -0.27398762957091094, -0.2449508554454951, -0.6491528153565014, -0.10515045589636429,
671  0.016214310263421794, 0.2141990264881315, -0.061721802660031244, 0.002118430992595677,
672  -0.15707630664110184, -0.05609711778924975, -0.22691766766183719, 0.1918251564620732,
673  -0.12700770708397613, -1.245681896518363, -0.3381873563375848, -0.7989109086884127,
674  0.060767976588977035, 0.46571698922343785, 0.07225543568347348, 0.16065172928483662,
675  -0.9430751916952431, -4.865082939621061, -7.714289892697707, -5.903385091689415,
676  4.681410471152049, 3.7416767778340727, 9.412337154848501, 4.129300118249375,
677  2.5534577798098326, 7.375291046802886, 4.851737870834768, 3.2763207909010816,
678  2.366372280550422, 0.777773793117376, 4.062110210914398, -0.3520575819420628,
679  2.238315799681004, 4.733378508244641, 5.161481347400695, 5.843862432637252,
680  -7.599391621071845, -3.9958814927958883, -16.02229010418523, -4.728005079727154,
681  -3.8212558766826987, -10.73755551117938, -7.360368525492959, -4.294722289603669,
682  -4.25760011037346, -2.3417608629679307, -7.478602523013251, -0.26086974825011566,
683  0.5236573662259616, 1.4459094641497359, 0.4154567264486104, -0.9426132110529579,
684  3.1776593264949042, -1.1267659902223386, 6.888102682540193, 0.5816137606743723,
685  0.5107785250002053, 0.47990798740647733, 1.1165244622388855, -0.4047336838848423,
686  3.78470447161817, 5.5662048240192235, 6.62991742475424, 1.9834109640069073,
687  -0.8922311138594523, -2.2134047025465406, -1.4497657453466672, -0.4358633320807712,
688  0.2734593690493057, 1.8694294152373914, 0.3207961212465307, 0.4132495432786527,
689  1.070793124701595, 3.8367889924993506, 2.201300177286612, 2.2297928127954947,
690  -2.30106120169512, -4.988532954943366, -3.9013782064430416, -1.7021318787592463,
691  -5.082231042790227, -14.362073105294257, -11.564639566000551, -11.992568383691832,
692  9.091519326088019, 6.804983809124678, 19.09808295406401, 7.049948180094361,
693  4.656911347352434, 13.392416945425794, 8.905101119424216, 5.437396385066677,
694  4.8355007469363045, 1.4551804041257128, 8.268201144295745, -0.6749960994930007,
695  3.915376166580245, 10.54343384387903, 9.667227189522237, 11.67638217995409,
696  -15.375557374325581, -6.012286337674595, -32.541699377354234, -8.027898378088139,
697  -6.998162491712719, -18.401969681028277, -13.501509291352704, -6.3614876619540155,
698  -8.612249798548874, -4.020429219759535, -15.066119015740696, -0.3173244663630612,
699  1.0489676635479555, 2.3715429592411965, 1.0986170340329409, -2.1288311394455377,
700  6.444699409592431, -2.7188748319167644, 13.914887623512186, 0.7618331681005657,
701  0.803359858924523, -1.0825437097810209, 1.8186206043465063, -2.3499455599230714,
702  7.367258241400123, 10.123280510539189, 12.766715356090572, 3.4094839351600967,
703  -1.801721248193644, -4.038503554882482, -2.782652480324032, -0.8473532504576724,
704  0.4536954097529815, 3.232375882056658, 0.4165272485515743, 0.5033590725361137,
705  2.127764483302599, 8.356997601891635, 4.378697175736306, 4.956935453723418,
706  -4.235247171542142, -9.024972670013085, -7.00587819411885, -2.7938301218673587,
707  -3.3690796493319795, -9.536361756036058, -7.568417151458561, -7.479958086041734,
708  6.620714652119204, 2.2024626275524497, 13.946243038401008, 3.1121416997048073,
709  2.6826016242266633, 7.3448785287328064, 5.12363291362999, 2.3463635137013625,
710  3.473972851614235, 0.7722311581601389, 5.882402813032968, -0.4671002305694856,
711  2.478698877908755, 7.301640252000652, 6.228578222100623, 7.672808842733502,
712  -11.121643809136003, -0.7171271879924461, -23.505384612828493, -3.194301286654081,
713  -4.04233797773486, -8.628274152055383, -7.839508057571948, -1.4183274203096516,
714  -5.960930134402588, -2.0215023667551577, -10.294883347611176, -0.02986069832695648,
715  0.61484360601753, 1.4883411607006565, 0.5613298115786165, -1.2049651328416076,
716  4.592626976780593, -2.4585120453266427, 9.883820020884741, 0.12356733207707293,
717  0.4419640694395639, -3.7931979214190505, 1.0952926570898853, -3.854229149641469,
718  4.7333603036240675, 5.868631158809876, 7.974360265943687, 1.727881621569395,
719  -1.031629270175472, -2.7472616466111504, -1.4239519343536813, -0.645136756284046,
720  0.24678947790562233, 1.329182708839653, 0.1847301300658728, -0.3081837686986546,
721  1.398419868433848, 6.75681533786701, 2.8937342007411644, 4.118505493475823,
722  -2.454471707693301, -5.010465067753103, -3.8349703766871244, -1.1267335253796773,
723  -0.9300607079931069, -2.3348839354584925, -2.0399494312587194, -1.587077888805652,
724  2.148449903455912, -0.8143727608548943, 4.55824176419992, -0.07382252386014443,
725  0.5308789498594706, 1.418743523710873, 1.012739027486532, 0.17077802105632145,
726  1.1258434950832452, -0.15567347200703807, 1.918484573950991, -0.280377783557924,
727  0.8648240998154506, 1.2531380091095343, 2.111326506739715, 1.566487961623352,
728  -3.4940885888354387, 1.6285180433187634, -7.355402778033749, 0.2799048699089326,
729  -0.8249447901616804, -1.0023951425391715, -1.620930525707081, 0.6389420697669266,
730  -1.8698510776594048, 0.22000048746122047, -3.2367319774857606, 0.27599301246664254,
731  -0.06712163382326253, 0.8465999712061603, -0.3123865139205009, 0.027670922710967716,
732  1.256926546462637, -0.676659949538589, 2.6855877574707847, 0.04129146241029957,
733  0.16016866572317667, -2.3029738696859567, 0.3933061343850568, -1.917296428240661,
734  1.1656413665114087, 1.270829024622799, 1.856777869281359, 0.2875178511349077,
735  -0.1759851440510829, -0.821283581899479, -0.13869727152268752, -0.23363892532506725,
736  0.17115462268611736, -0.26690080574553576, 0.2579452577174379, -0.4994159955131181,
737  0.24796249562496087, 2.4770666492586315, 0.5480044671785436, 1.480551641450802,
738  -0.35329439648921834, -1.302417158301978, -0.3801663530321093, -0.1980459036458342,
739  -0.14391283033182845, -0.15543031692504883, -0.31594230490736663, 2.558807994646486,
740  -2.4112758975825273, -0.8609890529187396, -4.592016061244067, -2.2445702342665754,
741  -1.2223257103469223, -3.2659765699354466, -1.6111252391710877, -0.8429965514515061,
742  -3.2447184567936347, -4.263099605945172, -6.457371731929015, -2.0681350447557634,
743  -0.0240090687002521, -1.017644018982537, -0.9933650236343965, -3.0353753765812144,
744  4.865774395788321, 1.4639662585686892, 10.16380437364569, 3.766881461284356,
745  2.8055123683880083, 6.061923372210003, 3.6394331592600793, 0.6024911566637456,
746  6.79695421046199, 10.487585795781342, 13.335351558140246, 5.080219365627272,
747  -0.36978804334648885, -0.9108084868057631, -0.029928909498266876, 0.3930263332440518,
748  -2.192254574096296, 0.5607479499303736, -5.33984890251304, -1.4507215869234642,
749  -0.8507548692286946, -0.14008796057896689, -0.485325506539084, 1.7834087075898424,
750  -5.515698106501077, -10.733986210019793, -10.465539181386703, -4.885224729572656,
751  0.705527682279353, 1.795887669781223, 1.1595069973409409, 0.6831114749438711,
752  0.16029609695397085, -0.3200142760615563, 0.6985686235566391, 0.2470849531418935,
753  -1.483016350393882, -4.504647672409192, -2.8178685574093834, -2.418292523980199,
754  3.3084975141100585, 7.404571256847703, 5.895241363803507, 2.727569202237646,
755  -1.1326030914206058, 0.7613614562433213, -0.868035392370075, 4.308047812897712,
756  -5.256162228411995, -1.0851820029783994, -10.568364828708582, -4.130388564430177,
757  -2.153517787141027, -5.290860902634449, -2.7711452934890985, -0.7853576937923208,
758  -6.5394612646632595, -8.132317194511415, -13.061499059404014, -4.061113752104575,
759  0.10570978675968945, -2.496074842521921, -1.9651228283764794, -5.896869066637009,
760  10.24617729143938, 2.6450834774877876, 21.538260572124273, 7.3581241247593425,
761  5.027482362929732, 9.166108974255621, 6.1421848081517965, -0.839654917945154,
762  13.597893070182181, 20.39850451159873, 26.68272981530754, 10.004213468113448,
763  -0.7891765127424151, -1.3576372181996703, -0.21943805378396064, 0.6928807618387509,
764  -4.650851376063656, 0.6004451511835214, -11.3980798049015, -3.153916360141011,
765  -1.3865811732248403, 1.7808576964307576, -0.3455895015504211, 5.033628785604378,
766  -10.892489180056145, -20.85796524415491, -20.62736720140674, -9.448678675456904,
767  1.311410535054165, 3.3636494675884023, 2.014077681233175, 1.3090749141265405,
768  0.4357973798760213, 0.04213609489670489, 1.699683571467176, 0.9721327527440735,
769  -2.9761357703828253, -9.510867029166548, -5.625024121225579, -5.130719012886402,
770  6.285699999076314, 13.955634049212676, 11.059228617552435, 4.797377753362525,
771  -0.7849821466370486, 0.13780538435094059, -0.43253903032746166, 2.448688983422471,
772  -4.217190870636841, 0.10623603832209483, -8.60161403811071, -2.3992822893778794,
773  -1.0875323383661453, -2.201299593260046, -1.1574040093109943, 0.456431806931505,
774  -4.519364256746485, -5.102035089716082, -9.077045629630447, -2.6861348442325834,
775  0.061968991154571995, -1.8408389564137906, -1.4199456306523643, -3.606116184440907,
776  8.034181892755441, 0.426078527700156, 16.996612574905157, 4.157415833702544,
777  2.6495583285577595, 2.8593653586576693, 2.6342833711532876, -2.9884500521875452,
778  9.437805005341943, 12.836517294956138, 18.514212030931958, 6.37232638936257,
779  -0.3254771407227963, -1.063988987240009, 0.39919451001333073, -0.030791126322583295,
780  -3.6483602073567454, 0.11406318785157055, -8.979265081783524, -2.3989163484802702,
781  -0.6448488184832968, 3.995132626441773, 0.3788480553193949, 5.391215876705246,
782  -7.32335906370281, -13.225829644041369, -13.838869251107099, -5.8106633794814115,
783  0.6829608110128902, 2.16609510302078, 0.9119353956339182, 0.8344294637572602,
784  0.40538965556334006, 0.9191303304905887, 1.4550473247509217, 1.2710883323125017,
785  -2.0158953502686927, -7.226307394535979, -3.7252553564176196, -3.9281930899596773,
786  3.915281332752784, 8.199287572409958, 6.670968324018759, 2.2695713046268793,
787  -0.2304664748517098, -0.09020898025482893, -0.016530186199815944, 0.5028017601725878,
788  -1.5859122945694253, 0.900376916557434, -3.291158233390888, -0.18438477710515144,
789  -0.13886204089067178, -0.16404901972418884, -0.014899873924150597, 0.43432625986315543,
790  -1.4099745730145514, -0.8355470926726412, -2.8657654573653417, -0.48602017867960967,
791  -0.18875213019782677, -0.03623834111203905, -0.8490786827751435, -0.5086090805925778,
792  2.7043319169752067, -0.8320180862792768, 5.754363378990092, 0.5216386926404084,
793  0.4335064010665519, -0.36094429313379806, 0.13744159709312953, -1.5746234412363265,
794  2.7964480456867022, 2.639229060339858, 5.508166450130375, 1.248021742900164,
795  0.11172826492838794, -0.5974477605923312, 0.5552827242790954, -0.31279515775167965,
796  -1.0272185329595231, -0.3331254620134132, -2.624047498218715, -0.827904944844704,
797  -0.09960394624067703, 2.1709458820769214, 0.29427223418315407, 2.1152573732251767,
798  -1.8987034612418938, -3.2417196963288006, -3.5955442197118828, -1.2385085647001688,
799  0.07671136731551087, 0.6048820059950231, 0.007215317673399113, 0.24187786106085696,
800  0.009557125124047161, 0.8468436717121222, 0.22328019648921327, 0.682565872311443,
801  -0.4787248903157888, -2.420642218334251, -0.8517620029306272, -1.2802717167269293,
802  0.784262221546669, 1.971181471944874, 1.21754162724028, 0.2918283681738103,
803  0.9820539930078667, 2.1110300493892282, 2.1912390525394585, 0.3352012751274742,
804  1.4378156417878927, 1.481800884983386, 2.295765551942168, 1.1905511145450873,
805  -0.03564073432062287, -0.45713573844113853, -0.8517155554582132, -0.7058557315976941,
806  2.2926105219958117, 4.507304271799512, 4.881622638546105, 2.3501876506143162,
807  -0.7608871761040064, -1.829069939092733, -1.3463831825356465, -0.12107745697721839,
808  -2.47293403497315, -2.321323717973428, -4.606533996935468, -2.4059367206064053,
809  -0.67090143331734, -0.17453607358038425, 0.7712531060678884, 1.3910170162416762,
810  -3.4810539180907654, -7.05933317875315, -7.9502752361950115, -4.2808565832347085,
811  0.0447560589236673, 0.37398655974538997, -0.12599168487940915, 0.15090408574906178,
812  1.1082155156618683, 0.9310028281761333, 2.7549701884418027, 1.486552562462748,
813  0.3927585657220334, -0.7013666410639416, -0.9201986229745671, -1.5969858565877075,
814  1.5088043110008584, 3.7369526592374314, 4.353218813310377, 2.8077486803304055,
815  0.03530263573338743, -0.13829315175826196, 0.04549793775368016, -0.17059524812611926,
816  -0.1716904760323814, -0.32031511070090346, -0.6193616555028711, -0.4094712377227552,
817  0.6035375120627577, 1.9962116186798085, 1.5136773920385167, 1.1901529206443229,
818  -0.5048600818117848, -1.5518959683831781, -1.6695655844159774, -1.0285585644560342,
819  1.838777069147909, 4.053249540971592, 3.607321055838838, 0.6391626191034447,
820  3.1761405666475184, 2.875998788891593, 5.177061453461647, 2.542648076050682,
821  -0.13442842167569324, -1.328675797849428, -1.7785591063729953, -1.6389083654939895,
822  4.575134402963158, 8.803931813963572, 9.791196838807082, 4.630214084550971,
823  -1.440438481833553, -3.4067907259450294, -2.4863497752230614, -0.3155276950856205,
824  -5.32490648253588, -4.984605072706472, -10.043550811707973, -5.082410817703931,
825  -1.085019607184222, 1.1371546516893432, 2.0276450164383277, 3.6310188880597707,
826  -6.985668734421779, -14.211193487426499, -16.113105635959073, -8.744308717592503,
827  0.10589534367318265, 0.7947399424738251, -0.2964896641788073, 0.5067822530545527,
828  2.5293595951225143, 2.58467249001842, 6.2208652754779905, 3.355083821254084,
829  0.4546219073527027, -2.7033718376769684, -2.4450946710421704, -3.8785089641751256,
830  3.136993369786069, 7.833625913714059, 9.147273726935964, 5.906442518680706,
831  0.1100977841670101, -0.31588238185213413, 0.15953748884203378, -0.3319018881666125,
832  -0.5068110807769699, -1.1061924165551318, -1.5676563592860475, -1.1144516558706528,
833  1.3592570713663008, 4.48664326936705, 3.293842589657288, 2.6751705368078547,
834  -0.968158421368571, -3.060476735292468, -3.4107323169591837, -2.090093998478551,
835  1.0588893985986942, 2.319833843357628, 2.071228635351872, 0.18839598892373033,
836  2.461612622246321, 2.007535444194218, 4.0856948510190705, 1.8973112175735878,
837  -0.20914269144122954, -1.3148740148171782, -1.4097467412939295, -1.3788964700506767,
838  3.150015756749781, 5.811972489762411, 6.774891624139855, 3.1167290566700103,
839  -0.8202473444689531, -2.261882507969858, -1.3512588705052622, -0.49668898862728383,
840  -4.241223960489151, -3.4969716570340097, -8.177125167276245, -3.680671208363492,
841  -0.26402102668362204, 2.18908768548863, 2.3653247356414795, 3.2886781828128733,
842  -4.995897629356477, -9.560343279445078, -11.688614901657274, -6.101029261430085,
843  -0.008962567648268305, 0.7820979360549245, -0.3933513358642813, 0.5539387873577652,
844  2.17930220693961, 2.4924351572117303, 5.205871612444753, 2.7370581860741368,
845  -0.08447095993324183, -3.383511901338352, -2.4417437247757334, -3.3776030956505565,
846  2.3364217541529797, 5.535120483720675, 6.894329848626512, 4.061864605318988,
847  0.11955360075444332, -0.2459940403350629, 0.13683643133117585, -0.18632836409233278,
848  -0.49122742296094657, -1.405126197663776, -1.346415589483513, -1.1295357900016825,
849  1.0939187511758064, 3.7184670797432773, 2.6064750921505038, 2.150831545681285,
850  -0.5843696605734294, -1.873572350901668, -2.3814323126134695, -1.2216424742291565,
851  0.13904778937649098, 0.6913534209888894, 0.24548141167178983, 0.09490930251922691,
852  0.9069840315223701, 0.2188956209756725, 1.561264314372238, 0.41180351426737616,
853  -0.10062218605162343, -0.5069684841328126, -0.4551299741870025, -0.47231768746678426,
854  0.9302671397244922, 1.413360212893167, 2.0218195273500896, 0.7560137052041682,
855  -0.0613059289935336, -0.8885163910526899, -0.041511842639010865, -0.39098924049176276,
856  -1.4621658849937376, -0.7321486215805635, -2.8823005154627026, -0.9224593571525475,
857  0.056645252559974324, 1.1704969927304774, 0.9618976021592971, 1.1218685234725854,
858  -1.508491406126268, -2.4461748683752376, -3.6181716927130765, -1.567236048347695,
859  -0.09400053921308427, 0.4337522717687534, -0.2985089046487701, 0.2880963593652268,
860  0.7011172114525834, 0.9789972852595383, 1.6859279370110016, 0.8568184336545528,
861  -0.1505479747793288, -1.4948312527412781, -0.9471035865426529, -1.0978555246892938,
862  0.697424382353347, 1.4656518550473265, 2.1384619145428587, 0.8787213372615952,
863  0.07527709678106476, -0.16007338154122408, 0.09394259241526015, -0.07416326404199935,
864  -0.14441298907604505, -0.6216575487796945, -0.38331662062228133, -0.3905169276476954,
865  0.35950158416380873, 1.2715430592506891, 0.8565877894579899, 0.6662767823945615,
866  -0.08645874106696283, -0.33907893889409024, -0.6050849688599556, -0.04637264808616237}};
867 }

◆ getInputLimits()

template<ComputeStage compute_stage>
std::vector< std::vector< Real > > SS316HLAROMANCEStressUpdateTest< compute_stage >::getInputLimits ( )
overrideprotectedvirtual

Implements ADLAROMANCEStressUpdateBase< compute_stage >.

Definition at line 85 of file SS316HLAROMANCEStressUpdateTest.C.

86 {
87  return {{1.32776E+12, 9.99959E+12},
88  {2.93039E+11, 9.99798E+11},
89  {2.010652839, 49.98748468},
90  {0.0, 0.002074531},
91  {800.0160634, 949.9873586}};
92 }

◆ getMakeFrameHelper()

template<ComputeStage compute_stage>
std::vector< std::vector< unsigned int > > ADLAROMANCEStressUpdateBase< compute_stage >::getMakeFrameHelper ( ) const
protectedinherited

Definition at line 593 of file ADLAROMANCEStressUpdateBase.C.

594 {
595  std::vector<std::vector<unsigned int>> v(_num_coefs, std::vector<unsigned int>(_num_inputs));
596 
597  for (unsigned int numcoeffs = 0; numcoeffs < _num_coefs; ++numcoeffs)
598  for (unsigned int invar = 0; invar < _num_inputs; ++invar)
599  v[numcoeffs][invar] = numcoeffs / MathUtils::pow(_degree, invar) % _degree;
600 
601  return v;
602 }

◆ getTransform()

template<ComputeStage compute_stage>
std::vector< std::vector< ROMInputTransform > > SS316HLAROMANCEStressUpdateTest< compute_stage >::getTransform ( )
overrideprotectedvirtual

◆ getTransformCoefs()

template<ComputeStage compute_stage>
std::vector< std::vector< Real > > SS316HLAROMANCEStressUpdateTest< compute_stage >::getTransformCoefs ( )
overrideprotectedvirtual

Returns factors for the functions for the conversion functions given in getTransform.

Implements ADLAROMANCEStressUpdateBase< compute_stage >.

Definition at line 77 of file SS316HLAROMANCEStressUpdateTest.C.

78 {
79  return {
80  {1.0, 1.0, 1.0e1, 4.0e-5, 0.0}, {1.0e13, 1.0, 1.0e1, 0.0, 1.0}, {0.0, 1.0, 5.0, 1.0e-4, 0.0}};
81 }

◆ getTransformedLimits()

template<ComputeStage compute_stage>
std::vector< std::vector< std::vector< Real > > > ADLAROMANCEStressUpdateBase< compute_stage >::getTransformedLimits ( ) const
protectedinherited

Definition at line 567 of file ADLAROMANCEStressUpdateBase.C.

568 {
569  std::vector<std::vector<std::vector<Real>>> transformed_limits(
570  _num_outputs, std::vector<std::vector<Real>>(_num_inputs, std::vector<Real>(2)));
571 
572  for (unsigned int i = 0; i < _num_outputs; ++i)
573  {
574  for (unsigned int j = 0; j < _num_inputs; ++j)
575  {
576  for (unsigned int k = 0; k < 2; ++k)
577  {
578  if (_transform[i][j] == ROMInputTransform::EXP)
579  transformed_limits[i][j][k] = std::exp(_input_limits[j][k] / _transform_coefs[i][j]);
580  else if (_transform[i][j] == ROMInputTransform::LOG)
581  transformed_limits[i][j][k] = std::log(_input_limits[j][k] + _transform_coefs[i][j]);
582  else
583  transformed_limits[i][j][k] = _input_limits[j][k];
584  }
585  }
586  }
587 
588  return transformed_limits;
589 }

◆ initialGuess()

template<ComputeStage compute_stage>
virtual ADReal ADSingleVariableReturnMappingSolution< compute_stage >::initialGuess ( const ADReal &  )
inlineprotectedvirtualinherited

Compute an initial guess for the value of the scalar.

For some cases, an intellegent starting point can provide enhanced robustness in the Newton iterations. This is also an opportunity for classes that derive from this to perform initialization tasks.

Parameters
effective_trial_stressEffective trial stress

Reimplemented in ADViscoplasticityStressUpdate< compute_stage >.

Definition at line 82 of file ADSingleVariableReturnMappingSolution.h.

82 { return 0.0; }

◆ initialSetup()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::initialSetup ( )
overrideprotectedvirtualinherited

Definition at line 129 of file ADLAROMANCEStressUpdateBase.C.

130 {
132 
133  _num_outputs = _transform.size();
134  if (_num_outputs != 3)
135  mooseError("In ", _name, ": _num_outputs (", _num_outputs, ") is not 3");
136 
137  _num_inputs = _transform[0].size();
138  if (_num_inputs != 5 && _num_inputs != 6)
139  mooseError("In ", _name, ": _num_inputs (", _num_inputs, ") is not 5 or 6");
140  _use_env = _num_inputs == 6 ? true : false;
141 
143  if (_transform_coefs.size() != _num_outputs || _transform_coefs[0].size() != _num_inputs)
144  mooseError("In ", _name, ": transform_coef is the wrong shape!");
145 
147  if (_input_limits.size() != _num_inputs || _input_limits[0].size() != 2)
148  mooseError("In ", _name, ": input_limits is the wrong shape!");
149 
150  _coefs = getCoefs();
151  if (_coefs.size() != _num_outputs)
152  mooseError("In ", _name, ": coefs is the wrong shape!");
153 
154  _num_coefs = _coefs[0].size();
156  if (!_degree || _degree > 4)
157  mooseError("In ", _name, ": degree must be 1, 2, 3 or 4.");
158 
161 
162  Moose::out << "ROM model info:\n name:\t" << _name << "\n number of outputs:\t" << _num_outputs
163  << "\n number of inputs:\t" << _num_inputs
164  << "\n degree (max Legendre degree + constant):\t" << _degree
165  << "\n number of coefficients:\t" << _num_coefs << std::endl;
166 }

◆ initQpStatefulProperties()

template<ComputeStage compute_stage>
void ADLAROMANCEStressUpdateBase< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ADRadialReturnCreepStressUpdateBase< compute_stage >.

Definition at line 170 of file ADLAROMANCEStressUpdateBase.C.

171 {
172  _mobile_dislocations[_qp] = _initial_mobile_dislocations;
173  _immobile_dislocations[_qp] = _initial_immobile_dislocations;
174 
176 }

◆ internalSolve()

template<ComputeStage compute_stage>
ADSingleVariableReturnMappingSolution< compute_stage >::SolveState ADSingleVariableReturnMappingSolution< compute_stage >::internalSolve ( const ADReal  effective_trial_stress,
ADReal &  scalar,
std::stringstream *  iter_output = nullptr 
)
privateinherited

Method called from within this class to perform the actual return mappping iterations.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for
iter_outputOutput stream – if null, no output is produced
Returns
Whether the solution was successful

Definition at line 162 of file ADSingleVariableReturnMappingSolution.C.

164 {
165  scalar = initialGuess(effective_trial_stress);
166  ADReal scalar_old = scalar;
167  ADReal scalar_increment = 0.0;
168  const ADReal min_permissible_scalar = minimumPermissibleValue(effective_trial_stress);
169  const ADReal max_permissible_scalar = maximumPermissibleValue(effective_trial_stress);
170  ADReal scalar_upper_bound = max_permissible_scalar;
171  ADReal scalar_lower_bound = min_permissible_scalar;
172  _iteration = 0;
173 
174  _initial_residual = _residual = computeResidual(effective_trial_stress, scalar);
175 
176  ADReal residual_old = _residual;
177  Real init_resid_sign = MathUtils::sign(MetaPhysicL::raw_value(_residual));
178  Real reference_residual = computeReferenceResidual(effective_trial_stress, scalar);
179 
180  if (converged(_residual, reference_residual))
181  {
182  iterationFinalize(scalar);
183  outputIterationStep(iter_output, effective_trial_stress, scalar, reference_residual);
184  return SolveState::SUCCESS;
185  }
186 
187  _residual_history.assign(_num_resids, std::numeric_limits<Real>::max());
188  _residual_history[0] = MetaPhysicL::raw_value(_residual);
189 
190  while (_iteration < _max_its && !converged(_residual, reference_residual) &&
191  !convergedAcceptable(_iteration, reference_residual))
192  {
193  scalar_increment = -_residual / computeDerivative(effective_trial_stress, scalar);
194  scalar = scalar_old + scalar_increment;
195 
196  if (_check_range)
197  checkPermissibleRange(scalar,
198  scalar_increment,
199  scalar_old,
200  min_permissible_scalar,
201  max_permissible_scalar,
202  iter_output);
203 
204  _residual = computeResidual(effective_trial_stress, scalar);
205  reference_residual = computeReferenceResidual(effective_trial_stress, scalar);
206  iterationFinalize(scalar);
207 
208  if (_bracket_solution)
209  updateBounds(
210  scalar, _residual, init_resid_sign, scalar_upper_bound, scalar_lower_bound, iter_output);
211 
212  if (converged(_residual, reference_residual))
213  {
214  outputIterationStep(iter_output, effective_trial_stress, scalar, reference_residual);
215  break;
216  }
217  else
218  {
219  bool modified_increment = false;
220 
221  // Line Search
222  if (_line_search)
223  {
224  if (residual_old - _residual != 0.0)
225  {
226  ADReal alpha = residual_old / (residual_old - _residual);
227  alpha = MathUtils::clamp(alpha, 1.0e-2, 1.0);
228 
229  if (alpha != 1.0)
230  {
231  modified_increment = true;
232  scalar_increment *= alpha;
233  if (iter_output)
234  *iter_output << " Line search alpha = " << MetaPhysicL::raw_value(alpha)
235  << " increment = " << MetaPhysicL::raw_value(scalar_increment)
236  << std::endl;
237  }
238  }
239  }
240 
241  if (_bracket_solution)
242  {
243  // Check to see whether trial scalar_increment is outside the bounds, and set it to a point
244  // within the bounds if it is
245  if (scalar_old + scalar_increment >= scalar_upper_bound ||
246  scalar_old + scalar_increment <= scalar_lower_bound)
247  {
248  if (scalar_upper_bound != max_permissible_scalar &&
249  scalar_lower_bound != min_permissible_scalar)
250  {
251  const Real frac = 0.5;
252  scalar_increment =
253  (1.0 - frac) * scalar_lower_bound + frac * scalar_upper_bound - scalar_old;
254  modified_increment = true;
255  if (iter_output)
256  *iter_output << " Trial scalar_increment exceeded bounds. Setting between "
257  "lower/upper bounds. frac: "
258  << frac << std::endl;
259  }
260  }
261  }
262 
263  // Update the trial scalar and recompute residual if the line search or bounds checking
264  // modified the increment
265  if (modified_increment)
266  {
267  scalar = scalar_old + scalar_increment;
268  _residual = computeResidual(effective_trial_stress, scalar);
269  reference_residual = computeReferenceResidual(effective_trial_stress, scalar);
270  iterationFinalize(scalar);
271 
272  if (_bracket_solution)
273  updateBounds(scalar,
274  _residual,
275  init_resid_sign,
276  scalar_upper_bound,
277  scalar_lower_bound,
278  iter_output);
279  }
280  }
281 
282  outputIterationStep(iter_output, effective_trial_stress, scalar, reference_residual);
283 
284  ++_iteration;
285  residual_old = _residual;
286  scalar_old = scalar;
287  _residual_history[_iteration % _num_resids] = MetaPhysicL::raw_value(_residual);
288  }
289 
290  if (std::isnan(_residual) || std::isinf(MetaPhysicL::raw_value(_residual)))
291  return SolveState::NAN_INF;
292 
293  if (_iteration == _max_its)
295 
296  return SolveState::SUCCESS;
297 }

◆ iterationFinalize()

template<ComputeStage compute_stage>
virtual void ADSingleVariableReturnMappingSolution< compute_stage >::iterationFinalize ( ADReal  )
inlineprotectedvirtualinherited

Finalize internal state variables for a model for a given iteration.

Parameters
scalarInelastic strain increment magnitude being solved for

Reimplemented in ADIsotropicPlasticityStressUpdate< compute_stage >.

Definition at line 114 of file ADSingleVariableReturnMappingSolution.h.

114 {}

◆ maximumPermissibleValue()

template<ComputeStage compute_stage>
ADReal ADRadialReturnStressUpdate< compute_stage >::maximumPermissibleValue ( const ADReal &  effective_trial_stress) const
overridevirtualinherited

Compute the maximum permissible value of the scalar.

For some models, the magnitude of this may be known.

Parameters
effective_trial_stressEffective trial stress

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 133 of file ADRadialReturnStressUpdate.C.

135 {
136  return effective_trial_stress / _three_shear_modulus;
137 }

◆ minimumPermissibleValue()

template<ComputeStage compute_stage>
virtual ADReal ADRadialReturnStressUpdate< compute_stage >::minimumPermissibleValue ( const ADReal &  effective_trial_stress) const
inlineoverridevirtualinherited

Compute the minimum permissible value of the scalar.

For some models, the magnitude of this may be known.

Parameters
effective_trial_stressEffective trial stress

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 73 of file ADRadialReturnStressUpdate.h.

74  {
75  return 0.0;
76  }

◆ outputIterationStep()

template<ComputeStage compute_stage>
void ADSingleVariableReturnMappingSolution< compute_stage >::outputIterationStep ( std::stringstream *  iter_output,
const ADReal &  effective_trial_stress,
const ADReal &  scalar,
const Real  reference_residual 
)
protectedvirtualinherited

Output information for a single iteration step to build the convergence history of the model.

Parameters
iter_outputOutput stream
itCurrent iteration count
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for
residualCurrent value of the residual
referenceCurrent value of the reference quantity

Definition at line 393 of file ADSingleVariableReturnMappingSolution.C.

398 {
399  if (iter_output)
400  {
401  const unsigned int it = _iteration;
402  const Real residual = MetaPhysicL::raw_value(_residual);
403 
404  *iter_output << " iteration=" << it
405  << " trial_stress=" << MetaPhysicL::raw_value(effective_trial_stress)
406  << " scalar=" << MetaPhysicL::raw_value(scalar) << " residual=" << residual
407  << " ref_res=" << reference_residual
408  << " rel_res=" << std::abs(residual) / reference_residual
409  << " rel_tol=" << _relative_tolerance << " abs_res=" << std::abs(residual)
410  << " abs_tol=" << _absolute_tolerance << '\n';
411  }
412 }

◆ outputIterationSummary()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::outputIterationSummary ( std::stringstream *  iter_output,
const unsigned int  total_it 
)
overrideprotectedvirtualinherited

Output summary information for the convergence history of the model.

Parameters
iter_outputOutput stream
total_itTotal iteration count

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 153 of file ADRadialReturnStressUpdate.C.

155 {
156  if (iter_output)
157  {
158  *iter_output << "At element " << _current_elem->id() << " _qp=" << _qp << " Coordinates "
159  << _q_point[_qp] << " block=" << _current_elem->subdomain_id() << '\n';
160  }
162  total_it);
163 }

◆ propagateQpStatefulProperties()

template<ComputeStage compute_stage>
void ADRadialReturnCreepStressUpdateBase< compute_stage >::propagateQpStatefulProperties ( )
overrideprotectedvirtualinherited

If updateState is not called during a timestep, this will be.

This method allows derived classes to set internal parameters from their Old values, for instance

Reimplemented from ADStressUpdateBase< compute_stage >.

Definition at line 44 of file ADRadialReturnCreepStressUpdateBase.C.

45 {
46  _creep_strain[_qp] = _creep_strain_old[_qp];
47 
49 }

◆ propagateQpStatefulPropertiesRadialReturn()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::propagateQpStatefulPropertiesRadialReturn ( )
protectedinherited

Propagate the properties pertaining to this intermediate class.

This is intended to be called from propagateQpStatefulProperties() in classes that inherit from this one. This is intentionally named uniquely because almost all models that derive from this class have their own stateful properties, and this forces them to define their own implementations of propagateQpStatefulProperties().

Definition at line 61 of file ADRadialReturnStressUpdate.C.

62 {
63  _effective_inelastic_strain[_qp] = _effective_inelastic_strain_old[_qp];
64 }

◆ requiresIsotropicTensor()

template<ComputeStage compute_stage>
bool ADRadialReturnStressUpdate< compute_stage >::requiresIsotropicTensor ( )
inlineoverridevirtualinherited

Does the model require the elasticity tensor to be isotropic?

Implements ADStressUpdateBase< compute_stage >.

Definition at line 89 of file ADRadialReturnStressUpdate.h.

89 { return true; }

◆ resetProperties()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::resetProperties ( )
inlinefinalinherited

Definition at line 104 of file ADStressUpdateBase.h.

104 {}

◆ resetQpProperties()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::resetQpProperties ( )
inlinefinalinherited

Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten.

Definition at line 103 of file ADStressUpdateBase.h.

103 {}

◆ returnMappingSolve()

template<ComputeStage compute_stage>
void ADSingleVariableReturnMappingSolution< compute_stage >::returnMappingSolve ( const ADReal &  effective_trial_stress,
ADReal &  scalar,
const ConsoleStream &  console 
)
protectedinherited

Perform the return mapping iterations.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for
consoleConsole output

Definition at line 101 of file ADSingleVariableReturnMappingSolution.C.

103 {
104  // construct the stringstream here only if the debug level is set to ALL
105  std::unique_ptr<std::stringstream> iter_output =
107  ? libmesh_make_unique<std::stringstream>()
108  : nullptr;
109 
110  // do the internal solve and capture iteration info during the first round
111  // iff full history output is requested regardless of whether the solve failed or succeeded
112  auto solve_state =
113  internalSolve(effective_trial_stress,
114  scalar,
115  _internal_solve_full_iteration_history ? iter_output.get() : nullptr);
116  if (solve_state != SolveState::SUCCESS &&
118  {
119  // output suppressed by user, throw immediately
121  throw MooseException("");
122 
123  // user expects some kind of output, if necessary setup output stream now
124  if (!iter_output)
125  iter_output = libmesh_make_unique<std::stringstream>();
126 
127  // add the appropriate error message to the output
128  switch (solve_state)
129  {
130  case SolveState::NAN_INF:
131  *iter_output << "Encountered inf or nan in material return mapping iterations.\n";
132  break;
133 
135  *iter_output << "Exceeded maximum iterations in material return mapping iterations.\n";
136  break;
137 
138  default:
139  mooseError("Unhandled solver state");
140  }
141 
142  // if full history output is only requested for failed solves we have to repeat
143  // the solve a second time
145  internalSolve(effective_trial_stress, scalar, iter_output.get());
146 
147  // Append summary and throw exception
148  outputIterationSummary(iter_output.get(), _iteration);
149  throw MooseException(iter_output->str());
150  }
151 
153  {
154  // the solve did not fail but the user requested debug output anyways
155  outputIterationSummary(iter_output.get(), _iteration);
156  console << iter_output->str();
157  }
158 }

◆ setQp()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::setQp ( unsigned int  qp)
inherited

Sets the value of the global variable _qp for inheriting classes.

Definition at line 47 of file ADStressUpdateBase.C.

48 {
49  _qp = qp;
50 }

◆ updateBounds()

template<ComputeStage compute_stage>
void ADSingleVariableReturnMappingSolution< compute_stage >::updateBounds ( const ADReal &  scalar,
const ADReal &  residual,
const Real  init_resid_sign,
ADReal &  scalar_upper_bound,
ADReal &  scalar_lower_bound,
std::stringstream *  iter_output 
)
privateinherited

Update the upper and lower bounds of the root for the effective inelastic strain.

Parameters
scalarCurrent value of the inelastic strain increment
residualCurrent value of the residual
init_resid_signSign of the initial value of the residual
scalar_upper_boundUpper bound value of scalar
scalar_lower_boundLower bound value of scalar
iter_outputOutput stream

Definition at line 365 of file ADSingleVariableReturnMappingSolution.C.

371 {
372  // Update upper/lower bounds as applicable
373  if (residual * init_resid_sign < 0.0 && scalar < scalar_upper_bound)
374  {
375  scalar_upper_bound = scalar;
376  if (scalar_upper_bound < scalar_lower_bound)
377  {
378  scalar_upper_bound = scalar_lower_bound;
379  scalar_lower_bound = 0.0;
380  if (iter_output)
381  *iter_output << " Corrected for scalar_upper_bound < scalar_lower_bound" << std::endl;
382  }
383  }
384  // Don't permit setting scalar_lower_bound > scalar_upper_bound (but do permit the reverse).
385  // This ensures that if we encounter multiple roots, we pick the lowest one.
386  else if (residual * init_resid_sign > 0.0 && scalar > scalar_lower_bound &&
387  scalar < scalar_upper_bound)
388  scalar_lower_bound = scalar;
389 }

◆ updateState()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::updateState ( ADRankTwoTensor &  strain_increment,
ADRankTwoTensor &  inelastic_strain_increment,
const ADRankTwoTensor &  rotation_increment,
ADRankTwoTensor &  stress_new,
const RankTwoTensor stress_old,
const ADRankFourTensor &  elasticity_tensor,
const RankTwoTensor elastic_strain_old 
)
overridevirtualinherited

A radial return (J2) mapping method is performed with return mapping iterations.

Parameters
strain_incrementSum of elastic and inelastic strain increments
inelastic_strain_incrementInelastic strain increment calculated by this class
rotationincrement Not used by this class
stress_newNew trial stress from pure elastic calculation
stress_oldOld state of stress
elasticity_tensorRank 4 C_{ijkl}, must be isotropic
elastic_strain_oldOld state of total elastic strain

Implements ADStressUpdateBase< compute_stage >.

Definition at line 68 of file ADRadialReturnStressUpdate.C.

76 {
77  // compute the deviatoric trial stress and trial strain from the current intermediate
78  // configuration
79  ADRankTwoTensor deviatoric_trial_stress = stress_new.deviatoric();
80 
81  // compute the effective trial stress
82  ADReal dev_trial_stress_squared =
83  deviatoric_trial_stress.doubleContraction(deviatoric_trial_stress);
84  ADReal effective_trial_stress =
85  dev_trial_stress_squared == 0.0 ? 0.0 : std::sqrt(3.0 / 2.0 * dev_trial_stress_squared);
86 
87  // Set the value of 3 * shear modulus for use as a reference residual value
89 
90  computeStressInitialize(effective_trial_stress, elasticity_tensor);
91 
92  // Use Newton iteration to determine the scalar effective inelastic strain increment
93  ADReal scalar_effective_inelastic_strain = 0.0;
94  if (!MooseUtils::absoluteFuzzyEqual(effective_trial_stress, 0.0))
95  {
96  returnMappingSolve(effective_trial_stress, scalar_effective_inelastic_strain, _console);
97  if (scalar_effective_inelastic_strain != 0.0)
98  inelastic_strain_increment =
99  deviatoric_trial_stress *
100  (1.5 * scalar_effective_inelastic_strain / effective_trial_stress);
101  else
102  inelastic_strain_increment.zero();
103  }
104  else
105  inelastic_strain_increment.zero();
106 
107  if (_apply_strain)
108  {
109  strain_increment -= inelastic_strain_increment;
110  _effective_inelastic_strain[_qp] =
111  _effective_inelastic_strain_old[_qp] + scalar_effective_inelastic_strain;
112 
113  // Use the old elastic strain here because we require tensors used by this class
114  // to be isotropic and this method natively allows for changing in time
115  // elasticity tensors
116  stress_new = elasticity_tensor * (elastic_strain_old + strain_increment);
117  }
118 
119  computeStressFinalize(inelastic_strain_increment);
120 }

◆ validParams()

template<ComputeStage compute_stage>
InputParameters SS316HLAROMANCEStressUpdateTest< compute_stage >::validParams ( )
static

Definition at line 18 of file SS316HLAROMANCEStressUpdateTest.C.

19 {
21  params.addClassDescription("LAROMANCE creep update model for SS316H");
22 
23  // Override defaults for material specific parameters below
24  params.addRangeCheckedParam<Real>("initial_mobile_dislocation_density",
25  5.0e12,
26  "initial_mobile_dislocation_density >=1.32776E+12 & "
27  "initial_mobile_dislocation_density <= 9.99959E+12",
28  "Initial density of mobile (glissile) dislocations (1/m^2)");
29  params.addRangeCheckedParam<Real>(
30  "max_relative_mobile_dislocation_increment",
31  0.5,
32  "max_relative_mobile_dislocation_increment > 0.0",
33  "Maximum increment of density of mobile (glissile) dislocations.");
34  params.addRangeCheckedParam<Real>("initial_immobile_dislocation_density",
35  5.0e11,
36  "initial_immobile_dislocation_density >= 2.93039E+11 & "
37  "initial_immobile_dislocation_density <= 9.99798E+11",
38  "Immobile (locked) dislocation density initial value (1/m^2).");
39  params.addRangeCheckedParam<Real>(
40  "max_relative_immobile_dislocation_increment",
41  0.5,
42  "max_relative_immobile_dislocation_increment > 0.0",
43  "Maximum increment of immobile (locked) dislocation density initial value (1/m^2).");
44  return params;
45 }

Member Data Documentation

◆ _absolute_tolerance

template<ComputeStage compute_stage>
Real ADSingleVariableReturnMappingSolution< compute_stage >::_absolute_tolerance
privateinherited

Absolute convergence tolerance.

Definition at line 181 of file ADSingleVariableReturnMappingSolution.h.

◆ _acceptable_multiplier

template<ComputeStage compute_stage>
Real ADSingleVariableReturnMappingSolution< compute_stage >::_acceptable_multiplier
privateinherited

Multiplier applied to relative and absolute tolerances for acceptable convergence.

Definition at line 184 of file ADSingleVariableReturnMappingSolution.h.

◆ _apply_strain

template<ComputeStage compute_stage>
const bool ADRadialReturnStressUpdate< compute_stage >::_apply_strain
protectedinherited

Definition at line 129 of file ADRadialReturnStressUpdate.h.

◆ _base_name

template<ComputeStage compute_stage>
const std::string ADStressUpdateBase< compute_stage >::_base_name
protectedinherited

Name used as a prefix for all material properties related to the stress update model.

Definition at line 109 of file ADStressUpdateBase.h.

◆ _bracket_solution

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_bracket_solution
protectedinherited

Whether to save upper and lower bounds of root for scalar, and set solution to the midpoint between those bounds if outside them.

Definition at line 131 of file ADSingleVariableReturnMappingSolution.h.

◆ _check_range

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_check_range
protectedinherited

Whether to check to see whether iterative solution is within admissible range, and set within that range if outside.

Definition at line 124 of file ADSingleVariableReturnMappingSolution.h.

Referenced by ADViscoplasticityStressUpdate< compute_stage >::ADViscoplasticityStressUpdate().

◆ _coefs

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADLAROMANCEStressUpdateBase< compute_stage >::_coefs
protectedinherited

Coefficients used with Legendre polynomials defined by the ROM data set.

Definition at line 296 of file ADLAROMANCEStressUpdateBase.h.

◆ _creep_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADRadialReturnCreepStressUpdateBase< compute_stage >::_creep_strain_old
protectedinherited

Definition at line 44 of file ADRadialReturnCreepStressUpdateBase.h.

◆ _creep_strain_old_forcing_function

template<ComputeStage compute_stage>
const Function* const ADLAROMANCEStressUpdateBase< compute_stage >::_creep_strain_old_forcing_function
protectedinherited

Optional old creep strain forcing function.

Definition at line 272 of file ADLAROMANCEStressUpdateBase.h.

◆ _degree

template<ComputeStage compute_stage>
unsigned int ADLAROMANCEStressUpdateBase< compute_stage >::_degree
protectedinherited

Legendre polynomial degree for the ROM data set.

Definition at line 281 of file ADLAROMANCEStressUpdateBase.h.

◆ _derivative

template<ComputeStage compute_stage>
ADReal ADLAROMANCEStressUpdateBase< compute_stage >::_derivative
protectedinherited

Container for derivative of creep rate with respect to strain.

Definition at line 314 of file ADLAROMANCEStressUpdateBase.h.

Referenced by ADLAROMANCEStressUpdateBase< compute_stage >::computeDerivative().

◆ _effective_inelastic_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<Real>& ADRadialReturnStressUpdate< compute_stage >::_effective_inelastic_strain_old
protectedinherited

Definition at line 127 of file ADRadialReturnStressUpdate.h.

◆ _environmental

template<ComputeStage compute_stage>
const ADVariableValue& ADLAROMANCEStressUpdateBase< compute_stage >::_environmental
protectedinherited

Optionally coupled environmental factor.

Definition at line 214 of file ADLAROMANCEStressUpdateBase.h.

◆ _extrapolate_stress

template<ComputeStage compute_stage>
const bool ADLAROMANCEStressUpdateBase< compute_stage >::_extrapolate_stress
protectedinherited

Flag to optinoally allow model extrapolation to zero stress.

Definition at line 223 of file ADLAROMANCEStressUpdateBase.h.

◆ _failed

template<ComputeStage compute_stage>
MaterialProperty<Real>& ADLAROMANCEStressUpdateBase< compute_stage >::_failed
protectedinherited

Material property to indicate if material point is outside of input limits.

Definition at line 311 of file ADLAROMANCEStressUpdateBase.h.

◆ _immobile_dislocation_increment

template<ComputeStage compute_stage>
ADReal ADLAROMANCEStressUpdateBase< compute_stage >::_immobile_dislocation_increment
protectedinherited

Container for immobile dislocation increment.

Definition at line 263 of file ADLAROMANCEStressUpdateBase.h.

◆ _immobile_dislocations_old

template<ComputeStage compute_stage>
const MaterialProperty<Real>& ADLAROMANCEStressUpdateBase< compute_stage >::_immobile_dislocations_old
protectedinherited

Definition at line 250 of file ADLAROMANCEStressUpdateBase.h.

◆ _immobile_function

template<ComputeStage compute_stage>
const Function* const ADLAROMANCEStressUpdateBase< compute_stage >::_immobile_function
protectedinherited

Optional immobile dislocation forcing function.

Definition at line 260 of file ADLAROMANCEStressUpdateBase.h.

◆ _immobile_old

template<ComputeStage compute_stage>
Real ADLAROMANCEStressUpdateBase< compute_stage >::_immobile_old
protectedinherited

Container for old immobile dislocation value.

Definition at line 266 of file ADLAROMANCEStressUpdateBase.h.

◆ _initial_immobile_dislocations

template<ComputeStage compute_stage>
const Real ADLAROMANCEStressUpdateBase< compute_stage >::_initial_immobile_dislocations
protectedinherited

Initial immobile dislocation value.

Definition at line 254 of file ADLAROMANCEStressUpdateBase.h.

◆ _initial_mobile_dislocations

template<ComputeStage compute_stage>
const Real ADLAROMANCEStressUpdateBase< compute_stage >::_initial_mobile_dislocations
protectedinherited

Initial mobile dislocation value.

Definition at line 234 of file ADLAROMANCEStressUpdateBase.h.

◆ _initial_residual

template<ComputeStage compute_stage>
ADReal ADSingleVariableReturnMappingSolution< compute_stage >::_initial_residual
privateinherited

Residual values, kept as members to retain solver state for summary outputting.

Definition at line 196 of file ADSingleVariableReturnMappingSolution.h.

◆ _input_limits

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADLAROMANCEStressUpdateBase< compute_stage >::_input_limits
protectedinherited

Input limits defined by the ROM data set.

Definition at line 293 of file ADLAROMANCEStressUpdateBase.h.

◆ _internal_solve_full_iteration_history

template<ComputeStage compute_stage>
const bool ADSingleVariableReturnMappingSolution< compute_stage >::_internal_solve_full_iteration_history
privateinherited

Whether to output iteration information all the time (regardless of whether iterations converge)

Definition at line 175 of file ADSingleVariableReturnMappingSolution.h.

◆ _internal_solve_output_on

template<ComputeStage compute_stage>
enum ADSingleVariableReturnMappingSolution::InternalSolveOutput ADSingleVariableReturnMappingSolution< compute_stage >::_internal_solve_output_on
privateinherited

◆ _iteration

template<ComputeStage compute_stage>
unsigned int ADSingleVariableReturnMappingSolution< compute_stage >::_iteration
privateinherited

iteration number

Definition at line 193 of file ADSingleVariableReturnMappingSolution.h.

◆ _line_search

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_line_search
protectedinherited

Whether to use line searches to improve convergence.

Definition at line 127 of file ADSingleVariableReturnMappingSolution.h.

◆ _makeframe_helper

template<ComputeStage compute_stage>
std::vector<std::vector<unsigned int> > ADLAROMANCEStressUpdateBase< compute_stage >::_makeframe_helper
protectedinherited

Helper container defined by the ROM data set.

Definition at line 305 of file ADLAROMANCEStressUpdateBase.h.

◆ _max_immobile_increment

template<ComputeStage compute_stage>
const Real ADLAROMANCEStressUpdateBase< compute_stage >::_max_immobile_increment
protectedinherited

Maximum immobile dislocation increment.

Definition at line 257 of file ADLAROMANCEStressUpdateBase.h.

◆ _max_inelastic_increment

template<ComputeStage compute_stage>
Real ADRadialReturnStressUpdate< compute_stage >::_max_inelastic_increment
protectedinherited

Definition at line 128 of file ADRadialReturnStressUpdate.h.

◆ _max_its

template<ComputeStage compute_stage>
const unsigned int ADSingleVariableReturnMappingSolution< compute_stage >::_max_its
privateinherited

Maximum number of return mapping iterations.

This exists only to avoid an infinite loop, and is is intended to be a large number that is not settable by the user.

Definition at line 172 of file ADSingleVariableReturnMappingSolution.h.

◆ _max_mobile_increment

template<ComputeStage compute_stage>
const Real ADLAROMANCEStressUpdateBase< compute_stage >::_max_mobile_increment
protectedinherited

Maximum mobile dislocation increment.

Definition at line 237 of file ADLAROMANCEStressUpdateBase.h.

◆ _mobile_dislocation_increment

template<ComputeStage compute_stage>
ADReal ADLAROMANCEStressUpdateBase< compute_stage >::_mobile_dislocation_increment
protectedinherited

Container for mobile dislocation increment.

Definition at line 243 of file ADLAROMANCEStressUpdateBase.h.

◆ _mobile_dislocations_old

template<ComputeStage compute_stage>
const MaterialProperty<Real>& ADLAROMANCEStressUpdateBase< compute_stage >::_mobile_dislocations_old
protectedinherited

Definition at line 230 of file ADLAROMANCEStressUpdateBase.h.

◆ _mobile_function

template<ComputeStage compute_stage>
const Function* const ADLAROMANCEStressUpdateBase< compute_stage >::_mobile_function
protectedinherited

Optional mobile dislocation forcing function.

Definition at line 240 of file ADLAROMANCEStressUpdateBase.h.

◆ _mobile_old

template<ComputeStage compute_stage>
Real ADLAROMANCEStressUpdateBase< compute_stage >::_mobile_old
protectedinherited

Container for old mobile dislocation value.

Definition at line 246 of file ADLAROMANCEStressUpdateBase.h.

◆ _num_coefs

template<ComputeStage compute_stage>
unsigned int ADLAROMANCEStressUpdateBase< compute_stage >::_num_coefs
protectedinherited

Total number of Legendre polynomial coefficients for the ROM data set.

Definition at line 284 of file ADLAROMANCEStressUpdateBase.h.

◆ _num_inputs

template<ComputeStage compute_stage>
unsigned int ADLAROMANCEStressUpdateBase< compute_stage >::_num_inputs
protectedinherited

Number of inputs for the ROM data set.

Definition at line 275 of file ADLAROMANCEStressUpdateBase.h.

◆ _num_outputs

template<ComputeStage compute_stage>
unsigned int ADLAROMANCEStressUpdateBase< compute_stage >::_num_outputs
protectedinherited

Number of inputs to the ROM data set.

Definition at line 278 of file ADLAROMANCEStressUpdateBase.h.

◆ _num_resids

template<ComputeStage compute_stage>
const std::size_t ADSingleVariableReturnMappingSolution< compute_stage >::_num_resids
privateinherited

Number of residuals to be stored in history.

Definition at line 187 of file ADSingleVariableReturnMappingSolution.h.

◆ _relative_tolerance

template<ComputeStage compute_stage>
Real ADSingleVariableReturnMappingSolution< compute_stage >::_relative_tolerance
privateinherited

Relative convergence tolerance.

Definition at line 178 of file ADSingleVariableReturnMappingSolution.h.

◆ _residual

template<ComputeStage compute_stage>
ADReal ADSingleVariableReturnMappingSolution< compute_stage >::_residual
privateinherited

Definition at line 197 of file ADSingleVariableReturnMappingSolution.h.

◆ _residual_history

template<ComputeStage compute_stage>
std::vector<Real> ADSingleVariableReturnMappingSolution< compute_stage >::_residual_history
privateinherited

History of residuals used to check whether progress is still being made on decreasing the residual.

Definition at line 190 of file ADSingleVariableReturnMappingSolution.h.

◆ _stress_index

template<ComputeStage compute_stage>
const unsigned int ADLAROMANCEStressUpdateBase< compute_stage >::_stress_index
protectedinherited

Index corresponding to the position for the stress in the input vector.

Definition at line 269 of file ADLAROMANCEStressUpdateBase.h.

◆ _svrms_name

template<ComputeStage compute_stage>
const std::string ADSingleVariableReturnMappingSolution< compute_stage >::_svrms_name
privateinherited

MOOSE input name of the object performing the solve.

Definition at line 201 of file ADSingleVariableReturnMappingSolution.h.

◆ _temperature

template<ComputeStage compute_stage>
const ADVariableValue& ADLAROMANCEStressUpdateBase< compute_stage >::_temperature
protectedinherited

Coupled temperature variable.

Definition at line 211 of file ADLAROMANCEStressUpdateBase.h.

◆ _three_shear_modulus

template<ComputeStage compute_stage>
ADReal ADRadialReturnStressUpdate< compute_stage >::_three_shear_modulus
protectedinherited

3 * shear modulus

Definition at line 124 of file ADRadialReturnStressUpdate.h.

◆ _transform

template<ComputeStage compute_stage>
std::vector<std::vector<ROMInputTransform> > ADLAROMANCEStressUpdateBase< compute_stage >::_transform
protectedinherited

Transform rules defined by the ROM data set.

Definition at line 287 of file ADLAROMANCEStressUpdateBase.h.

◆ _transform_coefs

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADLAROMANCEStressUpdateBase< compute_stage >::_transform_coefs
protectedinherited

Transform coefficients defined by the ROM data set.

Definition at line 290 of file ADLAROMANCEStressUpdateBase.h.

◆ _transformed_limits

template<ComputeStage compute_stage>
std::vector<std::vector<std::vector<Real> > > ADLAROMANCEStressUpdateBase< compute_stage >::_transformed_limits
protectedinherited

Limits transformed from readabile input to ROM readable limits.

Definition at line 302 of file ADLAROMANCEStressUpdateBase.h.

◆ _use_env

template<ComputeStage compute_stage>
bool ADLAROMANCEStressUpdateBase< compute_stage >::_use_env
protectedinherited

Flag that checks if environmental factor is included in ROM data set.

Definition at line 299 of file ADLAROMANCEStressUpdateBase.h.

◆ _verbose

template<ComputeStage compute_stage>
const bool ADLAROMANCEStressUpdateBase< compute_stage >::_verbose
protectedinherited

Flag to output verbose infromation.

Definition at line 226 of file ADLAROMANCEStressUpdateBase.h.

◆ _window

template<ComputeStage compute_stage>
const Real ADLAROMANCEStressUpdateBase< compute_stage >::_window
protectedinherited

Window applied to input maximum and minimum values.

Definition at line 217 of file ADLAROMANCEStressUpdateBase.h.

◆ _window_failure

template<ComputeStage compute_stage>
enum ADLAROMANCEStressUpdateBase::WindowFailure ADLAROMANCEStressUpdateBase< compute_stage >::_window_failure
protectedinherited

◆ usingADLAROMANCEStressUpdateBase

template<ComputeStage compute_stage>
SS316HLAROMANCEStressUpdateTest< compute_stage >::usingADLAROMANCEStressUpdateBase
protected

Definition at line 47 of file SS316HLAROMANCEStressUpdateTest.h.

◆ usingMaterialMembers

template<ComputeStage compute_stage>
ADStressUpdateBase< compute_stage >::usingMaterialMembers
protectedinherited

Definition at line 111 of file ADStressUpdateBase.h.

◆ usingRadialReturnCreepStressUpdateBaseMembers

template<ComputeStage compute_stage>
ADLAROMANCEStressUpdateBase< compute_stage >::usingRadialReturnCreepStressUpdateBaseMembers
protectedinherited

Definition at line 316 of file ADLAROMANCEStressUpdateBase.h.

◆ usingRadialReturnStressUpdateMembers

template<ComputeStage compute_stage>
ADRadialReturnCreepStressUpdateBase< compute_stage >::usingRadialReturnStressUpdateMembers
protectedinherited

Definition at line 46 of file ADRadialReturnCreepStressUpdateBase.h.

◆ usingSingleVariableReturnMappingSolutionMembers

template<ComputeStage compute_stage>
ADRadialReturnStressUpdate< compute_stage >::usingSingleVariableReturnMappingSolutionMembers
protectedinherited

Definition at line 132 of file ADRadialReturnStressUpdate.h.

◆ usingStressUpdateBaseMembers

template<ComputeStage compute_stage>
ADRadialReturnStressUpdate< compute_stage >::usingStressUpdateBaseMembers
protectedinherited

Definition at line 131 of file ADRadialReturnStressUpdate.h.


The documentation for this class was generated from the following files:
ADLAROMANCEStressUpdateBase::computeROMStrainRate
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.
Definition: ADLAROMANCEStressUpdateBase.C:301
ADLAROMANCEStressUpdateBase::_window
const Real _window
Window applied to input maximum and minimum values.
Definition: ADLAROMANCEStressUpdateBase.h:217
ADLAROMANCEStressUpdateBase::_immobile_dislocation_increment
ADReal _immobile_dislocation_increment
Container for immobile dislocation increment.
Definition: ADLAROMANCEStressUpdateBase.h:263
ADRadialReturnStressUpdate::_effective_inelastic_strain_old
const MaterialProperty< Real > & _effective_inelastic_strain_old
Definition: ADRadialReturnStressUpdate.h:127
ADSingleVariableReturnMappingSolution::initialGuess
virtual ADReal initialGuess(const ADReal &)
Compute an initial guess for the value of the scalar.
Definition: ADSingleVariableReturnMappingSolution.h:82
ADSingleVariableReturnMappingSolution::InternalSolveOutput::NEVER
ADLAROMANCEStressUpdateBase::checkInputWindows
void checkInputWindows(std::vector< ADReal > &input)
Function to check input values against applicability windows set by ROM data set.
Definition: ADLAROMANCEStressUpdateBase.C:360
ADLAROMANCEStressUpdateBase::_initial_mobile_dislocations
const Real _initial_mobile_dislocations
Initial mobile dislocation value.
Definition: ADLAROMANCEStressUpdateBase.h:234
ADLAROMANCEStressUpdateBase::WindowFailure::ERROR
ADSingleVariableReturnMappingSolution::_internal_solve_full_iteration_history
const bool _internal_solve_full_iteration_history
Whether to output iteration information all the time (regardless of whether iterations converge)
Definition: ADSingleVariableReturnMappingSolution.h:175
ADLAROMANCEStressUpdateBase::_immobile_old
Real _immobile_old
Container for old immobile dislocation value.
Definition: ADLAROMANCEStressUpdateBase.h:266
ADSingleVariableReturnMappingSolution::returnMappingSolve
void returnMappingSolve(const ADReal &effective_trial_stress, ADReal &scalar, const ConsoleStream &console)
Perform the return mapping iterations.
Definition: ADSingleVariableReturnMappingSolution.C:101
ADLAROMANCEStressUpdateBase::_mobile_old
Real _mobile_old
Container for old mobile dislocation value.
Definition: ADLAROMANCEStressUpdateBase.h:246
ADRadialReturnStressUpdate::_apply_strain
const bool _apply_strain
Definition: ADRadialReturnStressUpdate.h:129
ADSingleVariableReturnMappingSolution::SolveState::EXCEEDED_ITERATIONS
ADRadialReturnStressUpdate::computeStressInitialize
virtual void computeStressInitialize(const ADReal &, const ADRankFourTensor &)
Perform any necessary initialization before return mapping iterations.
Definition: ADRadialReturnStressUpdate.h:109
ADLAROMANCEStressUpdateBase::_mobile_dislocation_increment
ADReal _mobile_dislocation_increment
Container for mobile dislocation increment.
Definition: ADLAROMANCEStressUpdateBase.h:243
ADSingleVariableReturnMappingSolution::SolveState::NAN_INF
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
ADSingleVariableReturnMappingSolution::_bracket_solution
bool _bracket_solution
Whether to save upper and lower bounds of root for scalar, and set solution to the midpoint between t...
Definition: ADSingleVariableReturnMappingSolution.h:131
ADLAROMANCEStressUpdateBase::_environmental
const ADVariableValue & _environmental
Optionally coupled environmental factor.
Definition: ADLAROMANCEStressUpdateBase.h:214
ROMInputTransform::EXP
ADSingleVariableReturnMappingSolution::outputIterationStep
virtual void outputIterationStep(std::stringstream *iter_output, const ADReal &effective_trial_stress, const ADReal &scalar, const Real reference_residual)
Output information for a single iteration step to build the convergence history of the model.
Definition: ADSingleVariableReturnMappingSolution.C:393
ADSingleVariableReturnMappingSolution::_iteration
unsigned int _iteration
iteration number
Definition: ADSingleVariableReturnMappingSolution.h:193
ADLAROMANCEStressUpdateBase::_extrapolate_stress
const bool _extrapolate_stress
Flag to optinoally allow model extrapolation to zero stress.
Definition: ADLAROMANCEStressUpdateBase.h:223
ADSingleVariableReturnMappingSolution::_initial_residual
ADReal _initial_residual
Residual values, kept as members to retain solver state for summary outputting.
Definition: ADSingleVariableReturnMappingSolution.h:196
ADLAROMANCEStressUpdateBase::_temperature
const ADVariableValue & _temperature
Coupled temperature variable.
Definition: ADLAROMANCEStressUpdateBase.h:211
ADRadialReturnCreepStressUpdateBase::_creep_strain_old
const MaterialProperty< RankTwoTensor > & _creep_strain_old
Definition: ADRadialReturnCreepStressUpdateBase.h:44
ADSingleVariableReturnMappingSolution::convergedAcceptable
bool convergedAcceptable(const unsigned int it, const Real reference)
Check to see whether the residual is within acceptable convergence limits.
Definition: ADSingleVariableReturnMappingSolution.C:311
ADLAROMANCEStressUpdateBase::_transform_coefs
std::vector< std::vector< Real > > _transform_coefs
Transform coefficients defined by the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:290
ADSingleVariableReturnMappingSolution::_residual_history
std::vector< Real > _residual_history
History of residuals used to check whether progress is still being made on decreasing the residual.
Definition: ADSingleVariableReturnMappingSolution.h:190
ADLAROMANCEStressUpdateBase::_max_immobile_increment
const Real _max_immobile_increment
Maximum immobile dislocation increment.
Definition: ADLAROMANCEStressUpdateBase.h:257
ADSingleVariableReturnMappingSolution::maximumPermissibleValue
virtual ADReal maximumPermissibleValue(const ADReal &effective_trial_stress) const
Compute the maximum permissible value of the scalar.
Definition: ADSingleVariableReturnMappingSolution.C:93
ADLAROMANCEStressUpdateBase::getInputLimits
virtual std::vector< std::vector< Real > > getInputLimits()=0
ADSingleVariableReturnMappingSolution::_relative_tolerance
Real _relative_tolerance
Relative convergence tolerance.
Definition: ADSingleVariableReturnMappingSolution.h:178
ADLAROMANCEStressUpdateBase::convertOutput
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...
Definition: ADLAROMANCEStressUpdateBase.C:510
ADLAROMANCEStressUpdateBase::_window_failure
enum ADLAROMANCEStressUpdateBase::WindowFailure _window_failure
ADLAROMANCEStressUpdateBase::_mobile_dislocations_old
const MaterialProperty< Real > & _mobile_dislocations_old
Definition: ADLAROMANCEStressUpdateBase.h:230
ADLAROMANCEStressUpdateBase::_max_mobile_increment
const Real _max_mobile_increment
Maximum mobile dislocation increment.
Definition: ADLAROMANCEStressUpdateBase.h:237
ADLAROMANCEStressUpdateBase::_mobile_function
const Function *const _mobile_function
Optional mobile dislocation forcing function.
Definition: ADLAROMANCEStressUpdateBase.h:240
ADSingleVariableReturnMappingSolution::_internal_solve_output_on
enum ADSingleVariableReturnMappingSolution::InternalSolveOutput _internal_solve_output_on
ADRadialReturnStressUpdate::propagateQpStatefulPropertiesRadialReturn
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.
Definition: ADRadialReturnStressUpdate.C:61
ADLAROMANCEStressUpdateBase::_derivative
ADReal _derivative
Container for derivative of creep rate with respect to strain.
Definition: ADLAROMANCEStressUpdateBase.h:314
ADLAROMANCEStressUpdateBase::getTransform
virtual std::vector< std::vector< ROMInputTransform > > getTransform()=0
ADLAROMANCEStressUpdateBase::_use_env
bool _use_env
Flag that checks if environmental factor is included in ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:299
ADLAROMANCEStressUpdateBase::_immobile_dislocations_old
const MaterialProperty< Real > & _immobile_dislocations_old
Definition: ADLAROMANCEStressUpdateBase.h:250
ADSingleVariableReturnMappingSolution::_residual
ADReal _residual
Definition: ADSingleVariableReturnMappingSolution.h:197
ADLAROMANCEStressUpdateBase::WindowFailure::WARN
ADLAROMANCEStressUpdateBase::_transform
std::vector< std::vector< ROMInputTransform > > _transform
Transform rules defined by the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:287
ADSingleVariableReturnMappingSolution::_acceptable_multiplier
Real _acceptable_multiplier
Multiplier applied to relative and absolute tolerances for acceptable convergence.
Definition: ADSingleVariableReturnMappingSolution.h:184
ADLAROMANCEStressUpdateBase::_creep_strain_old_forcing_function
const Function *const _creep_strain_old_forcing_function
Optional old creep strain forcing function.
Definition: ADLAROMANCEStressUpdateBase.h:272
ADLAROMANCEStressUpdateBase::_degree
unsigned int _degree
Legendre polynomial degree for the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:281
ADSingleVariableReturnMappingSolution::converged
bool converged(const ADReal &residual, const Real reference)
Check to see whether the residual is within the convergence limits.
Definition: ADSingleVariableReturnMappingSolution.C:301
ADSingleVariableReturnMappingSolution::updateBounds
void updateBounds(const ADReal &scalar, const ADReal &residual, const Real init_resid_sign, ADReal &scalar_upper_bound, ADReal &scalar_lower_bound, std::stringstream *iter_output)
Update the upper and lower bounds of the root for the effective inelastic strain.
Definition: ADSingleVariableReturnMappingSolution.C:365
ADLAROMANCEStressUpdateBase::computeValues
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...
Definition: ADLAROMANCEStressUpdateBase.C:481
ADSingleVariableReturnMappingSolution::InternalSolveOutput::ALWAYS
ADLAROMANCEStressUpdateBase::getMakeFrameHelper
std::vector< std::vector< unsigned int > > getMakeFrameHelper() const
Definition: ADLAROMANCEStressUpdateBase.C:593
ADLAROMANCEStressUpdateBase::buildPolynomials
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.
Definition: ADLAROMANCEStressUpdateBase.C:451
ADLAROMANCEStressUpdateBase::_input_limits
std::vector< std::vector< Real > > _input_limits
Input limits defined by the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:293
ROMInputTransform::LOG
ADSingleVariableReturnMappingSolution::_max_its
const unsigned int _max_its
Maximum number of return mapping iterations.
Definition: ADSingleVariableReturnMappingSolution.h:172
ADLAROMANCEStressUpdateBase::getTransformCoefs
virtual std::vector< std::vector< Real > > getTransformCoefs()=0
ADLAROMANCEStressUpdateBase::_makeframe_helper
std::vector< std::vector< unsigned int > > _makeframe_helper
Helper container defined by the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:305
ADLAROMANCEStressUpdateBase::getCoefs
virtual std::vector< std::vector< Real > > getCoefs()=0
ADLAROMANCEStressUpdateBase::computePolynomial
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.
Definition: ADLAROMANCEStressUpdateBase.C:535
ADLAROMANCEStressUpdateBase::getTransformedLimits
std::vector< std::vector< std::vector< Real > > > getTransformedLimits() const
Definition: ADLAROMANCEStressUpdateBase.C:567
ADLAROMANCEStressUpdateBase::_stress_index
const unsigned int _stress_index
Index corresponding to the position for the stress in the input vector.
Definition: ADLAROMANCEStressUpdateBase.h:269
ADSingleVariableReturnMappingSolution::checkPermissibleRange
void checkPermissibleRange(ADReal &scalar, ADReal &scalar_increment, const ADReal &scalar_old, const ADReal min_permissible_scalar, const ADReal max_permissible_scalar, std::stringstream *iter_output)
Check to see whether solution is within admissible range, and set it within that range if it is not.
Definition: ADSingleVariableReturnMappingSolution.C:334
ADSingleVariableReturnMappingSolution::iterationFinalize
virtual void iterationFinalize(ADReal)
Finalize internal state variables for a model for a given iteration.
Definition: ADSingleVariableReturnMappingSolution.h:114
ADLAROMANCEStressUpdateBase::_coefs
std::vector< std::vector< Real > > _coefs
Coefficients used with Legendre polynomials defined by the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:296
ADSingleVariableReturnMappingSolution::minimumPermissibleValue
virtual ADReal minimumPermissibleValue(const ADReal &effective_trial_stress) const
Compute the minimum permissible value of the scalar.
Definition: ADSingleVariableReturnMappingSolution.C:85
ADRadialReturnStressUpdate::_three_shear_modulus
ADReal _three_shear_modulus
3 * shear modulus
Definition: ADRadialReturnStressUpdate.h:124
ADSingleVariableReturnMappingSolution::_check_range
bool _check_range
Whether to check to see whether iterative solution is within admissible range, and set within that ra...
Definition: ADSingleVariableReturnMappingSolution.h:124
ElasticityTensorTools::getIsotropicShearModulus
T getIsotropicShearModulus(const RankFourTensorTempl< T > &elasticity_tensor)
Get the shear modulus for an isotropic elasticity tensor param elasticity_tensor the tensor (must be ...
Definition: ElasticityTensorTools.h:71
ADRadialReturnStressUpdate::computeStressFinalize
virtual void computeStressFinalize(const ADRankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
Definition: ADRadialReturnStressUpdate.h:118
ADRadialReturnCreepStressUpdateBase::computeStressFinalize
virtual void computeStressFinalize(const ADRankTwoTensor &plastic_strain_increment) override
Perform any necessary steps to finalize state after return mapping iterations.
Definition: ADRadialReturnCreepStressUpdateBase.C:53
NS::temperature
const std::string temperature
Definition: NS.h:26
ADLAROMANCEStressUpdateBase::_immobile_function
const Function *const _immobile_function
Optional immobile dislocation forcing function.
Definition: ADLAROMANCEStressUpdateBase.h:260
ADSingleVariableReturnMappingSolution::_num_resids
const std::size_t _num_resids
Number of residuals to be stored in history.
Definition: ADSingleVariableReturnMappingSolution.h:187
ADLAROMANCEStressUpdateBase::_num_outputs
unsigned int _num_outputs
Number of inputs to the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:278
ADLAROMANCEStressUpdateBase::_num_coefs
unsigned int _num_coefs
Total number of Legendre polynomial coefficients for the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:284
ADSingleVariableReturnMappingSolution::SolveState::SUCCESS
ADLAROMANCEStressUpdateBase
Definition: ADLAROMANCEStressUpdateBase.h:22
ADRadialReturnCreepStressUpdateBase::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ADRadialReturnCreepStressUpdateBase.C:35
ADRadialReturnStressUpdate::computeTimeStepLimit
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
Definition: ADRadialReturnStressUpdate.C:141
ADSingleVariableReturnMappingSolution::_absolute_tolerance
Real _absolute_tolerance
Absolute convergence tolerance.
Definition: ADSingleVariableReturnMappingSolution.h:181
ADLAROMANCEStressUpdateBase::convertInput
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...
Definition: ADLAROMANCEStressUpdateBase.C:416
ADLAROMANCEStressUpdateBase::_transformed_limits
std::vector< std::vector< std::vector< Real > > > _transformed_limits
Limits transformed from readabile input to ROM readable limits.
Definition: ADLAROMANCEStressUpdateBase.h:302
ADLAROMANCEStressUpdateBase::_failed
MaterialProperty< Real > & _failed
Material property to indicate if material point is outside of input limits.
Definition: ADLAROMANCEStressUpdateBase.h:311
ADSingleVariableReturnMappingSolution::_line_search
bool _line_search
Whether to use line searches to improve convergence.
Definition: ADSingleVariableReturnMappingSolution.h:127
ADLAROMANCEStressUpdateBase::_verbose
const bool _verbose
Flag to output verbose infromation.
Definition: ADLAROMANCEStressUpdateBase.h:226
ADSingleVariableReturnMappingSolution::computeResidual
virtual ADReal computeResidual(const ADReal &effective_trial_stress, const ADReal &scalar)=0
Compute the residual for a predicted value of the scalar.
ADSingleVariableReturnMappingSolution::outputIterationSummary
virtual void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it)
Output summary information for the convergence history of the model.
Definition: ADSingleVariableReturnMappingSolution.C:416
ADLAROMANCEStressUpdateBase::validParams
static InputParameters validParams()
Definition: ADLAROMANCEStressUpdateBase.C:19
ADLAROMANCEStressUpdateBase::_num_inputs
unsigned int _num_inputs
Number of inputs for the ROM data set.
Definition: ADLAROMANCEStressUpdateBase.h:275
ADSingleVariableReturnMappingSolution::internalSolve
SolveState internalSolve(const ADReal effective_trial_stress, ADReal &scalar, std::stringstream *iter_output=nullptr)
Method called from within this class to perform the actual return mappping iterations.
Definition: ADSingleVariableReturnMappingSolution.C:162
ROMInputTransform::LINEAR
ADLAROMANCEStressUpdateBase::_initial_immobile_dislocations
const Real _initial_immobile_dislocations
Initial immobile dislocation value.
Definition: ADLAROMANCEStressUpdateBase.h:254
ADSingleVariableReturnMappingSolution::computeDerivative
virtual ADReal computeDerivative(const ADReal &effective_trial_stress, const ADReal &scalar)=0
Compute the derivative of the residual as a function of the scalar variable.
ADSingleVariableReturnMappingSolution::computeReferenceResidual
virtual Real computeReferenceResidual(const ADReal &effective_trial_stress, const ADReal &scalar)=0
Compute a reference quantity to be used for checking relative convergence.