MeltFrontPropagation< dim, number > Class Template Reference

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

#include <melt_front_propagation.hpp>

Collaboration diagram for MeltPoolDG::MeltFrontPropagation< dim, number >:
[legend]

Public Member Functions

 MeltFrontPropagation (const ScratchData< dim, dim, number > &scratch_data_in, const MeltFrontPropagationData< number > &mp_data, const MaterialData< number > &material_data, const unsigned int phase_fraction_dof_idx_in, const unsigned int ls_dof_idx_in, const VectorType &temperature_in, const unsigned int reinit_dof_idx_in, const unsigned int reinit_no_solid_dof_idx_in, const unsigned int flow_vel_dof_idx_in, const unsigned int flow_vel_no_solid_dof_idx_in, const unsigned int heat_hanging_nodes_dof_idx_in)
 
void set_initial_condition (const VectorType &level_set_as_heaviside, VectorType &level_set)
 
void compute_melt_front_propagation (const VectorType &level_set_as_heaviside)
 
void reinit ()
 
void attach_vectors (std::vector< VectorType * > &vectors)
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const
 
void distribute_constraints ()
 
const VectorTypeget_solid () const
 
const VectorTypeget_liquid () const
 
number compute_solid_fraction (const number temperature) const
 
dealii::VectorizedArray< number > compute_solid_fraction (const dealii::VectorizedArray< number > &temperature) const
 

Private Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 

Private Member Functions

void make_constraints_in_spatially_fixed_solid_domain ()
 
void compute_solid_and_liquid_phases (const VectorType &level_set_as_heaviside)
 
void set_flow_field_in_solid_regions_to_zero (const dealii::DoFHandler< dim > &flow_dof_handler, const dealii::AffineConstraints< number > &flow_constraints_no_solid, dealii::AffineConstraints< number > &flow_constraints)
 
void ignore_reinitialization_in_solid_regions (const dealii::DoFHandler< dim > &level_set_dof_handler, const dealii::AffineConstraints< number > &reinit_dirichlet_constraints_no_solid, dealii::AffineConstraints< number > &reinit_dirichlet_constraints)
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const MeltFrontPropagationData< number > & mp_data
 
Material< number > melting_solidification
 
const unsigned int phase_fraction_dof_idx
 
const unsigned int ls_dof_idx
 
const unsigned int reinit_dof_idx
 
const unsigned int reinit_no_solid_dof_idx
 
const unsigned int flow_vel_dof_idx
 
const unsigned int flow_vel_no_solid_dof_idx
 
const unsigned int heat_hanging_nodes_dof_idx
 
const VectorTypetemperature
 
VectorType solid
 
VectorType liquid
 

Member Typedef Documentation

◆ VectorType

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

Constructor & Destructor Documentation

◆ MeltFrontPropagation()

template<int dim, typename number >
MeltPoolDG::MeltFrontPropagation< dim, number >::MeltFrontPropagation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const MeltFrontPropagationData< number > &  mp_data,
const MaterialData< number > &  material_data,
const unsigned int  phase_fraction_dof_idx_in,
const unsigned int  ls_dof_idx_in,
const VectorType temperature_in,
const unsigned int  reinit_dof_idx_in,
const unsigned int  reinit_no_solid_dof_idx_in,
const unsigned int  flow_vel_dof_idx_in,
const unsigned int  flow_vel_no_solid_dof_idx_in,
const unsigned int  heat_hanging_nodes_dof_idx_in 
)

Member Function Documentation

◆ attach_output_vectors()

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

solid

liquid

◆ attach_vectors()

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

◆ compute_melt_front_propagation()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::compute_melt_front_propagation ( const VectorType level_set_as_heaviside)

◆ compute_solid_and_liquid_phases()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::compute_solid_and_liquid_phases ( const VectorType level_set_as_heaviside)
private

This function determines the solid fraction for a given pair of temperature (T) and level-set-heaviside values (phi) as follows:


| | | | phase | solid fraction phi T |

