44        "Empirical pressure area relationship for the arterial system");
 
   64        gamma * dAUdx / 
sqrt(
A); 
 
  105    A = A0 * exp(xi * (2 - alpha * xi));
 
  130    const std::string &type)
 
  133    if (type == 
"Bifurcation")
 
  138        for (
int i = 0; i < 3; ++i)
 
  140            GetC(c[i], 
beta[i], Au[i], A0[i], alpha[i]);
 
  146        J.SetValue(0, 3, c[0] / Au[0]);
 
  154        J.SetValue(1, 4, -c[1] / Au[1]);
 
  162        J.SetValue(2, 5, -c[2] / Au[2]);
 
  164        J.SetValue(3, 0, Au[0]);
 
  165        J.SetValue(3, 1, -Au[1]);
 
  166        J.SetValue(3, 2, -Au[2]);
 
  167        J.SetValue(3, 3, uu[0]);
 
  168        J.SetValue(3, 4, -uu[1]);
 
  169        J.SetValue(3, 5, -uu[2]);
 
  171        J.SetValue(4, 0, 2 * uu[0]);
 
  172        J.SetValue(4, 1, -2 * uu[1]);
 
  174        J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
 
  175        J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
 
  178        J.SetValue(5, 0, 2 * uu[0]);
 
  180        J.SetValue(5, 2, -2 * uu[2]);
 
  181        J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
 
  183        J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
 
  188    else if (type == 
"Merge")
 
  193        for (
int i = 0; i < 3; ++i)
 
  195            GetC(c[i], 
beta[i], Au[i], A0[i], alpha[i]);
 
  201        J.SetValue(0, 3, -c[0] / Au[0]);
 
  209        J.SetValue(1, 4, c[1] / Au[1]);
 
  217        J.SetValue(2, 5, c[2] / Au[2]);
 
  219        J.SetValue(3, 0, Au[0]);
 
  220        J.SetValue(3, 1, -Au[1]);
 
  221        J.SetValue(3, 2, -Au[2]);
 
  222        J.SetValue(3, 3, uu[0]);
 
  223        J.SetValue(3, 4, -uu[1]);
 
  224        J.SetValue(3, 5, -uu[2]);
 
  226        J.SetValue(4, 0, 2 * uu[0]);
 
  227        J.SetValue(4, 1, -2 * uu[1]);
 
  229        J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
 
  230        J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
 
  233        J.SetValue(5, 0, 2 * uu[0]);
 
  235        J.SetValue(5, 2, -2 * uu[2]);
 
  236        J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
 
  238        J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
 
  243    else if (type == 
"Interface")
 
  248        for (
int i = 0; i < 2; ++i)
 
  250            GetC(c[i], 
beta[i], Au[i], A0[i], alpha[i]);
 
  255        J.SetValue(0, 2, c[0] / Au[0]);
 
  261        J.SetValue(1, 3, -c[1] / Au[1]);
 
  263        J.SetValue(2, 0, Au[0]);
 
  264        J.SetValue(2, 1, -Au[1]);
 
  265        J.SetValue(2, 2, uu[0]);
 
  266        J.SetValue(2, 3, -uu[1]);
 
  268        J.SetValue(3, 0, 2 * uu[0]);
 
  269        J.SetValue(3, 1, -2 * uu[1]);
 
  270        J.SetValue(3, 2, 2 * c[0] * c[0] / Au[0]);
 
  271        J.SetValue(3, 3, -2 * c[1] * c[1] / Au[1]);
 
  282    kappa = 1 - alpha * 
log(
A / A0);
 
void v_GetC(NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
void v_GetPressure(NekDouble &P, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &dAUdx, const NekDouble &gamma=0, const NekDouble &alpha=0.5) override
 
void GetKappa(NekDouble &kappa, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
EmpiricalPressureArea(Array< OneD, MultiRegions::ExpListSharedPtr > pVessel, const LibUtilities::SessionReaderSharedPtr pSession)
 
void v_GetW1(NekDouble &W1, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
void v_GetJacobianInverse(NekMatrix< NekDouble > &invJ, const Array< OneD, NekDouble > &Au, const Array< OneD, NekDouble > &uu, const Array< OneD, NekDouble > &beta, const Array< OneD, NekDouble > &A0, const Array< OneD, NekDouble > &alpha, const std::string &type) override
 
void v_GetCharIntegral(NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
static PulseWavePressureAreaSharedPtr create(Array< OneD, MultiRegions::ExpListSharedPtr > &pVessel, const LibUtilities::SessionReaderSharedPtr &pSession)
 
void v_GetUFromChars(NekDouble &u, const NekDouble &W1, const NekDouble &W2) override
 
void v_GetAFromChars(NekDouble &A, const NekDouble &W1, const NekDouble &W2, const NekDouble &beta, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
static std::string className
 
void v_GetW2(NekDouble &W2, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
 
void GetCharIntegral(NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void GetC(NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
std::shared_ptr< SessionReader > SessionReaderSharedPtr
 
@ beta
Gauss Radau pinned at x=-1,.
 
@ P
Monomial polynomials .
 
PressureAreaFactory & GetPressureAreaFactory()
 
scalarT< T > log(scalarT< T > in)
 
scalarT< T > sqrt(scalarT< T > in)