- characteristic_timeChracteristic ASR time (in days) at reference temprature. (tau_C(T_0))
C++ Type:double
Description:Chracteristic ASR time (in days) at reference temprature. (tau_C(T_0))
- compressive_strengthCompressive strength of concrete
C++ Type:double
Description:Compressive strength of concrete
- eigenstrain_nameMaterial property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
C++ Type:std::string
Description:Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
- latency_timeLatency ASR time (in days) at reference temprature (tau_L(T_0))
C++ Type:double
Description:Latency ASR time (in days) at reference temprature (tau_L(T_0))
- max_volumetric_expansionFinal ansymptotic ASR volumetric expansion strain when reaction is complete
C++ Type:double
Description:Final ansymptotic ASR volumetric expansion strain when reaction is complete
- reference_temperatureReference temperature for ASR reaction constants.
C++ Type:double
Description:Reference temperature for ASR reaction constants.
- relative_humidityCoupled relative humidity
C++ Type:std::vector<VariableName>
Description:Coupled relative humidity
- residual_tensile_strength_fractionResidual fraction of tensile strength at full ASR reaction
C++ Type:double
Description:Residual fraction of tensile strength at full ASR reaction
- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Description:Coupled temperature
- temperature_unitUnit used to define 'temperature' and 'reference_temperature'
C++ Type:MooseEnum
Description:Unit used to define 'temperature' and 'reference_temperature'
- tensile_strengthTensile strength of concrete
C++ Type:double
Description:Tensile strength of concrete
Concrete ASR Eigenstrain
Computes the volumetric expansion eigenstrain due to alkali-silica reaction.
Alkali-silica reaction (ASR) swelling model
Background
Deterioration of concrete structures affected by ASR can be attributed, on the microscopic level, to the formation of a hydrophilic gel due to complex dissolution-precipitation reactions between reactive silica in aggregates, alkaline ions such as potassium and and hydroxyl ions in the cement pore solution. If water is available in concrete pores, the gel swells, creating an internal pressure in localized regions within concrete structures, which can initiate micro- and macrocracking, excessive expansion, misalignment of the structure etc. According to Ulm et al. (2000), there are two important factors that control the ASR reaction rate:
ASR reactions are thermally activated. The higher the temperature, the faster they occur. This kinetic effect of temperature on ASR results from the thermoactivation of both the dissolution of reactive silica on aggregate-cement interface and the precipitation of gel.
The relative humidity in concrete has a strong influence on ASR, affecting both the kinetics and magnitude of volumetric swelling. Water plays an important role as a solvent for silica dissolution, intervenes as a transport medium for diffusion of ions through the pore network, and is a necessary compound for the formation of various reaction products (gels and other mineral precipitates).
The ConcreteASREigenstrain
model computes the evolution of the ASR reaction and the resulting eigenstrains as a function of the thermal, moisture, and mechanical stresses at local material points, which enables ASR to be simulated in a way that accounts for full coupling of all physics involved in this phenomenon. It is an implementation of the Saouma and Perotti (2006) ASR swelling model, which builds on the model of Ulm et al. (2000). This model has the following features:
The ASR reaction rate is temperature dependent
The ASR reaction can be retarded by compressive stress within concrete structures
Both high compressive and tensile stress states inhibit ASR expansion due to the formation of micro- and macro-cracks that adsorb the expanding gel
Triaxial compressive stress states reduce expansion
The ASR expansion is anisotropic to account for the fact that it is constrained by compression, and is redirected into other less-constrained principal directions
Details of this model's representation of ASR reaction kinetics, volumetric strain, and anisotropic distribution of that strain are provided below. Note that throughout this discussion, the notations of Ulm et al. (2000) and Saouma and Perotti (2006) are adopted.
ASR reaction kinetics
This model employs a 1st-order ASR reaction kinetics model that is dependent on both the temperature and the first invariant of the stress tensor as: (1) in which is the ASR reaction extent ranging from 0 (not reacted) to 1 (fully reacted), is the temperature, and and are expressed as: (2) representing the latency and characteristic times of ASR reactions, respectively. Here is the reference temperature (i.e., the temperature at which stress-free ASR experiments are carried out), is the first invariant of the stress tensor, is the uniaxial compressive strength of concrete, and and are thermal activation energy constants for the latency and characteristic times, respectively, and are determined from tests conducted by Larive (1998) as
The function in Eq. (2) represents the effect of compressive stress on the ASR reaction kinetics by modifying the latency time and is defined as (3) where .
Saouma and Perotti (2006) assumed a value of 4/3 for the constant based on their analysis of experimental data from Multon and Toutlemonde (2006). When is greater than zero (i.e., tensile stress state), is equal to 1, indicating no effect of tensile stress on the reaction kinetics. When is less than zero (i.e., compressive stress state), has a value greater than 1, indicating an increase in the latency time (equivalently retardation of ASR reaction).
Eq. (1) for the ASR reaction is a nonlinear ordinary differential equation (ODE) that is solved locally at the quadrature points within each finite element by a Newton-Raphson iteration scheme, given the current temperature and the stress tensor and reaction extent at the end of the previous time step.
Stress-dependent ASR volumetric strain
The volumetric strain resulting from the ASR reaction depends on stress in this model. Once the increment of ASR reaction extent is obtained, the ASR volumetric strain increment from time to is evaluated using the following formula (4) where is the tensile strength of the concrete; is the maximum principal stress ( under tensile stress); is the crack opening displacement; is the ratio between the hydrostatic stress and compressive strength of concrete, and is the laboratory-determined maximum free volumetric expansion at the reference temperature .
The function in Eq. (4) accounts for the dependency of gel expansion on the water in concrete and takes the form: where the exponent is an empirical constant and is the relative humidity in concrete. has a value between 0 and 1.
Function in Eq. (4) accounts for the reduction of ASR expansion due to tensile cracking (e.g., gels are adsorbed into tensile macrocracks), and takes the following form: in which is the fraction of the tensile strength beyond which gel is adsorbed by cracks and is a user input parameter in simulation, and is a residual ASR expansion retention factor for ASR under tension.
Function in Eq. (4) accounts for the reduction in ASR volumetric expansion under compressive stress state, in which gel is absorbed by diffused microcracks, and takes the following form: (5) where the exponent is an empirical constant between -2 and 2, and is the ratio between the hydrostatic stress and compressive strength of concrete:
Anisotropic ASR strain distribution
In general the incremental ASR volumetric stain should not be applied isotropically because the propensity for expansion in a given direction depends on the stress in that direction. The technique of Saouma and Perotti (2006) is used here to calculate the distribution of volumetric expansion among the three directions of principal stress based on the behavior under either uniaxial, biaxial or triaxial confinement conditions.
Given the full stress tensor (in Cartesian coordinates) at a quadrature point within an element, an eigensolver is used to obtain the three principal stresses, , and , and associated eigenvectors for the directions of principal stresses, , and . These eigenvectors form a stress/strain rotational matrix that is used later to rotate the incremental ASR strain tensor expressed in principal stress/strain coordinates back into Cartesian coordinates.

