OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
darcyflow.h
Go to the documentation of this file.
1 /*
2  * DarcyFlow.h
3  *
4  * Created on: Feb 25, 2010
5  * Author: carl
6  */
7 
8 #ifndef darcyflow_h
9 #define darcyflow_h
10 
11 #include "engngm.h"
12 #include "inputrecord.h"
13 #include "sparsemtrxtype.h"
14 #include "linsystsolvertype.h"
15 #include "sparselinsystemnm.h"
16 #include "sparsenonlinsystemnm.h"
17 #include "primaryfield.h"
18 
19 #define _IFT_DarcyFlow_Name "darcyflow"
20 
21 namespace oofem {
22 class CommunicatorBuff;
23 class ProblemCommunicator;
24 
30 class DarcyFlow : public EngngModel
31 {
32 private:
34 
35 protected:
36  std :: unique_ptr< PrimaryField > PressureField;
38  std :: unique_ptr< SparseNonLinearSystemNM > nMethod;
39 
40  std :: unique_ptr< SparseMtrx > stiffnessMatrix;
44 
53 
54 public:
55  DarcyFlow(int i, EngngModel * _master);
56  virtual ~DarcyFlow();
57 
58  virtual void solveYourselfAt(TimeStep *tStep);
59  virtual void updateYourself(TimeStep *tStep);
60 
61  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode) { return CIO_IOERR; }
63  virtual int checkConsistency() { return 1; }
64  virtual fMode giveFormulation() { return TL; }
65 
66  virtual void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d);
67 
68  virtual double giveUnknownComponent(ValueModeType, TimeStep *, Domain *, Dof *);
69 
71  void DumpMatricesToFile(FloatMatrix *LHS, FloatArray *RHS, FloatArray *SolutionVector);
72 
74  virtual TimeStep *giveNextStep();
75 
76  virtual int forceEquationNumbering(int id);
77 
78  virtual const char *giveInputRecordName() const { return _IFT_DarcyFlow_Name; }
79  virtual const char *giveClassName() const { return "DarcyFlow"; }
80 };
81 }
82 
83 #endif // darcyflow_h
LinSystSolverType
The values of this type should be related not to specific solvers, but more to specific packages that...
virtual const char * giveClassName() const
Returns class name of the receiver.
Definition: darcyflow.h:79
virtual NumericalMethod * giveNumericalMethod(MetaStep *mStep)
Returns reference to receiver&#39;s numerical method.
Definition: darcyflow.C:202
Class and object Domain.
Definition: domain.h:115
FloatArray incrementalLoadVector
Definition: darcyflow.h:49
Class representing meta step.
Definition: metastep.h:62
Total Lagrange.
Definition: fmode.h:44
virtual TimeStep * giveNextStep()
Returns next time step (next to current step) of receiver.
Definition: darcyflow.C:219
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode)
Stores the state of model to output stream.
Definition: darcyflow.h:61
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
virtual double giveUnknownComponent(ValueModeType, TimeStep *, Domain *, Dof *)
Returns requested unknown.
Definition: darcyflow.C:165
virtual void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d)
Updates components mapped to numerical method if necessary during solution process.
Definition: darcyflow.C:170
This base class is an abstraction for numerical algorithm.
Definition: nummet.h:80
virtual ~DarcyFlow()
Definition: darcyflow.C:33
int currentIterations
Definition: darcyflow.h:45
General IO error.
FloatArray externalForces
Definition: darcyflow.h:42
virtual void solveYourselfAt(TimeStep *tStep)
Solves problem for given time step.
Definition: darcyflow.C:57
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode)
Restores the state of model from output stream.
Definition: darcyflow.h:62
FloatArray incrementalBCLoadVector
Definition: darcyflow.h:48
virtual void updateYourself(TimeStep *tStep)
Updates internal state after finishing time step.
Definition: darcyflow.C:160
virtual const char * giveInputRecordName() const
Definition: darcyflow.h:78
NumericalCmpn
Type representing numerical component.
Definition: numericalcmpn.h:46
SparseMtrxType
Enumerative type used to identify the sparse matrix type.
FloatArray internalForces
Definition: darcyflow.h:41
referenceLoadInputModeType
The following parameter allows to specify how the reference load vector is obtained from given totalL...
std::unique_ptr< PrimaryField > PressureField
Definition: darcyflow.h:36
virtual fMode giveFormulation()
Indicates type of non linear computation (total or updated formulation).
Definition: darcyflow.h:64
LinSystSolverType solverType
Definition: darcyflow.h:33
SparseNonLinearSystemNM::referenceLoadInputModeType refLoadInputMode
Definition: darcyflow.h:51
virtual int forceEquationNumbering()
Forces equation renumbering on all domains associated to engng model.
Definition: engngm.C:473
Class representing vector of real numbers.
Definition: floatarray.h:82
std::unique_ptr< SparseMtrx > stiffnessMatrix
Definition: darcyflow.h:40
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description in input reader.
Definition: darcyflow.C:37
fMode
Type representing the type of formulation (total or updated) of non-linear computation.
Definition: fmode.h:42
FloatArray initialLoad
Definition: darcyflow.h:50
virtual int checkConsistency()
Allows programmer to test some receiver&#39;s internal data, before computation begins.
Definition: darcyflow.h:63
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
FloatArray incrementOfDisplacement
Definition: darcyflow.h:47
Abstract base class representing the "problem" under consideration.
Definition: engngm.h:181
Class describing an extended Darcy flow.
Definition: darcyflow.h:30
the oofem namespace is to define a context or scope in which all oofem names are defined.
Abstract class Dof represents Degree Of Freedom in finite element mesh.
Definition: dof.h:93
void DumpMatricesToFile(FloatMatrix *LHS, FloatArray *RHS, FloatArray *SolutionVector)
Definition: darcyflow.C:128
FloatArray incrementOfSolution
Definition: darcyflow.h:43
#define _IFT_DarcyFlow_Name
Definition: darcyflow.h:19
Class representing solution step.
Definition: timestep.h:80
SparseMtrxType sparseMtrxType
Definition: darcyflow.h:37
std::unique_ptr< SparseNonLinearSystemNM > nMethod
Definition: darcyflow.h:38
DarcyFlow(int i, EngngModel *_master)
Definition: darcyflow.C:27
FloatArray ebeNorm
Definition: darcyflow.h:46

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011