MeltableParticle Class Reference

#include <MeltableParticle.h>

+ Inheritance diagram for MeltableParticle:

Public Member Functions

 MeltableParticle ()=default
 Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1. More...
 
 MeltableParticle (const MeltableParticle &p)=default
 Particle copy constructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorphism. More...
 
MeltableParticlecopy () const override
 Particle copy method. It calls to copy constructor of this Particle, useful for polymorphism. More...
 
std::string getName () const override
 
Mdouble getParticleProjectedArea ()
 
const MeltableNormalSpeciesgetMeltableSpecies () const
 
void actionsBeforeTimeStep () override
 
void actionsAfterTimeStep () override
 
unsigned getNumberOfFieldsVTK () const override
 
std::string getTypeVTK (unsigned i) const override
 
std::string getNameVTK (unsigned i) const override
 
std::vector< MdoublegetFieldVTK (unsigned i) const override
 
void setSpecies (const ParticleSpecies *species) override
 
void addHeat (double heat)
 
double getMeltRate (double solidRadius) const
 
double getSolidRadius () const
 
double getMoltenLayerThickness () const
 
- Public Member Functions inherited from Thermal< Particle >
 Thermal ()
 Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1. More...
 
 Thermal (const Thermal &p)
 Particle copy constructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorphism. More...
 
 ~Thermal () override=default
 Particle destructor, needs to be implemented and checked if it removes tangential spring information. More...
 
Thermalcopy () const override
 Particle copy method. It calls to copy constructor of this Particle, useful for polymorfism. More...
 
void write (std::ostream &os) const override
 
std::string getName () const override
 
void read (std::istream &is) override
 
Mdouble getTemperature () const
 
void setTemperature (Mdouble temperature)
 
void addTemperature (Mdouble temperature)
 
void setTemperatureDependentDensity (const std::function< double(double)> &temperatureDependentDensity)
 
const std::function< double(double)> & getTemperatureDependentDensity () const
 
const std::function< double(double)> & getTimeDependentTemperature () const
 
void setTimeDependentTemperature (const std::function< double(double)> &timeDependentTemperature)
 
void actionsAfterTimeStep () override
 
bool isSphericalParticle () const override
 

Private Attributes

double heat_ = 0
 
const MeltableNormalSpeciesmeltableSpecies_ = nullptr
 

Additional Inherited Members

- Protected Attributes inherited from Thermal< Particle >
Mdouble temperature_
 

Constructor & Destructor Documentation

◆ MeltableParticle() [1/2]

MeltableParticle::MeltableParticle ( )
default

Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1.

Referenced by copy().

◆ MeltableParticle() [2/2]

MeltableParticle::MeltableParticle ( const MeltableParticle p)
default

Particle copy constructor, which accepts as input a reference to a Particle. It creates a copy of this Particle and all it's information. Usually it is better to use the copy() function for polymorphism.

Member Function Documentation

◆ actionsAfterTimeStep()

void MeltableParticle::actionsAfterTimeStep ( )
override

Compute heat

Todo:
mass not kept!
55 {
56  // apply heat
58  double timeStep = getHandler()->getDPMBase()->getTimeStep();
59  double temperatureStep = heat_*getInvMass()/heatCapacity*timeStep;
60  addTemperature(temperatureStep);
61 
62 // // add bonding radius
63 // for (auto i : getInteractions()) {
64 // if (i->getP()==this) {
65 // auto m = dynamic_cast<MeltableInteraction*>(i);
66 // m->addBondingOverlap()
67 // }
68 // }
69 
70  // thermal expansion
72  {
73  setRadius(getRadius()+meltableSpecies_->getThermalExpansionCoefficient()*getRadius()*temperatureStep);
75  }
76 }
Mdouble getThermalExpansionCoefficient() const
Definition: MeltableNormalSpecies.cc:244
Mdouble getEffectiveHeatCapacity(double temperature) const
Definition: MeltableNormalSpecies.cc:292
const MeltableNormalSpecies * meltableSpecies_
Definition: MeltableParticle.h:77
double heat_
Definition: MeltableParticle.h:76
void addTemperature(Mdouble temperature)
Definition: ThermalParticle.h:91
Mdouble getTemperature() const
Definition: ThermalParticle.h:80

References Thermal< Particle >::addTemperature(), MeltableNormalSpecies::getEffectiveHeatCapacity(), Thermal< Particle >::getTemperature(), MeltableNormalSpecies::getThermalExpansionCoefficient(), heat_, and meltableSpecies_.

◆ actionsBeforeTimeStep()

void MeltableParticle::actionsBeforeTimeStep ( )
override

Compute heat

36 {
37  const auto s = meltableSpecies_;
38  heat_ = s->getHeatInput(this);
39  // add thermal convection
40  heat_ += -s->getThermalConvectionCoefficient() * getParticleProjectedArea()
41  * (getTemperature() - s->getAmbientTemperature());
42  // add thermal radiation
43  Mdouble radiationCoefficient = constants::stefanBoltzmanConstant
44  * s->getMaterialEmissivity()
45  * (getTemperature() + s->getAmbientTemperature())
47  + mathsFunc::square(s->getAmbientTemperature()));
48  heat_ += -radiationCoefficient * getParticleProjectedArea() * (getTemperature() - s->getAmbientTemperature());
49 }
Mdouble getParticleProjectedArea()
Definition: MeltableParticle.cc:27
RealScalar s
Definition: level1_cplx_impl.h:130
const Mdouble stefanBoltzmanConstant
Definition: ExtendedMath.h:30
T square(const T val)
squares a number
Definition: ExtendedMath.h:86

References getParticleProjectedArea(), Thermal< Particle >::getTemperature(), heat_, meltableSpecies_, s, mathsFunc::square(), and constants::stefanBoltzmanConstant.

◆ addHeat()

void MeltableParticle::addHeat ( double  heat)
inline
59  {
60  heat_ += heat;
61  }

References heat_.

◆ copy()

MeltableParticle * MeltableParticle::copy ( ) const
override

Particle copy method. It calls to copy constructor of this Particle, useful for polymorphism.

Copy method. Uses copy constructor to create a copy on the heap. Useful for polymorphism.

Returns
pointer to the particle's copy
14 {
15  return new MeltableParticle(*this);
16 }
MeltableParticle()=default
Basic Particle constructor, creates a particle at (0,0,0) with radius, mass and inertia equal to 1.

References MeltableParticle().

◆ getFieldVTK()

std::vector< Mdouble > MeltableParticle::getFieldVTK ( unsigned  i) const
override
89 {
90  double solidRadius = getSolidRadius();
91  double moltenLayerThickness = getRadius() - solidRadius;
92  if (i==0) {
93  return std::vector<Mdouble>(1, moltenLayerThickness);
94  } else if (i==1) {
95  return std::vector<Mdouble>(1, solidRadius);
96  } else {
97  return std::vector<Mdouble>(1, temperature_);
98  }
99 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
double getSolidRadius() const
Definition: MeltableParticle.h:67
Mdouble temperature_
Definition: ThermalParticle.h:120

References getSolidRadius(), i, and Thermal< Particle >::temperature_.

◆ getMeltableSpecies()

const MeltableNormalSpecies* MeltableParticle::getMeltableSpecies ( ) const
inline
38  {
39  return meltableSpecies_;
40  }

References meltableSpecies_.

Referenced by getMeltRate().

◆ getMeltRate()

double MeltableParticle::getMeltRate ( double  solidRadius) const
inline
63  {
64  return heat_/(4.0*constants::pi*solidRadius*solidRadius*getSpecies()->getDensity()*getMeltableSpecies()->getEffectiveLatentHeat());
65  }
Mdouble getEffectiveLatentHeat() const
Definition: MeltableNormalSpecies.cc:302
const MeltableNormalSpecies * getMeltableSpecies() const
Definition: MeltableParticle.h:38
const Mdouble pi
Definition: ExtendedMath.h:23

References MeltableNormalSpecies::getEffectiveLatentHeat(), getMeltableSpecies(), heat_, and constants::pi.

◆ getMoltenLayerThickness()

double MeltableParticle::getMoltenLayerThickness ( ) const
inline
71  {
72  return getRadius() - getSolidRadius();
73  }

References getSolidRadius().

◆ getName()

std::string MeltableParticle::getName ( ) const
override

Returns the name of the object; in this case 'MeltableParticle'.

Returns
The object name.
23 {
24  return "MeltableParticle";
25 }

◆ getNameVTK()

std::string MeltableParticle::getNameVTK ( unsigned  i) const
override
79 {
80  if (i==0)
81  return "MoltenLayerThickness";
82  else if (i==1)
83  return "SolidRadius";
84  else /*i=2*/
85  return "Temperature";
86 }

References i.

◆ getNumberOfFieldsVTK()

unsigned MeltableParticle::getNumberOfFieldsVTK ( ) const
inlineoverride
46 { return 3; }

◆ getParticleProjectedArea()

Mdouble MeltableParticle::getParticleProjectedArea ( )
28 {
29  return constants::pi * getRadius()*getRadius();
30 }

References constants::pi.

Referenced by actionsBeforeTimeStep().

◆ getSolidRadius()

double MeltableParticle::getSolidRadius ( ) const
inline
67  {
69  }
Mdouble getRelativeSolidRadius(double temperature) const
Definition: MeltableNormalSpecies.cc:306

References MeltableNormalSpecies::getRelativeSolidRadius(), meltableSpecies_, and Thermal< Particle >::temperature_.

Referenced by getFieldVTK(), and getMoltenLayerThickness().

◆ getTypeVTK()

std::string MeltableParticle::getTypeVTK ( unsigned  i) const
inlineoverride
48 { return "Float32"; }

◆ setSpecies()

void MeltableParticle::setSpecies ( const ParticleSpecies species)
inlineoverride
54  {
55  BaseParticle::setSpecies(species);
56  meltableSpecies_ = dynamic_cast<const MeltableNormalSpecies*>(species);
57  }
virtual void setSpecies(const ParticleSpecies *species)
Definition: BaseParticle.cc:798
Definition: MeltableNormalSpecies.h:13

References meltableSpecies_, and BaseParticle::setSpecies().

Member Data Documentation

◆ heat_

double MeltableParticle::heat_ = 0
private

◆ meltableSpecies_

const MeltableNormalSpecies* MeltableParticle::meltableSpecies_ = nullptr
private

The documentation for this class was generated from the following files: