HeatDiffuseOperation< dim, number > Class Template Reference

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

#include <heat_diffuse_operation.hpp>

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

Public Member Functions

 HeatDiffuseOperation (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 Material< number > &material, const TimeIntegration::TimeIterator< number > &time_iterator, unsigned int heat_dof_idx_in, unsigned int heat_no_bc_dof_idx_in, unsigned int heat_quad_idx_in, unsigned int vel_dof_idx_in=0, const VectorType *velocity_in=nullptr, unsigned int ls_dof_idx_in=0, const VectorType *level_set_as_heaviside_in=nullptr, const bool do_solidifiaction=false)
 
void register_evaporative_mass_flux (VectorType *evaporative_mass_flux_in, const unsigned int evapor_mass_flux_dof_idx_in, const Evaporation::EvaporationData< number > &evapor_data)
 
void register_surface_mesh (const std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > &surface_mesh_info_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 set_initial_condition (const dealii::Function< dim > &initial_field_function_temperature) override
 
void reinit () override
 
void init_time_advance () override
 
void solve () override
 
void solve (const bool do_finish_time_step)
 
void finish_time_advance ()
 
void register_interface_projection_data (const VectorType &distance, const BlockVectorType &normal_vector, const LevelSet::NearestPointData< number > &nearest_point_data) override
 
void compute_interface_temperature () override
 
void attach_vectors (std::vector< VectorType * > &vectors) override
 
void distribute_constraints () 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
 
const VectorTypeget_user_rhs () const
 
VectorTypeget_user_rhs ()
 
- Public Member Functions inherited from MeltPoolDG::Heat::HeatOperationBase< dim, number >
virtual ~HeatOperationBase ()=default
 
virtual void register_interface_projection_data (const VectorType &distance, const BlockVectorType &normal_vector, const LevelSet::NearestPointData< double > &nearest_point_data)=0
 

Private Types

using VectorType = typename HeatOperationBase< dim, number >::VectorType
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 

Private Member Functions

void setup_newton ()
 

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_dof_idx
 
const unsigned int heat_no_bc_dof_idx
 
const unsigned int heat_quad_idx
 
TimeIntegration::SolutionHistory< VectorTypesolution_history
 
VectorType predictor_buffer
 
VectorType heat_source
 
VectorType user_rhs
 
VectorType interface_temperature
 
VectorType user_rhs_projected
 
std::unique_ptr< Predictor< VectorType, number > > predictor
 
const unsigned int vel_dof_idx
 
const VectorTypevelocity
 
const unsigned int ls_dof_idx
 
const VectorTypelevel_set_as_heaviside
 
NewtonRaphsonSolver< number, VectorTypenewton
 
std::unique_ptr< HeatDiffuseMultiPhaseOperator< dim, number > > heat_operator
 
Preconditioner< dim, VectorType, number > preconditioner
 
bool ready_for_time_advance = false
 
std::unique_ptr< LevelSet::Tools::NearestPoint< dim, double > > nearest_point_search
 

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::HeatDiffuseOperation< dim, number >::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>
private

◆ VectorType

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

Constructor & Destructor Documentation

◆ HeatDiffuseOperation()

template<int dim, typename number >
MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::HeatDiffuseOperation ( 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 Material< number > &  material,
const TimeIntegration::TimeIterator< number > &  time_iterator,
unsigned int  heat_dof_idx_in,
unsigned int  heat_no_bc_dof_idx_in,
unsigned int  heat_quad_idx_in,
unsigned int  vel_dof_idx_in = 0,
const VectorType velocity_in = nullptr,
unsigned int  ls_dof_idx_in = 0,
const VectorType level_set_as_heaviside_in = nullptr,
const bool  do_solidifiaction = false 
)

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatDiffuseOperation< 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::HeatDiffuseOperation< dim, number >::attach_output_vectors_failed_step ( GenericDataOut< dim, number > &  data_out) const
overridevirtual

◆ attach_vectors()

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

register vectors for adaptive mesh refinement solution transfer

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

◆ compute_interface_temperature()

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

◆ distribute_constraints()

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

◆ distribute_dofs()

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

◆ finish_time_advance()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::finish_time_advance ( )

◆ get_heat_source() [1/2]

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

◆ get_heat_source() [2/2]

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

◆ get_interface_temperature() [1/2]

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

◆ get_interface_temperature() [2/2]

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

◆ get_temperature() [1/2]

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

◆ get_temperature() [2/2]

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

◆ get_user_rhs() [1/2]

template<int dim, typename number >
HeatOperationBase< dim, number >::VectorType & MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::get_user_rhs ( )

◆ get_user_rhs() [2/2]

template<int dim, typename number >
const HeatOperationBase< dim, number >::VectorType & MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::get_user_rhs ( ) const

◆ init_time_advance()

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

◆ register_evaporative_mass_flux()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::register_evaporative_mass_flux ( VectorType evaporative_mass_flux_in,
const unsigned int  evapor_mass_flux_dof_idx_in,
const Evaporation::EvaporationData< number > &  evapor_data 
)

◆ register_interface_projection_data()

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

◆ register_surface_mesh()

template<int dim, typename number >
void MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::register_surface_mesh ( const std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > &  surface_mesh_info_in)

◆ reinit()

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

◆ set_initial_condition()

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

◆ setup_constraints()

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

◆ setup_newton()

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

◆ solve() [1/2]

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

◆ solve() [2/2]

template<int dim, typename number >
void MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::solve ( const bool  do_finish_time_step)

Member Data Documentation

◆ dirichlet_bc

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

◆ heat_data

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

parameters

◆ heat_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::heat_dof_idx
private

select the relevant DoFHandlers and quadrature rules

◆ heat_no_bc_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::heat_no_bc_dof_idx
private

◆ heat_operator

template<int dim, typename number >
std::unique_ptr<HeatDiffuseMultiPhaseOperator<dim, number> > MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::heat_operator
private

◆ heat_quad_idx

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

◆ heat_source

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::heat_source
private

◆ interface_temperature

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

◆ level_set_as_heaviside

template<int dim, typename number >
const VectorType* MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::level_set_as_heaviside
private

◆ ls_dof_idx

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

◆ nearest_point_search

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

◆ newton

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

◆ periodic_bc

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

◆ preconditioner

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

◆ predictor

template<int dim, typename number >
std::unique_ptr<Predictor<VectorType, number> > MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::predictor
private

◆ predictor_buffer

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::predictor_buffer
private

◆ ready_for_time_advance

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

◆ scratch_data

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

◆ solution_history

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

◆ time_iterator

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

◆ user_rhs

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::user_rhs
private

◆ user_rhs_projected

template<int dim, typename number >
VectorType MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::user_rhs_projected
mutableprivate

◆ vel_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::vel_dof_idx
private

◆ velocity

template<int dim, typename number >
const VectorType* MeltPoolDG::Heat::HeatDiffuseOperation< dim, number >::velocity
private

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