LaserOperation< dim, number > Class Template Reference

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

#include <laser_operation.hpp>

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

Public Member Functions

 LaserOperation (ScratchData< dim, dim, number > &scratch_data_in, const PeriodicBoundaryConditions< dim > &periodic_bc_in, const LaserData< number > &laser_data_in, const VectorType *heaviside_in=nullptr, const unsigned int hs_dof_idx_in=0, const RadiativeTransport::RadiativeTransportData< number > *rad_trans_data_in=nullptr, const bool problem_is_melt_pool=false, const bool heat_is_cut=false, const bool material_two_phase_transition_is_diffuse=false, const bool print_boundary_ids=false)
 
void distribute_dofs (const FiniteElementData &fe_data)
 
void setup_constraints ()
 
void distribute_constraints ()
 
void reinit ()
 
void attach_vectors (DoFHandlerAndVectorDataType< dim, VectorType > &data)
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const
 
void compute_heat_source (VectorType &heat_source, VectorType &heat_user_rhs, const VectorType &level_set_as_heaviside, const unsigned int ls_dof_idx, const unsigned int heat_no_bc_dof_idx, const unsigned int heat_quad_idx, const bool zero_out=false, const BlockVectorType *normal_vector=nullptr, const unsigned int normal_dof_idx=0) const
 
void reset (const number start_time)
 
void move_laser (number dt)
 
const dealii::Point< dim > & get_laser_position () const
 
number get_laser_power () const
 
std::shared_ptr< const dealii::Function< dim, number > > get_intensity_profile () const
 

Private Types

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

Private Member Functions

void print () const
 
bool compute_laser_intensity ()
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const PeriodicBoundaryConditions< dim > & periodic_bc
 
const LaserData< number > & laser_data
 
number current_time
 
number laser_intensity
 
number current_power
 
dealii::Point< dim > laser_position
 
std::shared_ptr< dealii::Function< dim, number > > intensity_profile
 
std::unique_ptr< LaserHeatSourceVolumetric< dim, number > > laser_heat_source_operation_volumetric
 
std::unique_ptr< LaserHeatSourceProjectionBased< dim, number > > laser_heat_source_operation_projection
 
std::unique_ptr< RadiativeTransport::RadiativeTransportOperation< dim, number > > rte_operation
 
std::unique_ptr< dealii::DoFHandler< dim > > rte_dof_handler
 
std::unique_ptr< dealii::AffineConstraints< number > > rte_constraints_dirichlet
 
std::unique_ptr< dealii::AffineConstraints< number > > rte_hanging_node_constraints
 
std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > rte_dirichlet_boundary_condition
 
unsigned int rte_dof_idx
 
unsigned int rte_hanging_nodes_dof_idx
 
unsigned int rte_quad_idx
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ LaserOperation()

template<int dim, typename number >
MeltPoolDG::Heat::LaserOperation< dim, number >::LaserOperation ( ScratchData< dim, dim, number > &  scratch_data_in,
const PeriodicBoundaryConditions< dim > &  periodic_bc_in,
const LaserData< number > &  laser_data_in,
const VectorType heaviside_in = nullptr,
const unsigned int  hs_dof_idx_in = 0,
const RadiativeTransport::RadiativeTransportData< number > *  rad_trans_data_in = nullptr,
const bool  problem_is_melt_pool = false,
const bool  heat_is_cut = false,
const bool  material_two_phase_transition_is_diffuse = false,
const bool  print_boundary_ids = false 
)

Member Function Documentation

◆ attach_output_vectors()

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

◆ attach_vectors()

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

◆ compute_heat_source()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserOperation< dim, number >::compute_heat_source ( VectorType heat_source,
VectorType heat_user_rhs,
const VectorType level_set_as_heaviside,
const unsigned int  ls_dof_idx,
const unsigned int  heat_no_bc_dof_idx,
const unsigned int  heat_quad_idx,
const bool  zero_out = false,
const BlockVectorType normal_vector = nullptr,
const unsigned int  normal_dof_idx = 0 
) const

Compute either the heat_source vector (for LaserImpactType::interface and LaserImpactType::volumetric) or heat_user_rhs (for LaserImpactType::interface_sharp), which is the weak form of the heat_source, both with the DoF layout provided by heat_no_bc_dof_idx. The input parameter comprise the level set indicator, level_set_as_heaviside and the corresponding index of the DoFHandler ls_dof_idx.

The optional parameter zero_out specifies whether to clear out the to be filled vector heat_source or heat_user_rhs. Optionally, a normal vector field can be provided by normal_vector and normal_dof_idx. Alternatively, the unit normal to the surface will be computed by the gradient of level_set_as_heaviside.

◆ compute_laser_intensity()

template<int dim, typename number >
bool MeltPoolDG::Heat::LaserOperation< dim, number >::compute_laser_intensity ( )
private

Compute the time-dependent laser intensity (between 0 and 1) from the user-provided parameters.

Return true if there is a change

◆ distribute_constraints()

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

◆ distribute_dofs()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserOperation< dim, number >::distribute_dofs ( const FiniteElementData fe_data)

◆ get_intensity_profile()

template<int dim, typename number >
std::shared_ptr< const Function< dim, number > > MeltPoolDG::Heat::LaserOperation< dim, number >::get_intensity_profile ( ) const

Getter function for the underlying intensity profile.

◆ get_laser_position()

template<int dim, typename number >
const Point< dim > & MeltPoolDG::Heat::LaserOperation< dim, number >::get_laser_position ( ) const

Getter function for the laser position.

◆ get_laser_power()

template<int dim, typename number >
number MeltPoolDG::Heat::LaserOperation< dim, number >::get_laser_power ( ) const

Getter function for the current laser power.

◆ move_laser()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserOperation< dim, number >::move_laser ( number  dt)

Move the laser position according to the provided scan speed for a time interface_value dt.

◆ print()

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

Print info on current laser features.

◆ reinit()

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

◆ reset()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserOperation< dim, number >::reset ( const number  start_time)

Reset the time.

◆ setup_constraints()

template<int dim, typename number >
void MeltPoolDG::Heat::LaserOperation< dim, number >::setup_constraints ( )

Member Data Documentation

◆ current_power

template<int dim, typename number >
number MeltPoolDG::Heat::LaserOperation< dim, number >::current_power
private

◆ current_time

template<int dim, typename number >
number MeltPoolDG::Heat::LaserOperation< dim, number >::current_time
private

◆ intensity_profile

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

◆ laser_data

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

◆ laser_heat_source_operation_projection

template<int dim, typename number >
std::unique_ptr<LaserHeatSourceProjectionBased<dim, number> > MeltPoolDG::Heat::LaserOperation< dim, number >::laser_heat_source_operation_projection
private

◆ laser_heat_source_operation_volumetric

template<int dim, typename number >
std::unique_ptr<LaserHeatSourceVolumetric<dim, number> > MeltPoolDG::Heat::LaserOperation< dim, number >::laser_heat_source_operation_volumetric
private

◆ laser_intensity

template<int dim, typename number >
number MeltPoolDG::Heat::LaserOperation< dim, number >::laser_intensity
private

◆ laser_position

template<int dim, typename number >
dealii::Point<dim> MeltPoolDG::Heat::LaserOperation< dim, number >::laser_position
private

◆ periodic_bc

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

◆ rte_constraints_dirichlet

template<int dim, typename number >
std::unique_ptr<dealii::AffineConstraints<number> > MeltPoolDG::Heat::LaserOperation< dim, number >::rte_constraints_dirichlet
private

◆ rte_dirichlet_boundary_condition

template<int dim, typename number >
std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim> > > MeltPoolDG::Heat::LaserOperation< dim, number >::rte_dirichlet_boundary_condition
private

◆ rte_dof_handler

template<int dim, typename number >
std::unique_ptr<dealii::DoFHandler<dim> > MeltPoolDG::Heat::LaserOperation< dim, number >::rte_dof_handler
private

◆ rte_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::Heat::LaserOperation< dim, number >::rte_dof_idx
private

◆ rte_hanging_node_constraints

template<int dim, typename number >
std::unique_ptr<dealii::AffineConstraints<number> > MeltPoolDG::Heat::LaserOperation< dim, number >::rte_hanging_node_constraints
private

◆ rte_hanging_nodes_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::Heat::LaserOperation< dim, number >::rte_hanging_nodes_dof_idx
private

◆ rte_operation

template<int dim, typename number >
std::unique_ptr<RadiativeTransport::RadiativeTransportOperation<dim, number> > MeltPoolDG::Heat::LaserOperation< dim, number >::rte_operation
private

◆ rte_quad_idx

template<int dim, typename number >
unsigned int MeltPoolDG::Heat::LaserOperation< dim, number >::rte_quad_idx
private

◆ scratch_data

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

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