16#include <Op_Dift_EF_Q1.h>
17#include <Domaine_EF.h>
18#include <Champ_Uniforme.h>
19#include <Milieu_base.h>
22#include <Probleme_base.h>
23#include <Dirichlet_paroi_fixe.h>
24#include <Dirichlet_paroi_defilante.h>
25#include <Neumann_paroi.h>
26#include <Echange_global_impose.h>
27#include <Echange_interne_global_impose.h>
28#include <Echange_couplage_thermique.h>
29#include <Echange_interne_global_parfait.h>
30#include <Champ_front_calc_interne.h>
32#include <Op_Conv_EF.h>
34#include <Champ_Fonc_P0_base.h>
38Op_Dift_EF_Q1::Op_Dift_EF_Q1():transpose_(1),transpose_partout_(0),nouvelle_expression_(0) { }
51 param.ajouter(
"grad_u_transpose", &
transpose_ );
54 param.ajouter_condition(
"(value_of_grad_u_transpose_EQ_0)_OR_(value_of_grad_u_transpose_EQ_1)",
" grad_u_transpose doit valoir 0 ou 1 ");
55 param.ajouter_condition(
"(value_of_grad_u_transpose_partout_EQ_0)_OR_(value_of_grad_u_transpose_partout_EQ_1)",
" grad_u_transpose_partout doit valoir 0 ou 1 ");
56 param.ajouter_condition(
"(value_of_grad_u_transpose_partout_EQ_0)_OR_((value_of_grad_u_transpose_partout_EQ_1)_AND_(value_of_grad_u_transpose_EQ_1))",
" si grad_u_transpose_partout vaut 1 alors grad_u_transpose doit valoir 1");
57 param.lire_avec_accolades_depuis(s);
66 if (!(le_modele_turbulence->utiliser_loi_paroi()))
return;
69 for (
int n_bord=0; n_bord<nb_bords; n_bord++)
78 for (
int ind_face=0; ind_face<nfin; ind_face++)
81 int elem=face_voisins(face,0);
98 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
105 else if (diffu.
nb_dim()==1)
110 for (
int i=0; i<diffu.
size_totale(); i++) nu(i)=diffu(i,0);
120 ref_cast(
Op_Conv_EF,
equation().operateur(1).l_op_base()).ajouter_a_la_diffusion(tab_inconnue,resu);
129 const Domaine_EF& domaine_ef = le_dom_EF.valeur();
138 else if ((
dimension==2)&&(nb_som_elem==4))
144 Cerr<<__FILE__<<(int)__LINE__<<
"cas non optimise "<<finl;
152 Cerr<<__FILE__<<(int)__LINE__<<
"cas non prevu "<<finl;
155 return ajouter(tab_inconnue,resu);
159 else if ((
dimension==2)&&(nb_som_elem==4))
165 Cerr<<__FILE__<<(int)__LINE__<<
"cas non optimise "<<finl;
213 DoubleTab diffu(
nu_);
216 ArrOfInt marqueur_neuman;
217 ArrOfInt marqueur_paroi=0;
221 remplir_marqueur_sommet_neumann( marqueur_neuman,domaine_ef,la_zcl_EF.valeur(),
transpose_partout_ );
225 const DoubleVect& volumes= domaine_ef.
volumes();
227 const DoubleTab& bij=domaine_ef.
Bij();
228 const DoubleTab& bij_thilde=domaine_ef.
Bij_thilde();
233 for (
int elem=0; elem<nb_elem_tot; elem++)
236 double pond=1./volumes(elem);
239 for (
int i1=0; i1<nb_som_elem; i1++)
241 int glob=elems(elem,i1);
242 int transpose = (marqueur_neuman[glob] == 1 || N == 1) ? 0 :
transpose_;
243 for (
int i2=0; i2<nb_som_elem; i2++)
245 int glob2=elems(elem,i2);
246 for (
int n = 0; n < N; n++)
248 resu(glob, n) -= bij(elem, i1, d) * (bij_thilde(elem, i2, d) * tab_inconnue(glob2, n) + transpose * bij_thilde(elem, i2, n) * tab_inconnue(glob2, d)) * (diffu[elem]+diffu_turb[elem]) * pond;
264 return ajouter(tab_inconnue,resu);
277 const auto& tab1_ = matrice.
get_tab1();
278 const auto& tab2_ = matrice.
get_tab2();
280 auto k2=tab1_[i+1]-1;
281 for (
auto k=k1; k<k2; k++)
283 Cerr <<
"i ou j ne conviennent pas " << finl;
284 Cerr <<
"i=" << i << finl;
285 Cerr <<
"j=" << j << finl;
286 Cerr <<
"n_lignes=" << matrice.
nb_lignes() << finl;
287 Cerr <<
"n_colonnes=" << matrice.
nb_colonnes() << finl;
289 return coeff_opt(matrice,i,j);
292#define matrice_coef(i,j) matrice.coef(i,j)
297 ref_cast(
Op_Conv_EF,
equation().operateur(1).l_op_base()).ajouter_contribution_a_la_diffusion(transporte,matrice);
309 DoubleTab diffu(
nu_);
314 const DoubleVect& volumes= domaine_ef.
volumes();
316 const DoubleTab& bij=domaine_ef.
Bij();
322 ArrOfInt marqueur_neuman;
323 remplir_marqueur_sommet_neumann( marqueur_neuman,domaine_ef,la_zcl_EF.valeur(),
transpose_partout_ );
324 ArrOfInt marqueur_paroi = 0;
326 for (
int elem=0; elem<nb_elem_tot; elem++)
329 double pond=volumes_thilde(elem)/volumes(elem)/volumes(elem);
331 for (
int i1=0; i1<nb_som_elem; i1++)
333 int glob=elems(elem,i1);
335 int transpose = (marqueur_neuman[glob] == 1 || N == 1) ? 0 :
transpose_;
337 for (
int i2=0; i2<nb_som_elem; i2++)
339 int glob2=elems(elem,i2);
342 cb+=bij(elem,i1,b)*bij(elem,i2,b);
343 for (
int n = 0; n < N; n++)
345 matrice_coef(glob * N + n, glob2 * N + n) += cb * (diffu[elem]+diffu_turb[elem]) * pond;
348 matrice_coef(glob * N + n, glob2 * N + d) += bij(elem, i1, d) * bij(elem, i2, n) * (diffu[elem]+diffu_turb[elem]) * pond;
368 DoubleTab diffu(
nu_);
373 const DoubleVect& volumes= domaine_ef.
volumes();
375 const DoubleTab& bij=domaine_ef.
Bij();
376 const DoubleTab& bij_thilde=domaine_ef.
Bij_thilde();
382 ArrOfInt marqueur_neuman;
383 remplir_marqueur_sommet_neumann( marqueur_neuman,domaine_ef,la_zcl_EF.valeur(),
transpose_partout_ );
384 ArrOfInt marqueur_paroi = 0;
386 for (
int elem=0; elem<nb_elem_tot; elem++)
389 double pond=1./volumes(elem);
391 for (
int i1=0; i1<nb_som_elem; i1++)
393 int glob=elems(elem,i1);
395 int transpose = (marqueur_neuman[glob] == 1 || N == 1) ? 0 :
transpose_;
397 for (
int i2=0; i2<nb_som_elem; i2++)
399 int glob2=elems(elem,i2);
402 cb+=bij(elem,i1,b)*bij_thilde(elem,i2,b);
403 for (
int n = 0; n < N; n++)
405 matrice_coef(glob * N + n, glob2 * N + n) += cb * (diffu[elem]+diffu_turb[elem]) * pond;
408 matrice_coef(glob * N + n, glob2 * N + d) += bij(elem, i1, d) * bij_thilde(elem, i2, n) * (diffu[elem]+diffu_turb[elem]) * pond;
422 ref_cast(
Op_Conv_EF,
equation().operateur(1).l_op_base()).contribue_au_second_membre_a_la_diffusion(resu);
431 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
437 const DoubleTab& bij=domaine_ef.
Bij();
442 const DoubleVect& volumes= domaine_ef.
volumes();
447 const IntTab& elem_faces = domaine_ef.
elem_faces();
448 int nb_som_free = nb_som_elem-nb_som_face;
453 DoubleTab diffu(
nu_);
457 for (
int n_bord=0; n_bord<domaine_ef.
nb_front_Cl(); n_bord++)
464 int num2=nb_faces_bord;
469 if (le_modele_turbulence->utiliser_loi_paroi())
475 ArrOfInt som_CL(nb_som_face);
478 for (
int ind_face=num1; ind_face<num2; ind_face++)
480 int num_face = le_bord.
num_face(ind_face);
481 for (
int isom=0; isom<nb_som_face; isom++)
483 int glob2=face_sommets(num_face,isom);
484 som_CL(isom) = glob2;
486 int elem=face_voisins(num_face,0);
487 double pond=volumes_thilde(elem)/volumes(elem);
488 for (
int a=0; a<
dimension; a++) n[a]=face_normales(num_face,a);
495 Tgrad(nc,nc2)=
tau_tan_(num_face,nc)*n[nc2];
500 for (
int i=0; i<nb_faces_elem; i++)
502 int face_i=elem_faces(elem,i);
506 if ( face_voisins(face_i,0) != elem ) ori=-1;
507 if (face_i != num_face)
510 effort_face(nc)+=ori*(Tgrad(nc,nc2)*face_normales(face_i,nc2))*pond;
512 effort_elem+=effort_face;
519 for (
int jsom=0; jsom<nb_som_elem; jsom++)
521 int num_som = elems(elem,jsom);
523 for (
int isom=0; isom<nb_som_face; isom++)
524 if (num_som == som_CL(isom)) iok = 0;
528 resu(num_som,nc)+= effort_elem(nc)/(nb_som_free);
530 if (nb_iok != nb_som_free)
532 Cerr<<
"Op_Dift_EF_Q1::ajouter_bords: erreur nombre de noeuds"<<finl;
544 for (
int face=0; face<premiere_face_int; face++)
546 int elem=face_voisins(face,0);
547 if (elem==-1) face_voisins(face,1);
549 double pond= volumes_thilde(elem)/volumes(elem)/volumes(elem);
551 for (
int i1=0; i1<nb_som_elem; i1++)
554 int glob2=elems(elem,i1);
559 flux_bords_(face,0)+=face_normales(face,a)*bij(elem,i1,a)*tab_inconnue(glob2)*(diffu[elem]+diffu_turb[elem])*pond;
570 for (n_bord=0; n_bord<nb_bords; n_bord++)
575 int nfin = ndeb + le_bord.
nb_faces();
580 for (
int face=ndeb; face<nfin; face++)
584 for (
int i1=0; i1<nb_som_face; i1++)
586 int glob2=face_sommets(face,i1);
589 resu[glob2] += flux/nb_som_face;
598 for (
int face=ndeb; face<nfin; face++)
601 double h=la_cl_paroi.
h_imp(face-ndeb);
602 double Text=la_cl_paroi.
T_ext(face-ndeb);
608 for (
int i1=0; i1<nb_som_face; i1++)
610 int glob2=face_sommets(face,i1);
611 tm+=tab_inconnue(glob2);
615 double flux=(phiext+h*(Text-tm))*domaine_EF.
surface(face);
618 for (
int i1=0; i1<nb_som_face; i1++)
620 int glob2=face_sommets(face,i1);
631 const IntVect& fmap = Text.
face_map();
632 std::vector<bool> hit(nfin-ndeb);
633 std::fill(hit.begin(), hit.end(),
false);
634 for (
int face=ndeb; face<nfin; face++)
636 int opp_face = fmap(face-ndeb)+ndeb;
639 int som=face_sommets(face,0);
640 int som_opp=face_sommets(opp_face,0);
648 int elem_opp = (elem1 != -1) ? elem1 : domaine_EF.
face_voisins(opp_face, 1);
651 int face_plus_2 = f1 != opp_face ? f1 : domaine_EF.
elem_faces(elem_opp, 1);
652 int som_p2 = face_sommets(face_plus_2, 0);
654 double pond = volumes_thilde(elem_opp)/volumes(elem_opp)/volumes(elem_opp);
655 double B =
nu_(elem_opp)*pond;
656 resu[som] -= B*(tab_inconnue[som]-tab_inconnue[som_p2]);
665 int face_p2 = f1 != face ? f1 : domaine_EF.
elem_faces(elem, 1);
666 int som_p2=face_sommets(face_p2,0);
668 double pond = volumes_thilde(elem)/volumes(elem)/volumes(elem);
669 double B =
nu_(elem)*pond;
670 resu[som] += B*(-tab_inconnue[som_p2] + tab_inconnue[som_opp]);
672 hit[face-ndeb] =
true;
673 hit[opp_face-ndeb] =
true;
678 for (
int face=ndeb; face<nfin; face++)
687 const DoubleVect& surface_gap = la_cl_paroi.
surface_gap();
688 for (
int face=ndeb; face<nfin; face++)
690 double h=la_cl_paroi.
h_imp(face-ndeb);
692 const IntVect& fmap = Text.
face_map();
693 int opp_face = fmap(face-ndeb)+ndeb;
700 for (
int i1=0; i1<nb_som_face; i1++)
702 int glob2=face_sommets(face,i1);
703 int glob3 =face_sommets(opp_face,i1);
704 tm+=tab_inconnue(glob2);
705 to+=tab_inconnue(glob3);
710 flux=h*(to-tm)*surface_gap(face-ndeb);
718 for (
int i1=0; i1<nb_som_face; i1++)
720 int glob2=face_sommets(face,i1);
728 for (
int face=ndeb; face<nfin; face++)
731 double h=la_cl_paroi.
h_imp(face-ndeb);
732 double Text=la_cl_paroi.
T_ext(face-ndeb);
738 for (
int i1=0; i1<nb_som_face; i1++)
740 int glob2=face_sommets(face,i1);
742 tm+=tab_inconnue(glob2);
747 double flux=h*(Text-tm)*domaine_EF.
surface(face);
750 for (
int i1=0; i1<nb_som_face; i1++)
752 int glob2=face_sommets(face,i1);
772 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
790 for (n_bord=0; n_bord<nb_bords; n_bord++)
795 int nfin = ndeb + le_bord.
nb_faces();
801 for (
int face=ndeb; face<nfin; face++)
804 double h=la_cl_paroi.
h_imp(face-ndeb);
807 double tm=1./(nb_som_face*nb_som_face);
808 double flux=(dphi_dT+h)*domaine_EF.
surface(face)*tm;
810 for (
int i1=0; i1<nb_som_face; i1++)
812 int glob2=face_sommets(face,i1);
813 for (
int j1=0; j1<nb_som_face; j1++)
815 int glob1=face_sommets(face,j1);
816 matrice.
coef(glob1,glob2) += flux;
826 const IntVect& fmap = Text.
face_map();
827 std::vector<bool> hit(nfin-ndeb);
828 std::fill(hit.begin(), hit.end(),
false);
829 for (
int face=ndeb; face<nfin; face++)
832 int opp_face = fmap(face-ndeb)+ndeb;
835 int elem_opp = (elem1 != -1) ? elem1 : domaine_EF.
face_voisins(opp_face, 1);
838 int face_plus_2 = f1 != opp_face ? f1 : domaine_EF.
elem_faces(elem_opp, 1);
842 int face_min_1 = f1 != face ? f1 : domaine_EF.
elem_faces(elem, 1);
844 for (
int i1=0; i1<nb_som_face; i1++)
846 int som=face_sommets(face,i1);
847 int som_opp=face_sommets(opp_face,i1);
850 for (
int j1=0; j1<nb_som_face; j1++)
853 int som_p2=face_sommets(face_plus_2,j1);
854 matrice.
coef(som,som_p2) -= matrice.
coef(som_opp, som_opp);
855 matrice.
coef(som, som) += matrice.
coef(som_opp, som_opp);
857 hit[face-ndeb] =
true;
858 hit[opp_face-ndeb] =
true;
861 for (
int j1=0; j1<nb_som_face; j1++)
864 int som_m1=face_sommets(face_min_1, j1);
865 matrice.
coef(som,som_opp) = -matrice.
coef(som,som);
866 matrice.
coef(som,som_m1) = 0;
876 const IntVect& fmap = Text.
face_map();
877 const DoubleVect& surface_gap = la_cl_paroi.
surface_gap();
878 for (
int face=ndeb; face<nfin; face++)
880 double h=la_cl_paroi.
h_imp(face-ndeb);
881 double tm=1./(nb_som_face*nb_som_face);
883 double flux=h*surface_gap(face-ndeb)*tm;
884 int opp_face = fmap(face-ndeb)+ndeb;
886 for (
int i1=0; i1<nb_som_face; i1++)
888 int glob2=face_sommets(face,i1);
889 int glob3=face_sommets(opp_face,i1);
890 for (
int j1=0; j1<nb_som_face; j1++)
892 int glob1=face_sommets(face,j1);
893 matrice.
coef(glob1,glob2) += flux;
894 matrice.
coef(glob1,glob3) -= flux;
904 for (
int face=ndeb; face<nfin; face++)
906 double h=la_cl_paroi.
h_imp(face-ndeb);
907 double tm=1./(nb_som_face*nb_som_face);
908 double flux=h*domaine_EF.
surface(face)*tm;
909 for (
int i1=0; i1<nb_som_face; i1++)
911 int glob2=face_sommets(face,i1);
912 for (
int j1=0; j1<nb_som_face; j1++)
914 int glob1=face_sommets(face,j1);
915 matrice.
coef(glob1,glob2) += flux;
952 double dt_stab=1.e30;
954 const Domaine_EF& mon_dom_EF = le_dom_EF.valeur();
956 const Domaine& mon_dom= mon_dom_EF.
domaine();
959 DoubleTab diffu(
nu_);
962 double rhocp = mon_equation->milieu().capacite_calorifique().valeurs()(0, 0) * mon_equation->milieu().masse_volumique().valeurs()(0, 0);
968 int mon_dom_nb_elem=mon_dom.
nb_elem();
973 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
975 alpha = diffu[num_elem] + diffu_turb[num_elem];
976 alpha/=rho_elem[num_elem];
982 if (coef<dt_stab) dt_stab = coef;
989 const DoubleTab& valeurs_diffusivite = champ_diffusivite.
valeurs();
990 double valeurs_diffusivite_dt=-1;
996 valeurs_diffusivite_dt=valeurs_diffusivite(0,0);
1001 if (nature_champ!=multi_scalaire)
1003 int nb_dim = valeurs_diffusivite.
nb_dim();
1004 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
1006 alpha = diffu[num_elem] + diffu_turb[num_elem];
1007 if(unif_diffu_dt==0)
1008 valeurs_diffusivite_dt=(nb_dim==1?valeurs_diffusivite(num_elem):valeurs_diffusivite(num_elem,0));
1009 alpha*=valeurs_diffusivite_dt/(diffu[num_elem]+DMINFLOAT);
1014 if (coef<dt_stab) dt_stab = coef;
1019 int nb_comp = valeurs_diffusivite.
dimension(1);
1020 for (
int nc=0; nc<nb_comp; nc++)
1022 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
1024 alpha = diffu(num_elem,nc) + diffu_turb[num_elem];
1026 valeurs_diffusivite_dt=valeurs_diffusivite(0,nc);
1027 alpha*=valeurs_diffusivite_dt/(diffu(num_elem,nc)+DMINFLOAT);
1030 if (coef<dt_stab) dt_stab = coef;
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Champ_front_calc_interne Classe derivee de Champ_front_calc qui represente
const IntVect & face_map() const
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
int_t nb_elem_tot() const
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
int_t nb_som() const
Renvoie le nombre de sommets du domaine.
int nb_cond_lim() const
Renvoie le nombre de conditions aux limites.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
double carre_pas_maille(int i) const
const DoubleTab & Bij() const
const DoubleTab & Bij_thilde() const
const DoubleVect & volumes_thilde() const
virtual double face_normales(int face, int comp) const
double volumes(int i) const
int face_sommets(int i, int j) const
renvoie le numero du ieme sommet de la face num_face.
virtual double surface(int i) const
int nb_som_face() const
renvoie le nombre de sommets par face.
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Domaine & domaine() const
: class Echange_couplage_thermique
double flux_exterieur_impose(int i) const override
Classe Echange_global_impose Cette classe represente le cas particulier de la classe.
virtual double derivee_flux_exterieur_imposee(int i) const
virtual double h_imp(int num) const
Renvoie la valeur du coefficient d'echange de chaleur impose sur la i-eme composante.
virtual double T_ext(int num) const
Renvoie la valeur de la temperature imposee sur la i-eme composante du champ de frontiere.
Classe Echange_interne_global_impose: Cette classe represente le cas particulier de la classe.
const DoubleVect surface_gap() const
Classe Echange_interne_global_parfait Cette classe represente le cas particulier d'un echange interne...
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
virtual Nature_du_champ nature_du_champ() const
int num_premiere_face() const
int num_face(const int) const
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
const auto & get_tab2() const
const auto & get_tab1() const
double coef(int i, int j) const
int nb_colonnes() const override
Return local number of columns (=size on the current proc).
int nb_lignes() const override
Return local number of lines (=size on the current proc).
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Classe Neumann_paroi Cette condition limite correspond a un flux impose pour l'equation de.
virtual double flux_impose(int i) const
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
class Nom Une chaine de caractere pour nommer les objets de TRUST
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.
class Op_Conv_EF Cette classe represente l'operateur de convection associe a une equation de
const Champ_Fonc_base & diffusivite_turbulente() const
class Op_Dift_EF_Q1 Cette classe represente l'operateur de diffusion
void calculer_pour_post(Champ_base &espace_stockage, const Nom &option, int comp) const override
const Champ_base & diffusivite() const override
DoubleTab & ajouter_vectoriel_template(const DoubleTab &, DoubleTab &) const
DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const override
DoubleTab & ajouter_scalaire_dim2_nbn_4(const DoubleTab &, DoubleTab &) const
DoubleTab & ajouter_scalaire_template(const DoubleTab &, DoubleTab &) const
void ajouter_bords(const DoubleTab &, DoubleTab &, int contrib_interne=1) const
void ajouter_contribution_new(const DoubleTab &, Matrice_Morse &) const
void ajouter_contribution(const DoubleTab &, Matrice_Morse &) const
double calculer_dt_stab() const override
Calcul dt_stab.
void ajouter_contributions_bords(Matrice_Morse &matrice) const
void associer_diffusivite(const Champ_base &) override
associe le champ de diffusivite
void contribuer_au_second_membre(DoubleTab &) const override
DOES NOTHING - to override in derived classes.
DoubleTab & ajouter_vectoriel_dim2_nbn_4(const DoubleTab &, DoubleTab &) const
void remplir_nu(DoubleTab &) const override
DoubleTab & ajouter_vectoriel_gen(const DoubleTab &, DoubleTab &) const
DoubleTab & ajouter_scalaire_gen(const DoubleTab &, DoubleTab &) const
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
DoubleTab & ajouter_new(const DoubleTab &, DoubleTab &) const
DoubleTab & ajouter_scalaire_dim3_nbn_8(const DoubleTab &, DoubleTab &) const
void remplir_marqueur_elem_CL_paroi(ArrOfInt &, const Domaine_EF &, const Domaine_Cl_EF &) const
DoubleTab & ajouter_vectoriel_dim3_nbn_8(const DoubleTab &, DoubleTab &) const
int elem_contribue(const int elem) const
void modifier_flux(const Operateur_base &) const
multiplie le flux bordpar rho cp ou rho si necessaire
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
Renvoie le champ_don correspondant a la vraie diffusivite du milieu qui sert pour le calcul du pas de...
static double mp_min(double)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
virtual const Champ_base & get_champ_masse_volumique() const
Renvoie le champ de masse volumique.
virtual int has_champ_masse_volumique() const
Renvoie 1 si la masse volumique a ete associee, 0 sinon.
_SIZE_ size_array() const
void resize_array(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const
_SIZE_ size_totale() const
virtual const MD_Vector & get_md_vector() const