Itasca C++ Interface
icontactthing.h
Go to the documentation of this file.
1 #pragma once
2 // icontactthing.h
3 
4 #include "iblockdef.h"
5 #include "base/src/farray.h"
6 
15 namespace itasca
16 {
17  class IThing;
18 }
19 
20 namespace block
21 {
25 
26  class IBlockThing;
27  class ISubcontactThing;
28  class IFlowPlaneThing;
29 
31  {
32  public:
33 
35  enum ContactType {Null=0, FaceFace, FaceEdge, FaceVertex, EdgeEdge, EdgeVertex, VertexVertex, Joined};
37  enum StrainEnergyType {ESTotal=1, ESTensile, ESCompressive, ESShear};
38 
40  static const FInt cpp = 38; // C++ extension from Fortran array
41 
43  inline static const TType type_ = 0x4f54d324;
45  virtual const itasca::IThing * getIThing() const=0;
47  virtual itasca::IThing * getIThing()=0;
49  virtual quint64 getContactID() const=0;
51  virtual FInt getFortranOffset() const=0;
53  virtual DVect3 getLocation() const=0;
55  virtual double getSpare1() const=0;
57  virtual quint64 getDFN_ID() const=0;
59  virtual QString getDFN_name() const = 0;
61  virtual bool getHidden() const=0;
63  virtual ContactType getContactType() const=0;
65  virtual ContactType getOriginalContactType() const = 0;
67  virtual const IBlockThing * getBlock1() const=0;
69  virtual const IBlockThing * getBlock2() const=0;
71  virtual quint64 getBlock1_ID() const=0;
73  virtual quint64 getBlock2_ID() const=0;
77  virtual int getJointSet() const=0;
80  virtual quint64 getFractureID() const=0;
82  virtual int getMaterial() const=0;
84  virtual int getConstitutive() const=0;
86  virtual DVect3 getNormal() const=0;
88  virtual double getArea() const=0;
90  virtual bool isExcavated() const=0;
92  virtual bool isRemoved() const=0;
94  virtual const IFlowPlaneThing * getFlowPlane() const=0;
96  virtual QString getTypeString() const = 0;
98  virtual double getStrainEnergy(StrainEnergyType t) const = 0;
100  virtual double getFrictionEnergy() const = 0;
102  virtual IBlockThing* getFaceBlock1() const = 0;
104  virtual IBlockThing* getFaceBlock2() const = 0;
106  virtual void triangulate()=0;
108  virtual void triangulateJoined() = 0;
110  virtual void findContactFace() = 0;
112  virtual bool hasSubcontacts() const = 0;
113  };
114 
115 } // end namespace block
116 // EOF
An array class that attempts to minimize unnecessary heap access.
Definition: farray.h:25
This is the interface for BlockThing, a class that holds extra data not in the fortran arrays....
Definition: iblockthing.h:32
Definition: icontactthing.h:31
virtual const IBlockThing * getBlock2() const =0
Return block 2 of the contact.
virtual void triangulate()=0
Triangulate subcontacts for plotting.
static const TType type_
type used in IThing typing system
Definition: icontactthing.h:43
virtual bool isExcavated() const =0
Returns true if either host block is marked as excavated.
virtual int getMaterial() const =0
Return material number.
virtual quint64 getBlock2_ID() const =0
Return the id of block 2 of the contact.
virtual double getStrainEnergy(StrainEnergyType t) const =0
Return strain energy for input type.
virtual quint64 getContactID() const =0
Get ID of contact in C++ container (not Fortran offset)
virtual quint64 getFractureID() const =0
static const FInt cpp
offset for ContactThing ID
Definition: icontactthing.h:40
virtual double getSpare1() const =0
Returns contents of contact first spare offset.
virtual quint64 getDFN_ID() const =0
Returns ID of DFN used to create contact. 0 if DFN was not used.
virtual int getConstitutive() const =0
Return constitutive model number.
virtual itasca::IThing * getIThing()=0
Returns a IThing pointer.
virtual IBlockThing * getFaceBlock2() const =0
Return second fblockthing (nullptr if not a faceblock)
virtual ContactType getContactType() const =0
Return contact type.
StrainEnergyType
enumeration of possible energy types
Definition: icontactthing.h:37
virtual DVect3 getNormal() const =0
Return the normal vector.
virtual DVect3 getLocation() const =0
Returns contact position.
virtual bool isRemoved() const =0
Returns true if either host block is removed.
virtual bool hasSubcontacts() const =0
Return true if this contact has subcontacts.
virtual const itasca::IThing * getIThing() const =0
Returns a const IThing pointer.
virtual void triangulateJoined()=0
Triangulate subcontacts for plotting.
virtual double getArea() const =0
Return area.
virtual QString getTypeString() const =0
Return type of contact as a string.
virtual double getFrictionEnergy() const =0
Return the frictional energy.
ContactType
enumeration of possible contact types
Definition: icontactthing.h:35
virtual ContactType getOriginalContactType() const =0
Return original contact type.
virtual const IBlockThing * getBlock1() const =0
Return block 1 of the contact.
virtual void findContactFace()=0
Find contact face for plotting.
virtual FArray< const ISubcontactThing * > getSubcontacts() const =0
Get array of SubcontactThings that make up this contact.
virtual const IFlowPlaneThing * getFlowPlane() const =0
Get Flow plane associated with this contact.
virtual IBlockThing * getFaceBlock1() const =0
Return first fblockthing (nullptr if not a faceblock)
virtual quint64 getBlock1_ID() const =0
Return the id of block 1 of the contact.
virtual QString getDFN_name() const =0
Returns name of DFN used to create contact. Empty string if DFN was not used.
virtual int getJointSet() const =0
Return joint set or dfn number used to create contact.
virtual bool getHidden() const =0
Returns true if contact or either host block is hidden.
virtual FInt getFortranOffset() const =0
Return contact fortran offset. Necessary for gui queries.
Definition: iflowplanething.h:28
Base class for items that will be stored in containers.
Definition: ithing.h:30
An array class that attempts to minimize unnecessary heap access.
uint32 TType
class type indicator
Definition: basedef.h:46
int32 FInt
Interface to provide access to 3DEC modules, global data, list of 3DEC entities, etc.
Definition: iblockdef.h:19
Fortran to C++ type declarations.
namespace Itasca
Definition: basememory.cpp:10