88#ifndef ELECTRON_BEAM_HEAT_SOURCE_HH
99#define ELECTRON_BEAM_HEAT_SOURCE_HH
1010
11- #include < HeatSource.hh>
11+ #include < BeamHeatSourceProperties.hh>
12+ #include < ScanPath.hh>
1213
1314namespace adamantine
1415{
1516/* *
16- * A derived class from HeatSource for a model of an electron beam heat source.
17+ * A model of an electron beam heat source.
1718 * The form of the heat source model is taken from the following reference:
1819 * Raghavan et al, Acta Materilia, 112, 2016, pp 303-314.
1920 */
2021template <int dim, typename MemorySpaceType>
21- class ElectronBeamHeatSource final : public HeatSource<dim, MemorySpaceType>
22+ class ElectronBeamHeatSource
2223{
2324public:
2425 /* *
@@ -37,18 +38,42 @@ public:
3738 /* *
3839 * Set the time variable.
3940 */
40- void update_time (double time) final ;
41+ void update_time (double time);
4142
4243 /* *
4344 * Returns the value of an electron beam heat source at a specified point and
4445 * time.
4546 */
4647 double value (dealii::Point<dim> const &point,
47- double const height) const final ;
48+ double const height) const ;
49+
50+ ScanPath<MemorySpaceType> const &get_scan_path () const {return _scan_path;}
51+
52+ double get_current_height (double const time) const
53+ {
54+ return _scan_path.value (time)[2 ];
55+ }
56+
57+ void set_beam_properties (
58+ boost::property_tree::ptree const &database)
59+ {
60+ _beam.set_from_database (database);
61+ }
62+
63+ BeamHeatSourceProperties get_beam_properties () const { return _beam; }
4864
4965private:
5066 dealii::Point<3 > _beam_center;
5167 double _alpha;
68+ /* *
69+ * Structure of the physical properties of the beam heat source.
70+ */
71+ BeamHeatSourceProperties _beam;
72+
73+ /* *
74+ * The scan path for the heat source.
75+ */
76+ ScanPath<MemorySpaceType> _scan_path;
5277};
5378} // namespace adamantine
5479
0 commit comments