forked from moebiusband/NuSiF-Solver
BasicSolver
2D-mpi
2D-mpi-v1
2D-mpi-v2
2D-mpi-v3
2D-seq
2D-seq-pt
3D-mpi
3D-mpi-io
src
Makefile
README.md
canal.par
config.mk
dcavity.par
include_CLANG.mk
include_GCC.mk
include_ICC.mk
3D-seq
README.md
PoissonSolver
.clang-format
.clang-tidy
.clangd
.gitignore
LICENSE
README.md
79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
# C source skeleton
|
|
|
|
## Build
|
|
|
|
1. Configure the toolchain and additional options in `config.mk`:
|
|
```
|
|
# Supported: GCC, CLANG, ICC
|
|
TAG ?= GCC
|
|
ENABLE_OPENMP ?= false
|
|
|
|
OPTIONS += -DARRAY_ALIGNMENT=64
|
|
#OPTIONS += -DVERBOSE
|
|
#OPTIONS += -DVERBOSE_AFFINITY
|
|
#OPTIONS += -DVERBOSE_DATASIZE
|
|
#OPTIONS += -DVERBOSE_TIMER
|
|
```
|
|
|
|
The verbosity options enable detailed output about solver, affinity settings, allocation sizes and timer resolution.
|
|
For debugging you may want to set the VERBOSE option:
|
|
```
|
|
# Supported: GCC, CLANG, ICC
|
|
TAG ?= GCC
|
|
ENABLE_OPENMP ?= false
|
|
|
|
OPTIONS += -DARRAY_ALIGNMENT=64
|
|
OPTIONS += -DVERBOSE
|
|
#OPTIONS += -DVERBOSE_AFFINITY
|
|
#OPTIONS += -DVERBOSE_DATASIZE
|
|
#OPTIONS += -DVERBOSE_TIMER
|
|
`
|
|
|
|
2. Build with:
|
|
```
|
|
make
|
|
```
|
|
|
|
You can build multiple toolchains in the same directory, but notice that the Makefile is only acting on the one currently set.
|
|
Intermediate build results are located in the `<TOOLCHAIN>` directory.
|
|
|
|
To output the executed commands use:
|
|
```
|
|
make Q=
|
|
```
|
|
|
|
3. Clean up with:
|
|
```
|
|
make clean
|
|
```
|
|
to clean intermediate build results.
|
|
|
|
```
|
|
make distclean
|
|
```
|
|
to clean intermediate build results and binary.
|
|
|
|
4. (Optional) Generate assembler:
|
|
```
|
|
make asm
|
|
```
|
|
The assembler files will also be located in the `<TOOLCHAIN>` directory.
|
|
|
|
## Usage
|
|
|
|
You have to provide a parameter file describing the problem you want to solve:
|
|
```
|
|
./exe-CLANG dcavity.par
|
|
```
|
|
|
|
Examples are given in in dcavity (a lid driven cavity test case) and canal (simulating a empty canal).
|
|
|
|
You can plot the resulting velocity and pressure fields using gnuplot:
|
|
```
|
|
gnuplot vector.plot
|
|
```
|
|
and for the pressure:
|
|
```
|
|
gnuplot surface.plot
|
|
```
|