Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
LinElas_decl.hpp
1#ifndef LINELAS_decl_hpp
2#define LINELAS_decl_hpp
3#include "feddlib/problems/abstract/Problem.hpp"
4
5namespace FEDD {
6template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
7class LinElas : public Problem<SC,LO,GO,NO> {
8
9public:
10
11 typedef Problem<SC,LO,GO,NO> Problem_Type;
12
13 typedef typename Problem_Type::Matrix_Type Matrix_Type;
14 typedef typename Problem_Type::MatrixPtr_Type MatrixPtr_Type;
15
16 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
17
18 typedef typename Problem_Type::MultiVector_Type MultiVector_Type;
19 typedef typename Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
20
21 typedef typename Problem_Type::BlockMultiVector_Type BlockMultiVector_Type;
22 typedef typename Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type;
23
24 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
25 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
26
27
28 // Konstruktor
29 LinElas(const DomainConstPtr_Type &domain, std::string FEType, ParameterListPtr_Type parameterList);
30
31 // Destruktor
32 ~LinElas();
33
34 virtual void info();
35
36 // Assemblierung der Matrix, hier: \sigma = 2\mu \epsilon + \lambda \div(u) I, mit \epsilon = 0.5 ( \grad u + (\grad u)^T )
37 virtual void assemble( std::string type = "" ) const;
38
39 // Assemblierung der rechten Seite der DGL (RHS), welche in AdvanceinTime() genutzt wird;
40 // also fuer zeitabhaengige Probleme ist
41 // Beachte: In AdvanceTime() wird in jedem Zeitschritt der SourceTerm neu berechnet, auch
42 // wenn dieser konstant ist!
43 // TODO: Baue in Problem_def.hpp sowas wie boolHasTimeDependentSourceTerm ein, mit default auf false.
44// void assembleSourceTerm(double time);
45
46 virtual void getValuesOfInterest( vec_dbl_Type& values ){};
47
48 virtual void computeValuesOfInterestAndExport() {};
49 // Steifigkeitsmatrix des Problems der linearen Elastizitaet gegeben wie in assemble().
50 // Moeglicherweise nicht noetig (vgl. Laplace.hpp)
51 // Falls es doch irgendwann benutzt wird, denke daran den Konstruktor zu aendern (vgl. Stokes.hpp)
52 // Teuchos::RCP<Matrix_Type> K_;
53// virtual void assembleExternal( std::string type ){};
54private:
55
56};
57}
58
59#endif
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5