SurfaceTensionOperation< dim, number > Class Template Reference
|
Developer Documentation
|
This class enables to compute the contribution to interfacial forces due to temperature-(in)dependent surface tension. More...
#include <surface_tension_operation.hpp>
Public Types | |
| using | VectorType = dealii::LinearAlgebra::distributed::Vector< number > |
| using | BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number > |
Public Member Functions | |
| SurfaceTensionOperation (const SurfaceTensionData< number > &data_in, const ScratchData< dim, dim, number > &scratch_data, const VectorType &level_set_as_heaviside, const VectorType &solution_curvature, const unsigned int ls_dof_idx, const unsigned int curv_dof_idx, const unsigned int flow_vel_hanging_nodes_dof_idx, const unsigned int flow_pressure_hanging_nodes_dof_idx, const unsigned int flow_quad_idx) | |
| Constructor. | |
| void | register_temperature_and_normal_vector (const unsigned int temp_dof_idx, const unsigned int normal_dof_idx, const VectorType *temperature, const BlockVectorType *solution_normal_vector) |
Registers the DoF vectors of the temperature and normal vector (solution_normal_vector), which are required for temperature-dependent surface tension forces, i.e. Marangoni convection. | |
| void | register_solid_fraction (const unsigned int solid_dof_idx, const VectorType *solid) |
Registers the solid fraction, given by a DoF vector solid and a DoF index solid_dof_idx, which is required if surface tension should be zeroed out in the solid domain. | |
| void | compute_surface_tension (VectorType &force_rhs, const bool zero_out=true) |
Compute a DoF vector of the surface tension and add it into to force_rhs. | |
| number | compute_time_step_limit (const number density_1, const number density_2) |
| Compute the time step limit for explicit treatment of surface tension [*], as. | |
Private Member Functions | |
| template<typename number_surface_tension_coeff > | |
| number_surface_tension_coeff | local_compute_temperature_dependent_surface_tension_coefficient (const number_surface_tension_coeff &T) |
Compute the temperature-dependent surface tension coefficient for a given temperature T, according to. | |
Private Attributes | |
| const SurfaceTensionData< number > & | data |
| Parameters related to surface tension. | |
| const ScratchData< dim, dim, number > & | scratch_data |
| Container for mapping-, finite-element-, and quadrature-related objects. | |
| const VectorType & | level_set_as_heaviside |
| Level set vector of type heaviside. | |
| const VectorType & | solution_curvature |
| Vector for the curvature values of the solution. | |
| const unsigned int | ls_dof_idx |
| Index for the level set DoFHandler. | |
| const unsigned int | curv_dof_idx |
| Index for the curvature DoFHandler. | |
| const unsigned int | flow_vel_dof_idx |
| Index for the flow velocity DoFHandler. | |
| const unsigned int | flow_pressure_hanging_nodes_dof_idx |
| Index for the flow pressure hanging nodes DoFHandler. | |
| const unsigned int | flow_vel_quad_idx |
| Quadrature index for the flow velocity computation. | |
| const VectorType * | temperature = nullptr |
| Pointer to the temperature vector. | |
| const BlockVectorType * | solution_normal_vector = nullptr |
| Pointer to the normal vector block vector. | |
| const VectorType * | solid = nullptr |
| Pointer to the solid vector. | |
| unsigned int | temp_dof_idx |
| Index for the temperature DoFHandler. | |
| unsigned int | normal_dof_idx |
| Index for the normal vector DoFHandler. | |
| unsigned int | solid_dof_idx |
| Index for the solid DoFHandler. | |
| const bool | do_level_set_pressure_gradient_interpolation |
| Boolean indicator whether level-set pressure gradient interpolation should be done. | |
| dealii::FullMatrix< number > | ls_to_pressure_grad_interpolation_matrix |
| Matrix for the interpolation from level set to pressure gradient. | |
| std::unique_ptr< const LevelSet::DeltaApproximationBase< number > > | delta_phase_weighted |
| Pointer to the phase-weighted delta approximation object. | |
| const number | alpha_residual |
| Alpha residual. | |
Detailed Description
class MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >
This class enables to compute the contribution to interfacial forces due to temperature-(in)dependent surface tension.
/ \ / \
f_st = | N_a, α κ n δ | + | N_a, (I - n ⊗ n ) ∇α δ | \ Γ / \ Γ Γ / Ω Ω
with the curvature
κ = -( ∇ ∙ n )
the temperature-dependent surface tension coefficient
α = α_0 - α'_0 ( T - T ) α_0
and its gradient
∇α = -α'_0 ∇T .
- Note
- Since it might happen that α gets negative (which does not make sense) we compute a minimum value for the surface tension coefficient as
/ \
α = max | α_min, α_0 - α'_0 ( T - T ) | \ α_0 /
Member Typedef Documentation
◆ BlockVectorType
| using MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number> |
◆ VectorType
| using MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number> |
Constructor & Destructor Documentation
◆ SurfaceTensionOperation()
|
explicit |
Constructor.
- Parameters
-
data_in Surface tension data object for surface tension related parameters. scratch_data Scratch data object. level_set_as_heaviside Level set vector of type heaviside. solution_curvature Vector of the current solution curvature. ls_dof_idx Index for the level set DoFHandler. curv_dof_idx Index for the curvature DoFHandler flow_vel_hanging_nodes_dof_idx Index for the flow velocity hanging nodes DoFHandler. flow_pressure_hanging_nodes_dof_idx Index for the pressure hanging nodes DoFHandler. flow_quad_idx Flow quadrature index.
Member Function Documentation
◆ compute_surface_tension()
| void MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::compute_surface_tension | ( | VectorType & | force_rhs, |
| const bool | zero_out = true |
||
| ) |
Compute a DoF vector of the surface tension and add it into to force_rhs.
- Parameters
-
force_rhs Force right-hand side vector. zero_out Indicator whether force_rhsshould be zeroed out first.
◆ compute_time_step_limit()
| number MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::compute_time_step_limit | ( | const number | density_1, |
| const number | density_2 | ||
| ) |
Compute the time step limit for explicit treatment of surface tension [*], as.
__________________
/ (ρ1 + ρ2) * Δx^3
/ ------------------
Δt = k \/ 2 π α st st
with an arbitrary scale factor 0 <= k <= 1, the densities of the two fluids, ρ1 (density_1) st and ρ2 (density_2), the element size Δx (minimal edge length) and the surface tension coefficient α.
[*] J.U. Brackbill, D.B. Kothe, C. Zemach: A continuum method for modeling surface tension, J. Comput. Phys. 100 (2) (1992) 335–354.
- Parameters
-
density_1 Density value for the first fluid. density_2 Density value for the second fluid.
- Returns
- Time step limit.
- Note
- As a conservative assumption, we choose α as max (α (T)) in case of temperature-dependent surface tension.
◆ local_compute_temperature_dependent_surface_tension_coefficient()
|
private |
Compute the temperature-dependent surface tension coefficient for a given temperature T, according to.
α = α_0 - α'_0 ( T - T ). α_0
- Parameters
-
T Given temperature T.
- Returns
- Temperature-dependent surface tension coefficient.
- Note
- If α'_0 is positive, α decreases with increasing temperature.
◆ register_solid_fraction()
| void MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::register_solid_fraction | ( | const unsigned int | solid_dof_idx, |
| const VectorType * | solid | ||
| ) |
Registers the solid fraction, given by a DoF vector solid and a DoF index solid_dof_idx, which is required if surface tension should be zeroed out in the solid domain.
- Parameters
-
solid_dof_idx Index for the solid DoFHandler. solid Pointer to the solid vector.
◆ register_temperature_and_normal_vector()
| void MeltPoolDG::Flow::SurfaceTensionOperation< dim, number >::register_temperature_and_normal_vector | ( | const unsigned int | temp_dof_idx, |
| const unsigned int | normal_dof_idx, | ||
| const VectorType * | temperature, | ||
| const BlockVectorType * | solution_normal_vector | ||
| ) |
Registers the DoF vectors of the temperature and normal vector (solution_normal_vector), which are required for temperature-dependent surface tension forces, i.e. Marangoni convection.
- Parameters
-
temp_dof_idx Index for the temperature DoFHandler. normal_dof_idx Index for the normal vector DoFHandler. temperature Pointer to the temperature vector. solution_normal_vector Pointer to the solution normal vector block vector.
Member Data Documentation
◆ alpha_residual
|
private |
Alpha residual.
◆ curv_dof_idx
|
private |
Index for the curvature DoFHandler.
◆ data
|
private |
Parameters related to surface tension.
◆ delta_phase_weighted
|
private |
Pointer to the phase-weighted delta approximation object.
◆ do_level_set_pressure_gradient_interpolation
|
private |
Boolean indicator whether level-set pressure gradient interpolation should be done.
◆ flow_pressure_hanging_nodes_dof_idx
|
private |
Index for the flow pressure hanging nodes DoFHandler.
◆ flow_vel_dof_idx
|
private |
Index for the flow velocity DoFHandler.
◆ flow_vel_quad_idx
|
private |
Quadrature index for the flow velocity computation.
◆ level_set_as_heaviside
|
private |
Level set vector of type heaviside.
◆ ls_dof_idx
|
private |
Index for the level set DoFHandler.
◆ ls_to_pressure_grad_interpolation_matrix
|
private |
Matrix for the interpolation from level set to pressure gradient.
◆ normal_dof_idx
|
private |
Index for the normal vector DoFHandler.
◆ scratch_data
|
private |
Container for mapping-, finite-element-, and quadrature-related objects.
◆ solid
|
private |
Pointer to the solid vector.
◆ solid_dof_idx
|
private |
Index for the solid DoFHandler.
◆ solution_curvature
|
private |
Vector for the curvature values of the solution.
◆ solution_normal_vector
|
private |
Pointer to the normal vector block vector.
◆ temp_dof_idx
|
private |
Index for the temperature DoFHandler.
◆ temperature
|
private |
Pointer to the temperature vector.
The documentation for this class was generated from the following files:
- include/meltpooldg/flow/surface_tension_operation.hpp
- source/flow/surface_tension_operation.cpp
Generated by