LevelSetDGOperation< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number > Class Template Reference

#include <level_set_DG_operation.hpp>

Inheritance diagram for MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >:
[legend]
Collaboration diagram for MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >:
[legend]

Public Member Functions

 LevelSetDGOperation (const ScratchData< dim, dim, number > &scratch_data_in, const TimeIntegration::TimeIterator< number > &time_stepping, const LevelSetData< number > &ls_data, const std::shared_ptr< BoundaryConditionManager< dim, number > > &boundary_conditions_in, const std::shared_ptr< dealii::Function< dim, number > > &prescribed_velocity_function, VectorType &advection_velocity, const unsigned int ls_dof_idx_in, const unsigned int ls_quad_idx_in, const unsigned int reinit_dof_idx_in, const unsigned int vel_dof_idx)
 
void set_initial_condition (const dealii::Function< dim > &initial_field_function_level_set, const bool is_signed_distance_initial_field_function=false) override
 
void setup_constraints (ScratchData< dim, dim, number > &, const PeriodicBoundaryConditions< dim > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &) final
 
void set_inflow_outflow_bc (const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > inflow_outflow_bc) override
 
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 set_level_set_user_rhs (const VectorType &level_set_user_rhs) 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 SurfaceMeshInfoget_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
 
virtual void set_wetting_boundary_condition_ids (std::vector< dealii::types::boundary_id > &&)
 

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 compute_level_set_gradient_error (const VectorType &solution)
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const TimeIntegration::TimeIterator< number > & time_stepping
 
std::shared_ptr< AdvectionDGOperation< dim, number > > advec_operation
 
std::shared_ptr< ReinitializationHyperbolicDGOperation< dim, number > > reinit_operation
 
std::shared_ptr< AdvectionDGOperation< dim, number > > advec_smoothed_signum_operation
 
std::shared_ptr< NormalVectorOperationBase< dim, number > > normal_vector_operation
 
std::shared_ptr< CurvatureDGOperation< dim, number > > curvature_operation
 
const LevelSetData< number > & level_set_data
 
const unsigned int ls_dof_idx
 
const unsigned int ls_quad_idx
 
const unsigned int reinit_dof_idx
 
TimeIntegration::TimeIterator< number > reinit_time_iterator
 
bool ready_for_time_advance = false
 
VectorType level_set_as_heaviside
 
number max_d_level_set_since_last_reinit = std::numeric_limits<number>::max()
 
SurfaceMeshInfo surface_mesh_info
 
int iter = 0
 
std::shared_ptr< dealii::Function< dim, number > > prescribed_velocity_function
 

Member Typedef Documentation

◆ BlockVectorType

template<int dim, typename number >
using MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>
private

◆ SurfaceMeshInfo

template<int dim, typename number >
using MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::SurfaceMeshInfo = std::vector<std::tuple<const typename dealii::Triangulation<dim, dim>::cell_iterator , std::vector<dealii::Point<dim> > , std::vector<number> > >
private

◆ VectorType

template<int dim, typename number >
using MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>
private

Constructor & Destructor Documentation

◆ LevelSetDGOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::LevelSetDGOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const TimeIntegration::TimeIterator< number > &  time_stepping,
const LevelSetData< number > &  ls_data,
const std::shared_ptr< BoundaryConditionManager< dim, number > > &  boundary_conditions_in,
const std::shared_ptr< dealii::Function< dim, number > > &  prescribed_velocity_function,
VectorType advection_velocity,
const unsigned int  ls_dof_idx_in,
const unsigned int  ls_quad_idx_in,
const unsigned int  reinit_dof_idx_in,
const unsigned int  vel_dof_idx 
)

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const
overridevirtual

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::attach_vectors ( std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &  vectors)
overridevirtual

register vectors for adaptive mesh refinement

Is not really needed, but gives better convergence for the solvers of the normal and the curvature, since initial guess is closer to actual solution

Implements MeltPoolDG::LevelSet::LevelSetOperationBase< dim, number >.

◆ compute_level_set_gradient_error()

template<int dim, typename number >
number MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::compute_level_set_gradient_error ( const VectorType solution)
private

◆ distribute_constraints()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::distribute_constraints ( )
inlineoverridevirtual

◆ do_reinitialization()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::do_reinitialization ( const bool  update_normal_vector_in_every_cycle = false)
private

◆ finish_time_advance()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::finish_time_advance ( )
overridevirtual

◆ get_curvature() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_curvature ( ) const
overridevirtual