Figure 1: 2D stress-space map and ASR weight interpolation quadrants (based on Saouma and Perotti (2006))
The weight allocation scheme for the principal directions starts by dividing the stress space into nine quadrants using the concrete tensile strength and compressive strength as well as a gel expansion-inhibiting compressive stress , as shown in Figure 1. is defined as the compressive stress beyond which no further gel expansion can occur. Saouma and Perotti (2006) proposed a value of -10MPa based on previous experimental studies Larive (1998). Any combination of two principal stresses will fall into one of the nine quadrants of this two-dimensional stress map, which has a total of 16 nodes.
To calculate the ASR expansion weight along the direction of a particular principal stress, using for example, the following three steps are taken:
Identify the quadrant encompassing the other two principal stresses and using Figure 1 and the corresponding nodal numbers of that quadrant;
Find the rows of Table 1 corresponding to the identified nodal numbers and determine the nodal weights from the last 3 columns of Table 1 in the corresponding rows using a linear interpolation of .
Finally, compute the ASR expansion weight for the principal direction using the four nodal weights of the quadrant in which falls using the bilinear interpolation of Eq. (6)
The bilinear interpolation is performed in the same way that solution fields are interpolated in the standard finite element method: (6) where is the bilinear shape function similar to those used in finite element method and is given by
Table 1: Triaxial weights for nodes in the stress map of Figure 1 (from Saouma and Perotti (2006))
Node Number | |||||
---|---|---|---|---|---|
1 | |||||
2 | |||||
3 | |||||
4 | |||||
5 | |||||
6 | |||||
7 | |||||
8 | |||||
9 | |||||
10 | |||||
11 | |||||
12 | |||||
13 | |||||
14 | |||||
15 | |||||
16 |
The previous steps are then repeated to calculate the ASR expansion weights along the other two principal directions, and . Note that the summation of , and equals 1. The individual incremental ASR strains along the principal directions are then obtained using these relative weights by the following formula: (7)
Finally, the full ASR expansion-induced incremental strain tensor in the Cartesian coordinate system can then be obtained by rotating into the current coordinates via (8) in which is the imposed incremental strain tensor due to ASR expansion at each quadrature point, which drives the deformation of the concrete structure.
ASR-induced Damage
The ASR-induced degradation of the mechanical properties of concrete can be simulated with a specific damage model. In this approach, the stress is computed with a ComputeDamageStress calculator as:
in which is the fourth-order stiffness tensor of the material and the ASR-induced damage.
Two options are available to compute :
Using the ConcreteASRMicrocrackingDamage model based on Saouma and Perotti (2006), in which is a simple function of the ASR reaction extent and a material constant representing the loss of modulus when the material has fully reacted:
Using the ConcreteExpansionMicrocrackingDamage model, in which the damage is computed as a function of the total ASR strain and the current stress. In this approach, the anisotropic effects of ASR are indirectly accounted for via the damage model rather than the eigenstrain itself, and therefore this model should be used with the
expansion_type = Isotropic
option.
Implementation and Usage
The ConcreteASREigenstrain
model computes the ASR reaction extent , and stores it in a property named ASR_extent
. It also computes an eigenstrain tensor that is used to modify the strain tensor. The loss of mechanical properties due to ASR can be represented with the ConcreteASRMicrocrackingDamage model or the ConcreteExpansionMicrocrackingDamage model, provided that the stress is computed with ComputeDamageStress.
Input Parameters
- ASR_dependent_tensile_strengthFalseSet true to turn ASR reaction dependent tensile strength
Default:False
C++ Type:bool
Options:
Description:Set true to turn ASR reaction dependent tensile strength
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Options:
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector<SubdomainName>
Options:
Description:The list of block ids (SubdomainID) that this object will be applied
- boundaryThe list of boundary IDs from the mesh where this boundary condition applies
C++ Type:std::vector<BoundaryName>
Options:
Description:The list of boundary IDs from the mesh where this boundary condition applies
- characteristic_activation_energy5400Activation energy associated with characteristic_time (U_C)
Default:5400
C++ Type:double
Options:
Description:Activation energy associated with characteristic_time (U_C)
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Options:
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- expansion_stress_limitUpper bound compressive stress beyond which no expansion occurs
C++ Type:double
Options:
Description:Upper bound compressive stress beyond which no expansion occurs
- expansion_typeType of expansion resulting from volumetric strain
C++ Type:MooseEnum
Options:Isotropic, Anisotropic
Description:Type of expansion resulting from volumetric strain
- latency_activation_energy9400Activation energy associated with latency_time (U_L)
Default:9400
C++ Type:double
Options:
Description:Activation energy associated with latency_time (U_L)
- rh_exponent4Power to which relative humidity is raised in computation of ASR volumetric strain
Default:4
C++ Type:double
Options:
Description:Power to which relative humidity is raised in computation of ASR volumetric strain
Optional Parameters
- absolute_tolerance1e-20Absolute convergence tolerance for material iteration
Default:1e-20
C++ Type:double
Options:
Description:Absolute convergence tolerance for material iteration
- compressive_stress_exponent0.5Exponent for ASR retention factor under compressive stress state (beta)
Default:0.5
C++ Type:double
Options:
Description:Exponent for ASR retention factor under compressive stress state (beta)
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Options:
Description:Determines whether this object is calculated using an implicit or explicit form
- max_its30Maximum number of iterations for material solution
Default:30
C++ Type:unsigned int
Options:
Description:Maximum number of iterations for material solution
- output_iteration_infoFalseSet true to output material iteration information
Default:False
C++ Type:bool
Options:
Description:Set true to output material iteration information
- output_iteration_info_on_errorFalseSet true to output material iteration information when a step fails
Default:False
C++ Type:bool
Options:
Description:Set true to output material iteration information when a step fails
- relative_tolerance1e-08Relative convergence tolerance for material iteration
Default:1e-08
C++ Type:double
Options:
Description:Relative convergence tolerance for material iteration
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Options:
Description:The seed for the master random number generator
- stress_latency_factor1.33333Constant for ASR latency time retardation under hydrostatic compression (alpha)
Default:1.33333
C++ Type:double
Options:
Description:Constant for ASR latency time retardation under hydrostatic compression (alpha)
- tensile_absorption_factor0.5Fraction of tensile strength beyond which ASR gel is absorbed into tensile cracks (gamma_t)
Default:0.5
C++ Type:double
Options:
Description:Fraction of tensile strength beyond which ASR gel is absorbed into tensile cracks (gamma_t)
- tensile_retention_factor0.5Residual ASR retention factor under tension (gamma_r)
Default:0.5
C++ Type:double
Options:
Description:Residual ASR retention factor under tension (gamma_r)
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Options:
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names were you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Options:
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (assessment/asr_validation/wald2017b/analysis/A1-unreinforced.i)
- (assessment/asr_validation/wald2017b/analysis/A1-biaxial.i)
- (assessment/asr_validation/wald2017b/analysis/A3-biaxial.i)
- (assessment/asr_validation/wald2017b/analysis/A1-triaxial.i)
- (test/tests/concrete_ASR_validation/asr_validation.i)
- (assessment/asr_validation/wald2017b/analysis/A1-uniaxial.i)
- (test/tests/concrete_ASR_swelling/asr_confined.i)
References
- C. Larive.
Apports Combin'es de l'Experimentation et de la Modélisation à la Comprehension del' A lcali-Réaction et de ses Effets Mécaniques,.
PhD thesis, Laboratoire Central des Ponts et Chaussées, Paris., 1998.[BibTeX]
@phdthesis{larive, Author = "Larive, C.", School = "Laboratoire Central des Ponts et Chauss{\'e}es, Paris.", Title = "Apports Combin'es de l'Experimentation et de la Mod{\'e}lisation {\`a} la Comprehension del' A lcali-R{\'e}action et de ses Effets M{\'e}caniques,", Year = "1998" }
- Stéphane Multon and François Toutlemonde.
Effect of applied stresses on alkali–silica reaction-induced expansions.
Cement and Concrete Research, 36(5):912–920, 2006.[BibTeX]
@Article{multon2006effect, author = "Multon, St{\'e}phane and Toutlemonde, Fran{\c{c}}ois", title = "Effect of applied stresses on alkali--silica reaction-induced expansions", journal = "Cement and Concrete Research", volume = "36", number = "5", pages = "912--920", year = "2006", publisher = "Elsevier" }
- Victor Saouma and Luigi Perotti.
Constitutive model for alkali-aggregate reactions.
ACI Materials Journal, 2006.
doi:10.14359/15853.[BibTeX]
@article{saouma_constitutive_2006, Author = "Saouma, Victor and Perotti, Luigi", Doi = "10.14359/15853", Journal = "ACI Materials Journal", Language = "en", Number = "3", Title = "Constitutive Model for Alkali-Aggregate Reactions", Volume = "103", Year = "2006" }
- Franz-Josef Ulm, Olivier Coussy, Li Kefei, and Catherine Larive.
Thermo-chemo-mechanics of asr expansion in concrete structures.
Journal of engineering mechanics, 126(3):233–242, 2000.[BibTeX]
@article{ulm2000thermo, Author = "Ulm, Franz-Josef and Coussy, Olivier and Kefei, Li and Larive, Catherine", Journal = "Journal of engineering mechanics", Number = "3", Pages = "233--242", Publisher = "American Society of Civil Engineers", Title = "Thermo-chemo-mechanics of ASR expansion in concrete structures", Volume = "126", Year = "2000" }
(assessment/asr_validation/wald2017b/analysis/A1-unreinforced.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = 1
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
file = A1-unreinforced.e
[]
[Variables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 10.6
[../]
[./rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.8
block = 1
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./resid_z]
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_conductivity]
order = CONSTANT
family = Monomial
[../]
[./thermal_capacity]
order = CONSTANT
family = Monomial
[../]
[./moisture_capacity]
order = CONSTANT
family = Monomial
[../]
[./humidity_diffusivity]
order = CONSTANT
family = Monomial
[../]
[./water_content]
order = CONSTANT
family = Monomial
[../]
[./water_hydrated]
order = CONSTANT
family = Monomial
[../]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[]
[Modules/TensorMechanics/Master]
[./concrete]
strain = FINITE
add_variables = true
eigenstrain_names = 'asr_expansion thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
save_in = 'resid_x resid_y resid_z'
[../]
[]
[Kernels]
[./T_td]
type = ConcreteThermalTimeIntegration
variable = T
extra_vector_tags = 'ref'
[../]
[./T_diff]
type = ConcreteThermalConduction
variable = T
extra_vector_tags = 'ref'
[../]
[./T_conv]
type = ConcreteThermalConvection
variable = T
relative_humidity = rh
extra_vector_tags = 'ref'
[../]
[./T_adsorption]
type = ConcreteLatentHeat
variable = T
H = rh
extra_vector_tags = 'ref'
[../]
[./rh_td]
type = ConcreteMoistureTimeIntegration
variable = rh
extra_vector_tags = 'ref'
[../]
[./rh_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = thermal_expansion
variable = thermal_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = thermal_expansion
variable = thermal_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./thermal_strain_zz]
type = RankTwoAux
rank_two_tensor = thermal_expansion
variable = thermal_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
[../]
[./k]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'timestep_end'
[../]
[./capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'timestep_end'
[../]
[./rh_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'timestep_end'
[../]
[./rh_duff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
[../]
[./wc_duff]
type = MaterialRealAux
variable = water_content
property = moisture_content
execute_on = 'timestep_end'
[../]
[./hydrw_duff]
type = MaterialRealAux
variable = water_hydrated
property = hydrated_water
execute_on = 'timestep_end'
[../]
[damage_index]
type = MaterialRealAux
variable = damage_index
property = damage_index
execute_on = timestep_end
[]
[]
[Functions]
[./ramp_temp]
type = PiecewiseLinear
data_file = temperature_history.csv
format = columns
[../]
[./ramp_humidity]
type = PiecewiseLinear
data_file = humidity_history.csv
format = columns
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = KODUR-2004
thermal_capacity_model = KODUR-2004
aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2231.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# setup moisture capacity and humidity diffusivity models
aggregate_pore_type = dense #options: dense porous
aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
cement_type = 1 #options: 1 2 3 4
cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
water_to_cement_ratio = 0.5
concrete_cure_time = 28.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Mensi
D1 = 3.0e-8
coupled_moisture_diffusivity_factor = 1.0e-2 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[./creep]
type = LinearViscoelasticStressUpdate
# block = 1
[../]
[./logcreep]
type = ConcreteLogarithmicCreepModel
poissons_ratio = 0.22
youngs_modulus = 37.3e9
recoverable_youngs_modulus = 37.3e9
recoverable_viscosity = 1
long_term_viscosity = 1
long_term_characteristic_time = 1
humidity = rh
temperature = T
activation_temperature = 23.0
[../]
[ASR_expansion]
type = ConcreteASREigenstrain
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 2.2e-2
characteristic_time = 18.9
latency_time = 18.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = rh
rh_exponent = 1.0
eigenstrain_name = asr_expansion
absolute_tolerance = 1e-10
output_iteration_info_on_error = true
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 8.0e-6
stress_free_temperature = 10.6
eigenstrain_name = thermal_expansion
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
residual_youngs_modulus_fraction = 0.1
[]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
damage_model = ASR_damage_concrete
[../]
[]
[UserObjects]
[./visco_update]
type = LinearViscoelasticityManager
viscoelastic_model = logcreep
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = '2000 2005'
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = '2000 2001'
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = '2000 2005'
value = 0.0
[../]
[./T]
type = FunctionDirichletBC
variable = T
boundary = '101 102 103 104 105 106'
function = ramp_temp
[../]
[./rh]
type = FunctionDirichletBC
variable = rh
boundary = '101 102 103 104 105 106'
function = ramp_humidity
[../]
[]
[Postprocessors]
[./nelem]
type = NumElems
[../]
[./ndof]
type = NumDOFs
[../]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
[../]
[./ASR_strain_xx]
type = ElementAverageValue
variable = ASR_strain_xx
[../]
[./ASR_strain_yy]
type = ElementAverageValue
variable = ASR_strain_yy
[../]
[./ASR_strain_zz]
type = ElementAverageValue
variable = ASR_strain_zz
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
[../]
[./temp]
type = ElementAverageValue
variable = T
[../]
[./temp_bc]
type = SideAverageValue
variable = T
boundary = 102
[../]
[./humidity]
type = ElementAverageValue
variable = rh
[../]
[./humidity_bc]
type = SideAverageValue
variable = rh
boundary = 102
[../]
[./thermal_strain_xx]
type = ElementAverageValue
variable = thermal_strain_xx
[../]
[./thermal_strain_yy]
type = ElementAverageValue
variable = thermal_strain_yy
[../]
[./thermal_strain_zz]
type = ElementAverageValue
variable = thermal_strain_zz
[../]
[./disp_x_101]
type = SideAverageValue
variable = disp_x
boundary = 101
[../]
[./disp_x_102]
type = SideAverageValue
variable = disp_x
boundary = 102
[../]
[./disp_x_103]
type = SideAverageValue
variable = disp_x
boundary = 103
[../]
[./disp_x_104]
type = SideAverageValue
variable = disp_x
boundary = 104
[../]
[./disp_x_105]
type = SideAverageValue
variable = disp_x
boundary = 105
[../]
[./disp_x_106]
type = SideAverageValue
variable = disp_x
boundary = 106
[../]
[./disp_y_101]
type = SideAverageValue
variable = disp_y
boundary = 101
[../]
[./disp_y_102]
type = SideAverageValue
variable = disp_y
boundary = 102
[../]
[./disp_y_103]
type = SideAverageValue
variable = disp_y
boundary = 103
[../]
[./disp_y_104]
type = SideAverageValue
variable = disp_y
boundary = 104
[../]
[./disp_y_105]
type = SideAverageValue
variable = disp_y
boundary = 105
[../]
[./disp_y_106]
type = SideAverageValue
variable = disp_y
boundary = 106
[../]
[./disp_z_101]
type = SideAverageValue
variable = disp_z
boundary = 101
[../]
[./disp_z_102]
type = SideAverageValue
variable = disp_z
boundary = 102
[../]
[./disp_z_103]
type = SideAverageValue
variable = disp_z
boundary = 103
[../]
[./disp_z_104]
type = SideAverageValue
variable = disp_z
boundary = 104
[../]
[./disp_z_105]
type = SideAverageValue
variable = disp_z
boundary = 105
[../]
[./disp_z_106]
type = SideAverageValue
variable = disp_z
boundary = 106
[../]
[disp_x_p1_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.08'
[../]
[disp_x_p1_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.08'
[../]
[disp_x_p2_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.08'
[../]
[disp_x_p2_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.08'
[../]
[disp_x_p3_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.08'
[../]
[disp_x_p3_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.08'
[../]
[disp_x_p4_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.08'
[../]
[disp_x_p4_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.08'
[../]
[disp_x_p5_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.235'
[../]
[disp_x_p5_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.235'
[../]
[disp_x_p6_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.235'
[../]
[disp_x_p6_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.235'
[../]
[disp_y_p1_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.08'
[../]
[disp_y_p1_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.08'
[../]
[disp_y_p2_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.08'
[../]
[disp_y_p2_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.08'
[../]
[disp_y_p3_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.08'
[../]
[disp_y_p3_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.08'
[../]
[disp_y_p4_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.08'
[../]
[disp_y_p4_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.08'
[../]
[disp_y_p5_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.235'
[../]
[disp_y_p5_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.235'
[../]
[disp_y_p6_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.235'
[../]
[disp_y_p6_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.235'
[../]
[disp_y_p7_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 0.08'
[../]
[disp_y_p7_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 0.08'
[../]
[disp_y_p8_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 0.08'
[../]
[disp_y_p8_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 0.08'
[../]
[disp_z_p1_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 0.24'
[../]
[disp_z_p1_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 -0.24'
[../]
[disp_z_p2_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.08 0.24'
[../]
[disp_z_p2_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.08 -0.24'
[../]
[disp_z_p3_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.08 0.24'
[../]
[disp_z_p3_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.08 -0.24'
[../]
[disp_z_p4_pos]
type = PointValue
variable = disp_z
point = '0.08 0.08 0.24'
[../]
[disp_z_p4_neg]
type = PointValue
variable = disp_z
point = '0.08 0.08 -0.24'
[../]
[disp_z_p5_pos]
type = PointValue
variable = disp_z
point = '0.235 0.08 0.24'
[../]
[disp_z_p5_neg]
type = PointValue
variable = disp_z
point = '0.235 0.08 -0.24'
[../]
[disp_z_p6_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.08 0.24'
[../]
[disp_z_p6_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.08 -0.24'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
start_time = 2419200 #28 days
dt = 86400 #1 day in sec
automatic_scaling = true
end_time = 38880000 #450 days
l_max_its = 20
nl_max_its = 10
nl_rel_tol = 1e-6
# Because this problem is unrestrained, the displacement reference is 0,
# so this controls the displacement convergence:
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
csv = true
#exodus = true #Turned off to save space
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/asr_validation/wald2017b/analysis/A1-biaxial.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
penalty = 1e12
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
file = A1-biaxial.e
[]
[Variables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 10.6
[../]
[./rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.8
block = 1
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./resid_z]
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_conductivity]
order = CONSTANT
family = Monomial
[../]
[./thermal_capacity]
order = CONSTANT
family = Monomial
[../]
[./moisture_capacity]
order = CONSTANT
family = Monomial
[../]
[./humidity_diffusivity]
order = CONSTANT
family = Monomial
[../]
[./water_content]
order = CONSTANT
family = Monomial
[../]
[./water_hydrated]
order = CONSTANT
family = Monomial
[../]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[./area]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 1
strain = FINITE
add_variables = true
eigenstrain_names = 'asr_expansion thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[../]
[]
[Modules/TensorMechanics/LineElementMaster]
[./Reinforcement_block]
block = '2 3'
truss = true
area = area
displacements = 'disp_x disp_y disp_z'
#Note: Intentially not including this here to have it give a nonzero
# displacement reference residual since it's an unrestrained problem
#extra_vector_tags = 'ref'
[../]
[]
[Constraints]
[./rebar_x2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[./rebar_x3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[]
[Kernels]
[./T_td]
type = ConcreteThermalTimeIntegration
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_diff]
type = ConcreteThermalConduction
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_conv]
type = ConcreteThermalConvection
variable = T
relative_humidity = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./T_adsorption]
type = ConcreteLatentHeat
variable = T
H = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_td]
type = ConcreteMoistureTimeIntegration
variable = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
block = 1
extra_vector_tags = 'ref'
[../]
[./heat_dt]
type = TimeDerivative
variable = T
block = '2 3'
extra_vector_tags = 'ref'
[../]
[./heat_conduction]
type = HeatConduction
variable = T
diffusion_coefficient = 53.0
block = '2 3'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 1
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 1
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./thermal_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./thermal_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./thermal_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
block = 1
[../]
[./k]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'timestep_end'
block = 1
[../]
[./capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_duff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
block = 1
[../]
[./wc_duff]
type = MaterialRealAux
variable = water_content
property = moisture_content
execute_on = 'timestep_end'
block = 1
[../]
[./hydrw_duff]
type = MaterialRealAux
variable = water_hydrated
property = hydrated_water
execute_on = 'timestep_end'
block = 1
[../]
[damage_index]
type = MaterialRealAux
block = 1
variable = damage_index
property = damage_index
execute_on = timestep_end
[]
[./areax]
type = ConstantAux
block = '2'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./areaz]
type = ConstantAux
block = '3'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./axial_stress]
type = MaterialRealAux
block = '2 3'
variable = axial_stress
property = axial_stress
[../]
[]
[Functions]
[./ramp_temp]
type = PiecewiseLinear
data_file = temperature_history.csv
format = columns
[../]
[./ramp_humidity]
type = PiecewiseLinear
data_file = humidity_history.csv
format = columns
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
block = 1
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = KODUR-2004
thermal_capacity_model = KODUR-2004
aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2231.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# setup moisture capacity and humidity diffusivity models
aggregate_pore_type = dense #options: dense porous
aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
cement_type = 1 #options: 1 2 3 4
cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
water_to_cement_ratio = 0.5
concrete_cure_time = 28.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Mensi
D1 = 3.0e-8
coupled_moisture_diffusivity_factor = 1.0e-2 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[./creep]
type = LinearViscoelasticStressUpdate
block = 1
[../]
[./logcreep]
type = ConcreteLogarithmicCreepModel
block = 1
poissons_ratio = 0.22
youngs_modulus = 37.3e9
recoverable_youngs_modulus = 37.3e9
recoverable_viscosity = 1
long_term_viscosity = 1
long_term_characteristic_time = 1
humidity = rh
temperature = T
activation_temperature = 23.0
[../]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 1
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 2.2e-2
characteristic_time = 18.9
latency_time = 18.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = rh
rh_exponent = 1.0
eigenstrain_name = asr_expansion
absolute_tolerance = 1e-10
output_iteration_info_on_error = true
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = T
thermal_expansion_coeff = 8.0e-6
stress_free_temperature = 10.6
eigenstrain_name = thermal_expansion
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
residual_youngs_modulus_fraction = 0.1
block = 1
[]
[./stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep'
damage_model = ASR_damage_concrete
[../]
[truss]
type = LinearElasticTruss
block = '2 3'
youngs_modulus = 2e11
temperature = T
thermal_expansion_coeff = 11.3e-6
temperature_ref = 10.6
[]
[]
[UserObjects]
[./visco_update]
type = LinearViscoelasticityManager
block = 1
viscoelastic_model = logcreep
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = '2000 2005'
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = '2000 2001'
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = '2000 2005'
value = 0.0
[../]
[./T]
type = FunctionDirichletBC
variable = T
boundary = '101 102 103 104 105 106'
function = ramp_temp
[../]
[./rh]
type = FunctionDirichletBC
variable = rh
boundary = '101 102 103 104 105 106'
function = ramp_humidity
[../]
[]
[Postprocessors]
[./nelem]
type = NumElems
[../]
[./ndof]
type = NumDOFs
[../]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
block = 1
[../]
[./ASR_strain_xx]
type = ElementAverageValue
variable = ASR_strain_xx
block = 1
[../]
[./ASR_strain_yy]
type = ElementAverageValue
variable = ASR_strain_yy
block = 1
[../]
[./ASR_strain_zz]
type = ElementAverageValue
variable = ASR_strain_zz
block = 1
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
block = 1
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 1
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
block = 1
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 1
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
block = 1
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
block = 1
[../]
[./temp]
type = ElementAverageValue
variable = T
block = 1
[../]
[./humidity]
type = ElementAverageValue
variable = rh
block = 1
[../]
[./thermal_strain_xx]
type = ElementAverageValue
variable = thermal_strain_xx
block = 1
[../]
[./thermal_strain_yy]
type = ElementAverageValue
variable = thermal_strain_yy
block = 1
[../]
[./thermal_strain_zz]
type = ElementAverageValue
variable = thermal_strain_zz
block = 1
[../]
[./disp_x_101]
type = SideAverageValue
variable = disp_x
boundary = 101
[../]
[./disp_x_102]
type = SideAverageValue
variable = disp_x
boundary = 102
[../]
[./disp_x_103]
type = SideAverageValue
variable = disp_x
boundary = 103
[../]
[./disp_x_104]
type = SideAverageValue
variable = disp_x
boundary = 104
[../]
[./disp_x_105]
type = SideAverageValue
variable = disp_x
boundary = 105
[../]
[./disp_x_106]
type = SideAverageValue
variable = disp_x
boundary = 106
[../]
[./disp_y_101]
type = SideAverageValue
variable = disp_y
boundary = 101
[../]
[./disp_y_102]
type = SideAverageValue
variable = disp_y
boundary = 102
[../]
[./disp_y_103]
type = SideAverageValue
variable = disp_y
boundary = 103
[../]
[./disp_y_104]
type = SideAverageValue
variable = disp_y
boundary = 104
[../]
[./disp_y_105]
type = SideAverageValue
variable = disp_y
boundary = 105
[../]
[./disp_y_106]
type = SideAverageValue
variable = disp_y
boundary = 106
[../]
[./disp_z_101]
type = SideAverageValue
variable = disp_z
boundary = 101
[../]
[./disp_z_102]
type = SideAverageValue
variable = disp_z
boundary = 102
[../]
[./disp_z_103]
type = SideAverageValue
variable = disp_z
boundary = 103
[../]
[./disp_z_104]
type = SideAverageValue
variable = disp_z
boundary = 104
[../]
[./disp_z_105]
type = SideAverageValue
variable = disp_z
boundary = 105
[../]
[./disp_z_106]
type = SideAverageValue
variable = disp_z
boundary = 106
[../]
[disp_x_p1_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.08'
[../]
[disp_x_p1_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.08'
[../]
[disp_x_p2_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.08'
[../]
[disp_x_p2_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.08'
[../]
[disp_x_p3_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.08'
[../]
[disp_x_p3_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.08'
[../]
[disp_x_p4_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.08'
[../]
[disp_x_p4_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.08'
[../]
[disp_x_p5_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.235'
[../]
[disp_x_p5_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.235'
[../]
[disp_x_p6_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.235'
[../]
[disp_x_p6_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.235'
[../]
[disp_y_p1_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.08'
[../]
[disp_y_p1_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.08'
[../]
[disp_y_p2_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.08'
[../]
[disp_y_p2_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.08'
[../]
[disp_y_p3_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.08'
[../]
[disp_y_p3_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.08'
[../]
[disp_y_p4_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.08'
[../]
[disp_y_p4_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.08'
[../]
[disp_y_p5_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.235'
[../]
[disp_y_p5_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.235'
[../]
[disp_y_p6_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.235'
[../]
[disp_y_p6_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.235'
[../]
[disp_y_p7_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 0.08'
[../]
[disp_y_p7_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 0.08'
[../]
[disp_y_p8_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 0.08'
[../]
[disp_y_p8_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 0.08'
[../]
[disp_z_p1_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 0.24'
[../]
[disp_z_p1_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 -0.24'
[../]
[disp_z_p2_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.08 0.24'
[../]
[disp_z_p2_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.08 -0.24'
[../]
[disp_z_p3_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.08 0.24'
[../]
[disp_z_p3_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.08 -0.24'
[../]
[disp_z_p4_pos]
type = PointValue
variable = disp_z
point = '0.08 0.08 0.24'
[../]
[disp_z_p4_neg]
type = PointValue
variable = disp_z
point = '0.08 0.08 -0.24'
[../]
[disp_z_p5_pos]
type = PointValue
variable = disp_z
point = '0.235 0.08 0.24'
[../]
[disp_z_p5_neg]
type = PointValue
variable = disp_z
point = '0.235 0.08 -0.24'
[../]
[disp_z_p6_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.08 0.24'
[../]
[disp_z_p6_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.08 -0.24'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
start_time = 2419200
dt = 1000000
automatic_scaling = true
end_time = 38880000
l_max_its = 20
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
csv = true
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/asr_validation/wald2017b/analysis/A3-biaxial.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
penalty = 1e12
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
file = A3-biaxial.e
[]
[Variables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 10.6
[../]
[./rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.8
block = 1
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./resid_z]
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_conductivity]
order = CONSTANT
family = Monomial
[../]
[./thermal_capacity]
order = CONSTANT
family = Monomial
[../]
[./moisture_capacity]
order = CONSTANT
family = Monomial
[../]
[./humidity_diffusivity]
order = CONSTANT
family = Monomial
[../]
[./water_content]
order = CONSTANT
family = Monomial
[../]
[./water_hydrated]
order = CONSTANT
family = Monomial
[../]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[./area]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 1
strain = FINITE
add_variables = true
eigenstrain_names = 'asr_expansion thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[../]
[]
[Modules/TensorMechanics/LineElementMaster]
[./Reinforcement_block]
block = '2 3'
truss = true
area = area
displacements = 'disp_x disp_y disp_z'
#Note: Intentially not including this here to have it give a nonzero
# displacement reference residual since it's an unrestrained problem
#extra_vector_tags = 'ref'
[../]
[]
[Constraints]
[./rebar_x2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[./rebar_x3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[]
[Kernels]
[./T_td]
type = ConcreteThermalTimeIntegration
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_diff]
type = ConcreteThermalConduction
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_conv]
type = ConcreteThermalConvection
variable = T
relative_humidity = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./T_adsorption]
type = ConcreteLatentHeat
variable = T
H = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_td]
type = ConcreteMoistureTimeIntegration
variable = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
block = 1
extra_vector_tags = 'ref'
[../]
[./heat_dt]
type = TimeDerivative
variable = T
block = '2 3'
extra_vector_tags = 'ref'
[../]
[./heat_conduction]
type = HeatConduction
variable = T
diffusion_coefficient = 53.0
block = '2 3'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 1
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 1
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./thermal_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./thermal_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./thermal_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
block = 1
[../]
[./k]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'timestep_end'
block = 1
[../]
[./capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_duff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
block = 1
[../]
[./wc_duff]
type = MaterialRealAux
variable = water_content
property = moisture_content
execute_on = 'timestep_end'
block = 1
[../]
[./hydrw_duff]
type = MaterialRealAux
variable = water_hydrated
property = hydrated_water
execute_on = 'timestep_end'
block = 1
[../]
[damage_index]
type = MaterialRealAux
block = 1
variable = damage_index
property = damage_index
execute_on = timestep_end
[]
[./areax]
type = ConstantAux
block = '2'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./areaz]
type = ConstantAux
block = '3'
variable = area
value = 2.84e-4
execute_on = 'initial timestep_begin'
[../]
[./axial_stress]
type = MaterialRealAux
block = '2 3'
variable = axial_stress
property = axial_stress
[../]
[]
[Functions]
[./ramp_temp]
type = PiecewiseLinear
data_file = temperature_history.csv
format = columns
[../]
[./ramp_humidity]
type = PiecewiseLinear
data_file = humidity_history.csv
format = columns
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
block = 1
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = KODUR-2004
thermal_capacity_model = KODUR-2004
aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2231.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# setup moisture capacity and humidity diffusivity models
aggregate_pore_type = dense #options: dense porous
aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
cement_type = 1 #options: 1 2 3 4
cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
water_to_cement_ratio = 0.5
concrete_cure_time = 28.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Mensi
D1 = 3.0e-8
coupled_moisture_diffusivity_factor = 1.0e-2 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[./creep]
type = LinearViscoelasticStressUpdate
block = 1
[../]
[./logcreep]
type = ConcreteLogarithmicCreepModel
block = 1
poissons_ratio = 0.22
youngs_modulus = 37.3e9
recoverable_youngs_modulus = 37.3e9
recoverable_viscosity = 1
long_term_viscosity = 1
long_term_characteristic_time = 1
humidity = rh
temperature = T
activation_temperature = 23.0
[../]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 1
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 2.2e-2
characteristic_time = 18.9
latency_time = 18.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = rh
rh_exponent = 1.0
eigenstrain_name = asr_expansion
absolute_tolerance = 1e-10
output_iteration_info_on_error = true
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = T
thermal_expansion_coeff = 8.0e-6
stress_free_temperature = 10.6
eigenstrain_name = thermal_expansion
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
residual_youngs_modulus_fraction = 0.1
block = 1
[]
[./stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep'
damage_model = ASR_damage_concrete
[../]
[truss]
type = LinearElasticTruss
block = '2 3'
youngs_modulus = 2e11
temperature = T
thermal_expansion_coeff = 11.3e-6
temperature_ref = 10.6
[]
[]
[UserObjects]
[./visco_update]
type = LinearViscoelasticityManager
block = 1
viscoelastic_model = logcreep
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = '2000 2005'
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = '2000 2001'
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = '2000 2005'
value = 0.0
[../]
[./T]
type = FunctionDirichletBC
variable = T
boundary = '101 102 103 104 105 106'
function = ramp_temp
[../]
[./rh]
type = FunctionDirichletBC
variable = rh
boundary = '101 102 103 104 105 106'
function = ramp_humidity
[../]
[]
[Postprocessors]
[./nelem]
type = NumElems
[../]
[./ndof]
type = NumDOFs
[../]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
block = 1
[../]
[./ASR_strain_xx]
type = ElementAverageValue
variable = ASR_strain_xx
block = 1
[../]
[./ASR_strain_yy]
type = ElementAverageValue
variable = ASR_strain_yy
block = 1
[../]
[./ASR_strain_zz]
type = ElementAverageValue
variable = ASR_strain_zz
block = 1
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
block = 1
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 1
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
block = 1
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 1
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
block = 1
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
block = 1
[../]
[./temp]
type = ElementAverageValue
variable = T
block = 1
[../]
[./humidity]
type = ElementAverageValue
variable = rh
block = 1
[../]
[./thermal_strain_xx]
type = ElementAverageValue
variable = thermal_strain_xx
block = 1
[../]
[./thermal_strain_yy]
type = ElementAverageValue
variable = thermal_strain_yy
block = 1
[../]
[./thermal_strain_zz]
type = ElementAverageValue
variable = thermal_strain_zz
block = 1
[../]
[./disp_x_101]
type = SideAverageValue
variable = disp_x
boundary = 101
[../]
[./disp_x_102]
type = SideAverageValue
variable = disp_x
boundary = 102
[../]
[./disp_x_103]
type = SideAverageValue
variable = disp_x
boundary = 103
[../]
[./disp_x_104]
type = SideAverageValue
variable = disp_x
boundary = 104
[../]
[./disp_x_105]
type = SideAverageValue
variable = disp_x
boundary = 105
[../]
[./disp_x_106]
type = SideAverageValue
variable = disp_x
boundary = 106
[../]
[./disp_y_101]
type = SideAverageValue
variable = disp_y
boundary = 101
[../]
[./disp_y_102]
type = SideAverageValue
variable = disp_y
boundary = 102
[../]
[./disp_y_103]
type = SideAverageValue
variable = disp_y
boundary = 103
[../]
[./disp_y_104]
type = SideAverageValue
variable = disp_y
boundary = 104
[../]
[./disp_y_105]
type = SideAverageValue
variable = disp_y
boundary = 105
[../]
[./disp_y_106]
type = SideAverageValue
variable = disp_y
boundary = 106
[../]
[./disp_z_101]
type = SideAverageValue
variable = disp_z
boundary = 101
[../]
[./disp_z_102]
type = SideAverageValue
variable = disp_z
boundary = 102
[../]
[./disp_z_103]
type = SideAverageValue
variable = disp_z
boundary = 103
[../]
[./disp_z_104]
type = SideAverageValue
variable = disp_z
boundary = 104
[../]
[./disp_z_105]
type = SideAverageValue
variable = disp_z
boundary = 105
[../]
[./disp_z_106]
type = SideAverageValue
variable = disp_z
boundary = 106
[../]
[disp_x_p1_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.08'
[../]
[disp_x_p1_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.08'
[../]
[disp_x_p2_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.08'
[../]
[disp_x_p2_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.08'
[../]
[disp_x_p3_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.08'
[../]
[disp_x_p3_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.08'
[../]
[disp_x_p4_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.08'
[../]
[disp_x_p4_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.08'
[../]
[disp_x_p5_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.235'
[../]
[disp_x_p5_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.235'
[../]
[disp_x_p6_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.235'
[../]
[disp_x_p6_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.235'
[../]
[disp_x_p7_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.235'
[../]
[disp_x_p7_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.235'
[../]
[disp_x_p8_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.235'
[../]
[disp_x_p8_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.235'
[../]
[disp_x_p9_pos]
type = PointValue
variable = disp_x
point = '0.24 0.235 -0.235'
[../]
[disp_x_p9_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.235 -0.235'
[../]
[disp_x_p10_pos]
type = PointValue
variable = disp_x
point = '0.24 0.235 0.235'
[../]
[disp_x_p10_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.235 0.235'
[../]
[disp_x_p11_pos]
type = PointValue
variable = disp_x
point = '0.24 0.235 -0.08'
[../]
[disp_x_p11_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.235 -0.08'
[../]
[disp_x_p12_pos]
type = PointValue
variable = disp_x
point = '0.24 0.235 0.08'
[../]
[disp_x_p12_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.235 0.08'
[../]
[disp_x_p13_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.235 -0.235'
[../]
[disp_x_p13_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.235 -0.235'
[../]
[disp_x_p14_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.235 0.235'
[../]
[disp_x_p14_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.235 0.235'
[../]
[disp_x_p15_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.235 -0.08'
[../]
[disp_x_p15_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.235 -0.08'
[../]
[disp_x_p16_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.235 0.08'
[../]
[disp_x_p16_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.235 0.08'
[../]
[disp_y_p1_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.08'
[../]
[disp_y_p1_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.08'
[../]
[disp_y_p2_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.08'
[../]
[disp_y_p2_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.08'
[../]
[disp_y_p3_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.08'
[../]
[disp_y_p3_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.08'
[../]
[disp_y_p4_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.08'
[../]
[disp_y_p4_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.08'
[../]
[disp_y_p5_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.235'
[../]
[disp_y_p5_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.235'
[../]
[disp_y_p6_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.235'
[../]
[disp_y_p6_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.235'
[../]
[disp_y_p7_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 0.08'
[../]
[disp_y_p7_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 0.08'
[../]
[disp_y_p8_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 0.08'
[../]
[disp_y_p8_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 0.08'
[../]
[disp_y_p9_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.235'
[../]
[disp_y_p9_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.235'
[../]
[disp_y_p10_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.235'
[../]
[disp_y_p10_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.235'
[../]
[disp_y_p11_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 -0.08'
[../]
[disp_y_p11_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 -0.08'
[../]
[disp_y_p12_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 -0.08'
[../]
[disp_y_p12_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 -0.08'
[../]
[disp_z_p1_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 0.24'
[../]
[disp_z_p1_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 -0.24'
[../]
[disp_z_p2_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.08 0.24'
[../]
[disp_z_p2_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.08 -0.24'
[../]
[disp_z_p3_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.08 0.24'
[../]
[disp_z_p3_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.08 -0.24'
[../]
[disp_z_p4_pos]
type = PointValue
variable = disp_z
point = '0.08 0.08 0.24'
[../]
[disp_z_p4_neg]
type = PointValue
variable = disp_z
point = '0.08 0.08 -0.24'
[../]
[disp_z_p5_pos]
type = PointValue
variable = disp_z
point = '0.235 0.08 0.24'
[../]
[disp_z_p5_neg]
type = PointValue
variable = disp_z
point = '0.235 0.08 -0.24'
[../]
[disp_z_p6_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.08 0.24'
[../]
[disp_z_p6_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.08 -0.24'
[../]
[disp_z_p7_pos]
type = PointValue
variable = disp_z
point = '-0.235 -0.08 0.24'
[../]
[disp_z_p7_neg]
type = PointValue
variable = disp_z
point = '-0.235 -0.08 -0.24'
[../]
[disp_z_p8_pos]
type = PointValue
variable = disp_z
point = '0.235 -0.08 0.24'
[../]
[disp_z_p8_neg]
type = PointValue
variable = disp_z
point = '0.235 -0.08 -0.24'
[../]
[disp_z_p9_pos]
type = PointValue
variable = disp_z
point = '0.235 0.235 0.24'
[../]
[disp_z_p9_neg]
type = PointValue
variable = disp_z
point = '0.235 0.235 -0.24'
[../]
[disp_z_p10_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.235 0.24'
[../]
[disp_z_p10_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.235 -0.24'
[../]
[disp_z_p11_pos]
type = PointValue
variable = disp_z
point = '0.08 0.235 0.24'
[../]
[disp_z_p11_neg]
type = PointValue
variable = disp_z
point = '0.08 0.235 -0.24'
[../]
[disp_z_p12_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.235 0.24'
[../]
[disp_z_p12_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.235 -0.24'
[../]
[disp_z_p13_pos]
type = PointValue
variable = disp_z
point = '0.235 -0.235 0.24'
[../]
[disp_z_p13_neg]
type = PointValue
variable = disp_z
point = '0.235 -0.235 -0.24'
[../]
[disp_z_p14_pos]
type = PointValue
variable = disp_z
point = '-0.235 -0.235 0.24'
[../]
[disp_z_p14_neg]
type = PointValue
variable = disp_z
point = '-0.235 -0.235 -0.24'
[../]
[disp_z_p15_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.235 0.24'
[../]
[disp_z_p15_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.235 -0.24'
[../]
[disp_z_p16_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.235 0.24'
[../]
[disp_z_p16_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.235 -0.24'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
start_time = 14391759
dt = 1000000
automatic_scaling = true
end_time = 38880000
l_max_its = 20
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
csv = true
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/asr_validation/wald2017b/analysis/A1-triaxial.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
penalty = 1e12
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
file = A1-triaxial.e
[]
[Variables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 10.6
[../]
[./rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.8
block = 1
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./resid_z]
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_conductivity]
order = CONSTANT
family = Monomial
[../]
[./thermal_capacity]
order = CONSTANT
family = Monomial
[../]
[./moisture_capacity]
order = CONSTANT
family = Monomial
[../]
[./humidity_diffusivity]
order = CONSTANT
family = Monomial
[../]
[./water_content]
order = CONSTANT
family = Monomial
[../]
[./water_hydrated]
order = CONSTANT
family = Monomial
[../]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[./area]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 1
strain = FINITE
add_variables = true
eigenstrain_names = 'asr_expansion thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[../]
[]
[Modules/TensorMechanics/LineElementMaster]
[./Reinforcement_block]
block = '2 3 4'
truss = true
area = area
displacements = 'disp_x disp_y disp_z'
#Note: Intentially not including this here to have it give a nonzero
# displacement reference residual since it's an unrestrained problem
#extra_vector_tags = 'ref'
[../]
[]
[Constraints]
[./rebar_x2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[./rebar_x3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T3]
type = EqualValueEmbeddedConstraint
secondary = 3
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[./rebar_x4]
type = EqualValueEmbeddedConstraint
secondary = 4
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y4]
type = EqualValueEmbeddedConstraint
secondary = 4
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z4]
type = EqualValueEmbeddedConstraint
secondary = 4
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T4]
type = EqualValueEmbeddedConstraint
secondary = 4
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[]
[Kernels]
[./T_td]
type = ConcreteThermalTimeIntegration
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_diff]
type = ConcreteThermalConduction
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_conv]
type = ConcreteThermalConvection
variable = T
relative_humidity = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./T_adsorption]
type = ConcreteLatentHeat
variable = T
H = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_td]
type = ConcreteMoistureTimeIntegration
variable = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
block = 1
extra_vector_tags = 'ref'
[../]
[./heat_dt]
type = TimeDerivative
variable = T
block = '2 3 4'
extra_vector_tags = 'ref'
[../]
[./heat_conduction]
type = HeatConduction
variable = T
diffusion_coefficient = 53.0
block = '2 3 4'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 1
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 1
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./thermal_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./thermal_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./thermal_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
block = 1
[../]
[./k]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'timestep_end'
block = 1
[../]
[./capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_duff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
block = 1
[../]
[./wc_duff]
type = MaterialRealAux
variable = water_content
property = moisture_content
execute_on = 'timestep_end'
block = 1
[../]
[./hydrw_duff]
type = MaterialRealAux
variable = water_hydrated
property = hydrated_water
execute_on = 'timestep_end'
block = 1
[../]
[damage_index]
type = MaterialRealAux
block = 1
variable = damage_index
property = damage_index
execute_on = timestep_end
[]
[./areax]
type = ConstantAux
block = '2'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./areaz]
type = ConstantAux
block = '3'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./areay]
type = ConstantAux
block = '4'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./axial_stress]
type = MaterialRealAux
block = '2 3 4'
variable = axial_stress
property = axial_stress
[../]
[]
[Functions]
[./ramp_temp]
type = PiecewiseLinear
data_file = temperature_history.csv
format = columns
[../]
[./ramp_humidity]
type = PiecewiseLinear
data_file = humidity_history.csv
format = columns
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
block = 1
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = KODUR-2004
thermal_capacity_model = KODUR-2004
aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2231.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# setup moisture capacity and humidity diffusivity models
aggregate_pore_type = dense #options: dense porous
aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
cement_type = 1 #options: 1 2 3 4
cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
water_to_cement_ratio = 0.5
concrete_cure_time = 28.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Mensi
D1 = 3.0e-8
coupled_moisture_diffusivity_factor = 1.0e-2 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[./creep]
type = LinearViscoelasticStressUpdate
block = 1
[../]
[./logcreep]
type = ConcreteLogarithmicCreepModel
block = 1
poissons_ratio = 0.22
youngs_modulus = 37.3e9
recoverable_youngs_modulus = 37.3e9
recoverable_viscosity = 1
long_term_viscosity = 1
long_term_characteristic_time = 1
humidity = rh
temperature = T
activation_temperature = 23.0
[../]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 1
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 2.2e-2
characteristic_time = 18.9
latency_time = 18.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = rh
rh_exponent = 1.0
eigenstrain_name = asr_expansion
absolute_tolerance = 1e-10
output_iteration_info_on_error = true
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = T
thermal_expansion_coeff = 8.0e-6
stress_free_temperature = 10.6
eigenstrain_name = thermal_expansion
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
residual_youngs_modulus_fraction = 0.1
block = 1
[]
[./stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep'
damage_model = ASR_damage_concrete
[../]
[truss]
type = LinearElasticTruss
block = '2 3 4'
youngs_modulus = 2e11
temperature = T
thermal_expansion_coeff = 11.3e-6
temperature_ref = 10.6
[]
[]
[UserObjects]
[./visco_update]
type = LinearViscoelasticityManager
block = 1
viscoelastic_model = logcreep
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = '2000 2005'
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = '2000 2001'
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = '2000 2005'
value = 0.0
[../]
[./T]
type = FunctionDirichletBC
variable = T
boundary = '101 102 103 104 105 106'
function = ramp_temp
[../]
[./rh]
type = FunctionDirichletBC
variable = rh
boundary = '101 102 103 104 105 106'
function = ramp_humidity
[../]
[]
[Postprocessors]
[./nelem]
type = NumElems
[../]
[./ndof]
type = NumDOFs
[../]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
block = 1
[../]
[./ASR_strain_xx]
type = ElementAverageValue
variable = ASR_strain_xx
block = 1
[../]
[./ASR_strain_yy]
type = ElementAverageValue
variable = ASR_strain_yy
block = 1
[../]
[./ASR_strain_zz]
type = ElementAverageValue
variable = ASR_strain_zz
block = 1
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
block = 1
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 1
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
block = 1
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 1
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
block = 1
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
block = 1
[../]
[./temp]
type = ElementAverageValue
variable = T
block = 1
[../]
[./humidity]
type = ElementAverageValue
variable = rh
block = 1
[../]
[./thermal_strain_xx]
type = ElementAverageValue
variable = thermal_strain_xx
block = 1
[../]
[./thermal_strain_yy]
type = ElementAverageValue
variable = thermal_strain_yy
block = 1
[../]
[./thermal_strain_zz]
type = ElementAverageValue
variable = thermal_strain_zz
block = 1
[../]
[./disp_x_101]
type = SideAverageValue
variable = disp_x
boundary = 101
[../]
[./disp_x_102]
type = SideAverageValue
variable = disp_x
boundary = 102
[../]
[./disp_x_103]
type = SideAverageValue
variable = disp_x
boundary = 103
[../]
[./disp_x_104]
type = SideAverageValue
variable = disp_x
boundary = 104
[../]
[./disp_x_105]
type = SideAverageValue
variable = disp_x
boundary = 105
[../]
[./disp_x_106]
type = SideAverageValue
variable = disp_x
boundary = 106
[../]
[./disp_y_101]
type = SideAverageValue
variable = disp_y
boundary = 101
[../]
[./disp_y_102]
type = SideAverageValue
variable = disp_y
boundary = 102
[../]
[./disp_y_103]
type = SideAverageValue
variable = disp_y
boundary = 103
[../]
[./disp_y_104]
type = SideAverageValue
variable = disp_y
boundary = 104
[../]
[./disp_y_105]
type = SideAverageValue
variable = disp_y
boundary = 105
[../]
[./disp_y_106]
type = SideAverageValue
variable = disp_y
boundary = 106
[../]
[./disp_z_101]
type = SideAverageValue
variable = disp_z
boundary = 101
[../]
[./disp_z_102]
type = SideAverageValue
variable = disp_z
boundary = 102
[../]
[./disp_z_103]
type = SideAverageValue
variable = disp_z
boundary = 103
[../]
[./disp_z_104]
type = SideAverageValue
variable = disp_z
boundary = 104
[../]
[./disp_z_105]
type = SideAverageValue
variable = disp_z
boundary = 105
[../]
[./disp_z_106]
type = SideAverageValue
variable = disp_z
boundary = 106
[../]
[disp_x_p1_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.08'
[../]
[disp_x_p1_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.08'
[../]
[disp_x_p2_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.08'
[../]
[disp_x_p2_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.08'
[../]
[disp_x_p3_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.08'
[../]
[disp_x_p3_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.08'
[../]
[disp_x_p4_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.08'
[../]
[disp_x_p4_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.08'
[../]
[disp_x_p5_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.235'
[../]
[disp_x_p5_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.235'
[../]
[disp_x_p6_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.235'
[../]
[disp_x_p6_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.235'
[../]
[disp_y_p1_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.08'
[../]
[disp_y_p1_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.08'
[../]
[disp_y_p2_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.08'
[../]
[disp_y_p2_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.08'
[../]
[disp_y_p3_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.08'
[../]
[disp_y_p3_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.08'
[../]
[disp_y_p4_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.08'
[../]
[disp_y_p4_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.08'
[../]
[disp_y_p5_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.235'
[../]
[disp_y_p5_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.235'
[../]
[disp_y_p6_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.235'
[../]
[disp_y_p6_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.235'
[../]
[disp_y_p7_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 0.08'
[../]
[disp_y_p7_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 0.08'
[../]
[disp_y_p8_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 0.08'
[../]
[disp_y_p8_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 0.08'
[../]
[disp_z_p1_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 0.24'
[../]
[disp_z_p1_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 -0.24'
[../]
[disp_z_p2_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.08 0.24'
[../]
[disp_z_p2_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.08 -0.24'
[../]
[disp_z_p3_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.08 0.24'
[../]
[disp_z_p3_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.08 -0.24'
[../]
[disp_z_p4_pos]
type = PointValue
variable = disp_z
point = '0.08 0.08 0.24'
[../]
[disp_z_p4_neg]
type = PointValue
variable = disp_z
point = '0.08 0.08 -0.24'
[../]
[disp_z_p5_pos]
type = PointValue
variable = disp_z
point = '0.235 0.08 0.24'
[../]
[disp_z_p5_neg]
type = PointValue
variable = disp_z
point = '0.235 0.08 -0.24'
[../]
[disp_z_p6_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.08 0.24'
[../]
[disp_z_p6_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.08 -0.24'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
start_time = 2419200
dt = 1000000
automatic_scaling = true
end_time = 38880000
l_max_its = 20
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
csv = true
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/concrete_ASR_validation/asr_validation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[AuxVariables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 20.0
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 0
strain = SMALL
add_variables = true
eigenstrain_names = 'asr_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz '
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 0
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 0
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 0
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
[../]
[]
[Functions]
[./strain_function]
type = ParsedFunction
value = 1.24e-3*(1-exp(-t/86400/8.68))/(1+exp((8.68-t/86400)/16.22))
[../]
[]
[Materials]
[elasticity_concrete]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 37.3e9
poissons_ratio = 0.22
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 0
expansion_type = Isotropic
reference_temperature = 20.0
temperature_unit = Celsius
max_volumetric_expansion = 1.24e-3
characteristic_time = 8.68
latency_time = 16.22
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = 0.0
rh_exponent = 0.0
eigenstrain_name = asr_expansion
[]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Postprocessors]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
block = 'ANY_BLOCK_ID 0'
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
block = 'ANY_BLOCK_ID 0'
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
dt = 100000
end_time = 12960000
l_max_its = 50
l_tol = 1e-6
nl_max_its = 10
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[./Console]
type = Console
[../]
[]
(assessment/asr_validation/wald2017b/analysis/A1-uniaxial.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
penalty = 1e12
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
file = A1-uniaxial.e
[]
[Variables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 10.6
[../]
[./rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.8
block = 1
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./resid_z]
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./volumetric_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./thermal_conductivity]
order = CONSTANT
family = Monomial
[../]
[./thermal_capacity]
order = CONSTANT
family = Monomial
[../]
[./moisture_capacity]
order = CONSTANT
family = Monomial
[../]
[./humidity_diffusivity]
order = CONSTANT
family = Monomial
[../]
[./water_content]
order = CONSTANT
family = Monomial
[../]
[./water_hydrated]
order = CONSTANT
family = Monomial
[../]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[./area]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./axial_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 1
strain = FINITE
add_variables = true
eigenstrain_names = 'asr_expansion thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[../]
[]
[Modules/TensorMechanics/LineElementMaster]
[./Reinforcement_block]
block = '2 '
truss = true
area = area
displacements = 'disp_x disp_y disp_z'
#Note: Intentially not including this here to have it give a nonzero
# displacement reference residual since it's an unrestrained problem
#extra_vector_tags = 'ref'
[../]
[]
[Constraints]
[./rebar_x2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_x'
primary_variable = 'disp_x'
formulation = penalty
[../]
[./rebar_y2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_y'
primary_variable = 'disp_y'
formulation = penalty
[../]
[./rebar_z2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'disp_z'
primary_variable = 'disp_z'
formulation = penalty
[../]
[./rebar_T2]
type = EqualValueEmbeddedConstraint
secondary = 2
primary = 1
variable = 'T'
primary_variable = 'T'
formulation = penalty
penalty = 1e6
[../]
[]
[Kernels]
[./T_td]
type = ConcreteThermalTimeIntegration
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_diff]
type = ConcreteThermalConduction
variable = T
block = 1
extra_vector_tags = 'ref'
[../]
[./T_conv]
type = ConcreteThermalConvection
variable = T
relative_humidity = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./T_adsorption]
type = ConcreteLatentHeat
variable = T
H = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_td]
type = ConcreteMoistureTimeIntegration
variable = rh
block = 1
extra_vector_tags = 'ref'
[../]
[./rh_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
block = 1
extra_vector_tags = 'ref'
[../]
[./heat_dt]
type = TimeDerivative
variable = T
block = 2
extra_vector_tags = 'ref'
[../]
[./heat_conduction]
type = HeatConduction
variable = T
diffusion_coefficient = 53.0
block = 2
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 1
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 1
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./thermal_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./thermal_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./thermal_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = thermal_expansion
variable = thermal_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./volumetric_strain]
type = RankTwoScalarAux
scalar_type = VolumetricStrain
rank_two_tensor = total_strain
variable = volumetric_strain
block = 1
[../]
[./k]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'timestep_end'
block = 1
[../]
[./capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'timestep_end'
block = 1
[../]
[./rh_duff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
block = 1
[../]
[./wc_duff]
type = MaterialRealAux
variable = water_content
property = moisture_content
execute_on = 'timestep_end'
block = 1
[../]
[./hydrw_duff]
type = MaterialRealAux
variable = water_hydrated
property = hydrated_water
execute_on = 'timestep_end'
block = 1
[../]
[damage_index]
type = MaterialRealAux
block = 1
variable = damage_index
property = damage_index
execute_on = timestep_end
[]
[./area]
type = ConstantAux
block = '2'
variable = area
value = 1.33e-4
execute_on = 'initial timestep_begin'
[../]
[./axial_stress]
type = MaterialRealAux
block = '2'
variable = axial_stress
property = axial_stress
[../]
[]
[Functions]
[./ramp_temp]
type = PiecewiseLinear
data_file = temperature_history.csv
format = columns
[../]
[./ramp_humidity]
type = PiecewiseLinear
data_file = humidity_history.csv
format = columns
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
block = 1
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = KODUR-2004
thermal_capacity_model = KODUR-2004
aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2231.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# setup moisture capacity and humidity diffusivity models
aggregate_pore_type = dense #options: dense porous
aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
cement_type = 1 #options: 1 2 3 4
cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
water_to_cement_ratio = 0.5
concrete_cure_time = 28.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Mensi
D1 = 3.0e-8
coupled_moisture_diffusivity_factor = 1.0e-2 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[./creep]
type = LinearViscoelasticStressUpdate
block = 1
[../]
[./logcreep]
type = ConcreteLogarithmicCreepModel
block = 1
poissons_ratio = 0.22
youngs_modulus = 37.3e9
recoverable_youngs_modulus = 37.3e9
recoverable_viscosity = 1
long_term_viscosity = 1
long_term_characteristic_time = 1
humidity = rh
temperature = T
activation_temperature = 23.0
[../]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 1
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 2.2e-2
characteristic_time = 18.9
latency_time = 18.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
stress_latency_factor = 1.0
compressive_strength = 31.0e6
compressive_stress_exponent = 0.0
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
tensile_retention_factor = 1.0
tensile_absorption_factor = 1.0
ASR_dependent_tensile_strength = false
residual_tensile_strength_fraction = 1.0
temperature = T
relative_humidity = rh
rh_exponent = 1.0
eigenstrain_name = asr_expansion
absolute_tolerance = 1e-10
output_iteration_info_on_error = true
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = T
thermal_expansion_coeff = 8.0e-6
stress_free_temperature = 10.6
eigenstrain_name = thermal_expansion
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
residual_youngs_modulus_fraction = 0.1
block = 1
[]
[./stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep'
damage_model = ASR_damage_concrete
[../]
[truss]
type = LinearElasticTruss
block = '2 '
youngs_modulus = 2e11
temperature = T
thermal_expansion_coeff = 11.3e-6
temperature_ref = 10.6
[]
[]
[UserObjects]
[./visco_update]
type = LinearViscoelasticityManager
block = 1
viscoelastic_model = logcreep
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = '2000 2005'
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = '2000 2001'
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = '2000 2005'
value = 0.0
[../]
[./T]
type = FunctionDirichletBC
variable = T
boundary = '101 102 103 104 105 106'
function = ramp_temp
[../]
[./rh]
type = FunctionDirichletBC
variable = rh
boundary = '101 102 103 104 105 106'
function = ramp_humidity
[../]
[]
[Postprocessors]
[./nelem]
type = NumElems
[../]
[./ndof]
type = NumDOFs
[../]
[./ASR_strain]
type = ElementAverageValue
variable = ASR_vstrain
block = 1
[../]
[./ASR_strain_xx]
type = ElementAverageValue
variable = ASR_strain_xx
block = 1
[../]
[./ASR_strain_yy]
type = ElementAverageValue
variable = ASR_strain_yy
block = 1
[../]
[./ASR_strain_zz]
type = ElementAverageValue
variable = ASR_strain_zz
block = 1
[../]
[ASR_ext]
type = ElementAverageValue
variable = ASR_ex
block = 1
[]
[./vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 1
[../]
[./vstrain]
type = ElementAverageValue
variable = volumetric_strain
block = 1
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 1
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
block = 1
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
block = 1
[../]
[./temp]
type = ElementAverageValue
variable = T
block = 1
[../]
[./humidity]
type = ElementAverageValue
variable = rh
block = 1
[../]
[./thermal_strain_xx]
type = ElementAverageValue
variable = thermal_strain_xx
block = 1
[../]
[./thermal_strain_yy]
type = ElementAverageValue
variable = thermal_strain_yy
block = 1
[../]
[./thermal_strain_zz]
type = ElementAverageValue
variable = thermal_strain_zz
block = 1
[../]
[./disp_x_101]
type = SideAverageValue
variable = disp_x
boundary = 101
[../]
[./disp_x_102]
type = SideAverageValue
variable = disp_x
boundary = 102
[../]
[./disp_x_103]
type = SideAverageValue
variable = disp_x
boundary = 103
[../]
[./disp_x_104]
type = SideAverageValue
variable = disp_x
boundary = 104
[../]
[./disp_x_105]
type = SideAverageValue
variable = disp_x
boundary = 105
[../]
[./disp_x_106]
type = SideAverageValue
variable = disp_x
boundary = 106
[../]
[./disp_y_101]
type = SideAverageValue
variable = disp_y
boundary = 101
[../]
[./disp_y_102]
type = SideAverageValue
variable = disp_y
boundary = 102
[../]
[./disp_y_103]
type = SideAverageValue
variable = disp_y
boundary = 103
[../]
[./disp_y_104]
type = SideAverageValue
variable = disp_y
boundary = 104
[../]
[./disp_y_105]
type = SideAverageValue
variable = disp_y
boundary = 105
[../]
[./disp_y_106]
type = SideAverageValue
variable = disp_y
boundary = 106
[../]
[./disp_z_101]
type = SideAverageValue
variable = disp_z
boundary = 101
[../]
[./disp_z_102]
type = SideAverageValue
variable = disp_z
boundary = 102
[../]
[./disp_z_103]
type = SideAverageValue
variable = disp_z
boundary = 103
[../]
[./disp_z_104]
type = SideAverageValue
variable = disp_z
boundary = 104
[../]
[./disp_z_105]
type = SideAverageValue
variable = disp_z
boundary = 105
[../]
[./disp_z_106]
type = SideAverageValue
variable = disp_z
boundary = 106
[../]
[disp_x_p1_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 -0.08'
[../]
[disp_x_p1_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 -0.08'
[../]
[disp_x_p2_pos]
type = PointValue
variable = disp_x
point = '0.24 -0.08 0.08'
[../]
[disp_x_p2_neg]
type = PointValue
variable = disp_x
point = '-0.24 -0.08 0.08'
[../]
[disp_x_p3_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.08'
[../]
[disp_x_p3_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.08'
[../]
[disp_x_p4_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.08'
[../]
[disp_x_p4_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.08'
[../]
[disp_x_p5_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 -0.235'
[../]
[disp_x_p5_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 -0.235'
[../]
[disp_x_p6_pos]
type = PointValue
variable = disp_x
point = '0.24 0.08 0.235'
[../]
[disp_x_p6_neg]
type = PointValue
variable = disp_x
point = '-0.24 0.08 0.235'
[../]
[disp_y_p1_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 -0.08'
[../]
[disp_y_p1_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 -0.08'
[../]
[disp_y_p2_pos]
type = PointValue
variable = disp_y
point = '-0.08 0.24 0.08'
[../]
[disp_y_p2_neg]
type = PointValue
variable = disp_y
point = '-0.08 -0.24 0.08'
[../]
[disp_y_p3_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.08'
[../]
[disp_y_p3_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.08'
[../]
[disp_y_p4_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.08'
[../]
[disp_y_p4_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.08'
[../]
[disp_y_p5_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 -0.235'
[../]
[disp_y_p5_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 -0.235'
[../]
[disp_y_p6_pos]
type = PointValue
variable = disp_y
point = '0.08 0.24 0.235'
[../]
[disp_y_p6_neg]
type = PointValue
variable = disp_y
point = '0.08 -0.24 0.235'
[../]
[disp_y_p7_pos]
type = PointValue
variable = disp_y
point = '-0.235 0.24 0.08'
[../]
[disp_y_p7_neg]
type = PointValue
variable = disp_y
point = '-0.235 -0.24 0.08'
[../]
[disp_y_p8_pos]
type = PointValue
variable = disp_y
point = '0.235 0.24 0.08'
[../]
[disp_y_p8_neg]
type = PointValue
variable = disp_y
point = '0.235 -0.24 0.08'
[../]
[disp_z_p1_pos]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 0.24'
[../]
[disp_z_p1_neg]
type = PointValue
variable = disp_z
point = '-0.08 -0.08 -0.24'
[../]
[disp_z_p2_pos]
type = PointValue
variable = disp_z
point = '-0.08 0.08 0.24'
[../]
[disp_z_p2_neg]
type = PointValue
variable = disp_z
point = '-0.08 0.08 -0.24'
[../]
[disp_z_p3_pos]
type = PointValue
variable = disp_z
point = '0.08 -0.08 0.24'
[../]
[disp_z_p3_neg]
type = PointValue
variable = disp_z
point = '0.08 -0.08 -0.24'
[../]
[disp_z_p4_pos]
type = PointValue
variable = disp_z
point = '0.08 0.08 0.24'
[../]
[disp_z_p4_neg]
type = PointValue
variable = disp_z
point = '0.08 0.08 -0.24'
[../]
[disp_z_p5_pos]
type = PointValue
variable = disp_z
point = '0.235 0.08 0.24'
[../]
[disp_z_p5_neg]
type = PointValue
variable = disp_z
point = '0.235 0.08 -0.24'
[../]
[disp_z_p6_pos]
type = PointValue
variable = disp_z
point = '-0.235 0.08 0.24'
[../]
[disp_z_p6_neg]
type = PointValue
variable = disp_z
point = '-0.235 0.08 -0.24'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = none
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
start_time = 2419200
dt = 1000000
automatic_scaling = true
end_time = 38880000
l_max_its = 20
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
csv = true
#exodus = true #Turned off to save space
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/concrete_ASR_swelling/asr_confined.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = mesh_contact_strip.e
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[AuxVariables]
[./T]
order = FIRST
family = LAGRANGE
initial_condition = 35.0
[../]
[./ASR_ex]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_vstrain]
order = CONSTANT
family = MONOMIAL
[../]
[./ASR_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_xy]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_yz]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./ASR_strain_zx]
order = CONSTANT
family = MONOMIAL
block = 1
[../]
[./total_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./concrete]
block = 1
strain = FINITE
add_variables = true
eigenstrain_names = 'thermal_expansion asr_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[./steel]
block = 2
strain = FINITE
add_variables = true
eigenstrain_names = 'thermal_expansion'
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[]
[Contact]
[./leftright]
primary = 6
secondary = 5
model = frictionless
tangential_tolerance = 5e-4
penalty = 1.0e12
normalize_penalty = true
[../]
[]
[AuxKernels]
[./ASR_ex]
type = MaterialRealAux
variable = ASR_ex
block = 1
property = ASR_extent
execute_on = 'timestep_end'
[../]
[./ASR_vstrain]
type = MaterialRealAux
block = 1
variable = ASR_vstrain
property = ASR_volumetric_strain
execute_on = 'timestep_end'
[../]
[./ASR_strain_xx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./ASR_strain_yy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_zz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_xy]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_xy
index_i = 0
index_j = 1
execute_on = 'timestep_end'
[../]
[./ASR_strain_yz]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_yz
index_i = 1
index_j = 2
execute_on = 'timestep_end'
[../]
[./ASR_strain_zx]
type = RankTwoAux
block = 1
rank_two_tensor = asr_expansion
variable = ASR_strain_zx
index_i = 0
index_j = 2
execute_on = 'timestep_end'
[../]
[./total_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[]
[Materials]
[./concreteTH]
type = ConcreteThermalMoisture
# setup thermal property models and parameters
# options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003
thermal_conductivity_model = CONSTANT
thermal_capacity_model = CONSTANT
# aggregate_type = Siliceous #options: Siliceous Carbonate
ref_density_of_concrete = 2250.0 # in kg/m^3
ref_specific_heat_of_concrete = 1100.0 # in J/(Kg.0C)
ref_thermal_conductivity_of_concrete = 3 # in W/(m.0C)
# # setup moisture capacity and humidity diffusivity models
# aggregate_pore_type = dense #options: dense porous
# aggregate_mass = 1877.0 #mass of aggregate (kg) per m^3 of concrete
# cement_type = 1 #options: 1 2 3 4
# cement_mass = 354.0 #mass of cement (kg) per m^3 of concrete
# water_to_cement_ratio = 0.43
# concrete_cure_time = 23.0 #curing time in (days)
# #options available for humidity diffusivity:
# moisture_diffusivity_model = Bazant #options: Bazant Mensi
# D1 = 3.0e-12
# coupled_moisture_diffusivity_factor = 1.0e-3 # factor for mositure diffusivity due to heat
# #coupled nonlinear variables
# relative_humidity = rh
temperature = T
block = '1 2'
[../]
[elasticity_concrete]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 37.3e9
poissons_ratio = 0.22
# residual_youngs_modulus_fraction = 0.5
[]
[ASR_damage_concrete]
type = ConcreteASRMicrocrackingDamage
block = 1
residual_youngs_modulus_fraction = 0.5
[]
[thermal_strain_concrete]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = T
thermal_expansion_coeff = 1.0e-5
stress_free_temperature = 35.0
eigenstrain_name = thermal_expansion
[]
[stress_concrete]
type = ComputeDamageStress
block = 1
damage_model = ASR_damage_concrete
[]
[ASR_expansion]
type = ConcreteASREigenstrain
block = 1
expansion_type = Anisotropic
reference_temperature = 35.0
temperature_unit = Celsius
max_volumetric_expansion = 0.00262
characteristic_time = 68.9
latency_time = 111.0
characteristic_activation_energy = 5400.0
latency_activation_energy = 9400.0
compressive_strength = 31.0e6
expansion_stress_limit = 8.0e6
tensile_strength = 3.2e6
stress_latency_factor = 2.3333
ASR_dependent_tensile_strength = true
residual_tensile_strength_fraction = 0.5
temperature = T
relative_humidity = 0.0
rh_exponent = 0.0
eigenstrain_name = asr_expansion
[]
[elasticity_steel]
type = ComputeIsotropicElasticityTensor
block = 2
youngs_modulus = 193e9
poissons_ratio = 0.3
[]
[thermal_strain_steel]
type = ComputeThermalExpansionEigenstrain
block = 2
temperature = T
thermal_expansion_coeff = 1.0e-5
stress_free_temperature = 35.0
eigenstrain_name = thermal_expansion
[]
[stress_steel]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[BCs]
[./x_disp]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./y_disp]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./axial_load]
type = NeumannBC
variable = disp_y
boundary = 4
value = -20e6
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart -snes_ls -pc_hypre_boomeramg_strong_threshold'
petsc_options_value = 'hypre boomeramg 201 cubic 0.7'
# petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
# petsc_options_value = 'lu superlu_dist 101'
# petsc_options_iname = '-pc_type -ksp_gmres_restart'
# petsc_options_value = 'lu 101'
dt = 100000
num_steps = 5
l_max_its = 50
l_tol = 1e-6
nl_max_its = 10
nl_rel_tol = 1e-12
nl_abs_tol = 1e-6
[]
[Outputs]
file_base = asr_confined_strip_out
interval = 1
exodus = true
perf_graph = true
[./Console]
type = Console
[../]
[]