36 const Domaine_VF& domaine_VF = le_dom_VF.valeur();
37 const Table& table = la_table.valeur();
38 DoubleTab& mes_valeurs =
valeurs();
39 const int nb_elem = domaine_VF.
nb_elem(), nb_elem_tot = domaine_VF.
nb_elem_tot(), nb_param = les_ch_param.size();
40 const int nbcomp = mes_valeurs.
dimension(1);
41 const DoubleTab& centres_de_gravites = domaine_VF.
xp();
44 IntTrav les_polys(nb_elem_tot);
45 IntArrView les_polys_v =
static_cast<IntVect&
>(les_polys).view_wo();
46 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__), nb_elem_tot, KOKKOS_LAMBDA(
const int num_elem)
48 les_polys_v(num_elem) = num_elem;
50 end_gpu_timer(__KERNEL_NAME__);
52 if (nb_param==1 && nbcomp==1 && table.
isfonction()==1)
55 DoubleTrav val_param_aux_elems(nb_elem_tot, nbcomp);
56 les_ch_param[0]->valeur_aux_elems(centres_de_gravites, les_polys, val_param_aux_elems);
60 CDoubleTabView val_params_aux_elems_v = val_param_aux_elems.
view_ro();
61 DoubleTabView mes_valeurs_v = mes_valeurs.
view_wo();
62 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__), nb_elem, KOKKOS_LAMBDA(
65 int threadId = parser.
acquire();
66 for (
int ncomp = 0; ncomp < nbcomp; ncomp++)
68 double val = val_params_aux_elems_v(num_elem, ncomp);
70 parser.
setVar(0, val, threadId);
71 mes_valeurs_v(num_elem, ncomp) = parser.
eval(threadId);
75 end_gpu_timer(__KERNEL_NAME__);
79 ToDo_Kokkos(
"critical");
80 DoubleTabs val_params_aux_elems;
81 for (
int i = 0; i < nb_param; i++)
83 DoubleTab vp(nb_elem_tot, mes_valeurs.
dimension(1));
84 val_params_aux_elems.
add(vp);
86 for (
int i = 0; i < nb_param; i++)
87 les_ch_param[i]->
valeur_aux_elems(centres_de_gravites, les_polys, val_params_aux_elems[i]);
91 std::vector<double> vals;
92 vals.reserve(nb_param);
93 for (
int num_elem = 0; num_elem < nb_elem; num_elem++)
94 for (
int ncomp = 0; ncomp < nbcomp; ncomp++)
97 for (
int n = 0; n < nb_param; n++)
98 vals.push_back(val_params_aux_elems[n](num_elem, ncomp));
99 mes_valeurs(num_elem, ncomp) = table.
val(vals, ncomp);
104 table.
valeurs(val_params_aux_elems[0], centres_de_gravites, t, mes_valeurs);
double xp(int num_elem, int k) const