◆ get_curvature() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_curvature ( )
overridevirtual

◆ get_distance_to_level_set()

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_distance_to_level_set ( ) const
overridevirtual

◆ get_level_set() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_level_set ( ) const
overridevirtual

◆ get_level_set() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_level_set ( )
overridevirtual

◆ get_level_set_as_heaviside() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_level_set_as_heaviside ( ) const
overridevirtual

◆ get_level_set_as_heaviside() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_level_set_as_heaviside ( )
overridevirtual

◆ get_normal_vector() [1/2]

template<int dim, typename number >
const LinearAlgebra::distributed::BlockVector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_normal_vector ( ) const
overridevirtual

◆ get_normal_vector() [2/2]

template<int dim, typename number >
LinearAlgebra::distributed::BlockVector< number > & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_normal_vector ( )
overridevirtual

◆ get_surface_mesh_info()

template<int dim, typename number >
const LevelSetDGOperation< dim, number >::SurfaceMeshInfo & MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::get_surface_mesh_info ( ) const
overridevirtual

◆ init_time_advance()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::init_time_advance ( )
overridevirtual

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::reinit ( )
overridevirtual

◆ set_inflow_outflow_bc()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::set_inflow_outflow_bc ( const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > >  inflow_outflow_bc)
inlineoverridevirtual

◆ set_initial_condition()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::set_initial_condition ( const dealii::Function< dim > &  initial_field_function_level_set,
const bool  is_signed_distance_initial_field_function = false 
)
overridevirtual

◆ set_level_set_user_rhs()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::set_level_set_user_rhs ( const VectorType level_set_user_rhs)
inlineoverridevirtual

◆ setup_constraints()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::setup_constraints ( ScratchData< dim, dim, number > &  ,
const PeriodicBoundaryConditions< dim > &  ,
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &  ,
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &  ,
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &  ,
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &   
)
inlinefinalvirtual

◆ solve()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::solve ( const bool  do_finish_time_step = true)
overridevirtual

◆ transform_level_set_to_smooth_heaviside()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::transform_level_set_to_smooth_heaviside ( )
overridevirtual

◆ update_normal_vector()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::update_normal_vector ( )
inlineoverridevirtual

◆ update_surface_mesh()

template<int dim, typename number >
void MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::update_surface_mesh ( )
overridevirtual

Member Data Documentation

◆ advec_operation

template<int dim, typename number >
std::shared_ptr<AdvectionDGOperation<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::advec_operation
private

◆ advec_smoothed_signum_operation

template<int dim, typename number >
std::shared_ptr<AdvectionDGOperation<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::advec_smoothed_signum_operation
private

◆ curvature_operation

template<int dim, typename number >
std::shared_ptr<CurvatureDGOperation<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::curvature_operation
private

◆ iter

template<int dim, typename number >
int MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::iter = 0
private

◆ level_set_as_heaviside

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::level_set_as_heaviside
private

◆ level_set_data

template<int dim, typename number >
const LevelSetData<number>& MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::level_set_data
private

◆ ls_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::ls_dof_idx
private

◆ ls_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::ls_quad_idx
private

◆ max_d_level_set_since_last_reinit

template<int dim, typename number >
number MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::max_d_level_set_since_last_reinit = std::numeric_limits<number>::max()
private

◆ normal_vector_operation

template<int dim, typename number >
std::shared_ptr<NormalVectorOperationBase<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::normal_vector_operation
private

◆ prescribed_velocity_function

template<int dim, typename number >
std::shared_ptr<dealii::Function<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::prescribed_velocity_function
private

◆ ready_for_time_advance

template<int dim, typename number >
bool MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::ready_for_time_advance = false
private

◆ reinit_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::reinit_dof_idx
private

◆ reinit_operation

template<int dim, typename number >
std::shared_ptr<ReinitializationHyperbolicDGOperation<dim, number> > MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::reinit_operation
private

◆ reinit_time_iterator

template<int dim, typename number >
TimeIntegration::TimeIterator<number> MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::reinit_time_iterator
private

◆ scratch_data

template<int dim, typename number >
const ScratchData<dim, dim, number>& MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::scratch_data
private

◆ surface_mesh_info

template<int dim, typename number >
SurfaceMeshInfo MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::surface_mesh_info
private

◆ time_stepping

template<int dim, typename number >
const TimeIntegration::TimeIterator<number>& MeltPoolDG::LevelSet::LevelSetDGOperation< dim, number >::time_stepping
private

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