MeltPoolApplication< dim, number > Class Template Reference

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

#include <melt_pool_application.hpp>

Public Member Functions

 MeltPoolApplication (std::unique_ptr< CaseType > simulation_case)
 
void run ()
 

Private Types

using CaseType = MeltPoolCase< dim, number >
 
using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 

Private Member Functions

void initialize ()
 
void set_initial_conditions ()
 
void set_initial_condition_level_set ()
 
void set_initial_condition_heat_transfer ()
 
void set_initial_condition_flow ()
 
void set_initial_condition_evaporation ()
 
void setup_dof_system (const bool do_reinit=true)
 
void set_phase_dependent_parameters_flow (const MeltPoolCaseParameters< number > &parameters)
 
void compute_gravity_force (VectorType &vec, const number gravity, const bool zero_out=true) const
 
void compute_interface_velocity (const LevelSet::LevelSetData< number > &ls_data, const Evaporation::EvaporationData< number > &evapor_data)
 
void compute_interface_velocity_sharp (const LevelSet::LevelSetData< number > &ls_data, const Evaporation::EvaporationData< number > &evapor_data)
 
void output_results (const bool force_output=false, const OutputNotConvergedOperation output_not_converged_operation=OutputNotConvergedOperation::none)
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const
 
void finalize (const OutputNotConvergedOperation output_no_converged_operation=OutputNotConvergedOperation::none)
 
bool mark_cells_for_refinement (dealii::Triangulation< dim > &tria, const bool is_initial_solution)
 
void refine_mesh (const bool is_initial_solution=false)
 
void attach_vectors (DoFHandlerAndVectorDataType< dim, VectorType > &data)
 
void post ()
 
void save ()
 
void load ()
 

Private Attributes

const std::shared_ptr< CaseTypesimulation_case
 
std::shared_ptr< TimeIntegration::TimeIterator< number > > time_iterator
 
dealii::DoFHandler< dim > dof_handler_ls
 
std::unique_ptr< dealii::DoFHandler< dim > > dof_handler_heat
 
std::unique_ptr< dealii::DoFHandler< dim > > dof_handler_heat_cont
 
dealii::AffineConstraints< number > ls_constraints_dirichlet
 
dealii::AffineConstraints< number > ls_hanging_node_constraints
 
dealii::AffineConstraints< number > reinit_constraints_dirichlet
 
dealii::AffineConstraints< number > reinit_no_solid_constraints_dirichlet
 
dealii::AffineConstraints< number > normal_dirichlet_x_constraints
 
dealii::AffineConstraints< number > normal_dirichlet_y_constraints
 
dealii::AffineConstraints< number > normal_dirichlet_z_constraints
 
std::unique_ptr< dealii::AffineConstraints< number > > heat_dirichlet_constraints
 
std::unique_ptr< dealii::AffineConstraints< number > > heat_hanging_node_constraints
 
std::unique_ptr< dealii::AffineConstraints< number > > heat_continuous_hanging_node_constraints
 
dealii::AffineConstraints< number > flow_velocity_constraints_no_solid
 
VectorType vel_force_rhs
 
VectorType mass_balance_rhs
 
VectorType level_set_rhs
 
VectorType interface_velocity
 
unsigned int ls_dof_idx
 
unsigned int ls_hanging_nodes_dof_idx
 
unsigned int ls_quad_idx
 
unsigned int reinit_dof_idx
 
unsigned int reinit_no_solid_dof_idx
 
unsigned int heat_dof_idx = -1
 
unsigned int heat_no_bc_dof_idx = -1
 
unsigned int heat_continuous_no_bc_dof_idx = -1
 
unsigned int heat_quad_idx = -1
 
unsigned int vel_dof_idx
 
unsigned int pressure_dof_idx
 
unsigned int flow_vel_no_solid_dof_idx
 
const unsigned int & curv_dof_idx = ls_hanging_nodes_dof_idx
 
unsigned int normal_no_bc_dof_idx = -1
 
unsigned int normal_dirichlet_x_dof_idx = -1
 
unsigned int normal_dirichlet_y_dof_idx = -1
 
