oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM > Class Template Referenceabstract

#include <womersley_elements.h>

+ Inheritance diagram for oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >:

Public Types

typedef double(* PrescribedVolumeFluxFctPt) (const double &time)
 

Public Member Functions

 WomersleyImpedanceTubeBase (const double &length, PrescribedVolumeFluxFctPt prescribed_volume_flux_fct_pt)
 
 WomersleyImpedanceTubeBase (const double &length, Mesh *navier_stokes_outflow_mesh_pt)
 
doublep_out ()
 Access fct to outlet pressure. More...
 
virtual Meshbuild_mesh_and_apply_boundary_conditions (TimeStepper *time_stepper_pt)=0
 
void setup ()
 
void setup (double *re_st_pt, const double &dt, const double &q_initial, TimeStepper *time_stepper_pt=0)
 
WomersleyProblem< ELEMENT, DIM > * womersley_problem_pt ()
 Access to underlying Womersley problem. More...
 
void shift_time_values (const double &dt)
 
double total_volume_flux_into_impedance_tube ()
 
void get_response (double &p_in, double &dp_in_dq)
 
- Public Member Functions inherited from oomph::TemplateFreeWomersleyImpedanceTubeBase
 TemplateFreeWomersleyImpedanceTubeBase ()
 Empty constructor. More...
 
virtual ~TemplateFreeWomersleyImpedanceTubeBase ()
 Empty virtual destructor. More...
 

Protected Member Functions

void precompute_aux_integrals ()
 

Protected Attributes

double Length
 Length of the tube. More...
 
double Dp_in_dq
 
doubleCurrent_volume_flux_pt
 
WomersleyProblem< ELEMENT, DIM > * Womersley_problem_pt
 
double P_out
 Outlet pressure. More...
 
PrescribedVolumeFluxFctPt Prescribed_volume_flux_fct_pt
 Pointer to function that specifies the prescribed volume flux. More...
 
MeshNavier_stokes_outflow_mesh_pt
 
std::map< unsigned, double > * Aux_integral_pt
 

Private Attributes

bool Using_flux_control_elements
 

Additional Inherited Members

- Static Public Attributes inherited from oomph::TemplateFreeWomersleyImpedanceTubeBase
static double Zero = 0.0
 Zero! More...
 

Detailed Description

template<class ELEMENT, unsigned DIM>
class oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >

///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// Base class for Womersley impedance tube. Allows the computation of the inlet pressure p_in into a uniform tube of specified length that is assumed to convey fully-developed, but time-dependent flow with a presribed instantaneous flow rate, q. Also computes the derivative dp_in/dq required when this is used to determine impedance-type outlet boundary conditions in a Navier-Stokes computation.

Member Typedef Documentation

◆ PrescribedVolumeFluxFctPt

template<class ELEMENT , unsigned DIM>
typedef double(* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::PrescribedVolumeFluxFctPt) (const double &time)

Function pointer to fct that prescribes volume flux q=fct(t) – mainly used for validation purposes.

Constructor & Destructor Documentation

◆ WomersleyImpedanceTubeBase() [1/2]

template<class ELEMENT , unsigned DIM>
oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::WomersleyImpedanceTubeBase ( const double length,
PrescribedVolumeFluxFctPt  prescribed_volume_flux_fct_pt 
)
inline

Constructor: Specify length of tube and pointer to function that specifies the prescribed volume flux. Outlet pressure is set to zero.

1083  : Length(length),
1084  P_out(0.0),
1085  Prescribed_volume_flux_fct_pt(prescribed_volume_flux_fct_pt),
1087  {
1088  // Initialise currently prescribed flux
1089  Current_volume_flux_pt = new double(0.0);
1090 
1091  // Auxiliary integral isn't used if flux isn't prescribed
1092  // via outflow through NavierStokesImpedanceTractionElements
1093  Aux_integral_pt = 0;
1094  }
double Length
Length of the tube.
Definition: womersley_elements.h:1431
Mesh * Navier_stokes_outflow_mesh_pt
Definition: womersley_elements.h:1456
double * Current_volume_flux_pt
Definition: womersley_elements.h:1441
std::map< unsigned, double > * Aux_integral_pt
Definition: womersley_elements.h:1462
PrescribedVolumeFluxFctPt Prescribed_volume_flux_fct_pt
Pointer to function that specifies the prescribed volume flux.
Definition: womersley_elements.h:1451
double P_out
Outlet pressure.
Definition: womersley_elements.h:1448

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Aux_integral_pt, and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Current_volume_flux_pt.

