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);
308 DoubleTab diffu(
nu_);
313 const DoubleVect& volumes= domaine_ef.
volumes();
315 const DoubleTab& bij=domaine_ef.
Bij();
321 ArrOfInt marqueur_neuman;
322 remplir_marqueur_sommet_neumann( marqueur_neuman,domaine_ef,la_zcl_EF.valeur(),
transpose_partout_ );
323 ArrOfInt marqueur_paroi = 0;
325 for (
int elem=0; elem<nb_elem_tot; elem++)
328 double pond=volumes_thilde(elem)/volumes(elem)/volumes(elem);
330 for (
int i1=0; i1<nb_som_elem; i1++)
332 int glob=elems(elem,i1);
334 int transpose = (marqueur_neuman[glob] == 1 || N == 1) ? 0 :
transpose_;
336 for (
int i2=0; i2<nb_som_elem; i2++)
338 int glob2=elems(elem,i2);
341 cb+=bij(elem,i1,b)*bij(elem,i2,b);
342 for (
int n = 0; n < N; n++)
344 matrice_coef(glob * N + n, glob2 * N + n) += cb * (diffu[elem]+diffu_turb[elem]) * pond;
347 matrice_coef(glob * N + n, glob2 * N + d) += bij(elem, i1, d) * bij(elem, i2, n) * (diffu[elem]+diffu_turb[elem]) * pond;
366 DoubleTab diffu(
nu_);
371 const DoubleVect& volumes= domaine_ef.
volumes();
373 const DoubleTab& bij=domaine_ef.
Bij();
374 const DoubleTab& bij_thilde=domaine_ef.
Bij_thilde();
380 ArrOfInt marqueur_neuman;
381 remplir_marqueur_sommet_neumann( marqueur_neuman,domaine_ef,la_zcl_EF.valeur(),
transpose_partout_ );
382 ArrOfInt marqueur_paroi = 0;
384 for (
int elem=0; elem<nb_elem_tot; elem++)
387 double pond=1./volumes(elem);
389 for (
int i1=0; i1<nb_som_elem; i1++)
391 int glob=elems(elem,i1);
393 int transpose = (marqueur_neuman[glob] == 1 || N == 1) ? 0 :
transpose_;
395 for (
int i2=0; i2<nb_som_elem; i2++)
397 int glob2=elems(elem,i2);
400 cb+=bij(elem,i1,b)*bij_thilde(elem,i2,b);
401 for (
int n = 0; n < N; n++)
403 matrice_coef(glob * N + n, glob2 * N + n) += cb * (diffu[elem]+diffu_turb[elem]) * pond;
406 matrice_coef(glob * N + n, glob2 * N + d) += bij(elem, i1, d) * bij_thilde(elem, i2, n) * (diffu[elem]+diffu_turb[elem]) * pond;
420 ref_cast(
Op_Conv_EF,
equation().operateur(1).l_op_base()).contribue_au_second_membre_a_la_diffusion(resu);
429 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
435 const DoubleTab& bij=domaine_ef.
Bij();
440 const DoubleVect& volumes= domaine_ef.
volumes();
445 const IntTab& elem_faces = domaine_ef.
elem_faces();
446 int nb_som_free = nb_som_elem-nb_som_face;
451 DoubleTab diffu(
nu_);
455 for (
int n_bord=0; n_bord<domaine_ef.
nb_front_Cl(); n_bord++)
462 int num2=nb_faces_bord;
467 if (le_modele_turbulence->utiliser_loi_paroi())
473 ArrOfInt som_CL(nb_som_face);
476 for (
int ind_face=num1; ind_face<num2; ind_face++)
478 int num_face = le_bord.
num_face(ind_face);
479 for (
int isom=0; isom<nb_som_face; isom++)
481 int glob2=face_sommets(num_face,isom);
482 som_CL(isom) = glob2;
484 int elem=face_voisins(num_face,0);
485 double pond=volumes_thilde(elem)/volumes(elem);
486 for (
int a=0; a<
dimension; a++) n[a]=face_normales(num_face,a);
493 Tgrad(nc,nc2)=
tau_tan_(num_face,nc)*n[nc2];
498 for (
int i=0; i<nb_faces_elem; i++)
500 int face_i=elem_faces(elem,i);
504 if ( face_voisins(face_i,0) != elem ) ori=-1;
505 if (face_i != num_face)
508 effort_face(nc)+=ori*(Tgrad(nc,nc2)*face_normales(face_i,nc2))*pond;
510 effort_elem+=effort_face;
517 for (
int jsom=0; jsom<nb_som_elem; jsom++)
519 int num_som = elems(elem,jsom);
521 for (
int isom=0; isom<nb_som_face; isom++)
522 if (num_som == som_CL(isom)) iok = 0;
526 resu(num_som,nc)+= effort_elem(nc)/(nb_som_free);
528 if (nb_iok != nb_som_free)
530 Cerr<<
"Op_Dift_EF_Q1::ajouter_bords: error in node count"<<finl;
542 for (
int face=0; face<premiere_face_int; face++)
544 int elem=face_voisins(face,0);
545 if (elem==-1) face_voisins(face,1);
547 double pond= volumes_thilde(elem)/volumes(elem)/volumes(elem);
549 for (
int i1=0; i1<nb_som_elem; i1++)
552 int glob2=elems(elem,i1);
557 flux_bords_(face,0)+=face_normales(face,a)*bij(elem,i1,a)*tab_inconnue(glob2)*(diffu[elem]+diffu_turb[elem])*pond;
568 for (n_bord=0; n_bord<nb_bords; n_bord++)
573 int nfin = ndeb + le_bord.
nb_faces();
578 for (
int face=ndeb; face<nfin; face++)
582 for (
int i1=0; i1<nb_som_face; i1++)
584 int glob2=face_sommets(face,i1);
587 resu[glob2] += flux/nb_som_face;
596 for (
int face=ndeb; face<nfin; face++)
599 double h=la_cl_paroi.
h_imp(face-ndeb);
600 double Text=la_cl_paroi.
T_ext(face-ndeb);
606 for (
int i1=0; i1<nb_som_face; i1++)
608 int glob2=face_sommets(face,i1);
609 tm+=tab_inconnue(glob2);
613 double flux=(phiext+h*(Text-tm))*domaine_EF.
surface(face);
616 for (
int i1=0; i1<nb_som_face; i1++)
618 int glob2=face_sommets(face,i1);
629 const IntVect& fmap = Text.
face_map();
630 std::vector<bool> hit(nfin-ndeb);
631 std::fill(hit.begin(), hit.end(),
false);
632 for (
int face=ndeb; face<nfin; face++)
634 int opp_face = fmap(face-ndeb)+ndeb;
637 int som=face_sommets(face,0);
638 int som_opp=face_sommets(opp_face,0);
646 int elem_opp = (elem1 != -1) ? elem1 : domaine_EF.
face_voisins(opp_face, 1);
649 int face_plus_2 = f1 != opp_face ? f1 : domaine_EF.
elem_faces(elem_opp, 1);
650 int som_p2 = face_sommets(face_plus_2, 0);
652 double pond = volumes_thilde(elem_opp)/volumes(elem_opp)/volumes(elem_opp);
653 double B =
nu_(elem_opp)*pond;
654 resu[som] -= B*(tab_inconnue[som]-tab_inconnue[som_p2]);
663 int face_p2 = f1 != face ? f1 : domaine_EF.
elem_faces(elem, 1);
664 int som_p2=face_sommets(face_p2,0);
666 double pond = volumes_thilde(elem)/volumes(elem)/volumes(elem);
667 double B =
nu_(elem)*pond;
668 resu[som] += B*(-tab_inconnue[som_p2] + tab_inconnue[som_opp]);
670 hit[face-ndeb] =
true;
671 hit[opp_face-ndeb] =
true;
676 for (
int face=ndeb; face<nfin; face++)
685 const DoubleVect& surface_gap = la_cl_paroi.
surface_gap();
686 for (
int face=ndeb; face<nfin; face++)
688 double h=la_cl_paroi.
h_imp(face-ndeb);
690 const IntVect& fmap = Text.
face_map();
691 int opp_face = fmap(face-ndeb)+ndeb;
698 for (
int i1=0; i1<nb_som_face; i1++)
700 int glob2=face_sommets(face,i1);
701 int glob3 =face_sommets(opp_face,i1);
702 tm+=tab_inconnue(glob2);
703 to+=tab_inconnue(glob3);
708 flux=h*(to-tm)*surface_gap(face-ndeb);
716 for (
int i1=0; i1<nb_som_face; i1++)
718 int glob2=face_sommets(face,i1);
726 for (
int face=ndeb; face<nfin; face++)
729 double h=la_cl_paroi.
h_imp(face-ndeb);
730 double Text=la_cl_paroi.
T_ext(face-ndeb);
736 for (
int i1=0; i1<nb_som_face; i1++)
738 int glob2=face_sommets(face,i1);
740 tm+=tab_inconnue(glob2);
745 double flux=h*(Text-tm)*domaine_EF.
surface(face);
748 for (
int i1=0; i1<nb_som_face; i1++)
750 int glob2=face_sommets(face,i1);
770 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
788 for (n_bord=0; n_bord<nb_bords; n_bord++)
793 int nfin = ndeb + le_bord.
nb_faces();
799 for (
int face=ndeb; face<nfin; face++)
802 double h=la_cl_paroi.
h_imp(face-ndeb);
805 double tm=1./(nb_som_face*nb_som_face);
806 double flux=(dphi_dT+h)*domaine_EF.
surface(face)*tm;
808 for (
int i1=0; i1<nb_som_face; i1++)
810 int glob2=face_sommets(face,i1);
811 for (
int j1=0; j1<nb_som_face; j1++)
813 int glob1=face_sommets(face,j1);
814 matrice.
coef(glob1,glob2) += flux;
824 const IntVect& fmap = Text.
face_map();
825 std::vector<bool> hit(nfin-ndeb);
826 std::fill(hit.begin(), hit.end(),
false);
827 for (
int face=ndeb; face<nfin; face++)
830 int opp_face = fmap(face-ndeb)+ndeb;
833 int elem_opp = (elem1 != -1) ? elem1 : domaine_EF.
face_voisins(opp_face, 1);
836 int face_plus_2 = f1 != opp_face ? f1 : domaine_EF.
elem_faces(elem_opp, 1);
840 int face_min_1 = f1 != face ? f1 : domaine_EF.
elem_faces(elem, 1);
842 for (
int i1=0; i1<nb_som_face; i1++)
844 int som=face_sommets(face,i1);
845 int som_opp=face_sommets(opp_face,i1);
848 for (
int j1=0; j1<nb_som_face; j1++)
851 int som_p2=face_sommets(face_plus_2,j1);
852 matrice.
coef(som,som_p2) -= matrice.
coef(som_opp, som_opp);
853 matrice.
coef(som, som) += matrice.
coef(som_opp, som_opp);
855 hit[face-ndeb] =
true;
856 hit[opp_face-ndeb] =
true;
859 for (
int j1=0; j1<nb_som_face; j1++)
862 int som_m1=face_sommets(face_min_1, j1);
863 matrice.
coef(som,som_opp) = -matrice.
coef(som,som);
864 matrice.
coef(som,som_m1) = 0;
874 const IntVect& fmap = Text.
face_map();
875 const DoubleVect& surface_gap = la_cl_paroi.
surface_gap();
876 for (
int face=ndeb; face<nfin; face++)
878 double h=la_cl_paroi.
h_imp(face-ndeb);
879 double tm=1./(nb_som_face*nb_som_face);
881 double flux=h*surface_gap(face-ndeb)*tm;
882 int opp_face = fmap(face-ndeb)+ndeb;
884 for (
int i1=0; i1<nb_som_face; i1++)
886 int glob2=face_sommets(face,i1);
887 int glob3=face_sommets(opp_face,i1);
888 for (
int j1=0; j1<nb_som_face; j1++)
890 int glob1=face_sommets(face,j1);
891 matrice.
coef(glob1,glob2) += flux;
892 matrice.
coef(glob1,glob3) -= flux;
902 for (
int face=ndeb; face<nfin; face++)
904 double h=la_cl_paroi.
h_imp(face-ndeb);
905 double tm=1./(nb_som_face*nb_som_face);
906 double flux=h*domaine_EF.
surface(face)*tm;
907 for (
int i1=0; i1<nb_som_face; i1++)
909 int glob2=face_sommets(face,i1);
910 for (
int j1=0; j1<nb_som_face; j1++)
912 int glob1=face_sommets(face,j1);
913 matrice.
coef(glob1,glob2) += flux;
950 double dt_stab=1.e30;
952 const Domaine_EF& mon_dom_EF = le_dom_EF.valeur();
954 const Domaine& mon_dom= mon_dom_EF.
domaine();
957 DoubleTab diffu(
nu_);
960 double rhocp = mon_equation->milieu().capacite_calorifique().valeurs()(0, 0) * mon_equation->milieu().masse_volumique().valeurs()(0, 0);
966 int mon_dom_nb_elem=mon_dom.
nb_elem();
971 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
973 alpha = diffu[num_elem] + diffu_turb[num_elem];
974 alpha/=rho_elem[num_elem];
980 if (coef<dt_stab) dt_stab = coef;
987 const DoubleTab& valeurs_diffusivite = champ_diffusivite.
valeurs();
988 double valeurs_diffusivite_dt=-1;
994 valeurs_diffusivite_dt=valeurs_diffusivite(0,0);
999 if (nature_champ!=multi_scalaire)
1001 int nb_dim = valeurs_diffusivite.
nb_dim();
1002 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
1004 alpha = diffu[num_elem] + diffu_turb[num_elem];
1005 if(unif_diffu_dt==0)
1006 valeurs_diffusivite_dt=(nb_dim==1?valeurs_diffusivite(num_elem):valeurs_diffusivite(num_elem,0));
1007 alpha*=valeurs_diffusivite_dt/(diffu[num_elem]+DMINFLOAT);
1012 if (coef<dt_stab) dt_stab = coef;
1017 int nb_comp = valeurs_diffusivite.
dimension(1);
1018 for (
int nc=0; nc<nb_comp; nc++)
1020 for (
int num_elem=0; num_elem<mon_dom_nb_elem; num_elem++)
1022 alpha = diffu(num_elem,nc) + diffu_turb[num_elem];
1024 valeurs_diffusivite_dt=valeurs_diffusivite(0,nc);
1025 alpha*=valeurs_diffusivite_dt/(diffu(num_elem,nc)+DMINFLOAT);
1028 if (coef<dt_stab) dt_stab = coef;
DoubleTab & valeurs() override
Returns the array of field values at the current time.
virtual DoubleTab & valeurs()=0
class Champ_base This class is the base of the fields hierarchy.
class Champ_front_calc_interne Derived class of Champ_front_calc representing
const IntVect & face_map() const
class Cond_lim Generic class used to represent any class
Dirichlet_paroi_defilante Imposes the wall velocity in an equation of type Navier_Stokes.
Dirichlet_paroi_fixe Represents a fixed wall in a Navier-Stokes type equation.
int nb_som_elem() const
Returns the number of vertices of the geometric elements that make up the domain.
int_t nb_elem_tot() const
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Creates a parallel array of values at elements.
int nb_faces_elem(int=0) const
Returns the number of faces of type i of the geometric elements that make up the domain.
int_t nb_som() const
Returns the number of vertices of the domain.
int nb_cond_lim() const
Returns the number of boundary conditions.
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
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
Returns the index of the i-th vertex of face num_face.
virtual double surface(int i) const
int nb_som_face() const
Returns the number of vertices per 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.
int premiere_face_int() const
A face is internal if and only if it separates two elements.
int face_voisins(int num_face, int i) const
Returns the neighbouring element of num_face in direction i.
const Domaine & domaine() const
: class Echange_couplage_thermique
double flux_exterieur_impose(int i) const override
Classe Echange_global_impose This class represents the special case of the class.
virtual double derivee_flux_exterieur_imposee(int i) const
virtual double h_imp(int num) const
Returns the value of the imposed heat exchange coefficient on the i-th component.
virtual double T_ext(int num) const
Returns the value of the imposed temperature on the i-th component of the boundary field.
Class Echange_interne_global_impose: This class represents the special case of.
const DoubleVect surface_gap() const
Class Echange_interne_global_parfait: Special case of a perfect internal exchange (h=+inf).
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
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
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
Returns the reference to the equation pointed to by MorEqn::mon_equation.
Classe Neumann_paroi This boundary condition corresponds to an imposed flux for the.
virtual double flux_impose(int i) const
Returns the value of the imposed flux on the i-th component of the field representing the flux at the...
class Nom: a character string for naming TRUST objects.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
class Op_Conv_EF Represents the convection operator associated with a scalar transport equation.
const Champ_Fonc_base & diffusivite_turbulente() const
class Op_Dift_EF_Q1 Represents the diffusion operator.
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
Computes dt_stab.
void ajouter_contributions_bords(Matrice_Morse &matrice) const
void associer_diffusivite(const Champ_base &) override
Associates the diffusivity field.
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
Multiplies the boundary flux by rho cp or rho if necessary.
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
Returns the field corresponding to the true diffusivity of the medium used for the time step computat...
static double mp_min(double)
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.
virtual const Champ_base & get_champ_masse_volumique() const
Returns the density field.
virtual int has_champ_masse_volumique() const
Returns 1 if the density field has been associated, 0 otherwise.
_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