HyperCurvedWave Documentation

  Quick run instructions ( for cshrc shell ):

tar -zxf had.tar.gz
cd had
Modify .ENV_local
source .ENV_local
make
cd bin
hcw idcw
Visualize the AMR data in DataVault:
sdftodv -n phi *d4phi.sdf

  Explanation:

The HyperCurvedWave example solves the standard wave equation and includes vertex centered parallel AMR capability. It's purpose is to facilitate learning how to use HAD.

All HAD applications are a combination of three source elements: The philosophy behind this is that the user supplies boundary conditions, the right hand sides of the equations for solving, the initial data, any analysis to be performed during an evolution, and a refinement criteria ( if not using the shadow hierarchy ); the integration, derivatives, dissipation, and mesh refinement are managed by the AMR driver and HYPER. Below is a table of how the hyperCurvedWave example is set up:
Routines provided in amr, hyper, and the User-Defined code (UDC)
File name
Routine Description/Name Language amr
 "the driver" 
hyper
  "the interface" 
UDC
  "the user code" 
amr/setup List of parameters specific to amrlist         X
main.f Main routineF77         X
comm_mpi.f MPI communication and load balancingF77         X
util.fInterpolation routinesF77         X
grid.fSDF output / grid_output_sdfF77         X
main.fCheckpointing / readstateF77         X
level.fClustering algorithmF77         X
comp_amr_error.fUser defined refinement criteriaF77         X         X
grid_ell.fMultigrid residual calculationF77         X         X
hyper/setup List of parameters specific to hyperlist         X
charboundary.f90Implementation of characteristic boundariesF90         X
hyperdissipation.f90dissipation routinesF90         X
hyperfilereader.f90SDF read routinesF90         X
rk3.f90RK3 integratorF90         X
rk3tvd.f90TVD RK3 integrator for vertex centered variablesF90         X
rk3tvd_fv.f90TVD RK3 integrator for cell centered variablesF90         X
hyperboundary.f90 Boundary conditionsF90         X         X
hyperauxvars.f90 Defines auxiliary variablesF90         X         X
mask.f90 Excision routinesF90         X
derivs??_.f90 The Strand derivative routines with excision supportF90         X
hyperCurvedWave/setup List of parameters specific to hyperCurvedWavelist         X
rhs.f90 The right hand side of the wave equationF90         X
def_initial.f90 The initial data for the hyperCurvedWaveF90         X
boundary.f90 The boundary conditions for hyperCurvedWaveF90         X         X
global_auxvars.f90 Define auxiliary variablesF90         X         X
charvars.f90 The characteristic variables for hyperCurvedWaveF90         X
comp_amr_error.fUser defined refinement criteriaF77         X         X
grid_ell.fMultigrid residual calculationF77         X         X
analysis.f90Analysis to be performed after each iterationF90         X

An 'X' in multiple columns indicates an overloaded operation.

Files comp_amr_error.f and grid_ell.f are defined in hyperCurvedWave and then copied into "had/scr/amr" at compile time. Files boundary.f90 and global_auxvars.f90 are linked to hyperboundary.f90 and hyperauxvars.f90 in "had/scr/hyper" at runtime.