46 "Empirical pressure area relationship for the arterial system");
70 gamma * dAUdx /
sqrt(
A);
111 A = A0 * exp(xi * (2 - alpha * xi));
136 const std::string &type)
139 if (type ==
"Bifurcation")
144 for (
int i = 0; i < 3; ++i)
146 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
152 J.SetValue(0, 3, c[0] / Au[0]);
160 J.SetValue(1, 4, -c[1] / Au[1]);
168 J.SetValue(2, 5, -c[2] / Au[2]);
170 J.SetValue(3, 0, Au[0]);
171 J.SetValue(3, 1, -Au[1]);
172 J.SetValue(3, 2, -Au[2]);
173 J.SetValue(3, 3, uu[0]);
174 J.SetValue(3, 4, -uu[1]);
175 J.SetValue(3, 5, -uu[2]);
177 J.SetValue(4, 0, 2 * uu[0]);
178 J.SetValue(4, 1, -2 * uu[1]);
180 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
181 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
184 J.SetValue(5, 0, 2 * uu[0]);
186 J.SetValue(5, 2, -2 * uu[2]);
187 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
189 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
194 else if (type ==
"Merge")
199 for (
int i = 0; i < 3; ++i)
201 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
207 J.SetValue(0, 3, -c[0] / Au[0]);
215 J.SetValue(1, 4, c[1] / Au[1]);
223 J.SetValue(2, 5, c[2] / Au[2]);
225 J.SetValue(3, 0, Au[0]);
226 J.SetValue(3, 1, -Au[1]);
227 J.SetValue(3, 2, -Au[2]);
228 J.SetValue(3, 3, uu[0]);
229 J.SetValue(3, 4, -uu[1]);
230 J.SetValue(3, 5, -uu[2]);
232 J.SetValue(4, 0, 2 * uu[0]);
233 J.SetValue(4, 1, -2 * uu[1]);
235 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
236 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
239 J.SetValue(5, 0, 2 * uu[0]);
241 J.SetValue(5, 2, -2 * uu[2]);
242 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
244 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
249 else if (type ==
"Interface")
254 for (
int i = 0; i < 2; ++i)
256 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
261 J.SetValue(0, 2, c[0] / Au[0]);
267 J.SetValue(1, 3, -c[1] / Au[1]);
269 J.SetValue(2, 0, Au[0]);
270 J.SetValue(2, 1, -Au[1]);
271 J.SetValue(2, 2, uu[0]);
272 J.SetValue(2, 3, -uu[1]);
274 J.SetValue(3, 0, 2 * uu[0]);
275 J.SetValue(3, 1, -2 * uu[1]);
276 J.SetValue(3, 2, 2 * c[0] * c[0] / Au[0]);
277 J.SetValue(3, 3, -2 * c[1] * c[1] / Au[1]);
288 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
~EmpiricalPressureArea() 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)