◆ WomersleyImpedanceTubeBase() [2/2]

template<class ELEMENT , unsigned DIM>
oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::WomersleyImpedanceTubeBase ( const double length,
Mesh navier_stokes_outflow_mesh_pt 
)
inline

Constructor: Specify length of tube and the pointer to the mesh of either NavierStokesImpedanceTractionElements or NavierStokesFluxControlElements that are attached to the outflow cross-section of a (higher-dimensional) Navier Stokes mesh and provide the inflow into the ImpedanceTube. Outlet pressure is set to zero.

1105  : Length(length),
1106  P_out(0.0),
1108  Navier_stokes_outflow_mesh_pt(navier_stokes_outflow_mesh_pt)
1109  {
1110  // Initialise currently prescribed flux
1111  Current_volume_flux_pt = new double(0.0);
1112 
1113  // Initialise flag to record if NavierStokesFluxControlElement
1114  // or NavierStokesImpedanceTractionElement elements are being used
1116 
1117  // Attempt to cast 1st element to NavierStokesImpedanceTractionElementBase
1118  if (dynamic_cast<NavierStokesImpedanceTractionElementBase*>(
1119  navier_stokes_outflow_mesh_pt->element_pt(0)))
1120  {
1122 
1123  // Create map used to store the non-zero entries of the
1124  // auxiliary integral, containing the derivative of the total
1125  // volume flux through the outflow boundary of the (higher-dimensional)
1126  // Navier-Stokes mesh w.r.t. to the discrete (global) (velocity)
1127  // degrees of freedom.
1128  Aux_integral_pt = new std::map<unsigned, double>;
1129 
1130  // Pass pointer to Navier_stokes_outflow_mesh_pt to the Navier
1131  // Stokes traction elements
1132  unsigned nelem = navier_stokes_outflow_mesh_pt->nelement();
1133  for (unsigned e = 0; e < nelem; e++)
1134  {
1135  NavierStokesImpedanceTractionElementBase* el_pt =
1136  dynamic_cast<NavierStokesImpedanceTractionElementBase*>(
1137  navier_stokes_outflow_mesh_pt->element_pt(e));
1138 
1139  // Pass the mesh of all NavierStokesImpedanceTractionElements to
1140  // each NavierStokesImpedanceTractionElements in that mesh
1141  // and treat nodes in that mesh that are not part of the element
1142  // itself as external data (since they affect the total volume
1143  // flux and therefore the traction onto the element).
1144  el_pt->set_external_data_from_navier_stokes_outflow_mesh(
1145  navier_stokes_outflow_mesh_pt);
1146  }
1147  }
1148 #ifdef PARANOID
1149  // Test to make sure the elements in the mesh are valid
1150  else
1151  {
1152  if (!dynamic_cast<TemplateFreeNavierStokesFluxControlElementBase*>(
1153  navier_stokes_outflow_mesh_pt->element_pt(0)))
1154  {
1155  std::ostringstream error_message;
1156  error_message
1157  << "WomersleyImpedanceTubeBase requires a Navier-Stokes\n"
1158  << "outflow mesh of elements which inherit from either\n"
1159  << "TemplateFreeNavierStokesFluxControlElementBase or\n"
1160  << "NavierStokesImpedanceTractionElementBase.\n";
1161  throw OomphLibError(error_message.str(),
1164  }
1165  }
1166 #endif
1167  }
Array< double, 1, 3 > e(1./3., 0.5, 2.)
bool Using_flux_control_elements
Definition: womersley_elements.h:1467
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Aux_integral_pt, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Current_volume_flux_pt, e(), oomph::Mesh::element_pt(), oomph::Mesh::nelement(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::NavierStokesImpedanceTractionElementBase::set_external_data_from_navier_stokes_outflow_mesh(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Using_flux_control_elements.

Member Function Documentation

◆ build_mesh_and_apply_boundary_conditions()

template<class ELEMENT , unsigned DIM>
virtual Mesh* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::build_mesh_and_apply_boundary_conditions ( TimeStepper time_stepper_pt)
pure virtual

Pure virtual function in which the user of a derived class must create the mesh of WomersleyElements (of the type specified by the class's template argument) and apply the boundary conditions. The Womersley elements use the timestepper specified as the input argument.

Implemented in oomph::WomersleyOutflowImpedanceTube< ELEMENT, DIM >, oomph::WomersleyOutflowImpedanceTube< QWomersleyElement< 1, 3 >, 1 >, and RectangularWomersleyImpedanceTube< ELEMENT >.

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup().

◆ get_response()

template<class ELEMENT , unsigned DIM>
void oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::get_response ( double p_in,
double dp_in_dq 
)
inlinevirtual

Compute inlet pressure, p_in, required to achieve the currently imposed, instantaneous volume flux q prescribed by total_volume_flux_into_impedance_tube(), and its derivative, dp_in/dq.

Implements oomph::TemplateFreeWomersleyImpedanceTubeBase.

1376  {
1377  // Set currently imposed flux
1379 
1380  // Do a Newton solve to compute the pressure gradient
1381  // required to achieve the imposed instantaneous flow rate
1382  Womersley_problem_pt->newton_solve();
1383 
1384  // Compute inflow pressure based on computed pressure gradient,
1385  // the length of tube, and the outlet pressure
1386  p_in =
1387  -Womersley_problem_pt->pressure_gradient_data_pt()->value(0) * Length +
1388  P_out;
1389 
1390  // Return pre-computed value for dp_in/dq
1391  dp_in_dq = Dp_in_dq;
1392  }
double Dp_in_dq
Definition: womersley_elements.h:1435
double total_volume_flux_into_impedance_tube()
Definition: womersley_elements.h:1336
WomersleyProblem< ELEMENT, DIM > * Womersley_problem_pt
Definition: womersley_elements.h:1445

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Current_volume_flux_pt, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Dp_in_dq, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Length, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::P_out, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::total_volume_flux_into_impedance_tube(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Womersley_problem_pt.

Referenced by run_impedance_tube(), and run_navier_stokes_outflow().

◆ p_out()

template<class ELEMENT , unsigned DIM>
double& oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::p_out ( )
inline

Access fct to outlet pressure.

1171  {
1172  return P_out;
1173  }

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::P_out.

◆ precompute_aux_integrals()

template<class ELEMENT , unsigned DIM>
void oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::precompute_aux_integrals ( )
inlineprotected

Precompute auxiliary integrals required for the computation of the Jacobian in the NavierStokesImpedanceTractionElement. Also pass the pointer to the pre-computed integrals to the elements in the Navier_stokes_outflow_mesh_pt so they can refer to it.

1401  {
1402  // Loop over all elements
1403  unsigned nelem = Navier_stokes_outflow_mesh_pt->nelement();
1404  for (unsigned e = 0; e < nelem; e++)
1405  {
1406  NavierStokesImpedanceTractionElementBase* el_pt =
1407  dynamic_cast<NavierStokesImpedanceTractionElementBase*>(
1409 
1410  // Add the element's contribution
1411  el_pt->add_element_contribution_to_aux_integral(Aux_integral_pt);
1412 
1413  // Tell the elements who's setting their flow resistance
1414  el_pt->set_impedance_tube_pt(this);
1415  }
1416 
1417  // Pass pointer to Aux_integral to the elements so they can
1418  // use it in the computation of the Jacobian
1419  for (unsigned e = 0; e < nelem; e++)
1420  {
1421  NavierStokesImpedanceTractionElementBase* el_pt =
1422  dynamic_cast<NavierStokesImpedanceTractionElementBase*>(
1424 
1425  // Pass pointer to elements
1426  el_pt->set_aux_integral_pt(Aux_integral_pt);
1427  }
1428  }
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590

References oomph::NavierStokesImpedanceTractionElementBase::add_element_contribution_to_aux_integral(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Aux_integral_pt, e(), oomph::Mesh::element_pt(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Navier_stokes_outflow_mesh_pt, oomph::Mesh::nelement(), oomph::NavierStokesImpedanceTractionElementBase::set_aux_integral_pt(), and oomph::NavierStokesImpedanceTractionElementBase::set_impedance_tube_pt().

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup().

◆ setup() [1/2]

template<class ELEMENT , unsigned DIM>
void oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup ( )
inline

Set up the Womersley tubes so that a subsequent call to get_response(...) computes the inlet pressure for the currently prescribed instantaneous flow rate. Steady version!

1188  {
1189  // Dummy parameters
1190  double* re_st_pt = &Zero;
1191  double dt = 0.0;
1192  double q_initial = 0;
1193  TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper;
1194  setup(re_st_pt, dt, q_initial, time_stepper_pt);
1195  }
static Steady< 0 > Default_TimeStepper
The Steady Timestepper.
Definition: mesh.h:75
static double Zero
Zero!
Definition: womersley_elements.h:80
void setup()
Definition: womersley_elements.h:1187

References oomph::Mesh::Default_TimeStepper, and oomph::TemplateFreeWomersleyImpedanceTubeBase::Zero.

◆ setup() [2/2]

template<class ELEMENT , unsigned DIM>
void oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup ( double re_st_pt,
const double dt,
const double q_initial,
TimeStepper time_stepper_pt = 0 
)
inline

Set up the Womersley tubes so that a subsequent call to get_response(...) computes the inlet pressure for the currently prescribed instantaneous flow rate, assuming that at all previous times the tube conveyed steady, fully-developed flow with flowrate q_initial. dt specifies the timestep for the subsequent time integration. Specify: Womersley number, (constant) timestep, the initial volume flux (from which the subsequent impulsive start is performed) and, optionally the pointer to the timestepper to be used in the Womersley elements (defaults to BDF<2>).

By default, we do want to suppress the output from the Newton solver

1211  {
1212  // Create timestepper if none specified so far
1213  if (time_stepper_pt == 0)
1214  {
1215  time_stepper_pt = new BDF<2>;
1216  }
1217 
1218  // Build mesh and apply bcs
1219  Mesh* my_mesh_pt =
1221 
1222  // Build problem
1223  Womersley_problem_pt = new WomersleyProblem<ELEMENT, DIM>(
1224  re_st_pt, Current_volume_flux_pt, time_stepper_pt, my_mesh_pt);
1225 
1228  Womersley_problem_pt->disable_info_in_newton_solve();
1229  oomph_info << "NOTE: We're suppressing timings etc from \n"
1230  << " Newton solver in WomersleyImpedanceTubeBase. "
1231  << std::endl;
1232 
1233  // Precompute the auxiliary integrals for the Navier-Stokes
1234  // impedance traction elements (if they're used to specify the inflow
1235  if ((!Using_flux_control_elements) &&
1237  {
1239  }
1240 
1241  // Initialise timestep -- also sets the weights for all timesteppers
1242  // in the problem.
1243  Womersley_problem_pt->initialise_dt(dt);
1244 
1245  // Set currently imposed flux
1246  *Current_volume_flux_pt = q_initial;
1247 
1248  // Assign steady initial solution for this flux
1249  Womersley_problem_pt->steady_newton_solve();
1250 
1251  // Allow for resolve
1252  Womersley_problem_pt->linear_solver_pt()->enable_resolve();
1253 
1254  // Re-use Jacobian
1255  Womersley_problem_pt->enable_jacobian_reuse();
1256 
1257  // Shut up
1258  Womersley_problem_pt->linear_solver_pt()->disable_doc_time();
1259 
1260  // Do a dummy solve with time-dependent terms switched on
1261  // to generate (and store) the Jacobian. (We're not using
1262  // a Newton solve because the initial residual may be zero
1263  // in which case the Jacobian would never be computed!)
1264  unsigned n_dof = Womersley_problem_pt->ndof();
1265 
1266  // Local scope to make sure dx goes out of scope
1267  {
1268  DoubleVector dx;
1269  Womersley_problem_pt->linear_solver_pt()->solve(Womersley_problem_pt,
1270  dx);
1271  }
1272 
1273 
1274  // Pre-compute derivative of p_in w.r.t. q
1275 
1276  // Setup vector of derivatives of residuals & unknowns w.r.t. Q
1277  LinearAlgebraDistribution dist(
1278  Womersley_problem_pt->communicator_pt(), n_dof, false);
1279  DoubleVector drdq(&dist, 0.0);
1280  DoubleVector dxdq(&dist, 0.0);
1281 
1282  // What's the global equation number of the equation that
1283  // determines the pressure gradient
1284  unsigned g_eqn =
1285  Womersley_problem_pt->pressure_gradient_data_pt()->eqn_number(0);
1286 
1287  // Derivative of volume constraint residual w.r.t. prescribed
1288  // instantaenous volume flux (in ImposeFluxForWomersleyElement)
1289  drdq[g_eqn] = -1.0;
1290 
1291  // Solve for derivatives of unknowns in Womersley problem, w.r.t.
1292  // instantaenous volume flux (in ImposeFluxForWomersleyElement)
1293  Womersley_problem_pt->linear_solver_pt()->resolve(drdq, dxdq);
1294 
1295  // Rate of change of inflow pressure w.r.t to instantaneous
1296  // volume flux
1297  Dp_in_dq = dxdq[g_eqn] * Length;
1298  }
std::vector< double > DoubleVector
loads clump configuration
Definition: ClumpInput.h:26
void precompute_aux_integrals()
Definition: womersley_elements.h:1400
virtual Mesh * build_mesh_and_apply_boundary_conditions(TimeStepper *time_stepper_pt)=0
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::build_mesh_and_apply_boundary_conditions(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Current_volume_flux_pt, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Dp_in_dq, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Length, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Navier_stokes_outflow_mesh_pt, oomph::oomph_info, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::precompute_aux_integrals(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Using_flux_control_elements, and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Womersley_problem_pt.

◆ shift_time_values()

template<class ELEMENT , unsigned DIM>
void oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::shift_time_values ( const double dt)
inline

Shift history values to allow coputation of next timestep. Note: When used with a full Navier-Stokes problem this function must be called in actions_before_implicit_timestep()

1312  {
1313  // Shift the history values in the Womersley problem
1314  Womersley_problem_pt->shift_time_values();
1315 
1316  // Advance global time and set current value of dt
1317  Womersley_problem_pt->time_pt()->time() += dt;
1318  Womersley_problem_pt->time_pt()->dt() = dt;
1319 
1320  // Find out how many timesteppers there are
1321  unsigned n_time_steppers = Womersley_problem_pt->ntime_stepper();
1322 
1323  // Loop over them all and set the weights
1324  for (unsigned i = 0; i < n_time_steppers; i++)
1325  {
1326  Womersley_problem_pt->time_stepper_pt(i)->set_weights();
1327  }
1328  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9

References i, and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Womersley_problem_pt.

Referenced by run_impedance_tube(), and run_navier_stokes_outflow().

◆ total_volume_flux_into_impedance_tube()

template<class ELEMENT , unsigned DIM>
double oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::total_volume_flux_into_impedance_tube ( )
inline

Compute total current volume flux into the "impedance tube" that provides the flow resistance (flux is either obtained from the function that specifies it externally or by by adding up the flux through all NavierStokesImpedanceTractionElements in the mesh pointed to by the Navier_stokes_outflow_mesh_pt.

1337  {
1339  {
1341  Womersley_problem_pt->time_pt()->time());
1342  }
1343  else
1344  {
1345  unsigned nelem = Navier_stokes_outflow_mesh_pt->nelement();
1346  double flux = 0.0;
1348  {
1349  for (unsigned e = 0; e < nelem; e++)
1350  {
1351  flux +=
1352  dynamic_cast<TemplateFreeNavierStokesFluxControlElementBase*>(
1354  ->get_volume_flux();
1355  }
1356  }
1357  else
1358  {
1359  for (unsigned e = 0; e < nelem; e++)
1360  {
1361  flux += dynamic_cast<NavierStokesImpedanceTractionElementBase*>(
1363  ->get_volume_flux();
1364  }
1365  }
1366  return flux;
1367  }
1368  }
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59

References e(), oomph::Mesh::element_pt(), ProblemParameters::flux(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Navier_stokes_outflow_mesh_pt, oomph::Mesh::nelement(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Prescribed_volume_flux_fct_pt, oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Using_flux_control_elements, and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Womersley_problem_pt.

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::get_response().

◆ womersley_problem_pt()

template<class ELEMENT , unsigned DIM>
WomersleyProblem<ELEMENT, DIM>* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::womersley_problem_pt ( )
inline

Access to underlying Womersley problem.

1303  {
1304  return Womersley_problem_pt;
1305  }

References oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Womersley_problem_pt.

Referenced by run_impedance_tube(), and run_navier_stokes_outflow().

Member Data Documentation

◆ Aux_integral_pt

template<class ELEMENT , unsigned DIM>
std::map<unsigned, double>* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Aux_integral_pt
protected

Pointer to auxiliary integral, containing the derivative of the total volume flux through the outflow boundary of the (higher-dimensional) Navier-Stokes mesh w.r.t. to the discrete (global) (velocity) degrees of freedom.

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::precompute_aux_integrals(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::WomersleyImpedanceTubeBase().

◆ Current_volume_flux_pt

template<class ELEMENT , unsigned DIM>
double* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Current_volume_flux_pt
protected

Pointer to double that specifies the currently imposed instantaneous volume flux into the impedance tube. This is used to communicate with the Womersley elements which require access to the flux via a pointer to a double.

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::get_response(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::WomersleyImpedanceTubeBase().

◆ Dp_in_dq

template<class ELEMENT , unsigned DIM>
double oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Dp_in_dq
protected

Derivative of inflow pressure w.r.t. instantaenous volume flux (Note: Can be pre-computed)

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::get_response(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup().

◆ Length

template<class ELEMENT , unsigned DIM>
double oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Length
protected

◆ Navier_stokes_outflow_mesh_pt

template<class ELEMENT , unsigned DIM>
Mesh* oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Navier_stokes_outflow_mesh_pt
protected

Pointer to the mesh of NavierStokesImpedanceTractionElements that are attached to the outflow cross-section of the higher-dimensional Navier Stokes mesh and provide the inflow into the Impedance tube.

Referenced by oomph::WomersleyOutflowImpedanceTube< ELEMENT, DIM >::build_mesh_and_apply_boundary_conditions(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::precompute_aux_integrals(), oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::setup(), and oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::total_volume_flux_into_impedance_tube().

◆ P_out

template<class ELEMENT , unsigned DIM>
double oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::P_out
protected

◆ Prescribed_volume_flux_fct_pt

template<class ELEMENT , unsigned DIM>
PrescribedVolumeFluxFctPt oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::Prescribed_volume_flux_fct_pt
protected

Pointer to function that specifies the prescribed volume flux.

Referenced by oomph::WomersleyImpedanceTubeBase< ELEMENT, DIM >::total_volume_flux_into_impedance_tube().

◆ Using_flux_control_elements

◆ Womersley_problem_pt


The documentation for this class was generated from the following file: