adamantine
Public Member Functions | Protected Attributes | List of all members
adamantine::HeatSource< dim > Class Template Referenceabstract

#include <HeatSource.hh>

Inheritance diagram for adamantine::HeatSource< dim >:
adamantine::CubeHeatSource< dim > adamantine::ElectronBeamHeatSource< dim > adamantine::GoldakHeatSource< dim >

Public Member Functions

 HeatSource ()=default
 
 HeatSource (boost::property_tree::ptree const &beam_database, boost::optional< boost::property_tree::ptree const & > const &units_optional_database)
 
virtual ~HeatSource ()=default
 
virtual void update_time (double time)=0
 
virtual double value (dealii::Point< dim > const &points, double const height) const =0
 
virtual dealii::VectorizedArray< double > value (dealii::Point< dim, dealii::VectorizedArray< double >> const &points, dealii::VectorizedArray< double > const &height) const =0
 
virtual ScanPathget_scan_path ()
 
virtual double get_current_height (double const time) const
 
virtual void set_beam_properties (boost::property_tree::ptree const &database)
 
virtual dealii::BoundingBox< dim > get_bounding_box (double const time, double const scaling_factor) const =0
 

Protected Attributes

BeamHeatSourceProperties _beam
 
ScanPath _scan_path
 

Detailed Description

template<int dim>
class adamantine::HeatSource< dim >

This is the base class for describing the functional form of a heat source. It has a pure virtual "value" method that needs to be implemented in a derived class. NOTE: The coordinate system in this class is different than for the finite element mesh. In this class, the first two components of a dealii::Point<3> describe the position along the surface of the part. The last component is the height through the thickness of the part from the base plate. This is in opposition to the finite element mesh where the first and last components of a dealii::Point<3> describe the position along the surface of the part, and the second component is the thickness. That is, the last two components are swapped between the two coordinate systems.

Definition at line 32 of file HeatSource.hh.

Constructor & Destructor Documentation

◆ HeatSource() [1/2]

template<int dim>
adamantine::HeatSource< dim >::HeatSource ( )
default

Default constructor. This constructor should only be used for non-beam heat source.

◆ HeatSource() [2/2]

template<int dim>
adamantine::HeatSource< dim >::HeatSource ( boost::property_tree::ptree const &  beam_database,
boost::optional< boost::property_tree::ptree const & > const &  units_optional_database 
)
inline

Constructor.

Parameters
[in]beam_databaserequires the following entries:
  • absorption_efficiency: double in $[0,1]$
  • depth: double in $[0,\infty)$
  • diameter: double in $[0,\infty)$
  • max_power: double in $[0, \infty)$
  • input_file: name of the file that contains the scan path segments
[in]units_optional_databasemay contain the following entries:
  • heat_source.dimension
  • heat_source.power

Definition at line 54 of file HeatSource.hh.

◆ ~HeatSource()

template<int dim>
virtual adamantine::HeatSource< dim >::~HeatSource ( )
virtualdefault

Destructor.

Member Function Documentation

◆ get_bounding_box()

template<int dim>
virtual dealii::BoundingBox<dim> adamantine::HeatSource< dim >::get_bounding_box ( double const  time,
double const  scaling_factor 
) const
pure virtual

Return a scaled bounding box of the heat source at the given time.

Implemented in adamantine::GoldakHeatSource< dim >, adamantine::ElectronBeamHeatSource< dim >, and adamantine::CubeHeatSource< dim >.

◆ get_current_height()

template<int dim>
double adamantine::HeatSource< dim >::get_current_height ( double const  time) const
inlinevirtual

Compute the current height of the where the heat source meets the material (i.e. the current scan path height).

Reimplemented in adamantine::CubeHeatSource< dim >.

Definition at line 131 of file HeatSource.hh.

◆ get_scan_path()

template<int dim>
ScanPath & adamantine::HeatSource< dim >::get_scan_path
inlinevirtual

Return the scan path for the heat source.

Definition at line 125 of file HeatSource.hh.

◆ set_beam_properties()

template<int dim>
void adamantine::HeatSource< dim >::set_beam_properties ( boost::property_tree::ptree const &  database)
inlinevirtual

(Re)sets the BeamHeatSourceProperties member variable, necessary if the beam parameters vary in time (e.g. due to data assimilation).

Definition at line 137 of file HeatSource.hh.

◆ update_time()

template<int dim>
virtual void adamantine::HeatSource< dim >::update_time ( double  time)
pure virtual

◆ value() [1/2]

template<int dim>
virtual double adamantine::HeatSource< dim >::value ( dealii::Point< dim > const &  points,
double const  height 
) const
pure virtual

Compute the heat source at a given point at a given time given the current height of the object being manufactured.

Implemented in adamantine::CubeHeatSource< dim >, adamantine::GoldakHeatSource< dim >, and adamantine::ElectronBeamHeatSource< dim >.

◆ value() [2/2]

template<int dim>
virtual dealii::VectorizedArray<double> adamantine::HeatSource< dim >::value ( dealii::Point< dim, dealii::VectorizedArray< double >> const &  points,
dealii::VectorizedArray< double > const &  height 
) const
pure virtual

Same function as above but it uses vectorized data.

Implemented in adamantine::GoldakHeatSource< dim >, adamantine::ElectronBeamHeatSource< dim >, and adamantine::CubeHeatSource< dim >.

Member Data Documentation

◆ _beam

template<int dim>
BeamHeatSourceProperties adamantine::HeatSource< dim >::_beam
protected

Structure of the physical properties of the beam heat source.

Definition at line 116 of file HeatSource.hh.

◆ _scan_path

template<int dim>
ScanPath adamantine::HeatSource< dim >::_scan_path
protected

The scan path for the heat source.

Definition at line 121 of file HeatSource.hh.