 \documentstyle[12pt]{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% P A G E   L A Y O U T . . . 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textwidth6.25in
\textheight8.5in
\evensidemargin0in
\oddsidemargin0in
\topmargin-.5in
\parindent0em
\parskip=12pt
\def\baselinestretch{1.2}
\pagestyle{empty}
\input{psfig}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\landscape
%\special{landscape}
\begin{document}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% F O N T S . . .   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% M A C R O S . . . 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\BEGINSLIDE}[1]{\vspace*{#1}}
\newcommand{\ENDSLIDE}[1]{\vspace*{#1}\pagebreak}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
{\LARGE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% B E G I N    S L I D E S
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{ Texas Evolution code(T2) development  }
\vskip -3in
\begin{center}
   Randy~Correll \\
   Mijan~Huq \\
   Scott~Klasky \\
   Richard~Matzner \\
\today
\end{center}
{\large
\begin{enumerate}
\item Equations used in code. 
\item Modules in DAGH and HPF.
\item Derivative routines.
\item Outer boundary. 
\item Gauge conditions.
\item Future Plans. 
\end{enumerate}
}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Equations used in code (1)}
The evolution equations that the {\tt TCODE} solves are as follows:
\begin{eqnarray}
\label{evolg.eqn}
\partial_t g_{ij} & = & - 2 \alpha K_{ij} + D_i \beta_j + D_j \beta_i \\
\label{evolk.eqn}
\partial_t K^i_j  & = & {\cal L}_{\beta} K^i_j - D^i D_j \alpha +
\alpha \left( R^i_j + K K^i_j \right)
\label{evol.eqn}
\end{eqnarray}
where $g_{ij}$ is the 3-metric,

$K^i_j$ is the extrinsic curvature,
$D_i$ is the covariant derivative compatible with $g_{ij}$,

 $\alpha$ is the lapse function, $\beta^i$ is the shift vector 

and ${\cal L}_{\beta}$ is the Lie
derivative along the vector field $\beta$. 

${\cal L}_{\beta} K^i_j$ is given
by the following equation:
\begin{equation}
{\cal L}_{\beta} K^i_j = \beta^k D_k K^i_j + \beta^i D_k K^k_j -
\beta_j g^{kl} D_l K^i_k
\label{lie.term}
\end{equation}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Variable Storage}
{\large
\begin{tabular}{ll}
\hline
Grid Function & Number of independent components \\ \hline
$g_{ij}$  & $6\times 2$ independent components(two = n+1 timestep) \\
$g^{ij}$  & 6 independent components(required for various stages) \\
$K^i_j$   & $9\times 2$ components (multiply by two for n+1 timestep) \\
$\Gamma^i_{jk}$ & 18 components (stored instead of $g_{ij,k}$) \\
$R_{ij}$  & 6 components (Raised when needed in eqn.~(\ref{evolk.eqn})) \\
$\alpha$  & scalar function \\
$\beta^i$ & 3 components ($\beta_i$ can be obtained using $g_{ij}$) \\
\hline
\end{tabular}
}
Hence the lower limit on required variables for the solution to the evolution
is $64$ grid variables.
Plans are in the work for writing the equations using
$K_{ij}$ thus eliminating 6 variables.
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Modules for the connection coefficients}
The calculation of the connection coefficients can be broken up into several
stages. This obviates the necessity for storing the first derivatives of the
3-metric which saves us $18$ grid functions.

The connection coefficients are given by
\begin{equation}
\Gamma^i_{jk} = \frac{1}{2} g^{il} \left( g_{lj,k} + g_{lk,j} - g_{jk,l}
\right)
\label{connect.1}
\end{equation}

The calculation can be broken up into three separate sets using $9$ temporary
variables.

There are 3 steps:
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\vskip -0.5in
\section{3 Steps for Connection coefficients}
{\large
For the first term in eqn.~(\ref{connect.1})
\begin{eqnarray}
\Gamma^i_{jk} & = & \frac{1}{2} g^{il} g_{lj,k} \nonumber \\
& = & \frac{1}{2} \left(g^{i1} g_{1j,k} + g^{i2} g_{2j,k} + g^{i3} g_{3j,k}
\right) \label{connect.2}\\
\end{eqnarray}
We call these parts C1-C3.
For the second term in eqn.~(\ref{connect.1})
\begin{eqnarray}
\Gamma^i_{jk} & = & \Gamma^i_{jk} + \frac{1}{2} g^{il} g_{lk,j} \nonumber \\
& = & \Gamma^i_{jk} + \frac{1}{2} \left(g^{i1} g_{1k,j} + g^{i2} g_{2k,j}
+ g^{i3} g_{3k,j} \right) \label{connect.3}\\
\end{eqnarray}
We call these parts C4-C6.
For the third term in eqn.~(\ref{connect.1})
\begin{eqnarray}
\Gamma^i_{jk} & = & \Gamma^i_{jk} - \frac{1}{2} g^{il} g_{jk,l} \nonumber \\
& = & \Gamma^i_{jk} - \frac{1}{2} \left(g^{i1} g_{jk,1} + g^{i2} g_{jk,2}
+ g^{i3} g_{jk,3} \right) \label{connect.4}
\end{eqnarray}
We call these parts C7-C9.
}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
{\large
\section{Modules for part C1}
\begin{verbatim}
      call diff(nx,ny,nz,h,g11,t1,'x',m,d,nl)
      call diff(nx,ny,nz,h,g11,t2,'y',m,d,nl)
      call diff(nx,ny,nz,h,g11,t3,'z',m,d,nl)
      call diff(nx,ny,nz,h,g12,t4,'x',m,d,nl)
      call diff(nx,ny,nz,h,g12,t5,'y',m,d,nl)
      call diff(nx,ny,nz,h,g12,t6,'z',m,d,nl)
      call diff(nx,ny,nz,h,g13,t7,'x',m,d,nl)
      call diff(nx,ny,nz,h,g13,t8,'y',m,d,nl)
      call diff(nx,ny,nz,h,g13,t9,'z',m,d,nl)
      call connect1(g11, g12, g13, g22, g23, g33,
     *                gup11, gup12, gup13, gup22, gup23, gup33,
     *                c111, c112, c113, c122, c123, c133,
     *                c211, c212, c213, c222, c223, c233,
     *                c311, c312, c313, c322, c323, c333,
     *                t1,   t2  ,   t3,   t4,   t5,   t6,
     *                t7,   t8  ,   t9, h, nx , ny , nz)
                           .
                           .
                           .
      c(i,j,k) = c(i,j,k) + 0.5d0*gup(i,j) * t(j,k)
\end{verbatim}
}
Similar looking modules for other parts.
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section {Ricci tensor}
The calculation of the Ricci tensor can be similarly broken up into several
segments with the use of $9$ temporary grid functions once more. The Ricci
tensor is given by
\begin{equation}
R_{ij} = \Gamma^a_{ij,a} - \Gamma^a_{ia,j} +
\Gamma^a_{ab} \Gamma^b_{ij} - \Gamma^a_{bj} \Gamma^b_{ia}
\label{ricci.1}
\end{equation}
The evaluation of the Ricci tensor
is broken as follows:
\begin{eqnarray}
R_{ij} & = & \Gamma^a_{ij,a} \nonumber \\
& = & \Gamma^1_{ij,1} + \Gamma^2_{ij,2} + \Gamma^3_{ij,3}
\label{ricci.2}
\end{eqnarray}
\begin{eqnarray}
R_{ij} & = & R_{ij} - \Gamma^a_{ia,j} \nonumber \\
& = & R_{ij} - \left(\Gamma^1_{i1,j} + \Gamma^2_{i2,j} + \Gamma^3_{i3,j}
\right)
\label{ricci.3}
\end{eqnarray}
\begin{eqnarray}
R_{ij} & = & R_{ij} + \Gamma^a_{ab} \Gamma^b_{ij} - \Gamma^a_{bj} \Gamma^b_{ia}
\label{ricci.4}
\end{eqnarray}
where in eqns.~(\ref{ricci.1},\ref{ricci.2}) terms like $\Gamma^1_{ij,1}$ and
$ \Gamma^1_{i1,j}$ are calculated using temporary arrays.
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section {Ricci tensor parts 1 and 7}
{\large
\begin{verbatim}
        call ricci1(c111, c112, c113, c122, c123, c133,
     *              c211, c212, c213, c222, c223, c233,
     *              c311, c312, c313, c322, c323, c333,
     *              t1, t2, t3, t4, t5, t6, t7, t8, t9,
     *              r11, r12, r13, r22, r23, r33,
     *              m,d,nl, h, nx, ny, nz)
        .
        .
        call ricci7(c111, c112, c113, c122, c123, c133,
     *              c211, c212, c213, c222, c223, c233,
     *              c311, c312, c313, c322, c323, c333,
     *              t1, t2, t3, t4, t5, t6, t7, t8, t9,
     *              r11, r12, r13, r22, r23, r33,
     *              m,d,nl, h, nx, ny, nz)

      return
      end
}
\end{verbatim}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.35in}
\section {Ricci tensor parts 1 and 7}
\vskip -0.5in
{\large
\begin{verbatim}
C      ricci1 contains:
      call diff(nx, ny, nz, h, c111, c111d1, 'x',m,d,nl)
      call diff(nx, ny, nz, h, c112, c112d1, 'x',m,d,nl)
      call diff(nx, ny, nz, h, c113, c113d1, 'x',m,d,nl)
      call diff(nx, ny, nz, h, c122, c122d1, 'x',m,d,nl)
      call diff(nx, ny, nz, h, c123, c123d1, 'x',m,d,nl)
      call diff(nx, ny, nz, h, c133, c133d1, 'x',m,d,nl)
      r11 = c111d1
      r12 = c112d1
      r13 = c113d1
      r22 = c122d1
      r23 = c123d1
      r33 = c133d1
C     ricci7 contains:
      FORALL (j=1:3,i=1:3,i<=j)
         r(i,j) = r(i,j) +
     .              ( c(1,1,1)+c(2,2,1)+c(3,3,1) ) * c(1,i,j) +
     .              ( c(1,1,2)+c(2,2,2)+c(3,3,2) ) * c(2,i,j) +
     .              ( c(1,1,3)+c(2,2,3)+c(3,3,3) ) * c(3,i,j)
      END FORALL
         r(i,j) = r(i,j)
     .            - (c(1,i,1) * c(1,1,j) + c(2,i,1) * c(1,2,j)
     .              +c(3,i,1) * c(1,3,j) )
     .            - (c(1,i,2) * c(2,1,j) + c(2,i,2) * c(2,2,j)
     .              +c(3,i,2) * c(2,3,j) )
     .            - (c(1,i,3) * c(3,1,j) + c(2,i,3) * c(3,2,j)
     .              +c(3,i,3) * c(3,3,j) )
\end{verbatim}
}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.0in}
\section{Evolution equation for the 3-metric}
\begin{eqnarray}
\partial_t g_{ij} & = & - 2 \alpha K_{ij} + D_i \beta_j + D_j \beta_i. 
\end{eqnarray}

