24#ifndef _GEMA_PLUGIN_FEM_PHYSICS_COMMON_LUA_MATERIAL_H_
25#define _GEMA_PLUGIN_FEM_PHYSICS_COMMON_LUA_MATERIAL_H_
43 : _pdata(pdata), _mat(mat), _map(NULL)
52 const QVariantMap* materialMetaDataMap();
54 bool checkLoadedData(
const GmElement* e)
const;
98 CallDataFunctions() : _subTableName(NULL), _getF(NULL), _setF(NULL), _context(NULL) {}
112 LuaTable& inputTable() { assert(_inTable.isValid());
return _inTable; }
113 LuaTable& outputTable() { assert(_outTable.isValid());
return _outTable; }
116 static int indexMM(lua_State* L);
137 const char* userSubTable = NULL, GetFieldDataT userGetF = NULL,
138 SetFieldDataT userSetF = NULL,
const void* userContext = NULL)
const;
161 static QVariant variantListToOnStackLuaTable(
LuaEnv* env,
const QVariantList& v);
215 virtual bool checkLoadedData(
const GmElement* e)
const {
return _d->checkLoadedData(e); }
221 const char* userSubTable = NULL,
224 const void* userContext = NULL)
const
A class that implements the common behaviour for physics Lua materials. The template parameter provid...
Definition gmpFemPhysicsCommonLuaMaterial.h:202
GmpFemPhysicsCommonLuaMaterialImp::CallData CallData
Duplicate Imp typedef as our own.
Definition gmpFemPhysicsCommonLuaMaterial.h:218
GmpFemPhysicsCommonLuaMaterial(const GmPluginData *pdata, int typeIndex, QString typeName, const GmLogCategory &logger)
Common Lua material constructor. Receives the PluginData object with the material especification plus...
Definition gmpFemPhysicsCommonLuaMaterial.h:207
virtual ~GmpFemPhysicsCommonLuaMaterial()
Destructor.
Definition gmpFemPhysicsCommonLuaMaterial.h:211
GmpFemPhysicsCommonLuaMaterialImp * _d
The implementation object.
Definition gmpFemPhysicsCommonLuaMaterial.h:259
The auxiliar class used to store prepared user method call data.
Definition gmpFemPhysicsCommonLuaMaterial.h:108
LuaTable _outTable
The output data lua table function call parameter.
Definition gmpFemPhysicsCommonLuaMaterial.h:124
int _ip
The current integration point.
Definition gmpFemPhysicsCommonLuaMaterial.h:126
const GmElement * _e
The current element.
Definition gmpFemPhysicsCommonLuaMaterial.h:125
QString _fname
The function name.
Definition gmpFemPhysicsCommonLuaMaterial.h:121
CallDataFunctions _userF
The user sub-table (if any) get/set data functions.
Definition gmpFemPhysicsCommonLuaMaterial.h:132
LuaFunction * _f
The callable function.
Definition gmpFemPhysicsCommonLuaMaterial.h:122
const GmpFemPhysicsCommonLuaMaterialImp * _mat
The associated LuaMaterialImp object.
Definition gmpFemPhysicsCommonLuaMaterial.h:130
const GmVector * _coord
The current natural coordinate of the integration point.
Definition gmpFemPhysicsCommonLuaMaterial.h:127
LuaTable _inTable
The input data lua table function call parameter.
Definition gmpFemPhysicsCommonLuaMaterial.h:123
int _luaStackTop
The Lua stack top before the method call was prepared.
Definition gmpFemPhysicsCommonLuaMaterial.h:128
The real implementation of the GmpFemPhysicsCommonLuaMaterial class methods. See comments on that cla...
Definition gmpFemPhysicsCommonLuaMaterial.h:37
static QVariant nodeAccessorValueToVariant(GmValueAccessor *ac, GmValueAccessor *coordAc, const GmElement *e, int ip, const GmVector *coord, GmInterpolatorType interpType, QVariant interpParam, const GmLogCategory &logger)
Retrieves the element node values from the given accessor, interpolates the value at the given point ...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:502
static void setGaussAccessorValueFromVariant(GmGaussAccessor *ac, const GmElement *e, int ip, const QVariant &v)
Given a QVariant value that can be either a scalar or a pointer to a GmLuaMatrix object,...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:565
GmpFemPhysicsCommonMaterial * _mat
The material that is implemented by this object.
Definition gmpFemPhysicsCommonLuaMaterial.h:167
GmpFemPhysicsCommonLuaMaterialImp(const GmPluginData *pdata, GmpFemPhysicsCommonMaterial *mat)
Common Lua material constructor. Receives the PluginData object with the material especification plus...
Definition gmpFemPhysicsCommonLuaMaterial.h:42
static QVariant gaussAccessorValueToVariant(GmGaussAccessor *ac, const GmElement *e, int ip, const GmVector *coord, const GmLogCategory &logger)
Retrieves the given accessor value at the given point and converts it to a QVariant,...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:547
const GmPluginData * _pdata
The associated plugin data object.
Definition gmpFemPhysicsCommonLuaMaterial.h:166
GeometryFields
Definition gmpFemPhysicsCommonLuaMaterial.h:82
@ GF_NODE_AC
Field nodeAccessor - the node coordinate accessor.
Definition gmpFemPhysicsCommonLuaMaterial.h:90
@ GF_ELEMENT_ID
Field elemId - the element id.
Definition gmpFemPhysicsCommonLuaMaterial.h:83
@ GF_CDIM
Field cdim - the element characteristic dimension.
Definition gmpFemPhysicsCommonLuaMaterial.h:89
@ GF_TYPE
Field type - the element type string.
Definition gmpFemPhysicsCommonLuaMaterial.h:85
@ GF_CLENGTH
Field clength - the element characteristic length.
Definition gmpFemPhysicsCommonLuaMaterial.h:88
@ GF_NODE_COORD
Field nodeMatrix - the matrix with element node coordinates.
Definition gmpFemPhysicsCommonLuaMaterial.h:91
@ GF_IP
Field ip - the evaluated integration point index.
Definition gmpFemPhysicsCommonLuaMaterial.h:86
@ GF_ELEMENT
Field elem - the element (cell) object.
Definition gmpFemPhysicsCommonLuaMaterial.h:84
@ GF_COORD
Field coord - the evaluated integration point natural coordinate.
Definition gmpFemPhysicsCommonLuaMaterial.h:87
@ GF_N
Field N - the shape function vector N evaluated at the integration point coordinate.
Definition gmpFemPhysicsCommonLuaMaterial.h:92
CallDataFunctions _propertyCallFunctions
A vector with the interpolation options for each attribute stored in _nodeAttrIndexMap,...
Definition gmpFemPhysicsCommonLuaMaterial.h:176
static bool fillMatrixFromVariant(GmMatrix &mat, int nlin, int ncol, const QVariant &v, QString &err)
Fills the given matrix contents with the value of the GmLuaMatrix stored in the given variant value....
Definition gmpFemPhysicsCommonLuaMaterial.cpp:590
QVariant(*) GetFieldDataT(QString field, const void *context, const GmElement *e, int ip, const GmVector *coord, const GmLogCategory &logger)
Type for the function used to get derived class values exported to an input data sub-table....
Definition gmpFemPhysicsCommonLuaMaterial.h:63
CallData * prepareUserMethodCall(QString fname, const GmElement *e, int ip, const GmVector *coord, const char *userSubTable=NULL, GetFieldDataT userGetF=NULL, SetFieldDataT userSetF=NULL, const void *userContext=NULL) const
Prepares the CallData object for a later call to the given user method, for the given set of element ...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:356
CallDataFunctions _geometryCallFunctions
The set of functions for getting geometry values.
Definition gmpFemPhysicsCommonLuaMaterial.h:179
CallDataType
Stored data type for input data sub-tables.
Definition gmpFemPhysicsCommonLuaMaterial.h:70
@ CDT_PROPERTY
The data is a cell property.
Definition gmpFemPhysicsCommonLuaMaterial.h:71
@ CDT_USER
The data is a a derivade class data.
Definition gmpFemPhysicsCommonLuaMaterial.h:75
@ CDT_GEOMETRY
TH edata is the geometry table.
Definition gmpFemPhysicsCommonLuaMaterial.h:74
@ CDT_GAUSSATTR
The data is a Gauss attribute.
Definition gmpFemPhysicsCommonLuaMaterial.h:73
@ CDT_NODEATTR
The data is a node attribute.
Definition gmpFemPhysicsCommonLuaMaterial.h:72
QMap< QString, int > _propertyIndexMap
Map associating property names in _map with their accessor indices.
Definition gmpFemPhysicsCommonLuaMaterial.h:170
QMap< QString, int > _nodeAttrIndexMap
Map associating node attribute names in _map with their accessor indices.
Definition gmpFemPhysicsCommonLuaMaterial.h:171
bool(*) SetFieldDataT(QString field, const void *context, const GmElement *e, int ip, const QVariant &v)
Type for the function used to set derived class values imported from an output data sub-table....
Definition gmpFemPhysicsCommonLuaMaterial.h:66
CallDataFunctions _gaussAttrCallFunctions
The set of functions for getting/setting gauss attribute values. Will have a NULL name if _gaussAttrI...
Definition gmpFemPhysicsCommonLuaMaterial.h:178
const QVariantMap * materialMetaDataMap()
Builds the metadata map returned by every GmpFemPhysicsCommonMaterial object based on the plugin data...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:70
QVariantMap * _map
The metadata map built based on _pdata.
Definition gmpFemPhysicsCommonLuaMaterial.h:169
CallDataFunctions _nodeAttrCallFunctions
The set of functions for getting node attribute values. Will have a NULL name if _nodeAttrIndexMap is...
Definition gmpFemPhysicsCommonLuaMaterial.h:177
QMap< QString, int > _gaussAttrIndexMap
Map associating Gauss attribute names in _map with their accessor indices.
Definition gmpFemPhysicsCommonLuaMaterial.h:172
GmTLS< CallData, true > _callData
The per thread set of CallData objects.
Definition gmpFemPhysicsCommonLuaMaterial.h:181
const GmPluginData * pluginData() const
Returns the associated plugin data object.
Definition gmpFemPhysicsCommonLuaMaterial.h:141
static QVariant propertyAccessorValueToVariant(GmCellAccessor *ac, const GmElement *e, int ip, const GmVector *coord, const GmLogCategory &logger)
Retrieves the given accessor value at the given point and converts it to a QVariant,...
Definition gmpFemPhysicsCommonLuaMaterial.cpp:482
A class that implements a common behaviour for physics materials.
Definition gmpFemPhysicsCommonMaterial.h:45
Declaration of the GmpFemPhysicsCommon class.
Declaration of the GmpFemPhysicsCommonMaterial and GmpFemPhysicsCommonMaterialFactory classes.
A structure used to define if a value is required or not, being able to specify conditional situation...
Definition gmpFemPhysicsCommon.h:46
An aux structure storing how to get / set data for input data sub-tables.
Definition gmpFemPhysicsCommonLuaMaterial.h:97
const void * _context
The additional context sent to the getter and setter functions.
Definition gmpFemPhysicsCommonLuaMaterial.h:103
SetFieldDataT _setF
The setter function for the sub-table. Optional.
Definition gmpFemPhysicsCommonLuaMaterial.h:102
GetFieldDataT _getF
The getter function for the sub table. Optional.
Definition gmpFemPhysicsCommonLuaMaterial.h:101
const char * _subTableName
The sub-table name. A NULL value if there is NO DATA for this type.
Definition gmpFemPhysicsCommonLuaMaterial.h:100