Skip to content

Commit 39dac2e

Browse files
authored
Merge pull request #1032 from ExtremeFLOW/release/0.7
NEKO v0.7.0
2 parents 9c3f204 + d78fe9a commit 39dac2e

File tree

395 files changed

+27305
-6791
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

395 files changed

+27305
-6791
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
*.f90.in linguist-language=fortran
33
*.F90.in linguist-language=fortran
44
*.hip linguist-language=C++
5+
*.case linguist-language=json
56

.github/workflows/develop.yml

Lines changed: 171 additions & 90 deletions
Large diffs are not rendered by default.

.github/workflows/documentation.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ jobs:
1515
run: |
1616
sudo apt-get update && sudo apt-get install -y git openmpi-bin libopenmpi-dev autoconf automake autotools-dev libopenblas-dev make git m4 python3 doxygen fonts-freefont-ttf graphviz
1717
git clone https://github.com/ExtremeFLOW/doxygen-awesome-css doc/doxygen-awesome-css
18+
git clone --depth 1 https://github.com/ExtremeFLOW/json-fortran/
19+
cd json-fortran
20+
mkdir build && cd build
21+
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/pkg/json-fortran -DUSE_GNU_INSTALL_CONVENTION=ON ..
22+
make -j$(nproc) && make install && cd ../../
23+
echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${HOME}/pkg/json-fortran/lib/pkgconfig/" >> $GITHUB_ENV
24+
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HOME}/pkg/json-fortran/lib/" >> $GITHUB_ENV
1825
- name: Doxygen
1926
run: |
2027
./regen.sh
@@ -27,7 +34,9 @@ jobs:
2734
with:
2835
github_token: ${{ secrets.GITHUB_TOKEN }}
2936
publish_dir: ./doc/html/
30-
enable_jekyll: false
3137
allow_empty_commit: false
32-
force_orphan: true
38+
force_orphan: false
3339
publish_branch: gh-pages
40+
destination_dir: docs
41+
keep_files: false
42+
enable_jekyll: true

.github/workflows/main.yml