The evaluation of the second and third terms is carried out by once again
using $9$ temporary grid functions. Recall that $\beta^i$, the contravariant
form of the shift, is stored. Since $g_{ij}$ is compatible with $D_i$ we can
rewrite $D_i \beta_j = g_{jk} D_i \beta^k$. Hence we are left with calculating
\begin{eqnarray}
\label{gshift.eqn}
D_i \beta_j = g_{jk} \left( \partial_i \beta^k - \Gamma^k_{il}\beta^l \right).
\end{eqnarray}

Here once again we use a $9$ grid functions to store the components of
$\partial_i \beta^k$ first and then add $\Gamma^k_{il}\beta^l$ to form
eqn.~(\ref{gshift.eqn}). Then evaluating eqn.~(\ref{evolg.eqn}) becomes a
matter of using the temporary variables for $D_i \beta_j$.

Use second order finite differencing for time derivative.
5 Modules for these routines
{\large
\begin{verbatim}
C in evolve_g1
      call diff(nx,ny,nz,h,beta1,t11,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,beta1,t12,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta1,t13,'z',ml,dl,nl)
      call diff(nx,ny,nz,h,beta2,t21,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,beta2,t22,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta2,t23,'z',ml,dl,nl)
      call diff(nx,ny,nz,h,beta3,t31,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,beta3,t32,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta3,t33,'z',ml,dl,nl)
\end{verbatim}
}
\ENDSLIDE{0.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.22in}
\section{5 Modules for evolution eqn}
\large{
\begin{verbatim}
C in evolve_g2
      FORALL (i=1:3,j=1:3)
         t(i,j) = t(i,j) +
     .              c(1,i,j) * beta(1) +
     .              c(2,i,j) * beta(2) +
     .              c(3,i,j) * beta(3)
      END FORALL
      FORALL (i=1:3,j=1:3)
         t(i,j) = t(i,1) * g(1,j) + t(i,2) * g(2,j) + t(i,3) * g(3,j)
      END FORALL
C in evolve_g3
      FORALL (j=1:3,i=1:3,i<=j)
         t(i,j) = t(i,j) + t(j,i) 
         t(j,i) = t(i,j)
      END FORALL
C in evolve_g4
      FORALL (i=1:3,j=1:3)
         t(i,j) = t(i,j) - 2.0d0*alpha(1) * ( g(1,i) * k(1,j) +
     .            g(2,i) * k(2,j) + g(3,i) * k(3,j)  )
      END FORALL
C in evolve_g5
      FORALL (j=1:3,i=1:3,i<=j)
         g(i,j,1) = 2.0d0*dt*t(i,j) + g(i,j,-1)
      END FORALL
\end{verbatim}
}
\ENDSLIDE{-1.00in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.25in}
\section{Evolution equation for $K^i_j$}
\begin{eqnarray}
\nonumber
\partial_t K^i_j  & = & {\cal L}_{\beta} K^i_j - D^i D_j \alpha +
\alpha \left( R^i_j + K K^i_j \right)
\end{eqnarray}
We break this equation up into 5 parts(5 modules)
{\large
\begin{verbatim}
C evolve_k1
      call diff(nx,ny,nz,h,alpha,temp1,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,alpha,temp2,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,alpha,temp3,'z',ml,dl,nl)
C evolve_k2
      call diff(nx,ny,nz,h,temp1,t11,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,temp1,t12,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,temp1,t13,'z',ml,dl,nl)
      call diff(nx,ny,nz,h,temp2,t22,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,temp2,t23,'z',ml,dl,nl)
      call diff(nx,ny,nz,h,temp3,t33,'z',ml,dl,nl)
      t21 = t12
      t31 = t13
      t32 = t23
      FORALL (j=1:3,i=1:3,i<=j)
         t(i,j) = t(i,j) - c(1,i,j) *dalpha(1) -
     .              c(2,i,j)*dalpha(2) - c(3,i,j) * dalpha(3)
         t(j,i) = t(i,j)
      END FORALL
c   raise the first index of t{ab}
      call rais02i1() 
      FORALL (i=1:3,j=1:3)
         t(i,j) = -t(i,j)
      END FORALL
\end{verbatim}
}
\ENDSLIDE{-1.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.25in}
\section{Evolution equation for $K^i_j$ continued}
\large{
\begin{verbatim}
! Evolve K3
*     Lie_beta(K^1_1)
      call diff(nx,ny,nz,h,k11,temp1,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,k11,temp2,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,k11,temp3,'z',ml,dl,nl)
      t11 = t11 + beta1 * temp1  + beta2 * temp2 + beta3 * temp3

      call diff(nx,ny,nz,h,beta1,temp1,'x',ml,dl,nl)
      call diff(nx,ny,nz,h,beta1,temp2,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta1,temp3,'z',ml,dl,nl)
      t11 = t11 - k11 * temp1 - k21 * temp2 - k31 * temp3

      call diff(nx,ny,nz,h,beta1,temp1,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta2,temp2,'y',ml,dl,nl)
      call diff(nx,ny,nz,h,beta3,temp3,'y',ml,dl,nl)
      t11 = t11 + k11 * temp1 + k12 * temp2 + k13 * temp3
.
C Evolve K4
      trace_k(1) = k11 + k22 + k33
      FORALL (i=1:3,j=1:3)
         t(i,j) = t(i,j) + alpha(1) *(
     .              gup(i,1) * r(1,j) + gup(i,2) * r(2,j) +
     .              gup(i,3) * r(3,j) + trace_k(1) * k(i,j) )
      END FORALL
C Evolve K5
      FORALL (i=1:3,j=1:3)
         k(i,j,1) = 2.0d0*dt*t(i,j) + k(i,j,-1)
      END FORALL
\end{verbatim}
}
\ENDSLIDE{-1.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.25in}
\section{Derivative routines, Vertex Centered}
Spatial derivative routines contain routines for Inner boundary, Outer boundary
and interior. Time derivatives, $O(h^2)$ use a 3 level leap frog scheme.
All derivative routines are second order for the first derivative in 
$x,y,z$ directions.

