16#include <Domaine_EF_axi.h>
17#include <DomaineAxi1d.h>
18#include <Domaine_Cl_dis_base.h>
19#include <Equation_base.h>
20#include <Milieu_base.h>
49 for (
int elem=0; elem<nbelem; elem++)
54 for (
int i=0; i<nbsom_elem; i++)
57 for (
int f=0; f<nbface_elem; f++)
59 int face=elemfaces(elem,f);
60 for (
int s=0; s<nbsom_face; s++)
65 double x1 = les_coords(les_elems(elem,0),0);
66 double x2 = les_coords(les_elems(elem,1),0);
67 double y1 = les_coords(les_elems(elem,0),1);
68 double y2 = les_coords(les_elems(elem,1),1);
70 double r1 = sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
71 double r2 = sqrt((x2-x0)*(x2-x0)+(y2-y0)*(y2-y0));
91 assert(nb_som_elem==2);
93 IPhi_.resize(nbelem,nb_som_elem);
102 for (
int elem=0; elem<nbelem; elem++)
104 double x1 = les_coords(les_elems(elem,0),0);
105 double x2 = les_coords(les_elems(elem,1),0);
106 double y1 = les_coords(les_elems(elem,0),1);
107 double y2 = les_coords(les_elems(elem,1),1);
112 double r1 = sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
113 double r2 = sqrt((x2-x0)*(x2-x0)+(y2-y0)*(y2-y0));
114 IPhi_(elem,0) = (M_PI/3.)*(r2*r2+r1*r2-2.*r1*r1);
115 IPhi_(elem,1) = (M_PI/3.)*(2.*r2*r2-r1*r2-r1*r1);
117 for (
int s=0; s<nb_som_elem; s++)
121 IPhi_.echange_espace_virtuel();
142 Process::exit(
"Error, origine should be explicitly defined with ModifyDomaineAxi1D keyword.");
151 Cerr <<
"*****************************************************************************" << finl;
153 Cerr <<
" is not compatible" << finl;
154 Cerr <<
" with the discretisation EF_axi. " << finl;
155 Cerr <<
" Please use the discretization EF or define a domain of type DomaineAxi1d." << finl;
156 Cerr <<
"*****************************************************************************" << finl;
172 return ref_cast(DomaineAxi1d,
domaine());
177 return ref_cast(DomaineAxi1d,
domaine());
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual DoubleTab & valeur_aux(const DoubleTab &positions, DoubleTab &valeurs) const
Provoque une erreur ! Doit etre surchargee par les classes derivees.
void associer_origine_repere(const DoubleTab_t &orig)
bool has_champ_origine() const
const Champ_base & champ_origine() const
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
void calculer_centres_gravite(DoubleTab_t &xp) const
Calcule les centres de gravites des elements du domaine.
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
const DoubleTab_t & coord_sommets() const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
void discretiser() override
DoubleTab origine_repere_
void calculer_Bij_gen(DoubleTab &bij_) override
void remplir_tableau_origine()
void verifie_compatibilite_domaine() override
const DomaineAxi1d & domaine_axi() const
void calculer_IPhi(const Domaine_Cl_dis_base &zcl) override
void discretiser() override
void typer_elem(Domaine &domaine_geom) override
virtual const DoubleVect & face_surfaces() const
int nb_som_face() const
renvoie le nombre de sommets par face.
int oriente_normale(int f, int e) const
virtual DoubleTab & face_normales()
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
DoubleVect & porosite_elem()
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
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.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.