Lines changed: 189 additions & 100 deletions
Large diffs are not rendered by default.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ examples/*/*0.f0*
4141
contrib/average_field_in_space
4242
contrib/average_fields_in_time
4343
contrib/postprocess_fluid_stats
44+
*.chkp
45+
*.lst
4446

4547

4648

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ git clone https://github.com/ExtremeFLOW/neko
1212
```
1313

1414
## Building the project
15-
To build the project you will need: A Fortran compiler supporting the Fortran-08 standard, a working MPI installation and BLAS/lapack.
16-
We use automake to build the project. These instructions should work in general, but as the project is quickly developing, things might change.
15+
To build the project you will need: A Fortran compiler supporting the Fortran-08 standard, a working MPI installation, JSON-Fortran, and BLAS/lapack. Optional dependencies are gslib and ParMETIS. We use automake to build the project. These instructions should work in general, but as the project is quickly developing, things might change.
1716

1817
```bash
1918
cd neko
2019
./regen.sh
2120
./configure --prefix=/path/to/neko_install --with-pfunit=/path/to/pFUnit/installed/PFUNIT-VERSION
2221
make install
2322
```
23+
24+
More detailed installation instructions can be found in the documentation.
25+
2426
## Running examples
2527
After the project has been built
2628

@@ -37,7 +39,7 @@ make check
3739
```
3840

3941
## Documentation
40-
Documentation for Neko is available at https://extremeflow.github.io/neko/.
42+
Documentation for Neko is available at https://neko.cfd/docs.
4143

4244
To generate the documentation, you need to have both doxygen and dot (part of the Graphviz package) installed (they will be picked up by configure). Once installed, you should be able to generate the documentation with
4345
```bash
@@ -49,9 +51,10 @@ make html
4951
* Karp, M., Podobas, A., Kenter, T., Jansson, N., Plessl, C., Schlatter, P. and Markidis, S., 2022. *A high-fidelity flow solver for unstructured meshes on field-programmable gate arrays: Design, evaluation, and future challenges*. In proc. HPCAsia 2022.
5052
* Karp, M., Jansson, N., Podobas, A., Schlatter, P., and Markidis, S., 2022. *Reducing Communication in the Conjugate Gradient Method: A Case Study on High-Order Finite Elements*. In proc. PASC 2022.
5153
* Karp, M., Massaro, D., Jansson, N., Hart, A., Wahlgren, J., Schlatter, P., and Markidis, S., 2022. *Large-Scale Direct Numerical Simulations of Turbulence Using GPUs and Modern Fortran*. arXiv preprint arXiv:2207:07098.
54+
* Jansson, N., Karp, M., Perez, A., Mukha, T., Ju, Y., Liu, J., Páll, S., Laure, E., Weinkauf, T., Schumacher, J., Schlatter, P., Markidis, S., 2023. *Exploring the Ultimate Regime of Turbulent Rayleigh–Bénard Convection Through Unprecedented Spectral-Element Simulations*. SC '23: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis.
5255

5356
## Acknowledgments
5457
The development of Neko was supported by the European Commission Horizon 2020 project grant *EPiGRAM-HS: Exascale Programming Models for Heterogeneous Systems* (grant reference 801039), the Swedish Research Council project grant *Efficient Algorithms for Exascale Computational Fluid Dynamics* (grant reference 2019-04723) and the SeRC Exascale Simulation Software Initiative (SESSI). The Neko logo was designed by Robert Hansen Jagrelius.
5558

5659

57-
[<img src="https://github.com/zulip/zulip/blob/main/static/images/logo/zulip-icon-128x128.png" width="32"/>](https://zulip.com) Sponsored by Zulip, an open-source modern team chat app designed to keep both live and asynchronous conversations organized.
60+
[<img src="https://raw.githubusercontent.com/zulip/zulip/143baa42432cde9f288bd202336ef2b11172f6e4/static/images/logo/zulip-icon-128x128.png" width="32"/>](https://zulip.com) Sponsored by Zulip, an open-source modern team chat app designed to keep both live and asynchronous conversations organized.

bench/ax/driver.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ program axbench
3232
call nmsh_file%read(msh)
3333

3434
call space_init(Xh, GLL, lx, lx, lx)
35-
call field_init(w, msh, Xh, "w")
35+
call w%init(msh, Xh, "w")
3636

3737
allocate(g(6, Xh%lx, Xh%ly, Xh%lz, msh%nelv))
3838
call setup_g(g, Xh%wx, Xh%lx, Xh%ly, Xh%lz, msh%nelv)
@@ -58,8 +58,8 @@ program axbench
5858

5959
deallocate(u,ur,us,ut,wk)
6060
call space_free(Xh)
61-
call field_free(w)
62-
call mesh_free(msh)
61+
call w%free()
62+
call msh%free()
6363

6464
call neko_finalize
6565

bench/gs/driver.f90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ program gsbench
3434

3535
nmsh_file = file_t(fname)
3636
call nmsh_file%read(msh)
37-
call mesh_generate_conn(msh)
37+
call msh%generate_conn()
3838

39-
call space_init(Xh, GLL, lx, lx, lx)
39+
call Xh%init(GLL, lx, lx, lx)
4040

4141
dm = dofmap_t(msh, Xh)
42-
call gs_init(gs_h, dm)
42+
call gs_h%init(dm)
4343

4444
n = Xh%lx * Xh%ly * Xh%lz * msh%nelv
4545

@@ -50,7 +50,7 @@ program gsbench
5050

5151
! warmup
5252
do i = 1, niter
53-
call gs_op(gs_h, u, n, GS_OP_ADD)
53+
call gs_h%op(u, n, GS_OP_ADD)
5454
call device_sync()
5555
end do
5656

@@ -60,7 +60,7 @@ program gsbench
6060

6161
do i = 1, niter
6262
t(i) = MPI_Wtime()
63-
call gs_op(gs_h, u, n, GS_OP_ADD)
63+
call gs_h%op(u, n, GS_OP_ADD)
6464
call device_sync()
6565
t(i) = MPI_Wtime() - t(i)
6666
end do
@@ -82,8 +82,8 @@ program gsbench
8282
stop
8383

8484
deallocate(u)
85-
call space_free(Xh)
86-
call mesh_free(msh)
85+
call Xh%free()
86+
call msh%free()
8787

8888
call neko_finalize
8989

bench/tgv32/extract.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
# Extract time and enstrophy from neko output on stdin
3+
# Extract time and enstrophy from neko output from argument $1
44

55
echo "# Time Enstrophy"
6-
grep -a Enstrophy | cut -d" " -f3,8
6+
awk '/enst:/ {print($3, $NF)}' $1

bench/tgv32/tgv.case

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,47 @@
1-
&NEKO_CASE
2-
mesh_file= '32768.nmsh'
3-
fluid_scheme='pnpn'
4-
lx = 8
5-
source_term = 'noforce'
6-
initial_condition = 'user'
7-
/
8-
&NEKO_PARAMETERS
9-
dt = 1d-3
10-
T_end = 20
11-
nsamples = 2
12-
rho = 1
13-
Re = 1600
14-
abstol_vel = 1d-9
15-
abstol_prs = 1d-9
16-
pc_vel = 'jacobi'
17-
pc_prs = 'hsmg'
18-
proj_prs_dim = 20
19-
/
1+
{
2+
"version": 1.0,
3+
"case":
4+
{
5+
"mesh_file": "32768.nmsh",
6+
"output_boundary": false,
7+
"output_checkpoints": false,
8+
"output_at_end": false,
9+
"end_time": 20.0,
10+
"timestep": 1e-3,
11+
"numerics": {
12+
"time_order": 3,
13+
"polynomial_order": 7,
14+
"dealias": true
15+
},
16+
"fluid": {
17+
"scheme": "pnpn",
18+
"Re": 1600,
19+
"initial_condition": {
20+
"type": "user"
21+
},
22+
"velocity_solver": {
23+
"type": "cg",
24+
"preconditioner": "jacobi",
25+
"projection_space_size": 0,
26+
"absolute_tolerance": 1e-9,
27+
"max_iterations": 800
28+
},
29+
"pressure_solver": {
30+
"type": "gmres",
31+
"preconditioner": "hsmg",
32+
"projection_space_size": 20,
33+
"absolute_tolerance": 1e-9,
34+
"max_iterations": 800
35+
},
36+
"output_control": "simulationtime",
37+
"output_value": 10
38+
},
39+
"simulation_components":
40+
[
41+
{
42+
"type": "vorticity",
43+
"compute_control": "tsteps",
44+
"compute_value": 50}
45+
]
46+
}
47+
}

0 commit comments

Comments
 (0)