35 struct of_geom *ptrgeombl=&geomdontusebl;
37 struct of_geom *ptrgeom=&geomdontuse;
52 gset_genloc(0,whichcoord,ii,jj,kk,loc,ptrgeombl);
55 if (pr2ucon(whichvel,pr, ptrgeombl ,ucon) >= 1)
FAILSTATEMENT(
"transforms.c:bl2met2metp2v_genloc()",
"pr2ucon()", 1);
57 if (pr2ucon(whichvel,&pr[URAD1-
U1], ptrgeombl ,uradcon) >= 1)
FAILSTATEMENT(
"transforms.c:bl2met2metp2v_genloc() for radiation",
"pr2ucon()", 2);
89 ucon2pr(
WHICHVEL,uradcon,ptrgeom,&pr[URAD1-
U1]);
107 struct of_geom *ptrgeombl=&geomdontusebl;
109 struct of_geom *ptrgeom=&geomdontuse;
124 gset_genloc(0,whichcoord,ii,jj,kk,loc,ptrgeombl);
158 struct of_geom *ptrgeom=&geomdontuse;
159 struct of_geom geomprimedontuse;
160 struct of_geom *ptrgeomprime=&geomprimedontuse;
165 gset_genloc(0,whichcoord,ii,jj,kk,loc, ptrgeom);
168 raise_vec(ucov,ptrgeom,ucon);
175 mettometp_simple(idxdxp, ucon);
181 lower_vec(ucon,ptrgeomprime,ucov);
194 struct of_geom *ptrgeombl=&geomdontusebl;
196 struct of_geom *ptrgeom=&geomdontuse;
210 gset(0,whichcoord,ii,jj,kk,ptrgeombl);
213 if (pr2ucon(whichvel,pr, ptrgeombl ,ucon) >= 1)
FAILSTATEMENT(
"transforms.c:bl2met2metp2v_gen()",
"pr2ucon()", 1);
215 if (pr2ucon(whichvel,&pr[URAD1-
U1], ptrgeombl ,uradcon) >= 1)
FAILSTATEMENT(
"transforms.c:bl2met2metp2v_gen() for radiation",
"pr2ucon()", 2);
245 ucon2pr(newwhichvel,ucon,ptrgeom,pr);
247 ucon2pr(newwhichvel,uradcon,ptrgeom,&pr[URAD1-
U1]);
274 struct of_geom *ptrgeom=&geomdontuse;
276 struct of_geom *ptrgeombl=&geomdontusebl;
295 MYFUN(pr2ucon(
WHICHVEL,pr, ptrgeom ,ucon),
"transforms.c:pr2ucon()",
"metp2met2bl",0);
297 MYFUN(pr2ucon(
WHICHVEL,&pr[URAD1-
U1], ptrgeom ,uradcon),
"transforms.c:pr2ucon() for radiation",
"metp2met2bl",1);
327 gset_genloc(0,whichcoord,ii,jj,kk,pos,ptrgeombl);
329 ucon2pr(whichvel,ucon,ptrgeombl,pr);
332 ucon2pr(whichvel,uradcon,ptrgeombl,&pr[URAD1-
U1]);
346 int coordtrans(
int whichcoordin,
int whichcoordout,
int ii,
int jj,
int kk,
int loc,
FTYPE *ucon)
349 if(whichcoordin==whichcoordout){
353 bltoks(ii,jj,kk ,loc,ucon);
356 kstobl(ii,jj,kk ,loc,ucon);
359 dualfprintf(
fail_file,
"HARDFAIL: No such transformation: %d -> %d\n",whichcoordin,whichcoordout);
384 #define bl2ks_trans00 (1)
385 #define bl2ks_trans01 (2.*r/(r*r - 2.*r + a*a))
386 #define bl2ks_trans02 (0)
387 #define bl2ks_trans03 (0)
388 #define bl2ks_trans10 (0)
389 #define bl2ks_trans11 (1)
390 #define bl2ks_trans12 (0)
391 #define bl2ks_trans13 (0)
392 #define bl2ks_trans20 (0)
393 #define bl2ks_trans21 (0)
394 #define bl2ks_trans22 (1)
395 #define bl2ks_trans23 (0)
396 #define bl2ks_trans30 (0)
397 #define bl2ks_trans31 (a/(r*r - 2.*r + a*a))
398 #define bl2ks_trans32 (0)
399 #define bl2ks_trans33 (1)
441 DLOOP(j,k) tmp[
j] += bl2ks[
j][k] * ucon[k];
462 DLOOP(j,k) tmp[
j] += ks2bl[k][
j] * ucov[k];
485 #define ks2bl_trans00 (1)
486 #define ks2bl_trans01 (-2.*r/(r*r - 2.*r + a*a))
487 #define ks2bl_trans02 (0)
488 #define ks2bl_trans03 (0)
489 #define ks2bl_trans10 (0)
490 #define ks2bl_trans11 (1)
491 #define ks2bl_trans12 (0)
492 #define ks2bl_trans13 (0)
493 #define ks2bl_trans20 (0)
494 #define ks2bl_trans21 (0)
495 #define ks2bl_trans22 (1)
496 #define ks2bl_trans23 (0)
497 #define ks2bl_trans30 (0)
498 #define ks2bl_trans31 (-a/(r*r - 2.*r + a*a))
499 #define ks2bl_trans32 (0)
500 #define ks2bl_trans33 (1)
542 DLOOP(j,k) tmp[
j] += ks2bl[
j][k] * ucon[k];
554 void transV2Vmetric(
int whichcoord,
int ii,
int jj,
int kk,
int loc,
FTYPE ROTANGLE,
FTYPE *
X,
FTYPE *
V,
FTYPE *Xmetric,
FTYPE *Vmetric,
FTYPE*
gcov,
FTYPE *gcovpert)
559 #if(0)// if input X,V,Xmetric,Vmetric, no longer need to duplicate doing below.
568 FTYPE told, r, h, ph;
569 told=Vmetric[0]; r=Vmetric[1]; h=Vmetric[2]; ph=Vmetric[3];
591 trans[2][2]=pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),-0.5)*(-1.*cos(h)*cos(ph)*sin(b0) + cos(b0)*sin(h));
592 trans[2][3]=pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),-0.5)*sin(b0)*sin(h)*sin(ph);
595 trans[3][2]=-1.*pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),-1.)*sin(b0)*sin(ph);
596 trans[3][3]=pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),-1.)*sin(h)*(-1.*cos(h)*cos(ph)*sin(b0) + cos(b0)*sin(h));
616 void transVmetrictoV(
int whichcoord,
int ii,
int jj,
int kk,
int loc,
FTYPE ROTANGLE,
FTYPE *
X,
FTYPE *
V,
FTYPE *Xmetric,
FTYPE *Vmetric,
FTYPE*
gcov,
FTYPE *gcovpert)
665 tmpucov[
j] += ucov[l] * trans[l][
j];
669 ucov[
j] = tmpucov[
j];
686 FTYPE told, r, h, ph;
687 told=Vmetric[0]; r=Vmetric[1]; h=Vmetric[2]; ph=Vmetric[3];
710 trans[2][2]=pow(pow(cos(h)*cos(ph)*sin(b0) - 1.*cos(b0)*sin(h),2.) + pow(sin(b0),2.)*pow(sin(ph),2.),-1.)*pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),0.5)*(-1.*cos(h)*cos(ph)*sin(b0) + cos(b0)*sin(h));
711 trans[2][3]=-1.*sin(b0)*sin(ph);
714 trans[3][2]=csc(h)*pow(pow(cos(h)*cos(ph)*sin(b0) - 1.*cos(b0)*sin(h),2.) + pow(sin(b0),2.)*pow(sin(ph),2.),-1.)*pow(pow(cos(h)*sin(b0) - 1.*cos(b0)*cos(ph)*sin(h),2.) + pow(sin(h),2.)*pow(sin(ph),2.),0.5)*sin(b0)*sin(ph);
715 trans[3][3]=cos(b0) - 1.*cos(ph)*cot(h)*sin(b0);
738 dualfprintf(
fail_file,
"pr2ucon(ucon_calc): space-like error: whichvel=%d\n",whichvel);
742 else if(whichvel==
VEL3){
744 dualfprintf(
fail_file,
"pr2ucon(ucon_calc): space-like error: whichvel=%d\n",whichvel);
750 dualfprintf(
fail_file,
"pr2ucon(ucon_calc): space-like error: whichvel=%d\n",whichvel);
755 dualfprintf(
fail_file,
"No such whichvel=%d\n",whichvel);
786 DLOOP(j,k) tmp[
j] += idxdxp[
j][k] * ucon[k];
815 DLOOP(j,k) tmp[j] += idxdxp[j][k] * ucon[k];
816 DLOOPA(j) ucon[j] = tmp[j];
820 void metptomet_ucov_simple(
FTYPE (*idxdxp)[NDIM],
FTYPE*ucov)
828 DLOOP(j,k) tmp[j] += idxdxp[k][j] * ucov[k];
829 DLOOPA(j) ucov[j] = tmp[j];
854 DLOOP(j,k) tmp[
j] += dxdxp[
j][k] * ucon[k];
870 DLOOPA(j) ucon[j] = tmp[j];
884 DLOOPA(j) ucov[j] = tmp[j];
921 DLOOP(j,k) tmp[
j][k] = 0.;
923 DLOOP(j,k) Tud[
j][k] = tmp[
j][k];
941 alphasq = 1./(-geom->gcon[
GIND(TT,TT)]) ;
942 gammaoalpha = ucon[
TT] ;
945 SLOOPA(j) pr[
U1+j-1] = ucon[j] + beta[j]*gammaoalpha ;
964 dualfprintf(
fail_file,
"vcon2pr(ucon_calc_3vel): space-like error\n");
977 else if(whichvel==VELREL4){
980 dualfprintf(
fail_file,
"vcon2pr(ucon_calc_3vel): space-like error\n");
985 alphasq = 1./(-geom->gcon[
GIND(TT,TT)]) ;
986 gammaoalpha = ucon[
TT] ;
988 SLOOPA(j) beta[
j] = alphasq*geom->gcon[
GIND(TT,j)] ;
989 SLOOPA(j) pr[
U1+j-1] = ucon[
j] + beta[
j]*gammaoalpha ;
998 #define NORMALDENSITY 0
1001 #define DENSITYTYPE LOGDENSITY
1008 #if(DENSITYTYPE==NORMALDENSITY)
1011 #elif(DENSITYTYPE==LOGDENSITY)
1012 density[
RHO]=log(pr[
RHO]);
1013 density[
UU]=log(pr[
UU]);
1022 #if(DENSITYTYPE==NORMALDENSITY)
1025 #elif(DENSITYTYPE==LOGDENSITY)
1026 pr[
RHO]=exp(density[
RHO]);
1027 pr[
UU]=exp(density[
UU]);