diff --git a/doc/content/source/kernels/ConcreteMoistureDehydration.md b/doc/content/source/kernels/ConcreteMoistureDehydration.md deleted file mode 100644 index f319e2fe..00000000 --- a/doc/content/source/kernels/ConcreteMoistureDehydration.md +++ /dev/null @@ -1,49 +0,0 @@ -# ConcreteMoistureDehydration - -!syntax description /Kernels/ConcreteMoistureDehydration - -## Description - -This kernel provides a source term accounting for dehydrated water in the governing equation for moisture in concrete. The amount of dehydrated water, $W_d$, in units of (g water)/(g material)/(cm$^3$ volume of material), represents the water molecules released into concrete pores due to dehydration of hydrated minerals within cement paste as the temperature in concrete increases. $W_d$ is given by the following empirical formula: - -!equation id=Wd -W_d = W_H^{105}f_d(T), - -in which $W_H^{105}$ is the hydrated water content (in units of (g water)/(g material)/(cm$^3$ volume of material)) at 105 $\degree$C, and $f_d$ is a function of the weight loss of the concrete due to heat. Dehydration of hydrated minerals within cement paste typically begins at about 120 $\degree$C. - -The function describing variation of $W_H$ over time is given by - -!equation id=WH -\begin{array}{lll} -W_H(t_e) = 0.21c(\frac{t_e}{\tau_e + t_e}), & \tau_e = 23 & \textrm{days} -\end{array} - -where $c$ is mass of (anhydrous) cement per cm$^3$ of concrete and $t_e$ is the equivalent hydration period, which is given by - -!equation id=teq -t_e = \int \beta_H\beta_Tdt \\ -\beta_H(H) = \frac{1}{1+(3.5-3.5H)^4} \\ -\beta_T(T) = e^{\frac{Q_h}{R}(\frac{1}{T_{ref}}-\frac{1}{T})} - -where - -$t$ = actual time \\ -$Q_h$ = activation energy of hydration \\ -$\frac{Q_h}{R}$ = 2700 K - -Typical values of $f_d(T)$ are plotted by [!cite](harmathy1973thermal). In this implementation, a simple linear function - -!equation id=fdT -f_d(T) = \frac{0.05T}{600}, - -is used to account for mass loss of concrete due to dehydration. It should be noted that $W_d$ is often negligible in modeling moisture diffusion under most circumstances unless the concrete is subjected to rapid heating conditions at high temperature. It is also interesting to note that by extending the definition of $W_d$ to hydrated water, the same model can also be applied to simulate the moisture distribution in concrete during the curing process. In such case, $W_d$ becomes a sink term and represents the loss of free water molecules in pores due to hydration reactions. - -The material properties used by this model are computed by the [ConcreteThermalMoisture](ConcreteThermalMoisture.md) material. - -!syntax parameters /Kernels/ConcreteMoistureDehydration - -!syntax inputs /Kernels/ConcreteMoistureDehydration - -!syntax children /Kernels/ConcreteMoistureDehydration - -!bibtex bibliography diff --git a/doc/content/source/materials/ConcreteThermalMoisture.md b/doc/content/source/materials/ConcreteThermalMoisture.md index 6ee711a0..090d0777 100644 --- a/doc/content/source/materials/ConcreteThermalMoisture.md +++ b/doc/content/source/materials/ConcreteThermalMoisture.md @@ -350,7 +350,7 @@ A comprehensive set of constitutive models and parameters for moisture diffusion The governing equation for moisture diffusion in concrete is formulated by using relative humidity, $H$, as the primary variable: !equation id=moisture_governing -\frac{\partial{W}}{\partial{H}} \frac{\partial{H}}{\partial{t}} = \nabla (D_h\nabla H) + \nabla (D_{ht}\nabla T) + \frac{\partial{W_d}}{\partial{t}} +\frac{\partial{H}}{\partial{t}} = \nabla (D_h\nabla H) + \nabla (D_{ht}\nabla T) where @@ -360,10 +360,9 @@ $P_{vs}$ = saturate vapor pressure $= P_{atm}\exp\left(4871.3\frac{T-100}{373.15 $P_{atm}$ = standard atmospheric pressure $= 101.325 Pa$ \\ $D_h$ = moisture diffusivity (also referred as humidity diffusivity), $m^2/s$\\ $D_{ht}$= coupled moisture diffusivity under the influence of a temperature gradient, $m^2/s$\\ -$W_d$= total mass of free evaporable water released into the pores by dehydration of the cement paste\\ $t$ = time, $s$ -The term on the left side of [!eqref](moisture_governing) represents time-dependent effects, and is provided by [ConcreteMoistureTimeIntegration](ConcreteMoistureTimeIntegration.md). The first term on the right side of [!eqref](moisture_governing) represents Fickian diffusion, and the second term represents Soret diffusion. These are both provided by [ConcreteMoistureDiffusion](ConcreteMoistureDiffusion.md). The third term on the right hand side of this equation represents a source due to dehydrated water, and is provided by [ConcreteMoistureDehydration](ConcreteMoistureDehydration.md). +The term on the left side of [!eqref](moisture_governing) represents time-dependent effects, and is provided by [ConcreteMoistureTimeIntegration](ConcreteMoistureTimeIntegration.md). The first term on the right side of [!eqref](moisture_governing) represents Fickian diffusion, and the second term represents Soret diffusion. These are both provided by [ConcreteMoistureDiffusion](ConcreteMoistureDiffusion.md). Moisture diffusivity $D_h$ depends on the relative humidity, $H$. Thus the moisture diffusion governing equation is highly nonlinear. The following sections describes in detail the constitutive models for moisture diffusivity. diff --git a/include/kernels/ConcreteMoistureDehydration.h b/include/kernels/ConcreteMoistureDehydration.h deleted file mode 100644 index 291f4a44..00000000 --- a/include/kernels/ConcreteMoistureDehydration.h +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************/ -/* DO NOT MODIFY THIS HEADER */ -/* BlackBear */ -/* */ -/* (c) 2017 Battelle Energy Alliance, LLC */ -/* ALL RIGHTS RESERVED */ -/* */ -/* Prepared by Battelle Energy Alliance, LLC */ -/* Under Contract No. DE-AC07-05ID14517 */ -/* With the U. S. Department of Energy */ -/* */ -/* See COPYRIGHT for full restrictions */ -/****************************************************************/ - -#pragma once - -#include "TimeDerivative.h" - -/** - * Define the Kernel for a CoupledConvectionReactionSub operator that looks like: - * - * storage * delta pressure / delta t - * - * This first line is defining the name and inheriting from Kernel. - */ -class ConcreteMoistureDehydration : public TimeDerivative -{ -public: - static InputParameters validParams(); - ConcreteMoistureDehydration(const InputParameters & parameters); - -protected: - /** - * Responsible for computing the residual at one quadrature point - * - * This should always be defined in the .C - * @return The residual of mass accumulation of primary species concentration. - */ - virtual Real computeQpResidual(); - - /** - * Responsible for computing the diagonal block of the preconditioning matrix. - * This is essentially the partial derivative of the residual with respect to - * the variable this kernel operates on ("u"). - * - * Note that this can be an approximation or linearization. In this case it's - * not because the Jacobian of this operator is easy to calculate. - * - * This should always be defined in the .C - * @return The diagonal jacobian of mass accumulation of primary species concentration. - */ - virtual Real computeQpJacobian(); - virtual Real computeQpOffDiagJacobian(unsigned int jvar); - - /// Material property of hydrated water mass (kg/m^3) - Real _T_dehydration; - - const MaterialProperty & _WH; - const MaterialProperty & _WH_old; - bool _has_temperature; - const VariableValue & _T; -}; diff --git a/include/kernels/ConcreteMoistureDiffusion.h b/include/kernels/ConcreteMoistureDiffusion.h index cfdb1df1..f7b6bab6 100644 --- a/include/kernels/ConcreteMoistureDiffusion.h +++ b/include/kernels/ConcreteMoistureDiffusion.h @@ -60,4 +60,6 @@ class ConcreteMoistureDiffusion : public Diffusion /// Temperature gradient const VariableGradient & _grad_T; + + const MaterialProperty & _moisture_capacity; // dW/dH }; diff --git a/src/kernels/ConcreteMoistureDehydration.C b/src/kernels/ConcreteMoistureDehydration.C deleted file mode 100644 index a1f00509..00000000 --- a/src/kernels/ConcreteMoistureDehydration.C +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************/ -/* DO NOT MODIFY THIS HEADER */ -/* BlackBear */ -/* */ -/* (c) 2017 Battelle Energy Alliance, LLC */ -/* ALL RIGHTS RESERVED */ -/* */ -/* Prepared by Battelle Energy Alliance, LLC */ -/* Under Contract No. DE-AC07-05ID14517 */ -/* With the U. S. Department of Energy */ -/* */ -/* See COPYRIGHT for full restrictions */ -/****************************************************************/ - -#include "ConcreteMoistureDehydration.h" -#include "Material.h" - -registerMooseObject("BlackBearApp", ConcreteMoistureDehydration); - -InputParameters -ConcreteMoistureDehydration::validParams() -{ - InputParameters params = TimeDerivative::validParams(); - params.addParam( - "property_name", "hydrated_water", "The water chemically bonded to hydrates"); - params.addParam( - "dehydration_start_temperature", 120.0, "themprature threshold for dehydartion of cement"); - params.addCoupledVar( - "temperature", 0.0, "nonlinear variable name for temperature in unit of Celscius"); - params.addClassDescription("Source term for dehydrated water for moisture transfer in concrete."); - return params; -} - -ConcreteMoistureDehydration::ConcreteMoistureDehydration(const InputParameters & parameters) - : TimeDerivative(parameters), - _T_dehydration(getParam("dehydration_start_temperature")), - _WH(getMaterialProperty(getParam("property_name"))), - _WH_old(getMaterialPropertyOld(getParam("property_name"))), - _T(coupledValue("temperature")) -{ -} - -Real -ConcreteMoistureDehydration::computeQpResidual() -{ - if (_T[_qp] >= 120.0) - return (_WH[_qp] - _WH_old[_qp]) / _dt * 0.05 / 600.0 * _T[_qp] * _test[_i][_qp]; - - return 0.0; -} - -Real -ConcreteMoistureDehydration::computeQpJacobian() -{ - return 0.0; -} - -Real -ConcreteMoistureDehydration::computeQpOffDiagJacobian(unsigned int /*jvar*/) -{ - return 0.0; -} diff --git a/src/kernels/ConcreteMoistureDiffusion.C b/src/kernels/ConcreteMoistureDiffusion.C index 869af16f..0dd36c0d 100644 --- a/src/kernels/ConcreteMoistureDiffusion.C +++ b/src/kernels/ConcreteMoistureDiffusion.C @@ -31,19 +31,22 @@ ConcreteMoistureDiffusion::ConcreteMoistureDiffusion(const InputParameters & par : Diffusion(parameters), _Dh(getMaterialProperty("humidity_diffusivity")), _Dht(getMaterialProperty("humidity_diffusivity_thermal")), - _grad_T(coupledGradient("temperature")) + _grad_T(coupledGradient("temperature")), + _moisture_capacity(getMaterialProperty("moisture_capacity")) { } Real ConcreteMoistureDiffusion::computeQpResidual() { - return _Dh[_qp] * Diffusion::computeQpResidual() + _Dht[_qp] * _grad_test[_i][_qp] * _grad_T[_qp]; + //return _moisture_capacity[_qp] * (_Dh[_qp] * Diffusion::computeQpResidual() + _Dht[_qp] * _grad_test[_i][_qp] * _grad_T[_qp]); + return (_Dh[_qp] * Diffusion::computeQpResidual() + _Dht[_qp] * _grad_test[_i][_qp] * _grad_T[_qp]); } Real ConcreteMoistureDiffusion::computeQpJacobian() { + //return _moisture_capacity[_qp] * _Dh[_qp] * Diffusion::computeQpJacobian(); return _Dh[_qp] * Diffusion::computeQpJacobian(); } diff --git a/src/kernels/ConcreteMoistureTimeIntegration.C b/src/kernels/ConcreteMoistureTimeIntegration.C index 2c2e7bfa..f8f2d260 100644 --- a/src/kernels/ConcreteMoistureTimeIntegration.C +++ b/src/kernels/ConcreteMoistureTimeIntegration.C @@ -34,13 +34,13 @@ Real ConcreteMoistureTimeIntegration::computeQpResidual() { // self accumulation term - return _moisture_capacity[_qp] * TimeDerivative::computeQpResidual(); + return TimeDerivative::computeQpResidual(); } Real ConcreteMoistureTimeIntegration::computeQpJacobian() { - return _moisture_capacity[_qp] * TimeDerivative::computeQpJacobian(); + return TimeDerivative::computeQpJacobian(); } Real