Line data Source code
1 : /****************************************************************/ 2 : /* DO NOT MODIFY THIS HEADER */ 3 : /* BlackBear */ 4 : /* */ 5 : /* (c) 2017 Battelle Energy Alliance, LLC */ 6 : /* ALL RIGHTS RESERVED */ 7 : /* */ 8 : /* Prepared by Battelle Energy Alliance, LLC */ 9 : /* Under Contract No. DE-AC07-05ID14517 */ 10 : /* With the U. S. Department of Energy */ 11 : /* */ 12 : /* See COPYRIGHT for full restrictions */ 13 : /****************************************************************/ 14 : 15 : #pragma once 16 : 17 : #include "ConcreteExpansionEigenstrainBase.h" 18 : #include "RankTwoTensor.h" 19 : 20 : /** 21 : * Computes the volumetric expansion eigenstrain due to alkali-silica 22 : * reaction. This follows the formulation described in: 23 : * 24 : * V. Saouma and L. Perotti. Constitutive model for alkali-aggregate 25 : * reactions. ACI Materials Journal, 103(3), 2006. 26 : */ 27 : 28 : class ConcreteASREigenstrain : public ConcreteExpansionEigenstrainBase 29 : { 30 : public: 31 : static InputParameters validParams(); 32 : ConcreteASREigenstrain(const InputParameters & parameters); 33 : 34 : void initQpStatefulProperties() override; 35 364422 : bool needStressEigenvalues() override { return true; } 36 : Real computeQpVolumetricStrain() override; 37 : 38 : /** 39 : * Compute the residual for the computation of the ASR reaction extent. 40 : * @param qp Current quadrature point id 41 : * @param scalar Current iterative value of the ASR reaction extent 42 : * @return residual, which is the error in the new ASR reaction extent 43 : */ 44 : Real computeResidual(unsigned qp, Real scalar); 45 : 46 : /** 47 : * Compute the derivative of the residual for the ASR reaction extent. 48 : * @param qp Current quadrature point id 49 : * @param scalar Current iterative value of the ASR reaction extent 50 : * @return derivative, which is the change in the error in the new ASR 51 : * reaction extent wrt the reaction extent. 52 : */ 53 : Real computeDerivative(unsigned qp, Real scalar); 54 : 55 : private: 56 : /// Coupled value of temperature 57 : const VariableValue & _temperature; 58 : 59 : /// Coupled value of relative humidity 60 : const VariableValue & _relative_humidity; 61 : /// Power to which relative humidity is raised 62 : const Real & _rh_exponent; 63 : 64 : /// Final value of ASR volumetric expansion at full reaction extent 65 : Real _max_vol_expansion; 66 : /// Characteristic ASR time (days) at reference temperature 67 : Real _tau_c_T0; 68 : /// Latency ASR time (days) at reference temperature 69 : Real _tau_L_T0; 70 : /// Activation energy associated with tau_c 71 : Real _Uc; 72 : /// Activation energy associated with tau_L 73 : Real _UL; 74 : /// Reference temperature associated with ASR, converted to Kelvin 75 : Real _ref_temp; 76 : 77 : /// Constant for ASR latency time retardation under hydrostatic compression 78 : Real _alpha; 79 : 80 : ///@{ Parameters for ASR gel adsorption due to tensile cracking 81 : Real _gamma_tensile; 82 : Real _gamma_residual; 83 : ///@} 84 : 85 : /// Parameter for ASR gel adsorption due to compressive cracking 86 : Real _beta; 87 : 88 : /// Whether to include effect of ASR on tensile strength 89 : bool _ASR_dependent_tensile_strength; 90 : /// Fraction of tensile strength retained at full ASR reaction extent 91 : Real _beta_f; 92 : 93 : ///@{ Parameters controlling Newton iterations 94 : const unsigned int _max_its; 95 : const bool _output_iteration_info; 96 : const bool _output_iteration_info_on_error; 97 : const Real _relative_tolerance; 98 : const Real _absolute_tolerance; 99 : ///@} 100 : 101 : /// Current value of ASR reaction extent. This is a variable 102 : /// that goes from 0 (no reaction) to 1 (fully reacted) 103 : MaterialProperty<Real> & _ASR_extent; 104 : 105 : /// Previous value of ASR reaction extent. 106 : const MaterialProperty<Real> & _ASR_extent_old; 107 : 108 : /// Offset applied to convert temperature to Kelvin 109 : Real _temp_offset; 110 : }; 111 :