www.mooseframework.org
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
MollifiedLangmuirMaterial Class Reference

Holds Langmuir parameters associated with desorption Calculates mass-flow rates and derivatives thereof for use by kernels. More...

#include <MollifiedLangmuirMaterial.h>

Inheritance diagram for MollifiedLangmuirMaterial:
[legend]

Public Member Functions

 MollifiedLangmuirMaterial (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeQpProperties () override
 

Private Attributes

const VariableValue * _one_over_de_time_const
 reciprocal of desorption time constant More...
 
const VariableValue * _one_over_ad_time_const
 reciprocal of adsorption time constant More...
 
const Real _langmuir_dens
 langmuir density More...
 
const Real _langmuir_p
 langmuir pressure More...
 
const VariableValue * _conc
 concentration of adsorbed fluid in matrix More...
 
const VariableValue * _pressure
 porespace pressure (or partial pressure if multiphase flow scenario) More...
 
const Real _mollifier
 mollifying parameter. More...
 
MaterialProperty< Real > & _mass_rate_from_matrix
 mass flow rate from the matrix = mass flow rate to the porespace More...
 
MaterialProperty< Real > & _dmass_rate_from_matrix_dC
 derivative of mass flow rate wrt concentration More...
 
MaterialProperty< Real > & _dmass_rate_from_matrix_dp
 derivative of mass flow rate wrt pressure More...
 

Detailed Description

Holds Langmuir parameters associated with desorption Calculates mass-flow rates and derivatives thereof for use by kernels.

Definition at line 24 of file MollifiedLangmuirMaterial.h.

Constructor & Destructor Documentation

◆ MollifiedLangmuirMaterial()

MollifiedLangmuirMaterial::MollifiedLangmuirMaterial ( const InputParameters &  parameters)

Definition at line 48 of file MollifiedLangmuirMaterial.C.

49  : Material(parameters),
50  // coupledValue returns a reference (an alias) to a VariableValue, and the & turns it into a
51  // pointer
52  _one_over_de_time_const(&coupledValue("one_over_desorption_time_const")),
53  _one_over_ad_time_const(&coupledValue("one_over_adsorption_time_const")),
54 
55  _langmuir_dens(getParam<Real>("langmuir_density")),
56  _langmuir_p(getParam<Real>("langmuir_pressure")),
57 
58  _conc(&coupledValue("conc_var")),
59  _pressure(&coupledValue("pressure_var")),
60 
61  _mollifier(getParam<Real>("mollifier")),
62 
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"))
66 {
67 }

Member Function Documentation

◆ computeQpProperties()

void MollifiedLangmuirMaterial::computeQpProperties ( )
overrideprotectedvirtual

Definition at line 70 of file MollifiedLangmuirMaterial.C.

71 {
72  Real equilib_conc = _langmuir_dens * ((*_pressure)[_qp]) / (_langmuir_p + (*_pressure)[_qp]);
73  Real dequilib_conc_dp =
74  _langmuir_dens / (_langmuir_p + (*_pressure)[_qp]) -
75  _langmuir_dens * ((*_pressure)[_qp]) / std::pow(_langmuir_p + (*_pressure)[_qp], 2);
76 
77  Real mol = std::tanh(std::abs((*_conc)[_qp] - equilib_conc) / (_mollifier * _langmuir_dens));
78  Real deriv_tanh =
79  1 - std::pow(std::tanh(((*_conc)[_qp] - equilib_conc) / (_mollifier * _langmuir_dens)), 2);
80  if ((*_conc)[_qp] < equilib_conc)
81  deriv_tanh *= -1;
82  Real dmol_dC = deriv_tanh / (_mollifier * _langmuir_dens);
83  Real dmol_dp = -dmol_dC * dequilib_conc_dp;
84 
85  /*
86  Real de_plus_ad = (*_one_over_de_time_const)[_qp] + (*_one_over_ad_time_const)[_qp];
87  Real de_minus_ad = (*_one_over_de_time_const)[_qp] - (*_one_over_ad_time_const)[_qp];
88 
89  Real one_over_tau = 0.5*de_plus_ad + 0.5*de_minus_ad*std::tanh( ((*_conc)[_qp] -
90  equilib_conc)/(_mollifier*_langmuir_dens));
91  Real deriv_tanh = 1 - std::pow(std::tanh(((*_conc)[_qp] -
92  equilib_conc)/(_mollifier*_langmuir_dens)), 2);
93  Real d_one_over_tau_dC = 0.5*de_minus_ad*deriv_tanh/(_mollifier*_langmuir_dens);
94  Real d_one_over_tau_dp = -0.5*de_minus_ad*dequilib_conc_dp*deriv_tanh/(_mollifier*_langmuir_dens);
95  */
96 
97  // form the base rate and derivs without the appropriate time const
98  _mass_rate_from_matrix[_qp] = ((*_conc)[_qp] - equilib_conc) * mol;
99  _dmass_rate_from_matrix_dC[_qp] = mol + ((*_conc)[_qp] - equilib_conc) * dmol_dC;
101  -dequilib_conc_dp * mol + ((*_conc)[_qp] - equilib_conc) * dmol_dp;
102 
103  // multiply by the appropriate time const
104  if ((*_conc)[_qp] > equilib_conc)
105  {
106  _mass_rate_from_matrix[_qp] *= (*_one_over_de_time_const)[_qp];
107  _dmass_rate_from_matrix_dC[_qp] *= (*_one_over_de_time_const)[_qp];
108  _dmass_rate_from_matrix_dp[_qp] *= (*_one_over_de_time_const)[_qp];
109  }
110  else
111  {
112  _mass_rate_from_matrix[_qp] *= (*_one_over_ad_time_const)[_qp];
113  _dmass_rate_from_matrix_dC[_qp] *= (*_one_over_ad_time_const)[_qp];
114  _dmass_rate_from_matrix_dp[_qp] *= (*_one_over_ad_time_const)[_qp];
115  }
116 }

Member Data Documentation

◆ _conc

const VariableValue* MollifiedLangmuirMaterial::_conc
private

concentration of adsorbed fluid in matrix

Definition at line 46 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _dmass_rate_from_matrix_dC

MaterialProperty<Real>& MollifiedLangmuirMaterial::_dmass_rate_from_matrix_dC
private

derivative of mass flow rate wrt concentration

Definition at line 63 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _dmass_rate_from_matrix_dp

MaterialProperty<Real>& MollifiedLangmuirMaterial::_dmass_rate_from_matrix_dp
private

derivative of mass flow rate wrt pressure

Definition at line 66 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _langmuir_dens

const Real MollifiedLangmuirMaterial::_langmuir_dens
private

langmuir density

Definition at line 40 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _langmuir_p

const Real MollifiedLangmuirMaterial::_langmuir_p
private

langmuir pressure

Definition at line 43 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _mass_rate_from_matrix

MaterialProperty<Real>& MollifiedLangmuirMaterial::_mass_rate_from_matrix
private

mass flow rate from the matrix = mass flow rate to the porespace

Definition at line 60 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _mollifier

const Real MollifiedLangmuirMaterial::_mollifier
private

mollifying parameter.

the time constants are one_over_time_const * tanh( |_conc - equilib_conc|/(mollifier*_langmuir_dens) ) Here equilib_conc = langmuir_dens*_pressure/(_pressure + _langmuir_p) which is the langmuir expression

Definition at line 57 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().

◆ _one_over_ad_time_const

const VariableValue* MollifiedLangmuirMaterial::_one_over_ad_time_const
private

reciprocal of adsorption time constant

Definition at line 37 of file MollifiedLangmuirMaterial.h.

◆ _one_over_de_time_const

const VariableValue* MollifiedLangmuirMaterial::_one_over_de_time_const
private

reciprocal of desorption time constant

Definition at line 34 of file MollifiedLangmuirMaterial.h.

◆ _pressure

const VariableValue* MollifiedLangmuirMaterial::_pressure
private

porespace pressure (or partial pressure if multiphase flow scenario)

Definition at line 49 of file MollifiedLangmuirMaterial.h.

Referenced by computeQpProperties().


The documentation for this class was generated from the following files:
MollifiedLangmuirMaterial::_one_over_ad_time_const
const VariableValue * _one_over_ad_time_const
reciprocal of adsorption time constant
Definition: MollifiedLangmuirMaterial.h:37
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
MollifiedLangmuirMaterial::_langmuir_p
const Real _langmuir_p
langmuir pressure
Definition: MollifiedLangmuirMaterial.h:43
MollifiedLangmuirMaterial::_langmuir_dens
const Real _langmuir_dens
langmuir density
Definition: MollifiedLangmuirMaterial.h:40
MollifiedLangmuirMaterial::_one_over_de_time_const
const VariableValue * _one_over_de_time_const
reciprocal of desorption time constant
Definition: MollifiedLangmuirMaterial.h:34
MollifiedLangmuirMaterial::_mollifier
const Real _mollifier
mollifying parameter.
Definition: MollifiedLangmuirMaterial.h:57
MollifiedLangmuirMaterial::_dmass_rate_from_matrix_dp
MaterialProperty< Real > & _dmass_rate_from_matrix_dp
derivative of mass flow rate wrt pressure
Definition: MollifiedLangmuirMaterial.h:66
MollifiedLangmuirMaterial::_pressure
const VariableValue * _pressure
porespace pressure (or partial pressure if multiphase flow scenario)
Definition: MollifiedLangmuirMaterial.h:49
MollifiedLangmuirMaterial::_dmass_rate_from_matrix_dC
MaterialProperty< Real > & _dmass_rate_from_matrix_dC
derivative of mass flow rate wrt concentration
Definition: MollifiedLangmuirMaterial.h:63
MollifiedLangmuirMaterial::_mass_rate_from_matrix
MaterialProperty< Real > & _mass_rate_from_matrix
mass flow rate from the matrix = mass flow rate to the porespace
Definition: MollifiedLangmuirMaterial.h:60
MollifiedLangmuirMaterial::_conc
const VariableValue * _conc
concentration of adsorbed fluid in matrix
Definition: MollifiedLangmuirMaterial.h:46