unsigned int normal_dirichlet_z_dof_idx = -1
 
const unsigned int & evapor_vel_dof_idx = vel_dof_idx
 
const unsigned int & evapor_mass_flux_dof_idx = heat_continuous_no_bc_dof_idx
 
std::shared_ptr< ScratchData< dim, dim, number > > scratch_data
 
std::shared_ptr< Material< number > > material
 
std::shared_ptr< Flow::IncompressibleFlowOperationBase< dim, number > > flow_operation
 
std::shared_ptr< LevelSet::LevelSetOperation< dim, number > > level_set_operation
 
std::shared_ptr< Heat::LaserOperation< dim, number > > laser_operation
 
std::shared_ptr< MeltFrontPropagation< dim, number > > melt_front_propagation
 
std::shared_ptr< Evaporation::EvaporationOperation< dim, number > > evaporation_operation = nullptr
 
std::shared_ptr< Evaporation::IncompressibleNewtonianFluidEvaporationMaterial< dim, number > > evaporation_fluid_material
 
std::shared_ptr< Heat::HeatOperationBase< dim, number > > heat_operation
 
std::shared_ptr< Flow::DarcyDampingOperation< dim, number > > darcy_operation
 
std::shared_ptr< Flow::SurfaceTensionOperation< dim, number > > surface_tension_operation
 
std::shared_ptr< Evaporation::RecoilPressureOperation< dim, number > > recoil_pressure_operation
 
std::shared_ptr< Postprocessor< dim, number > > post_processor
 
std::unique_ptr< Profiling::ProfilingMonitor< number > > profiling_monitor
 
std::shared_ptr< Restart::RestartMonitor< number > > restart_monitor
 
bool output_interface_velocity = false
 
bool compute_interface_temperature = false
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ CaseType

template<int dim, typename number >
using MeltPoolDG::MeltPoolApplication< dim, number >::CaseType = MeltPoolCase<dim, number>
private

◆ VectorType

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

Constructor & Destructor Documentation

◆ MeltPoolApplication()

template<int dim, typename number >
MeltPoolDG::MeltPoolApplication< dim, number >::MeltPoolApplication ( std::unique_ptr< CaseType simulation_case)
inline

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const
private

collect all relevant output data

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::attach_vectors ( DoFHandlerAndVectorDataType< dim, VectorType > &  data)
private

◆ compute_gravity_force()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::compute_gravity_force ( VectorType vec,
const number  gravity,
const bool  zero_out = true 
) const
private

Compute gravity force.

Todo:
Move to own class.

◆ compute_interface_velocity()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::compute_interface_velocity ( const LevelSet::LevelSetData< number > &  ls_data,
const Evaporation::EvaporationData< number > &  evapor_data 
)
private

◆ compute_interface_velocity_sharp()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::compute_interface_velocity_sharp ( const LevelSet::LevelSetData< number > &  ls_data,
const Evaporation::EvaporationData< number > &  evapor_data 
)
private

◆ finalize()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::finalize ( const OutputNotConvergedOperation  output_no_converged_operation = OutputNotConvergedOperation::none)
private

finalize simulation in the case that an operaion didn't converge

◆ initialize()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::initialize ( )
private

This function initials the relevant scratch data for the computation of the level set problem

◆ load()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::load ( )
private

◆ mark_cells_for_refinement()

template<int dim, typename number >
bool MeltPoolDG::MeltPoolApplication< dim, number >::mark_cells_for_refinement ( dealii::Triangulation< dim > &  tria,
const bool  is_initial_solution 
)
private

perform mesh refinement

◆ output_results()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::output_results ( const bool  force_output = false,
const OutputNotConvergedOperation  output_not_converged_operation = OutputNotConvergedOperation::none 
)
private

perform output of results

◆ post()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::post ( )
private

◆ refine_mesh()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::refine_mesh ( const bool  is_initial_solution = false)
private

◆ run()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::run ( )

◆ save()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::save ( )
private

restart

◆ set_initial_condition_evaporation()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_initial_condition_evaporation ( )
private

◆ set_initial_condition_flow()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_initial_condition_flow ( )
private

