LevelSetOperation< dim, number > Class Template Reference
|
Developer Documentation
|
#include <level_set_operation.hpp>
Public Member Functions | |
| LevelSetOperation (const ScratchData< dim, dim, number > &scratch_data_in, const TimeIntegration::TimeIterator< number > &time_stepping, const BoundaryConditionManager< dim, number > &bc_manager, const TimeIntegration::TimeSteppingData< number > &time_stepping_data, const LevelSetData< number > &ls, const VectorType &advection_velocity, const unsigned int ls_dof_idx_in, const unsigned int ls_hanging_nodes_dof_idx_in, const unsigned int ls_quad_idx_in, const unsigned int reinit_dof_idx_in, const unsigned int curv_dof_idx_in, const std::array< unsigned int, dim > normal_dof_indices_per_block_in, const unsigned int normal_no_bc_dof_idx_in, const unsigned int vel_dof_idx, const unsigned int ls_zero_bc_idx) | |
| void | setup_constraints (ScratchData< dim, dim, number > &mutable_scratch_data, const PeriodicBoundaryConditions< dim > &pbc, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &ls_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_x_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_y_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_z_dirichlet_bc_in) final |
| void | set_initial_condition (const dealii::Function< dim > &initial_field_function_level_set, const bool is_signed_distance_initial_field_function=false) override |
| void | set_inflow_outflow_bc (const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > inflow_outflow_bc) override |
| void | set_level_set_user_rhs (const VectorType &level_set_user_rhs) override |
| Sets the user-defined right-hand side (RHS) vector for the level set equation. | |
| void | set_wetting_boundary_condition_ids (std::vector< dealii::types::boundary_id > &&) final |
| Sets the boundary IDs where wetting boundary conditions should be applied. | |
| void | reinit () override |
| void | distribute_constraints () override |
| void | init_time_advance () override |
| void | solve (const bool do_finish_time_step=true) override |
| void | finish_time_advance () override |
| void | update_normal_vector () override |
| const dealii::LinearAlgebra::distributed::Vector< number > & | get_curvature () const override |
| dealii::LinearAlgebra::distributed::Vector< number > & | get_curvature () override |
| const dealii::LinearAlgebra::distributed::BlockVector< number > & | get_normal_vector () const override |
| dealii::LinearAlgebra::distributed::BlockVector< number > & | get_normal_vector () override |
| const dealii::LinearAlgebra::distributed::Vector< number > & | get_level_set () const override |
| dealii::LinearAlgebra::distributed::Vector< number > & | get_level_set () override |
| const dealii::LinearAlgebra::distributed::Vector< number > & | get_level_set_as_heaviside () const override |
| dealii::LinearAlgebra::distributed::Vector< number > & | get_level_set_as_heaviside () override |
| const dealii::LinearAlgebra::distributed::Vector< number > & | get_distance_to_level_set () const override |
| const SurfaceMeshInfo & | get_surface_mesh_info () const override |
| void | attach_vectors (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override |
| void | attach_output_vectors (GenericDataOut< dim, number > &data_out) const override |
| void | update_surface_mesh () override |
| void | transform_level_set_to_smooth_heaviside () override |
Public Member Functions inherited from MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number > | |
| virtual | ~LevelSetOperationBase ()=default |
Private Types | |
| using | VectorType = dealii::LinearAlgebra::distributed::Vector< number > |
| using | BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number > |
| using | SurfaceMeshInfo = std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > |
Private Member Functions | |
| void | do_reinitialization (const bool update_normal_vector_in_every_cycle=false) |
| number | approximate_distance_from_level_set (const number phi, const number eps, const number cutoff) |
| void | transform_distance_to_level_set () |
| void | correct_curvature_values () |
| void | set_level_set_parameters () |
Member Typedef Documentation
◆ BlockVectorType
|
private |
◆ SurfaceMeshInfo
|
private |
◆ VectorType
|
private |
Constructor & Destructor Documentation
◆ LevelSetOperation()
| MeltPoolDG::LevelSet::LevelSetOperation< dim, number >::LevelSetOperation | ( | const ScratchData< dim, dim, number > & | scratch_data_in, |
| const TimeIntegration::TimeIterator< number > & | time_stepping, | ||
| const BoundaryConditionManager< dim, number > & | bc_manager, | ||
| const TimeIntegration::TimeSteppingData< number > & | time_stepping_data, | ||
| const LevelSetData< number > & | ls, | ||
| const VectorType & | advection_velocity, | ||
| const unsigned int | ls_dof_idx_in, | ||
| const unsigned int | ls_hanging_nodes_dof_idx_in, | ||
| const unsigned int | ls_quad_idx_in, | ||
| const unsigned int | reinit_dof_idx_in, | ||
| const unsigned int | curv_dof_idx_in, | ||
| const std::array< unsigned int, dim > | normal_dof_indices_per_block_in, | ||
| const unsigned int | normal_no_bc_dof_idx_in, | ||
| const unsigned int | vel_dof_idx, | ||
| const unsigned int | ls_zero_bc_idx | ||
| ) |
Member Function Documentation
◆ approximate_distance_from_level_set()
|
inlineprivate |
◆ attach_output_vectors()
|
overridevirtual |
◆ attach_vectors()
|
overridevirtual |
register vectors for adaptive mesh refinement
Implements MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number >.
◆ correct_curvature_values()
|
private |
To avoid high-frequency errors in the curvature (spurious currents) the curvature is corrected to represent the value of the interface (zero level set). The approach by Zahedi et al. (2012) is pursued. Considering e.g. a bubble, the absolute curvature of areas outside of the bubble (Φ=-) must increase and vice-versa for areas inside the bubble.
◆ distribute_constraints()
|
overridevirtual |
◆ do_reinitialization()
|
private |
◆ finish_time_advance()
|
overridevirtual |
◆ get_curvature() [1/2]
|
overridevirtual |
◆ get_curvature() [2/2]
|
overridevirtual |
◆ get_distance_to_level_set()
|
overridevirtual |
◆ get_level_set() [1/2]
|
overridevirtual |
◆ get_level_set() [2/2]
|
overridevirtual |
◆ get_level_set_as_heaviside() [1/2]
|
overridevirtual |
◆ get_level_set_as_heaviside() [2/2]
|
overridevirtual |
◆ get_normal_vector() [1/2]
|
overridevirtual |
◆ get_normal_vector() [2/2]
|
overridevirtual |
◆ get_surface_mesh_info()
|
overridevirtual |
◆ init_time_advance()
|
overridevirtual |
◆ reinit()
|
overridevirtual |
◆ set_inflow_outflow_bc()
|
overridevirtual |
◆ set_initial_condition()
|
overridevirtual |
set initial condition
Implements MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number >.
◆ set_level_set_parameters()
|
private |
◆ set_level_set_user_rhs()
|
overridevirtual |
Sets the user-defined right-hand side (RHS) vector for the level set equation.
This function assigns the provided RHS vector to the internal advection-diffusion operation's user RHS. It is typically used when the level set equation includes a non-homogeneous source term that is specified externally.
- Parameters
-
[in] level_set_user_rhs A vector representing the user-defined RHS for the level set field.
Implements MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number >.
◆ set_wetting_boundary_condition_ids()
|
finalvirtual |
Sets the boundary IDs where wetting boundary conditions should be applied.
This function forwards the provided list of boundary IDs to the reinitialization operation, indicating which boundaries are subject to wetting conditions.
- Parameters
-
[in] wetting_bc_ids_in A list of boundary IDs where wetting conditions apply.
Reimplemented from MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number >.
◆ setup_constraints()
|
finalvirtual |
◆ solve()
|
overridevirtual |
◆ transform_distance_to_level_set()
|
private |
From the distance_to_level_set DoF vector, the level set DoF vector with values within [-1,1] is computed.
◆ transform_level_set_to_smooth_heaviside()
|
overridevirtual |
◆ update_normal_vector()
|
overridevirtual |
◆ update_surface_mesh()
|
overridevirtual |
Member Data Documentation
◆ advec_diff_operation
|
private |
◆ all_marked_vertices
|
private |
◆ curv_dof_idx
|
private |
◆ curvature_operation
|
private |
◆ distance_to_level_set
|
private |
◆ level_set_as_heaviside
|
private |
◆ level_set_data
|
private |
◆ ls_dof_idx
|
private |
◆ ls_hanging_nodes_dof_idx
|
private |
◆ ls_quad_idx
|
private |
◆ max_d_level_set_since_last_reinit
|
private |
◆ nearest_point_search
|
private |
◆ normal_dof_indices_per_block
|
private |
◆ normal_no_bc_dof_idx
|
private |
◆ ready_for_time_advance
|
private |
◆ reinit_dof_idx
|
private |
◆ reinit_operation
|
private |
◆ reinit_time_iterator
|
private |
◆ scratch_data
|
private |
◆ surface_mesh_info
|
private |
◆ time_stepping
|
private |
The documentation for this class was generated from the following files:
- include/meltpooldg/level_set/level_set_operation.hpp
- source/level_set/level_set_operation.cpp
Generated by
Public Member Functions inherited from