17#ifndef Op_Diff_VEF_Face_Penalise_included
18#define Op_Diff_VEF_Face_Penalise_included
19#include <Op_Diff_VEF_Face.h>
20#include <Domaine_Cl_VEF.h>
33 DoubleTab&
ajouter(
const DoubleTab& inconnue, DoubleTab& resu)
const override;
34 DoubleTab&
calculer(
const DoubleTab& inconnue, DoubleTab& resu)
const override;
44 void voisinage(
const int Numero_face, IntList& Voisinage)
const;
51 void voisinage(
const IntList& Ensemble_faces, IntList& Voisinage)
const;
57 double signe(
const int Face1,
const int Face2 )
const;
68 IntList& Face_commune)
const;
75 void reduction(
const IntList& Liste1,
const IntList& Liste2,
76 IntList& Liste_reduite)
const;
87 int autre_face(
const int Face1,
const int Face2)
const;
92 inline double diametre(
const int Element)
const;
97 inline double longueur(
const int Face)
const;
105 inline const Domaine& domaine()
const;
117 double x_sommet1,x_sommet2;
118 double y_sommet1,y_sommet2;
123 x_sommet1 = domaine().coord(sommet1,0);
124 y_sommet1 = domaine().coord(sommet1,1);
126 x_sommet2 = domaine().coord(sommet2,0);
127 y_sommet2 = domaine().coord(sommet2,1);
129 return sqrt( pow(x_sommet1 - x_sommet2,2) + pow(y_sommet1 - y_sommet2,2) );
134 int face1,face2,face3;
135 double longueur_face1,longueur_face2,longueur_face3;
136 double longueur_max,diametre_element;
146 longueur_max = longueur_face1 >= longueur_face2 ? longueur_face1 :
148 diametre_element = longueur_face3 >= longueur_max ? longueur_face3 :
151 return diametre_element;
156 return le_dom_vef.valeur();
159inline const Domaine_Cl_VEF& Op_Diff_VEF_Face_Penalise::domaine_cl()
const
161 return la_zcl_vef.valeur();
164inline const Domaine& Op_Diff_VEF_Face_Penalise::domaine()
const
int face_sommets(int i, int j) const
Returns the index of the i-th vertex of face num_face.
int elem_faces(int i, int j) const
Returns the index of the i-th face of element num_elem; the face numbering convention is.
const Domaine & domaine() const
void reduction(const IntList &Liste1, const IntList &Liste2, IntList &Liste_reduite) const
void faces_communes(const int Face1, const int Face2, IntList &Face_commune) const
Member function returning the list of faces belonging to the neighbourhood of both Face1 AND Face2.
double signe(const int Face1, const int Face2) const
double diametre(const int Element) const
DoubleTab & ajouter(const DoubleTab &inconnue, DoubleTab &resu) const override
Method that computes the velocity at time n+1 when the explicit scheme is used.
void voisinage(const int Numero_face, IntList &Voisinage) const
Method computing the neighbourhood of a face.
DoubleTab & calculer(const DoubleTab &inconnue, DoubleTab &resu) const override
Method that computes the contribution of the operator.
double coefficient_penalisation(const int Numero_face) const
Member function returning the penalisation coefficient associated with each face of the primary mesh.
double longueur(const int Face) const
int autre_face(const int Face1, const int Face2) const
Member function returning the 3rd face of element Element if Face1 and Face2 belong to the same eleme...
int element_commun(const int Face1, const int Face2) const
Member function returning the index of the element containing both Face1 and Face2 if it exists,...
const Domaine_VEF & domaine_vef() const