diff options
author | knarf <knarf@e296648e-0e4f-0410-bd07-d597d9acff87> | 2003-01-28 14:49:41 +0000 |
---|---|---|
committer | knarf <knarf@e296648e-0e4f-0410-bd07-d597d9acff87> | 2003-01-28 14:49:41 +0000 |
commit | df88cbc7f44eaed2786f331e9c839eed625ced44 (patch) | |
tree | 8141c6ac3a25a3ab8a6060812e6ec808a820b88d /src | |
parent | 34f58312bd04e64c06975d579afff005734288ba (diff) |
- add one new metric: Minkowski/conf wave
This is Minkowski with a cosine in the conformal factor
- added support for using a static conformal factor
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@147 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'src')
43 files changed, 720 insertions, 114 deletions
diff --git a/src/Bona_Masso_data.F77 b/src/Bona_Masso_data.F77 index 9805e0a..8318c01 100644 --- a/src/Bona_Masso_data.F77 +++ b/src/Bona_Masso_data.F77 @@ -13,6 +13,8 @@ c $Header$ $ x, y, z, t, $ gxx, gyy, gzz, gxy, gyz, gxz, $ hxx, hyy, hzz, hxy, hyz, hxz, + $ psi, psix, psiy, psiz, + $ psixx, psiyy, psizz, psixy, psiyz, psixz, $ dxgxx, dxgyy, dxgzz, dxgxy, dxgyz, dxgxz, $ dygxx, dygyy, dygzz, dygxy, dygyz, dygxz, $ dzgxx, dzgyy, dzgzz, dzgxy, dzgyz, dzgxz, @@ -21,9 +23,12 @@ c $Header$ implicit none CCTK_INT decoded_exact_model + CCTK_INT psi_on CCTK_REAL x, y, z, t, $ gxx, gyy, gzz, gxy, gyz, gxz, $ hxx, hyy, hzz, hxy, hyz, hxz, + $ psi, psix, psiy, psiz, + $ psixx, psiyy, psizz, psixy, psiyz, psixz, $ dxgxx, dxgyy, dxgzz, dxgxy, dxgyz, dxgxz, $ dygxx, dygyy, dygzz, dygxy, dygyz, dygxz, $ dzgxx, dzgyy, dzgzz, dzgxy, dzgyz, dzgxz, @@ -37,7 +42,7 @@ C alp is N, betax is N^x etc. C bxy is (/2) dN^y / dx (sic and sic!) C ax is dN / dx / N (sic!) - CCTK_REAL eps, + CCTK_REAL eps, four_eps2, $ gdtt, gdtx, gdty, gdtz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, @@ -45,13 +50,36 @@ C ax is dN / dx / N (sic!) $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, $ gutt_p, gutx_p, guty_p, gutz_p, $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, + $ psix_p, psiy_p, psiz_p, $ gdtt_m, gdtx_m, gdty_m, gdtz_m, $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, $ gutt_m, gutx_m, guty_m, gutz_m, - $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, + $ psix_m, psiy_m, psiz_m, + $ psix_px_p, psix_py_p, psix_pz_p, + $ psiy_py_p, psiy_pz_p, + $ psiz_pz_p, + $ + $ psix_mx_m, psix_my_m, psix_mz_m, + $ psiy_my_m, psiy_mz_m, + $ psiz_mz_m, + $ + $ psix_py_m, psix_pz_m, + $ psiy_pz_m, + $ + $ psix_my_p, psix_mz_p, + $ psiy_mz_p parameter (eps=1.d-6) +C Save, if we have to provide the conformal factor + + if (psi .gt. 0.0d0) then + psi_on=1 + else + psi_on=0 + end if + C Get the spacetime metric and its inverse at the base point. call Exact__metric( @@ -60,7 +88,7 @@ C Get the spacetime metric and its inverse at the base point. $ gdtt, gdtx, gdty, gdtz, $ gxx, gyy, gzz, gxy, gyz, gxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, psi) C Calculate lapse and shift from the upper metric. @@ -82,14 +110,14 @@ C Calculate x-derivatives. $ gdtt_p, gdtx_p, gdty_p, gdtz_p, $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, $ gutt_p, gutx_p, guty_p, gutz_p, - $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p) + $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, psix_p) call Exact__metric( $ decoded_exact_model, $ x-eps, y, z, t, $ gdtt_m, gdtx_m, gdty_m, gdtz_m, $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, $ gutt_m, gutx_m, guty_m, gutz_m, - $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m) + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_m) dxgxx = (gdxx_p - gdxx_m) / 4.d0 / eps dxgyy = (gdyy_p - gdyy_m) / 4.d0 / eps @@ -104,6 +132,7 @@ C Calculate x-derivatives. bxy = ((- guty_p / gutt_p) - (- guty_m / gutt_m)) / 4.d0 / eps bxz = ((- gutz_p / gutt_p) - (- gutz_m / gutt_m)) / 4.d0 / eps + psix = (psix_p - psix_m) / 2.0d0 / eps C Calculate y-derivatives. call Exact__metric( @@ -112,14 +141,14 @@ C Calculate y-derivatives. $ gdtt_p, gdtx_p, gdty_p, gdtz_p, $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, $ gutt_p, gutx_p, guty_p, gutz_p, - $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p) + $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, psiy_p) call Exact__metric( $ decoded_exact_model, $ x, y-eps, z, t, $ gdtt_m, gdtx_m, gdty_m, gdtz_m, $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, $ gutt_m, gutx_m, guty_m, gutz_m, - $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m) + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_m) dygxx = (gdxx_p - gdxx_m) / 4.d0 / eps dygyy = (gdyy_p - gdyy_m) / 4.d0 / eps @@ -134,6 +163,7 @@ C Calculate y-derivatives. byy = ((- guty_p / gutt_p) - (- guty_m / gutt_m)) / 4.d0 / eps byz = ((- gutz_p / gutt_p) - (- gutz_m / gutt_m)) / 4.d0 / eps + psiy = (psiy_p - psiy_m) / 2.0d0 / eps C Calculate z-derivatives. call Exact__metric( @@ -142,14 +172,14 @@ C Calculate z-derivatives. $ gdtt_p, gdtx_p, gdty_p, gdtz_p, $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, $ gutt_p, gutx_p, guty_p, gutz_p, - $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p) + $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, psiz_p) call Exact__metric( $ decoded_exact_model, $ x, y, z-eps, t, $ gdtt_m, gdtx_m, gdty_m, gdtz_m, $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, $ gutt_m, gutx_m, guty_m, gutz_m, - $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m) + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiz_m) dzgxx = (gdxx_p - gdxx_m) / 4.d0 / eps dzgyy = (gdyy_p - gdyy_m) / 4.d0 / eps @@ -164,6 +194,7 @@ C Calculate z-derivatives. bzy = ((- guty_p / gutt_p) - (- guty_m / gutt_m)) / 4.d0 / eps bzz = ((- gutz_p / gutt_p) - (- gutz_m / gutt_m)) / 4.d0 / eps + psiz = (psiz_p - psiz_m) / 2.0d0 / eps C Calculate t-derivatives, and extrinsic curvature. call Exact__metric( @@ -172,14 +203,14 @@ C Calculate t-derivatives, and extrinsic curvature. $ gdtt_p, gdtx_p, gdty_p, gdtz_p, $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, $ gutt_p, gutx_p, guty_p, gutz_p, - $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p) + $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, psi) call Exact__metric( $ decoded_exact_model, $ x, y, z, t-eps, $ gdtt_m, gdtx_m, gdty_m, gdtz_m, $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, $ gutt_m, gutx_m, guty_m, gutz_m, - $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m) + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psi) hxx = - (gdxx_p - gdxx_m) / 4.d0 / eps / alp $ + (dxgxx * betax + dygxx * betay + dzgxx * betaz @@ -208,6 +239,145 @@ C Calculate t-derivatives, and extrinsic curvature. $ + bxx * gxz + bxy * gyz + bxz * gzz $ + bzx * gxx + bzy * gxy + bzz * gxz) / alp +C Calculate second derivatives of the conformal factor + if (psi_on .eq. 1) then + call Exact__metric( + $ decoded_exact_model, + $ x+eps+eps, y, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_px_p) + call Exact__metric( + $ decoded_exact_model, + $ x, y+eps+eps, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_py_p) + call Exact__metric( + $ decoded_exact_model, + $ x, y, z+eps+eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiz_pz_p) + call Exact__metric( + $ decoded_exact_model, + $ x-eps-eps, y, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_mx_m) + call Exact__metric( + $ decoded_exact_model, + $ x, y-eps-eps, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_my_m) + call Exact__metric( + $ decoded_exact_model, + $ x, y, z-eps-eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiz_mz_m) + call Exact__metric( + $ decoded_exact_model, + $ x+eps, y+eps, z, t, + $ gdtt_p, gdtx_p, gdty_p, gdtz_p, + $ gdxx_p, gdyy_p, gdzz_p, gdxy_p, gdyz_p, gdxz_p, + $ gutt_p, gutx_p, guty_p, gutz_p, + $ guxx_p, guyy_p, guzz_p, guxy_p, guyz_p, guxz_p, psix_py_p) + call Exact__metric( + $ decoded_exact_model, + $ x+eps, y, z+eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_pz_p) + call Exact__metric( + $ decoded_exact_model, + $ x, y+eps, z+eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_pz_p) + call Exact__metric( + $ decoded_exact_model, + $ x-eps, y-eps, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_my_m) + call Exact__metric( + $ decoded_exact_model, + $ x-eps, y, z-eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_mz_m) + call Exact__metric( + $ decoded_exact_model, + $ x, y-eps, z-eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_mz_m) + call Exact__metric( + $ decoded_exact_model, + $ x+eps, y-eps, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_py_m) + call Exact__metric( + $ decoded_exact_model, + $ x+eps, y, z-eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_pz_m) + call Exact__metric( + $ decoded_exact_model, + $ x-eps, y+eps, z, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_my_p) + call Exact__metric( + $ decoded_exact_model, + $ x-eps, y, z+eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psix_mz_p) + call Exact__metric( + $ decoded_exact_model, + $ x, y+eps, z-eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_pz_m) + call Exact__metric( + $ decoded_exact_model, + $ x, y-eps, z+eps, t, + $ gdtt_m, gdtx_m, gdty_m, gdtz_m, + $ gdxx_m, gdyy_m, gdzz_m, gdxy_m, gdyz_m, gdxz_m, + $ gutt_m, gutx_m, guty_m, gutz_m, + $ guxx_m, guyy_m, guzz_m, guxy_m, guyz_m, guxz_m, psiy_mz_p) + + four_eps2 = 4.0d0 * eps**2 + + psixx = (psix_mx_m- 2*psi+ psix_px_p) / four_eps2 + psiyy = (psiy_my_m- 2*psi+ psiy_py_p) / four_eps2 + psizz = (psiz_mz_m- 2*psi+ psiz_pz_p) / four_eps2 + psixy = (psix_my_m- psix_my_p- psix_py_m+ psix_py_p) / four_eps2 + psixz = (psix_mz_m- psix_mz_p- psix_pz_m+ psix_pz_p) / four_eps2 + psiyz = (psiy_mz_m- psiy_mz_p- psiy_pz_m+ psiy_pz_p) / four_eps2 + + end if return end diff --git a/src/ParamCheck.c b/src/ParamCheck.c index ed19b5b..c66125e 100644 --- a/src/ParamCheck.c +++ b/src/ParamCheck.c @@ -64,12 +64,12 @@ void Exact_ParamCheck(CCTK_ARGUMENTS); void Exact_ParamCheck(CCTK_ARGUMENTS) { DECLARE_CCTK_PARAMETERS; - +/* if(! CCTK_EQUALS(metric_type, "physical")) { CCTK_PARAMWARN("Unknown ADMBase::metric_type - known types are \"physical\""); } - +*/ if ( CCTK_EQUALS(shift_evolution_method, "exact") && CCTK_EQUALS(initial_shift, "none") ) { diff --git a/src/blended_boundary.F77 b/src/blended_boundary.F77 index 804f679..c51ac61 100644 --- a/src/blended_boundary.F77 +++ b/src/blended_boundary.F77 @@ -24,6 +24,12 @@ C $Header$ CCTK_REAL dygxxe, dygyye, dygzze, dygxye, dygyze, dygxze CCTK_REAL dzgxxe, dzgyye, dzgzze, dzgxye, dzgyze, dzgxze + CCTK_REAL + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz + CCTK_REAL alpe, axe, aye, aze CCTK_REAL betaxe,betaye,betaze CCTK_REAL bxxe,bxye,bxze,byxe,byye,byze,bzxe,bzye,bzze @@ -84,11 +90,32 @@ c there. if (r(i,j,k) .ge. rinner) then +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), time, $ gxxe, gyye, gzze, gxye, gyze, gxze, $ kxxe, kyye, kzze, kxye, kyze, kxze, + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxe, dxgyye, dxgzze, dxgxye, dxgyze, dxgxze, $ dygxxe, dygyye, dygzze, dygxye, dygyze, dygxze, $ dzgxxe, dzgyye, dzgzze, dzgxye, dzgyze, dzgxze, diff --git a/src/boundary.F77 b/src/boundary.F77 index 1862e43..3e65f53 100644 --- a/src/boundary.F77 +++ b/src/boundary.F77 @@ -25,6 +25,11 @@ C $Header$ $ bxxjunk, bxyjunk, bxzjunk, $ byxjunk, byyjunk, byzjunk, $ bzxjunk, bzyjunk, bzzjunk + CCTK_REAL + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz C Grid parameters. @@ -32,6 +37,23 @@ C Grid parameters. ny = cctk_lsh(2) nz = cctk_lsh(3) +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + C Set all initial data including dijk and vi on all points which C are on the boundary of the domain if it really is the boundary C of the complete grid. Treat all six sides of the grid cube this way. @@ -55,6 +77,10 @@ C overwritten by Exact__gauge. gxy(i,j,k), gyz(i,j,k), gxz(i,j,k), \ kxx(i,j,k), kyy(i,j,k), kzz(i,j,k), \ kxy(i,j,k), kyz(i,j,k), kxz(i,j,k), \ + exact_psi, \ + exact_psix, exact_psiy, exact_psiz, \ + exact_psixx, exact_psiyy, exact_psizz, \ + exact_psixy, exact_psiyz, exact_psixz, \ dxgxxjunk, dxgyyjunk, dxgzzjunk, \ dxgxyjunk, dxgyzjunk, dxgxzjunk, \ dygxxjunk, dygyyjunk, dygzzjunk, \ diff --git a/src/decode_pars.F77 b/src/decode_pars.F77 index 1368f11..7790171 100644 --- a/src/decode_pars.F77 +++ b/src/decode_pars.F77 @@ -57,6 +57,8 @@ c Minkowski spacetime decoded_exact_model = EXACT__Minkowski_funny elseif (CCTK_Equals(exact_model, "Minkowski/gauge wave") .ne. 0) then decoded_exact_model = EXACT__Minkowski_gauge_wave + elseif (CCTK_Equals(exact_model, "Minkowski/conf wave") .ne. 0) then + decoded_exact_model = EXACT__Minkowski_conf_wave c black hole spacetimes elseif (CCTK_Equals(exact_model, "Schwarzschild/EF") .ne. 0) then diff --git a/src/gauge.F77 b/src/gauge.F77 index f5c2e88..4df2cb7 100644 --- a/src/gauge.F77 +++ b/src/gauge.F77 @@ -34,6 +34,11 @@ C $Header$ $ bxxjunk, bxyjunk, bxzjunk, $ byxjunk, byyjunk, byzjunk, $ bzxjunk, bzyjunk, bzzjunk + CCTK_REAL + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz C Grid parameters. @@ -58,6 +63,23 @@ C Set both lapse and shift. do j=1,ny do i=1,nx +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), tplushalf, @@ -65,6 +87,10 @@ C Set both lapse and shift. $ gxyjunk, gyzjunk, gxzjunk, $ hxxjunk, hyyjunk, hzzjunk, $ hxyjunk, hyzjunk, hxzjunk, + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxjunk, dxgyyjunk, dxgzzjunk, $ dxgxyjunk, dxgyzjunk, dxgxzjunk, $ dygxxjunk, dygyyjunk, dygzzjunk, @@ -89,6 +115,23 @@ C Set lapse only. do j=1,ny do i=1,nx +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), tplushalf, @@ -96,6 +139,10 @@ C Set lapse only. $ gxyjunk, gyzjunk, gxzjunk, $ hxxjunk, hyyjunk, hzzjunk, $ hxyjunk, hyzjunk, hxzjunk, + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxjunk, dxgyyjunk, dxgzzjunk, $ dxgxyjunk, dxgyzjunk, dxgxzjunk, $ dygxxjunk, dygyyjunk, dygzzjunk, @@ -121,6 +168,23 @@ C Set shift only. do j=1,ny do i=1,nx +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), tplushalf, @@ -128,6 +192,10 @@ C Set shift only. $ gxyjunk, gyzjunk, gxzjunk, $ hxxjunk, hyyjunk, hzzjunk, $ hxyjunk, hyzjunk, hxzjunk, + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxjunk, dxgyyjunk, dxgzzjunk, $ dxgxyjunk, dxgyzjunk, dxgxzjunk, $ dygxxjunk, dygyyjunk, dygzzjunk, diff --git a/src/include/Scalar_CalcTmunu.inc b/src/include/Scalar_CalcTmunu.inc index 4f5f240..50020cd 100644 --- a/src/include/Scalar_CalcTmunu.inc +++ b/src/include/Scalar_CalcTmunu.inc @@ -40,6 +40,8 @@ c no stress-energy tensor in this model c no stress-energy tensor in this model elseif (decoded_exact_model .eq. EXACT__Minkowski_gauge_wave) then c no stress-energy tensor in this model + elseif (decoded_exact_model .eq. EXACT__Minkowski_conf_wave) then +c no stress-energy tensor in this model cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ccccc black hole spacetimes cccccccccccccccccccccccccccccccccccccccccccccccccccc diff --git a/src/include/param_defs.inc b/src/include/param_defs.inc index df25a06..45642ba 100644 --- a/src/include/param_defs.inc +++ b/src/include/param_defs.inc @@ -34,6 +34,7 @@ c Minkowski spacetime #define EXACT__Minkowski_shift 2 #define EXACT__Minkowski_funny 3 #define EXACT__Minkowski_gauge_wave 4 +#define EXACT__Minkowski_conf_wave 5 c black hole spacetimes #define EXACT__Schwarzschild_EF 10 diff --git a/src/initialize.F77 b/src/initialize.F77 index 00fca60..74d47f6 100644 --- a/src/initialize.F77 +++ b/src/initialize.F77 @@ -30,9 +30,25 @@ C $Header$ $ dygxyjunk, dygyzjunk, dygxzjunk, $ dzgxxjunk, dzgyyjunk, dzgzzjunk, $ dzgxyjunk, dzgyzjunk, dzgxzjunk + CCTK_REAL + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz call CCTK_INFO('setting exact data on slice') +C Set conformal state + if (CCTK_EQUALS(metric_type, "static conformal")) then + conformal_state=1 + if (CCTK_EQUALS(conformal_storage,"factor+derivs")) then + conformal_state = 2 + else if (CCTK_EQUALS(conformal_storage, + $ "factor+derivs+2nd derivs")) then + conformal_state = 3 + end if + end if + C Note I assume time has been initialized to physical time. C Set data pointwise. @@ -43,7 +59,24 @@ C Set data pointwise. do k=1,nz do j=1,ny do i=1,nx - + +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), cctk_time, @@ -51,6 +84,10 @@ C Set data pointwise. $ gxy(i,j,k), gyz(i,j,k), gxz(i,j,k), $ kxx(i,j,k), kyy(i,j,k), kzz(i,j,k), $ kxy(i,j,k), kyz(i,j,k), kxz(i,j,k), + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxjunk, dxgyyjunk, dxgzzjunk, $ dxgxyjunk, dxgyzjunk, dxgxzjunk, $ dygxxjunk, dygyyjunk, dygzzjunk, @@ -63,6 +100,24 @@ C Set data pointwise. $ byxjunk, byyjunk, byzjunk, $ bzxjunk, bzyjunk, bzzjunk) +C Save the conformal factor if wanted + if (conformal_state .ne. 0) then + psi(i,j,k) = exact_psi + if (conformal_state .gt. 1) then + psix(i,j,k) = exact_psix + psiy(i,j,k) = exact_psiy + psiz(i,j,k) = exact_psiz + if (conformal_state .gt. 2) then + psixx(i,j,k) = exact_psixx + psiyy(i,j,k) = exact_psiyy + psizz(i,j,k) = exact_psizz + psixy(i,j,k) = exact_psixy + psiyz(i,j,k) = exact_psiyz + psixz(i,j,k) = exact_psixz + end if + end if + end if + end do end do end do @@ -71,8 +126,7 @@ C Tell the code there is no need to treat the conformal factor C as a separate field. That is, we have set the physical metric here. c Commented out in einstein revamp, now Exact doesnot inherit anything c about the conformal factor -c conformal_state = 0 -c psi = 1.0D0 +c Now ot does again (see above, knarf) return end diff --git a/src/metric.F77 b/src/metric.F77 index c547b8d..32cbf81 100644 --- a/src/metric.F77 +++ b/src/metric.F77 @@ -14,7 +14,7 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz,rama) + $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama) implicit none DECLARE_CCTK_FUNCTIONS @@ -25,7 +25,7 @@ c arguments $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz, rama + $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama c local variables character*100 warn_buffer @@ -42,7 +42,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Minkowski_shift) then call Exact__Minkowski_shift( @@ -50,7 +51,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Minkowski_funny) then call Exact__Minkowski_funny( @@ -58,7 +60,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Minkowski_gauge_wave) then call Exact__Minkowski_gauge_wave( @@ -66,7 +69,17 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) + + elseif (decoded_exact_model .eq. EXACT__Minkowski_conf_wave) then + call Exact__Minkowski_conf_wave( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -80,7 +93,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_PG) then call Exact__Schwarzschild_PG( @@ -88,14 +102,16 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Novikov) then call Exact__Schwarzschild_Novikov(x,y,z,t, $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Kerr_BoyerLindquist) then call Exact__Kerr_BoyerLindquist( @@ -103,7 +119,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Kerr_KerrSchild) then call Exact__Kerr_KerrSchild( @@ -111,7 +128,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Lemaitre) then call Exact__Schwarzschild_Lemaitre( @@ -119,7 +137,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__multi_BH) then call Exact__multi_BH( @@ -127,7 +146,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) c c not fully implemented yet -- see Nina Jansen for details @@ -138,7 +158,8 @@ c $ x, y, z, t, c $ gdtt, gdtx, gdty, gdtz, c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, c $ gutt, gutx, guty, gutz, -c $ guxx, guyy, guzz, guxy, guyz, guxz) +c $ guxx, guyy, guzz, guxy, guyz, guxz, +c $ psi) c elseif (decoded_exact_model .eq. EXACT__Thorne_fakebinary) then @@ -147,7 +168,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -161,7 +183,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Robertson_Walker) then call Exact__Robertson_Walker( @@ -169,7 +192,7 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz,rama) + $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama) elseif (decoded_exact_model .eq. EXACT__de_Sitter) then call Exact__de_Sitter( @@ -177,7 +200,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__de_Sitter_Lambda) then call Exact__de_Sitter_Lambda( @@ -185,7 +209,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__anti_de_Sitter_Lambda) then call Exact__anti_de_Sitter_Lambda( @@ -193,7 +218,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Bianchi_I) then call Exact__Bianchi_I( @@ -201,7 +227,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Goedel) then call Exact__Goedel( @@ -209,7 +236,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Bertotti) then call Exact__Bertotti( @@ -217,7 +245,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Kasner_like) then call Exact__Kasner_like( @@ -225,7 +254,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Kasner_axisymmetric) then call Exact__Kasner_axisymmetric( @@ -233,7 +263,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Kasner_generalized) then call Exact__Kasner_generalized( @@ -241,7 +272,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Gowdy_wave) then call Exact__Gowdy_wave( @@ -249,7 +281,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__Milne) then call Exact__Milne( @@ -257,7 +290,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -271,7 +305,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__bowl) then call Exact__bowl( @@ -279,7 +314,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) elseif (decoded_exact_model .eq. EXACT__constant_density_star) then call Exact__constant_density_star( @@ -287,7 +323,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc diff --git a/src/metrics/Alvi.F77 b/src/metrics/Alvi.F77 index 81789e6..7ee21fb 100644 --- a/src/metrics/Alvi.F77 +++ b/src/metrics/Alvi.F77 @@ -11,7 +11,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -30,7 +31,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi CCTK_REAL rin1,rin2,rout,x1,x2, r1, r2, r3, results(10) diff --git a/src/metrics/Bertotti.F77 b/src/metrics/Bertotti.F77 index f9b32df..5533422 100644 --- a/src/metrics/Bertotti.F77 +++ b/src/metrics/Bertotti.F77 @@ -10,7 +10,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Bianchi_I.F77 b/src/metrics/Bianchi_I.F77 index 0af7b12..feece73 100644 --- a/src/metrics/Bianchi_I.F77 +++ b/src/metrics/Bianchi_I.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -22,7 +23,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Goedel.F77 b/src/metrics/Goedel.F77 index fec2c73..513e3e1 100644 --- a/src/metrics/Goedel.F77 +++ b/src/metrics/Goedel.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -22,7 +23,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Gowdy.F77 b/src/metrics/Gowdy.F77 index 06370bf..8573710 100644 --- a/src/metrics/Gowdy.F77 +++ b/src/metrics/Gowdy.F77 @@ -20,7 +20,8 @@ C @@ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -30,7 +31,8 @@ C @@ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Kasner_axisymmetric.F77 b/src/metrics/Kasner_axisymmetric.F77 index 0dc98d1..d6480dd 100644 --- a/src/metrics/Kasner_axisymmetric.F77 +++ b/src/metrics/Kasner_axisymmetric.F77 @@ -10,7 +10,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi gdtt = -t**(-0.5d0) gdtx = 0.d0 diff --git a/src/metrics/Kasner_generalized.F77 b/src/metrics/Kasner_generalized.F77 index 9ec71d5..c3e8a63 100644 --- a/src/metrics/Kasner_generalized.F77 +++ b/src/metrics/Kasner_generalized.F77 @@ -10,7 +10,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Kasner_like.F77 b/src/metrics/Kasner_like.F77 index 15e5cff..bd24380 100644 --- a/src/metrics/Kasner_like.F77 +++ b/src/metrics/Kasner_like.F77 @@ -14,7 +14,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -24,7 +25,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Kerr_BoyerLindquist.F77 b/src/metrics/Kerr_BoyerLindquist.F77 index 3a16cc6..076d9f8 100644 --- a/src/metrics/Kerr_BoyerLindquist.F77 +++ b/src/metrics/Kerr_BoyerLindquist.F77 @@ -11,7 +11,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -21,7 +22,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Kerr_KerrSchild.F77 b/src/metrics/Kerr_KerrSchild.F77 index d998fb4..ad9ac27 100644 --- a/src/metrics/Kerr_KerrSchild.F77 +++ b/src/metrics/Kerr_KerrSchild.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -23,7 +24,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi CCTK_REAL gamma, t0, z0, x0, y0, rho02, r02, r0, costheta0, $ lt0, lx0, ly0, lz0, hh, lt, lx, ly, lz diff --git a/src/metrics/Lemaitre.F77 b/src/metrics/Lemaitre.F77 index 2062f4b..9819c45 100644 --- a/src/metrics/Lemaitre.F77 +++ b/src/metrics/Lemaitre.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -24,7 +25,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Milne.F77 b/src/metrics/Milne.F77 index 0167873..d441cb6 100644 --- a/src/metrics/Milne.F77 +++ b/src/metrics/Milne.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -26,6 +27,7 @@ c Output. $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi, $ coef, x2,y2,z2,t2 x2= x*x diff --git a/src/metrics/Minkowski.F77 b/src/metrics/Minkowski.F77 index 5318332..88031c2 100644 --- a/src/metrics/Minkowski.F77 +++ b/src/metrics/Minkowski.F77 @@ -8,7 +8,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -21,7 +22,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi gdtt = -1.d0 gdtx = 0.d0 diff --git a/src/metrics/Minkowski_conf_wave.F77 b/src/metrics/Minkowski_conf_wave.F77 new file mode 100644 index 0000000..301fb62 --- /dev/null +++ b/src/metrics/Minkowski_conf_wave.F77 @@ -0,0 +1,75 @@ +c $Header$ + +C Author: Frank Loeffler (frank.loeffler@aei.mpg.de) +C Licence: GPL 2 or later + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#define Pi (4 * atan(1.d0)) + + + subroutine Exact__Minkowski_conf_wave( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) + + implicit none + DECLARE_CCTK_PARAMETERS + DECLARE_CCTK_FUNCTIONS + + CCTK_REAL x, y, z, t + CCTK_REAL gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi + +C write conformal factor + if (Minkowski_conf_wave__direction .eq. 0) then + psi = Minkowski_conf_wave__amplitude * + . sin(2.0d0*Pi/Minkowski_conf_wave__wavelength* x ) + 1.0d0 + else if (Minkowski_conf_wave__direction .eq. 1) then + psi = Minkowski_conf_wave__amplitude * + . sin(2.0d0*Pi/Minkowski_conf_wave__wavelength* y ) + 1.0d0 + else if (Minkowski_conf_wave__direction .eq. 2) then + psi = Minkowski_conf_wave__amplitude * + . sin(2.0d0*Pi/Minkowski_conf_wave__wavelength* z ) + 1.0d0 + end if + +C write metric. + + gdxx = psi**(-4.0d0) + gdyy = gdxx + gdzz = gdxx + + gdxy = 0.0d0 + gdyz = 0.0d0 + gdzx = 0.0d0 + + gdtt = -1.0d0 + gdtx = 0.0d0 + gdty = 0.0d0 + gdtz = 0.0d0 + +C and upper metric. + + guxx = psi**4.0d0 + guyy = guxx + guzz = guxx + + guxy = 0.0d0 + guyz = 0.0d0 + guzx = 0.0d0 + + gutt = -1.0d0 + gutx = 0.0d0 + guty = 0.0d0 + gutz = 0.0d0 + + return + end diff --git a/src/metrics/Minkowski_funny.F77 b/src/metrics/Minkowski_funny.F77 index 5a9c8e2..a1b5af7 100644 --- a/src/metrics/Minkowski_funny.F77 +++ b/src/metrics/Minkowski_funny.F77 @@ -19,7 +19,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -34,7 +35,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi c Internal. diff --git a/src/metrics/Minkowski_gauge_wave.F77 b/src/metrics/Minkowski_gauge_wave.F77 index 5e67a70..a4f8a6f 100644 --- a/src/metrics/Minkowski_gauge_wave.F77 +++ b/src/metrics/Minkowski_gauge_wave.F77 @@ -12,7 +12,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none DECLARE_CCTK_PARAMETERS @@ -22,7 +23,8 @@ c $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Minkowski_shift.F77 b/src/metrics/Minkowski_shift.F77 index f999d15..ab8bca4 100644 --- a/src/metrics/Minkowski_shift.F77 +++ b/src/metrics/Minkowski_shift.F77 @@ -21,7 +21,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -36,7 +37,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi c Internal. diff --git a/src/metrics/Robertson_Walker.F77 b/src/metrics/Robertson_Walker.F77 index 85e0739..8335762 100644 --- a/src/metrics/Robertson_Walker.F77 +++ b/src/metrics/Robertson_Walker.F77 @@ -13,7 +13,7 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx,rama) + $ guxx, guyy, guzz, guxy, guyz, guzx, psi, rama) implicit none @@ -25,7 +25,7 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx,rama + $ guxx, guyy, guzz, guxy, guyz, guzx, psi, rama logical firstcall diff --git a/src/metrics/Schwarzschild_EF.F77 b/src/metrics/Schwarzschild_EF.F77 index a53858d..4f69802 100644 --- a/src/metrics/Schwarzschild_EF.F77 +++ b/src/metrics/Schwarzschild_EF.F77 @@ -10,7 +10,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ c $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Schwarzschild_Lemaitre.F77 b/src/metrics/Schwarzschild_Lemaitre.F77 index 9ff7835..6d9d033 100644 --- a/src/metrics/Schwarzschild_Lemaitre.F77 +++ b/src/metrics/Schwarzschild_Lemaitre.F77 @@ -12,7 +12,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -22,7 +23,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Schwarzschild_Novikov.F77 b/src/metrics/Schwarzschild_Novikov.F77 index 61a2d1a..38dafc7 100644 --- a/src/metrics/Schwarzschild_Novikov.F77 +++ b/src/metrics/Schwarzschild_Novikov.F77 @@ -14,7 +14,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -29,7 +30,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi c Internal. logical firstcall diff --git a/src/metrics/Schwarzschild_PG.F77 b/src/metrics/Schwarzschild_PG.F77 index 37072fc..13db0f1 100644 --- a/src/metrics/Schwarzschild_PG.F77 +++ b/src/metrics/Schwarzschild_PG.F77 @@ -11,7 +11,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -21,7 +22,8 @@ c $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/Thorne_fakebinary.F77 b/src/metrics/Thorne_fakebinary.F77 index 2cd954b..8c3f842 100644 --- a/src/metrics/Thorne_fakebinary.F77 +++ b/src/metrics/Thorne_fakebinary.F77 @@ -15,7 +15,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi) implicit none DECLARE_CCTK_PARAMETERS @@ -28,7 +29,8 @@ C output CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi C static diff --git a/src/metrics/anti_de_Sitter_Lambda.F77 b/src/metrics/anti_de_Sitter_Lambda.F77 index 5e2733c..483d847 100644 --- a/src/metrics/anti_de_Sitter_Lambda.F77 +++ b/src/metrics/anti_de_Sitter_Lambda.F77 @@ -10,7 +10,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/boost_rotation_symmetric.F77 b/src/metrics/boost_rotation_symmetric.F77 index ec3dbf9..0a69f8d 100644 --- a/src/metrics/boost_rotation_symmetric.F77 +++ b/src/metrics/boost_rotation_symmetric.F77 @@ -10,7 +10,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi CCTK_REAL a, b, mu0, mu1, lam1, mu2, lam2, $ lam3, mu4, lam4, mu5, lam5, num, div, f, $ elam, emu0, delta, gfunc, tmp diff --git a/src/metrics/bowl.F77 b/src/metrics/bowl.F77 index 192c4e0..36a1cf7 100644 --- a/src/metrics/bowl.F77 +++ b/src/metrics/bowl.F77 @@ -57,7 +57,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -71,7 +72,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall,evolve diff --git a/src/metrics/constant_density_star.F77 b/src/metrics/constant_density_star.F77 index ab3aa30..aecb4ab 100644 --- a/src/metrics/constant_density_star.F77 +++ b/src/metrics/constant_density_star.F77 @@ -15,7 +15,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) c c The metric is given as a conformally flat metric. @@ -39,7 +40,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi c Internal. diff --git a/src/metrics/de_Sitter.F77 b/src/metrics/de_Sitter.F77 index 2ced3e5..f073d73 100644 --- a/src/metrics/de_Sitter.F77 +++ b/src/metrics/de_Sitter.F77 @@ -16,7 +16,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -26,7 +27,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/de_Sitter_Lambda.F77 b/src/metrics/de_Sitter_Lambda.F77 index 381159b..868557a 100644 --- a/src/metrics/de_Sitter_Lambda.F77 +++ b/src/metrics/de_Sitter_Lambda.F77 @@ -10,7 +10,8 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -20,7 +21,8 @@ C $Header$ CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/metrics/make.code.defn b/src/metrics/make.code.defn index 9c33332..ccd943d 100644 --- a/src/metrics/make.code.defn +++ b/src/metrics/make.code.defn @@ -10,6 +10,7 @@ SRCS = Minkowski.F77 \ Minkowski_funny.F77 \ Minkowski_shift.F77 \ Minkowski_gauge_wave.F77 \ + Minkowski_conf_wave.F77 \ \ Schwarzschild_EF.F77 \ Schwarzschild_PG.F77 \ diff --git a/src/metrics/multi_BH.F77 b/src/metrics/multi_BH.F77 index a942c67..0068db0 100644 --- a/src/metrics/multi_BH.F77 +++ b/src/metrics/multi_BH.F77 @@ -24,7 +24,8 @@ c $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi) implicit none @@ -37,7 +38,8 @@ c Output. CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi logical firstcall diff --git a/src/slice_data.F b/src/slice_data.F index f7edb5e..088f635 100644 --- a/src/slice_data.F +++ b/src/slice_data.F @@ -18,7 +18,7 @@ c #define-ing the symbol EXACT_NO_F90 will turn this subroutine into a no-op CCTK_REAL s1d(4,3), nd(4), nu(4), norm, gd(4,4), gu(4,4), g3(3,3), $ gd_p(4,4), gd_m(4,4), gd1d(4,4,4), s2d(4,3,3), k3(3,3), - $ ex_eps, d3(3,3,3), dx, dy, dz + $ ex_eps, d3(3,3,3), dx, dy, dz, exact_psi parameter (ex_eps=1.d-6) C Grid parameters. @@ -55,6 +55,13 @@ C Calculate first derivatives of slice coordinates. s1d(4,2) = 0.5d0 * (slicet(i,j+1,k) - slicet(i,j-1,k))/dy s1d(4,3) = 0.5d0 * (slicet(i,j,k+1) - slicet(i,j,k-1))/dz +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if + C Now we need the exact solution metric in the preferred coordinates x^A. call Exact__metric( @@ -66,7 +73,7 @@ C Now we need the exact solution metric in the preferred coordinates x^A. $ gd(1,2), gd(2,3), gd(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) C Calculate n^A and dx^A/dt @@ -165,6 +172,12 @@ C with an editor (hint for proofreading). C Calculate g_AB,C. Need to sum explicitly over C. Do this with C the editor. +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k)+ex_eps, slicey(i,j,k), slicez(i,j,k), @@ -174,7 +187,14 @@ C the editor. $ gd_p(1,2), gd_p(2,3), gd_p(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k)-ex_eps, slicey(i,j,k), slicez(i,j,k), @@ -184,13 +204,19 @@ C the editor. $ gd_m(1,2), gd_m(2,3), gd_m(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) do m=1,4 do n=m,4 gd1d(m,n,1) = (gd_p(m,n) - gd_m(m,n)) / (2.*ex_eps) end do end do +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k)+ex_eps, slicez(i,j,k), @@ -200,7 +226,14 @@ C the editor. $ gd_p(1,2), gd_p(2,3), gd_p(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k)-ex_eps, slicez(i,j,k), @@ -210,13 +243,20 @@ C the editor. $ gd_m(1,2), gd_m(2,3), gd_m(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) do m=1,4 do n=m,4 gd1d(m,n,2) = (gd_p(m,n) - gd_m(m,n)) / (2.*ex_eps) end do end do + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k), slicez(i,j,k)+ex_eps, @@ -226,7 +266,14 @@ C the editor. $ gd_p(1,2), gd_p(2,3), gd_p(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k), slicez(i,j,k)-ex_eps, @@ -236,13 +283,20 @@ C the editor. $ gd_m(1,2), gd_m(2,3), gd_m(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) do m=1,4 do n=m,4 gd1d(m,n,3) = (gd_p(m,n) - gd_m(m,n)) / (2.*ex_eps) end do end do + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k), slicez(i,j,k), @@ -252,7 +306,14 @@ C the editor. $ gd_p(1,2), gd_p(2,3), gd_p(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) + +C Preset the conformal factor + if (conformal_state .ne. 0) then + exact_psi=1.0d0 + else + exact_psi=0.0d0 + end if call Exact__metric( $ decoded_exact_model, $ slicex(i,j,k), slicey(i,j,k), slicez(i,j,k), @@ -262,7 +323,7 @@ C the editor. $ gd_m(1,2), gd_m(2,3), gd_m(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), exact_psi) do m=1,4 do n=m,4 gd1d(m,n,4) = (gd_p(m,n) - gd_m(m,n)) / (2.*ex_eps) diff --git a/src/xyz_blended_boundary.F77 b/src/xyz_blended_boundary.F77 index 9c6ef44..ee0cd41 100644 --- a/src/xyz_blended_boundary.F77 +++ b/src/xyz_blended_boundary.F77 @@ -33,6 +33,11 @@ C $Header$ CCTK_REAL bxxe,bxye,bxze,byxe,byye,byze,bzxe,bzye,bzze CCTK_REAL det, uxx, uxy, uxz, uyy, uyz, uzz CCTK_REAL vxe,vye,vze,sav + CCTK_REAL + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz CCTK_REAL dx,dy,dz,time integer ierr @@ -86,11 +91,32 @@ c We only do anything if in the blending region $ z(i,j,k) .ge. zmax - zblend .or. $ z(i,j,k) .le. zmin + zblend) then +C Initialize the psi of exact +C (also to tell the models about the conformal_state) + if (conformal_state .ne. 0) then + exact_psi = 1.0D0 + else + exact_psi = 0.0D0 + end if + exact_psix = 0.0D0 + exact_psiy = 0.0D0 + exact_psiz = 0.0D0 + exact_psixx = 0.0D0 + exact_psixx = 0.0D0 + exact_psizz = 0.0D0 + exact_psixy = 0.0D0 + exact_psiyz = 0.0D0 + exact_psixz = 0.0D0 + call Exact__Bona_Masso_data( $ decoded_exact_model, $ x(i,j,k), y(i,j,k), z(i,j,k), time, $ gxxe, gyye, gzze, gxye, gyze, gxze, $ kxxe, kyye, kzze, kxye, kyze, kxze, + $ exact_psi, + $ exact_psix, exact_psiy, exact_psiz, + $ exact_psixx, exact_psiyy, exact_psizz, + $ exact_psixy, exact_psiyz, exact_psixz, $ dxgxxe, dxgyye, dxgzze, dxgxye, dxgyze, dxgxze, $ dygxxe, dygyye, dygzze, dygxye, dygyze, dygxze, $ dzgxxe, dzgyye, dzgzze, dzgxye, dzgyze, dzgxze, |