LaserHeatSourceProjectionBased< dim, number > Class Template Reference

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

#include <laser_heat_source_projection_based.hpp>

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

Public Member Functions

 LaserHeatSourceProjectionBased (const LaserData< number > &laser_data_in, const std::shared_ptr< const dealii::Function< dim, number > > intensity_profile_in, const bool variable_properties_over_interface_in, const LevelSet::DeltaApproximationPhaseWeightedData< number > &delta_approximation_phase_weighted_data)
 
void compute_interfacial_heat_source (VectorType &heat_source_vector, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out=true, const BlockVectorType *normal_vector=nullptr, const unsigned int normal_dof_idx=0) const
 
void compute_interfacial_heat_source_sharp (VectorType &heat_rhs, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out=true, const BlockVectorType *normal_vector=nullptr, const unsigned int normal_dof_idx=0) const
 
void compute_interfacial_heat_source_sharp_conforming (VectorType &heat_rhs, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const unsigned int heat_quad_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out, const BlockVectorType *normal_vector, const unsigned int normal_dof_idx) const
 

Private Types

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

Private Member Functions

number local_compute_interfacial_heat_source (const dealii::Point< dim > &p, const dealii::Tensor< 1, dim, number > &normal_vector, const number delta_value, const number heaviside) const
 

Private Attributes

const LaserData< number > & laser_data
 
const std::shared_ptr< const dealii::Function< dim, number > > intensity_profile
 
const dealii::Tensor< 1, dim, number > laser_direction
 
const bool variable_properties_over_interface
 
std::unique_ptr< const LevelSet::DeltaApproximationBase< number > > delta_phase_weighted
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >

Projection based laser heat source model.

Member Typedef Documentation

◆ BlockVectorType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ LaserHeatSourceProjectionBased()

template<int dim, typename number >
MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::LaserHeatSourceProjectionBased ( const LaserData< number > &  laser_data_in,
const std::shared_ptr< const dealii::Function< dim, number > >  intensity_profile_in,
const bool  variable_properties_over_interface_in,
const LevelSet::DeltaApproximationPhaseWeightedData< number > &  delta_approximation_phase_weighted_data 
)

Member Function Documentation

◆ compute_interfacial_heat_source()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::compute_interfacial_heat_source ( VectorType heat_source_vector,
const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  heat_dof_idx,
const VectorType level_set_heaviside,
const unsigned int  ls_dof_idx,
const bool  zero_out = true,
const BlockVectorType normal_vector = nullptr,
const unsigned int  normal_dof_idx = 0 
) const

Compute a DoF vector of the interfacial heat source.

◆ compute_interfacial_heat_source_sharp()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::compute_interfacial_heat_source_sharp ( VectorType heat_rhs,
const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  heat_dof_idx,
const VectorType level_set_heaviside,
const unsigned int  ls_dof_idx,
const bool  zero_out = true,
const BlockVectorType normal_vector = nullptr,
const unsigned int  normal_dof_idx = 0 
) const

Compute a DoF vector of the interfacial heat source by evaluating the surface integral.

◆ compute_interfacial_heat_source_sharp_conforming()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::compute_interfacial_heat_source_sharp_conforming ( VectorType heat_rhs,
const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  heat_dof_idx,
const unsigned int  heat_quad_idx,
const VectorType level_set_heaviside,
const unsigned int  ls_dof_idx,
const bool  zero_out,
const BlockVectorType normal_vector,
const unsigned int  normal_dof_idx 
) const

For a given finite element discretization, hidden within scratch_data, compute a right-hand-side contribution for heat-transfer and store it into the DoF-vector heat_rhs (with the corresponding index heat_dof_idx). Based on the level-set indicator function (level_set_heaviside and corresponding DoFHandler index ls_dof_idx), cells will be categorized into the different phases. We loop over all element faces that are along the phase boundary and perform a surface integral based on the quadrature rule, given by the index heat_dof_idx, to compute the laser impact. The laser parameters are laser_power and laser_position. Set zero_out to true to zero out the right-hand-side vector heat_rhs in advance. The optional arguments normal_vector and normal_dof_idx, can be used to compute the unit normal at the surface.

Note
This function should only be used, if the level-set isosurface is aligned with element faces and does not cross the cells.

◆ local_compute_interfacial_heat_source()

template<int dim, typename number >
number MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::local_compute_interfacial_heat_source ( const dealii::Point< dim > &  p,
const dealii::Tensor< 1, dim, number > &  normal_vector,
const number  delta_value,
const number  heaviside 
) const
private

Local interfacial heat source

For the sharp interfacial heat source, set

Parameters
delta_valueto 1.

Member Data Documentation

◆ delta_phase_weighted

template<int dim, typename number >
std::unique_ptr<const LevelSet::DeltaApproximationBase<number> > MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::delta_phase_weighted
private

◆ intensity_profile

template<int dim, typename number >
const std::shared_ptr<const dealii::Function<dim, number> > MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::intensity_profile
private

◆ laser_data

template<int dim, typename number >
const LaserData<number>& MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::laser_data
private

◆ laser_direction

template<int dim, typename number >
const dealii::Tensor<1, dim, number> MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::laser_direction
private

◆ variable_properties_over_interface

template<int dim, typename number >
const bool MeltPoolDG::Heat::LaserHeatSourceProjectionBased< dim, number >::variable_properties_over_interface
private

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