From b1d7e617c7a865f7ae7b2256a6334bd7128999c9 Mon Sep 17 00:00:00 2001
From: Eric Bechet <eric.bechet@ulg.ac.be>
Date: Mon, 19 Oct 2009 13:10:39 +0000
Subject: [PATCH] *** empty log message ***

---
 contrib/arc/highlevel.h | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/contrib/arc/highlevel.h b/contrib/arc/highlevel.h
index 32d7b424c4..c681f5e3dd 100644
--- a/contrib/arc/highlevel.h
+++ b/contrib/arc/highlevel.h
@@ -13,11 +13,14 @@
 #define highlevel_H
 
 #include <vector>
+#include <complex>
 
 #include "dofManager.h"
+#include "SVector3.h"
 
-class entity{};
-class Vector{};
+
+
+typedef SVector3 Vector;
 class Tensor2{};
 class Tensor4{};
 
@@ -30,6 +33,14 @@ template<> struct TensorialTraits<double>
   typedef Tensor2 HessType;
 };
 
+template<> struct TensorialTraits<std::complex<double> >
+{
+  typedef std::complex<double> ValType;
+  typedef Vector GradType;
+  typedef Tensor2 HessType;
+};
+
+
 template<> struct TensorialTraits<Vector>
 {
   typedef Vector ValType;
@@ -43,15 +54,15 @@ template<class T> class Function  // Fonction au sens EF du terme.
 {
 public:
   virtual ~Function(){}
-  virtual void GetVal (double uvw[],entity *e, T& Val)const =0;
-  virtual void GetGrad(double uvw[],entity *e,typename TensorialTraits<T>::GradType &Grad) const =0;
-  virtual void GetHess(double uvw[],entity *e,typename TensorialTraits<T>::HessType &Hess)const =0;
+  virtual void GetVal (double uvw[],MElement *e, T& Val)const =0;
+  virtual void GetGrad(double uvw[],MElement *e,typename TensorialTraits<T>::GradType &Grad) const =0;
+  virtual void GetHess(double uvw[],MElement *e,typename TensorialTraits<T>::HessType &Hess)const =0;
 };
 
 class SpaceBase // renvoie des clefs de dofs
 {
 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
@@ -59,7 +70,7 @@ template<class T> class Space : public SpaceBase // renvoie des clefs de dofs et
 public: 
   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;
 };
 
@@ -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
 {
   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)
                   // Doit etre initialisée AVANT toute opération (pour l'allocation)
                   // en principe ce truc ne devrait pas ^etre reimplemente
                   // il devrait donc dependre d'un parametre template TermBilinear
+                  // elle sait "integrer" dans un elemeent
 
 class FormLinear{}; // renvoie des vecteurs élémentaires
               // on devrait pouvoir construire une forme lin à partir d'une forme bilin pour les pb "matrix free"
-- 
GitLab