HeatCutOperation< dim, number > Class Template Reference

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

#include <heat_cut_operation.hpp>

Inheritance diagram for MeltPoolDG::Heat::HeatCutOperation< dim, number >:
[legend]
Collaboration diagram for MeltPoolDG::Heat::HeatCutOperation< dim, number >:
[legend]

Public Member Functions

 HeatCutOperation (const ScratchData< dim, dim, number > &scratch_data_in, const std::shared_ptr< const BoundaryConditionManager< dim, number > > heat_bc_manager, const PeriodicBoundaryConditions< dim > &periodic_bc_in, const HeatData< number > &heat_data_in, const MaterialData< number > &material_data_in, const Evaporation::EvaporationData< number > &evapor_data_in, const TimeIntegration::TimeIterator< number > &time_iterator_in, const unsigned int heat_cut_dof_idx_in, const unsigned int heat_cut_no_bc_dof_idx_in, const unsigned int heat_continuous_no_bc_dof_idx_in, const unsigned int heat_quad_idx_in, const bool do_solidification_in, const unsigned int ls_dof_idx_in, const VectorType &level_set_in, const unsigned int vel_dof_idx_in=-1, const VectorType *velocity_in=nullptr, const VectorType *velocity_old_in=nullptr)
 
void register_laser_intensity_function_and_direction (std::shared_ptr< const dealii::Function< dim, number > > laser_intensity_profile_in, const dealii::Tensor< 1, dim, number > &laser_direction_in)
 
void register_lambdas_for_solution_transfer (const std::function< void()> &setup_dof_system_in, const AttachDoFHandlerAndVectorsType< dim, VectorType > attach_vectors_in={})
 
void distribute_dofs (ScratchData< dim, dim, number > &mutable_scratch_data) const override
 
void setup_constraints (ScratchData< dim, dim, number > &mutable_scratch_data) const override
 
void reinit () override
 
void set_initial_condition (const dealii::Function< dim > &initial_temperature) override
 
void distribute_constraints () override
 
void init_time_advance () override
 
void solve () override
 
number compute_L2_norm () const
 
void register_interface_projection_data (const VectorType &distance, const BlockVectorType &normal_vector, const LevelSet::NearestPointData< double > &nearest_point_data) override
 
void compute_interface_temperature () override
 
void attach_vectors (std::vector< VectorType * > &vectors) override
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const override
 
void attach_output_vectors_failed_step (GenericDataOut< dim, number > &data_out) const override
 
const VectorTypeget_temperature () const override
 
VectorTypeget_temperature () override
 
const VectorTypeget_interface_temperature () const override
 
VectorTypeget_interface_temperature () override
 
const VectorTypeget_heat_source () const override
 
VectorTypeget_heat_source () override
 
- Public Member Functions inherited from MeltPoolDG::Heat::HeatOperationBase< dim, number >
virtual ~HeatOperationBase ()=default
 

Private Types

using VectorType = typename HeatOperationBase< dim, number >::VectorType
 
using BlockVectorType = typename HeatOperationBase< dim, number >::BlockVectorType
 

Private Member Functions

void classify_cells () const
 
void compute_intersected_quadrature ()
 
void adapt_to_new_interface_position ()
 
void setup_newton ()
 
void update_ghost_values () const
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > dirichlet_bc
 
const PeriodicBoundaryConditions< dim > & periodic_bc
 
const HeatData< number > & heat_data
 
const TimeIntegration::TimeIterator< number > & time_iterator
 
const unsigned int heat_cut_dof_idx
 
const unsigned int heat_cut_no_bc_dof_idx
 
const unsigned int heat_cont_no_bc_dof_idx
 
const unsigned int heat_quad_idx
 
TimeIntegration::SolutionHistory< VectorTypesolution_history
 
VectorType interface_temperature
 
VectorType volumetric_heat_source
 
const unsigned int ls_dof_idx
 
const VectorTypelevel_set
 
VectorType mc_level_set
 
std::shared_ptr< dealii::NonMatching::MeshClassifier< dim > > mesh_classifier
 
std::shared_ptr< dealii::NonMatching::MeshClassifier< dim > > mesh_classifier_old
 
CutUtil::SolutionTransferOperator< dim, number > cut_solution_transfer
 
std::function< void(VectorType &)> reinit_vector
 
std::function< void()> setup_dof_system
 
AttachDoFHandlerAndVectorsType< dim, VectorTypeattach_all_vectors
 
dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > mapping_info_surface
 
std::vector< std::shared_ptr< dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > > > mapping_info_cells
 
NewtonRaphsonSolver< number, VectorTypenewton
 
std::unique_ptr< HeatCutOperator< dim, number > > heat_operator
 
Preconditioner< dim, VectorType, number > preconditioner
 
std::unique_ptr< LevelSet::Tools::NearestPoint< dim, double > > nearest_point_search
 
bool ready_for_time_advance = false
 
bool ready_to_generate_intersected_quadrature = true
 
bool skip_classify_cells = false
 

Additional Inherited Members

- Public Types inherited from MeltPoolDG::Heat::HeatOperationBase< dim, number >
using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 

