24 DoubleTab sommets=FTmesh.
sommets();
28 Laplacian_Phi_Facet.
resize(nbfa7);
29 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
30 Laplacian_Phi_Facet[fa7]=0.;
32 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
36 ArrOfDouble nfac(dim);
42 DoubleTab x_sommets(dim,dim);
43 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
45 int indice_sommet = facettes(fa7,sommet_fa7);
46 for (
int dir=0 ; dir<dim ; dir++)
47 x_sommets(sommet_fa7,dir)=sommets(indice_sommet,dir);
51 for (
int dir=0 ; dir<dim ; dir++)
52 x_g[dir] = (x_sommets(0, dir)+x_sommets(1, dir)+x_sommets(2, dir))/dim;
56 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
60 ArrOfDouble x_midpoint(dim);
61 ArrOfDouble Grad_Phi_midpoint(dim);
62 for (
int dir=0 ; dir<dim ; dir++)
64 t1[dir]=x_sommets(sommet_fa7,dir)-x_sommets(((sommet_fa7-1)%dim+dim)%dim,dir);
65 x_midpoint[dir]=(x_sommets(sommet_fa7,dir)+x_sommets(((sommet_fa7-1)%dim+dim)%dim,dir))/2.;
68 int indice_sommet = facettes(fa7,sommet_fa7);
69 int other_sommet = facettes(fa7,((sommet_fa7-1)%dim+dim)%dim);
70 for (
int dir=0 ; dir<dim ; dir++)
71 Grad_Phi_midpoint(dir)=(Grad_Phi_Sommet(indice_sommet, dir)+Grad_Phi_Sommet(other_sommet, dir))/2.;
78 if (p1[0]*(x_midpoint[0]-x_g[0])+p1[1]*(x_midpoint[1]-x_g[1])+p1[2]*(x_midpoint[2]-x_g[2])<0)
80 for (
int dir=0 ; dir<dim ; dir++)
83 for (
int dir=0 ; dir<dim ; dir++)
84 Laplacian_Phi_Facet[fa7]+=Grad_Phi_midpoint(dir)*p1[dir];
93 DoubleTab& df_sigma,
bool Normalised_with_Surface,
bool use_tryggvason_formulation,
bool with_marangoni)
104 ArrOfDouble Unit_Facet, Unit_Somm, Surface_sommet, sigma_sommet ;
105 DoubleTab df_sigma_bis ;
106 df_sigma.
resize(nbsom, dim);
107 df_sigma_bis.
resize(nbsom, dim);
110 sigma_sommet.
resize(nbsom);
111 Surface_sommet.
resize(nbsom);
112 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
116 for (
int som=0 ; som<nbsom ; som++)
119 sigma_sommet(som)=0.;
120 for (
int dir=0 ; dir<dim ; dir++)
122 df_sigma(som, dir)= 0. ;
123 df_sigma_bis(som, dir)= 0. ;
130 if (!with_marangoni and use_tryggvason_formulation)
135 for (
int som=0 ; som<nbsom ; som++)
137 for (
int dir=0 ; dir<3 ; dir++)
138 df_sigma(som, dir) = df_sigma_bis(som, dir)*sigma_sommet[som];
141 else if(with_marangoni and !use_tryggvason_formulation)
145 for (
int som=0 ; som<nbsom ; som++)
147 for (
int dir=0 ; dir<3 ; dir++)
148 df_sigma(som, dir)-=df_sigma_bis(som, dir)*sigma_sommet[som];
151 else if (!with_marangoni and !use_tryggvason_formulation)
154 for (
int som=0 ; som<nbsom ; som++)
155 for (
int dir=0 ; dir<dim ; dir++)
156 df_sigma(som, dir)= 0. ;
165 DoubleTab& Grad_Phi_Sommet,
bool Normalised_with_Surface)
178 ArrOfDouble Unit_Facet, Unit_Somm, Phi_sommet, Surface_sommet ;
179 DoubleTab int_phi_p_dl, int_p_dl ;
180 Grad_Phi_Sommet.
resize(nbsom, dim);
181 int_phi_p_dl.
resize(nbsom, dim);
182 int_p_dl.
resize(nbsom, dim);
186 Surface_sommet.
resize(nbsom);
187 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
191 for (
int som=0 ; som<nbsom ; som++)
194 for (
int dir=0 ; dir<dim ; dir++)
196 Grad_Phi_Sommet(som, dir)= 0. ;
197 int_p_dl(som, dir)=0.;
198 int_phi_p_dl(som, dir)=0.;
210 for (
int som=0 ; som<nbsom ; som++)
212 for (
int dir=0 ; dir<dim ; dir++)
213 Grad_Phi_Sommet(som, dir) = int_phi_p_dl(som, dir) - int_p_dl(som, dir) *Phi_sommet[som];
216 if (!Normalised_with_Surface)
217 for (
int som=0 ; som<nbsom ; som++)
219 for (
int dir=0 ; dir<dim ; dir++)
220 Grad_Phi_Sommet(som, dir)*= Surface_sommet[som];
226 DoubleTab& int_phi_p_dl, DoubleTab& int_p_dl)
230 using Kokkos::numbers::pi;
233 DoubleTab sommets=FTmesh.
sommets();
238 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
242 ArrOfDouble nfac(dim);
243 for (
int dir=0 ; dir<dim ; dir++)
244 nfac[dir]=nfa7(fa7,dir);
247 ArrOfDouble x_g(dim);
248 for (
int dir=0 ; dir<dim ; dir++)
250 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
252 int indice_sommet = facettes(fa7,sommet_fa7);
253 x_g[dir] += sommets(indice_sommet, dir);
260 DoubleTab x_midpoint1(dim,dim);
261 DoubleTab x_midpoint2(dim,dim);
262 ArrOfDouble Phi_midpoint1(dim);
263 ArrOfDouble Phi_midpoint2(dim);
265 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
267 int indice_sommet = facettes(fa7,sommet_fa7);
268 int indice_sommet_second = facettes(fa7,((sommet_fa7-1)%dim+dim)%dim);
269 Phi_midpoint1[sommet_fa7] = (Phi_sommet[indice_sommet]+Phi_sommet[indice_sommet_second])/2.;
270 for (
int dir=0 ; dir<dim ; dir++)
272 x_midpoint1(sommet_fa7, dir)=(sommets(indice_sommet, dir)+sommets(indice_sommet_second, dir))/2.;
276 int indice_sommet_third= facettes(fa7,((sommet_fa7+1)%dim+dim)%dim);
277 Phi_midpoint2[sommet_fa7] = (Phi_sommet[indice_sommet]+Phi_sommet[indice_sommet_third])/2.;
278 for (
int dir=0 ; dir<dim ; dir++)
280 x_midpoint2(sommet_fa7, dir)=(sommets(indice_sommet, dir)+sommets(indice_sommet_third, dir))/2.;
289 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
291 int indice_sommet = facettes(fa7,sommet_fa7);
292 ArrOfDouble p1(dim), p2(dim);
293 ArrOfDouble t1(dim), t2(dim);
296 Phi1 = (Phi_Facet(fa7)+Phi_midpoint1(sommet_fa7))/2.;
298 Phi2 = (Phi_Facet(fa7)+Phi_midpoint2(sommet_fa7))/2.;
302 for (
int dir=0 ; dir<dim ; dir++)
304 t1[dir]=x_midpoint1(sommet_fa7,dir)-x_g[dir];
305 t2[dir]=x_midpoint2(sommet_fa7,dir)-x_g[dir];
313 if (p1[0]*(x_g[0]-sommets(indice_sommet,0))+p1[1]*(x_g[1]-sommets(indice_sommet,1))+p1[2]*(x_g[2]-sommets(indice_sommet,2))<0)
315 for (
int dir=0 ; dir<dim ; dir++)
318 if (p2[0]*(x_g[0]-sommets(indice_sommet,0))+p2[1]*(x_g[1]-sommets(indice_sommet,1))+p2[2]*(x_g[2]-sommets(indice_sommet,2))<0)
320 for (
int dir=0 ; dir<dim ; dir++)
326 for (
int dir=0 ; dir<dim ; dir++)
327 p1[dir]=x_midpoint1(sommet_fa7,dir)-sommets(indice_sommet,dir);
329 for (
int dir=0 ; dir<dim ; dir++)
333 for (
int dir=0 ; dir<dim ; dir++)
335 int_phi_p_dl(indice_sommet, dir)+=Phi1*p1[dir];
337 int_phi_p_dl(indice_sommet, dir)+=Phi2*p2[dir];
338 int_p_dl(indice_sommet, dir)+=p1[dir];
340 int_p_dl(indice_sommet, dir)+=p2[dir];
349 for (
int som=0 ; som<nbsom ; som++)
351 for (
int dir=0 ; dir<dim ; dir++)
353 int_phi_p_dl(som, dir)/= Surface_sommet[som];
354 int_p_dl(som, dir)/= Surface_sommet[som];
367 ArrOfDouble Phi_Facet_dir ;
368 ArrOfDouble Phi_Som_dir ;
369 Phi_Facet_dir.
resize(nbfa7);
370 Phi_Som_dir.
resize(nbsom);
371 Phi_Som.
resize(nbsom, dim);
373 for (
int dir=0 ; dir<dim ; dir++)
375 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
376 Phi_Facet_dir(fa7) = Phi_Facet(fa7, dir);
378 Facette_to_Sommets(Surface_sommet, Phi_Som_dir, Phi_Facet_dir, FTmesh, Normalised_with_Surface);
380 for (
int som=0 ; som<nbsom ; som++)
381 Phi_Som(som, dir) = Phi_Som_dir(som) ;
393 Surface_sommet.
resize(nbsom);
395 for (
int som=0 ; som<nbsom ; som++)
398 Surface_sommet[som]=0.;
402 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
406 for (
int sommet_fa7=0 ; sommet_fa7<dim ; sommet_fa7++)
408 int indice_sommet = facettes(fa7,sommet_fa7);
409 Phi_Som[indice_sommet]+=Phi_Facet[fa7]*Sfa7[fa7]/dim;
410 Surface_sommet[indice_sommet]+=Sfa7[fa7]/dim;
422 if (Normalised_with_Surface)
423 for (
int som=0 ; som<nbsom ; som++)
427 Phi_Som[som]/= Surface_sommet[som];
440 ArrOfDouble Phi_Facet_dir ;
441 ArrOfDouble Phi_Som_dir ;
442 Phi_Facet_dir.
resize(nbfa7);
443 Phi_Som_dir.
resize(nbsom);
444 Phi_Facet.
resize(nbfa7, dim);
446 for (
int dir=0 ; dir<dim ; dir++)
448 for (
int som=0 ; som<nbsom ; som++)
449 Phi_Som_dir(som) = Phi_Som(som, dir);
453 for (
int fa7=0 ; fa7<nbfa7 ; fa7++)
454 Phi_Facet(fa7, dir)=Phi_Facet_dir(fa7);