18 InputParameters params = validParams<Material>();
20 params.addRequiredCoupledVar(
21 "one_over_desorption_time_const",
22 "Time constant for Langmuir desorption (gas moving from matrix to porespace). Units [s]");
23 params.addRequiredCoupledVar(
24 "one_over_adsorption_time_const",
25 "Time constant for Langmuir adsorption (gas moving from porespace to matrix). Units [s].");
26 params.addRequiredParam<Real>(
"langmuir_density",
27 "This is (Langmuir volume)*(density of gas at standard temp and "
28 "pressure). Langmuir volume is measured in (gas volume)/(matrix "
29 "volume). (Methane density(101kPa, 20degC) = 0.655kg/m^3. "
30 "Methane density(101kPa, 0degC) = 0.715kg/m^3.) Units [kg/m^3]");
31 params.addRequiredParam<Real>(
"langmuir_pressure",
"Langmuir pressure. Units Pa");
32 params.addRequiredCoupledVar(
"conc_var",
"The concentration of gas variable");
33 params.addRequiredCoupledVar(
"pressure_var",
"The gas porepressure variable");
34 params.addRangeCheckedParam<Real>(
"mollifier",
37 "The reciprocal of time constants will be "
38 "one_over_time_const*tanh( |conc_var - "
39 "equilib_conc|/(mollifier*langmuir_density)). So for "
40 "mollifier very small you will get a stepchange between "
41 "desorption and adsorption, but for mollifier bigger you "
42 "will be a gradual change");
43 params.addClassDescription(
"Material type that holds info regarding MollifiedLangmuir desorption "
44 "from matrix to porespace and viceversa");
49 : Material(parameters),
52 _one_over_de_time_const(&coupledValue(
"one_over_desorption_time_const")),
53 _one_over_ad_time_const(&coupledValue(
"one_over_adsorption_time_const")),
55 _langmuir_dens(getParam<Real>(
"langmuir_density")),
56 _langmuir_p(getParam<Real>(
"langmuir_pressure")),
58 _conc(&coupledValue(
"conc_var")),
59 _pressure(&coupledValue(
"pressure_var")),
61 _mollifier(getParam<Real>(
"mollifier")),
63 _mass_rate_from_matrix(declareProperty<Real>(
"mass_rate_from_matrix")),
64 _dmass_rate_from_matrix_dC(declareProperty<Real>(
"dmass_rate_from_matrix_dC")),
65 _dmass_rate_from_matrix_dp(declareProperty<Real>(
"dmass_rate_from_matrix_dp"))
73 Real dequilib_conc_dp =
80 if ((*
_conc)[_qp] < equilib_conc)
83 Real dmol_dp = -dmol_dC * dequilib_conc_dp;
101 -dequilib_conc_dp * mol + ((*_conc)[_qp] - equilib_conc) * dmol_dp;
104 if ((*
_conc)[_qp] > equilib_conc)