FemProcess
The GeMA Fem Process Plugin
gmpFemPhysicsCommon.h
Go to the documentation of this file.
1 /************************************************************************
2 **
3 ** Copyright (C) 2014 by Carlos Augusto Teixera Mendes
4 ** All rights reserved.
5 **
6 ** This file is part of the "GeMA" software. It's use should respect
7 ** the terms in the license agreement that can be found together
8 ** with this source code.
9 ** It is provided AS IS, with NO WARRANTY OF ANY KIND,
10 ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
11 ** A PARTICULAR PURPOSE.
12 **
13 ************************************************************************/
14 
24 #ifndef _GEMA_PLUGIN_FEM_PHYSICS_COMMON_H_
25 #define _GEMA_PLUGIN_FEM_PHYSICS_COMMON_H_
26 
27 #include "gmpFemPhysics.h"
28 #include <gmBoundaryCondition.h>
29 
30 #include <luaEnv.h>
31 #include <QList>
32 
35 class GmpFemPhysicsData;
38 
40 class GMP_FEM_PROCESS_API_EXPORT GmpFemPhysicsCommon: public GmpFemPhysics
41 {
42 public:
43 
45  struct RequiredIf
46  {
49  {
50  EQ,
51  NEQ,
52  LT,
53  LTE,
54  GT,
55  GTE,
58  OR,
59  AND,
60  };
61 
63  RequiredIf(bool required) : _mode(required), _l(NULL), _r(NULL) {}
64 
73  : _mode(2), _type(type), _attr(attr), _op(op), _val(val), _l(NULL), _r(NULL)
74  {
75  assert(type == "dimension" || type == "attributes" || type == "stateVars" || type == "properties");
76  assert(type == "dimension" || !attr.isEmpty());
77  assert(((op == EXISTS || op == NOT_EXISTS) && val.isNull()) ||
78  ((op != EXISTS && op != NOT_EXISTS) && !val.isNull()));
79  }
80 
82  RequiredIf(const RequiredIf& l, RequiredIfOp op, const RequiredIf& r)
83  : _mode(3), _op(op), _l(new RequiredIf(l)), _r(new RequiredIf(r))
84  {
85  assert(op == OR || op == AND);
86  }
87 
88  // Copy constructor. Needded since left and right operads for logical cluses are allocated by the object
89  RequiredIf(const RequiredIf& other)
90  {
91  _mode = other._mode;
92  _type = other._type;
93  _attr = other._attr;
94  _op = other._op;
95  _val = other._val;
96  _l = other._l ? new RequiredIf(*other._l) : NULL;
97  _r = other._r ? new RequiredIf(*other._r) : NULL;
98  }
99 
101  ~RequiredIf() { delete _l; delete _r; }
102 
103  bool operator()(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m) const;
104 
105  int _mode;
110  const RequiredIf* _l;
111  const RequiredIf* _r;
112  };
113 
115  struct Size
116  {
117  enum
118  {
119  Any = -1,
120  Dimension = -2,
121  Dimension2 = -3,
122  AttrVal = -4,
123  AttrLin = AttrVal,
124  AttrCol = -5,
125  };
126 
128  Size(int lin = Any, int col = Any) : _nlin(lin), _ncol(col) { assert(lin > AttrLin && col > AttrLin); }
129 
134  Size(int lin, QString linType, QString linAttr, int col, QString colType, QString colAttr)
135  : _nlin(lin), _ncol(col), _linAttrType(linType), _linAttr(linAttr), _colAttrType(colType), _colAttr(colAttr) {}
136 
141  int nlin(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m = NULL) const { return dim(p, m, _nlin, _linAttrType, _linAttr); }
142 
147  int ncol(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m = NULL) const { return dim(p, m, _ncol, _colAttrType, _colAttr); }
148 
149  int dim(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m, int val, QString valType, QString valAttr) const;
150 
151  int _nlin;
152  int _ncol;
157  };
158 
160  struct Attribute
161  {
164  {
167  Int,
176  };
177 
179  Attribute() : _id(-1), _type(User), _size(-1, -1), _required(false) {}
180 
182  Attribute(int id, QString name, AttributeType type, int nlin, int ncol, const RequiredIf& required, QString unit = "", QVariant defValue = QVariant())
183  : _id(id), _name(name), _type(type), _size(nlin, ncol), _unit(unit), _defVal(defValue), _required(required) { assert(id >= 0 && type != Enum); }
184 
186  Attribute(int id, QString name, AttributeType type, const RequiredIf& required, QString unit = "", QVariant defValue = QVariant())
187  : _id(id), _name(name), _type(type), _size(-1, -1), _unit(unit), _defVal(defValue), _required(required) { assert(id >= 0 && type != Enum); }
188 
190  Attribute(int id, QString name, AttributeType type, QVariant defValue)
191  : _id(id), _name(name), _type(type), _size(-1, -1), _defVal(defValue), _required(false) { assert(id >= 0 && type != Enum); }
192 
194  Attribute(int id, QString name, AttributeType type, int nlin, int ncol, QVariant defValue)
195  : _id(id), _name(name), _type(type), _size(nlin, ncol), _defVal(defValue), _required(false) { assert(id >= 0 && type != Enum); }
196 
198  Attribute(int id, QString name, const QMap<QString, int>& enumMap, const RequiredIf& required, QString unit = "", QVariant defValue = QVariant())
199  : _id(id), _name(name), _type(Enum), _enumMap(enumMap), _size(-1, -1), _unit(unit), _defVal(defValue), _required(required) { assert(id >= 0); }
200 
202  Attribute(int id, QString name, const QMap<QString, int>& enumMap, QVariant defValue)
203  : _id(id), _name(name), _type(Enum), _enumMap(enumMap), _size(-1, -1), _defVal(defValue), _required(false) { assert(id >= 0); }
204 
206  operator QVariant() const { QVariant v; v.setValue(*this); return v; }
207 
208  int nlin(const GmpFemPhysicsCommon* p) const { return _size.nlin(p); }
209  int ncol(const GmpFemPhysicsCommon* p) const { return _size.ncol(p); }
210 
211  int _id;
219  };
220 
222  struct ValueType
223  {
225  ValueType(GmDimType type, int nlin = -1, int ncol = -1, bool canBeFunction = true, int history = -1, const char* format = "")
226  : _type(type), _size(nlin, ncol), _function(canBeFunction), _history(history), _format(format) {}
227 
229  ValueType(GmDimType type, int nlin, QString linType, QString linAttr, int ncol, QString colType, QString colAttr,
230  bool canBeFunction = true, int history = -1, const char* format = "")
231  : _type(type), _size(nlin, linType, linAttr, ncol, colType, colAttr),
232  _function(canBeFunction), _history(history), _format(format) {}
233 
234  int nlin(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m = NULL) const { return _size.nlin(p, m); }
235  int ncol(const GmpFemPhysicsCommon* p, GmpFemPhysicsCommonMaterial* m = NULL) const { return _size.ncol(p, m); }
236 
239  bool _function;
240  int _history;
242  };
243 
245  struct Value
246  {
248  Value() : _id(-1), _required(false), _historyRefId(-1), _historyState(0), _historyLocked(true) {}
249 
251  Value(int id, QString name, QString description, QString unit, const ValueType& type, const RequiredIf& required = RequiredIf(true))
252  : _id(id), _name(name), _description(description), _unit(unit), _types(QList<ValueType>() << type), _required(required),
253  _historyRefId(-1), _historyState(0), _historyLocked(true) { assert(id >= 0); }
254 
256  Value(int id, QString name, QString description, QString unit, const QList<ValueType>& types, const RequiredIf& required = RequiredIf(true))
257  : _id(id), _name(name), _description(description), _unit(unit), _types(types), _required(required),
258  _historyRefId(-1), _historyState(0), _historyLocked(true)
259  { assert(id >= 0); }
260 
262  operator QVariant() const { QVariant v; v.setValue(*this); return v; }
263 
264  int _id;
273  };
274 
276  struct ScalarValue : public Value
277  {
280 
282  ScalarValue(int id, QString name, QString description, QString unit, const RequiredIf& required = RequiredIf(true),
283  bool canBeFunction = true, int history = -1, const char* format = "")
284  : Value(id, name, description, unit, ValueType(GM_SCALAR_VALUE, -1, -1, canBeFunction, history, format), required) {}
285  };
286 
288  struct VectorValue: public Value
289  {
292 
294  VectorValue(int id, QString name, QString description, QString unit, int nlin, const RequiredIf& required = RequiredIf(true),
295  bool canBeFunction = true, int history = -1, const char* format = "")
296  : Value(id, name, description, unit, ValueType(GM_VECTOR_VALUE, nlin, -1, canBeFunction, history, format), required) {}
297 
299  VectorValue(int id, QString name, QString description, QString unit, int nlin, QString linType, QString linAttr,
300  const RequiredIf& required = RequiredIf(true), bool canBeFunction = true, int history = -1, const char* format = "")
301  : Value(id, name, description, unit, ValueType(GM_VECTOR_VALUE, nlin, linType, linAttr, -1, "", "",
302  canBeFunction, history, format), required) {}
303  };
304 
306  struct MatrixValue: public Value
307  {
310 
312  MatrixValue(int id, QString name, QString description, QString unit, int nlin, int ncol, const RequiredIf& required = RequiredIf(true),
313  bool canBeFunction = true, int history = -1, const char* format = "")
314  : Value(id, name, description, unit, ValueType(GM_MATRIX_VALUE, nlin, ncol, canBeFunction, history, format), required) {}
315 
319  MatrixValue(int id, QString name, QString description, QString unit, int nlin, QString linType, QString linAttr,
320  int ncol, QString colType, QString colAttr, const RequiredIf& required = RequiredIf(true),
321  bool canBeFunction = true, int history = -1, const char* format = "")
322  : Value(id, name, description, unit, ValueType(GM_MATRIX_VALUE, nlin, linType, linAttr, ncol, colType, colAttr,
323  canBeFunction, history, format), required) {}
324  };
325 
327  struct HistoryValue: public Value
328  {
331 
332  HistoryValue(int id, int refId, int state, bool locked = true)
333  : Value(id, "", "", "", QList<ValueType>())
334  {
335  assert(refId >= 0);
336  _historyRefId = refId;
337  _historyState = state;
338  _historyLocked = locked;
339  }
340  };
341 
345  template <class T> class TList: public QList<T>
346  {
347  public:
348  typedef T listType;
349  operator QVariant() const { QVariant v; v.setValue(*this); return v; }
350  TList& operator<< (const T& t) { this->append(t); return *this; }
351  };
352 
353  typedef TList<int> IntList;
356 
358  struct Bc
359  {
360  enum BcType
361  {
367  };
368 
370  {
374  };
375 
377  Bc() : _id(-1), _required(false) {}
378 
380  Bc(int id, QString name, BcType bcType, BcUseType bcUseType, const Value& bcValue, const RequiredIf& required = RequiredIf(false))
381  : _id(id), _name(name), _bcType(bcType), _bcUseType(bcUseType),
382  _bcValues(ValueList() << bcValue), _required(required) { assert(id >= 0); }
383 
385  Bc(int id, QString name, BcType bcType, BcUseType bcUseType, const ValueList& bcValues, const RequiredIf& required = RequiredIf(false))
386  : _id(id), _name(name), _bcType(bcType), _bcUseType(bcUseType),
387  _bcValues(bcValues), _required(required) { assert(id >= 0); }
388 
390  operator QVariant() const { QVariant v; v.setValue(*this); return v; }
391 
392  int _id;
398  };
399 
400  typedef TList<Bc> BcList;
401 
404  {
408  };
409 
410 
411  GmpFemPhysicsCommon(GmSimulationData* simulation, QString id, QString description,
412  const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
413  virtual ~GmpFemPhysicsCommon();
414 
415  void printParameters(const GmLogCategory& logger);
416 
425  virtual const QVariantMap* physicsMetaDataMap() = 0;
426 
428  template<class T> static T listFromVariant(const QVariant& v)
429  {
430  if(v.canConvert<typename T::listType>())
431  return T() << v.value<typename T::listType>();
432  else
433  return v.value<T>();
434  }
435 
436  static void fillMatrixFromPropertyAc(GmCellAccessor* ac, const GmElement* e, const GmVector* coord, int ip, GmMatrix& K);
437 
438 public:
439 
441  const QVariant& attribute(int id) const { return _attributes.at(id); }
442 
444  GmValueAccessor* nodeAc() const { return _nodeAccessor; }
445 
447  int nodeDim() const { return _nodeDim; }
448 
450  bool isoParametric() const { return _iso; }
451 
453  int svCount() const { return _svAccessors.size(); }
454 
456  GmValueAccessor* svAc(int id) const { return _svAccessors.at(id); }
457 
459  int baseDof(int id) const { return _svDof.at(id); }
460 
462  GmCellAccessor* propertyAc(int id) const { return _propertyAccessors.at(id); }
463 
467  bool constantProperty(int id) const { return _constantProperties.at(id); }
468 
470  GmValueAccessor* nodeAttrAc(int id) const { return _nodeAttrAccessors.at(id); }
471 
473  GmGaussAccessor* gaussAttrAc(int id) const { return _gaussAttrAccessors.at(id); }
474 
476  const GmBoundaryCondition* boundaryCondition(int id) const { return _boundaryConditions.at(id); }
477 
479  const GmContactBoundaryCondition* contactCondition(int id) const { return _contactConditions.at(id); }
480 
482  GmBoundaryConditionAccessor* bcAc(int id) const { return _bcAccessors.at(id); }
483 
485  GmContactBoundaryConditionAccessor* contactAc(int id) const { return _contactAccessors.at(id); }
486 
490  bool constantBc(int id) const { return _constantBcValues.at(id); }
491 
495  bool constantContactBc(int id) const { return _constantContactBcValues.at(id); }
496 
498  const QVector<const GmBoundaryCondition*>& calcBoundaryConditions() const { return _calcBoundaryConditions; }
499 
501  GmValueAccessor* loadAc(int loadId) const { return _loadAccessors.at(loadId); }
502 
504  GmDiscontinuityAccessor* discontinuityAc(int discId) const { return _discSetPropertyAccessors.at(discId); }
505 
508 
509  GmValueAccessor* cloneSvAcWithDifferentUnit(int id, QString unitSystemName, QString defUnit) const;
510  GmCellAccessor* clonePropertyAcWithDifferentUnit(int id, QString unitSystemName, QString defUnit) const;
511  GmValueAccessor* cloneNodeAttrAcWithDifferentUnit(int id, QString unitSystemName, QString defUnit) const;
512  GmGaussAccessor* cloneGaussAttrAcWithDifferentUnit(int id, QString unitSystemName, QString defUnit) const;
513 
514  const GmpFemPhysicsCommonMaterial* material(const GmElement* e) const;
515 
517  const QVector<GmpFemPhysicsCommonMaterial*>& materialList() const { return _materials; }
518 
521  {
522  RECOVER_AT_GAUSS = 0x01,
523  RECOVER_AT_NODES = 0x02,
524  DIRECT_NODE_EVAL = 0x04,
525  ADD_RESULTS = 0x08,
526  IP_ONLY = 0x10,
527  GAUSS_FILLED = 0x20,
528  };
529 
530  bool calcDerivedResult(int recoveryMode, GmValueAccessor* nodeAc, GmGaussAccessor* gaussAc, int resultId = -1);
531 
532  void fillElementNodeValues(const GmValueAccessor* ac, const GmElement* e, GmVector& v, int nv = -1) const;
533  bool fillMissingNodeValues(GmValueAccessor* ac);
534 
535  bool fillScalarFixedNodalBcLists(int bcId, int propertyId, int dofId, QList<int>& nodes, QList<int>&dof,
536  QList<double>& values, bool* constantValues) const;
537 
538  bool fillVectorFixedNodalBcLists(int bcId, int propertyId, int dofId, bool ignoreZeroValues, bool ignoreDefValues,
539  QList<int>& nodes, QList<int>&dof, QList<double>& values, bool* constantValues) const;
540 
541  bool fillMultiScalarFixedNodalBcLists(int bcId, const QList<int>& propertyIds, int dofId, bool ignoreZeroValues, bool ignoreDefValues,
542  QList<int>& nodes, QList<int>&dof, QList<double>& values, bool* constantValues) const;
543 
564  virtual void calcElementDerivedResultAtPoints(const GmElement* e, int resultId, const GmMatrix& evalPoints, bool evalAtIp, GmMatrix& result)
565  {
566  Q_UNUSED(e); Q_UNUSED(resultId); Q_UNUSED(evalPoints); Q_UNUSED(evalAtIp); Q_UNUSED(result);
567  assert(0); // This function must be reimplemented in the real physics class to allow for using calcDerivedResults()
568  }
569 
574  virtual bool checkLoadedData() { return true; }
575 
576  void addMaterialTranslation(const char* modelName, const char* physicsName, int modelIndex, bool defaultMaterial);
577  GmpFemPhysicsCommonMaterial* material(QString modelName) const;
578 
579 protected:
580  friend class GmpFemPhysicsCoupled; // Coupled needs to call checkAndLoadXxx() functions from its common physics 'components'
581 
582  // See comments on the base class
583  virtual bool supportsCellType(GmCellType type) const { assert(_attrMap); return _supportedTypes[type]; }
584 
585  // See comments on the base class
586  virtual bool supportsParallel(FemSupportedParallelMethods methodType) const { assert(_attrMap); return _parallelMethods & methodType; }
587 
588  virtual const GmElementDof* dofMapping(GmCellType type) const;
589  virtual Unit dofUnit(int dof) const;
590 
591  // See comments on the base class
592  virtual Unit timeUnit() const { return _timeUnit; }
593 
594  // See comments on the base class
596 
597  // See comments on the base class
598  virtual const QStringList& supportedBcTypes() const { return _boundaryConditionTypes; }
599 
600  // See comments on the base class
601  virtual const QStringList& supportedContactBcTypes() const { return _contactConditionTypes; }
602 
603  virtual bool bcAffectsCalc(const GmBoundaryCondition* bc) const;
604 
605  // See comments on the base class
606  virtual const QStringList& supportedExternalLoads() const { return _externalLoadsList; }
607 
608  // See comments on the base class
609  virtual bool checkAndLoadPrivateData(LuaTable& table);
610  virtual bool checkMeshDimension(int ndim);
611  virtual bool checkAndLoadDofMapping(LuaTable& table);
612  virtual bool checkAndLoadPropertyAccessors(LuaTable& table);
613  virtual bool checkAndLoadAttributeAccessors(LuaTable& nodeTable, LuaTable& gaussTable);
614  virtual bool checkAndLoadExternalLoadAccessors(LuaTable& loadsTable);
615  virtual bool checkAndLoadBcAccessors();
616  virtual bool checkAndLoadContactBcAccessors();
617  virtual bool checkAndLoadDiscontinuitySetAccessors(LuaTable& table);
618 
619  template<class T> QString accessorNameList(const QVector<T*> list) const;
620 
621  bool checkAndLoadPropertyAccessorsAux(LuaTable& table, const QList<Value>& defList,
622  QVector<GmCellAccessor*>& accessors, QVector<bool>& constants);
623 
624  template<class T, class Ac>
625  bool checkAndLoadBcAccessorsAux(QString attrName, QString msgPrefix, QMap<QString, const T*>& bcMap,
626  QVector<const T*>& boundaryConditions, QVector<Ac*>& bcAccessors, QVector<bool>& constantBcValues,
627  QStringList& boundaryConditionTypes, QVector<const T*>* calcBoundaryConditions,
628  Ac* (GmPhysics::*acGetFn)(const T*, QString, QString, Unit, bool, int, int, int, bool, bool));
629 
632  bool checkAndLoadSavedGaussAttributes(const QList<int>& attrIdList, QString prefix, int numGaussAttributes, QVector<int>& savedIdList);
633 
634  bool createMaterials(LuaTable& table);
635 
636  bool loadAttributes (LuaTable& table);
637  void loadUnitSystemData(LuaTable& table);
638  QString getUnit(QString id, QString defUnit) const;
639 
641 
648  bool loadAdditionalPrivateData(LuaTable& table, GmpFemPhysicsData& elemData);
649 
654  bool loadNodeData(LuaTable& table, GmpFemPhysicsData& elemData);
655 
660  bool loadElementData(LuaTable& table, GmpFemPhysicsData& elemData);
661 
668  bool loadNeuralNetworkData(LuaTable& table, const char* name, GmpFemNeuralNetwork* netData);
669 
670 private:
671  const QVariantMap* _attrMap;
673 
675  int _nodeDim;
676  bool _iso;
678  unsigned int _parallelMethods;
698 
703 
709 
712  {
714  : _physicsName(""), _modelIndex(-1) {}
715 
716  MaterialTranslationInfo(QString physicsName, int modelIndex)
717  : _physicsName(physicsName), _modelIndex(modelIndex) {}
718 
721  };
722 
726 };
727 
728 
729 // Register types for storing them inside a QVariant
741 
742 #endif
RequiredIf _required
Is the value required?
Definition: gmpFemPhysicsCommon.h:269
An attribute value or dimension is greater than or equal to the given numeric value.
Definition: gmpFemPhysicsCommon.h:55
The boundary condition represents fixed force (f) values in K.u = f and will be treated by GmpFemPhys...
Definition: gmpFemPhysicsCommon.h:372
virtual bool checkAndLoadAttributeAccessors(LuaTable &nodeTable, LuaTable &gaussTable)=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
A structure used to specify value accessors needed by the physics.
Definition: gmpFemPhysicsCommon.h:245
bool canConvert(int targetTypeId) const const
virtual const QStringList & supportedContactBcTypes() const
A list with names for the known contact boundary condition types supported by this physics.
Definition: gmpFemPhysicsCommon.h:601
The boundary condition affects element matrix/vector calculations and will be treated by GmpFemPhysic...
Definition: gmpFemPhysicsCommon.h:371
Attribute(int id, QString name, AttributeType type, int nlin, int ncol, const RequiredIf &required, QString unit="", QVariant defValue=QVariant())
Generic attribute constructor for non enum types, given the attribute name, expected type,...
Definition: gmpFemPhysicsCommon.h:182
DiscSetRequiredMode _discSetMode
Defines whether a discontinuity set association is required, optional or ignored.
Definition: gmpFemPhysicsCommon.h:699
QList< ValueType > _types
Value types (if more than one, types will be tried on the given order). Empty for history values.
Definition: gmpFemPhysicsCommon.h:268
QVector< bool > _constantBcValues
List with flags defining if the properties in _bcAccessors can have functions or not.
Definition: gmpFemPhysicsCommon.h:694
int _id
Value id storing its intended position in the values list.
Definition: gmpFemPhysicsCommon.h:392
const QVariantMap * _attrMap
Map describing the physics behaviour and required characteristics.
Definition: gmpFemPhysicsCommon.h:671
A structure used to define if a value is required or not, being able to specify conditional situation...
Definition: gmpFemPhysicsCommon.h:45
int _nlin
The number of lines or a negative enum value.
Definition: gmpFemPhysicsCommon.h:151
bool _function
Set to true if the value can be a function, false if not.
Definition: gmpFemPhysicsCommon.h:239
GmCellAccessor * propertyAc(int id) const
Returns the accessor for the given cell property.
Definition: gmpFemPhysicsCommon.h:462
QStringList _contactConditionTypes
List with the names of the supported contact boundary condition types.
Definition: gmpFemPhysicsCommon.h:690
QVector< GmBoundaryConditionAccessor * > _bcAccessors
List with acessors for boundary condition values.
Definition: gmpFemPhysicsCommon.h:692
An attribute value or dimension is less than to the given numeric value.
Definition: gmpFemPhysicsCommon.h:52
A specialization of the Value structure for SCALAR values.
Definition: gmpFemPhysicsCommon.h:276
const RequiredIf * _l
Lefft hand side for logical operation.
Definition: gmpFemPhysicsCommon.h:110
An attribute value or dimension is less than or equal to the given numeric value.
Definition: gmpFemPhysicsCommon.h:53
A GmMatrix object. Read variant with value<GmMatrix>().
Definition: gmpFemPhysicsCommon.h:173
bool constantProperty(int id) const
Returns true if the given cell property is not a function (so its value is unique for an element and ...
Definition: gmpFemPhysicsCommon.h:467
int nlin(const GmpFemPhysicsCommon *p, GmpFemPhysicsCommonMaterial *m=NULL) const
Returns the number of lines of the size. Sizes of type Dimension, Dimension2 and AttrLin/Col are conv...
Definition: gmpFemPhysicsCommon.h:141
QVector< const GmBoundaryCondition * > _calcBoundaryConditions
List with boundary conditions that affect element matrix/vector calculations.
Definition: gmpFemPhysicsCommon.h:691
bool isoParametric() const
Is this an iso-parametric or a super-parametric element setting?
Definition: gmpFemPhysicsCommon.h:450
QString _name
Value name.
Definition: gmpFemPhysicsCommon.h:393
QMap< QString, MaterialTranslationInfo > _materialTranslationMap
Map used to translate material names and indices.
Definition: gmpFemPhysicsCommon.h:723
An attribute, state var or property exists.
Definition: gmpFemPhysicsCommon.h:56
int _historyState
The desired history state. 0 means current state, 1 = previous state and so on.
Definition: gmpFemPhysicsCommon.h:271
A boolean value. Read variant with toBool().
Definition: gmpFemPhysicsCommon.h:166
virtual bool checkAndLoadExternalLoadAccessors(LuaTable &loadsTable)=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
A string (QString). Read variant with toString().
Definition: gmpFemPhysicsCommon.h:169
bool loadNeuralNetworkData(LuaTable &table, const char *name, GmpFemNeuralNetwork *netData)
This function is called by checkAndLoadPrivateData() to load neural network data required by em physi...
Definition: gmpFemPhysicsCommon.cpp:2824
GM_NUM_CELL_TYPES
bool _iso
Iso parametric (true) or super parametric (false) element?
Definition: gmpFemPhysicsCommon.h:676
bool loadAdditionalPrivateData(LuaTable &table, GmpFemPhysicsData &elemData)
This function is called by checkAndLoadPrivateData() to load additional data required by composite an...
Definition: gmpFemPhysicsCommon.cpp:2708
QVector< GmContactBoundaryConditionAccessor * > _contactAccessors
List with acessors for contact boundary condition values.
Definition: gmpFemPhysicsCommon.h:693
GmCellAccessor * _materialIndex
The accessor used for retrieving an element material index.
Definition: gmpFemPhysicsCommon.h:707
GmDimType
QVector< GmValueAccessor * > _nodeAttrAccessors
List with node attribute accessors.
Definition: gmpFemPhysicsCommon.h:685
QVector< const GmBoundaryCondition * > _boundaryConditions
List with boundary conditions.
Definition: gmpFemPhysicsCommon.h:687
A class that implements several common functions required by GmpFemPhysics.
Definition: gmpFemPhysicsCommon.h:40
GmDimType _type
Scalar, vector or matrix.
Definition: gmpFemPhysicsCommon.h:237
QString accessorNameList(const QVector< T * > list) const
Helper function to return a string with the names and units of the accessors in the given vector.
Definition: gmpFemPhysicsCommon.cpp:490
static T listFromVariant(const QVariant &v)
Auxiliary function returning a T list from a QVariant that contains either T or a T::listType.
Definition: gmpFemPhysicsCommon.h:428
QVariant _defVal
A default value applied to the attribute if not given and optional.
Definition: gmpFemPhysicsCommon.h:216
AttributeType
Attribute data type.
Definition: gmpFemPhysicsCommon.h:163
int svCount() const
Returns the number of state vars supported by this physics.
Definition: gmpFemPhysicsCommon.h:453
QString _unit
The attribute unit for double types.
Definition: gmpFemPhysicsCommon.h:215
GmValueAccessor * nodeAttrAc(int id) const
Returns the accessor for the given node attribute.
Definition: gmpFemPhysicsCommon.h:470
GmValueAccessor * svAc(int id) const
Returns the accessor for the given state var.
Definition: gmpFemPhysicsCommon.h:456
GmSegmentCell2DIntersectionCoordAccessor * _discSet2DInterCoordAc
The coordinate accessor for intersection data for 2d polyline discontinuity sets.
Definition: gmpFemPhysicsCommon.h:702
An integer number whose value is equal to an enum option. Read variant with toInt().
Definition: gmpFemPhysicsCommon.h:175
T value() const const
QMap< QString, int > _enumMap
Map for trnslating enum types.
Definition: gmpFemPhysicsCommon.h:217
bool checkAndLoadGaussAttributeAccessors(LuaTable &table, const QList< Value > &gaList, QVector< GmGaussAccessor * > &accessors, GmpFemPhysicsCommonMaterial *m=NULL)
An auxilliary function that does the job of loading Gauss attribute accessors for checkAndLoadAttribu...
Definition: gmpFemPhysicsCommon.cpp:994
BcType _bcType
Boundary condition application type.
Definition: gmpFemPhysicsCommon.h:394
virtual bool checkAndLoadPropertyAccessors(LuaTable &table)=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
QVector< const GmContactBoundaryCondition * > _contactConditions
List with contact boundary conditions.
Definition: gmpFemPhysicsCommon.h:688
Size _size
The requested number of lines/columns for a vector / matrix.
Definition: gmpFemPhysicsCommon.h:214
int _nodeDim
Node dimension.
Definition: gmpFemPhysicsCommon.h:675
A discontinuity set is optional for this physics. Will be used if available but is not required.
Definition: gmpFemPhysicsCommon.h:407
HistoryValue()
Default constructor needed to enable storing a HisoryValue in a QVariant. Builds an invalid Value.
Definition: gmpFemPhysicsCommon.h:330
QString _unit
Value unit.
Definition: gmpFemPhysicsCommon.h:267
RequiredIf(bool required)
Constructor used to define if a value is required (true) or optional (false);.
Definition: gmpFemPhysicsCommon.h:63
GmSegmentCell2DIntersectionCoordAccessor * discontinuity2dIntersectionCoordAc() const
Returns the appropriate accessor for retrieving intersection coordinates for a 2d cell-discontinuity ...
Definition: gmpFemPhysicsCommon.h:507
GmValueAccessor * _nodeAccessor
An accessor for retrieving node coordinate values.
Definition: gmpFemPhysicsCommon.h:682
bool constantContactBc(int id) const
Returns true if the given contact boundary condition property is not a function (so its value does no...
Definition: gmpFemPhysicsCommon.h:495
int ncol(const GmpFemPhysicsCommon *p, GmpFemPhysicsCommonMaterial *m=NULL) const
Returns the number of columns of the size. Sizes of type Dimension, Dimension2 and AttrLin/Col are co...
Definition: gmpFemPhysicsCommon.h:147
A GmVector object that also accepts a scalar value. Read variant with value<GmVector>().
Definition: gmpFemPhysicsCommon.h:174
TList< Value > ValueList
A QList<Attribute> that can be implicitely converted to a QVariant.
Definition: gmpFemPhysicsCommon.h:355
A discontinuity set is required for this physics.
Definition: gmpFemPhysicsCommon.h:406
GmBoundaryConditionAccessor * bcAc(int id) const
Returns the accessor for the given boundary condition value.
Definition: gmpFemPhysicsCommon.h:482
Unit _timeUnit
The physics time unit.
Definition: gmpFemPhysicsCommon.h:705
QString _colAttrType
Type of the query attribute if _ncol == AttrDim. Can be "attributes", "stateVars" or "properties".
Definition: gmpFemPhysicsCommon.h:154
virtual bool supportsCellType(GmCellType type) const
Returns true if the type is supported by this physics object.
Definition: gmpFemPhysicsCommon.h:583
Auxiliary structure used to keep information about material translation names.
Definition: gmpFemPhysicsCommon.h:711
RequiredIf _required
Is the value required?
Definition: gmpFemPhysicsCommon.h:397
A specialization of the Value structure for MATRIX values.
Definition: gmpFemPhysicsCommon.h:306
QString _name
The attribute name.
Definition: gmpFemPhysicsCommon.h:212
virtual const QStringList & supportedBcTypes() const
A list with names for the known boundary condition types supported by this physics.
Definition: gmpFemPhysicsCommon.h:598
QString _physicsName
The material name as seen by this physics.
Definition: gmpFemPhysicsCommon.h:719
virtual const GmElementDof * dofMapping(GmCellType type) const =0
Returns the mapping of node degrees of freedom for a cell type or NULL if this physics object does no...
An attribute value or dimension is equal to the given value.
Definition: gmpFemPhysicsCommon.h:50
A wrapper over a QList<T> that knows how to convert itself into a QVariant, provided that the resulti...
Definition: gmpFemPhysicsCommon.h:345
const QMap< QString, const GmBoundaryCondition * > & boundaryConditions() const
Returns a reference to the map storing contact boundary conditions associated to this physics,...
Definition: gmpFemPhysics.h:93
A double value. Read variant with toDouble().
Definition: gmpFemPhysicsCommon.h:168
A simple factory used to register material type names, their numeric indices and their instance funct...
Definition: gmpFemPhysicsCommonMaterial.h:145
QVector< GmpFemPhysicsCommonMaterial * > _materials
The set of materials in use by this physics.
Definition: gmpFemPhysicsCommon.h:706
A specialization of the Value structure for VECTOR values.
Definition: gmpFemPhysicsCommon.h:288
const QVector< const GmBoundaryCondition * > & calcBoundaryConditions() const
Returns a list of boundary conditions that affect the matrix/vector calculations.
Definition: gmpFemPhysicsCommon.h:498
int _id
Value id storing its intended position in the values list.
Definition: gmpFemPhysicsCommon.h:264
Attribute(int id, QString name, AttributeType type, int nlin, int ncol, QVariant defValue)
Attribute constructor for optional vector/amatrix attributes with default and no unit.
Definition: gmpFemPhysicsCommon.h:194
ScalarValue()
Default constructor needed to enable storing a ScalarValue in a QVariant. Builds an invalid Value.
Definition: gmpFemPhysicsCommon.h:279
void loadUnitSystemData(LuaTable &table)
Loads the user unit system definition from subtable "unitSystem" if "userUnitSystem" is set to true.
Definition: gmpFemPhysicsCommon.cpp:1831
FemSupportedParallelMethods
Enum used to specify which physics plugin methods can be called in parallel. Values can be ored toget...
Definition: gmpFemPhysics.h:57
An integer number. Read variant with toInt().
Definition: gmpFemPhysicsCommon.h:167
Attribute(int id, QString name, const QMap< QString, int > &enumMap, QVariant defValue)
Attribute constructor for an optional enumerated attribute with default and no unit.
Definition: gmpFemPhysicsCommon.h:202
const GmContactBoundaryCondition * contactCondition(int id) const
Returns the contact boundary condition object for the given bc type id.
Definition: gmpFemPhysicsCommon.h:479
ValueType(GmDimType type, int nlin=-1, int ncol=-1, bool canBeFunction=true, int history=-1, const char *format="")
Constructor.
Definition: gmpFemPhysicsCommon.h:225
QVector< GmGaussAccessor * > _gaussAttrAccessors
List with Gauss attribute accessors.
Definition: gmpFemPhysicsCommon.h:686
QVector< bool > _constantProperties
List with flags defining if the properties in _propertyAccessors can have functions or not.
Definition: gmpFemPhysicsCommon.h:684
bool isEmpty() const const
Bc(int id, QString name, BcType bcType, BcUseType bcUseType, const Value &bcValue, const RequiredIf &required=RequiredIf(false))
Bc constructor given a single value accessor.
Definition: gmpFemPhysicsCommon.h:380
QVector< GmDiscontinuityAccessor * > _discSetPropertyAccessors
List with property accessors for the discontinuity set.
Definition: gmpFemPhysicsCommon.h:701
virtual Unit dofUnit(int dof) const =0
Returns the unit in which calculated values for the supplied dof are given. Should return Unit() for ...
virtual const QList< QPair< int, GmValueAccessor * > > & dofForceAttributes() const
Returns a list that associates degrees of freedom handled by this physics with their associated force...
Definition: gmpFemPhysicsCommon.h:595
Size _size
The number of lines/columns for a vector / matrix.
Definition: gmpFemPhysicsCommon.h:238
virtual bool checkMeshDimension(int ndim)=0
This function is called by loadPrivateData() to let the phyiscs check if it is compatible with the nu...
QVector< GmCellAccessor * > _propertyAccessors
List with property accessors.
Definition: gmpFemPhysicsCommon.h:683
A specialization of the Value structure for obtaining accessor for old attribute states.
Definition: gmpFemPhysicsCommon.h:327
virtual bool checkAndLoadContactBcAccessors()=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
TList< Attribute > AttributeList
A QList<int> that can be implicitely converted to a QVariant.
Definition: gmpFemPhysicsCommon.h:354
bool _discSetElementMode
When _disSetMode is Required or Optional, does it require that elements be added for intersections?
Definition: gmpFemPhysicsCommon.h:700
bool _supportedTypes[GM_NUM_CELL_TYPES]
Supported element types for this physics.
Definition: gmpFemPhysicsCommon.h:677
int _historyRefId
The reference Value describing the base attribute that this accessor points to.
Definition: gmpFemPhysicsCommon.h:270
Size(int lin=Any, int col=Any)
Size constructor for lin, col different from AttrDim.
Definition: gmpFemPhysicsCommon.h:128
An attribute value or dimension is not equal to the given value.
Definition: gmpFemPhysicsCommon.h:51
DiscSetRequiredMode
A QList<Bc> that can be implicitely converted to a QVariant.
Definition: gmpFemPhysicsCommon.h:403
Declaration of the GmpFemPhysics interface class.
ValueList _bcValues
List with boundary condition values.
Definition: gmpFemPhysicsCommon.h:396
bool constantBc(int id) const
Returns true if the given boundary condition property is not a function (so its value does not change...
Definition: gmpFemPhysicsCommon.h:490
Attribute(int id, QString name, AttributeType type, const RequiredIf &required, QString unit="", QVariant defValue=QVariant())
Generic attribute constructor for non vector/matrix/enum types, given the attribute name,...
Definition: gmpFemPhysicsCommon.h:186
int baseDof(int id) const
Returns the base dof for the given state var.
Definition: gmpFemPhysicsCommon.h:459
virtual bool checkAndLoadBcAccessors()=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
MatrixValue(int id, QString name, QString description, QString unit, int nlin, QString linType, QString linAttr, int ncol, QString colType, QString colAttr, const RequiredIf &required=RequiredIf(true), bool canBeFunction=true, int history=-1, const char *format="")
Constructor. Creates a Value object with MATRIX type and the specified number of lines and columns po...
Definition: gmpFemPhysicsCommon.h:319
QString _attr
The attribute inside _type that will be compared if type different from "dimension".
Definition: gmpFemPhysicsCommon.h:107
A structure to define a size (number of lines / columns)
Definition: gmpFemPhysicsCommon.h:115
A simple class to store additional Data required by Fem physics.
Definition: gmpFemNeuralNetwork.h:35
Size(int lin, QString linType, QString linAttr, int col, QString colType, QString colAttr)
Size constructor for at least one value an AttrLin/Col. For either line or column,...
Definition: gmpFemPhysicsCommon.h:134
GmElementDof * _dofMap[GM_NUM_CELL_TYPES]
The list with maps of dof per element type.
Definition: gmpFemPhysicsCommon.h:640
Bc()
Default constructor needed to enable storing a Bc in a QVariant. Builds an invalid Bc.
Definition: gmpFemPhysicsCommon.h:377
int _history
The desired history value if _history != -1. Used by node and Gauss attributes only.
Definition: gmpFemPhysicsCommon.h:240
BcUseType _bcUseType
A value defining how this BC will be used by the physics.
Definition: gmpFemPhysicsCommon.h:395
A structure used to specify if a value should be a scalar, a vector or a matrix and their dimensions.
Definition: gmpFemPhysicsCommon.h:222
QString _description
Value description (for error messages)
Definition: gmpFemPhysicsCommon.h:266
The boundary condition will be applied over an edge for 2D elements and over a face for 3D elements.
Definition: gmpFemPhysicsCommon.h:366
QList< QPair< int, GmValueAccessor * > > _dofForceAttributes
List mapping state vars to their force attribute accessors.
Definition: gmpFemPhysicsCommon.h:679
QString _colAttr
The attribute to query for the dimension if _ncol == AttrDim.
Definition: gmpFemPhysicsCommon.h:156
int _mode
0 = optional, 1 = required, 2 = conditional required, 3 = logic op
Definition: gmpFemPhysicsCommon.h:105
void setValue(const T &value)
QVariant _val
The value to be compared, depending on _op.
Definition: gmpFemPhysicsCommon.h:109
virtual bool checkAndLoadDiscontinuitySetAccessors(LuaTable &table)=0
This function is called by loadPrivateData() and should be implemented in derived classes to check if...
A structure used to define attributes interpreted by the physics.
Definition: gmpFemPhysicsCommon.h:160
virtual void calcElementDerivedResultAtPoints(const GmElement *e, int resultId, const GmMatrix &evalPoints, bool evalAtIp, GmMatrix &result)
Virtual function called by calcDerivedResult() to evaluate results for an element directly at the pro...
Definition: gmpFemPhysicsCommon.h:564
Bc(int id, QString name, BcType bcType, BcUseType bcUseType, const ValueList &bcValues, const RequiredIf &required=RequiredIf(false))
Bc constructor given multiple value accessor.
Definition: gmpFemPhysicsCommon.h:385
GmContactBoundaryConditionAccessor * contactAc(int id) const
Returns the accessor for the given contact boundary condition value.
Definition: gmpFemPhysicsCommon.h:485
Attribute(int id, QString name, AttributeType type, QVariant defValue)
Attribute constructor for optional attributes with default and no unit.
Definition: gmpFemPhysicsCommon.h:190
VectorValue(int id, QString name, QString description, QString unit, int nlin, QString linType, QString linAttr, const RequiredIf &required=RequiredIf(true), bool canBeFunction=true, int history=-1, const char *format="")
Constructor. Creates a Value object with VECTOR type and the specified number of lines given by an at...
Definition: gmpFemPhysicsCommon.h:299
ScalarValue(int id, QString name, QString description, QString unit, const RequiredIf &required=RequiredIf(true), bool canBeFunction=true, int history=-1, const char *format="")
Constructor. Creates a Value object with SCALAR type.
Definition: gmpFemPhysicsCommon.h:282
GmDiscontinuityAccessor * discontinuityAc(int discId) const
Returns the accessor for retrieving discontinuity set property / cell attributes for the given id.
Definition: gmpFemPhysicsCommon.h:504
QString getUnit(QString id, QString defUnit) const
If there is no user unit system, returns defUnit. If there is a user unit system, looks for the id in...
Definition: gmpFemPhysicsCommon.cpp:1851
A list of strings (QStringList). Read variant with toStringList().
Definition: gmpFemPhysicsCommon.h:171
A class that implements a common behaviour for physics materials.
Definition: gmpFemPhysicsCommonMaterial.h:44
DerivedResultsRecoveryMode
Enumeration used to specify the behavior of a call to calcDerivedResults()
Definition: gmpFemPhysicsCommon.h:520
bool loadAttributes(LuaTable &table)
Loads physics attribute values from the given Lua table.
Definition: gmpFemPhysicsCommon.cpp:1628
QMap< QString, QString > _unitSystem
The user given unit system or empty for using the default one.
Definition: gmpFemPhysicsCommon.h:704
virtual bool checkAndLoadDofMapping(LuaTable &table)=0
This function is called by loadPrivateData() and should be implemented in derived classes to prepare ...
const GmpFemPhysicsCommonMaterialFactory * _matFactory
Material factory. NULL if material abstraction is not needed.
Definition: gmpFemPhysicsCommon.h:672
GmCellType
GM_MATRIX_VALUE
GmValueAccessor * loadAc(int loadId) const
Returns the accessor for retrieving external load nodal values for the given load type.
Definition: gmpFemPhysicsCommon.h:501
VectorValue(int id, QString name, QString description, QString unit, int nlin, const RequiredIf &required=RequiredIf(true), bool canBeFunction=true, int history=-1, const char *format="")
Constructor. Creates a Value object with VECTOR type and the specified number of lines.
Definition: gmpFemPhysicsCommon.h:294
A simple class to store additional Data required by Fem physics.
Definition: gmpFemPhysicsData.h:33
bool loadElementData(LuaTable &table, GmpFemPhysicsData &elemData)
This function is called by loadAdditionalPrivateData() to load embedded element Data....
Definition: gmpFemPhysicsCommon.cpp:2779
RequiredIf(QString type, QString attr, RequiredIfOp op, QVariant val=QVariant())
Constructor for a optional requirement clause.
Definition: gmpFemPhysicsCommon.h:72
QStringList _boundaryConditionTypes
List with the names of the supported boundary condition types.
Definition: gmpFemPhysicsCommon.h:689
virtual const QStringList & supportedExternalLoads() const
A list with names for the known external load conditions supported by this physics.
Definition: gmpFemPhysicsCommon.h:606
virtual bool checkAndLoadPrivateData(LuaTable &table)=0
This function is called by loadPrivateData() to let derived classes check consistency and load values...
An attribute value or dimension is greater than to the given numeric value.
Definition: gmpFemPhysicsCommon.h:54
GM_VECTOR_VALUE
Value()
Default constructor needed to enable storing a Value in a QVariant. Builds an invalid Value.
Definition: gmpFemPhysicsCommon.h:248
virtual void printParameters(const GmLogCategory &logger)
Asks the object to print its parameters using the provided logger.
Definition: gmpFemPhysics.cpp:629
A QList<Value> that can be implicitely converted to a QVariant.
Definition: gmpFemPhysicsCommon.h:358
Value(int id, QString name, QString description, QString unit, const ValueType &type, const RequiredIf &required=RequiredIf(true))
Value constructor given a single possible type.
Definition: gmpFemPhysicsCommon.h:251
bool checkAndLoadPropertyAccessorsAux(LuaTable &table, const QList< Value > &defList, QVector< GmCellAccessor * > &accessors, QVector< bool > &constants)
An auxilliary function that does the job for checkAndLoadPropertyAccessors() storing the accessors at...
Definition: gmpFemPhysicsCommon.cpp:804
unsigned int _parallelMethods
An or of FemSupportedParallelMethods entries specifying which physics methods can be called in parall...
Definition: gmpFemPhysicsCommon.h:678
A discontinuity set is ignored by this physics.
Definition: gmpFemPhysicsCommon.h:405
Logical or between two other conditions.
Definition: gmpFemPhysicsCommon.h:58
virtual bool supportsParallel(FemSupportedParallelMethods methodType) const
Returns true if this physics object supports multiple calls in parallel (by multiple threads) to the ...
Definition: gmpFemPhysicsCommon.h:586
RequiredIf(const RequiredIf &l, RequiredIfOp op, const RequiredIf &r)
Constructor for logical clause (OR or AND)
Definition: gmpFemPhysicsCommon.h:82
Any value. Checks will be done later.
Definition: gmpFemPhysicsCommon.h:165
AttributeType _type
The expected attribute type for validation purposes.
Definition: gmpFemPhysicsCommon.h:213
A list of doubles (QList<double>). Read variant with value< QList<double> >().
Definition: gmpFemPhysicsCommon.h:170
~RequiredIf()
Destructor.
Definition: gmpFemPhysicsCommon.h:101
QVector< int > _svDof
List with the base dof number for each accessor in _svAccessors.
Definition: gmpFemPhysicsCommon.h:681
QString _type
Type of the conditional required clause. Can be "dimension", "attributes", "stateVars" or "properties...
Definition: gmpFemPhysicsCommon.h:106
MatrixValue(int id, QString name, QString description, QString unit, int nlin, int ncol, const RequiredIf &required=RequiredIf(true), bool canBeFunction=true, int history=-1, const char *format="")
Constructor. Creates a Value object with MATRIX type and the specified number of lines and columns.
Definition: gmpFemPhysicsCommon.h:312
QString _linAttrType
Type of the query attribute if _nlin == AttrDim. Can be "attributes", "stateVars" or "properties".
Definition: gmpFemPhysicsCommon.h:153
MatrixValue()
Default constructor needed to enable storing a MatrixValue in a QVariant. Builds an invalid Value.
Definition: gmpFemPhysicsCommon.h:309
QVector< GmValueAccessor * > _svAccessors
List with state var acessors.
Definition: gmpFemPhysicsCommon.h:680
int _defaultMaterialIndex
The index in _materials for retrieving an element material when _materialIndex is NULL.
Definition: gmpFemPhysicsCommon.h:708
QString _linAttr
The attribute to query for the dimension if _nlin == AttrDim.
Definition: gmpFemPhysicsCommon.h:155
BcType
Definition: gmpFemPhysicsCommon.h:360
VectorValue()
Default constructor needed to enable storing a VectorValue in a QVariant. Builds an invalid Value.
Definition: gmpFemPhysicsCommon.h:291
virtual Unit timeUnit() const
Returns the unit in which the physics handles time. Returns Unit() if not relevant to the physics.
Definition: gmpFemPhysicsCommon.h:592
int _modelIndex
The material index used in the model, corresponding to the model name.
Definition: gmpFemPhysicsCommon.h:720
Attribute(int id, QString name, const QMap< QString, int > &enumMap, const RequiredIf &required, QString unit="", QVariant defValue=QVariant())
Attribute constructor for a generic enumerated attribute.
Definition: gmpFemPhysicsCommon.h:198
Base interface class for FEM Physics type plugins.
Definition: gmpFemPhysics.h:44
bool checkAndLoadSavedGaussAttributes(const QList< int > &attrIdList, QString prefix, int numGaussAttributes, QVector< int > &savedIdList)
Check and load saved gauss attribute ids for the values described in the "savedGaussAttributes" entry...
Definition: gmpFemPhysicsCommon.cpp:1075
RequiredIf _required
Is the attribute required?
Definition: gmpFemPhysicsCommon.h:218
bool checkAndLoadNodeAttributeAccessors(LuaTable &table, const QList< Value > &naList, QVector< GmValueAccessor * > &accessors, GmpFemPhysicsCommonMaterial *m=NULL)
An auxilliary function that does the job of loading node attribute accessors for checkAndLoadAttribut...
Definition: gmpFemPhysicsCommon.cpp:916
QStringList _externalLoadsList
List storing the names of the supported external load types.
Definition: gmpFemPhysicsCommon.h:697
Value(int id, QString name, QString description, QString unit, const QList< ValueType > &types, const RequiredIf &required=RequiredIf(true))
Value constructor given multiple possible types.
Definition: gmpFemPhysicsCommon.h:256
A class deriving from GmpFemPhysicsCommon that contains references for other physics objects that are...
Definition: gmpFemPhysicsCoupled.h:36
arma::vec GmVector
const QVariant & attribute(int id) const
Returns the value of the given attribute.
Definition: gmpFemPhysicsCommon.h:441
bool loadNodeData(LuaTable &table, GmpFemPhysicsData &elemData)
This function is called by loadAdditionalPrivateData() to load additional nodes. If errors are found ...
Definition: gmpFemPhysicsCommon.cpp:2735
Attribute()
Default constructor needed to enable storing an Attribute in a QVariant. Builds an invalid Attribute.
Definition: gmpFemPhysicsCommon.h:179
bool _historyLocked
Should the accessor be locked to the state (true) or to the data (false).
Definition: gmpFemPhysicsCommon.h:272
The boundary condition represents fixed dof (u) values in K.u = f and will be treated by GmpFemPhysic...
Definition: gmpFemPhysicsCommon.h:373
bool checkAndLoadBcAccessorsAux(QString attrName, QString msgPrefix, QMap< QString, const T * > &bcMap, QVector< const T * > &boundaryConditions, QVector< Ac * > &bcAccessors, QVector< bool > &constantBcValues, QStringList &boundaryConditionTypes, QVector< const T * > *calcBoundaryConditions, Ac *(GmPhysics::*acGetFn)(const T *, QString, QString, Unit, bool, int, int, int, bool, bool))
Aux function implementing the body of both checkAndLoadBcAccessors() and checkAndLoadContactBcAccesso...
Definition: gmpFemPhysicsCommon.cpp:1180
BcUseType
Definition: gmpFemPhysicsCommon.h:369
GmValueAccessor * nodeAc() const
Returns the accessor for retrieving node coordinates.
Definition: gmpFemPhysicsCommon.h:444
GmGaussAccessor * gaussAttrAc(int id) const
Returns the accessor for the given Gauss attribute.
Definition: gmpFemPhysicsCommon.h:473
int _ncol
THe number of columns or a negative enum value.
Definition: gmpFemPhysicsCommon.h:152
ValueType(GmDimType type, int nlin, QString linType, QString linAttr, int ncol, QString colType, QString colAttr, bool canBeFunction=true, int history=-1, const char *format="")
Constructor allowing for an AttrDim size.
Definition: gmpFemPhysicsCommon.h:229
bool createMaterials(LuaTable &table)
If this physics uses material objects, loads the set of requested materials from the table pointed to...
Definition: gmpFemPhysicsCommon.cpp:1457
virtual bool bcAffectsCalc(const GmBoundaryCondition *bc) const
Method called by the FEM process asking the physics whether the supplied boundary condition affects t...
Definition: gmpFemPhysics.h:310
QString _name
Value name.
Definition: gmpFemPhysicsCommon.h:265
arma::mat GmMatrix
RequiredIfOp
Available operations for conditional requirements.
Definition: gmpFemPhysicsCommon.h:48
const GmBoundaryCondition * boundaryCondition(int id) const
Returns the boundary condition object for the given bc type id.
Definition: gmpFemPhysicsCommon.h:476
An attribute, state var or property does not exists.
Definition: gmpFemPhysicsCommon.h:57
QVector< GmValueAccessor * > _loadAccessors
List with node acessors suplying external load data.
Definition: gmpFemPhysicsCommon.h:696
int _id
Attribute id storing its intended position in the attributes list.
Definition: gmpFemPhysicsCommon.h:211
RequiredIfOp _op
The operation applied over the value. Valid operations depend on _type.
Definition: gmpFemPhysicsCommon.h:108
const QVector< GmpFemPhysicsCommonMaterial * > & materialList() const
Returns the internal material list. It can contain NULL values if the material is not used by this ph...
Definition: gmpFemPhysicsCommon.h:517
Q_DECLARE_METATYPE(LuaFunction)
QVector< bool > _constantContactBcValues
List with flags defining if the properties in _contactAccessors can have functions or not.
Definition: gmpFemPhysicsCommon.h:695
Logical and between two other conditions.
Definition: gmpFemPhysicsCommon.h:59
const RequiredIf * _r
Right hand side for logical operation.
Definition: gmpFemPhysicsCommon.h:111
GM_SCALAR_VALUE
virtual bool checkLoadedData()
Additional checking function, called after all attributes and accessors from physicsMetaDataMap() hav...
Definition: gmpFemPhysicsCommon.h:574
QString _defaultModelMaterialName
The name of the default material when the translation map is used.
Definition: gmpFemPhysicsCommon.h:725
int _largestModelMaterialIndex
Largest value in MaterialTranslationInfo::_modelIndex or -1 if the map is unused.
Definition: gmpFemPhysicsCommon.h:724
QString _format
The desired format when creating an attribute. Used by node and Gauss attributes only.
Definition: gmpFemPhysicsCommon.h:241
int nodeDim() const
Returns the node dimension (number of node coordinates)
Definition: gmpFemPhysicsCommon.h:447
A GmVector object. Read variant with value<GmVector>().
Definition: gmpFemPhysicsCommon.h:172
QVector< QVariant > _attributes
List with physics private attributes.
Definition: gmpFemPhysicsCommon.h:674