Itasca C++ Interface
Loading...
Searching...
No Matches
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
8namespace itasca {
9 class IProgram;
10}
11
17namespace 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;
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_ = 0;
90 unsigned int total_sub_zones_ = 0;
91 unsigned int overlay_ = 0;
99 unsigned long state_ = 0;
107 bool viscous_ = false;
111 bool modulus_changed_ = false;
116 CondType condition_ = CondType::D3;
117 std::array<double,max_working_> working_;
118 std::array<int32,max_iworking_> iworking_;
120 };
121} // namespace models
122// EoF
A symmetric 2nd order tensor.
Definition symtensor.h:22
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:14
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 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 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 void * getTableIndexFromID(const string &id) const =0
Return a table index given an ID.
virtual bool isFluid() const =0
true if fluid/flow is configured.
SymTensor stnPSI_
6 components of plastic strain increment.
Definition state.h:119
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.
virtual IGenericZone * getIZone()=0
A pointer to the IZone being processed. May be null.
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 IGenericTet * getITet()=0
A pointer to the ITet in the IZone being processed. May be null.
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.
virtual IProgram * getIProgram()=0
A pointer to an IProgram interface for this code. May be null.
bool viscous_
True if viscous strains are to be computed.
Definition state.h:107
static const uint32 max_iworking_
The size of the iworking_ array.
Definition state.h:35
virtual bool isThermalInUse() const =0
true if thermal is in use.
static const uint32 max_working_
The size of the working_ array.
Definition state.h:34