To handle the hole, 2 non-distributed lists are created, {\tt m(nl),d(nl)}
where {\tt m(l)} contains the {i,j,k} location of the ``hole'' points
and {\tt d(l)} contains either (1,-1,0) indicating either forward,
backwards or centered. 

The derivatives around the hole
are determined to second order.  Second derivatives, {\it for example $f_{xx}$,
are only first order accurate}. The interior second derivatives are 
second order accurate.
Routine looks as follows:
\large{
\begin{verbatim}
      subroutine diff(h,f,df,dir,m,d,nl)
      use params
      implicit none
      real*8 h
      real*8, dimension(nx,ny,nz) :: f,df
      real*8, dimension(3*nl)     :: d
      integer, dimension(3*nl)    :: m
      character dir
!HPF$ PROCESSORS PROC(nproc)
!HPF$ DISTRIBUTE f *(BLOCK,*,*) ONTO *PROC
!HPF$ ALIGN(:,:,:) WITH *f(:,:,:)         :: df
      call diff_int(h,f,df,dir)
      call diff_ob(h,f,df,dir)
      if (nl.gt.1) call diff_ib(h,f,df,dir,m,d,nl)
      return
      end
\end{verbatim}
}
\ENDSLIDE{-1.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.25in}
{\large
\begin{verbatim}
      subroutine diffx_ib(h,f,df,m,d,nl)
      use params
      implicit none
      integer nl
      real*8, dimension(nx,ny,nz) :: f,df
      real*8, dimension(3*nl)     :: d
      integer, dimension(3*nl)    :: m
      real*8 h,h2
      integer i,j,k,l

      h2 = 0.5d0 / h

      do l = 1 , nl
         i  = m(l)
         j  = m(nl+l)
         k  = m(2*nl+l)
         d1 = d(l)
         d2 = d(nl+l)
         d3 = d(2*nl+l)
         da = abs(d1)
         df(i,j,k) = h2*(d1*(-3.0d0*f(i,j,k)+4.0d0*f(i+int(d1),j,k)
     $                       -      f(i+2*int(d1),j,k)) +
     $               (1.0d0-da)*(f(i+1,j,k)-f(i-1,j,k) ) )
      end do
      return
      end
\end{verbatim}
}
\ENDSLIDE{-1.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{-1.25in}
{\large
\begin{verbatim}
      subroutine diffx_ob(h,f,df)
      use params
      implicit none
      real*8, dimension(nx,ny,nz) :: f,df
      real*8  h,h2,hi
      integer i,j,k
!HPF$ PROCESSORS PROC(nproc)
!HPF$ DISTRIBUTE f *(BLOCK,*,*) ONTO *PROC
!HPF$ ALIGN(:,:,:) WITH *f(:,:,:)         :: df
      hi = 1.0d0/h
      h2 = 0.5d0 / h
      FORALL (k=1:nz,j=1:ny)
         df(1,j,k) = h2 * ( -3.0d0*f(1,j,k)
     .             + 4.0d0*f(1+1,j,k) - f(1+2,j,k) )
         df(nx,j,k) = h2 * (  3.0d0*f(nx,j,k)
     .              - 4.0d0*f(nx-1,j,k) + f(nx-2,j,k) )
      END FORALL
      FORALL (i=2:nx-1,k=1:nz)
            df(i,1,k) = h2 *(f(i+1,1,k)-f(i-1,1,k) )
            df(i,ny,k) = h2 *(f(i+1,ny,k)-f(i-1,ny,k) )
      END FORALL
      FORALL (i=2:nx-1,j=1:ny)
            df(i,j,1) = h2 *(f(i+1,j,1)-f(i-1,j,1) )
            df(i,j,nz) = h2 *(f(i+1,j,nz)-f(i-1,j,nz) )
      END FORALL

      return
      end
\end{verbatim}
}
\ENDSLIDE{-1.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Outer boundary}
\begin{itemize}
	\item	Extrapolation conditions have been looked at: R. Correll
	\item One sided differencing conditions have been used: Correll, et. al.
	\item Outer boundary is not ``killing'' code, it's the inner boundary.
	\item Use some form of characteristic code when it becomes available 
           for outer boundary (future)
\end{itemize}
\ENDSLIDE{0.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Gauge conditions}
\begin{center}
The following gauge conditions have been imposed:
\end{center}
\begin{itemize}
	\item Geometric
	\item Algebraic (in future)
	\item Quasi-Isotropic , Geodesic slicing ( ran to about 20M)
\end{itemize}
\ENDSLIDE{0.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\BEGINSLIDE{0.0in}
\section{Future Plans} 
\begin{itemize}
\item Moving the hole on the domain, use some sort of Alcubierre and Schutz
method(implicit scheme using ADI). ( Huq \& Matzner)
\item Apparent Horizon solver written in a Data Parallel language.
(Huq, Klasky \& Matzner)
\item Causal differencing around the inner boundary. 
\item Stability of methods around the inner boundary is being looked at by
\item AMR in {\tt DAGH} and {\tt HPF} : Haupt,Huq,Klasky,Parashar
Correll
\end{itemize}
\ENDSLIDE{0.0in}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% E N D    S L I D E S
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}
\end  {document}
