24#ifndef _GEMA_PLUGIN_FEM_SOLVER_H_
25#define _GEMA_PLUGIN_FEM_SOLVER_H_
53 friend class XfemSolver;
65 bool calcLinearResidual(
double* rnorm,
double* maxNodeDiff,
double* avgNodeDiff);
87 bool update(
int mode,
QString& err);
95 virtual bool fillStateControlMapData (QVariantMap* map);
96 virtual bool stateControlMapDataLoaded(QVariantMap* map);
108 virtual void meshChanged();
127 virtual bool initResultAttributes(
int fatherItemId);
128 virtual void intLinearSolverPrintOptions();
129 virtual bool cleanup();
133 bool solveLinearSystem(
bool xFilled);
135 double timeConvert(
double val);
145 int bcIndex,
int bcListIndex,
int border,
const GmCellBoundary* b);
149 bool addFixedForces();
150 virtual bool applyFixedBoundaryConditions(
int* numFixed);
157 int loadId1 = -1,
int id2 = -1);
158 void printGlobalData ();
168 bool _enabledWarn[NumDisabledWarnings];
194 int _iterErrAttr = -1;
197 int _prepareItem = -1;
198 int _physicsItem = -1;
199 int _fixedBcItem = -1;
200 int _fixedForcesItem = -1;
201 int _assemblerItem = -1;
202 int _physicsBeforeLoopItem = -1;
203 int _physicsfillElemDataItem = -1;
204 int _physicsfillElemDataBcItem = -1;
205 int _physicsfillElemDataExtLoadsItem = -1;
206 int _physicsfillContactDataItem = -1;
207 int _physicsAfterLoopItem = -1;
208 int _assemblerBeginItem = -1;
209 int _assemblerAddItem = -1;
210 int _assemblerEndItem = -1;
211 int _assemblerT1Item = -1;
212 int _assemblerT2Item = -1;
213 int _assemblerT3Item = -1;
214 int _assemblerT4Item = -1;
virtual bool stateAboutToBeSaved(GmStateDump *state)
virtual bool stateSaved(GmStateDump *state)
virtual bool addStateItemsToGroup(GmStateDump *state, int groupId)=0
virtual bool stateLoaded(GmStateDump *state)
virtual bool stateAboutToBeLoaded(GmStateDump *state)
A class responsible for assembling the global stiffness matrix, handling multiple physics with possib...
Definition gmpFemAssembler.h:63
FixedDofMode
Definition gmpFemAssembler.h:67
Basic interface for defining the rules used to combine information from multiple matrices into a sing...
Definition gmpFemAssemblerCombiner.h:34
Basic interface for defining the rules used to combine information from multiple vectors into a singl...
Definition gmpFemAssemblerCombiner.h:103
A convenience class that builds a GmMatrixSet with the types given by GmpFemMatrixTypes and also asso...
Definition gmpFemMatrixSet.h:59
Base interface class for FEM Physics type plugins.
Definition gmpFemPhysics.h:45
FemResultType
Result type for local matrix calculation methods.
Definition gmpFemPhysics.h:50
Basic class for the FEM solving process.
Definition gmpFemSolver.h:52
const GmLogCategory & _logger
Logger for eventual messages.
Definition gmpFemSolver.h:165
void setVectorCombinerObject(const GmpFemAssemblerVectorCombiner *combiner)
Sets the combiner objects that will be used by the assembler to merge elemental data from multiple ve...
Definition gmpFemSolver.h:85
void setMatrixCombinerObject(const GmpFemAssemblerMatrixCombiner *combiner)
Sets the combiner object that will be used by the assembler to merge elemental data from multiple mat...
Definition gmpFemSolver.h:75
bool _parallelAssembler
Can we do the assembling steps in parallel?
Definition gmpFemSolver.h:188
QVector< GmpFemPhysics * > _physicsList
List of physics that will cooperate to generate the system response.
Definition gmpFemSolver.h:163
GmElementMesh * _mesh
Mesh with the nodes and cells data.
Definition gmpFemSolver.h:161
GmpFemSolverOptions _solverOptions
The set of solver options.
Definition gmpFemSolver.h:170
QVariantMap _controlMap
Variant map used for storing dump control data for the solver.
Definition gmpFemSolver.h:186
DisabledWarnings
Enums describing the set of warnings that can be disabled by simulation options.
Definition gmpFemSolver.h:114
@ NumDisabledWarnings
The number of entries above.
Definition gmpFemSolver.h:121
@ PrescribedForceForFixedDof
Prescribed force over a fixed BC Dof warning at addFixedForces()
Definition gmpFemSolver.h:116
@ FixedBcForInvalidDof
Fixed BC specified over an invalid Dof warning at collectFixedBcs()
Definition gmpFemSolver.h:117
@ ConflictingFixedBcValue
Different fixed BC values specified for a single Dof at collectFixedBcs()
Definition gmpFemSolver.h:118
@ PrescribedForceForInvalidDof
Prescribed force over an invalid Dof warning at addFixedForces()
Definition gmpFemSolver.h:115
const GmpFemAssemblerVectorCombiner * _vecCombiner
The combiner object used with the assembler to merge data from multiple elemental vectors.
Definition gmpFemSolver.h:176
unsigned _preCount
Number of times that prepareMatrices() was called.
Definition gmpFemSolver.h:183
virtual bool stateLoadedCalcDerivedResultsNonLinear()
Returns the value of the "nonLinearSolver" parameter that will be passed to the calcDerivedResults() ...
Definition gmpFemSolver.h:102
int _solverId
A unique index for this solver object used by the result attribute auto prefix feature.
Definition gmpFemSolver.h:160
UnitConverter * _timeConv
Unit converter from the currentTimeUnit to the physics unit. Used only by derived solvers.
Definition gmpFemSolver.h:172
const GmpFemAssemblerMatrixCombiner * _matCombiner
The combiner object used with the assembler to merge data from multiple elemental matrices.
Definition gmpFemSolver.h:175
GmVector _x
State vector.
Definition gmpFemSolver.h:180
GmVector _r
Residual vector.
Definition gmpFemSolver.h:181
GmpFemVectorSet _vecSet
Set of global/element vectors filled by physics.
Definition gmpFemSolver.h:178
unsigned _runCount
Number of times that run() was called.
Definition gmpFemSolver.h:184
GmSimulationData * _simulation
Simulation Data.
Definition gmpFemSolver.h:162
GmpFemAssembler * _assembler
Assembler used for adding element contributions to vectors and matrices.
Definition gmpFemSolver.h:174
QMutex _printMutex
Mutex for serializing calls to printElementData when traversing elements in parallel.
Definition gmpFemSolver.h:166
GmNumSolverPrinter * _solver
Wrapper over the numeric solver that will be used to solve the set of linear equations.
Definition gmpFemSolver.h:164
GmpFemMatrixSet _matSet
Set of global/element matrices filled by physics.
Definition gmpFemSolver.h:179
Definition gmpFemSolverOptions.h:39
A convenience class that builds a GmVectorSet with the types given by GmpFemVectorTypes and also asso...
Definition gmpFemVectorSet.h:50
Declaration of the GmpFemAssembler class.
Declaration of the GmpFemMatrixSet class.
Declaration of the GmpFemPhysics interface class.
Declaration of useful configuration definitions for the plugin library.
Declaration of the GmpFemSolverOptions class.
Declaration of the GmpFemVectorSet class.