Discontinuous Adaptive Galerkin (Directed Acyclic Graph) Shallow Water Equation Model
This project is a fork of the main DGSWEM project that implements both an adaptive local timestepping scheme and a task-parallel (or directed acyclic task graph) execution mode, hence the double acronym. The project was chosen to be forked completely since the end product has a completely different execution architecture, and the upstream is from a decade+ old untracked branch (DGSWEM-LTS), so merging the two now is an impossibility.
Before you begin, ensure you have the following installed:
- A Fortran compiler (e.g.,
gfortran) makebuild automation tool- An MPI implementation (e.g., OpenMPI, MPICH) for parallel execution
The project uses make for compilation. Compiler flags and library paths can be configured in cmplrflags.mk.
-
Build METIS library: The METIS partitioning library is included as a dependency.
cd metis/ make cd ..
-
Build the main project: Compile the preprocessing utilities and the main simulation code.
make
This will use the main
makefileto build the executables from the source files inprep/andsrc/.
The typical workflow involves a preprocessing step followed by the main simulation run.
-
Preprocessing: Use the tools built from the
prep/directory (e.g.,adcprep,decomp) to prepare your input mesh and data. -
Running the simulation: Execute the main program, which appears to be
adcircfrom thesrc/directory. For parallel runs, usempirun.mpirun -np <number_of_processes> ./adcirc
src/: Contains the main source code for the simulation (e.g.,adcirc.F).prep/: Contains source code for preprocessing and utility programs (e.g.,adcprep.F,decomp.F).metis/: Source code and compiled library for the METIS graph partitioning software.makefile: The main makefile for building the project.cmplrflags.mk: Makefile include for compiler flags and settings.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.