10 #include "utility/interface/igroup.h" 23 class ConstitutiveModel;
33 static const quint32 ulNumZoneType =
dimval(2,5);
34 static const quint32 numTperOv_ =
dimval(2,5);
35 static const quint32 numGPperZ_ =
dimval(4,8);
36 static const quint32 numGPperT_ =
dimval(3,4);
37 static const quint32 numAdjZones_ =
dimval(4,6);
38 static const quint32 numFacesZ_ =
dimval(4,6);
39 static const quint32 numGPperFace_ =
dimval(2,4);
40 static const quint32 minGPperFace_ =
dimval(2,3);
41 static const quint32 numEdgeZ_ =
dimval(4,12);
60 inline bool operator==(
const FaceID &
id)
const {
return id1_==
id.id1_ && id2_==
id.id2_ && id3_==
id.id3_ && id4_==
id.id4_; }
61 inline bool operator!=(
const FaceID &
id)
const {
return !operator==(
id); }
62 inline bool operator<(
const FaceID &
id)
const {
63 if (id1_<
id.id1_)
return true;
if (id1_>
id.id1_)
return false;
64 if (id2_<
id.id2_)
return true;
if (id2_>
id.id2_)
return false;
65 if (id3_<
id.id3_)
return true;
if (id3_>
id.id3_)
return false;
66 if (id4_<
id.id4_)
return true;
return false;
68 inline quint64 &operator[](quint32 index) {
77 inline quint64 operator[](quint32 index)
const {
91 inline bool operator==(
const FaceID &
id)
const {
return id1_==
id.id1_ && id2_==
id.id2_; }
92 inline bool operator!=(
const FaceID &
id)
const {
return !operator==(
id); }
93 inline bool operator<(
const FaceID &
id)
const {
94 if (id1_<
id.id1_)
return true;
if (id1_>
id.id1_)
return false;
95 if (id2_<
id.id2_)
return true;
return false;
97 inline quint64 &operator[](quint32 index) {
104 inline quint64 operator[](quint32 index)
const {
119 inline static const TType type_ = 0x4c815bf8;
120 enum class Change { MechNull, AddToList, RemoveFromList, FlNull, ThNull };
136 virtual const IThing * getIThing()
const=0;
138 virtual IThing * getIThing()=0;
141 virtual const IZone * getNext()
const=0;
144 virtual IZone * getNext()=0;
146 virtual quint32 getNumGp()
const=0;
149 virtual const IGp * getGp(quint32 index)
const=0;
152 virtual quint32 getFaceSize(quint32 face)
const=0;
156 virtual const IGp * getFaceGp(quint32 face,quint32 index)
const=0;
160 virtual quint32 getFaceGpIndex(quint32 face,quint32 index)
const=0;
164 virtual quint32 getEdgeGpIndex(quint32 edge, quint32 index)
const=0;
166 virtual FaceID getFaceID(quint32 side)
const=0;
175 virtual DVect getFaceNormal(quint32 face)
const=0;
178 virtual DVect getFaceCentroid(quint32 face)
const=0;
181 virtual const IZone * getJoin(quint32 face)
const=0;
188 virtual QString getFaceGroupName(quint32 side,
const ISlotID &slot=
ISlotID())
const=0;
191 virtual bool addFaceGroup(quint32 side,
const IGroupID &group)=0;
193 virtual bool removeFaceGroup(quint32 side,
const IGroupID &group)=0;
196 virtual uint isFaceInGroup(quint32 side,
const FArray<IGroupID> &ids,
TType type=0,
bool only=
false)
const=0;
200 virtual void copyFaceGroups(quint32 side,
const IThing *t)=0;
203 virtual uint getFaceExtraSize(quint32 side)
const=0;
205 virtual const fish::IParameter *getFaceExtra(quint32 side,uint index)
const=0;
208 virtual void setFaceExtra(quint32 side,uint index,
const fish::IParameter &p)=0;
210 virtual bool getFaceHidden(quint32 side)
const=0;
212 virtual bool setFaceHidden(quint32 side,
bool b)=0;
214 virtual bool getFaceSelected(quint32 side)
const=0;
216 virtual bool setFaceSelected(quint32 side,
bool b)=0;
218 virtual bool isFaceInRange(quint32 side,
const IRange *range)
const=0;
220 virtual double getDensity()
const=0;
222 virtual void setDensity(
const double &d)=0;
224 virtual bool isMechanicalNull()
const=0;
226 virtual bool isThermalNull()
const = 0;
228 virtual bool isFluidNull()
const = 0;
230 virtual Code getCode()
const=0;
233 virtual double getAspectTest()
const=0;
236 virtual double getAspectTetTest()
const=0;
238 virtual void copyState(
const IZone *zone)=0;
240 virtual QString getFlowModel()
const=0;
243 virtual DVect getThermalFlux()
const=0;
245 virtual int getFace(
const std::array<quint64,minGPperFace_> &uid)
const=0;
250 virtual bool getFaceNormalArea(
int iFace,
DVect *dvNorm,
double *dArea)
const=0;
263 enum class StrainMode { ShearRate=1, ShearInc=2, VolRate=3, VolInc=4, FullRate=5, FullInc=6, FullRotRate=7, FullRotInc=8 };
264 virtual double getSSR(StrainMode mode,
SymTensor *fsr)
const=0;
265 virtual SymTensor getTetStrainRate(
int overlay,
int number)
const=0;
266 virtual SymTensor getTetStrainIncrement(
int overlay,
int number)
const=0;
267 virtual SymTensor getStrainRate()
const=0;
268 virtual SymTensor getStrainIncrement()
const=0;
270 virtual bool getIsDegenerate(QString &sErr)
const =0;
272 virtual bool getSupports2Overlays(QString &sErr) =0;
274 virtual const ITet * getOverlay(quint32 ov)
const=0;
276 virtual ITet * getOverlay(quint32 ov)=0;
278 virtual const IHysDamp * getHysDamp()
const=0;
285 virtual int initializeModels()=0;
288 virtual bool getHasALiveMechModel()
const=0;
290 virtual bool getHasALiveFluidModel()
const=0;
292 virtual bool getHasALiveThermModel()
const=0;
294 virtual QString getModelName()
const=0;
298 virtual void setModelName(
const QString &qs) =0;
300 virtual double getSmallestNormalizedTetVolume()
const=0;
302 virtual double getQualityTest(
int iTestNum)
const=0;
308 virtual double getPlanarity()
const=0;
310 virtual int getNumTets()
const =0;
313 virtual double getOrthoTest()
const=0;
315 virtual double getVolumeTest()
const=0;
317 virtual double getZoneCondition(
int i=0)
const=0;
319 virtual bool getBadZoneExtruder()
const=0;
322 virtual double getAvePP()
const=0;
326 virtual QVariant getProperty(
const QString &sc)
const =0;
327 virtual QVariant getProperty(uint index)
const=0;
330 virtual bool setProperty(
const QString &sc,
const QVariant &v) =0;
331 virtual bool setProperty(
int index,
const QVariant &v) =0;
334 virtual double getVolumeD(
bool deformed)
const=0;
336 virtual DVect getCentroid()
const=0;
338 virtual SymTensor getAveStress(
bool effective=
false)
const=0;
340 virtual double getAvgTemp()
const=0;
343 virtual DVect getFlowVector()
const=0;
345 virtual uint getAvgState(
int *piNum,
bool bAvgKeyword,
bool noPast=
false)
const=0;
353 virtual QString getStateName(quint32 bit)
const=0;
362 virtual void setStress(
const double &val,quint32 pn)=0;
364 virtual void setStress(
const SymTensor &sym)=0;
367 virtual void setState(quint32 state)=0;
372 virtual void getTetGridPoints(
int iOverlay,
int iTet,
IGp *gplist[]) =0;
374 virtual const IThermZone * getIThermZone()
const=0;
379 virtual QStringList getPropertyNames()
const=0;
383 virtual quint32 getPropertyIndex(
const QString &sc)
const=0;
386 virtual QString getPropertyName(quint32 index)
const=0;
389 virtual bool getBit(
int bit)
const=0;
394 virtual void setBit(
int bit,
bool b)
const=0;
397 virtual QVariant getValue(
int index)
const=0;
401 virtual void setValue(
int index,
const QVariant &v)
const=0;
403 virtual const IFluidZone * getIFluidZone()
const=0;
408 virtual const IDynZone * getIDynZone()
const=0;
410 virtual IDynZone * getIDynZone() =0;
412 virtual IZone * getLinkZone(quint32 index)=0;
415 virtual const IZone * getLinkZone(quint32 index)
const=0;
416 virtual quint32 getLinkIndex(quint32 index)
const=0;
425 virtual bool fishIO(
bool save,fish::File *pnt)=0;
430 virtual double getStressStrengthRatio(
const SymTensor &s)
const=0;
438 virtual double getWPVol()
const =0;
440 virtual void setWPVol(
const double &dwpv)=0;
442 virtual double getWPShear()
const=0;
444 virtual void setWPShear(
const double &dwps)=0;
446 virtual double getWPTotal()
const=0;
448 virtual double getWEVol()
const =0;
450 virtual void setWEVol(
const double &dwpv)=0;
452 virtual double getWEShear()
const=0;
454 virtual void setWEShear(
const double &dwps)=0;
456 virtual double getWETotal()
const=0;
458 virtual void setFluidModel(
const QString &name)=0;
462 virtual QString getFluidModel(
bool exception=
true)
const=0;
464 virtual QStringList getFluidProperties()
const=0;
466 virtual double getFluidProp(
const QString &name,
bool exception=
true)
const =0;
467 virtual int getFluidPropIndex(
const QString &name)
const=0;
468 virtual double getFluidProp(uint index)
const=0;
470 virtual void setFluidProp(
const QString &name,
const double &val)=0;
471 virtual void setFluidProp(
int index,
const double &val)=0;
474 virtual void setThermModel(
const QString &name)=0;
476 virtual QStringList getThermProperties()
const=0;
478 virtual QString getThermModel(
bool exception=
true)
const=0;
480 virtual double getThermProp(
const QString &name,
bool exception=
true)
const =0;
481 virtual int getThermPropIndex(
const QString &name)
const=0;
482 virtual double getThermProp(uint index)
const=0;
484 virtual void setThermProp(
const QString &name,
const double &val)=0;
485 virtual void setThermProp(
int index,
const double &val)=0;
487 virtual bool invalidZone(
bool mech=
true,
bool therm=
false,
bool fluid=
false,
bool orVal=
false)
const=0;
501 virtual bool isInZn(
const DVect &dv,
const double &relTol=1.0e-5,
bool use2=
false)
const=0;
502 virtual bool checkZoneForPlot(
bool removeHidden,
bool showSelected,
bool hideMech,
bool hideTherm,
bool hideFluid)
const=0;
506 bool internalFaces_ =
false;
508 bool zoneFace_ =
false;
509 bool onlySelectedFaces_ =
false;
512 bool selected_ =
false;
518 virtual bool checkFaceForPlotFace(quint32 side,quint64 *
id,
FArray<DVect> *vertices,
bool excludeSelected=
true)
const=0;
519 virtual bool checkFaceForPlotFaceSelected(quint32 side,quint64 *
id,
FArray<DVect> *vertices)
const=0;
520 virtual void fillZoneVertices(
FArray<DVect> *vertices)
const=0;
521 virtual void fillAllZoneFaces(
FArray<
FArray<DVect>> *allVertices,
bool *selected,quint64 *
id)
const=0;
522 virtual int findFaceNormal(
const DVect &v)
const=0;
523 virtual double getMultiplier()
const=0;
524 virtual bool CMSupportsHysDamp()
const {
return false;} ;
constexpr const U & dimval(const T &, const U &val3)
Returns the first argument in a 2D compile, and the second in a 3D compile.
Definition: dim.h:179
Interface to a group object.
Definition: igroup.h:9
Definition: iparameter.h:16
Interface to a filter, used as the main method for filtering objects.
Definition: irange.h:31
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
DIM - Provides code portability between 2D and 3D codes.
StrainMode
Definition: izone.h:263
Generic base class for the zone interface made available to the constitutive model system.
The Constitutive Model interface library.
Definition: conmodel.cpp:7
An array class that attempts to minimize unnecessary heap access.
Interface to provide access to a zone.
Definition: izone.h:116
unsigned int TType
class type indicator
Definition: basedef.h:41
A symmetric 2nd order tensor.
Definition: symtensor.h:19
The base class for constitutive model plug-ins.
Definition: conmodel.h:32
Interface to access dynamic zone data.
Definition: idynzone.h:12
Interface to access fluid zone data.
Definition: ifluidzone.h:13
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
Interface to provide access to a gridpoint.
Definition: igp.h:64
An array class that attempts to minimize unnecessary heap access.
Definition: farray.h:27
Generic base class for the zone interface made available to the constitutive model system.
Definition: igenericzone.h:22
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145
Code
Possible Zone types code.
Definition: izone.h:122
Interface to hysteretic damping.
Definition: ihysdamp.h:12
Interface to one of the tetrahedra used to implement mixed-discretization in a zone.
Definition: itet.h:26
Interface to access zone thermal data.
Definition: ithermzone.h:13