16#include <Hexaedre_axi.h>
27template <
typename _SIZE_>
39template <
typename _SIZE_>
50template <
typename _SIZE_>
53 static Nom nom=
"VOXEL8";
62template <
typename _SIZE_>
65 const IntTab_t& les_Polys = this->mon_dom->les_elems();
66 const Domaine_t& le_dom = this->mon_dom.valeur();
67 int_t nb_elem = this->mon_dom->nb_elem();
72 for (
int_t num_elem=0; num_elem<nb_elem; num_elem++)
75 d_teta = le_dom.
coord(les_Polys(num_elem,3),1) -
76 le_dom.
coord(les_Polys(num_elem,1),1);
81 for(
int s=0; s<this->
nb_som(); s++)
83 int_t num_som = les_Polys(num_elem,s);
85 xp(num_elem,i) += le_dom.
coord(num_som,i);
86 if(le_dom.
coord(num_som,1) == 0.)
87 xp(num_elem,1) += 2*M_PI;
92 for(
int s=0; s<this->
nb_som(); s++)
94 int_t num_som = les_Polys(num_elem,s);
96 xp(num_elem,i) += le_dom.
coord(num_som,i);
99 double x=1./this->
nb_som();
115template <
typename _SIZE_>
119 const Domaine_t& dom=this->mon_dom.valeur();
122 double t7 = dom.
coord(som7,1);
123 if (t7<dom.
coord(som0,1)) t7+=2*M_PI;
124 if ( inf_ou_egal(dom.
coord(som0,0),pos[0]) && inf_ou_egal(pos[0],dom.
coord(som7,0))
125 && inf_ou_egal(dom.
coord(som0,1),pos[1]) && inf_ou_egal(pos[1],t7)
126 && inf_ou_egal(dom.
coord(som0,2),pos[2]) && inf_ou_egal(pos[2],dom.
coord(som7,2)) )
141template <
typename _SIZE_>
144 const Domaine_t& dom=this->mon_dom.valeur();
164template <
typename _SIZE_>
167 const Domaine_t& dom=this->mon_dom.valeur();
168 double r,dr,d_teta,dz;
173 for (
int_t num_poly=0; num_poly<size_tot; num_poly++)
182 if (d_teta<0) d_teta+=2.*M_PI;
184 volumes[num_poly]= dr*r*d_teta*dz;
int_t nb_elem_tot() const
double coord(int_t i, int j) const
int_t sommet_elem(int_t i, int j) const
Renvoie le numero (global) du j-ieme sommet du i-ieme element.
Class defining operators and methods for all reading operation in an input flow (file,...
Classe Hexaedre Cette represente un element geometrique a 6 faces, 8 sommets et.
int nb_som() const override
Nb of vertices for the element.
Classe Hexaedre_axi Cette classe represente la deformee de l'hexaedre dans.
void calculer_centres_gravite(DoubleTab_t &c) const override
Calcule les centres de gravites de tous les elements du domaine associe a l'element goemetrique.
Domaine_32_64< _SIZE_ > Domaine_t
DoubleTab_T< _SIZE_ > DoubleTab_t
int contient(const ArrOfDouble &pos, int_t elem) const override
NE FAIT RIEN: A CODER,renvoie toujours 0.
DoubleVect_T< _SIZE_ > DoubleVect_t
void calculer_volumes(DoubleVect_t &vols) const override
Calcule les volumes des elements du domaine associe.
const Nom & nom_lml() const override
Renvoie le nom LML d'un triangle = "VOXEL8".
IntTab_T< _SIZE_ > IntTab_t
SmallArrOfTID_T< _SIZE_ > SmallArrOfTID_t
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Classe de base des flux de sortie.
_SIZE_ size_array() const
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ size_totale() const