◆ set_initial_condition_heat_transfer()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_initial_condition_heat_transfer ( )
private

◆ set_initial_condition_level_set()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_initial_condition_level_set ( )
private

◆ set_initial_conditions()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_initial_conditions ( )
private

◆ set_phase_dependent_parameters_flow()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::set_phase_dependent_parameters_flow ( const MeltPoolCaseParameters< number > &  parameters)
private

Update material parameter of the phases.

◆ setup_dof_system()

template<int dim, typename number >
void MeltPoolDG::MeltPoolApplication< dim, number >::setup_dof_system ( const bool  do_reinit = true)
private

Member Data Documentation

◆ compute_interface_temperature

template<int dim, typename number >
bool MeltPoolDG::MeltPoolApplication< dim, number >::compute_interface_temperature = false
private

◆ curv_dof_idx

template<int dim, typename number >
const unsigned int& MeltPoolDG::MeltPoolApplication< dim, number >::curv_dof_idx = ls_hanging_nodes_dof_idx
private

◆ darcy_operation

template<int dim, typename number >
std::shared_ptr<Flow::DarcyDampingOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::darcy_operation
private

◆ dof_handler_heat

template<int dim, typename number >
std::unique_ptr<dealii::DoFHandler<dim> > MeltPoolDG::MeltPoolApplication< dim, number >::dof_handler_heat
private

◆ dof_handler_heat_cont

template<int dim, typename number >
std::unique_ptr<dealii::DoFHandler<dim> > MeltPoolDG::MeltPoolApplication< dim, number >::dof_handler_heat_cont
private

◆ dof_handler_ls

template<int dim, typename number >
dealii::DoFHandler<dim> MeltPoolDG::MeltPoolApplication< dim, number >::dof_handler_ls
private

◆ evapor_mass_flux_dof_idx

template<int dim, typename number >
const unsigned int& MeltPoolDG::MeltPoolApplication< dim, number >::evapor_mass_flux_dof_idx = heat_continuous_no_bc_dof_idx
private

◆ evapor_vel_dof_idx

template<int dim, typename number >
const unsigned int& MeltPoolDG::MeltPoolApplication< dim, number >::evapor_vel_dof_idx = vel_dof_idx
private

◆ evaporation_fluid_material

template<int dim, typename number >
std::shared_ptr<Evaporation::IncompressibleNewtonianFluidEvaporationMaterial<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::evaporation_fluid_material
private

◆ evaporation_operation

template<int dim, typename number >
std::shared_ptr<Evaporation::EvaporationOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::evaporation_operation = nullptr
private

◆ flow_operation

template<int dim, typename number >
std::shared_ptr<Flow::IncompressibleFlowOperationBase<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::flow_operation
private

◆ flow_vel_no_solid_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::flow_vel_no_solid_dof_idx
private

◆ flow_velocity_constraints_no_solid

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::flow_velocity_constraints_no_solid
private

◆ heat_continuous_hanging_node_constraints

template<int dim, typename number >
std::unique_ptr<dealii::AffineConstraints<number> > MeltPoolDG::MeltPoolApplication< dim, number >::heat_continuous_hanging_node_constraints
private

◆ heat_continuous_no_bc_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::heat_continuous_no_bc_dof_idx = -1
private

◆ heat_dirichlet_constraints

template<int dim, typename number >
std::unique_ptr<dealii::AffineConstraints<number> > MeltPoolDG::MeltPoolApplication< dim, number >::heat_dirichlet_constraints
private

◆ heat_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::heat_dof_idx = -1
private

◆ heat_hanging_node_constraints

template<int dim, typename number >
std::unique_ptr<dealii::AffineConstraints<number> > MeltPoolDG::MeltPoolApplication< dim, number >::heat_hanging_node_constraints
private

◆ heat_no_bc_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::heat_no_bc_dof_idx = -1
private

◆ heat_operation

template<int dim, typename number >
std::shared_ptr<Heat::HeatOperationBase<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::heat_operation
private

◆ heat_quad_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::heat_quad_idx = -1
private

◆ interface_velocity

template<int dim, typename number >
VectorType MeltPoolDG::MeltPoolApplication< dim, number >::interface_velocity
private

