User: rhaas Date: 2014/04/15 02:48 PM
Modified: /trunk/src/ GRHydro_Prim2Con.c
Log: GRHydro: change prim2con EOS calls to calls for x-slices
File Changes:
Directory: /trunk/src/ ======================
File [modified]: GRHydro_Prim2Con.c Delta lines: +51 -15 =================================================================== --- trunk/src/GRHydro_Prim2Con.c 2014-04-15 19:48:22 UTC (rev 603) +++ trunk/src/GRHydro_Prim2Con.c 2014-04-15 19:48:25 UTC (rev 604) @@ -75,12 +75,17 @@ int keytemp = 0;
// don't need special error handling for analytic EOS - EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhominus,epsminus,NULL,NULL,pressminus,keyerr,&anyerr); - - EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhoplus,epsplus,NULL,NULL,pressplus,keyerr,&anyerr); - +#pragma omp parallel for + for(int k=0;k<cctk_ash[2];k++) + for(int j=0;j<cctk_ash[1];j++) { + int i = CCTK_GFINDEX3D(cctkGH,0,j,k); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &(rhominus[i]),&(epsminus[i]),NULL,NULL,&(pressminus[i]), + &(keyerr[i]),&anyerr); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &(rhoplus[i]),&(epsplus[i]),NULL,NULL,&(pressplus[i]), + &(keyerr[i]),&anyerr); + } free(keyerr); } else { if(reconstruct_temper) { @@ -98,9 +103,17 @@ tempplus[i] = MIN(MAX(tempplus[i],GRHydro_hot_atmo_temp),GRHydro_max_temp); }
- EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhominus,epsminus,tempminus,Y_e_minus,pressminus,keyerr,&anyerr); - + // call the EOS with slices +#pragma omp parallel for + for(int k=0;k<cctk_ash[2];k++) + for(int j=0;j<cctk_ash[1];j++) { + int i = CCTK_GFINDEX3D(cctkGH,0,j,k); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &rhominus[i],&epsminus[i],&tempminus[i],&Y_e_minus[i], + &pressminus[i], + &keyerr[i],&anyerr); + } + if(anyerr!=0) { #pragma omp parallel for for(int i=0;i<n;i++) { @@ -120,9 +133,17 @@ "Aborting!"); }
- EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhoplus,epsplus,tempplus,Y_e_plus,pressplus,keyerr,&anyerr); +#pragma omp parallel for + for(int k=0;k<cctk_ash[2];k++) + for(int j=0;j<cctk_ash[1];j++) { + int i = CCTK_GFINDEX3D(cctkGH,0,j,k); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &rhoplus[i],&epsplus[i],&tempplus[i],&Y_e_plus[i], + &pressplus[i], + &keyerr[i],&anyerr); + }
+ if(anyerr!=0) { #pragma omp parallel for for(int i=0;i<n;i++) { @@ -159,8 +180,16 @@ temperature[i] = MIN(MAX(temperature[i],GRHydro_hot_atmo_temp),GRHydro_max_temp); }
- EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhominus,epsminus,tempminus,Y_e_minus,pressminus,keyerr,&anyerr); + // call the EOS with slices +#pragma omp parallel for + for(int k=0;k<cctk_ash[2];k++) + for(int j=0;j<cctk_ash[1];j++) { + int i = CCTK_GFINDEX3D(cctkGH,0,j,k); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &rhominus[i],&epsminus[i],&tempminus[i],&Y_e_minus[i], + &pressminus[i], + &keyerr[i],&anyerr); + }
if(anyerr!=0) { #pragma omp parallel for @@ -200,8 +229,15 @@ } // for i, i<n }
- EOS_Omni_pressOMP(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n, - rhoplus,epsplus,tempplus,Y_e_plus,pressplus,keyerr,&anyerr); +#pragma omp parallel for + for(int k=0;k<cctk_ash[2];k++) + for(int j=0;j<cctk_ash[1];j++) { + int i = CCTK_GFINDEX3D(cctkGH,0,j,k); + EOS_Omni_press(*GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,cctk_ash[0], + &rhoplus[i],&epsplus[i],&tempplus[i],&Y_e_plus[i], + &pressplus[i], + &keyerr[i],&anyerr); + }
if(anyerr!=0) { #pragma omp parallel for