SPH
Materials.h
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include "quantities/IMaterial.h"
9 
11 
12 class IEos;
13 class IRheology;
14 
21 class EosMaterial : public IMaterial {
22 private:
23  AutoPtr<IEos> eos;
24 
25 public:
29  EosMaterial(const BodySettings& body, AutoPtr<IEos>&& eos);
30 
34  explicit EosMaterial(const BodySettings& body);
35 
40  Pair<Float> evaluate(const Float rho, const Float u) const;
41 
43  const IEos& getEos() const;
44 
45  virtual void create(Storage& storage, const MaterialInitialContext& context) override;
46 
47  virtual void initialize(IScheduler& scheduler, Storage& storage, const IndexSequence sequence) override;
48 
49  virtual void finalize(IScheduler& UNUSED(scheduler),
50  Storage& UNUSED(storage),
51  const IndexSequence UNUSED(sequence)) override {
52  // nothing
53  }
54 };
55 
60 class SolidMaterial : public EosMaterial {
61 private:
62  AutoPtr<IRheology> rheology;
63 
64 public:
65  SolidMaterial(const BodySettings& body, AutoPtr<IEos>&& eos, AutoPtr<IRheology>&& rheology);
66 
67  explicit SolidMaterial(const BodySettings& body);
68 
69  virtual void create(Storage& storage, const MaterialInitialContext& context) override;
70 
71  virtual void initialize(IScheduler& scheduler, Storage& storage, const IndexSequence sequence) override;
72 
73  virtual void finalize(IScheduler& scheduler, Storage& storage, const IndexSequence sequence) override;
74 };
75 
79 enum class MaterialEnum {
80  BASALT,
81  IRON,
82  ICE,
83  OLIVINE,
84 };
85 
87 
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
double Float
Precision used withing the code. Use Float instead of float or double where precision is important.
Definition: Globals.h:13
Base class for all particle materials.
AutoPtr< IMaterial > getMaterial(const MaterialEnum type)
Definition: Materials.cpp:91
MaterialEnum
Basic materials available in the code.
Definition: Materials.h:79
#define UNUSED(x)
Definition: Object.h:37
#define NAMESPACE_SPH_END
Definition: Object.h:12
Material holding equation of state.
Definition: Materials.h:21
virtual void finalize(IScheduler &UNUSED(scheduler), Storage &UNUSED(storage), const IndexSequence UNUSED(sequence)) override
Definition: Materials.h:49
virtual void initialize(IScheduler &scheduler, Storage &storage, const IndexSequence sequence) override
Initialize all quantities and material parameters.
Definition: Materials.cpp:50
const IEos & getEos() const
Returns the equation of state.
Definition: Materials.cpp:26
EosMaterial(const BodySettings &body, AutoPtr< IEos > &&eos)
Creates the material by specifying an equation of state.
Definition: Materials.cpp:13
Pair< Float > evaluate(const Float rho, const Float u) const
Definition: Materials.cpp:22
virtual void create(Storage &storage, const MaterialInitialContext &context) override
Create all quantities needed by the material.
Definition: Materials.cpp:30
Base class for equations of state.
Definition: Eos.h:16
Material settings and functions specific for one material.
Definition: IMaterial.h:110
Base class of rheological models.
Definition: Rheology.h:22
Interface that allows unified implementation of sequential and parallelized versions of algorithms.
Definition: Scheduler.h:27
Generalization of material with equation of state.
Definition: Materials.h:60
virtual void initialize(IScheduler &scheduler, Storage &storage, const IndexSequence sequence) override
Initialize all quantities and material parameters.
Definition: Materials.cpp:77
virtual void create(Storage &storage, const MaterialInitialContext &context) override
Create all quantities needed by the material.
Definition: Materials.cpp:70
virtual void finalize(IScheduler &scheduler, Storage &storage, const IndexSequence sequence) override
Finalizes the material for the time step.
Definition: Materials.cpp:84
SolidMaterial(const BodySettings &body, AutoPtr< IEos > &&eos, AutoPtr< IRheology > &&rheology)
Definition: Materials.cpp:63
Array with fixed number of allocated elements.
Definition: StaticArray.h:19
Container storing all quantities used within the simulations.
Definition: Storage.h:230
Shared data used when creating all bodies in the simulation.
Definition: IMaterial.h:89