◆ laser_operation

template<int dim, typename number >
std::shared_ptr<Heat::LaserOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::laser_operation
private

◆ level_set_operation

template<int dim, typename number >
std::shared_ptr<LevelSet::LevelSetOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::level_set_operation
private

◆ level_set_rhs

template<int dim, typename number >
VectorType MeltPoolDG::MeltPoolApplication< dim, number >::level_set_rhs
private

◆ ls_constraints_dirichlet

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::ls_constraints_dirichlet
private

◆ ls_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::ls_dof_idx
private

◆ ls_hanging_node_constraints

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::ls_hanging_node_constraints
private

◆ ls_hanging_nodes_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::ls_hanging_nodes_dof_idx
private

◆ ls_quad_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::ls_quad_idx
private

◆ mass_balance_rhs

template<int dim, typename number >
VectorType MeltPoolDG::MeltPoolApplication< dim, number >::mass_balance_rhs
private

◆ material

template<int dim, typename number >
std::shared_ptr<Material<number> > MeltPoolDG::MeltPoolApplication< dim, number >::material
private

◆ melt_front_propagation

template<int dim, typename number >
std::shared_ptr<MeltFrontPropagation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::melt_front_propagation
private

◆ normal_dirichlet_x_constraints

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_x_constraints
private

◆ normal_dirichlet_x_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_x_dof_idx = -1
private

◆ normal_dirichlet_y_constraints

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_y_constraints
private

◆ normal_dirichlet_y_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_y_dof_idx = -1
private

◆ normal_dirichlet_z_constraints

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_z_constraints
private

◆ normal_dirichlet_z_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::normal_dirichlet_z_dof_idx = -1
private

◆ normal_no_bc_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::normal_no_bc_dof_idx = -1
private

◆ output_interface_velocity

template<int dim, typename number >
bool MeltPoolDG::MeltPoolApplication< dim, number >::output_interface_velocity = false
private

◆ post_processor

template<int dim, typename number >
std::shared_ptr<Postprocessor<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::post_processor
private

◆ pressure_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::pressure_dof_idx
private

◆ profiling_monitor

template<int dim, typename number >
std::unique_ptr<Profiling::ProfilingMonitor<number> > MeltPoolDG::MeltPoolApplication< dim, number >::profiling_monitor
private

◆ recoil_pressure_operation

template<int dim, typename number >
std::shared_ptr<Evaporation::RecoilPressureOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::recoil_pressure_operation
private

◆ reinit_constraints_dirichlet

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::reinit_constraints_dirichlet
private

◆ reinit_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::reinit_dof_idx
private

◆ reinit_no_solid_constraints_dirichlet

template<int dim, typename number >
dealii::AffineConstraints<number> MeltPoolDG::MeltPoolApplication< dim, number >::reinit_no_solid_constraints_dirichlet
private

◆ reinit_no_solid_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::reinit_no_solid_dof_idx
private

◆ restart_monitor

template<int dim, typename number >
std::shared_ptr<Restart::RestartMonitor<number> > MeltPoolDG::MeltPoolApplication< dim, number >::restart_monitor
private

◆ scratch_data

template<int dim, typename number >
std::shared_ptr<ScratchData<dim, dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::scratch_data
private

◆ simulation_case

template<int dim, typename number >
const std::shared_ptr<CaseType> MeltPoolDG::MeltPoolApplication< dim, number >::simulation_case
private

◆ surface_tension_operation

template<int dim, typename number >
std::shared_ptr<Flow::SurfaceTensionOperation<dim, number> > MeltPoolDG::MeltPoolApplication< dim, number >::surface_tension_operation
private

◆ time_iterator

template<int dim, typename number >
std::shared_ptr<TimeIntegration::TimeIterator<number> > MeltPoolDG::MeltPoolApplication< dim, number >::time_iterator
private

◆ vel_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::MeltPoolApplication< dim, number >::vel_dof_idx
private

◆ vel_force_rhs

template<int dim, typename number >
VectorType MeltPoolDG::MeltPoolApplication< dim, number >::vel_force_rhs
private

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