LCOV - code coverage report
Current view: top level - include/materials - ViscoplasticityStressUpdateBase.h (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: f45d79 Lines: 5 5 100.0 %
Date: 2025-07-25 05:00:39 Functions: 3 6 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #pragma once
      11             : 
      12             : #include "StressUpdateBase.h"
      13             : 
      14             : template <bool is_ad>
      15             : class ViscoplasticityStressUpdateBaseTempl : public StressUpdateBaseTempl<is_ad>
      16             : {
      17             : public:
      18             :   static InputParameters validParams();
      19             : 
      20             :   ViscoplasticityStressUpdateBaseTempl(const InputParameters & parameters);
      21             : 
      22             :   virtual Real computeTimeStepLimit() override;
      23         762 :   bool requiresIsotropicTensor() override { return true; }
      24             : 
      25             :   using StressUpdateBaseTempl<is_ad>::updateState;
      26             : 
      27             : protected:
      28             :   virtual void initQpStatefulProperties() override;
      29             : 
      30             :   virtual void propagateQpStatefulProperties() override;
      31             : 
      32             :   /**
      33             :    * Perform any necessary initialization before return mapping iterations
      34             :    * @param effective_trial_stress Effective trial stress
      35             :    * @param elasticityTensor     Elasticity tensor
      36             :    */
      37      446432 :   virtual void computeStressInitialize(const GenericReal<is_ad> & /*effective_trial_stress*/,
      38             :                                        const GenericRankFourTensor<is_ad> & /*elasticity_tensor*/)
      39             :   {
      40      446432 :   }
      41             : 
      42             :   /**
      43             :    * Perform any necessary steps to finalize state after return mapping iterations
      44             :    * @param inelasticStrainIncrement Inelastic strain increment
      45             :    */
      46             :   virtual void
      47      446432 :   computeStressFinalize(const GenericRankTwoTensor<is_ad> & /*plastic_strain_increment*/)
      48             :   {
      49      446432 :   }
      50             : 
      51             :   void updateIntermediatePorosity(const GenericRankTwoTensor<is_ad> & elastic_strain_increment);
      52             : 
      53             :   /// String designating the base name of the total strain
      54             :   const std::string _total_strain_base_name;
      55             : 
      56             :   /// Material property for the total strain increment
      57             :   const GenericMaterialProperty<RankTwoTensor, is_ad> & _strain_increment;
      58             : 
      59             :   ///@{ Effective inelastic strain material property
      60             :   GenericMaterialProperty<Real, is_ad> & _effective_inelastic_strain;
      61             :   const MaterialProperty<Real> & _effective_inelastic_strain_old;
      62             :   ///@}
      63             : 
      64             :   ///@{ Creep strain material property
      65             :   GenericMaterialProperty<RankTwoTensor, is_ad> & _inelastic_strain;
      66             :   const MaterialProperty<RankTwoTensor> & _inelastic_strain_old;
      67             :   ///@}
      68             : 
      69             :   /// Max increment for inelastic strain
      70             :   Real _max_inelastic_increment;
      71             : 
      72             :   /// Container for the porosity calculated from all other intelastic models except the current model
      73             :   GenericReal<is_ad> _intermediate_porosity;
      74             : 
      75             :   /// Material property for the old porosity
      76             :   const MaterialProperty<Real> & _porosity_old;
      77             : 
      78             :   /// Flag to enable verbose output
      79             :   const bool _verbose;
      80             : 
      81             :   /// Initial porosity
      82             :   const Real _initial_porosity;
      83             : 
      84             :   enum class NegativeBehavior
      85             :   {
      86             :     ZERO,
      87             :     INITIAL_CONDITION,
      88             :     EXCEPTION
      89             :   };
      90             : 
      91             :   /// Enum for negative porosity handling
      92             :   const NegativeBehavior _negative_behavior;
      93             : 
      94             :   using StressUpdateBaseTempl<is_ad>::_dt;
      95             :   using StressUpdateBaseTempl<is_ad>::_name;
      96             :   using StressUpdateBaseTempl<is_ad>::_q_point;
      97             :   using StressUpdateBaseTempl<is_ad>::_qp;
      98             :   using StressUpdateBaseTempl<is_ad>::_base_name;
      99             : };
     100             : 
     101             : #define usingViscoplasticityStressUpdateBaseMembers                                                \
     102             :   usingTransientInterfaceMembers;                                                                  \
     103             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_name;                                        \
     104             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_qp;                                          \
     105             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::isParamValid;                                 \
     106             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::paramError;                                   \
     107             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::paramWarning;                                 \
     108             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::updateState;                                  \
     109             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_console;                                     \
     110             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_q_point;                                     \
     111             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_verbose;                                     \
     112             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_intermediate_porosity;                       \
     113             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain;                  \
     114             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain_old;              \
     115             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_inelastic_strain;                            \
     116             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_inelastic_strain_old;                        \
     117             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::_porosity_old;                                \
     118             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::updateIntermediatePorosity;                   \
     119             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::computeStressFinalize;                        \
     120             :   using ViscoplasticityStressUpdateBaseTempl<is_ad>::computeStressInitialize
     121             : 
     122             : typedef ViscoplasticityStressUpdateBaseTempl<false> ViscoplasticityStressUpdateBase;
     123             : typedef ViscoplasticityStressUpdateBaseTempl<true> ADViscoplasticityStressUpdateBase;

Generated by: LCOV version 1.14