LuaProxyFemPhysics
The GeMA Lua Proxy FEM Physics Plugin
Loading...
Searching...
No Matches
gmpLuaProxyFemPhysics.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_LUA_PROXY_FEM_PHYSICS_H_
25#define _GEMA_PLUGIN_LUA_PROXY_FEM_PHYSICS_H_
26
27
28#include <gmpFemPhysics.h>
29
30class LuaTable;
31
34class GmpLuaProxyFemPhysics : public GmpFemPhysics
35{
36public:
37 GmpLuaProxyFemPhysics(GmSimulationData* simulation, QString id, QString description, const GmLogCategory& logger);
38 virtual ~GmpLuaProxyFemPhysics();
39
40 // Comments on the base class
41 virtual const char* pluginName() const { return "LuaProxyFemPhysics"; }
42
43 // Comments on the base class
44 virtual const char* pluginType() const { return "proxy"; }
45
46 virtual const GmElementDof* dofMapping(GmCellType type) const;
47 virtual Unit dofUnit(int dof) const;
48 virtual Unit timeUnit() const;
49
50 virtual bool supportsCellType(GmCellType type) const;
51
52 virtual bool beforeElementStiffnessLoop(const GmpFemMatrixSet& elemMatrices, const GmpFemVectorSet& elemVectors);
53 virtual void afterElementStiffnessLoop();
54 virtual FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
55
56 virtual const QStringList& supportedBcTypes() const;
57 virtual bool bcAffectsCalc(const GmBoundaryCondition* bc) const;
58 virtual FemResultType fillElementDataForBc(const GmElement* e, const GmBoundaryCondition* bc, int bcIndex, int bcListIndex,
59 int border, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
60
61 virtual bool fixedNodalForcesBc(QVector<int>& nodes, QVector<int>& dof, QVector<double>& values) const;
62 virtual bool fixedNodalDofsBc (QVector<int>& nodes, QVector<int>& dof, QVector<double>& values, bool* constantValues) const;
63
64 virtual bool calcDerivedResults(bool nonLinearSolver);
65
66protected:
67 virtual bool checkMeshDimension(int ndim);
68 virtual bool checkAndLoadPrivateData(LuaTable& table);
69 virtual bool checkAndLoadDofMapping(LuaTable& table);
70 virtual bool checkAndLoadPropertyAccessors(LuaTable& table);
71 virtual bool checkAndLoadAttributeAccessors(LuaTable& nodeTable, LuaTable& cellTable, LuaTable& gaussTable);
72 virtual bool checkAndLoadExternalLoadAccessors(LuaTable& loadsTable);
73 virtual bool checkAndLoadBcAccessors();
74 virtual bool checkAndLoadContactBcAccessors();
75 virtual bool checkAndLoadDiscontinuitySetAccessors(LuaTable& table);
76
77private:
78 bool prepareCallMethod(const char* name, bool optional) const;
79 bool callStdMethod(int npar, int nresults = 1) const;
80
81 bool parseAccessors(LuaTable& table, LuaTable& transTable, GmValueSetKind acType, const GmBoundaryCondition* bc = NULL);
82 bool fillBcLists(const char* fname, QVector<int>& nodes, QVector<int>& dof, QVector<double>& values, bool* constantValues) const;
83
90};
91
92#endif
93
Basic class for the Lua Proxy physics plugin object.
Definition gmpLuaProxyFemPhysics.h:35
bool parseAccessors(LuaTable &table, LuaTable &transTable, GmValueSetKind acType, const GmBoundaryCondition *bc=NULL)
Parses entries from the given table creating accessors for them, subject to the given restrictions.
Definition gmpLuaProxyFemPhysics.cpp:621
virtual bool checkMeshDimension(int ndim)
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:361
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:200
QMap< int, QString > _dofUnitMap
List with dof units.
Definition gmpLuaProxyFemPhysics.h:87
virtual const QStringList & supportedBcTypes() const
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:243
virtual bool fixedNodalForcesBc(QVector< int > &nodes, QVector< int > &dof, QVector< double > &values) const
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:319
virtual bool checkAndLoadPropertyAccessors(LuaTable &table)
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:433
bool prepareCallMethod(const char *name, bool optional) const
Prepares the call for a table method, puting the function and self on the stack top.
Definition gmpLuaProxyFemPhysics.cpp:567
virtual bool calcDerivedResults(bool nonLinearSolver)
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:343
virtual bool supportsCellType(GmCellType type) const
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:136
virtual ~GmpLuaProxyFemPhysics()
Destructor.
Definition gmpLuaProxyFemPhysics.cpp:57
GmElementDof * _dofMap[GM_NUM_CELL_TYPES]
The list with maps of dof per element type.
Definition gmpLuaProxyFemPhysics.h:85
bool fillBcLists(const char *fname, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
Calls the function fname and fills the given lists with the returned tables (constantValues should be...
Definition gmpLuaProxyFemPhysics.cpp:770
virtual const GmElementDof * dofMapping(GmCellType type) const
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:100
virtual bool checkAndLoadDofMapping(LuaTable &table)
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:406
QList< const GmBoundaryCondition * > _bcList
A list of the supported Bcs.
Definition gmpLuaProxyFemPhysics.h:88
virtual bool beforeElementStiffnessLoop(const GmpFemMatrixSet &elemMatrices, const GmpFemVectorSet &elemVectors)
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:162
virtual bool bcAffectsCalc(const GmBoundaryCondition *bc) const
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:255
bool callStdMethod(int npar, int nresults=1) const
Call a standard method (which either doesn't return anything or returns a boolean + extra results)
Definition gmpLuaProxyFemPhysics.cpp:592
virtual Unit dofUnit(int dof) const
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:118
virtual bool checkAndLoadBcAccessors()
See comments on the base class.
Definition gmpLuaProxyFemPhysics.cpp:472
virtual bool fixedNodalDofsBc(QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:331
QVector< int > _dofList
Dof list for the physics.
Definition gmpLuaProxyFemPhysics.h:86
LuaTable * _methodTable
The Lua method table.
Definition gmpLuaProxyFemPhysics.h:84
virtual FemResultType fillElementDataForBc(const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:270
QStringList _bcTypes
A list with the supported bc types.
Definition gmpLuaProxyFemPhysics.h:89
virtual bool checkAndLoadPrivateData(LuaTable &table)
This is the first function called by the Fem physics infrastructure, so it is its responsability to g...
Definition gmpLuaProxyFemPhysics.cpp:69
virtual void afterElementStiffnessLoop()
See comments on base class.
Definition gmpLuaProxyFemPhysics.cpp:181
GmpLuaProxyFemPhysics(GmSimulationData *simulation, QString id, QString description, const GmLogCategory &logger)
Constructor. Will be called by the plugin loading code.
Definition gmpLuaProxyFemPhysics.cpp:48
GmCellType
GM_NUM_CELL_TYPES
GmValueSetKind