proteus 1.9.0
C/C++/Fortran libraries
Loading...
Searching...
No Matches
pskRelations.h File Reference

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"
Include dependency graph for pskRelations.h:
This graph shows which files directly or indirectly include this file:

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

Detailed Description

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.