- A3.8e-13empirical constants (m2/s)
Default:3.8e-13
C++ Type:double
Description:empirical constants (m2/s)
- B0.05empirical constants
Default:0.05
C++ Type:double
Description:empirical constants
- C0130empirical constants
Default:130
C++ Type:double
Description:empirical constants
- D13e-10empirical constants (m2/s)
Default:3e-10
C++ Type:double
Description:empirical constants (m2/s)
- aggregate_mass1877aggregate mass (kg) per m^3
Default:1877
C++ Type:double
Description:aggregate mass (kg) per m^3
- aggregate_pore_typedenseaggregate pore structure
Default:dense
C++ Type:MooseEnum
Description:aggregate pore structure
- aggregate_typeSiliceoussiliceous or carbonate
Default:Siliceous
C++ Type:MooseEnum
Description:siliceous or carbonate
- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector<SubdomainName>
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>
Description:The list of boundary IDs from the mesh where this boundary condition applies
- cement_mass354cement mass (kg) per m^3
Default:354
C++ Type:double
Description:cement mass (kg) per m^3
- cement_type1cement type input for moisture capacity calculations
Default:1
C++ Type:MooseEnum
Description:cement type input for moisture capacity calculations
- 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
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.
- concrete_cure_time23concrete curing time in days
Default:23
C++ Type:double
Description:concrete curing time in days
- 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
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
- coupled_moisture_diffusivity_factor1e-05coupling coefficient mositure transfer due to heat
Default:1e-05
C++ Type:double
Description:coupling coefficient mositure transfer due to heat
- moisture_diffusivity_modelBazantmoisture diffusivity models
Default:Bazant
C++ Type:MooseEnum
Description:moisture diffusivity models
- n6empirical constants
Default:6
C++ Type:double
Description:empirical constants
- ref_density_of_concrete2231refernece density of porous media Kg/m^3
Default:2231
C++ Type:double
Description:refernece density of porous media Kg/m^3
- ref_specific_heat_of_concrete1100reference specific heat of concrete J/Kg/0C
Default:1100
C++ Type:double
Description:reference specific heat of concrete J/Kg/0C
- ref_thermal_conductivity_of_concrete3reference thermal conductivity of concrete W/m/0C
Default:3
C++ Type:double
Description:reference thermal conductivity of concrete W/m/0C
- relative_humiditynonlinear variable name for rel. humidity
C++ Type:std::vector<VariableName>
Description:nonlinear variable name for rel. humidity
- temperaturenonlinear variable name for temperature in unit of Celscius
C++ Type:std::vector<VariableName>
Description:nonlinear variable name for temperature in unit of Celscius
- thermal_capacity_modelCONSTANTthermal capacity models
Default:CONSTANT
C++ Type:MooseEnum
Description:thermal capacity models
- thermal_conductivity_modelCONSTANTthermal conductivity models
Default:CONSTANT
C++ Type:MooseEnum
Description:thermal conductivity models
- water_to_cement_ratio0.43water to cement ratio
Default:0.43
C++ Type:double
Description:water to cement ratio
ConcreteThermalMoisture
Material parameters for thermal and moisture transport in concrete.
Description
This class computes the set of material coefficients and parameters needed for moisture diffusion and heat transfer in concrete. The equivalent moisture diffusion/heat transfer model Bažant and Thonguthai (1979), Bažant et al. (1982), Xi et al. (1994), and Xi et al. (1994) is implemented using a set of kernels that provide the individual terms in the system of partial differential equations. This class provides with a full set of constitutive models. The following sections provide detailed descriptions of the governing equations and associated constitutive laws for the coupled moisture diffusion and heat transfer model.
Heat transfer model
Governing equation
The governing partial differential equation for heat transfer in concrete is given by Bažant et al. (1982) as:
(1)where:
= density, kg/m
= specific heat of concrete, J/kgC
= temperature, C
= thermal conductivity of concrete, W/mC
= mass density and isobaric (constant pressure) heat capacity of liquid water
= moisture flux ()
= water (moisture) content in g/g (for unit volume of material, m)
= pore relative humidity
= heat absorption of free water,
= moisture capacity,
= rate of heat per unit volume generated within the body, W/m
= time,
The term on the left side of Eq. (1) represents time-dependent effects, and is provided by ConcreteThermalTimeIntegration. The first term on the right side of Eq. (1) represents the thermal conduction, and is provided by ConcreteThermalConduction. The second term represents the convective transport of heat due to fluid flow, and is provided by ConcreteThermalConvection. The third term represents adsorption heat due to adsorption of free water molecules in pores onto pore walls, and is provided by ConcreteLatentHeat. The last term is a volumetric heating from other sources that can be provided by general-purpose kernels provided by MOOSE.
The mass density and isobaric (constant pressure) heat capacity of liquid water is given by
(2)where is mass density of liquid water in which is given as Raznjevic and Podhorsky (1970)
(3)and is the isobaric (constant pressure) heat capacity of liquid water in J/kgC. The values of are tabulated in Yunus and Afshin (2011). The adsorption heat usually can be neglected according to Bažant et al. (1982). Thus, a small fraction of the concrete specific heat capacity value is simply assigned to (i.e., ).
Thermal capacity
Four constitutive models are available for concrete thermal capacity (in MJ/mC ):
A user-supplied constant thermal capacity;
The ASCE (1992) model for normal-strength concrete;
Kodur et al. (2004) model for high-strength concrete and
The Eurocode (2004) model for both normal- and high-strength concrete.
Details of these models are provided below:
Constant
In this model, the user provides a value of that remains constant during the simulation.
Siliceous aggregate concrete
Carbonate aggregate concrete
Siliceous aggregate concrete
Carbonate aggregate concrete
Note that thermal capacity for above models at T 20C is assumed to be the thermal capacity at T = 20C.
Thermal conductivity
Four thermal conductivity models are available, all depending on the temperature and concrete texture, including
A user-supplied constant thermal conductivity;
The ASCE (1992) model for normal-strength concrete at high temperature;
Kodur et al. (2004) model for high-strength concrete;
The Eurocode (2004) model for both normal- and high-strength concrete
Details of these models are provided below:
Constant
In this model, the user provides a value of that remains constant during the simulation.
Siliceous aggregate concrete
Carbonate aggregate concrete
Siliceous aggregate concrete
Carbonate aggregate concrete
Upper limit
Lower limit
Note that thermal conductivity at T 20C is assumed to be the thermal capacity at T = 20C.
These various heat transfer constitutive models can be conveniently chosen and specified from input file.
Moisture capacity
Xi et al. (1994) and Xi et al. (1994) developed a concrete moisture capacity model based on the Brunauer-Emmett-Teller (BET) adsorption isotherm theory, which was implemented here. The total water content in concrete at a constant temperature is referred as water adsorption isotherm, which was proposed by Xi et al. (1994) as:
(16)where
=
= relative humidity
= absolute temperature in
= quantity of vapor absorbed at pressure (g water/g cement)
= monolayer capacity: mass of adsorbate required to cover
the adsorbent with a single molecular layer
= empirical constant
The monolayer capacity, , is defined as the mass of adsorbate required to cover the surface of the adsorbent with a single molecular layer. To evaluate at a given relative humidity value and the empirical constant in the above equation need to be evaluated first. This is done separately for cement and aggregate materials as follows:
Monolayer capacity,
Cement Paste:
where is the age of concrete material in ; represents the effect of cement types on the adsorption isotherm and is given by table below Table 1; at room temperature and remains constant during simulations, and
represents the effects of concrete age and represents the effect of water to cement ratio on the adsorption isotherm, respectively.
Table 1: for different types of concrete
Concrete Type 1 2 3 4 0.9 1.0 0.85 0.6 Aggregates:
The monolayer capacity of aggregates is determined by
where depends on the pore structure of various aggregates as listed in Table 2.
Table 2: of various pore structure of aggregate
Pore structure of aggregate dense 0.05-0.1 porous 0.1-0.04
Empirical constant
The empirical constant in Eq. (16) is related to the the number of layers of adsorbed water molecule, , under saturated state. is determined separately for cement and aggregate materials.
Cement Paste:
is expressed in terms similar to those of :
where is given by Table 3 and at room temperature and remains constant during the simulation.
Table 3: for different types of concrete
Concrete Type 1 2 3 4 1.1 1.0 1.15 1.5 Aggregates:
For the aggregate, is expressed as:
where is defined in Table 4.
Table 4: of various pore structure of aggregate
Pore structure of aggregate dense 1.0-1.5 porous 1.7-2.0 Once the number of adsorbed layers of molecule, , is obtained, can be obtained by
Finally, once the monolayer capacity and empirical constant are obtained, then using Eq. (16), the water content, , in cement and aggregate materials can be obtained. The moisture capacities for cement paste or aggregate material can also be determined by taking derivatives of both sides of Eq. (16) with respect to relative humidity, , as
(17)The total moisture capacity of the concrete structure required by the heat transfer governing equation Eq. (1) is then simply the weight-average value between cement and aggregate materials as:
(18)where
= weight percentage of the aggregate
= weight percentage of the cement paste
= moisture capacity of aggregate (g/g) (for the unit volume of material, cm)
= moisture capacity of cement paste (g/g) (for the unit volume of material, cm)
The total moisture capacity (with the units of g water/g material) is a function of water content , temperature and relative humidity, , and strongly depends on the concrete texture.
Moisture diffusion
A comprehensive set of constitutive models and parameters for moisture diffusion in concrete structures, which were also implemented here. Detailed descriptions of the governing equation and constitutive models for moisture diffusion are provided here.
Governing equation
The governing equation for moisture diffusion in concrete is formulated by using relative humidity, , as the primary variable:
(19)where
= total water content (g/g)
= pore relative humidity, and /
= saturate vapor pressure Bary et al. (2012) (where is the temperature in K))
= standard atmospheric pressure
= moisture diffusivity (also referred as humidity diffusivity),
= coupled moisture diffusivity under the influence of a temperature gradient,
= total mass of free evaporable water released into the pores by dehydration of the cement paste
= time,
The term on the left side of Eq. (19) represents time-dependent effects, and is provided by ConcreteMoistureTimeIntegration. The first term on the right side of Eq. (19) represents Fickian diffusion, and the second term represents Soret diffusion. These are both provided by ConcreteMoistureDiffusion. The third term on the right hand side of this equation represents a source due to dehydrated water, and is provided by ConcreteMoistureDehydration.
Moisture diffusivity depends on the relative humidity, . Thus the moisture diffusion governing equation is highly nonlinear. The following sections describes in detail the constitutive models for moisture diffusivity.
Moisture diffusivity
The moisture diffusivity of concrete, , is a complex function of temperature, , relative humidity, , and pore structure of concrete. Various diffusion mechanisms often interact, such as molecular diffusion in large pores (usually 50nm - 10 microns and beyond) and microcracks, Knudson diffusion in mesopores (2.5nm - 50 nm) and micropores (2.5nm) and surface diffusion along pore walls. Most existing moisture diffusivity models typically do not account for individual diffusion mechanisms separately. Instead, they tend to reproduce the general combined trend.
Calculation of starts with the calculation of a reference moisture diffusivity, , at a given temperature, , and relative humidity, . Three reference moisture diffusivity models are implemented as:
(20)where
= humidity diffusion coefficient of concrete
= free water content in L/m
is a function of relative humidity, , in concrete as given by
(21)where is constant takes a value of 130 (in L/m).
(22)where and
(23)Also, when and is given by
(24)where is in C. from and .
It's obvious that all three reference moisture diffusivity models strongly depend on the value of humidity , and indirectly on the temperature . Once the value of reference moisture diffusivity is obtained, the actual concrete moisture diffusivity required by the moisture diffusion governing equation, Eq. (19), can then be calculated by
(25)where
(26)in which is the absolute temperature (), is activation energy for water migration along the adsorption layers in the necks, and is gas constant with =2700 K, and
(27)Coupled moisture diffusion by thermal gradient,
It has been reported by Bazant et al. Bažant et al. (1982) that the additional moisture diffusion due to thermal gradients included in the moisture governing equation is negligible. Thus the value of is set to by default. This parameter can, however, be set to an arbitrary value if desired.
Input Parameters
- 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
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Options:
Description:The seed for the master random number generator
- 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_moisture_heat_transfer/concrete_thermal_moisture_properties.i)
- (test/tests/concrete_ASR_swelling/asr_confined.i)
- (assessment/asr_validation/wald2017b/analysis/A1-uniaxial.i)
- (test/tests/concrete_moisture_heat_transfer/maqbeth_1d.i)
References
- ASCE.
Structural fire protection, asce committee on fire protection, structural division.
Technical Report, American Society of Civil Engineers, New York, NY, USA, 1992.[BibTeX]
@techreport{asce_1992, Author = "ASCE", Title = "Structural Fire Protection, ASCE Committee on Fire Protection, Structural Division", address = "New York, NY, USA", Institution = "American Society of Civil Engineers", Year = "1992" }
- Beno\^ıt Bary, Marcus V.G. de Morais, Stéphane Poyet, and Sabine Durand.
Simulations of the thermo-hydro-mechanical behaviour of an annular reinforced concrete structure heated up to 200°c.
Engineering Structures, 36:302–315, March 2012.[BibTeX]
@article{Bary2012, author = "Bary, Beno{\^{\i}}t and de Morais, Marcus V.G. and Poyet, St{\'{e}}phane and Durand, Sabine", journal = "Engineering Structures", month = "March", pages = "302--315", title = "Simulations of the thermo-hydro-mechanical behaviour of an annular reinforced concrete structure heated up to 200{\textdegree}C", volume = "36", year = "2012" }
- Zdeněk P Bažant, Jenn-Chuan Chern, and Werapol Thonguthai.
Finite element program for moisture and heat transfer in heated concrete.
Nuclear Engineering and Design, 68(1):61–70, 1982.[BibTeX]
@article{bazant1982finite, Author = "Ba{\v{z}}ant, Zden{\v{e}}k P and Chern, Jenn-Chuan and Thonguthai, Werapol", Journal = "Nuclear Engineering and Design", Number = "1", Pages = "61--70", Publisher = "Elsevier", Title = "Finite element program for moisture and heat transfer in heated concrete", Volume = "68", Year = "1982" }
- Zdeněk P Bažant and Werapol Thonguthai.
Pore pressure in heated concrete walls: theoretical prediction.
Magazine of Concrete Research, 31(107):67–76, 1979.[BibTeX]
@article{bazant1979pore, Author = "Ba{\v{z}}ant, Zden{\v{e}}k P and Thonguthai, Werapol", Journal = "Magazine of Concrete Research", Number = "107", Pages = "67--76", Publisher = "Thomas Telford", Title = "Pore pressure in heated concrete walls: theoretical prediction", Volume = "31", Year = "1979" }
- Eurocode.
Design of concrete structures. part 1-2: general rules - structural fire design.
Technical Report, European Committee for Standardization, Brussels, Belgium., 2004.[BibTeX]
@techreport{Eurocode, Author = "Eurocode", Institution = "European Committee for Standardization, Brussels, Belgium.", Title = "Design of concrete structures. Part 1-2: general rules - structural fire design", Year = "2004" }
- VKR Kodur, TC Wang, and FP Cheng.
Predicting the fire resistance behaviour of high strength concrete columns.
Cement and Concrete Composites, 26(2):141–153, 2004.[BibTeX]
@article{kodur2004predicting, Author = "Kodur, VKR and Wang, TC and Cheng, FP", Journal = "Cement and Concrete Composites", Number = "2", Pages = "141--153", Publisher = "Elsevier", Title = "Predicting the fire resistance behaviour of high strength concrete columns", Volume = "26", Year = "2004" }
- R Mensi, P Acker, and A Attolou.
Séchage du béton: analyse et modélisation.
Materials and structures, 21(1):3–12, 1988.[BibTeX]
@article{mensi1988sechage, Author = "Mensi, R and Acker, P and Attolou, A", Journal = "Materials and structures", Number = "1", Pages = "3--12", Publisher = "Springer", Title = "S{\'e}chage du b{\'e}ton: analyse et mod{\'e}lisation", Volume = "21", Year = "1988" }
- Kuzman Raznjevic and Rickard Podhorsky.
Tables et diagrammes termodynamiques.
Eyrolles, 1970.[BibTeX]
@book{raznjevic1970tables, Author = "Raznjevic, Kuzman and Podhorsky, Rickard", Publisher = "Eyrolles", Title = "Tables et diagrammes termodynamiques", Year = "1970" }
- Yunping Xi, Zdenňek P. Bažant, Larissa Molina, and Hamlin M. Jennings.
Moisture diffusion in cementitious materials moisture capacity and diffusivity.
Advanced Cement Based Materials, 1(6):258–266, November 1994.
doi:10.1016/1065-7355(94)90034-5.[BibTeX]
@article{xi_moisture_1994_b, Author = "Xi, Yunping and Ba{\v z}ant, Zden{\v n}ek P. and Molina, Larissa and Jennings, Hamlin M.", Doi = "10.1016/1065-7355(94)90034-5", Journal = "Advanced Cement Based Materials", Language = "en", Month = "November", Number = "6", Pages = "258--266", Title = "Moisture diffusion in cementitious materials Moisture capacity and diffusivity", Volume = "1", Year = "1994" }
- Yunping Xi, Zdeněk P Bažant, and Hamlin M Jennings.
Moisture diffusion in cementitious materials adsorption isotherms.
Advanced Cement Based Materials, 1(6):248–257, 1994.[BibTeX]
@article{xi_moisture_1994_a, Author = "Xi, Yunping and Ba{\v{z}}ant, Zden{\v{e}}k P and Jennings, Hamlin M", Journal = "Advanced Cement Based Materials", Number = "6", Pages = "248--257", Publisher = "Elsevier", Title = "Moisture diffusion in cementitious materials Adsorption isotherms", Volume = "1", Year = "1994" }
- CA Yunus and JG Afshin.
Heat and mass transfer: fundamentals and applications.
2011.[BibTeX]
@misc{yunus2011heat, Author = "Yunus, CA and Afshin, JG", Publisher = "Tata McGraw-Hill", address = "New Delhi, India", Title = "Heat and Mass Transfer: Fundamentals and Applications", Year = "2011" }
(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_moisture_heat_transfer/concrete_thermal_moisture_properties.i)
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[temperature]
order = CONSTANT
family = MONOMIAL
initial_condition = 20
[]
[rh]
order = CONSTANT
family = MONOMIAL
initial_condition = 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
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
function = temperature
variable = temperature
execute_on = 'initial timestep_begin'
[]
[rh]
type = FunctionAux
function = rh
variable = rh
execute_on = 'initial timestep_begin'
[]
[thermal_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[thermal_capacity]
type = MaterialRealAux
variable = thermal_capacity
property = thermal_capacity
execute_on = 'initial timestep_end'
[]
[moisture_capacity]
type = MaterialRealAux
variable = moisture_capacity
property = moisture_capacity
execute_on = 'initial timestep_end'
[]
[humidity_diffusivity]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'initial timestep_end'
[]
[]
[Functions]
[temperature]
type = PiecewiseLinear
xy_data = '20 20
635 635'
[]
[rh]
type = PiecewiseLinear
xy_data = '0 1
635 1'
[]
[]
[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.43
concrete_cure_time = 23.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Xi Mensi
D1 = 3.0e-10
coupled_moisture_diffusivity_factor = 1.0e-3 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = temperature
[]
[]
[Postprocessors]
[temperature]
type = ElementAverageValue
variable = temperature
execute_on = 'initial timestep_end'
[]
[rh]
type = ElementAverageValue
variable = rh
execute_on = 'initial timestep_end'
[]
[thermal_conductivity]
type = ElementAverageValue
variable = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[thermal_capacity]
type = ElementAverageValue
variable = thermal_capacity
execute_on = 'initial timestep_end'
[]
[moisture_capacity]
type = ElementAverageValue
variable = moisture_capacity
execute_on = 'initial timestep_end'
[]
[humidity_diffusivity]
type = ElementAverageValue
variable = humidity_diffusivity
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
start_time = 20.0
end_time = 635.0
dt = 1.0
[]
[Outputs]
csv = 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
[../]
[]
(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_moisture_heat_transfer/maqbeth_1d.i)
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
coord_type = RZ
[]
[Mesh]
file = maqbeth_1d.e
construct_side_list_from_node_list = true
[]
[Functions]
[temp_hist]
type = PiecewiseLinear
x = '0.0 36000.0 114120.0 138600.0 213120'
y = '20.0 20.0 150.0 80.0 200.0'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 20.0
[]
[rh]
order = FIRST
family = LAGRANGE
initial_condition = 0.96
[]
[]
[AuxVariables]
[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
[]
[]
[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'
[]
[h_diff]
type = ConcreteMoistureDiffusion
variable = rh
temperature = T
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[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_diff]
type = MaterialRealAux
variable = humidity_diffusivity
property = humidity_diffusivity
execute_on = 'timestep_end'
[../]
[./wc_diff]
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'
[../]
[]
[Materials]
[./concrete]
type = ConcreteThermalMoisture
block = 1
# 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.43
concrete_cure_time = 23.0 #curing time in (days)
# options available for humidity diffusivity:
moisture_diffusivity_model = Bazant #options: Bazant Xi Mensi
D1 = 3.0e-10
coupled_moisture_diffusivity_factor = 1.0e-3 # factor for mositure diffusivity due to heat
# coupled nonlinear variables
relative_humidity = rh
temperature = T
[../]
[]
[BCs]
[./T_left]
type = FunctionDirichletBC
variable = T
boundary = '1'
function = temp_hist
[../]
[./T_right]
type = ConvectiveFluxBC
variable = T
boundary = '2'
final = 20.0
rate = 10.0
[../]
[./rh_left]
type = SpecifiedVaporPressureBC
variable = rh
boundary = '1'
duration = 3600
vapor_pressure = 2500.0
temperature = T
[../]
[./rh_right]
type = SpecifiedVaporPressureBC
variable = rh
boundary = '2'
duration = 3600
vapor_pressure = 2500.0
temperature = T
[../]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
start_point = '0.5 0 0'
end_point = '1.1 0 0'
num_points = 100
variable = 'T rh'
sort_by = id
outputs = csv
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
dt = 10000
end_time = 900000.0
l_max_its = 50
l_tol = 1e-6
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
[Predictor]
type = SimplePredictor
scale = 1.0
skip_times_old = '0.0 36000.0 114120.0 138600.0 213120'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/out'
time_data = true
[]
[]