84 const DoubleTab& vitesse,
const DoubleTab& K_eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
87 const DoubleTab& tab_visco=ch_visco.
valeurs();
111 int num_face,poly1,poly2,ori, ndeb, nfin;
114 if (mp_min_vect(K_eps_Bas_Re)<0)
116 Cerr <<
"Il y'a des valeurs negatives dans les valeurs de K" << finl;
117 Cerr <<
"dans Modele_Jones_Launder_VDF::Calcul_D" << finl;
118 Cerr <<
"On arrete le calcul." << finl;
122 for (
int n_bord=0; n_bord<le_dom.
nb_front_Cl(); n_bord++)
127 if ( sub_type(
Dirichlet,la_cl.valeur())||
139 for (num_face=ndeb; num_face<nfin; num_face++)
142 poly1 = face_voisins(num_face,0);
146 coef = volume_entrelaces(num_face)*porosite_surf(num_face)*0.5;
147 gradk = ( - sqrt(K_eps_Bas_Re(poly1,0)))/le_dom.
dist_norm_bord(num_face);
149 visco=tab_visco[poly1];
150 D[poly1] += 2*visco*(gradk*gradk)*coef;
154 poly2 = face_voisins(num_face,1);
156 coef = volume_entrelaces(num_face)*porosite_surf(num_face)*0.5;
157 gradk = ((sqrt(K_eps_Bas_Re(poly2,0)) ))/le_dom.
dist_norm_bord(num_face);
160 visco=tab_visco[poly2];
161 D[poly2] += 2*visco*(gradk*gradk)*coef;
171 for (num_face=ndeb; num_face<nfin; num_face++)
174 poly1 = face_voisins(num_face,0);
175 poly2 = face_voisins(num_face,1);
179 coef = volume_entrelaces(num_face)*porosite_surf(num_face);
182 gradk = (sqrt(K_eps_Bas_Re(poly2,0))-sqrt(K_eps_Bas_Re(poly1,0)))/le_dom.
dist_elem_period(poly1,poly2,ori);
184 visco=tab_visco[poly1];
185 D[poly1] += 2*visco*(gradk*gradk)*coef;
187 visco=tab_visco[poly2];
188 D[poly2] += 2*visco*(gradk*gradk)*coef;
192 else if (sub_type(
Symetrie,la_cl.valeur()))
194 else if ( (sub_type(
Neumann,la_cl.valeur()))
204 Cerr<<la_cl->que_suis_je()<<
"not implemented in calculer_D"<<finl;
212 poly1 = face_voisins(num_face,0);
213 poly2 = face_voisins(num_face,1);
217 coef = volume_entrelaces(num_face)*porosite_surf(num_face);
219 gradk = (sqrt(K_eps_Bas_Re(poly2,0))-sqrt(K_eps_Bas_Re(poly1,0)))/(le_dom.
xp(poly2,ori)- le_dom.
xp(poly1,ori));
222 Cerr <<
"K_eps_Bas_Re(poly2,0)=" << K_eps_Bas_Re(poly2,0)/K_eps_Bas_Re(0,0) <<
" K_eps_Bas_Re(poly1,0)=" << K_eps_Bas_Re(poly1,0)/K_eps_Bas_Re(0,0) <<
" test "<<sqrt( K_eps_Bas_Re(poly2,0))/sqrt( K_eps_Bas_Re(0,0))<<
" "<<sqrt( K_eps_Bas_Re(poly1,0))/sqrt( K_eps_Bas_Re(0,0))<<
" "<<(sqrt(K_eps_Bas_Re(poly2,0))-sqrt(K_eps_Bas_Re(poly1,0)))/sqrt( K_eps_Bas_Re(0,0))<<
" "<< K_eps_Bas_Re(0,0)<<finl;
224 visco=tab_visco[poly1];
225 D[poly1] += 2*visco*(gradk*gradk)*coef;
227 visco=tab_visco[poly2];
228 D[poly2] += 2*visco*(gradk*gradk)*coef;
235 const DoubleVect& volumes= le_dom.
volumes();
236 for (
int i=0; i<nb_elem_tot; i++)
255 const DoubleTab& tab_visco=ch_visco.
valeurs();
258 visco=tab_visco(0,0);
267 const IntTab& elem_faces = le_dom.
elem_faces();
281 for (
int elem=0; elem<nb_elem_tot; elem++)
286 for (
int sens=0; sens<2; sens++)
288 int f=elem_faces(elem,dir+
dimension*sens);
289 int num0=face_voisins(f,sens);
298 der_seconde(i,j,k)=0.5*(gij(num[k+
dimension],i,j,0)-gij(num[k],i,j,0))/le_dom.
dim_elem(elem,k);
302 visco=tab_visco[elem];
305 double val2=der_seconde(0,1,1)*der_seconde(0,1,1);
306 double val3=der_seconde(1,0,0)*der_seconde(1,0,0);
308 E[elem]= 2*visco*visco_turb(elem)*(val2+val3);
312 double val2 = der_seconde(1,0,0)+der_seconde(2,0,0);
314 double val3 = der_seconde(0,1,1)+der_seconde(2,1,1);
316 double val4 = der_seconde(0,2,2)+der_seconde(1,2,2);
318 E[elem] += 2*visco*visco_turb(elem)*(val2+val3+val4);
330 int n_bord,poly1, poly2,fac=-1;
334 DoubleTab derivee_seconde(derivee_premiere);
340 double val2,val3,val4;
341 for (n_bord=0; n_bord<le_dom.
nb_front_Cl(); n_bord++)
346 int nfin = ndeb + le_bord.
nb_faces();
347 for (fac=ndeb; fac<nfin; fac++)
349 poly1 = face_voisins(fac,0);
354 val2 = derivee_seconde(fac,0,1)*derivee_seconde(fac,0,1);
355 val3 = derivee_seconde(fac,1,0)*derivee_seconde(fac,1,0);
357 visco=tab_visco[poly1];
358 E[poly1]+= 2*visco*visco_turb(poly1)*(val2+val3);
362 val2 = derivee_seconde(fac,1,0)+derivee_seconde(fac,2,0);
364 val3 = derivee_seconde(fac,0,1)+derivee_seconde(fac,2,1);
366 val4 = derivee_seconde(fac,0,2)+derivee_seconde(fac,1,2);
369 visco=tab_visco[poly1];
370 E[poly1] += 2*visco*visco_turb(poly1)*(val2+val3+val4);
375 poly2 = face_voisins(fac,1);
378 val2 = derivee_seconde(fac,0,1)*derivee_seconde(fac,0,1);
379 val3 = derivee_seconde(fac,1,0)*derivee_seconde(fac,1,0);
381 visco=tab_visco[poly2];
382 E[poly2]+= 2*visco*visco_turb(poly2)*(val2+val3);
386 val2 = derivee_seconde(fac,1,0)+derivee_seconde(fac,2,0);
388 val3 = derivee_seconde(fac,0,1)+derivee_seconde(fac,2,1);
390 val4 = derivee_seconde(fac,0,2)+derivee_seconde(fac,1,2);
393 visco=tab_visco[poly2];
394 E[poly2] += 2*visco*visco_turb(poly2)*(val2+val3+val4);
401 for (; fac<nb_faces_tot; fac++)
403 poly1=face_voisins(fac,0);
404 poly2=face_voisins(fac,1);
407 val2 = derivee_seconde(fac,0,1)*derivee_seconde(fac,0,1);
408 val3 = derivee_seconde(fac,1,0)*derivee_seconde(fac,1,0);
413 visco=tab_visco[poly1];
414 E[poly1]+= 2*visco*visco_turb(poly1)*(val2+val3);
419 visco=tab_visco[poly2];
420 E[poly2]+= 2*visco*visco_turb(poly2)*(val2+val3);
425 val2 = derivee_seconde(fac,1,0)+derivee_seconde(fac,2,0);
427 val3 = derivee_seconde(fac,0,1)+derivee_seconde(fac,2,1);
429 val4 = derivee_seconde(fac,0,2)+derivee_seconde(fac,1,2);
435 visco=tab_visco[poly1];
436 E[poly1] += 2*visco*visco_turb(poly1)*(val2+val3+val4);
441 visco=tab_visco[poly1];
442 E[poly2] += 2*visco*visco_turb(poly2)*(val2+val3+val4);
457 const IntTab& Qdm = le_dom.
Qdm();
476 for (num_arete =ndeb; num_arete<nfin; num_arete++)
479 num[i] = Qdm(num_arete,i);
481 ori0 = orientation(num[0]);
482 ori1 = orientation(num[2]);
483 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
484 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
486 derivee_premiere(num[0],ori0,ori1) += coef[0];
487 derivee_premiere(num[1],ori0,ori1) += coef[0];
488 derivee_premiere(num[2],ori1,ori0) += coef[1];
489 derivee_premiere(num[3],ori1,ori0) += coef[1];
496 for (num_arete=ndeb; num_arete<nfin; num_arete++)
499 num[i] = Qdm(num_arete,i);
501 ori0 = orientation(num[0]);
502 ori1 = orientation(num[2]);
503 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
504 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
506 derivee_premiere(num[0],ori0,ori1) += coef[0];
507 derivee_premiere(num[1],ori0,ori1) += coef[0];
508 derivee_premiere(num[2],ori1,ori0) += coef[1];
509 derivee_premiere(num[3],ori1,ori0) += coef[1];
524 for (num_arete=ndeb; num_arete<nfin; num_arete++)
529 num[i] = Qdm(num_arete,i);
533 ori0 = orientation(num[0]);
534 ori1 = orientation(num[2]);
535 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
536 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
537 derivee_premiere(num[0],ori0,ori1) += coef[0];
538 derivee_premiere(num[1],ori0,ori1) += coef[0];
539 derivee_premiere(num[2],ori1,ori0) += coef[1];
540 derivee_premiere(num[3],ori1,ori0) += coef[1];
544 ori0 = orientation(num[0]);
545 ori1 = orientation(num[2]);
550 double tps=vitesse.
temps();
551 double vit_imp = pond2*Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[0],ori1,zcl_hydro)+
552 Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[1],ori1,zcl_hydro)*pond1;
553 vit_imp /= pond1+pond2;
556 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
558 coef[1] = 0.5*(vit_imp-vit(num[2]))/le_dom.
dist_norm_bord(num[0])*signe;
559 derivee_premiere(num[0],ori0,ori1) += coef[0];
560 derivee_premiere(num[1],ori0,ori1) += coef[0];
561 derivee_premiere(num[2],ori1,ori0) += coef[1];
573 for (num_arete=ndeb; num_arete<nfin; num_arete++)
576 num[i] = Qdm(num_arete,i);
585 ori0 = orientation(num[0]);
586 ori1 = orientation(num[2]);
587 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
588 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
589 derivee_premiere(num[0],ori0,ori1) += coef[0];
590 derivee_premiere(num[1],ori0,ori1) += coef[0];
591 derivee_premiere(num[2],ori1,ori0) += coef[1];
592 derivee_premiere(num[3],ori1,ori0) += coef[1];
600 ori0 = orientation(num[0]);
601 ori1 = orientation(num[2]);
606 double tps=vitesse.
temps();
607 double vit_imp = pond2*Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[0],ori1,zcl_hydro)+
608 Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[1],ori1,zcl_hydro)*pond1;
610 vit_imp /= pond1+pond2;
613 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
614 coef[1] = 0.5*(vit_imp-vit(num[2]))/le_dom.
dist_norm_bord(num[0])*signe;
615 derivee_premiere(num[0],ori0,ori1) += coef[0];
616 derivee_premiere(num[1],ori0,ori1) += coef[0];
617 derivee_premiere(num[2],ori1,ori0) += coef[1];
638 for (num_arete =ndeb; num_arete<nfin; num_arete++)
641 num[i] = Qdm(num_arete,i);
643 ori0 = orientation(num[0]);
644 ori1 = orientation(num[2]);
645 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
646 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
648 derivee_premiere(num[0],ori0,ori1) += coef[0];
649 derivee_premiere(num[1],ori0,ori1) += coef[0];
650 derivee_premiere(num[2],ori1,ori0) += coef[1];
651 derivee_premiere(num[3],ori1,ori0) += coef[1];
657 for (num_arete=ndeb; num_arete<nfin; num_arete++)
660 num[i] = Qdm(num_arete,i);
662 ori0 = orientation(num[0]);
663 ori1 = orientation(num[2]);
664 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
665 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
667 derivee_premiere(num[0],ori0,ori1) += coef[0];
668 derivee_premiere(num[1],ori0,ori1) += coef[0];
669 derivee_premiere(num[2],ori1,ori0) += coef[1];
670 derivee_premiere(num[3],ori1,ori0) += coef[1];
685 for (num_arete=ndeb; num_arete<nfin; num_arete++)
689 num[i] = Qdm(num_arete,i);
693 ori0 = orientation(num[0]);
694 ori1 = orientation(num[2]);
695 if (num[0]==num[1] || num[2]==num[3])
697 Cerr <<
"2 bords avec une condition limite de periodicite ne sont separees que d'une maille !" << finl;
698 Cerr <<
"Cela n'est pas valide pour le Modele Jones Launder et son calcul de derivees croisees..." << finl;
701 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
702 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
704 derivee_premiere(num[0],ori0,ori1) += coef[0];
705 derivee_premiere(num[1],ori0,ori1) += coef[0];
706 derivee_premiere(num[2],ori1,ori0) += coef[1];
707 derivee_premiere(num[3],ori1,ori0) += coef[1];
711 ori0 = orientation(num[0]);
712 ori1 = orientation(num[2]);
719 double tps=vitesse.
temps();
720 double vit_imp = pond2*Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[0],ori1,zcl_hydro)+
721 Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[1],ori1,zcl_hydro)*pond1;
723 vit_imp /= pond1+pond2;
725 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
726 coef[1] = 0.5*(vit_imp-vit(num[2]))/le_dom.
dist_norm_bord(num[0])*signe;
727 derivee_premiere(num[0],ori0,ori1) += coef[0];
728 derivee_premiere(num[1],ori0,ori1) += coef[0];
729 derivee_premiere(num[2],ori1,ori0) += coef[1];
740 for (num_arete=ndeb; num_arete<nfin; num_arete++)
743 num[i] = Qdm(num_arete,i);
753 ori0 = orientation(num[0]);
754 ori1 = orientation(num[2]);
755 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
756 coef[1] = 0.5*(vit(num[3])-vit(num[2]))/le_dom.
dist_face(num[2],num[3],ori0);
758 derivee_premiere(num[0],ori0,ori1) += coef[0];
759 derivee_premiere(num[1],ori0,ori1) += coef[0];
760 derivee_premiere(num[2],ori1,ori0) += coef[1];
761 derivee_premiere(num[3],ori1,ori0) += coef[1];
769 ori0 = orientation(num[0]);
770 ori1 = orientation(num[2]);
775 double tps=vitesse.
temps();
776 double vit_imp = pond2*Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[0],ori1,zcl_hydro)+
777 Champ_Face_get_val_imp_face_bord_sym(vitesse.
valeurs(),tps,num[1],ori1,zcl_hydro)*pond1;
780 vit_imp /= pond1+pond2;
784 coef[0] = 0.5*(vit(num[1])-vit(num[0]))/le_dom.
dist_face(num[0],num[1],ori1);
785 coef[1] = 0.5*(vit_imp-vit(num[2]))/le_dom.
dist_norm_bord(num[0])*signe;
786 derivee_premiere(num[0],ori0,ori1) += coef[0];
787 derivee_premiere(num[1],ori0,ori1) += coef[0];
788 derivee_premiere(num[2],ori1,ori0) += coef[1];
798 return derivee_premiere;
808 const IntTab& Qdm = le_dom.
Qdm();
812 int i,num_arete,ori0,ori1;
814 int ndeb=-10000,nfin=100000;
826 for (num_arete =ndeb; num_arete<nfin; num_arete++)
829 num[i] = Qdm(num_arete,i);
831 ori0 = orientation(num[0]);
832 ori1 = orientation(num[2]);
833 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
834 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
836 derivee_seconde(num[0],ori0,ori1) += coef[0];
837 derivee_seconde(num[1],ori0,ori1) += coef[0];
838 derivee_seconde(num[2],ori1,ori0) += coef[1];
839 derivee_seconde(num[3],ori1,ori0) += coef[1];
846 for (num_arete=ndeb; num_arete<nfin; num_arete++)
849 num[i] = Qdm(num_arete,i);
851 ori0 = orientation(num[0]);
852 ori1 = orientation(num[2]);
853 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
854 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
856 derivee_seconde(num[0],ori0,ori1) += coef[0];
857 derivee_seconde(num[1],ori0,ori1) += coef[0];
858 derivee_seconde(num[2],ori1,ori0) += coef[1];
859 derivee_seconde(num[3],ori1,ori0) += coef[1];
873 for (num_arete=ndeb; num_arete<nfin; num_arete++)
878 num[i] = Qdm(num_arete,i);
882 ori0 = orientation(num[0]);
883 ori1 = orientation(num[2]);
884 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
885 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
886 derivee_seconde(num[0],ori0,ori1) += coef[0];
887 derivee_seconde(num[1],ori0,ori1) += coef[0];
888 derivee_seconde(num[2],ori1,ori0) += coef[1];
889 derivee_seconde(num[3],ori1,ori0) += coef[1];
893 ori0 = orientation(num[0]);
894 ori1 = orientation(num[2]);
901 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
903 derivee_seconde(num[0],ori0,ori1) += coef[0];
904 derivee_seconde(num[1],ori0,ori1) += coef[0];
905 derivee_seconde(num[2],ori1,ori0) = 2.*derivee_seconde(num[2],ori1,ori0);
916 for (num_arete=ndeb; num_arete<nfin; num_arete++)
919 num[i] = Qdm(num_arete,i);
928 ori0 = orientation(num[0]);
929 ori1 = orientation(num[2]);
930 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
931 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
932 derivee_seconde(num[0],ori0,ori1) += coef[0];
933 derivee_seconde(num[1],ori0,ori1) += coef[0];
934 derivee_seconde(num[2],ori1,ori0) += coef[1];
935 derivee_seconde(num[3],ori1,ori0) += coef[1];
943 ori0 = orientation(num[0]);
944 ori1 = orientation(num[2]);
951 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
953 derivee_seconde(num[0],ori0,ori1) += coef[0];
954 derivee_seconde(num[1],ori0,ori1) += coef[0];
956 derivee_seconde(num[2],ori1,ori0) = 2.*derivee_seconde(num[2],ori1,ori0);
977 for (num_arete =ndeb; num_arete<nfin; num_arete++)
980 num[i] = Qdm(num_arete,i);
982 ori0 = orientation(num[0]);
983 ori1 = orientation(num[2]);
984 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
985 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
987 derivee_seconde(num[0],ori0,ori1) += coef[0];
988 derivee_seconde(num[1],ori0,ori1) += coef[0];
989 derivee_seconde(num[2],ori1,ori0) += coef[1];
990 derivee_seconde(num[3],ori1,ori0) += coef[1];
997 for (num_arete=ndeb; num_arete<nfin; num_arete++)
1000 num[i] = Qdm(num_arete,i);
1002 ori0 = orientation(num[0]);
1003 ori1 = orientation(num[2]);
1004 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
1005 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
1007 derivee_seconde(num[0],ori0,ori1) += coef[0];
1008 derivee_seconde(num[1],ori0,ori1) += coef[0];
1009 derivee_seconde(num[2],ori1,ori0) += coef[1];
1010 derivee_seconde(num[3],ori1,ori0) += coef[1];
1025 for (num_arete=ndeb; num_arete<nfin; num_arete++)
1029 num[i] = Qdm(num_arete,i);
1033 ori0 = orientation(num[0]);
1034 ori1 = orientation(num[2]);
1035 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
1036 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
1038 derivee_seconde(num[0],ori0,ori1) += coef[0];
1039 derivee_seconde(num[1],ori0,ori1) += coef[0];
1040 derivee_seconde(num[2],ori1,ori0) += coef[1];
1041 derivee_seconde(num[3],ori1,ori0) += coef[1];
1045 ori0 = orientation(num[0]);
1046 ori1 = orientation(num[2]);
1054 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
1056 derivee_seconde(num[0],ori0,ori1) += coef[0];
1057 derivee_seconde(num[1],ori0,ori1) += coef[0];
1059 derivee_seconde(num[2],ori1,ori0) = 2.*derivee_seconde(num[2],ori1,ori0);
1071 for (num_arete=ndeb; num_arete<nfin; num_arete++)
1074 num[i] = Qdm(num_arete,i);
1082 ori0 = orientation(num[0]);
1083 ori1 = orientation(num[2]);
1084 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
1085 coef[1] = 0.5*(derivee_premiere(num[3],ori1,ori0)-derivee_premiere(num[2],ori1,ori0))/le_dom.
dist_face(num[2],num[3],ori0);
1087 derivee_seconde(num[0],ori0,ori1) += coef[0];
1088 derivee_seconde(num[1],ori0,ori1) += coef[0];
1089 derivee_seconde(num[2],ori1,ori0) += coef[1];
1090 derivee_seconde(num[3],ori1,ori0) += coef[1];
1098 ori0 = orientation(num[0]);
1099 ori1 = orientation(num[2]);
1107 coef[0] = 0.5*(derivee_premiere(num[1],ori0,ori1)-derivee_premiere(num[0],ori0,ori1))/le_dom.
dist_face(num[0],num[1],ori1);
1109 derivee_seconde(num[0],ori0,ori1) += coef[0];
1110 derivee_seconde(num[1],ori0,ori1) += coef[0];
1111 derivee_seconde(num[2],ori1,ori0) = 2.*derivee_seconde(num[2],ori1,ori0);
1123 return derivee_seconde;
1330 const DoubleTab& vitesse,
const DoubleTab& K_Bas_Re,
const DoubleTab& eps_Bas_Re,
const Champ_Don_base& ch_visco )
const
1333 const DoubleTab& tab_visco=ch_visco.
valeurs();
1336 visco=tab_visco(0,0);
1357 int num_face,poly1,poly2,ori, ndeb, nfin;
1360 if (mp_min_vect(K_Bas_Re)<0)
1362 Cerr <<
"Il y'a des valeurs negatives dans les valeurs de K" << finl;
1363 Cerr <<
"dans Modele_Jones_Launder_VDF::Calcul_D" << finl;
1364 Cerr <<
"On arrete le calcul." << finl;
1368 for (
int n_bord=0; n_bord<le_dom.
nb_front_Cl(); n_bord++)
1373 if ( sub_type(
Dirichlet,la_cl.valeur())||
1385 for (num_face=ndeb; num_face<nfin; num_face++)
1388 poly1 = face_voisins(num_face,0);
1392 coef = volume_entrelaces(num_face)*porosite_surf(num_face)*0.5;
1393 gradk = ( - sqrt(K_Bas_Re(poly1)))/le_dom.
dist_norm_bord(num_face);
1394 if (!is_visco_const)
1395 visco=tab_visco[poly1];
1396 D[poly1] += 2*visco*(gradk*gradk)*coef;
1400 poly2 = face_voisins(num_face,1);
1402 coef = volume_entrelaces(num_face)*porosite_surf(num_face)*0.5;
1403 gradk = ((sqrt(K_Bas_Re(poly2)) ))/le_dom.
dist_norm_bord(num_face);
1405 if (!is_visco_const)
1406 visco=tab_visco[poly2];
1407 D[poly2] += 2*visco*(gradk*gradk)*coef;
1411 else if (sub_type(
Periodique,la_cl.valeur()))
1417 for (num_face=ndeb; num_face<nfin; num_face++)
1420 poly1 = face_voisins(num_face,0);
1421 poly2 = face_voisins(num_face,1);
1425 coef = volume_entrelaces(num_face)*porosite_surf(num_face);
1428 gradk = (sqrt(K_Bas_Re(poly2))-sqrt(K_Bas_Re(poly1)))/le_dom.
dist_elem_period(poly1,poly2,ori);
1429 if (!is_visco_const)
1430 visco=tab_visco[poly1];
1431 D[poly1] += 2*visco*(gradk*gradk)*coef;
1432 if (!is_visco_const)
1433 visco=tab_visco[poly2];
1434 D[poly2] += 2*visco*(gradk*gradk)*coef;
1438 else if (sub_type(
Symetrie,la_cl.valeur()))
1440 else if ( (sub_type(
Neumann,la_cl.valeur()))
1450 Cerr<<la_cl->que_suis_je()<<
"not implemented in calculer_D"<<finl;
1458 poly1 = face_voisins(num_face,0);
1459 poly2 = face_voisins(num_face,1);
1463 coef = volume_entrelaces(num_face)*porosite_surf(num_face);
1465 gradk = (sqrt(K_Bas_Re(poly2))-sqrt(K_Bas_Re(poly1)))/(le_dom.
xp(poly2,ori)- le_dom.
xp(poly1,ori));
1468 Cerr <<
"K_eps_Bas_Re(poly2,0)=" << K_Bas_Re(poly2)/K_Bas_Re(0) <<
" K_eps_Bas_Re(poly1,0)=" << K_Bas_Re(poly1)/K_Bas_Re(0) <<
" test "<<sqrt( K_Bas_Re(poly2,0))/sqrt( K_Bas_Re(0))<<
" "<<sqrt( K_Bas_Re(poly1))/sqrt( K_Bas_Re(0))<<
" "<<(sqrt(K_Bas_Re(poly2))-sqrt(K_Bas_Re(poly1)))/sqrt( K_Bas_Re(0))<<
" "<< K_Bas_Re(0)<<finl;
1469 if (!is_visco_const)
1470 visco=tab_visco[poly1];
1471 D[poly1] += 2*visco*(gradk*gradk)*coef;
1472 if (!is_visco_const)
1473 visco=tab_visco[poly2];
1474 D[poly2] += 2*visco*(gradk*gradk)*coef;
1481 const DoubleVect& volumes= le_dom.
volumes();
1482 for (
int i=0; i<nb_elem_tot; i++)