aboutsummaryrefslogtreecommitdiff
path: root/src/xyz_blended_boundary.F
diff options
context:
space:
mode:
authorjthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87>2002-11-17 14:55:50 +0000
committerjthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87>2002-11-17 14:55:50 +0000
commitac099068da91d9528088af849caa7aa2e6e1758a (patch)
treef8837bb58d475eb0492f4a6a604a0d51bba94423 /src/xyz_blended_boundary.F
parentd72eb352c6182603bde73125f71c4313f22cea28 (diff)
Modified Files:
make.code.defn Added Files: Bona_Masso_data.F77 blended_boundary.F77 boundary.F77 decode_pars.F77 gauge.F77 initialize.F77 metric.F77 xyz_blended_boundary.F77 Removed Files: Bona_Masso_data.F blended_boundary.F boundary.F decode_pars.F gauge.F initialize.F metric.F xyz_blended_boundary.F Rename files which really are Fortran 77 from foo.F (= Cactus Fortran 90 fixed form) to foo.F77 (= Fortran 77) This means they're now compiled with a Fortran 77 compiler. This should make no difference to the semantics (they were already Fortran 77 code), but makes it easier to compile this thorn on platforms which have a Fortran 77 compiler but no Fortran 90 compiler. Also small bugfix: blended_boundary.F --> .F77 xyz_blended_boundary.F --> .F77 * change declaration of ierr from CCTK_REAL --> integer git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@135 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'src/xyz_blended_boundary.F')
-rw-r--r--src/xyz_blended_boundary.F210
1 files changed, 0 insertions, 210 deletions
diff --git a/src/xyz_blended_boundary.F b/src/xyz_blended_boundary.F
deleted file mode 100644
index d596e79..0000000
--- a/src/xyz_blended_boundary.F
+++ /dev/null
@@ -1,210 +0,0 @@
-C $Header$
-
-#include "cctk.h"
-#include "cctk_Parameters.h"
-#include "cctk_Arguments.h"
-
- subroutine Exact__xyz_blended_boundary(CCTK_ARGUMENTS)
-
- implicit none
-
- DECLARE_CCTK_ARGUMENTS
- DECLARE_CCTK_PARAMETERS
- DECLARE_CCTK_FUNCTIONS
-
- logical doKij, doGij, doDs, doVs, doLapse, doShift
-
- integer i,j,k
- integer nx,ny,nz
- integer ninterps
-
- CCTK_REAL xblend, yblend, zblend
- CCTK_REAL xmin, xmax, ymin, ymax, zmin, zmax
- CCTK_REAL xfrac, yfrac, zfrac, onemxfrac, onemyfrac, onemzfrac
- CCTK_REAL oonints
- CCTK_REAL sfrac, onemsfrac
- CCTK_REAL gxxe, gyye, gzze, gxye, gyze, gxze
- CCTK_REAL kxxe, kyye, kzze, kxye, kyze, kxze
- CCTK_REAL dxgxxe, dxgyye, dxgzze, dxgxye, dxgyze, dxgxze
- CCTK_REAL dygxxe, dygyye, dygzze, dygxye, dygyze, dygxze
- CCTK_REAL dzgxxe, dzgyye, dzgzze, dzgxye, dzgyze, dzgxze
- CCTK_REAL alpe, axe, aye, aze
- CCTK_REAL betaxe,betaye,betaze
- 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 :: dx,dy,dz,time,ierr
-
-C Grid parameters.
-
- nx = cctk_lsh(1)
- ny = cctk_lsh(2)
- nz = cctk_lsh(3)
-
- dx = cctk_delta_space(1)
- dy = cctk_delta_space(2)
- dz = cctk_delta_space(3)
-
- time = cctk_time
-
-C Other parameters.
-
- doKij = (exblend_Ks.eq.1)
- doGij = (exblend_gs.eq.1)
-
- doLapse = ((exblend_gauge.eq.1).and.
- $ (CCTK_Equals(lapse_evolution_method,"exact").ne.0))
- doShift = ((exblend_gauge.eq.1).and.
- $ (CCTK_Equals(shift_evolution_method,"exact").ne.0))
-
- if (exblend_width.lt.0) then
- xblend = - exblend_width*dx
- yblend = - exblend_width*dy
- zblend = - exblend_width*dz
- else
- xblend = exblend_width
- yblend = exblend_width
- zblend = exblend_width
- endif
-
- call CCTK_CoordRange(ierr,cctkGH,xmin,xmax,-1,"x","cart3d")
- call CCTK_CoordRange(ierr,cctkGH,ymin,ymax,-1,"y","cart3d")
- call CCTK_CoordRange(ierr,cctkGH,zmin,zmax,-1,"z","cart3d")
-
- do k=1,nz
- do j=1,ny
- do i=1,nx
-
-c We only do anything if in the blending region
-
- if (x(i,j,k) .ge. xmax - xblend .or.
- $ x(i,j,k) .le. xmin + xblend .or.
- $ y(i,j,k) .ge. ymax - yblend .or.
- $ y(i,j,k) .le. ymin + yblend .or.
- $ z(i,j,k) .ge. zmax - zblend .or.
- $ z(i,j,k) .le. zmin + zblend) then
-
- 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,
- $ dxgxxe, dxgyye, dxgzze, dxgxye, dxgyze, dxgxze,
- $ dygxxe, dygyye, dygzze, dygxye, dygyze, dygxze,
- $ dzgxxe, dzgyye, dzgzze, dzgxye, dzgyze, dzgxze,
- $ alpe, axe, aye, aze, betaxe, betaye, betaze,
- $ bxxe, bxye, bxze, byxe,
- $ byye, byze, bzxe, bzye, bzze)
-
-c This sucks, but we want the exact vs so we can blend them also.
-
- det = -(gxze**2*gyye)
- & + 2.d0*gxye*gxze*gyze
- & - gxxe*gyze**2
- & - gxye**2*gzze
- & + gxxe*gyye*gzze
-
- uxx=(-gyze**2 + gyye*gzze)/det
- uxy=(gxze*gyze - gxye*gzze)/det
- uyy=(-gxze**2 + gxxe*gzze)/det
- uxz=(-gxze*gyye + gxye*gyze)/det
- uyz=(gxye*gxze - gxxe*gyze)/det
- uzz=(-gxye**2 + gxxe*gyye)/det
-
-c OK so 6 blending cases. If frac = 1 we get all exact
-
- ninterps = 0
-
- xfrac = 0.0D0
- onemxfrac = 0.0D0
- yfrac = 0.0D0
- onemyfrac = 0.0D0
- zfrac = 0.0D0
- onemzfrac = 0.0D0
-
- if (x(i,j,k) .le. xmin + xblend) then
- xfrac = 1.0D0 - (x(i,j,k)-xmin) / xblend
- onemxfrac = 1.0D0 - xfrac
- ninterps = ninterps + 1
- endif
-
- if (x(i,j,k) .ge. xmax - xblend) then
- xfrac = 1.0D0 - (xmax - x(i,j,k)) / xblend
- onemxfrac = 1.0D0 - xfrac
- ninterps = ninterps + 1
- endif
-
- if (y(i,j,k) .le. ymin + yblend) then
- yfrac = 1.0D0 - (y(i,j,k)-ymin) / yblend
- onemyfrac = 1.0D0 - yfrac
- ninterps = ninterps + 1
- endif
-
- if (y(i,j,k) .ge. ymax - yblend) then
- yfrac = 1.0D0 - (ymax - y(i,j,k)) / yblend
- onemyfrac = 1.0D0 - yfrac
- ninterps = ninterps + 1
- endif
-
- if (z(i,j,k) .le. zmin + zblend) then
- zfrac = 1.0D0 - (z(i,j,k)-zmin) / zblend
- onemzfrac = 1.0D0 - zfrac
- ninterps = ninterps + 1
- endif
-
- if (z(i,j,k) .ge. zmax - zblend) then
- zfrac = 1.0D0 - (zmax - z(i,j,k)) / zblend
- onemzfrac = 1.0D0 - zfrac
- ninterps = ninterps + 1
- endif
-
- oonints = 1.0D0 / ninterps
-
- if (ninterps .eq. 0 .or. ninterps .gt. 3) then
- print *,"NINTERPS error", ninterps
- STOP
- endif
-
- sfrac = (xfrac + yfrac + zfrac) * oonints
- onemsfrac = 1.0D0 - sfrac
-
-c Once again some c-preprocessor tricks based on the whole fortran
-c space thing...
-
-#define INTPOINT(f,v) f(i,j,k) = sfrac * v + onemsfrac * f(i,j,k)
-#define intone(f) INTPOINT(f, f e)
-#define int_grp(p) \
- intone(p xx) &&\
- intone(p xy) &&\
- intone(p xz) &&\
- intone(p yy) &&\
- intone(p yz) &&\
- intone(p zz)
-
- if (doGij) then
- int_grp(g)
- endif
-
- if (doKij) then
- int_grp(k)
- endif
-
- if (doLapse) then
- intone(alp)
- endif
-
- if (doShift.and.(shift_state.ne.0)) then
- intone(betax)
- intone(betay)
- intone(betaz)
- endif
-
- endif ! r > rinner
-
- enddo
- enddo
- enddo
-
- return
- end