include/meltpooldg/utilities/powder_bed.hpp Source File

Developer Documentation: include/meltpooldg/utilities/powder_bed.hpp Source File
Developer Documentation
powder_bed.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/function.h>
4#include <deal.II/base/parameter_handler.h>
5#include <deal.II/base/point.h>
6
9
10#include <fstream>
11#include <limits>
12#include <string>
13#include <utility>
14#include <vector>
15
17{
18 template <typename number>
20 {
21 std::string particle_list_file;
22 number substrate_level = std::numeric_limits<number>::lowest();
23 number slice_location = 0.0;
24
25 void
26 add_parameters(dealii::ParameterHandler &prm);
27 };
28
29 template <int dim, typename number>
30 class PowderBedLevelSet : public dealii::Function<dim, number>
31 {
32 // pair of center and radius
33 using Particle = std::pair<dealii::Point<3>, number>;
34
35 public:
36 PowderBedLevelSet(const PowderBedData<number> &powder_bed_data,
37 const LevelSet::LevelSetType level_set_type = LevelSet::LevelSetType::tanh,
38 const number eps = 0.0);
39
40 number
41 value(const dealii::Point<dim> &p, const unsigned int /* component */) const override;
42
43 private:
44 std::vector<Particle>
45 read_particles_from_file(const std::string &input_file) const;
46
47 std::ifstream
48 open_file(const std::string &input_file) const;
49
61 std::vector<Particle>
62 read_particles_from_csv_output(std::ifstream &csv_file_stream) const;
63
65 const std::vector<Particle> particles;
66 const LevelSet::LevelSetType level_set_type;
67 const number eps;
68 };
69} // namespace MeltPoolDG::MeltPool
Definition powder_bed.hpp:31
const number eps
Definition powder_bed.hpp:67
const std::vector< Particle > particles
Definition powder_bed.hpp:65
const LevelSet::LevelSetType level_set_type
Definition powder_bed.hpp:66
const PowderBedData< number > data
Definition powder_bed.hpp:64
std::vector< Particle > read_particles_from_file(const std::string &input_file) const
Definition powder_bed.cpp:102
std::vector< Particle > read_particles_from_csv_output(std::ifstream &csv_file_stream) const
Definition powder_bed.cpp:144
std::ifstream open_file(const std::string &input_file) const
Definition powder_bed.cpp:115
std::pair< dealii::Point< 3 >, number > Particle
Definition powder_bed.hpp:33
number value(const dealii::Point< dim > &p, const unsigned int) const override
Definition powder_bed.cpp:53
Definition powder_bed.hpp:17
Definition powder_bed.hpp:20
number slice_location
Definition powder_bed.hpp:23
void add_parameters(dealii::ParameterHandler &prm)
Definition powder_bed.cpp:17
number substrate_level
Definition powder_bed.hpp:22
std::string particle_list_file
Definition powder_bed.hpp:21