Member Typedef Documentation

◆ BlockVectorType

template<int dim, typename number >
using MeltPoolDG::Heat::HeatCutOperation< dim, number >::BlockVectorType = typename HeatOperationBase<dim, number>::BlockVectorType
private

◆ VectorType

template<int dim, typename number >
using MeltPoolDG::Heat::HeatCutOperation< dim, number >::VectorType = typename HeatOperationBase<dim, number>::VectorType
private

Constructor & Destructor Documentation

◆ HeatCutOperation()

template<int dim, typename number >
MeltPoolDG::Heat::HeatCutOperation< dim, number >::HeatCutOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const std::shared_ptr< const BoundaryConditionManager< dim, number > >  heat_bc_manager,
const PeriodicBoundaryConditions< dim > &  periodic_bc_in,
const HeatData< number > &  heat_data_in,
const MaterialData< number > &  material_data_in,
const Evaporation::EvaporationData< number > &  evapor_data_in,
const TimeIntegration::TimeIterator< number > &  time_iterator_in,
const unsigned int  heat_cut_dof_idx_in,
const unsigned int  heat_cut_no_bc_dof_idx_in,
const unsigned int  heat_continuous_no_bc_dof_idx_in,
const unsigned int  heat_quad_idx_in,
const bool  do_solidification_in,
const unsigned int  ls_dof_idx_in,
const VectorType level_set_in,
const unsigned int  vel_dof_idx_in = -1,
const VectorType velocity_in = nullptr,
const VectorType velocity_old_in = nullptr 
)

Member Function Documentation

◆ adapt_to_new_interface_position()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::adapt_to_new_interface_position ( )
private

◆ attach_output_vectors()

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

attach vectors for output

Implements MeltPoolDG::Heat::HeatOperationBase< dim, number >.

◆ attach_output_vectors_failed_step()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::attach_output_vectors_failed_step ( GenericDataOut< dim, number > &  data_out) const
overridevirtual

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::attach_vectors ( std::vector< VectorType * > &  vectors)
overridevirtual

register vectors for adaptive mesh refinement solution transfer

Implements MeltPoolDG::Heat::HeatOperationBase< dim, number >.

◆ classify_cells()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::classify_cells ( ) const
private

◆ compute_interface_temperature()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::compute_interface_temperature ( )
overridevirtual

◆ compute_intersected_quadrature()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::compute_intersected_quadrature ( )
private

◆ compute_L2_norm()

template<int dim, typename number >
number MeltPoolDG::Heat::HeatCutOperation< dim, number >::compute_L2_norm ( ) const

◆ distribute_constraints()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::distribute_constraints ( )
overridevirtual

◆ distribute_dofs()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::distribute_dofs ( ScratchData< dim, dim, number > &  mutable_scratch_data) const
overridevirtual

◆ get_heat_source() [1/2]

template<int dim, typename number >
const HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_heat_source ( ) const
overridevirtual

◆ get_heat_source() [2/2]

template<int dim, typename number >
HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_heat_source ( )
overridevirtual

◆ get_interface_temperature() [1/2]

template<int dim, typename number >
const HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_interface_temperature ( ) const
overridevirtual

◆ get_interface_temperature() [2/2]

template<int dim, typename number >
HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_interface_temperature ( )
overridevirtual

◆ get_temperature() [1/2]

template<int dim, typename number >
const HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_temperature ( ) const
overridevirtual

◆ get_temperature() [2/2]

template<int dim, typename number >
HeatCutOperation< dim, number >::VectorType & MeltPoolDG::Heat::HeatCutOperation< dim, number >::get_temperature ( )
overridevirtual

◆ init_time_advance()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::init_time_advance ( )
overridevirtual

◆ register_interface_projection_data()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::register_interface_projection_data ( const VectorType distance,
const BlockVectorType normal_vector,
const LevelSet::NearestPointData< double > &  nearest_point_data 
)
overridevirtual

◆ register_lambdas_for_solution_transfer()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::register_lambdas_for_solution_transfer ( const std::function< void()> &  setup_dof_system_in,
const AttachDoFHandlerAndVectorsType< dim, VectorType attach_vectors_in = {} 
)

Before this operator can adapt_to_new_interface_position(), attach the following lambdas:

Parameters
setup_dof_system_insame as in AMR::refine_grid()
attach_vectors_insame as in AMR::refine_grid(), only necessary if this operation is used with non-cut operations in a partitioned application

◆ register_laser_intensity_function_and_direction()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::register_laser_intensity_function_and_direction ( std::shared_ptr< const dealii::Function< dim, number > >  laser_intensity_profile_in,
const dealii::Tensor< 1, dim, number > &  laser_direction_in 
)

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::reinit ( )
overridevirtual

◆ set_initial_condition()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::set_initial_condition ( const dealii::Function< dim > &  initial_temperature)
overridevirtual

◆ setup_constraints()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::setup_constraints ( ScratchData< dim, dim, number > &  mutable_scratch_data) const
overridevirtual

◆ setup_newton()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::setup_newton ( )
private

◆ solve()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::solve ( )
overridevirtual

