Itasca C++ Interface
Loading...
Searching...
No Matches
iblockthing.h
Go to the documentation of this file.
1#pragma once
2// iblockthing.h
3
4#include "fortconv/fortdefc.h"
5#include "base/src/farray.h"
6#include "base/src/property.h"
7
13namespace itasca
14{
15 class IThing;
16}
17
18namespace block
19{
20 class IZoneThing;
21 class IFaceThing;
22 class IVertexThing;
23 class IContactThing;
24 class IFElementThing;
25 class IFEFaceThing;
26
33 {
34 public:
35
38 NONE,
39 MASTER,
40 SLAVE
41 };
42
44 virtual const itasca::IThing * getIThing() const=0;
48 inline static const TType type_ = 0x4f01ef15;
50 virtual FInt getFortranOffset() const=0;
52 virtual uint64 getBlockID() const=0;
54 virtual DVect3 getLocation() const=0;
56 virtual int getMaterialNumber() const=0;
58 virtual int getModelNumber() const=0;
60 virtual bool getFix() const=0;
62 virtual void setFix(bool b) = 0;
64 virtual string getFixString() const = 0;
66 virtual DVect3 getVelocity() const=0;
68 virtual void setVelocity(const DVect3 &)=0;
70 virtual DVect3 getDisplacement() const = 0;
72 virtual DVect3 getAngularVelocity() const=0;
74 virtual void setAngularVelocity(const DVect3 &)=0;
76 virtual double getVolume() const=0;
78 virtual double getMass() const=0;
80 virtual DVect3 getInertia() const=0;
82 virtual SymTensor getInertiaTensor() const=0;
84 virtual DVect3 getForce() const=0;
86 virtual DVect3 getMoment() const=0;
88 virtual void setMoment(const DVect3 &)=0;
90 virtual DVect3 getLoad() const=0;
92 virtual void setLoad(const DVect3 &)=0;
94 virtual int getMasterSlaveStatus() const=0;
96 virtual FInt getMasterOffset() const=0;
98 virtual bool isExcavated() const=0;
100 virtual bool isRemoved() const=0;
102 virtual bool getHidden() const=0;
104 virtual bool isWall() const=0;
106 virtual bool isRigid() const=0;
108 virtual void getEdgeAngle(double *max, double *min) const=0;
110 virtual double getMinEdge() const=0;
112 virtual double getMaxAspect() const=0;
114 virtual double getMinFaceArea() const=0;
116 virtual double getSurfaceArea() const = 0;
119 virtual bool isConcave(double d = 180.0) const=0;
121 virtual bool isValid() const=0;
124 virtual bool getBit(int bit) const=0;
130 virtual void setBit(int bit,bool b) const=0;
133 virtual base::Property getValue(int index) const=0;
138 virtual void setValue(int index,const base::Property &v) const=0;
141 virtual double getDensity() const=0;
144 virtual void setDensity(double d)=0;
146 virtual double getDensityScalingFactor() const=0;
151 virtual FArray<const IFaceThing *> getFaces(bool rigid) const=0;
155 virtual FArray<uint64> getZoneIDs() const = 0;
157 virtual bool isSlave() const=0;
159 virtual uint64 getMasterID() const=0;
165 virtual uint32 numGP() const = 0;
173 virtual uint32 getFreeField() const = 0;
174 // Add a single gridpoint to a block.
175 virtual FInt addGridpoint(int ifac, double x, double y, double z) = 0;
176 // Add a single tet element to a block.
177 virtual void addTetZone(FInt n0, FInt n1, FInt n2, FInt n3) = 0;
178 // Post processing stuff after gridpoints and tet zones added to a block
179 virtual void block_import_post() = 0;
181 virtual bool isInternal() const=0;
183 virtual bool isFaceBlock() const = 0;
185 virtual const IBlockThing * getHostBlock() const = 0;
187 virtual uint64 getHostID() const=0;
189 virtual const IVertexThing * findVertex(DVect3 v) const = 0;
191 virtual double getBlockCondition(int i) const = 0;
192
193 };
194
195} // end namespace block
196// EOF
An array class that attempts to minimize unnecessary heap access.
Definition farray.h:25
A symmetric 2nd order tensor.
Definition symtensor.h:22
Definition property.h:36
This is the interface for BlockThing, a class that holds extra data not in the fortran arrays....
Definition iblockthing.h:33
virtual void setAngularVelocity(const DVect3 &)=0
Set block angular velocity (rigid)
virtual double getDensityScalingFactor() const =0
Return density scaling factor.
virtual DVect3 getVelocity() const =0
Return block velocity.
virtual void setFix(bool b)=0
Set block fixity condition.
virtual bool isConcave(double d=180.0) const =0
virtual double getVolume() const =0
Return block volume.
virtual const itasca::IThing * getIThing() const =0
Returns a const IThing pointer.
virtual void setBit(int bit, bool b) const =0
virtual FArray< const IFaceThing * > getFaces(bool rigid) const =0
virtual void getEdgeAngle(double *max, double *min) const =0
Get maximum and minimum angle between block (not zone) faces in degrees. Angle > 180 = concave.
virtual DVect3 getLocation() const =0
Returns block centroid position.
virtual bool isWall() const =0
Returns true if block is a wall.
virtual FArray< const IZoneThing * > getZones() const =0
Get array of ZoneThings that make up this block.
virtual SymTensor getInertiaTensor() const =0
Return moment of inertia tensor.
virtual double getMass() const =0
Return block mass.
virtual double getBlockCondition(int i) const =0
get block condition
virtual bool isValid() const =0
Return true if BlockThing and Fortran block are in sync.
virtual base::Property getValue(int index) const =0
virtual uint32 getFreeField() const =0
Return dynamic free field code (0-4?)
virtual FArray< uint64 > getZoneIDs() const =0
Get array of zone ids that make up this block.
virtual DVect3 getLoad() const =0
Return load applied to block centroid (rigid)
virtual double getDensity() const =0
virtual bool isFaceBlock() const =0
Return if block is a face block.
virtual FInt getFortranOffset() const =0
Return block fortran offset. Necessary for gui queries.
virtual FArray< const IFEFaceThing * > getFEFaces() const =0
Get list of finite element faces associated with block.
MasterSlaveStatus
Master/Slave status.
Definition iblockthing.h:37
virtual void setLoad(const DVect3 &)=0
Return load applied to block centroid (rigid)
static const TType type_
type used in IThing typing system
Definition iblockthing.h:48
virtual int getMasterSlaveStatus() const =0
Return block master/slave condition: 0 = none, 1 = master, 2 = slave.
virtual bool isInternal() const =0
Return if block is internal (has face blocks)
virtual FArray< const IVertexThing * > getVertices() const =0
Returns all vertices.
virtual bool isExcavated() const =0
Returns true if block is marked as excavated.
virtual void setDensity(double d)=0
virtual FInt getMasterOffset() const =0
Return fortran index of master block (0 if none)
virtual DVect3 getMoment() const =0
Return block centroid moment (rigid)
virtual DVect3 getForce() const =0
Return block centroid force sum (rigid)
virtual uint64 getBlockID() const =0
Return Thing ID.
virtual double getSurfaceArea() const =0
Return surface area.
virtual void setValue(int index, const base::Property &v) const =0
Note - this is const through some hack so that we can use const BlockThings when getting data.
virtual DVect3 getInertia() const =0
Return block moment of inertia.
virtual bool getFix() const =0
Return block fixity condition.
virtual double getMinEdge() const =0
Returns the minimum edge length.
virtual bool getHidden() const =0
Returns true if block is hidden.
virtual string getFixString() const =0
return string indicating fix condition
virtual itasca::IThing * getIThing()=0
Returns a IThing pointer.
virtual DVect3 getAngularVelocity() const =0
Return block angular velocity.
virtual void setMoment(const DVect3 &)=0
set block centroid moment (rigid)
virtual double getMinFaceArea() const =0
Return minimum face area (rigid faces, not zones)
virtual int getModelNumber() const =0
Return block model number.
virtual uint64 getHostID() const =0
return host block ID for face blocks. Otherwise return 0
virtual FArray< const IFElementThing * > getFElements() const =0
Get list of finite elements associated with block.
virtual void setVelocity(const DVect3 &)=0
Set block velocity (rigid)
virtual bool isSlave() const =0
Return true if this block is a slave. False otherwise.
virtual const IBlockThing * getHostBlock() const =0
Return host block if face block. Otherwise return null.
virtual bool getBit(int bit) const =0
virtual const IVertexThing * findVertex(DVect3 v) const =0
Find vertex of block.
virtual bool isRemoved() const =0
Returns true if block is removed.
virtual FArray< FArray< const IVertexThing * > > getFaceVertices() const =0
Returns vertices on each original face.
virtual uint32 numGP() const =0
Return number of vertices.
virtual FArray< const IContactThing * > getContacts() const =0
Get all of the ContactThings associated with the block.
virtual int getMaterialNumber() const =0
Return block material number.
virtual uint64 getMasterID() const =0
Returns id of master block. Return 0 if not a slave.
virtual bool isRigid() const =0
Returns true if block is rigid (unzoned)
virtual double getMaxAspect() const =0
Return maximum aspect ratio (edge length / volume^(1/3))
virtual DVect3 getDisplacement() const =0
Get displacement (average of node displacements)
This is the interface for VertexThing. This will be stored in a container and the ID will be stored i...
Definition ivertexthing.h:30
Base class for items that will be stored in containers.
Definition ithing.h:31
An array class that attempts to minimize unnecessary heap access.
uint32 TType
class type indicator
Definition basedef.h:47
int64 FInt
Interface to provide access to 3DEC modules, global data, list of 3DEC entities, etc.
Definition iblockdef.h:14
namespace Itasca
Definition basememory.cpp:14