MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_fast_marching.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// mg_fast_marching.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _MGFASTMARCHING_
23 #define _MGFASTMARCHING_
24 #include <vector>
25 #include <mg_definition.h>
26 #include "fem_maillage.h"
27 #include "tpl_octree.h"
28 #include "magic_affiche.h"
29 
30 class FEM_SOLUTION;
31 class FEM_MAILLAGE;
32 class FEM_NOEUD;
33 class FEM_ELEMENT3;
34 class FEM_ELEMENT2;
35 class MG_GESTIONNAIRE;
36 
37 
38 namespace MAGIC
39 {
40 
43 
45 {
46 public :
47  MG_FAST_MARCHING(FEM_SOLUTION* solu,int numchamp);
49  virtual ~MG_FAST_MARCHING();
50 
51  //virtual void init(int versiongrad,int versiondistance);
52  virtual void init(void);
53  virtual void init_noeud(std::vector<FEM_NOEUD*> &lst);
54  virtual void init_noeud(char* entite);
55  virtual void init_coord(double x,double y,double z)=0;
56  virtual void propage(double vitesse=1.0)=0;
57  virtual void finalise(void);
58  virtual double get_valeur(double x,double y,double z)=0;
59 protected:
60  //virtual void propage2(double vitesse);
61  //virtual bool traite_particulier2(FEM_ELEMENT2 *ele,FEM_NOEUD* no,double v,double *res);
62  //virtual void propage3(double vitesse);
64  //virtual int resoudgradTtriangle(FEM_ELEMENT2* ele,double v,FEM_NOEUD** noupdate,double *res);
65  //virtual int resoudgradTtriangle_sethian(FEM_ELEMENT2* ele,double v,FEM_NOEUD** noupdate,double *res);
66  //virtual int resoudgradTtriangle_perso(FEM_ELEMENT2* ele,double v,FEM_NOEUD** noupdate,double *res);
67  //bool noeud_est_dans_espace_element(FEM_ELEMENT2* ele,FEM_NOEUD* noele,FEM_NOEUD* no);
68 
69  virtual int sign ( double x );
70  virtual double fdiv ( double a, double b );
71  virtual double dt2d ( double xi,double xb,double yb,double zb,double xd,double yd,double zd,double tb,double v );
72  virtual int Solve_dt2d ( double ax,double ay,double az,double bx,double by,double bz,double dx,double dy,double dz,double at,double bt,double v,double &dt,double &alpha );
73  virtual int val2d ( double ax,double ay,double az,double bx,double by,double bz,double dx,double dy,double dz,double at,double bt,double v,double& dt,double &alpha );
74  virtual double dt3d ( double xi,double eta,double xb,double yb,double zb,double xc,double yc,double zc,double xd,double yd,double zd,double tb,double tc,double v );
75  virtual int Solve_dt3d ( double ax,double ay,double az,double bx,double by,double bz,double cx,double cy,double cz,double dx,double dy,double dz,double at,double bt,double ct,double v,double &dt,double &alpha,double &beta );
76  virtual int val3d ( double ax,double ay,double az,double bx,double by,double bz,double cx,double cy,double cz,double dx,double dy,double dz,double at,double bt,double ct,double v,double& dt,double &alpha,double &beta );
77 
78 
79 
80 
81 
83  int num;
86 
87 
88  //int versiongradTtriangle;
89  //int respectgrad;
91 };
92 
93 
94 };
95 
96 
97 #endif
virtual void propage(double vitesse=1.0)=0
virtual int val2d(double ax, double ay, double az, double bx, double by, double bz, double dx, double dy, double dz, double at, double bt, double v, double &dt, double &alpha)
virtual void init_noeud(std::vector< FEM_NOEUD * > &lst)
virtual double dt2d(double xi, double xb, double yb, double zb, double xd, double yd, double zd, double tb, double v)
virtual void init(void)
virtual double dt3d(double xi, double eta, double xb, double yb, double zb, double xc, double yc, double zc, double xd, double yd, double zd, double tb, double tc, double v)
virtual int sign(double x)
virtual void finalise(void)
virtual int Solve_dt3d(double ax, double ay, double az, double bx, double by, double bz, double cx, double cy, double cz, double dx, double dy, double dz, double at, double bt, double ct, double v, double &dt, double &alpha, double &beta)
MG_FAST_MARCHING(FEM_SOLUTION *solu, int numchamp)
TPL_OCTREE< FEM_ELEMENT2 *, FEM_NOEUD * > oc
virtual int val3d(double ax, double ay, double az, double bx, double by, double bz, double cx, double cy, double cz, double dx, double dy, double dz, double at, double bt, double ct, double v, double &dt, double &alpha, double &beta)
virtual int Solve_dt2d(double ax, double ay, double az, double bx, double by, double bz, double dx, double dy, double dz, double at, double bt, double v, double &dt, double &alpha)
virtual void init_coord(double x, double y, double z)=0
virtual double fdiv(double a, double b)
virtual double get_valeur(double x, double y, double z)=0
const int VERSION_CONSERVE_DISTANCE
const int VERSION_CONSERVE_GRADT
#define a(i, j)