SPH
Rheology.h
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include "common/ForwardDecl.h"
12 
14 
16 class IFractureModel;
17 class IScheduler;
18 
22 class IRheology : public Polymorphic {
23 public:
33  virtual void create(Storage& storage,
34  IMaterial& material,
35  const MaterialInitialContext& context) const = 0;
36 
44  virtual void initialize(IScheduler& scheduler, Storage& storage, const MaterialView material) = 0;
45 
53  virtual void integrate(IScheduler& scheduler, Storage& storage, const MaterialView material) = 0;
54 };
55 
56 
58 class VonMisesRheology : public IRheology {
59 private:
61 
62 public:
67 
70 
72 
73  virtual void create(Storage& storage,
74  IMaterial& settings,
75  const MaterialInitialContext& context) const override;
76 
77  virtual void initialize(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
78 
79  virtual void integrate(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
80 };
81 
82 
85 private:
87 
88 public:
93 
96 
98 
99  virtual void create(Storage& storage,
100  IMaterial& material,
101  const MaterialInitialContext& context) const override;
102 
103  virtual void initialize(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
104 
105  virtual void integrate(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
106 };
107 
109 class ElasticRheology : public IRheology {
110 public:
111  virtual void create(Storage& storage,
112  IMaterial& material,
113  const MaterialInitialContext& context) const override;
114 
115  virtual void initialize(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
116 
117  virtual void integrate(IScheduler& scheduler, Storage& storage, const MaterialView material) override;
118 };
119 
Generic dynamically allocated resizable storage.
Simplified implementation of std::unique_ptr, using only default deleter.
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
#define NAMESPACE_SPH_END
Definition: Object.h:12
Symmetric traceless 2nd order tensor.
Pressure dependent failure modes .
Definition: Rheology.h:84
virtual void integrate(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Computes derivatives of the time-dependent quantities of the rheological model.
Definition: Rheology.cpp:190
virtual void initialize(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Evaluates the stress tensor reduction factors.
Definition: Rheology.cpp:119
DruckerPragerRheology()
Constructs a rheology with no fragmentation model.
Definition: Rheology.cpp:94
virtual void create(Storage &storage, IMaterial &material, const MaterialInitialContext &context) const override
Creates all the necessary quantities and material parameters needed by the rheology.
Definition: Rheology.cpp:104
Perfectly elastic material, no yielding nor fragmentation.
Definition: Rheology.h:109
virtual void integrate(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Computes derivatives of the time-dependent quantities of the rheological model.
Definition: Rheology.cpp:227
virtual void initialize(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Evaluates the stress tensor reduction factors.
Definition: Rheology.cpp:223
virtual void create(Storage &storage, IMaterial &material, const MaterialInitialContext &context) const override
Creates all the necessary quantities and material parameters needed by the rheology.
Definition: Rheology.cpp:216
Interface representing a fragmentation model.
Definition: Damage.h:20
Material settings and functions specific for one material.
Definition: IMaterial.h:110
Base class of rheological models.
Definition: Rheology.h:22
virtual void create(Storage &storage, IMaterial &material, const MaterialInitialContext &context) const =0
Creates all the necessary quantities and material parameters needed by the rheology.
virtual void integrate(IScheduler &scheduler, Storage &storage, const MaterialView material)=0
Computes derivatives of the time-dependent quantities of the rheological model.
virtual void initialize(IScheduler &scheduler, Storage &storage, const MaterialView material)=0
Evaluates the stress tensor reduction factors.
Interface that allows unified implementation of sequential and parallelized versions of algorithms.
Definition: Scheduler.h:27
Non-owning wrapper of a material and particles with this material.
Definition: IMaterial.h:30
Container storing all quantities used within the simulations.
Definition: Storage.h:230
Introduces plastic behavior for stress tensor, using von Mises yield criterion .
Definition: Rheology.h:58
VonMisesRheology()
Constructs a rheology with no fragmentation model.
Definition: Rheology.cpp:15
virtual void create(Storage &storage, IMaterial &settings, const MaterialInitialContext &context) const override
Creates all the necessary quantities and material parameters needed by the rheology.
Definition: Rheology.cpp:25
virtual void integrate(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Computes derivatives of the time-dependent quantities of the rheological model.
Definition: Rheology.cpp:85
virtual void initialize(IScheduler &scheduler, Storage &storage, const MaterialView material) override
Evaluates the stress tensor reduction factors.
Definition: Rheology.cpp:36
Shared data used when creating all bodies in the simulation.
Definition: IMaterial.h:89
Base class for all polymorphic objects.
Definition: Object.h:88