OGS
ProcessLib::TES Namespace Reference

Classes

struct  AssemblyParams
 
class  TESLocalAssemblerInterface
 
class  TESLocalAssembler
 
struct  TESLocalAssemblerData
 
class  TESLocalAssemblerInner
 
struct  FluidViscosityN2
 
struct  FluidViscosityH2O
 
struct  FluidHeatConductivityN2
 
struct  FluidHeatConductivityH2O
 
class  TESProcess
 
struct  ReactionRate
 
class  TESFEMReactionAdaptor
 
class  TESFEMReactionAdaptorAdsorption
 
class  TESFEMReactionAdaptorInert
 
class  TESFEMReactionAdaptorSinusoidal
 
class  TESFEMReactionAdaptorCaOH2
 

Functions

std::unique_ptr< ProcesscreateTESProcess (std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config)
 
double fluid_density (const double p, const double T, const double x)
 
template<int i>
double mypow (const double x)
 
template<>
double mypow< 0 > (const double)
 
double fluid_viscosity (const double p, const double T, const double x)
 
double fluid_heat_conductivity (const double p, const double T, const double x)
 

Variables

const unsigned NODAL_DOF = 3
 
const unsigned COMPONENT_ID_PRESSURE = 0
 
const unsigned COMPONENT_ID_TEMPERATURE = 1
 
const unsigned COMPONENT_ID_MASS_FRACTION = 2
 
const double M_N2 = 0.028013
 
const double M_H2O = 0.018016
 

Function Documentation

◆ createTESProcess()

std::unique_ptr< Process > ProcessLib::TES::createTESProcess ( std::string  name,
MeshLib::Mesh mesh,
std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&  jacobian_assembler,
std::vector< ProcessVariable > const &  variables,
std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &  parameters,
unsigned const  integration_order,
BaseLib::ConfigTree const &  config 
)
Input File Parameter:
prj__processes__process__type
Input File Parameter:
prj__processes__process__TES__process_variables
Input File Parameter:
prj__processes__process__TES__process_variables__fluid_pressure
Input File Parameter:
prj__processes__process__TES__process_variables__temperature
Input File Parameter:
prj__processes__process__TES__process_variables__vapour_mass_fraction

Definition at line 21 of file CreateTESProcess.cpp.

29 {
31  config.checkConfigParameter("type", "TES");
32 
33  DBUG("Create TESProcess.");
34 
36  auto const pv_config = config.getConfigSubtree("process_variables");
37 
38  auto per_process_variables = findProcessVariables(
39  variables, pv_config,
40  {
41  "fluid_pressure",
43  "temperature",
45  "vapour_mass_fraction"});
46  std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
47  process_variables;
48  process_variables.push_back(std::move(per_process_variables));
49 
50  SecondaryVariableCollection secondary_variables;
51 
52  ProcessLib::createSecondaryVariables(config, secondary_variables);
53 
54  return std::make_unique<TESProcess>(
55  std::move(name), mesh, std::move(jacobian_assembler), parameters,
56  integration_order, std::move(process_variables),
57  std::move(secondary_variables), config);
58 }
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
std::vector< std::reference_wrapper< ProcessVariable > > findProcessVariables(std::vector< ProcessVariable > const &variables, BaseLib::ConfigTree const &pv_config, std::initializer_list< std::string > tags)
void createSecondaryVariables(BaseLib::ConfigTree const &config, SecondaryVariableCollection &secondary_variables)

References BaseLib::ConfigTree::checkConfigParameter(), ProcessLib::createSecondaryVariables(), DBUG(), ProcessLib::findProcessVariables(), BaseLib::ConfigTree::getConfigSubtree(), and MaterialPropertyLib::name.

Referenced by ProjectData::parseProcesses().

◆ fluid_density()

double ProcessLib::TES::fluid_density ( const double  p,
const double  T,
const double  x 
)
inline

Definition at line 19 of file TESOGS5MaterialModels.h.

20 {
21  // OGS-5 density model 26
22 
25 
26  const double xn = M0 * x / (M0 * x + M1 * (1.0 - x));
27 
29  (M1 * xn + M0 * (1.0 - xn));
30  ;
31 }
static const double p

References MaterialLib::PhysicalConstant::IdealGasConstant, MaterialLib::PhysicalConstant::MolarMass::N2, and MaterialLib::PhysicalConstant::MolarMass::Water.

Referenced by ProcessLib::HT::MonolithicHTFEM< ShapeFunction, IntegrationMethod, GlobalDim >::assemble(), ProcessLib::HT::StaggeredHTFEM< ShapeFunction, IntegrationMethod, GlobalDim >::assembleHeatTransportEquation(), ProcessLib::HT::StaggeredHTFEM< ShapeFunction, IntegrationMethod, GlobalDim >::assembleHydraulicEquation(), ProcessLib::LiquidFlow::LiquidFlowLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::assembleMatrixAndVector(), ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod, DisplacementDim >::assembleWithJacobian(), ProcessLib::LiquidFlow::LiquidFlowLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::computeProjectedDarcyVelocity(), ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess(), ProcessLib::HT::HTFEM< ShapeFunction, IntegrationMethod, GlobalDim >::getHeatEnergyCoefficient(), ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod, DisplacementDim >::getIntPtDarcyVelocity(), ProcessLib::HT::HTFEM< ShapeFunction, IntegrationMethod, GlobalDim >::getThermalConductivityDispersivity(), ChemistryLib::PhreeqcIOData::anonymous_namespace{PhreeqcIO.cpp}::initializeReactantMolality(), ProcessLib::TES::TESLocalAssemblerInner< Traits >::preEachAssembleIntegrationPoint(), and ChemistryLib::PhreeqcIOData::anonymous_namespace{PhreeqcIO.cpp}::setReactantMolality().

