Skip to content
Snippets Groups Projects
Commit b1d7e617 authored by Éric Béchet's avatar Éric Béchet
Browse files

*** empty log message ***

parent ac23f544
No related branches found
No related tags found
No related merge requests found
...@@ -13,11 +13,14 @@ ...@@ -13,11 +13,14 @@
#define highlevel_H #define highlevel_H
#include <vector> #include <vector>
#include <complex>
#include "dofManager.h" #include "dofManager.h"
#include "SVector3.h"
class entity{};
class Vector{};
typedef SVector3 Vector;
class Tensor2{}; class Tensor2{};
class Tensor4{}; class Tensor4{};
...@@ -30,6 +33,14 @@ template<> struct TensorialTraits<double> ...@@ -30,6 +33,14 @@ template<> struct TensorialTraits<double>
typedef Tensor2 HessType; typedef Tensor2 HessType;
}; };
template<> struct TensorialTraits<std::complex<double> >
{
typedef std::complex<double> ValType;
typedef Vector GradType;
typedef Tensor2 HessType;
};
template<> struct TensorialTraits<Vector> template<> struct TensorialTraits<Vector>
{ {
typedef Vector ValType; typedef Vector ValType;
...@@ -43,15 +54,15 @@ template<class T> class Function // Fonction au sens EF du terme. ...@@ -43,15 +54,15 @@ template<class T> class Function // Fonction au sens EF du terme.
{ {
public: public:
virtual ~Function(){} virtual ~Function(){}
virtual void GetVal (double uvw[],entity *e, T& Val)const =0; virtual void GetVal (double uvw[],MElement *e, T& Val)const =0;
virtual void GetGrad(double uvw[],entity *e,typename TensorialTraits<T>::GradType &Grad) const =0; virtual void GetGrad(double uvw[],MElement *e,typename TensorialTraits<T>::GradType &Grad) const =0;
virtual void GetHess(double uvw[],entity *e,typename TensorialTraits<T>::HessType &Hess)const =0; virtual void GetHess(double uvw[],MElement *e,typename TensorialTraits<T>::HessType &Hess)const =0;
}; };
class SpaceBase // renvoie des clefs de dofs class SpaceBase // renvoie des clefs de dofs
{ {
public: public:
virtual void getDofs(entity *e,std::vector<Dof> &vecD)=0; virtual void getDofs(MElement *e,std::vector<Dof> &vecD)=0;
}; };
template<class T> class Space : public SpaceBase // renvoie des clefs de dofs et des fonctions de formes template<class T> class Space : public SpaceBase // renvoie des clefs de dofs et des fonctions de formes
...@@ -59,7 +70,7 @@ template<class T> class Space : public SpaceBase // renvoie des clefs de dofs et ...@@ -59,7 +70,7 @@ template<class T> class Space : public SpaceBase // renvoie des clefs de dofs et
public: public:
Space(){}; Space(){};
virtual ~Space(){}; virtual ~Space(){};
virtual void getDofsandSFs(entity *e,std::vector<std::pair< Dof, Function<T>* > > &vecDFF) {} virtual void getDofsandSFs(MElement *e,std::vector<std::pair< Dof, Function<T>* > > &vecDFF) {}
virtual void getSFs(std::vector<std::pair< Dof, Function<T>* > > &vecDFF)=0; virtual void getSFs(std::vector<std::pair< Dof, Function<T>* > > &vecDFF)=0;
}; };
...@@ -80,7 +91,9 @@ template<class T1,class T2> class TermBilinear // terme associe a un "element" ...@@ -80,7 +91,9 @@ template<class T1,class T2> class TermBilinear // terme associe a un "element"
// on peut utiliser des membres statiques pour ce qui est constant pour tous les instances // on peut utiliser des membres statiques pour ce qui est constant pour tous les instances
{ {
TermBilinear(); TermBilinear();
virtual double getTerm(double uvw[],entity &e,Function<T1> &SF,Function<T2> &TF) = 0; virtual double getTerm(double uvw[],MElement &e,Function<T1> &SF,Function<T2> &TF) = 0;
virtual void Update(double uvw[],MElement &e,Function<T1> &SF,Function<T2> &TF) = 0;
// toute fonctios utiles . prevoir un algorithme
}; };
...@@ -89,6 +102,7 @@ class FormBilinear {}; // Renvoie des matrices élémentaires (ff) ...@@ -89,6 +102,7 @@ class FormBilinear {}; // Renvoie des matrices élémentaires (ff)
// Doit etre initialisée AVANT toute opération (pour l'allocation) // Doit etre initialisée AVANT toute opération (pour l'allocation)
// en principe ce truc ne devrait pas ^etre reimplemente // en principe ce truc ne devrait pas ^etre reimplemente
// il devrait donc dependre d'un parametre template TermBilinear // il devrait donc dependre d'un parametre template TermBilinear
// elle sait "integrer" dans un elemeent
class FormLinear{}; // renvoie des vecteurs élémentaires class FormLinear{}; // renvoie des vecteurs élémentaires
// on devrait pouvoir construire une forme lin à partir d'une forme bilin pour les pb "matrix free" // on devrait pouvoir construire une forme lin à partir d'une forme bilin pour les pb "matrix free"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment