diff options
author | jthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87> | 2002-06-16 18:42:41 +0000 |
---|---|---|
committer | jthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87> | 2002-06-16 18:42:41 +0000 |
commit | f7216a27e1388f70b04fe68c2bd43449d668f457 (patch) | |
tree | 0c7673b21efc4745fd16afb6b320c63489eb3150 /src/boundary.F | |
parent | cf2fb9a92562b9471403b8205ce75d975de144d4 (diff) |
[[This is a redo of my "cvs import" of 2002/06/11, this time using proper
cvs operations (commit/delete/add) to preserve the full CVS history of this
thorn.]]
This is a major cleanup/revision of AEIThorns/Exact.
Major user-visible changes:
* major expansion of doc/documentation.tex
* major expansion of documentation in param.ccl file
* rename all parameters, systematize spacetime/coordinate/parameter names
(there is a perl script in par/convert-pars.pl to convert old parameter
files to the new names)
* [from Mitica Vulcanov] many additions and fixes to
cosmological solutions and Schwarzschild-Lemaitre
* fix stress-energy tensor computations so they work -- before they were
all disabled in CVS (INCLUDES lines were commented out in interface.ccl)
due to requiring excessive friendship with evolution thorns
and/or public parameters; new code copies parameters to restricted
grid scalars, which Cactus automagically "pushes" to friends
* added some more tests to testsuite, though these don't yet work fully
Additional internal changes:
* rename many Fortran subroutines (and a few C ones too)
so their names start with the thorn name
to reduce the chances of name collisions with other thorns
* move all metrics to subdirectory so the main source directory isn't
so cluttered
* move two files containing subroutines which were never called
(they didn't belong in this thorn, but somehow got into cvs by accident)
into new archive/ directory
* some (small) improvements in efficiency -- the exact_model parameter
is now decoded from a keyword (string) to an integer once at INITIAL,
and that integer tested by the stress-energy tensor code,
rather than requiring a separate series of string tests at each grid
point (!) like the old stress-energy tensor code did
Modified Files:
ParamCheck.c added a check to make sure we don't try
to set the shift if it doesn't have storage
Startup.c
make.code.defn
slice_data.F
slice_evolve.F
slice_initialize.F
Added Files:
Bona_Masso_data.F moved from old exactdata.F
blended_boundary.F moved from old exactblendbound.F
boundary.F moved from old exactboundary.F
decode_pars.F new file to decode exact_model into integer,
copy parameters to grid scalars for Calc_Tmunu
code
gauge.F moved from old exactgauge.F
initialize.F moved from old exactinitialize.F
linear_extrap_one_bndry.F moved from old linextraponebound.F
metric.F moved from old exactmetric.F
xyz_blended_boundary.F moved from old exactcartblendbound.F
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@101 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'src/boundary.F')
-rw-r--r-- | src/boundary.F | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/boundary.F b/src/boundary.F new file mode 100644 index 0000000..1862e43 --- /dev/null +++ b/src/boundary.F @@ -0,0 +1,125 @@ +C $Header$ + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Arguments.h" + + subroutine Exact__boundary(CCTK_ARGUMENTS) + + implicit none + + DECLARE_CCTK_ARGUMENTS + + integer i,j,k + integer nx,ny,nz + + CCTK_REAL tplusone + CCTK_REAL + $ dxgxxjunk, dxgyyjunk, dxgzzjunk, + $ dxgxyjunk, dxgyzjunk, dxgxzjunk, + $ dygxxjunk, dygyyjunk, dygzzjunk, + $ dygxyjunk, dygyzjunk, dygxzjunk, + $ dzgxxjunk, dzgyyjunk, dzgzzjunk, + $ dzgxyjunk, dzgyzjunk, dzgxzjunk, + $ axjunk, ayjunk, azjunk, + $ bxxjunk, bxyjunk, bxzjunk, + $ byxjunk, byyjunk, byzjunk, + $ bzxjunk, bzyjunk, bzzjunk + +C Grid parameters. + + nx = cctk_lsh(1) + ny = cctk_lsh(2) + nz = cctk_lsh(3) + +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. + +c Set t = time + dt. This is necessary here because by the time +c we reach this point the geometry has been evolved one time step +c but the variable `time' still hasn't been updated. + + tplusone = cctk_time + cctk_delta_time + +C Note we also always set the lapse and shift at the boundaries at +C time t+1. This is to provide boundary conditions for testing +C elliptic gauge conditions. If they are not used, they will be +C overwritten by Exact__gauge. + +#define EXACTDATAPOINT \ + call Exact__Bona_Masso_data( \ + decoded_exact_model, \ + x(i,j,k), y(i,j,k), z(i,j,k), tplusone, \ + gxx(i,j,k), gyy(i,j,k), gzz(i,j,k), \ + 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), \ + dxgxxjunk, dxgyyjunk, dxgzzjunk, \ + dxgxyjunk, dxgyzjunk, dxgxzjunk, \ + dygxxjunk, dygyyjunk, dygzzjunk, \ + dygxyjunk, dygyzjunk, dygxzjunk, \ + dzgxxjunk, dzgyyjunk, dzgzzjunk, \ + dzgxyjunk, dzgyzjunk, dzgxzjunk, \ + alp(i,j,k), axjunk, ayjunk, azjunk, \ + betax(i,j,k), betay(i,j,k), betaz(i,j,k), \ + bxxjunk, bxyjunk, bxzjunk, \ + byxjunk, byyjunk, byzjunk, \ + bzxjunk, bzyjunk, bzzjunk) + + if (cctk_bbox(1) .eq. 1) then + i=1 + do j=1,ny + do k=1,nz + EXACTDATAPOINT + end do + end do + end if + + if (cctk_bbox(2) .eq. 1) then + i=nx + do j=1,ny + do k=1,nz + EXACTDATAPOINT + end do + end do + end if + + if (cctk_bbox(3) .eq. 1) then + j=1 + do i=1,nx + do k=1,nz + EXACTDATAPOINT + end do + end do + end if + + if (cctk_bbox(4) .eq. 1) then + j=ny + do i=1,nx + do k=1,nz + EXACTDATAPOINT + end do + end do + end if + + if (cctk_bbox(5) .eq. 1) then + k=1 + do j=1,ny + do i=1,nx + EXACTDATAPOINT + end do + end do + end if + + if (cctk_bbox(6) .eq. 1) then + k=nz + do j=1,ny + do i=1,nx + EXACTDATAPOINT + end do + end do + end if + + return + end |