aboutsummaryrefslogtreecommitdiff
path: root/src/boundary.F
diff options
context:
space:
mode:
authorjthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87>2002-06-16 18:42:41 +0000
committerjthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87>2002-06-16 18:42:41 +0000
commitf7216a27e1388f70b04fe68c2bd43449d668f457 (patch)
tree0c7673b21efc4745fd16afb6b320c63489eb3150 /src/boundary.F
parentcf2fb9a92562b9471403b8205ce75d975de144d4 (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.F125
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