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)
 
virtual ~BetaPressureArea ()
 
- 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

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

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 104 of file BetaPressureArea.cpp.

109{
110 boost::ignore_unused(alpha);
111
112 A = pow((W1 - W2) * sqrt(2 * m_rho / beta) / 8 + sqrt(sqrt(A0)), 4);
113}
@ beta
Gauss Radau pinned at x=-1,.
Definition: PointsType.h:61
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 71 of file BetaPressureArea.cpp.

74{
75 boost::ignore_unused(A0, alpha);
76
77 c = sqrt(beta / (2 * m_rho)) * sqrt(sqrt(A)); // Elastic
78}

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 121 of file BetaPressureArea.cpp.

125{
126 boost::ignore_unused(alpha);
127
128 NekDouble c = 0.0;
129 NekDouble c0 = 0.0;
130
131 GetC(c, beta, A, A0);
132 GetC(c0, beta, A0, A0);
133
134 I = 4 * (c - c0);
135}
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 137 of file BetaPressureArea.cpp.

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

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 boost::ignore_unused(alpha);
66
67 P = m_PExt + beta * (sqrt(A) - sqrt(A0)) -
68 gamma * dAUdx / sqrt(A); // Viscoelasticity
69}
@ P
Monomial polynomials .
Definition: BasisType.h:64

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 115 of file BetaPressureArea.cpp.

117{
118 u = (W1 + W2) / 2; // Necessarily the case for all tube laws
119}

◆ 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 80 of file BetaPressureArea.cpp.

83{
84 boost::ignore_unused(alpha);
85
86 NekDouble I = 0.0;
87 GetCharIntegral(I, beta, A, A0);
88
89 W1 = u + I; // Elastic and assumes u0 = 0
90}
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 92 of file BetaPressureArea.cpp.

95{
96 boost::ignore_unused(alpha);
97
98 NekDouble I = 0.0;
99 GetCharIntegral(I, beta, A, A0);
100
101 W2 = u - I; // Elastic and assumes u0 = 0
102}

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.
Definition: NekFactory.hpp:198
PressureAreaFactory & GetPressureAreaFactory()

Definition at line 61 of file BetaPressureArea.h.