template<typename
ShapeFunction, int GlobalDim>
class ProcessLib::WellboreSimulator::WellboreSimulatorFEM< ShapeFunction, GlobalDim >
Definition at line 30 of file WellboreSimulatorFEM.h.
|
| | WellboreSimulatorFEM (MeshLib::Element const &element, std::size_t const, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, WellboreSimulatorProcessData const &process_data) |
| void | assemble (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data) override |
| Eigen::Map< const Eigen::RowVectorXd > | getShapeMatrix (const unsigned integration_point) const override |
| | Provides the shape matrix at the given integration point.
|
| void | computeSecondaryVariableConcrete (double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &) override |
| void | postTimestepConcrete (Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const) override |
| | WellboreSimulatorLocalAssemblerInterface ()=default |
| virtual | ~LocalAssemblerInterface ()=default |
| virtual void | setInitialConditions (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, int const process_id) |
| virtual void | initialize (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table) |
| virtual void | preAssemble (double const, double const, std::vector< double > const &) |
| virtual void | assembleForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data) |
| virtual void | assembleWithJacobian (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) |
| virtual void | assembleWithJacobianForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) |
| virtual void | computeSecondaryVariable (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_prev, int const process_id) |
| virtual void | preTimestep (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, double const delta_t) |
| virtual void | postTimestep (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id) |
| void | postNonLinearSolver (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id) |
| virtual Eigen::Vector3d | getFlux (MathLib::Point3d const &, double const, std::vector< double > const &) const |
| virtual Eigen::Vector3d | getFlux (MathLib::Point3d const &, double const, std::vector< std::vector< double > > const &) const |
| | Fits to staggered scheme.
|
| virtual int | getNumberOfVectorElementsForDeformation () const |
|
| virtual std::vector< double > const & | getIntPtVaporMassFlowRate (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override |
| virtual std::vector< double > const & | getIntPtLiquidMassFlowRate (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override |
| virtual std::vector< double > const & | getIntPtTemperature (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override |
| virtual std::vector< double > const & | getIntPtDryness (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override |
| virtual std::vector< double > const & | getIntPtVaporVolumeFraction (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override |
| void ProcessLib::WellboreSimulator::WellboreSimulatorFEM< ShapeFunction, GlobalDim >::assemble |
( |
double const | t, |
|
|
double const | dt, |
|
|
std::vector< double > const & | local_x, |
|
|
std::vector< double > const & | local_x_prev, |
|
|
std::vector< double > & | local_M_data, |
|
|
std::vector< double > & | local_K_data, |
|
|
std::vector< double > & | local_b_data ) |
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 31 of file WellboreSimulatorFEM-impl.h.
35{
37
39
46
47
50
55
58
63
66
70
73
76
78
80
81
86
87
88
90
92
93
95
96
98
100
102
103
105 _process_data.reservoir_properties.temperature.getNodalValuesOnElement(
108 _process_data.reservoir_properties.pressure.getNodalValuesOnElement(
117
119 {
123 auto const&
w =
ip_data.integration_weight;
130
136
140
143
147
150
152
153
154
156
159
160
161
162
163
164
165
166
167
168
169
176
179 {
185
188 "the compressed liquid state of the WellboreSimulator "
189 "process");
190
195 }
196 else
197 {
200 .property(
205 .property(
208
211 .property(
216 .property(
219
222
234
235
236
237
238
239
240
241
242
246
247
251
253 {
255 "The drift-flux closure of the WellboreSimulator process "
256 "has no admissible vapour void fraction in element {:d}, "
257 "integration point {:d}: pressure {:g} Pa, mixture "
258 "velocity {:g} m/s, specific enthalpy {:g} J/kg, "
259 "temperature {:g} K, {}",
264 }
265
267
269 {
274 }
275 }
276
280
283
286
288
298
301
305
309 : 0.;
310
315
316
317
318
319
320
322 if (
Re > 10 &&
Re <= 2400)
323 {
325 }
327 {
330 -2) /
331 16;
332 }
333
336
338 {
339
340
341
344
347 {
350 }
351 else
352 {
354 0.57722 /
356 }
357
360 }
361
362
366
367
368
372 {
374
375
383 }
384
385
387
388 Mhp.noalias() += -
w *
N.transpose() *
N;
390
391
393
394 Kvp.noalias() +=
w *
N.transpose() *
dNdx;
396
398
399
401
408
416
418 {
421
424 }
425 }
426
427
428
429
430
431
432
433}
static const int velocity_index
static const int pressure_index
static const int enthalpy_index
void checkStateInRange(double const pressure, double const temperature, std::string_view const quantity)
double mixtureSlipParameter(double const alpha, DriftFluxState const &state)
std::optional< double > computeVapourVoidFraction(DriftFluxState const &state)
double steamDryness(double const enthalpy, double const h_sat_liquid, double const h_sat_vapour)
DriftFluxState driftFluxState(double const dryness, double const temperature, double const vapour_water_density, double const liquid_water_density, double const v_mix)
Eigen::Map< Vector > createZeroedVector(std::vector< double > &data, Eigen::VectorXd::Index size)
Eigen::Map< Matrix > createZeroedMatrix(std::vector< double > &data, Eigen::MatrixXd::Index rows, Eigen::MatrixXd::Index cols)
void shapeFunctionInterpolate(const NodalValues &, const ShapeMatrix &)
References _element, _element_direction, _integration_method, _ip_data, _process_data, MaterialPropertyLib::AqueousLiquid, MaterialPropertyLib::IAPWSIF97Region1::checkStateInRange(), MaterialPropertyLib::computeVapourVoidFraction(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::density, MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::driftFluxState(), MaterialPropertyLib::enthalpy, MaterialPropertyLib::VariableArray::enthalpy, enthalpy_index, MaterialPropertyLib::Gas, NumLib::interpolateCoordinates(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::mixtureSlipParameter(), ProcessLib::WellboreSimulator::NUM_NODAL_DOF, PI, pressure_index, MaterialLib::PhysicalConstant::CriticalPoint::PressureWater, MaterialPropertyLib::saturation_density, MaterialPropertyLib::saturation_enthalpy, ParameterLib::SpatialPosition::setElementID(), NumLib::detail::shapeFunctionInterpolate(), MaterialPropertyLib::steamDryness(), MaterialPropertyLib::temperature, MaterialPropertyLib::VariableArray::temperature, velocity_index, MaterialPropertyLib::viscosity, and MaterialPropertyLib::voidFractionClosureDiagnostics().