MeltableParticle.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef MeltableParticle_H
6 #define MeltableParticle_H
7 
8 #include "ThermalParticle.h"
10 
16 public:
20  MeltableParticle() = default;
21 
25  MeltableParticle(const MeltableParticle &p) = default;
26 
30  MeltableParticle *copy() const override;
31 
32  //void write(std::ostream &os) const override;
33 
34  std::string getName() const override;
35 
37 
39  return meltableSpecies_;
40  }
41 
42  void actionsBeforeTimeStep() override;
43 
44  void actionsAfterTimeStep() override;
45 
46  unsigned getNumberOfFieldsVTK() const override { return 3; }
47 
48  std::string getTypeVTK(unsigned i) const override { return "Float32"; }
49 
50  std::string getNameVTK(unsigned i) const override;
51 
52  std::vector<Mdouble> getFieldVTK(unsigned i) const override;
53 
54  void setSpecies(const ParticleSpecies* species) override {
55  BaseParticle::setSpecies(species);
56  meltableSpecies_ = dynamic_cast<const MeltableNormalSpecies*>(species);
57  }
58 
59  void addHeat(double heat) {
60  heat_ += heat;
61  }
62 
63  double getMeltRate(double solidRadius) const {
64  return heat_/(4.0*constants::pi*solidRadius*solidRadius*getSpecies()->getDensity()*getMeltableSpecies()->getEffectiveLatentHeat());
65  }
66 
67  double getSolidRadius() const {
69  }
70 
71  double getMoltenLayerThickness() const {
72  return getRadius() - getSolidRadius();
73  }
74 
75 private:
76  double heat_ = 0;
78 };
79 
80 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
float * p
Definition: Tutorial_Map_using.cpp:9
virtual void setSpecies(const ParticleSpecies *species)
Definition: BaseParticle.cc:798
Definition: MeltableNormalSpecies.h:13
Mdouble getRelativeSolidRadius(double temperature) const
Definition: MeltableNormalSpecies.cc:306
Mdouble getEffectiveLatentHeat() const
Definition: MeltableNormalSpecies.cc:302
Definition: MeltableParticle.h:15
MeltableParticle()=default
Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1.
std::string getTypeVTK(unsigned i) const override
Definition: MeltableParticle.h:48
MeltableParticle(const MeltableParticle &p)=default
Particle copy constructor, which accepts as input a reference to a Particle. It creates a copy of thi...
MeltableParticle * copy() const override
Particle copy method. It calls to copy constructor of this Particle, useful for polymorphism.
Definition: MeltableParticle.cc:13
Mdouble getParticleProjectedArea()
Definition: MeltableParticle.cc:27
const MeltableNormalSpecies * meltableSpecies_
Definition: MeltableParticle.h:77
void actionsBeforeTimeStep() override
Definition: MeltableParticle.cc:35
void addHeat(double heat)
Definition: MeltableParticle.h:59
void setSpecies(const ParticleSpecies *species) override
Definition: MeltableParticle.h:54
double getSolidRadius() const
Definition: MeltableParticle.h:67
double heat_
Definition: MeltableParticle.h:76
std::vector< Mdouble > getFieldVTK(unsigned i) const override
Definition: MeltableParticle.cc:88
unsigned getNumberOfFieldsVTK() const override
Definition: MeltableParticle.h:46
double getMoltenLayerThickness() const
Definition: MeltableParticle.h:71
std::string getName() const override
Definition: MeltableParticle.cc:22
double getMeltRate(double solidRadius) const
Definition: MeltableParticle.h:63
void actionsAfterTimeStep() override
Definition: MeltableParticle.cc:54
std::string getNameVTK(unsigned i) const override
Definition: MeltableParticle.cc:78
const MeltableNormalSpecies * getMeltableSpecies() const
Definition: MeltableParticle.h:38
Definition: ParticleSpecies.h:16
Definition: ThermalParticle.h:15
Mdouble temperature_
Definition: ThermalParticle.h:120
const Mdouble pi
Definition: ExtendedMath.h:23
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286