◆ fluid_heat_conductivity()

double ProcessLib::TES::fluid_heat_conductivity ( const double  p,
const double  T,
const double  x 
)
inline

Definition at line 373 of file TESOGS5MaterialModels.h.

376 {
377  // OGS 5 fluid heat conductivity model 11
378 
382 
383  // TODO [CL] max() is redundant if the fraction is guaranteed to be between
384  // 0 and 1.
385  // reactive component
386  const double x0 = std::max(M0 * x / (M0 * x + M1 * (1.0 - x)),
387  0.); // convert mass to mole fraction
388  const double k0 = FluidHeatConductivityH2O::get(M1 * p / (R * T), T);
389  // inert component
390  const double x1 = 1.0 - x0;
391  const double k1 = FluidHeatConductivityN2::get(M0 * p / (R * T), T);
392 
393  const double M1_over_M2 = M1 / M0; // reactive over inert
394  const double V1_over_V2 = FluidViscosityH2O::get(M1 * p / (R * T), T) /
395  FluidViscosityN2::get(M0 * p / (R * T), T);
396  const double L1_over_L2 = V1_over_V2 / M1_over_M2;
397 
398  const double M12_pow_mquarter = std::pow(M1_over_M2, -0.25);
399  const double phi_12 = (1.0 + std::sqrt(L1_over_L2) * M12_pow_mquarter) *
400  (1.0 + std::sqrt(V1_over_V2) * M12_pow_mquarter) /
401  std::sqrt(8.0 * (1.0 + M1_over_M2));
402  const double phi_21 = phi_12 * M1_over_M2 / V1_over_V2;
403 
404  return k0 * x0 / (x0 + x1 * phi_12) + k1 * x1 / (x1 + x0 * phi_21);
405 }

References ProcessLib::TES::FluidViscosityN2::get(), ProcessLib::TES::FluidViscosityH2O::get(), ProcessLib::TES::FluidHeatConductivityN2::get(), ProcessLib::TES::FluidHeatConductivityH2O::get(), MaterialLib::PhysicalConstant::IdealGasConstant, MaterialLib::PhysicalConstant::MolarMass::N2, and MaterialLib::PhysicalConstant::MolarMass::Water.

Referenced by ProcessLib::TES::TESLocalAssemblerInner< Traits >::getLaplaceCoeffMatrix().

◆ fluid_viscosity()

double ProcessLib::TES::fluid_viscosity ( const double  p,
const double  T,
const double  x 
)
inline

Definition at line 184 of file TESOGS5MaterialModels.h.

185 {
186  // OGS 5 viscosity model 26
187 
191 
192  // reactive component
193  const double x0 =
194  M0 * x / (M0 * x + M1 * (1.0 - x)); // mass in mole fraction
195  const double V0 = FluidViscosityH2O::get(M1 * p / (R * T), T);
196  // inert component
197  const double x1 = 1.0 - x0;
198  const double V1 = FluidViscosityN2::get(M0 * p / (R * T), T);
199 
200  const double M0_over_M1(M1 / M0); // reactive over inert
201  const double V0_over_V1(V0 / V1);
202 
203  const double phi_12 =
204  mypow<2>(1.0 +
205  std::sqrt(V0_over_V1) * std::pow(1.0 / M0_over_M1, 0.25)) /
206  std::sqrt(8.0 * (1.0 + M0_over_M1));
207 
208  const double phi_21 = phi_12 * M0_over_M1 / V0_over_V1;
209 
210  return V0 * x0 / (x0 + x1 * phi_12) + V1 * x1 / (x1 + x0 * phi_21);
211 }

References ProcessLib::TES::FluidViscosityN2::get(), ProcessLib::TES::FluidViscosityH2O::get(), MaterialLib::PhysicalConstant::IdealGasConstant, MaterialLib::PhysicalConstant::MolarMass::N2, and MaterialLib::PhysicalConstant::MolarMass::Water.

Referenced by ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess(), ProcessLib::TES::TESLocalAssembler< ShapeFunction_, IntegrationMethod_, GlobalDim >::getIntPtDarcyVelocity(), and ProcessLib::TES::TESLocalAssemblerInner< Traits >::getLaplaceCoeffMatrix().

◆ mypow()

template<int i>
double ProcessLib::TES::mypow ( const double  x)

Definition at line 34 of file TESOGS5MaterialModels.h.

35 {
36  if (i < 0)
37  {
38  return 1.0 / mypow<-i>(x);
39  }
40 
41  const double p = mypow<(i >> 1)>(x);
42  return (i & 1) ? p * p * x : p * p;
43 }
double mypow(const double x)

Referenced by ProcessLib::TES::FluidHeatConductivityN2::loop1_term(), and ProcessLib::TES::FluidViscosityN2::loop2_term().

◆ mypow< 0 >()

template<>
double ProcessLib::TES::mypow< 0 > ( const double  )
inline

Definition at line 46 of file TESOGS5MaterialModels.h.

47 {
48  return 1.0;
49 }

Referenced by ProcessLib::TES::FluidViscosityH2O::get(), and ProcessLib::TES::FluidViscosityH2O::inner_loop().

Variable Documentation

◆ COMPONENT_ID_MASS_FRACTION

◆ COMPONENT_ID_PRESSURE

◆ COMPONENT_ID_TEMPERATURE

const unsigned ProcessLib::TES::COMPONENT_ID_TEMPERATURE = 1

◆ M_H2O

const double ProcessLib::TES::M_H2O = 0.018016

Definition at line 31 of file TESAssemblyParams.h.

◆ M_N2

const double ProcessLib::TES::M_N2 = 0.028013

Definition at line 30 of file TESAssemblyParams.h.

◆ NODAL_DOF