Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Nektar::BetaPressureArea Class Reference

#include <BetaPressureArea.h>

Inheritance diagram for Nektar::BetaPressureArea:
[legend]

Public Member Functions

 BetaPressureArea (Array< OneD, MultiRegions::ExpListSharedPtr > pVessel, const LibUtilities::SessionReaderSharedPtr pSession)
 
 ~BetaPressureArea () override
 
- Public Member Functions inherited from Nektar::PulseWavePressureArea
 PulseWavePressureArea (Array< OneD, MultiRegions::ExpListSharedPtr > &pVessel, const LibUtilities::SessionReaderSharedPtr &pSession)
 
virtual ~PulseWavePressureArea ()
 
void GetPressure (NekDouble &P, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &dAUdx, const NekDouble &gamma=0, const NekDouble &alpha=0.5)
 
void GetC (NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void GetW1 (NekDouble &W1, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void GetW2 (NekDouble &W2, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void GetAFromChars (NekDouble &A, const NekDouble &W1, const NekDouble &W2, const NekDouble &beta, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void GetUFromChars (NekDouble &u, const NekDouble &W1, const NekDouble &W2)
 
void GetCharIntegral (NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
 
void 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)
 

Static Public Member Functions

static PulseWavePressureAreaSharedPtr create (Array< OneD, MultiRegions::ExpListSharedPtr > &pVessel, const LibUtilities::SessionReaderSharedPtr &pSession)
 

Static Public Attributes

static std::string className
 

Protected Member Functions

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 v_GetC (NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
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_GetW2 (NekDouble &W2, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
void v_GetAFromChars (NekDouble &A, const NekDouble &W1, const NekDouble &W2, const NekDouble &beta, const NekDouble &A0, const NekDouble &alpha=0.5) override
 
void v_GetUFromChars (NekDouble &u, const NekDouble &W1, const NekDouble &W2) override
 
void v_GetCharIntegral (NekDouble &I, 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
 
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)=0
 
virtual void v_GetC (NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)=0
 
virtual void v_GetW1 (NekDouble &W1, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)=0
 
virtual void v_GetW2 (NekDouble &W2, const NekDouble &u, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)=0
 
virtual void v_GetAFromChars (NekDouble &A, const NekDouble &W1, const NekDouble &W2, const NekDouble &beta, const NekDouble &A0, const NekDouble &alpha=0.5)=0
 
virtual void v_GetUFromChars (NekDouble &u, const NekDouble &W1, const NekDouble &W2)=0
 
virtual void v_GetCharIntegral (NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)=0
 
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)=0
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::PulseWavePressureArea
Array< OneD, MultiRegions::ExpListSharedPtrm_vessels
 
LibUtilities::SessionReaderSharedPtr m_session
 
NekDouble m_PExt
 
NekDouble m_rho
 

Detailed Description

Definition at line 50 of file BetaPressureArea.h.

Constructor & Destructor Documentation

◆ BetaPressureArea()

Nektar::BetaPressureArea::BetaPressureArea ( Array< OneD, MultiRegions::ExpListSharedPtr pVessel,
const LibUtilities::SessionReaderSharedPtr  pSession 
)

Definition at line 48 of file BetaPressureArea.cpp.

51 : PulseWavePressureArea(pVessel, pSession)
52{
53}
PulseWavePressureArea(Array< OneD, MultiRegions::ExpListSharedPtr > &pVessel, const LibUtilities::SessionReaderSharedPtr &pSession)

◆ ~BetaPressureArea()

Nektar::BetaPressureArea::~BetaPressureArea ( )
override

Definition at line 55 of file BetaPressureArea.cpp.

56{
57}

Member Function Documentation

◆ create()

static PulseWavePressureAreaSharedPtr Nektar::BetaPressureArea::create ( Array< OneD, MultiRegions::ExpListSharedPtr > &  pVessel,
const LibUtilities::SessionReaderSharedPtr pSession 
)
inlinestatic

Definition at line 53 of file BetaPressureArea.h.

56 {
58 pSession);
59 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

◆ v_GetAFromChars()

void Nektar::BetaPressureArea::v_GetAFromChars ( NekDouble A,
const NekDouble W1,
const NekDouble W2,
const NekDouble beta,
const NekDouble A0,
const NekDouble alpha = 0.5 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 99 of file BetaPressureArea.cpp.

104{
105 A = pow((W1 - W2) * sqrt(2 * m_rho / beta) / 8 + sqrt(sqrt(A0)), 4);
106}
@ beta
Gauss Radau pinned at x=-1,.
Definition: PointsType.h:59
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:294

References Nektar::LibUtilities::beta, Nektar::PulseWavePressureArea::m_rho, and tinysimd::sqrt().

◆ v_GetC()

void Nektar::BetaPressureArea::v_GetC ( NekDouble c,
const NekDouble beta,
const NekDouble A,
const NekDouble A0,
const NekDouble alpha = 0.5 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 69 of file BetaPressureArea.cpp.

73{
74 c = sqrt(beta / (2 * m_rho)) * sqrt(sqrt(A)); // Elastic
75}

References Nektar::LibUtilities::beta, Nektar::PulseWavePressureArea::m_rho, and tinysimd::sqrt().

◆ v_GetCharIntegral()

void Nektar::BetaPressureArea::v_GetCharIntegral ( NekDouble I,
const NekDouble beta,
const NekDouble A,
const NekDouble A0,
const NekDouble alpha = 0.5 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 114 of file BetaPressureArea.cpp.

117{
118 NekDouble c = 0.0;
119 NekDouble c0 = 0.0;
120
121 GetC(c, beta, A, A0);
122 GetC(c0, beta, A0, A0);
123
124 I = 4 * (c - c0);
125}
void GetC(NekDouble &c, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)
double NekDouble

References Nektar::LibUtilities::beta, and Nektar::PulseWavePressureArea::GetC().

◆ v_GetJacobianInverse()

void Nektar::BetaPressureArea::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 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 127 of file BetaPressureArea.cpp.

134{
135 /*
136 In the interest of speed, the inverse of the Jacobians for bifurcations,
137 merges and junctions for the beta law have been calculated analytically.
138 This can be done for other laws too, or the general formulation can be used
139 instead.
140 */
141
142 NekDouble k = 0.0;
143
144 if (type == "Bifurcation")
145 {
146 NekMatrix<NekDouble> J(6, 6);
147 Array<OneD, NekDouble> c(3);
148 Array<OneD, NekDouble> K(3);
149
150 for (int i = 0; i < 3; ++i)
151 {
152 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
153 }
154
155 k = c[0] * Au[1] * c[2] + Au[0] * c[2] * c[1] + Au[2] * c[0] * c[1];
156 K[0] = (c[0] - uu[0]) * k;
157 K[1] = (c[1] + uu[1]) * k;
158 K[2] = (c[2] + uu[2]) * k;
159
160 invJ.SetValue(0, 0,
161 (-c[1] * uu[0] * c[2] * Au[0] +
162 Au[2] * c[1] * c[0] * c[0] +
163 Au[1] * c[0] * c[0] * c[2]) /
164 K[0]);
165 invJ.SetValue(0, 1, Au[1] * (c[1] - uu[1]) * c[0] * c[2] / K[0]);
166 invJ.SetValue(0, 2, Au[2] * (c[2] - uu[2]) * c[0] * c[1] / K[0]);
167 invJ.SetValue(0, 3, c[0] * c[1] * c[2] / K[0]);
168 invJ.SetValue(0, 4, -0.5 * c[0] * Au[1] * c[2] / K[0]);
169 invJ.SetValue(0, 5, -0.5 * Au[2] * c[0] * c[1] / K[0]);
170
171 invJ.SetValue(1, 0, Au[0] * (c[0] + uu[0]) * c[1] * c[2] / K[1]);
172 invJ.SetValue(1, 1,
173 (c[0] * uu[1] * c[2] * Au[1] +
174 Au[2] * c[0] * c[1] * c[1] +
175 c[2] * c[1] * c[1] * Au[0]) /
176 K[1]);
177 invJ.SetValue(1, 2, -Au[2] * (c[2] - uu[2]) * c[0] * c[1] / K[1]);
178 invJ.SetValue(1, 3, -c[0] * c[1] * c[2] / K[1]);
179 invJ.SetValue(1, 4, -0.5 * (c[0] * Au[2] + Au[0] * c[2]) * c[1] / K[1]);
180 invJ.SetValue(1, 5, 0.5 * Au[2] * c[0] * c[1] / K[1]);
181
182 invJ.SetValue(2, 0, Au[0] * (c[0] + uu[0]) * c[1] * c[2] / K[2]);
183 invJ.SetValue(2, 1, -Au[1] * (c[1] - uu[1]) * c[0] * c[2] / K[2]);
184 invJ.SetValue(2, 2,
185 (c[0] * c[1] * uu[2] * Au[2] +
186 c[0] * Au[1] * c[2] * c[2] +
187 c[1] * c[2] * c[2] * Au[0]) /
188 K[2]);
189 invJ.SetValue(2, 3, -c[0] * c[1] * c[2] / K[2]);
190 invJ.SetValue(2, 4, 0.5 * c[0] * Au[1] * c[2] / K[2]);
191 invJ.SetValue(2, 5, -0.5 * (Au[1] * c[0] + c[1] * Au[0]) * c[2] / K[2]);
192
193 invJ.SetValue(3, 0,
194 Au[0] *
195 (Au[0] * c[2] * c[1] - uu[0] * c[2] * Au[1] -
196 uu[0] * c[1] * Au[2]) /
197 K[0]);
198 invJ.SetValue(3, 1, -Au[0] * Au[1] * (c[1] - uu[1]) * c[2] / K[0]);
199 invJ.SetValue(3, 2, -Au[0] * Au[2] * (c[2] - uu[2]) * c[1] / K[0]);
200 invJ.SetValue(3, 3, -Au[0] * c[2] * c[1] / K[0]);
201 invJ.SetValue(3, 4, 0.5 * Au[0] * Au[1] * c[2] / K[0]);
202 invJ.SetValue(3, 5, 0.5 * Au[0] * c[1] * Au[2] / K[0]);
203
204 invJ.SetValue(4, 0, Au[0] * Au[1] * (c[0] + uu[0]) * c[2] / K[1]);
205 invJ.SetValue(4, 1,
206 -Au[1] *
207 (c[0] * Au[1] * c[2] + c[0] * uu[1] * Au[2] +
208 c[2] * uu[1] * Au[0]) /
209 K[1]);
210 invJ.SetValue(4, 2, -Au[2] * Au[1] * (c[2] - uu[2]) * c[0] / K[1]);
211 invJ.SetValue(4, 3, -c[0] * Au[1] * c[2] / K[1]);
212 invJ.SetValue(4, 4,
213 -0.5 * Au[1] * (c[0] * Au[2] + Au[0] * c[2]) / K[1]);
214 invJ.SetValue(4, 5, 0.5 * Au[2] * Au[1] * c[0] / K[1]);
215
216 invJ.SetValue(5, 0, Au[0] * Au[2] * (c[0] + uu[0]) * c[1] / K[2]);
217 invJ.SetValue(5, 1, -Au[2] * Au[1] * (c[1] - uu[1]) * c[0] / K[2]);
218 invJ.SetValue(5, 2,
219 -Au[2] *
220 (Au[2] * c[0] * c[1] + c[0] * uu[2] * Au[1] +
221 c[1] * uu[2] * Au[0]) /
222 K[2]);
223 invJ.SetValue(5, 3, -Au[2] * c[0] * c[1] / K[2]);
224 invJ.SetValue(5, 4, 0.5 * Au[2] * Au[1] * c[0] / K[2]);
225 invJ.SetValue(5, 5,
226 -0.5 * Au[2] * (Au[1] * c[0] + c[1] * Au[0]) / K[2]);
227 }
228 else if (type == "Merge")
229 {
230 NekMatrix<NekDouble> J(6, 6);
231 Array<OneD, NekDouble> c(3);
232 Array<OneD, NekDouble> K(3);
233
234 for (int i = 0; i < 3; ++i)
235 {
236 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
237 }
238
239 k = c[0] * Au[1] * c[2] + Au[0] * c[2] * c[1] + Au[2] * c[0] * c[1];
240 K[0] = (c[0] - uu[0]) * k;
241 K[1] = (c[1] + uu[1]) * k;
242 K[2] = (c[2] + uu[2]) * k;
243
244 invJ.SetValue(0, 0,
245 (-c[1] * uu[0] * c[2] * Au[0] +
246 Au[2] * c[1] * c[0] * c[0] +
247 Au[1] * c[0] * c[0] * c[2]) /
248 K[0]);
249 invJ.SetValue(0, 1, Au[1] * (c[1] - uu[1]) * c[0] * c[2] / K[0]);
250 invJ.SetValue(0, 2, Au[2] * (c[2] - uu[2]) * c[0] * c[1] / K[0]);
251 invJ.SetValue(0, 3, c[0] * c[1] * c[2] / K[0]);
252 invJ.SetValue(0, 4, -0.5 * c[0] * Au[1] * c[2] / K[0]);
253 invJ.SetValue(0, 5, -0.5 * Au[2] * c[0] * c[1] / K[0]);
254
255 invJ.SetValue(1, 0, Au[0] * (c[0] + uu[0]) * c[1] * c[2] / K[1]);
256 invJ.SetValue(1, 1,
257 (c[0] * uu[1] * c[2] * Au[1] +
258 Au[2] * c[0] * c[1] * c[1] +
259 c[2] * c[1] * c[1] * Au[0]) /
260 K[1]);
261 invJ.SetValue(1, 2, -Au[2] * (c[2] - uu[2]) * c[0] * c[1] / K[1]);
262 invJ.SetValue(1, 3, -c[0] * c[1] * c[2] / K[1]);
263 invJ.SetValue(1, 4, -0.5 * (c[0] * Au[2] + Au[0] * c[2]) * c[1] / K[1]);
264 invJ.SetValue(1, 5, 0.5 * Au[2] * c[0] * c[1] / K[1]);
265
266 invJ.SetValue(2, 0, Au[0] * (c[0] - uu[0]) * c[1] * c[2] / K[2]);
267 invJ.SetValue(2, 1, -Au[1] * (c[1] + uu[1]) * c[0] * c[2] / K[2]);
268 invJ.SetValue(2, 2,
269 -(c[0] * uu[2] * c[1] * Au[2] -
270 Au[1] * c[0] * c[2] * c[2] -
271 c[1] * c[2] * c[2] * Au[0]) /
272 K[2]);
273 invJ.SetValue(2, 3, -c[0] * c[1] * c[2] / K[2]);
274 invJ.SetValue(2, 4, -0.5 * Au[1] * c[0] * c[2] / K[2]);
275 invJ.SetValue(2, 5, 0.5 * (Au[1] * c[0] + Au[0] * c[1]) * c[2] / K[2]);
276
277 invJ.SetValue(3, 0,
278 -Au[0] *
279 (Au[0] * c[2] * c[1] + uu[0] * c[2] * Au[1] +
280 uu[0] * c[1] * Au[2]) /
281 K[0]);
282 invJ.SetValue(3, 1, Au[0] * Au[1] * (c[1] + uu[1]) * c[2] / K[0]);
283
284 invJ.SetValue(3, 2, -Au[0] * Au[2] * (c[2] - uu[2]) * c[1] / K[0]);
285 invJ.SetValue(3, 3, -Au[0] * c[2] * c[1] / K[0]);
286 invJ.SetValue(3, 4, 0.5 * Au[0] * Au[1] * c[2] / K[0]);
287 invJ.SetValue(3, 5, 0.5 * Au[0] * c[1] * Au[2] / K[0]);
288
289 invJ.SetValue(4, 0, Au[0] * Au[1] * (c[0] + uu[0]) * c[2] / K[1]);
290 invJ.SetValue(4, 1,
291 -Au[1] *
292 (c[0] * Au[1] * c[2] + c[0] * uu[1] * Au[2] +
293 c[2] * uu[1] * Au[0]) /
294 K[1]);
295 invJ.SetValue(4, 2, -Au[2] * Au[1] * (c[2] - uu[2]) * c[0] / K[1]);
296 invJ.SetValue(4, 3, -c[0] * Au[1] * c[2] / K[1]);
297 invJ.SetValue(4, 4,
298 -0.5 * Au[1] * (c[0] * Au[2] + Au[0] * c[2]) / K[1]);
299 invJ.SetValue(4, 5, 0.5 * Au[2] * Au[1] * c[0] / K[1]);
300
301 invJ.SetValue(5, 0, Au[0] * Au[2] * (c[0] + uu[0]) * c[1] / K[2]);
302 invJ.SetValue(5, 1, -Au[2] * Au[1] * (c[1] - uu[1]) * c[0] / K[2]);
303 invJ.SetValue(5, 2,
304 -Au[2] *
305 (Au[2] * c[0] * c[1] + c[0] * uu[2] * Au[1] +
306 c[1] * uu[2] * Au[0]) /
307 K[2]);
308 invJ.SetValue(5, 3, -Au[2] * c[0] * c[1] / K[2]);
309 invJ.SetValue(5, 4, 0.5 * Au[2] * Au[1] * c[0] / K[2]);
310 invJ.SetValue(5, 5,
311 -0.5 * Au[2] * (Au[1] * c[0] + c[1] * Au[0]) / K[2]);
312 }
313 else if (type == "Interface")
314 {
315 NekMatrix<NekDouble> J(4, 4);
316 Array<OneD, NekDouble> c(2);
317 Array<OneD, NekDouble> K(2);
318
319 for (int i = 0; i < 2; ++i)
320 {
321 GetC(c[i], beta[i], Au[i], A0[i], alpha[i]);
322 }
323
324 k = (c[0] * Au[1] + Au[0] * c[1]);
325 K[0] = (c[0] + uu[0]) * k;
326 K[1] = (c[1] + uu[1]) * k;
327
328 invJ.SetValue(0, 0,
329 (Au[1] * c[0] * c[0] - c[1] * uu[0] * Au[0]) / K[0]);
330 invJ.SetValue(0, 1, Au[1] * (c[1] - uu[1]) * c[0] / K[0]);
331 invJ.SetValue(0, 2, c[0] * c[1] / K[0]);
332 invJ.SetValue(0, 3, -0.5 * c[0] * Au[1] / K[0]);
333
334 invJ.SetValue(1, 0, Au[0] * (c[0] + uu[0]) * c[1] / K[1]);
335 invJ.SetValue(1, 1,
336 (c[0] * uu[1] * Au[1] + c[1] * c[1] * Au[0]) / K[1]);
337 invJ.SetValue(1, 2, -c[0] * c[1] / K[1]);
338 invJ.SetValue(1, 3, -0.5 * Au[0] * c[1] / K[1]);
339
340 invJ.SetValue(2, 0, Au[0] * (Au[0] * c[1] - uu[0] * Au[1]) / K[0]);
341 invJ.SetValue(2, 1, -Au[0] * Au[1] * (c[1] - uu[1]) / K[0]);
342 invJ.SetValue(2, 2, -Au[0] * c[1] / K[0]);
343 invJ.SetValue(2, 3, 0.5 * Au[1] * Au[0] / K[0]);
344
345 invJ.SetValue(3, 0, Au[0] * Au[1] * (c[0] + uu[0]) / K[1]);
346 invJ.SetValue(3, 1, -Au[1] * (c[0] * Au[1] + uu[1] * Au[0]) / K[1]);
347 invJ.SetValue(3, 2, -c[0] * Au[1] / K[1]);
348 invJ.SetValue(3, 3, -0.5 * Au[1] * Au[0] / K[1]);
349 }
350}

References Nektar::LibUtilities::beta, and Nektar::PulseWavePressureArea::GetC().

◆ v_GetPressure()

void Nektar::BetaPressureArea::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 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 59 of file BetaPressureArea.cpp.

64{
65 P = m_PExt + beta * (sqrt(A) - sqrt(A0)) -
66 gamma * dAUdx / sqrt(A); // Viscoelasticity
67}
@ P
Monomial polynomials .
Definition: BasisType.h:62

References Nektar::LibUtilities::beta, Nektar::PulseWavePressureArea::m_PExt, Nektar::LibUtilities::P, and tinysimd::sqrt().

◆ v_GetUFromChars()

void Nektar::BetaPressureArea::v_GetUFromChars ( NekDouble u,
const NekDouble W1,
const NekDouble W2 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 108 of file BetaPressureArea.cpp.

110{
111 u = (W1 + W2) / 2; // Necessarily the case for all tube laws
112}

◆ v_GetW1()

void Nektar::BetaPressureArea::v_GetW1 ( NekDouble W1,
const NekDouble u,
const NekDouble beta,
const NekDouble A,
const NekDouble A0,
const NekDouble alpha = 0.5 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 77 of file BetaPressureArea.cpp.

81{
82 NekDouble I = 0.0;
83 GetCharIntegral(I, beta, A, A0);
84
85 W1 = u + I; // Elastic and assumes u0 = 0
86}
void GetCharIntegral(NekDouble &I, const NekDouble &beta, const NekDouble &A, const NekDouble &A0, const NekDouble &alpha=0.5)

References Nektar::LibUtilities::beta, and Nektar::PulseWavePressureArea::GetCharIntegral().

◆ v_GetW2()

void Nektar::BetaPressureArea::v_GetW2 ( NekDouble W2,
const NekDouble u,
const NekDouble beta,
const NekDouble A,
const NekDouble A0,
const NekDouble alpha = 0.5 
)
overrideprotectedvirtual

Implements Nektar::PulseWavePressureArea.

Definition at line 88 of file BetaPressureArea.cpp.

92{
93 NekDouble I = 0.0;
94 GetCharIntegral(I, beta, A, A0);
95
96 W2 = u - I; // Elastic and assumes u0 = 0
97}

References Nektar::LibUtilities::beta, and Nektar::PulseWavePressureArea::GetCharIntegral().

Member Data Documentation

◆ className

std::string Nektar::BetaPressureArea::className
static
Initial value:
=
"Beta law pressure area relationship for the arterial system")
static PulseWavePressureAreaSharedPtr create(Array< OneD, MultiRegions::ExpListSharedPtr > &pVessel, const LibUtilities::SessionReaderSharedPtr &pSession)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
PressureAreaFactory & GetPressureAreaFactory()

Definition at line 61 of file BetaPressureArea.h.