|
proteus 1.9.0
C/C++/Fortran libraries
|
Richards free-function PSK closures (moved here from proteus/richards/psk_models.h). More...
#include <algorithm>#include <cmath>#include <iostream>#include <cassert>#include "densityRelations.h"#include "SubsurfaceTransportCoefficients.h"Go to the source code of this file.
Classes | |
| class | PskRelation |
| class | SimplePSK |
| class | VGMorig |
| class | VGM |
| class | VGB |
| class | BCM |
| class | BCB |
| class | FractionalFlowVariables |
| struct | CompressibleN_FractionalFlowVariables |
| class | PskSpline |
Namespaces | |
| namespace | proteus |
| namespace | proteus::richards |
| namespace | proteus::richards::psk |
| namespace | proteus::m_comp_co2 |
| namespace | proteus::m_comp_co2::psk |
Enumerations | |
| enum class | proteus::richards::psk::bc_kr { proteus::richards::psk::burdine = 0 , proteus::richards::psk::mualem = 1 } |
Functions | |
| void | proteus::richards::psk::vgm_wetting (const double psiC, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &thetaW, double &DthetaW_DpsiC, double &KWr, double &DKWr_DpsiC) |
| void | proteus::richards::psk::vgm_invert_analytic (const double m, const double rho, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &u) |
| void | proteus::richards::psk::vgm_invert_newton (const double m, const double rho, const double beta, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &u) |
| double | proteus::richards::psk::bc_eta (const double lam, const bc_kr kr_model) |
| void | proteus::richards::psk::bc_wetting (const double psiC, const double alpha, const double lam, const double thetaR, const double thetaSR, double &thetaW, double &DthetaW_DpsiC, double &KWr, double &DKWr_DpsiC, const bc_kr kr_model=bc_kr::burdine) |
| void | proteus::richards::psk::bc_invert_analytic (const double m, const double rho, const double alpha, const double lam, const double thetaR, const double thetaSR, double &u) |
| void | proteus::richards::psk::bc_invert_newton (const double m, const double rho, const double beta, const double alpha, const double lam, const double thetaR, const double thetaSR, double &u) |
| void | proteus::richards::psk::gardner_wetting (const double psiC, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &thetaW, double &DthetaW_DpsiC, double &KWr, double &DKWr_DpsiC) |
| void | proteus::richards::psk::gardner_invert_analytic (const double m, const double rho, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &u) |
| void | proteus::richards::psk::gardner_invert_newton (const double m, const double rho, const double beta, const double alpha, const double n_vg, const double thetaR, const double thetaSR, double &u) |
| void | proteus::m_comp_co2::psk::vgm_pc_from_Se (const double Se, const double alpha, const double n_vg, double &pc, double &Dpc_DSe, double &D2pc_DSe2) |
| void | proteus::m_comp_co2::psk::bc_pc_from_Se (const double Se, const double alpha, const double lam, double &pc, double &Dpc_DSe, double &D2pc_DSe2) |
| void | proteus::m_comp_co2::psk::vgm_wetting_from_Se (const double Se, const double, const double n_vg, const double thetaR, const double thetaSR, double &thetaW, double &DthetaW_DSe, double &KWr, double &DKWr_DSe) |
| void | proteus::m_comp_co2::psk::vgm_kr_nonwetting_from_Se (const double Se_w, const double, const double n_vg, double &KNr, double &DKNr_DSe, const double Se_trap=1.0) |
| void | proteus::m_comp_co2::psk::bc_wetting_from_Se (const double Se, const double, const double lam, const double thetaR, const double thetaSR, double &thetaW, double &DthetaW_DSe, double &KWr, double &DKWr_DSe) |
| void | proteus::m_comp_co2::psk::bc_kr_nonwetting_from_Se (const double Se_w, const double, const double lam, double &KNr, double &DKNr_DSe, const double Se_trap=1.0) |
Variables | |
| constexpr double | proteus::richards::psk::gardner_alphaPsiCMax = 7.0e2 |
| constexpr double | proteus::richards::psk::gardner_alphaPsiMax = 5.0e1 |
The class hierarchy above (VGM/VGB/BCM/BCB/...) exposes the same constitutive models through a stateful calc(Sw) interface. The routines below are the flat, psiC-based form the optimized Richards kernel calls from inside its element loops, where a virtual dispatch and a member-state write per quadrature point are not affordable. They are duplicated closures on purpose for now; unifying them with the classes above is tracked as post-1.9.0 work.
Definition in file pskRelations.h.