16#ifndef distances_VEF_inclus
17#define distances_VEF_inclus
18#include <Domaine_VEF.h>
21double distance(
int dim,
int fac,
int elem,CDoubleTabView xp, CDoubleTabView xv, CDoubleTabView face_normale);
23double norm_vit1(
int dim, CDoubleTabView vit,
int fac,
int nfac,
const int* num, CDoubleTabView face_normale,
double* val);
25double norm_2D_vit1(
const DoubleTab& vit,
int elem,
int num1,
int num2,
const Domaine_VEF& domaine,
double& val1,
double& val2);
26double norm_2D_vit1_lp(
const DoubleTab& vit,
int elem,
int num1,
int num2,
const Domaine_VEF& domaine,
double& val1,
double& val2);
27double norm_2D_vit1(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
const Domaine_VEF& domaine,
double& val1);
28double norm_2D_vit1(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
int num4,
const Domaine_VEF& domaine,
double& val1);
30double norm_2D_vit2(
const DoubleTab& vit,
int elem,
int num1,
int num2,
const Domaine_VEF& domaine,
double& val1);
31double norm_2D_vit2(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
const Domaine_VEF& domaine,
double& val1);
32double distance_2D(
int fac,
int elem,
const Domaine_VEF& domaine);
34double norm_3D_vit1(
const DoubleTab& vit,
int elem,
int num1,
const Domaine_VEF& domaine,
double& val1 ,
double& val2,
double& val3);
35double norm_3D_vit1(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
const Domaine_VEF& domaine,
double& val1 ,
double& val2,
double& val3);
36double norm_3D_vit1(
const DoubleTab& vit,
int fac,
int num1,
int num2,
int num3,
int num4,
const Domaine_VEF& domaine,
double& val1,
double& val2,
double& val3);
38double norm_3D_vit2(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
const Domaine_VEF& domaine,
double& val1 ,
double& val2,
double& val3);
39double norm_3D_vit1_lp(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
41 double& val1 ,
double& val2,
double& val3);
42double norm_2D_vit2(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
int num4,
const Domaine_VEF& domaine,
double& val1);
43double norm_3D_vit1(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
int num4,
int num5,
const Domaine_VEF& domaine,
double& val1 ,
double& val2,
double& val3);
44double norm_3D_vit2(
const DoubleTab& vit,
int elem,
int num1,
int num2,
int num3,
int num4,
int num5,
const Domaine_VEF& domaine,
double& val1 ,
double& val2,
double& val3);
45double norm_3D_vit2(
const DoubleTab& vit,
int fac,
int num1,
int num2,
int num3,
int num4,
const Domaine_VEF& domaine,
double& val1,
double& val2,
double& val3);
46double distance_3D(
int fac,
int elem,
const Domaine_VEF& domaine);
47double distance_face_elem(
int fac,
int elem,
const Domaine_VEF& domaine);
48double norm_vit_lp_k(
const DoubleTab& vit,
int face,
int face_b,
const Domaine_VEF& domaine,ArrOfDouble& val,
int is_defilante);
50DoubleVect& calcul_longueur_filtre(DoubleVect& longueur_filtre,
const Motcle& methode,
const Domaine_VEF& domaine);
51double distance_sommets(
const int ,
const int ,
const Domaine_VEF& );
52double som_pscal(
const int ,
const int ,
const int ,
const int ,
const Domaine_VEF& );
55inline double vitesse_tangentielle(
const double v0,
const double v1,
const double r0,
const double r1)
58 return sqrt(std::fabs(carre(v0)+carre(v1)-carre(v0*r0+v1*r1)));
60inline double vitesse_tangentielle(
const double v0,
const double v1,
const double v2,
const double r0,
const double r1,
const double r2)
63 return sqrt(std::fabs(carre(v0)+carre(v1)+carre(v2)-carre(v0*r0+v1*r1+v2*r2)));
66inline void calcule_r0r1(
const DoubleTab& face_normale,
int& fac,
double& r0,
double& r1)
68 r0=face_normale(fac,0);
69 r1=face_normale(fac,1);
70 double tmp=1/sqrt(r0*r0+r1*r1);
75inline void calcule_r0r1r2(
const DoubleTab& face_normale,
int& fac,
double& r0,
double& r1,
double& r2)
77 r0=face_normale(fac,0);
78 r1=face_normale(fac,1);
79 r2=face_normale(fac,2);
80 double tmp=1/sqrt(r0*r0+r1*r1+r2*r2);
93inline double distance_face(
int fac,
int fac1,
const Domaine_VEF& domaine)
96 const DoubleTab& xv = domaine.xv();
97 const DoubleTab& face_normale = domaine.face_normales();
100 for (
int i=0; i<dimension; i++)
102 double ni = face_normale(fac,i);
103 a += ni * (xv(fac1,i) - xv(fac,i));
106 return std::fabs(a / sqrt(b));
109KOKKOS_INLINE_FUNCTION
110double distance_face(
int dim,
int fac,
int fac1, CDoubleTabView xv, CDoubleTabView face_normale)
114 for (
int i=0; i<dim; i++)
116 double ni = face_normale(fac,i);
117 a += ni * (xv(fac1,i) - xv(fac,i));
120 return std::fabs(a / sqrt(b));
124KOKKOS_INLINE_FUNCTION
125double distance(
int dim,
int fac,
int elem, CDoubleTabView xp, CDoubleTabView xv, CDoubleTabView face_normale)
129 for (
int i=0; i<dim; i++)
131 double fn_i = face_normale(fac, i);
132 norme += fn_i * fn_i;
133 ps += fn_i * (xp(elem, i) - xv(fac, i));
135 return std::fabs(ps/sqrt(norme));
138KOKKOS_INLINE_FUNCTION
139double norm_vit1(
int dim, CDoubleTabView vit,
int fac,
int nfac,
const int* num,
140 CDoubleTabView face_normale,
146 for (
int i=0; i<dim; i++)
148 r[i] = face_normale(fac, i);
149 norme += r[i] * r[i];
152 for(
int i = 0; i < dim; i++)
156 for (
int i=0; i<dim; i++)
159 for (
int j = 0; j < dim; j++)
160 v[i] += vit(num[j], i);
166 for (
int i=0; i<dim; i++)
168 sum_carre += carre(v[i]);
171 double norm_vit = sqrt(std::fabs(sum_carre-carre(psc)));
174 for (
int i=0; i<dim; i++)
175 val[i]=(v[i] - psc*r[i])/(norm_vit + DMINFLOAT);
180KOKKOS_INLINE_FUNCTION
181double norm_vit1_lp(
int dim, CDoubleTabView vit,
int fac,
int nfac,
const int* num,
182 CDoubleTabView face_normale,
188 for (
int i=0; i<dim; i++)
190 r[i] = face_normale(fac, i);
191 norme += r[i] * r[i];
194 for(
int i = 0; i < dim; i++)
198 for (
int i=0; i<dim; i++)
201 for (
int j = 0; j < dim; j++)
202 v[i] += vit(num[j], i);
208 for (
int i=0; i<dim; i++)
210 sum_carre += carre(v[i]);
213 double norm_vit = sqrt(std::fabs(sum_carre-carre(psc)));
216 for (
int i=0; i<dim; i++)
217 val[i]=(v[i] - psc*r[i])/(norm_vit + DMINFLOAT);
222KOKKOS_INLINE_FUNCTION
223double norm_vit_lp_k(
int dim, CDoubleTabView vit,
int num1,
int fac, CDoubleTabView face_normale,
double* val,
int is_defilante)
228 for (
int i=0; i<dim; i++)
230 r[i] = face_normale(fac, i);
231 norme += r[i] * r[i];
234 for(
int i = 0; i < dim; i++)
238 for (
int i=0; i<dim; i++)
239 v[i] = vit(num1, i) - is_defilante * vit(fac, i);
243 for (
int i=0; i<dim; i++)
245 sum_carre += carre(v[i]);
248 double norm_vit = sqrt(std::fabs(sum_carre-carre(psc)));
251 for (
int i=0; i<dim; i++)
252 val[i] = (v[i]-psc*r[i])/(norm_vit+DMINFLOAT);
Une chaine de caractere (Nom) en majuscules.