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,40 @@ 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 */
46- double value (dealii::Point<dim> const &point,
47- double const height) const final ;
47+ double value (dealii::Point<dim> const &point, double const height) const ;
48+
49+ ScanPath<MemorySpaceType> const &get_scan_path () const { return _scan_path; }
50+
51+ double get_current_height (double const time) const
52+ {
53+ return _scan_path.value (time)[2 ];
54+ }
55+
56+ void set_beam_properties (boost::property_tree::ptree const &database)
57+ {
58+ _beam.set_from_database (database);
59+ }
60+
61+ BeamHeatSourceProperties get_beam_properties () const { return _beam; }
4862
4963private:
5064 dealii::Point<3 > _beam_center;
5165 double _alpha;
66+ /* *
67+ * Structure of the physical properties of the beam heat source.
68+ */
69+ BeamHeatSourceProperties _beam;
70+
71+ /* *
72+ * The scan path for the heat source.
73+ */
74+ ScanPath<MemorySpaceType> _scan_path;
5275};
5376} // namespace adamantine
5477
0 commit comments