_________ ___________________________________________________________
solid 1.0 1 T <= T_solidus
T_l - T
mushy -------— 1 T_solidus < T < T_liquidus
T_l - T_s
liquid 0.0 1 T >= T_liquidus
gas 0.0 0 independent
_________ ___________________________________________________________

If no mushy zone is prescribed, then T_solidus = T_liquidus = T_melting.

◆ compute_solid_fraction() [1/2]

template<int dim, typename number >
dealii::VectorizedArray< number > MeltPoolDG::MeltFrontPropagation< dim, number >::compute_solid_fraction ( const dealii::VectorizedArray< number > &  temperature) const

◆ compute_solid_fraction() [2/2]

template<int dim, typename number >
number MeltPoolDG::MeltFrontPropagation< dim, number >::compute_solid_fraction ( const number  temperature) const

This function returns the solid fraction from a linear interpolation between the solidus and liquidus temperatures, i.e. 0 (T>=T_liquidus) and 1 (T<=T_solidus).

◆ distribute_constraints()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::distribute_constraints ( )

◆ get_liquid()

template<int dim, typename number >
const MeltFrontPropagation< dim, number >::VectorType & MeltPoolDG::MeltFrontPropagation< dim, number >::get_liquid ( ) const

◆ get_solid()

template<int dim, typename number >
const MeltFrontPropagation< dim, number >::VectorType & MeltPoolDG::MeltFrontPropagation< dim, number >::get_solid ( ) const

◆ ignore_reinitialization_in_solid_regions()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::ignore_reinitialization_in_solid_regions ( const dealii::DoFHandler< dim > &  level_set_dof_handler,
const dealii::AffineConstraints< number > &  reinit_dirichlet_constraints_no_solid,
dealii::AffineConstraints< number > &  reinit_dirichlet_constraints 
)
private

The reinitialization constraints are modified such that they are zero in solid regions. This means, the level set field is not modified due to reinitialization in the solid regions.

◆ make_constraints_in_spatially_fixed_solid_domain()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::make_constraints_in_spatially_fixed_solid_domain ( )
private

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::reinit ( )

◆ set_flow_field_in_solid_regions_to_zero()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::set_flow_field_in_solid_regions_to_zero ( const dealii::DoFHandler< dim > &  flow_dof_handler,
const dealii::AffineConstraints< number > &  flow_constraints_no_solid,
dealii::AffineConstraints< number > &  flow_constraints 
)
private

The constraints of the flow velocity are modified such that they are zero in solid regions.

◆ set_initial_condition()

template<int dim, typename number >
void MeltPoolDG::MeltFrontPropagation< dim, number >::set_initial_condition ( const VectorType level_set_as_heaviside,
VectorType level_set 
)

Member Data Documentation

◆ flow_vel_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::MeltFrontPropagation< dim, number >::flow_vel_dof_idx
private

◆ flow_vel_no_solid_dof_idx

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

◆ heat_hanging_nodes_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::MeltFrontPropagation< dim, number >::heat_hanging_nodes_dof_idx
private

◆ liquid

template<int dim, typename number >
VectorType MeltPoolDG::MeltFrontPropagation< dim, number >::liquid
private

◆ ls_dof_idx

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

◆ melting_solidification

template<int dim, typename number >
Material<number> MeltPoolDG::MeltFrontPropagation< dim, number >::melting_solidification
private

◆ mp_data

template<int dim, typename number >
const MeltFrontPropagationData<number>& MeltPoolDG::MeltFrontPropagation< dim, number >::mp_data
private

◆ phase_fraction_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::MeltFrontPropagation< dim, number >::phase_fraction_dof_idx
private

◆ reinit_dof_idx

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

◆ reinit_no_solid_dof_idx

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

◆ scratch_data

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

◆ solid

template<int dim, typename number >
VectorType MeltPoolDG::MeltFrontPropagation< dim, number >::solid
private

◆ temperature

template<int dim, typename number >
const VectorType& MeltPoolDG::MeltFrontPropagation< dim, number >::temperature
private

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