◆ update_ghost_values()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatCutOperation< dim, number >::update_ghost_values ( ) const
private

Member Data Documentation

◆ attach_all_vectors

template<int dim, typename number >
AttachDoFHandlerAndVectorsType<dim, VectorType> MeltPoolDG::Heat::HeatCutOperation< dim, number >::attach_all_vectors
private

◆ cut_solution_transfer

template<int dim, typename number >
CutUtil::SolutionTransferOperator<dim, number> MeltPoolDG::Heat::HeatCutOperation< dim, number >::cut_solution_transfer
private

◆ dirichlet_bc

template<int dim, typename number >
const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim> > > MeltPoolDG::Heat::HeatCutOperation< dim, number >::dirichlet_bc
private

◆ heat_cont_no_bc_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_cont_no_bc_dof_idx
private

◆ heat_cut_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_cut_dof_idx
private

◆ heat_cut_no_bc_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_cut_no_bc_dof_idx
private

◆ heat_data

template<int dim, typename number >
const HeatData<number>& MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_data
private

◆ heat_operator

template<int dim, typename number >
std::unique_ptr<HeatCutOperator<dim, number> > MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_operator
private

◆ heat_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatCutOperation< dim, number >::heat_quad_idx
private

◆ interface_temperature

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatCutOperation< dim, number >::interface_temperature
private

◆ level_set

template<int dim, typename number >
const VectorType& MeltPoolDG::Heat::HeatCutOperation< dim, number >::level_set
private

◆ ls_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatCutOperation< dim, number >::ls_dof_idx
private

◆ mapping_info_cells

template<int dim, typename number >
std::vector< std::shared_ptr<dealii::NonMatching::MappingInfo<dim, dim, dealii::VectorizedArray<number> > > > MeltPoolDG::Heat::HeatCutOperation< dim, number >::mapping_info_cells
private

◆ mapping_info_surface

template<int dim, typename number >
dealii::NonMatching::MappingInfo<dim, dim, dealii::VectorizedArray<number> > MeltPoolDG::Heat::HeatCutOperation< dim, number >::mapping_info_surface
private

◆ mc_level_set

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatCutOperation< dim, number >::mc_level_set
mutableprivate

◆ mesh_classifier

template<int dim, typename number >
std::shared_ptr<dealii::NonMatching::MeshClassifier<dim> > MeltPoolDG::Heat::HeatCutOperation< dim, number >::mesh_classifier
private

◆ mesh_classifier_old

template<int dim, typename number >
std::shared_ptr<dealii::NonMatching::MeshClassifier<dim> > MeltPoolDG::Heat::HeatCutOperation< dim, number >::mesh_classifier_old
private

◆ nearest_point_search

template<int dim, typename number >
std::unique_ptr<LevelSet::Tools::NearestPoint<dim, double> > MeltPoolDG::Heat::HeatCutOperation< dim, number >::nearest_point_search
private

◆ newton

template<int dim, typename number >
NewtonRaphsonSolver<number, VectorType> MeltPoolDG::Heat::HeatCutOperation< dim, number >::newton
private

◆ periodic_bc

template<int dim, typename number >
const PeriodicBoundaryConditions<dim>& MeltPoolDG::Heat::HeatCutOperation< dim, number >::periodic_bc
private

◆ preconditioner

template<int dim, typename number >
Preconditioner<dim, VectorType, number> MeltPoolDG::Heat::HeatCutOperation< dim, number >::preconditioner
private

◆ ready_for_time_advance

template<int dim, typename number >
bool MeltPoolDG::Heat::HeatCutOperation< dim, number >::ready_for_time_advance = false
private

◆ ready_to_generate_intersected_quadrature

template<int dim, typename number >
bool MeltPoolDG::Heat::HeatCutOperation< dim, number >::ready_to_generate_intersected_quadrature = true
private

the following two parameters are used to manipulate the behaviour of setup_dof_system during cut solution transfer:

◆ reinit_vector

template<int dim, typename number >
std::function<void(VectorType &)> MeltPoolDG::Heat::HeatCutOperation< dim, number >::reinit_vector
private

◆ scratch_data

template<int dim, typename number >
const ScratchData<dim, dim, number>& MeltPoolDG::Heat::HeatCutOperation< dim, number >::scratch_data
private

◆ setup_dof_system

template<int dim, typename number >
std::function<void()> MeltPoolDG::Heat::HeatCutOperation< dim, number >::setup_dof_system
private

◆ skip_classify_cells

template<int dim, typename number >
bool MeltPoolDG::Heat::HeatCutOperation< dim, number >::skip_classify_cells = false
private

◆ solution_history

template<int dim, typename number >
TimeIntegration::SolutionHistory<VectorType> MeltPoolDG::Heat::HeatCutOperation< dim, number >::solution_history
private

◆ time_iterator

template<int dim, typename number >
const TimeIntegration::TimeIterator<number>& MeltPoolDG::Heat::HeatCutOperation< dim, number >::time_iterator
private

◆ volumetric_heat_source

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatCutOperation< dim, number >::volumetric_heat_source
private

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