43 std::string TemplatePressureArea::className =
45 "Template", TemplatePressureArea::create,
46 "Template to add a new Pressure-Area relation");
48 TemplatePressureArea::TemplatePressureArea(
118 while ((proceed) && (iter < MAX_ITER))
123 GetC(c, beta,
A, A0, alpha);
125 FA = I - ((W1 - W2) / 2);
131 if (
sqrt(dA * dA) < Tol)
161 for (
int i = 1; i < n; ++i)
164 GetC(c_n, beta, A_n, A0, alpha);
170 GetC(c, beta,
A, A0, alpha);
171 GetC(c0, beta, A0, A0, alpha);
173 I += ((c /
A) + (c0 / A0)) / 2;
189 if (type ==
"Bifurcation")
194 for (
int i = 0; i < 3; ++i)
196 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
202 J.SetValue(0, 3, c[0] / Au[0]);
210 J.SetValue(1, 4, -c[1] / Au[1]);
218 J.SetValue(2, 5, -c[2] / Au[2]);
220 J.SetValue(3, 0, Au[0]);
221 J.SetValue(3, 1, -Au[1]);
222 J.SetValue(3, 2, -Au[2]);
223 J.SetValue(3, 3, uu[0]);
224 J.SetValue(3, 4, -uu[1]);
225 J.SetValue(3, 5, -uu[2]);
227 J.SetValue(4, 0, 2 * uu[0]);
228 J.SetValue(4, 1, -2 * uu[1]);
230 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
231 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
234 J.SetValue(5, 0, 2 * uu[0]);
236 J.SetValue(5, 2, -2 * uu[2]);
237 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
239 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
244 else if (type ==
"Merge")
249 for (
int i = 0; i < 3; ++i)
251 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
257 J.SetValue(0, 3, -c[0] / Au[0]);
265 J.SetValue(1, 4, c[1] / Au[1]);
273 J.SetValue(2, 5, c[2] / Au[2]);
275 J.SetValue(3, 0, Au[0]);
276 J.SetValue(3, 1, -Au[1]);
277 J.SetValue(3, 2, -Au[2]);
278 J.SetValue(3, 3, uu[0]);
279 J.SetValue(3, 4, -uu[1]);
280 J.SetValue(3, 5, -uu[2]);
282 J.SetValue(4, 0, 2 * uu[0]);
283 J.SetValue(4, 1, -2 * uu[1]);
285 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
286 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
289 J.SetValue(5, 0, 2 * uu[0]);
291 J.SetValue(5, 2, -2 * uu[2]);
292 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
294 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
299 else if (type ==
"Junction")
304 for (
int i = 0; i < 2; ++i)
306 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
311 J.SetValue(0, 2, c[0] / Au[0]);
317 J.SetValue(1, 3, -c[1] / Au[1]);
319 J.SetValue(2, 0, Au[0]);
320 J.SetValue(2, 1, -Au[1]);
321 J.SetValue(2, 2, uu[0]);
322 J.SetValue(2, 3, -uu[1]);
324 J.SetValue(3, 0, 2 * uu[0]);
325 J.SetValue(3, 1, -2 * uu[1]);
326 J.SetValue(3, 2, 2 * c[0] * c[0] / Au[0]);
327 J.SetValue(3, 3, -2 * c[1] * c[1] / Au[1]);
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)
virtual void v_GetCharIntegral(NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
virtual 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)
virtual void v_GetW2(NekDouble &W2, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
virtual void v_GetC(NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
virtual void v_GetAFromChars(NekDouble &A, const NekDouble &W1, const NekDouble &W2, const NekDouble &beta, const NekDouble &A0, const NekDouble &alpha=0.5)
virtual void v_GetW1(NekDouble &W1, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
virtual 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)
virtual void v_GetUFromChars(NekDouble &u, const NekDouble &W1, const NekDouble &W2)
virtual ~TemplatePressureArea()
std::shared_ptr< SessionReader > SessionReaderSharedPtr
The above copyright notice and this permission notice shall be included.
PressureAreaFactory & GetPressureAreaFactory()
scalarT< T > sqrt(scalarT< T > in)