template<typename
ShapeFunction, int GlobalDim>
class ProcessLib::WellboreSimulator::WellboreSimulatorFEM< ShapeFunction, GlobalDim >
Definition at line 31 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 |
| void | calculateResidual (double const alpha, double const vapor_water_density, double const liquid_water_density, double const v_mix, double const dryness, double const C_0, double const u_gu, ResidualVector &res) |
| void | calculateJacobian (double const alpha, double const vapor_water_density, double const liquid_water_density, double const v_mix, double const dryness, double const C_0, double const u_gu, JacobianMatrix &Jac) |
| 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 22 of file WellboreSimulatorFEM-impl.h.
26{
28
30
37
38
41
46
49
54
57
61
64
67
69
71
72
77
78
79
81
83
84
86
87
89
91
93
94
96 _process_data.reservoir_properties.temperature.getNodalValuesOnElement(
99 _process_data.reservoir_properties.pressure.getNodalValuesOnElement(
108
110 {
114 auto const&
w =
ip_data.integration_weight;
121
127
131
134
138
141
143
144
145
147
150
159
162 .property(
167 .property(
170
171
172
176
188
189
190
191
192
193
194
196
197
198
199
200
203 (1 - 0.625 * (1 -
T_int_pt / 647.096));
204
209 0.25) /
211
212
215 {
216
222
224
226 {
230 };
231
233 {
238 };
239
242 {
243
245 };
246
250
255
257
259 {
261 "Attention! Steam void fraction has not been correctly "
262 "calculated!");
263 }
264 }
265
267
269 {
274 }
275
278
281
283
292
295
299
300
301
302
303
309 2) *
311
316
317
318
319
320
321
323 if (
Re > 10 &&
Re <= 2400)
324 {
326 }
328 {
331 -2) /
332 16;
333 }
334
337
339 {
340
341
342
345
348 {
351 }
352 else
353 {
355 0.57722 /
357 }
358
361 }
362
363
367
368
369
373 {
375
376
384 }
385
386
388
389 Mhp.noalias() += -
w *
N.transpose() *
N;
391
392
394
395 Kvp.noalias() +=
w *
N.transpose() *
dNdx;
397
399
400
402
409
417
419 {
422
425 }
426 }
427
428
429
430
431
432
433
434}
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
static const int velocity_index
static const int pressure_index
void calculateJacobian(double const alpha, double const vapor_water_density, double const liquid_water_density, double const v_mix, double const dryness, double const C_0, double const u_gu, JacobianMatrix &Jac)
static const int enthalpy_index
void calculateResidual(double const alpha, double const vapor_water_density, double const liquid_water_density, double const v_mix, double const dryness, double const C_0, double const u_gu, ResidualVector &res)
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, calculateJacobian(), calculateResidual(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::density, MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::enthalpy, MaterialPropertyLib::VariableArray::enthalpy, enthalpy_index, MaterialPropertyLib::Gas, NumLib::interpolateCoordinates(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, ProcessLib::WellboreSimulator::NUM_NODAL_DOF, PI, pressure_index, MaterialPropertyLib::saturation_density, MaterialPropertyLib::saturation_enthalpy, ParameterLib::SpatialPosition::setElementID(), NumLib::detail::shapeFunctionInterpolate(), NumLib::NewtonRaphson< LinearSolver, JacobianMatrixUpdate, ResidualUpdate, SolutionUpdate >::solve(), MaterialPropertyLib::temperature, MaterialPropertyLib::VariableArray::temperature, velocity_index, MaterialPropertyLib::viscosity, and WARN().