Itasca C++ Interface
state.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "conmodelbase.h"
4 #include "igenerictet.h"
5 #include "igenericzone.h"
6 #include <array>
7 
8 namespace itasca {
9  class IProgram;
10 }
11 
17 namespace models {
18  using namespace itasca;
19 
32  struct State {
33  public:
34  static const uint32 max_working_ = 50;
35  static const uint32 max_iworking_ = 10;
36  enum class CondType {D3=0, D2, D1};
37 
38  virtual ~State() {}
42  virtual double getSubZoneVolume() const=0;
44  virtual double getZoneVolume(bool deformed = false) const=0;
49  virtual DVect3 getRotation() const=0;
52  virtual double getDensity() const=0;
53  virtual void setDensity(const double&)=0;
54  virtual double getTemperature() const=0;
55  virtual double getTimeStep() const=0;
56  virtual double getPorosity() const=0;
57  virtual bool isLarge() const=0;
58  virtual bool isThermal() const=0;
59  virtual bool isCreep() const=0;
60  virtual bool isFluid() const=0;
61  virtual bool isThermalInUse() const = 0;
62  virtual bool isCreepInUse() const = 0;
63  virtual bool isFluidInUse() const = 0;
66  virtual SymTensor getEffectiveZoneStress() const=0;
67  virtual double getAveragePP() const=0;
68  virtual double getTMUtility(unsigned index=0) const=0;
69  virtual double getFMUtility(unsigned index=0) const=0;
75  virtual void * getTableIndexFromID(const string &id) const=0;
77  virtual double getYFromX(void *index,const double &x) const=0;
79  virtual double getSlopeFromX(void *index,const double &x) const=0;
80  virtual IProgram *getIProgram()=0;
81  virtual IGenericZone *getIZone()=0;
82  virtual IGenericTet * getITet()=0;
83  virtual uint64 getZoneID() const=0;
84  virtual uint64 getTetID() const=0;
85  CONMODEL_EXPORT State();
89  unsigned int sub_zone_;
90  unsigned int total_sub_zones_;
91  unsigned int overlay_;
99  unsigned long state_;
100  SymTensor stnE_;
102  SymTensor stnS_;
107  bool viscous_;
116  CondType condition_;
117  std::array<double,max_working_> working_;
118  std::array<int32,max_iworking_> iworking_;
119  };
120 } // namespace models
121 // EoF
The main program access point.
Definition: iprogram.h:37
Generic base class for the tetra interface made available to the constitutive model system.
Definition: igenerictet.h:22
Generic base class for the zone interface made available to the constitutive model system.
Definition: igenericzone.h:23
Generic base class for the zone interface made available to the constitutive model system.
namespace Itasca
Definition: basememory.cpp:10
The Constitutive Model interface library.
Definition: conmodel.cpp:7
The structure used to pass information to the constitutive model.
Definition: state.h:32
virtual uint64 getTetID() const =0
The ID or index of the Tetra being processed. May be 0.
virtual IProgram * getIProgram()=0
A pointer to an IProgram interface for this code. May be null.
virtual bool isLarge() const =0
true if in large strain mode.
virtual double getTimeStep() const =0
The current time step.
virtual bool isCreepInUse() const =0
true if creep is in use.
virtual void * getTableIndexFromID(const string &id) const =0
Return a table index given an ID.
virtual double getYFromX(void *index, const double &x) const =0
The index pointer should be previously obtained from a getTableIndexFromID() call.
SymTensor stnE_
6 components of strain increment, input to run().
Definition: state.h:100
virtual double getFMUtility(unsigned index=0) const =0
Returns Fluid to Mechanical communication utility values.
virtual bool isThermal() const =0
true if thermal is configured.
virtual double getPorosity() const =0
The current zone fluid porosity.
unsigned int total_sub_zones_
Total # of sub zones involved, from all overlays. Minimum value of 1.
Definition: state.h:90
double modulus_reduction_factor_
modulus reduction factor from hysteretic damping or small strain effect.
Definition: state.h:103
virtual double getZoneVolume(bool deformed=false) const =0
Volume of the current zone as a whole.
virtual uint64 getZoneID() const =0
The ID or index of the Zone being processed. May be 0.
virtual double getSubZoneVolume() const =0
virtual double getTemperature() const =0
Temperature of the zone.
CondType condition_
condition number to define conditions.
Definition: state.h:116
virtual void setDensity(const double &)=0
set Density of the zone.
virtual IGenericZone * getIZone()=0
A pointer to the IZone being processed. May be null.
virtual bool isFluid() const =0
true if fluid/flow is configured.
std::array< int32, max_iworking_ > iworking_
This is a working area for values that must be stored between run() calls.
Definition: state.h:118
virtual double getTMUtility(unsigned index=0) const =0
Returns Thermal to Mechanical communication utility values.
virtual double getDensity() const =0
Density of the zone.
bool modulus_changed_
Definition: state.h:111
virtual SymTensor getEffectiveZoneStress() const =0
The average effective stress in the zone.
virtual bool isCreep() const =0
true if creep is configured.
double pore_pressure_increment_
Set to true in run() if modulus has changed (confined, shear, bulk).
Definition: state.h:114
virtual DVect3 getRotation() const =0
Three components of overlay unit rotation in large strain.
unsigned int sub_zone_
# of sub zone being operated on (starting at 0).
Definition: state.h:89
SymTensor stnS_
The current stress tensor is input to run(), and the model must return the updated tensor.
Definition: state.h:102
virtual double getSlopeFromX(void *index, const double &x) const =0
The index pointer should be previously obtained from a getTableIndexFromID() call.
std::array< double, max_working_ > working_
= 0, 3D general (default); = 1, 2D plane-stress; = 2, 1D uniaxial
Definition: state.h:117
virtual bool isFluidInUse() const =0
true if fluid/flow is in use.
unsigned long state_
Sub zone state bit flag.
Definition: state.h:99
unsigned int overlay_
Definition: state.h:91
virtual double getAveragePP() const =0
The average pore pressure in the zone.
bool viscous_
True if viscous strains are to be computed.
Definition: state.h:107
virtual bool isThermalInUse() const =0
true if thermal is in use.
virtual IGenericTet * getITet()=0
A pointer to the ITet in the IZone being processed. May be null.