Skip to content

Changelog

Changelog

v0.0.8 (2026-03-04)

Full Changelog

CI/CD

  • Add CI pipeline, coverage analysis, and migrate deps to FoBiS (8de0269)

Documentation

  • Rebrand acronym, add dual-licensing, and modernize layout (4ad6927)
  • Replace feature grid with SVG for borderless GitHub rendering (4b918a7)

Miscellaneous

  • Replace HTML table with inline-block divs for borderless layout (7547677)
  • Cleaning Poisson correction z coils (b99b7a5)
  • Compute electromagnetic energy (96b21af)
  • Divergence history & coil corection (7aad79e)
  • RK & leapfrog PIC debug pt.1 (85c6991)
  • Leapfrog PIC debug pt.2 (8ad699b)

Refactoring

  • Simplify gpu data management and operator stubs (0dd0eb1)

v0.0.7 (2026-02-24)

Full Changelog

Bug fixes

  • Correct api cross-refs and fix vitepress asset bundling (3193a0f)

v0.0.6 (2026-02-24)

Full Changelog

Miscellaneous

  • Current Initial Transient edit (09cbe10)

New features

  • Add MIT license, dual-licensing docs, and rebrand ADAM acronym (c62749e)

v0.0.5 (2026-02-23)

Full Changelog

Bug fixes

  • Replace dead relative links with correct absolute paths (6d871d5)

v0.0.4 (2026-02-23)

Full Changelog

CI/CD

  • Trigger pages deploy on push to develop (8a8c6eb)

v0.0.3 (2026-02-23)

Full Changelog

CI/CD

  • Remove build and install workflows, keep docs-only pipeline (0b3fd18)

v0.0.2 (2026-02-23)

Full Changelog

Bug fixes

  • Fix github action CI, continue (698d8f1)
  • Resolve merge conflicts (c5c8dae)
  • Fix smoothing forcing (d15f229)
  • Unnamed aux variables saving (ffcc9e3)
  • Correct FD/FV space operators coefficients (55abd50)
  • Fix periodic BC and test FV centered space operator (78fb287)
  • Fix FD operator, clean coils IO, improve IO adam lib (c7074f4)
  • Fix FDV operators (97c0200)
  • Make consistent PRISM initialization with FDV orders and half stencil for each derivative (fc444ea)
  • Fix .f90 suffix to upper case to enable preprocess automatically (f957ccb)
  • Resolve prism FNL GPU kernel illegal address errors and add FNL FDV operators library (9ee050d)

Documentation

  • Restructure CLAUDE.md into modular guide documents (4bc0290)

Miscellaneous

  • Minor fix (d30734d)
  • Add files via upload

Caricamento solutori llf hll + scheletro physics object e library (6889589)

  • Add some install instructions into main readme (f9f723e)
  • Refactor fobos (b691138)
  • Prism unfixed (0e04cbe)
  • Prism first debug (99c9589)
  • Debug #1-fn (2c4665c)
  • Nasto to prism corrections (33546ed)
  • Purge .DS_store garbage (23e2207)
  • Clean fobos (a8f055c)
  • Fobos for prism (fea6473)
  • Minor clean (210cf18)
  • Purge third_party_manual (3bd0dc4)
  • Fix github action CI, first debug step (e05c645)
  • Fix github action CI, continue (6c02ff3)
  • Fix github action CI, continue (db1bdcf)
  • Fix github action CI, continue (eda7e56)
  • Fix github action CI, continue (96f6df5)
  • Fix github action CI, continue (9398dfb)
  • Fix github action CI, continue (cf0f0fd)
  • Fix github action CI, continue (d8c5530)
  • Fix github action CI, continue (4948272)
  • Fix github action CI, continue (e9aecc1)
  • Fix github action CI, continue (5d31ede)
  • Fix github action CI, continue (e54ba1b)
  • Fix github action CI, continue (5ca9cc2)
  • Fix github action CI, continue (6eed0e8)
  • Fix github action CI, continue (274535a)
  • Fix github action CI, continue (6209684)
  • Fix github action CI, continue (0f1314d)
  • Fix github action CI, continue (d155167)
  • Fix github action CI, continue (3b91ebf)
  • Fix github action CI, continue (4d70948)
  • Fix github action CI, continue (5d525e9)
  • Fix github action CI, continue (cdff2f4)
  • Fix github action CI, continue (b339ba5)
  • Fix github action CI, continue (7bb473f)
  • Fix github action CI, continue (09f3d8c)
  • Fix github action CI, continue (be63ea5)
  • Fix github action CI, continue (40310e4)
  • Fix github action CI, continue (ab47456)
  • Fix github action CI, continue (e5c864f)
  • Fix github action CI, continue (b4edc67)
  • Fix github action CI, continue (d4165fd)
  • Fix github action CI, continue (e26d0e0)
  • Fix github action CI, continue (1f3c5a0)
  • Fix github action CI, continue (0474df2)
  • Fix github action CI, continue (70d7837)
  • Fix github action CI, continue (85aa4d4)
  • Github action hopefully working (18f6471)
  • Debug prism to compile (1f9f215)
  • Fix github action CI, continue (53edc59)
  • Addition prism debug mode for gnu (cd82922)
  • Add script to automatically get/build HDF5 library (60d410b)
  • Push ini spira rettangolare (dd74e44)
  • Modifica Prism e correzione valutazione coordinate celle in grid (3cdb262)
  • Prism development (f81f82f)
  • Prism development and delete old .ini (bcc0226)
  • Minor clean (6754e6e)
  • Update submodules (d44b323)
  • Start PRISM FNL backend (db06e26)
  • Add update submodules script (3618c11)
  • Firt running prism FNL backend, not working (fb6a140)
  • Clean submodules config (052d341)
  • Add MOTIOn submodule (2e1aafa)
  • Use MOTIOn to save XDMF/HDF5 (0382025)
  • Debug prism nb & J_vec (5c4a849)
  • Minor clean (a472f60)
  • Add high order to prism fnl, not yet working (465c6eb)
  • First working WENO version (5b3aa73)
  • Debug prism coils_current & ELz matrix (905a988)
  • Add new app CHASE (Euler solver) (73e0ee9)
  • Add PATCH app, experimental Poisson equation solver (4729130)
  • Add FLAIL correction in prism, does not work, yet (0bf5902)
  • Save residuals (aee9dba)
  • Infinite coil option (da38b15)
  • FwLayer, Gauss & Poisson interface (3fde268)
  • “schema_centrato” (4b75198)
  • One step forwards, two backwards... (f2e52ea)
  • Minor clean on high order centered schemes (b432360)
  • Wenoc 6 tentative (a69d649)
  • Plane wave first try (39f0915)
  • Centered scheme 6th order (3db80cd)
  • Add new WENO schemes (untested) and minor clean (8a56ff1)
  • Set coils debug (e413180)
  • Minor clean of prism CPU (ab25a90)
  • Hyperbolic correction implementation (43dc3b2)
  • Hyperbolic correction input (5a0c136)
  • Improve space operators (c171ce7)
  • Hyperbolic correction debug (e8a1524)
  • Add plane_wave_fv_centered test directory (c71309c)
  • Minor clean (3121d46)
  • Add Leapfrog integrator (3254b8d)
  • Clean PRISM object and complete derivative operators methods (59d08a9)
  • Add commutator free magnus integrator class (8f2fc05)
  • Add derivative 4 and 6 to fdv module (f181bf7)
  • Add symbolic links to tests (c204140)
  • Add test FDV laplacian (a1014f7)
  • Add tests for all FDV operators (3da4b27)
  • Add FDV upwind operators (1526464)
  • FWLayer & radiative BC implementation (4401946)
  • Coil & BC cleaning & external fields object addition (0492392)
  • External fields object addition pt 2 (2152984)
  • External fields object addition pt 3 & pic object structure (67a33a8)
  • External fields object addition pt 4 & particle weighting (a7aa36e)
  • Particle & fields weighting (cbfc953)
  • Even section coil object (b66093d)
  • Update nvidia sdk to 25.11 (8db192b)
  • Restart-prism fnl backend (2b3d423)
  • Commit deleted files (b286b98)
  • Pic leapfrog pt 1 (0ffb5b4)
  • Progress on prism fnl (f908ca9)
  • Leapfrog & RK for PIC pt.1 (05457a2)
  • Progress on prism fnl backend (5abc76b)
  • Minor progress on prism FNL backend (81d1b2c)
  • Leapfrog & RK for PIC pt.2 & rewriting PIC object index (28192a4)
  • Minor progress on prism FNL backend (55d2583)
  • Minor progress on prism FNL backend (ba2a51e)
  • Complete first prism FNL object tentative (4744ada)
  • Merge prism_fnl-prism_common & correction cell coordinates research (0288a87)
  • Rewriting of fWL_object & correction (in progress) (e03b055)
  • Add Claude Code agent (b894f28)
  • Refactor FNL lib filenames and update modules names (d56e212)
  • Minor clean on prism fnl (5926ed2)
  • Track test (18d58fa)
  • Prism FNL compile and run, but not working as expected (3f91d68)
  • Particle injection object skeleton & PIC test input (9d1ebae)
  • Particle injection object skeleton pt.2 (af85c8d)
  • Prism fnl compile and run, but solution is not correct (a648d45)
  • Particle injection object skeleton pt.3 (1826c6a)
  • Particle injection object skeleton pt.4 (e59795b)
  • Particle object and injection corrections (bfdb9e5)
  • Larmor test (d1ef75b)
  • Source term definition (be1f191)
  • Coil setting large debug (52dad0b)
  • J amplitude tuning (361ffae)
  • J_vec_modification (1b894b1)

New features

  • Start to add CI based on github actions (21ab144)
  • Start plasma research app (ec5ef09)
  • Add vitepress site, github ci/cd, and release tooling (fbb8476)

Refactoring

  • Extract q array from field object (19cc378)

v0.0.1 (2024-10-29)

Bug fixes

  • Fix comments (75e43c9)
  • Fix minor bugs (caaf6db)
  • Fix ghost mpi missing in adam, now seems to work again (8107f8a)
  • Fixed ptr to cpu instead to gpu, assumed shape in gpu starting from 1 for testing (776a28c)
  • Fixed new ghost mpi maps creation, riemann 2d in euler app (75801e1)
  • Fixed euler weno kernels with 5 instead of nv, fixed copy of aux vars (a636258)
  • Fix bux on slice saving (0a13ab6)
  • Fix syntax of any (5116069)
  • Fix bug due to stupid-fast cut-paste (f76c746)
  • Fix fobos for marconi (5ac35f9)
  • Fix error on sphere diameter (73a7076)
  • Fix non computed delta in get_neighbor_all method (83a071a)
  • Fix compute all solids phi (8ff1639)

Miscellaneous

  • Initial commit (db2d760)
  • OCTREE directory placeholder

Add a placeholder for the OCTREE sources tree. (587b707)

  • Add KERNEL placeholder

Add placeholder for fluidodynamic KERNEL sources. (cc82b63)

  • Add first MANIFESTO

Add a very brief MANIFESTO of our goals.

To do: find a nice name for the solver (7cdbd0e)

  • Cpp initial stuff (fab0a66)
  • Add list, hash table, morton examples

Add list, hash table, morton examples (b0cfa8c)

  • Update submodules (ca58a7b)
  • Added octree jl base code (fd88edc)
  • Merge branch 'master' of github.com:szaghi/amrflux (9eee2bd)
  • Merge branch 'master' of github.com:szaghi/amrflux (51000c5)
  • Add dictionary placeholder (7faf73e)
  • Add very basic dictionary node class

Add very basic dictionary node class: minimum implementation.

Compile smoothly with GNU, Intel and NVFortran.

Side effects:

Re-arrange src tree and add PENF submodule. (a518651)

  • Change project name (5671781)
  • Add a basic dictionary container

Add a basic dictionary container: very basic implementation, tests must be added. It compiles with Intel, GNU, and NVFortran compilers. (9389bc2)

  • Add dictionary test

Add dictionary test for testing basic features. All work well with GNU and Intel, but something odd happens with NVFortran.

Need help of @francescosalvadore for more detailed debug. (daf4ad3)

  • Basic dictionary implemented

Basic dictionary implemented: dictionary with basic features implemented, seems to work with GNU, Intel and NVFortran.

Node content has been promoted form I4P to I8P (64bit) due to the suggestion of @francescosalvadore (e5242e2)

  • Merged into develop (aace5e3)
  • Add hash table placeholder (6ddf8b2)
  • Add basic hash table implementation

Add basic hash table implementation: compiles with INTEL, GNU and NVFortran compilers.

TODO: implement a proper hash function, test program for the hash table obejct. (a9a1ea6)

  • Basic Hash Table container working

Basic Hash Table container working: works with GNU, Intel and NVFortran, basic features implemented.

Performance tests to be done, only simple correctness tests are currently implemented.

Need approval of @francescosalvadore (4f4e5b8)

  • Merge branch 'feature/add-hash-table' into develop (121e48c)
  • Add real keys tests

Add real keys tests: add tests with a real-case keys list, add utilities to convert string-key to integers tuple and back for the connettivity building.

Ready for @francescosalvadore benchmarking. (beb4b66)

  • Add Morton computation, to be checked (d510514)
  • Update MORTIF submodule (2f64910)
  • Add hash table resize method

Add hash table resize method, to be checked. It is able to automatically resize the hash table given the nodes number to be stored computing a well balanced prime number, closeset to the query, by means of the Sieve of Eratosthenes.

Minor changes in initialize and destroy methods too.

A testing facility must be added, probably with a new key format to be submitted to @francescosalvadore approval. (c05e206)

  • Add hash table resize method

Add hash table resize method, all seem to work (349a3cb)

  • Merge branch 'feature/add-hash-resize-method' into develop (285ebc4)
  • Morton ordering fully implemented

Morton ordering fully implemented: octree/quadtree support fully implemented by means of single Morton order (unique code): the Morton key entails all spatial information into a single, integer key, the complete topology can be traversed/queried with fast, arithmetic operations.

Ready for MPI injection. To submit for approval to @francescosalvadore @andreadimascio (922ed06)

  • Minor changes to topology API (a09dbfd)
  • Pimped tree object with Morton powerful (f6b4431)
  • Remove topology module (fda1c7c)
  • Add finest code computation and lower/greater comparison

Add finest code computation and lower/greater comparison: finest code of a queried code is computed as the latest child in the maximum refinement level allowed for the tree. The finest code is used into the comparison of two codes: now I am ready for the tree sorting for the MPI balancing.

@francescosalvadore may have a good sorting algorithm in mind, ask him

For @andreadimascio : hash table has been saved, Francesco creates a good simple looping method. (6215572)

  • First simulation of MPI balancing

First simulation of MPI balancing: the sorted list of codes acutally stored is splitted in balanced chunks and send (simulated) to each MPI process. The splitting is naive: must be implemented a more sophisticated one that keeps siblings together. (824b5d3)

  • Merge branch 'feature/inject-first-mpi-parts' into develop (9749ae5)
  • Simulate MPI balancing

Simulate MPI balancing: add BCAST/SCATTER communication example.

TODO: balance the load keeping siblings together (188db07)

  • Remove vecfor submodule (9a27930)
  • Add neighbors serching algorithm

Add neighbors serching algorithm: to be controlled, something seems to not work properly. (0dab96b)

  • Fix neighbor searching

Fix neighbor searching: neighbor searching seems to work as expected, ready for a real test with @francescosalvadore (5867d09)

  • Sanitize method implemented

Sanitize method implemented, to be tested, maybe with @francescosalvadore

Maybe it is better to add first VTKfortran (ef99693)

  • Add VTKFortran and all its dependencies for Octree tests visualization (73c141f)
  • First partial AMR visualization

First partial AMR visualization: all good, until now... (351481e)

  • Clean sources

Clean sources: general sources cleaning.

Note: tree_object%add_node is now a private method (687b544)

  • Tested Plot3D and moved to trash...

Tested Plot3D and moved to trash: too much limited the Plot3D file format.

Field and Tree class pimped (added block-code map and xyz blocks coordinates), ready for a MPI test with @francescosalvadore (731eced)

  • Derefine in working status, for now (5decb8e)
  • Refine/Derefine implemented

Refine/Derefine implemented: basic tests passed, tracking a moving sphere passed, ready for MPI implementation. (ee04e9d)

  • Merge branch 'feature/implement-derefine' into develop (cff8e32)
  • Improve VTM output and tracking sphere test (749f57b)
  • Add processes-load balancing method

Add processes-load balancing method (05e3c54)

  • First-almost-working-mpi-comm (4b161cb)
  • Not fully working, but a step further... (3de9af2)
  • Dirty commit, not compiling... (0446e1c)
  • MPI seems to work again

MPI seems to work again: added a new method for mpi exchange the nodes status, each process can mark its own nodes, but then the tree must be updated (re-align the tree in order that each process has the same identical view of the tree). Must be checked by @francescosalvadore but the logic seems to be very simple (added only an MPI_ALLGATHERV call and no further communication maps...) (a3e3ea7)

  • Lint sources and test sphere tracking with MPI

Lint sources and test sphere tracking with MPI (268625c)

  • Adding tecplot output to limit the number of saved files (f44b8c9)
  • Working MPI IO with HDF5

Working MPI IO with HDF5: next step clean API introducing adam_object. (246932e)

  • Remove unnecessary libtecio.so (a817aab)
  • First working ADAM self-contaning clean object

First working ADAM self-contaning clean object

Side effects:

Compiles and works only adam_test_adam_object.F90 test, others must be updated to the new API. (14c0732)

  • Not working, some bugs in mpi communications (06885cd)
  • Seem work MPI with field refine/derefine

Seem work MPI with field refine/derefine: the test test_adam_adam_object.f90 contains what seems to be a working usage of AMR update design, restart from here if you will break the desing in the future.

@francescosalvadore seems to agree (6b1cc38)

  • First working CUDA test

First working CUDA test: seems to work very well, but the general design is not definitive, obviously. (97e2a59)

  • Add a new wonderful get_neighbor_all

Add a new wonderful get_neighbor_all: get_neighbor_all returns neighbors along faces, edges and corners.

Thanks to @francescosalvadore to make it completely illegible 😃 (2249b9e)

  • Working ghost cell for only uniform, serial grids

Working ghost cell for only uniform, serial grids: ghost cells update is working for only serial case and uniform refinement. (ab8dbc4)

  • Dirty, check ghost (f39c777)
  • Dirty but working

Dirty but working: ghost cells are well exchanged and refine explots them to achieve 1st order interpolation. MPI is still missing for ghost cells. (4f02eff)

  • It is dirty again (da2943f)
  • MPI ghost update work for uniform grid

MPI ghost update work for uniform grid: remains implement finer/coarser grids cases. (708ddce)

  • Dirty field (789cce4)
  • Developing update_ghost_mpi in field object (7c4bd93)
  • Tricky bugs fixed in MPI ghost update at different refinements (ed38d46)
  • Neighbour less refined fixed. update ghost loop bounds adapted accordingly. update_ghost still requires careul testing (4e4ed2d)
  • Dirty reorder (6453760)
  • First async MPI that seems to work

First async MPI that seems to work (d35a04a)

  • Derefine seems to have bugs (1ea239e)
  • Add local ghost to field gpu, not working (4ada246)
  • Add update ghost to field GPU and compile, but not ready for CUDA/MPI (a1baaeb)
  • Add pseudo-generic update ghost method in field

Add pseudo-generic update ghost method in field: now the user can specify a generic field array, until it is of rank 4 (for the moment) and allocated as a cell centered variable (the only kind of variable which ghost can be updated). (6f5b060)

  • Lint grid, tree, field and adam objects (6601992)
  • Add flag for saving ghost with both VTK and HDF5 (bacb57c)
  • Add, quick and dirty, fossil (161274c)
  • Update CUDA version, untested

Update CUDA version, untested

@francescosalvadore will test all... (b248709)

  • Updated env m100 file sh (f6d9f16)
  • Important bug fix on last_block_index, gpu enabling on m100 updates (99d4f0f)
  • Small clean and enable VecFor/FOSSIL compile with NVFortran

Small clean and enable VecFor/FOSSIL compile with NVFortran: re-add STL distance computation by minor fix to VecFor/FOSSIL in order to be compiled with NVFortran.

Note for @francescosalvadore update VecFor and FOSSIL submodules before trying to compile on Marconi100 (b31d220)

  • Modify HDF5 to save the levels-hierarchy

Modify HDF5 to save the levels-hierarchy like VTK Output. (795df51)

  • Dirty push, add skeleton of BC, not compile (502f0de)
  • Add BC

Add BC setting: seems to work properly, but edge/corner BC are not yet tested by an actual field computation (only face BC are really tested).

A new mark_by_gradient has been introduced into field prototype. (7857962)

  • Minor code lint for assigning operators of field and tree objects (76d5f2a)
  • Generalize field object, ready for next step

Generalize field object, ready for next step, e.g. equation object by user. (5d54394)

  • Working prototype (3db1654)
  • Generalize field%q, now nv is active! (ca712ad)
  • New objects hierarchy seems to work properly (e712100)
  • Merge branch 'feature/test-equation-object-concept' into develop (6c470aa)
  • Clean tests, add laplace/convect1D test all-in-one (693334f)
  • Add euler equation skeleton (8df31c7)
  • Improve euler equation object (3e97ebd)
  • Minor progress on euler (177f9c4)
  • Xlf fobos enabled for m100, fixed convect1D test (8483398)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (0985e55)
  • First order Euler seems to work (4346b7a)
  • Improved eueler test and clean src tree structure (1ee8fb9)
  • Add weno reconstruction on euler example (3rd and 5th orders, upwind) (8aa717c)
  • Attempt to fix a nvfortran bug which fails correctly disambiguating node call function between tree and tree_bucket objects (613959f)
  • Add gpu convect1D, compile, not run (26ef31d)
  • Re-Add test CUDA for new API

re-Add test CUDA for new API (45b7331)

  • Minor fix in cuf (c8f29f7)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (0483514)
  • Added convect1d profiling version, tested on m100 up to 8 gpus (d2bbd27)
  • Add euler gpu, first order

Add euler gpu, first order: test without high order and AMR, seems to work (1e42454)

  • Change Q variables memory arrangment

Change Q variables memory arrangment: field components passed from 4th dimension to the 1st.

Why:

better memory for CPU and simpler Riemann implementation with CUDA fortran

Side effects:

could be the worst memory arrangment for GPU, profiling must be done with @francescosalvadore on marconi100, mayby memory transpose can exploited on GPU back end.

Note: improved IO, keep adam%hdf5/vtk exporters anyway (e21ec3a)

  • Adopt double memory layouts, one for CPU and one for GPU

Adopt double memory layouts, one for CPU and one for GPU: on CPU the optimal memory layout is (v,i,j,k,b) whereas on GPU it is (b,i,j,k,v).

Why:

Maximize performance on both CPU and GPU.

This change addresses the need by:

Different memory layout for q and q_aux on base_cpu/base_gpu objects and for all equations GPU objects.

Side effects:

Transposes must be done before copy to/from GPU.

if @francescosalvadore approves the transposes cuf methods can be moved from equation to base_gpu. This commit is a good starting point for @giacrossi

TODO: check the performance on some CUF kernels: @francescosalvadore must check some kernels that pass from cuf(4) to cuf(5)

TODO: improve in the Euler example the compute_dt and mark_by_grad cuf kernels. (acbd5a8)

  • Minor improvement on memory layout, change f1D_gpu and dxyz_gpu

Minor improvement on memory layout, change f1D_gpu and dxyz_gpu: to improve cuf coalescency the f1D_gpu array has been split into 3 arrays and dxyz_gpu has been transposed, now the b,i,j,k coalescency should be 100%

Next step improve ghost cells update coalescency... (cec0771)

  • Add new cell-ordered map to base_gpu (ea9bd4d)
  • Made working Convect1D/Euler both GPU/CPU

Made working Convect1D/Euler both GPU/CPU (d27358f)

  • Make update ghost GPU MPI as a single, big cuf loop for cells*variables (485a67b)
  • Change set bc in the new cell-ordering instead of fec (b03d10a)
  • Update euler to new set bc, parallel version scalability now seems good (2712661)
  • Improve Euler GPU test and base gpu backend

Improve Euler GPU test and base gpu backend: euler gpu object has been improved pointing also grid, ni, nj, nk, and gci/gcj/gck become ngc, unique ghost cells number (it works thus can be done the same fix everywhere in the code); base gpu backend now check devices properties, print it and print the comparison between requested memory and available memory on device to help user on dimensioning nb number. (55b7f79)

  • Remove gci, gcj, gck, now only ngc indicates the number of ghost cells in all directions

Remove gci, gcj, gck, now only ngc indicates the number of ghost cells in all directions: AMR does not support different number of ghost cells thus it is not necessary to keep separate the number of ghost cells in i, j and k direction. (4dcef3d)

  • Prepare Euler test to be more friendly... (3492d19)
  • Euler GPU with FD scheme by Andrea

Euler GPU with FD scheme by Andrea: the test Euler GPU has now a Finite Difference scheme by Andrea, it seems to work properly. Currently limited to 2nd order TVD scheme. (087f749)

  • Make generalized WENO reconstructor (4f1108d)
  • Euler GPU app now read a simple parameters input file, no more hard-coded inputs (b72dd78)
  • Great improve of Euler GPU API (2a3c403)
  • Clean namespaces for NVFortran stupidity

Clean namespaces for NVFortran stupidity: rename all variables that confuse NVFortran in tree object.

Why:

NVFortran is not able (sometime) to resolve correctly the use of variables having the same name of module functions, but this happens randomly, often it is able to do it, sometimes not...

Side effects:

Waste of hours. (c11d64d)

  • Improve objects initizializers by INI files loading (a19e0a3)
  • Pruning right, euler SZ bugged

Short description

Version with prune TBPs working, but Euler version of Stefano really bugged, keep it in quarantine. (ff106b4)

  • Flame development material pushed for reference (844f1eb)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (0a62602)
  • Updated references flame (ef4c735)
  • New flame ref (7b6b0f4)
  • Flame app added (b8577f7)
  • First try on eikonal (6319e0b)
  • First eikonal starts working (9be14f3)
  • Add move phi, not tested (00b530c)
  • Add single varibale update ghost, not tested (9fb5b8f)
  • Starting the implementation of bryson cases. not compiling commit (dd9133f)
  • Bug very annoying in base_gpu should be fixed now. appeared only on some number of procs, but it was a real allocation bug (87a67bb)
  • First implementation of flux correction to ensure amr consistence, new flame equation euler and viscous organization (cc7081a)
  • Flame updated bryson (5e9979e)
  • Add restart files, not complete/tested

Add restart files, not complete/tested: compile, but must be tested in action into a real test. (3f2d5d9)

  • First nasto implementation with input file (not working (32909fa)
  • Nasto trying to fix read input problems (d68141d)
  • Input file first nasto version seems to run. to be tested, probably errors still there (d950b3c)
  • Minor changes in base gpu (54003a8)
  • Debug version to hardly debug memory leaks, including new memory saver module. this versions seems to fix the memory leak but now changes have to be carefull examined to understand if it is really working (8884e1b)
  • Cleaning fixed (memory leak) version (cf945a6)
  • Last bug on blocks number 0 fixed; third_party_manual added (d2cedb4)
  • Merge francesco's last commits (d6ec27b)
  • Sphere-shock simulation setup

First setup of sphere-shock interation simulation. (eb6fb60)

  • Not working but necessary commit... (8bc7732)
  • Restart improvment

Restart simulations steps have been improved, but are not working completely: the first step after the restart seems to be identical to the normal (at least time and time step), but the subsequent steps have sligthly different time steps. Somenthing is missing in the restart initialization. (9f23051)

  • Little step to fix restart (b7fab83)
  • Restart with CUDA MPI (only one process tested) seem to work

Restart with CUDA MPI (only one process tested) seem to work (db03411)

  • Minor clean (a1a1ef6)
  • Update fobos for m100 (07e1858)
  • Clean fobos files (4a07ed5)
  • Minor change and add setups for scalability (28f15a9)
  • Clean run directory (81640ca)
  • Add check on blocks number after AMR (a5d1e64)
  • Minor clean (2254d09)
  • Add slicer, working but not as requested

Add slicer, working but not as requested

Why: we need a more general slicer able to extract an interpolated surface (6bc3c8a)

  • Add generic slicer tool

Add generic slicer tool: given a generic grid (3D/2D/1D uniform cartesian grid) the solution is interpolated at the grid points and a "slice" of the domain is saved (tecplot ascii format). Currently each MPI process saves the grid points falling into its blocks thus for multi-MPI a "glueing" tool must be added.

Why:

Perform comparison between different resolution/AMR grids of the same simulation with easy.

This change addresses the need by:

Adding new methods to: adam object: procedure, pass(self) :: interpolate_at_point !< Interpolate a scalar variable at a given point. procedure, pass(self) :: save_slice !< Save slice. tree_object: procedure, pass(self) :: get_closest_block !< Get the closest block to a given point. procedure, pass(self) :: get_closest_cells !< Get the closest cells to a given point. grid_object: procedure, pass(self) :: get_closest_block !< Get the closest block to a given point at a given level.

Nasto app has been updated with a new input setting ... slices_number w = 1

[slice_1] slice_save = 10 slice_ni = 256 slice_nj = 1 slice_nk = 1 slice_emin_x = 0.1 slice_emin_y = 10. slice_emin_z = 10. slice_emax_x = 19.9 slice_emax_y = 10. slice_emax_z = 10.

A new directory has been added, it is "scripts", it contains some useful scripts for the plotting of the slicer outputs (at the moment).

Side effects:

Nothing (0f3181a)

  • Update slices postprocessing script

Update slices postprocessing script: now handle both 1D and 2D slices (d53f0be)

  • Improve slices IO

Improve slices IO: using MPI file IO all MPI processes save theirown part of slices into the same file in binary compact form. A new app, ASCOT (src/app/ascot.F90), is provided to convert binary slices file into ascii (tecplot) file for easy handling.

ASCOT usage is:

  1. ascot -i slice.mat -v "rho rhou rhov rhow rhoe" -o slice.dat
  2. ascot -i slice.mat -o slice.dat
  3. ascot -i slice.mat

It takes in input the binary (.mat) slice file and generate the ascii (.dat) one. The variables name can be (optionally) passed to the converter. (5cf7419)

  • Minor clean (8239533)
  • Add trilinear interpolation for slices extraction

Add trilinear interpolation for slices extraction because inverse distance could not be optimal. (de9a06c)

  • Update ini template (eab40aa)
  • Improve grid objecti efficiency by storing main data instead of recalculate on-demand

Improve grid objecti efficiency by storing main data instead of recalculate on-demand

Why: avoid to recalculate many many times a small amount of data that can be stored at the start of simulation, e.g. see the ijk computation of closest block to a given point below:

function get_closest_block(self, point, level) result(ijk) !< Get the closest block to a given point at a given level. class(grid_object), intent(in) :: self !< The grid. real(R8P), intent(in) :: point(3) !< Point xyz coordinates. integer(I4P), intent(in) :: level !< Refinement level. integer(I4P) :: ijk(3) !< Indexes of the closest (living or not) block.

associate(nb_max=>self%nb_max(level), emin=>self%domain_emin, dxyz=>self%block_dxyz(:,level)) ijk(😃 = min(nb_max, max(1, ceiling((point(😃 - emin(😃) / dxyz(😃, I4P))) endassociate endfunction get_closest_block (368f736)

  • Improve the efficiency of slices extraction

Improve the efficiency of slices extraction (72612ec)

  • Fix minor bug on euler weno reconstruction

Fix minor bug on euler weno reconstruction (419f870)

  • Try different get_block_cells algorithm for slices interpolation (7f54c89)
  • Improve slices_converter.py script

Improve slices_converter.py script: check if a converted (.dat/.png) is already present (and more recent than .mat source) before re-convert already converted slices. (dd0ed4b)

  • Add further checks for unknown memory issue after AMR update (02f563d)
  • Remove *.o and *.mod from versioned files (3d5725d)
  • Increase output verbosity for debugging out-of-memory error (d278f08)
  • Increase output verbosity for debugging (e5bf4e3)
  • Increase output verbosity for debugging (32674a2)
  • Debug memory issue, comment comm_map_recv/send_ghost_cell_s arrays (47fbe5c)
  • Improve verbosity (8553c26)
  • Make explicit GPU memory allocation (a06af0a)
  • Reduce safety factor for GPU memory allocation (5729c2d)
  • Clean base_gpu_object, sanitize GPU memory handly, eradicate MPI single vars, sanitize objects

Clean base_gpu_object, sanitize GPU memory handly, eradicate MPI single vars, sanitize objects

Clean of object base_gpu_object in particular GPU memory handling: there is also a verbose mode to print the runtime GPU memory usage.

Eradicate all variables related to single variable MPI communications: this feature is not well implemented and must be re-implemented in the future (maybe from snippets of the previous commits now eradicated in this one).

All objects have been sanitized removing useless methods (e.g. destroy, assign, finalize methods) and a minimal base_mpi_object has been added and used by all other objects (should make more easy/uniform MPI hangling) (ee83400)

  • Clean nasto inizialize (95c8290)
  • Work with memory check, but temporary, mpi data must be ojectified (b2e0020)
  • Work with memory check, mpi data ojectified (7a98470)
  • Work-clean-memory-safe

Work-clean-memory-safe (8a4cfd3)

  • Minor clean and improve mpi object (a6c385f)
  • Update fobos (d53c3aa)
  • Extend grad computation to first ghost cell (6f5e7f1)
  • Add m100 debug mode to fobos nasto (72d5d3c)
  • Temporary eliminate alloc_var_gpu calls for debug Marconi issues (5910cec)
  • Fix bug on grid metrics computation

Fix bug on grid metrics computation: the emin domain was missing when computing grids coordinates. (7b24aca)

  • Minor fix on marconi (94bc511)
  • Clean base_gpu/field/tree and add Euler app skeleton

Clean base_gpu/field/tree and add Euler app skeleton (4cc1eb5)

  • Trim out comm/local maps from field

Trim out comm/local maps from field (7e7cbb0)

  • Euler CPU work (4854976)
  • New runge kutta by andrea implemented (45d1a71)
  • Merge branch 'new_rk' into develop (0caaba9)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (994e478)
  • Clean euler_cpu experiments from nasto_gpu (f19a8a9)
  • Weno restructured to support additional reconstruction schemes, order modify close to solids and multi-scheme ROR (recursive order reduction) strategy to improve stability (9c2609a)
  • Create separate branch for euler_cpu experiments (d19e2ed)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (79c08ce)
  • Add AMR/INITIALIZAIONT LOOP

Add AMR/INITIALIZAIONT loop at the simulation start.

Why:

Try to start the simulation with an AMR grid more adeguate to the initial conditions (that could be discontinuos...).

Side effects:

Add to Francesco new version with ROR implementation: ini input files must be carefully checked, the old ones are no more valid (RK in particular)! (485e1c1)

  • Instrument adam and tree for profiling (9a9393b)
  • Update fobos for spectrum compiler (178ddd9)
  • Comment ror stats (8a405a7)
  • Purge SELECT CASE from tree object

Purge SELECT CASE from tree object: in order to improve tree object serial performance, SELECT CASE constructs (for fec and tree%ratio) have been trimmed out. The profiling must be now re-done. (2504f98)

  • Correct fobos (b28adc8)
  • Put get_neighbor_all results into node

Short description

Put get_neighbor_all results into node: each 26 neighborhood are stored into node data.

Why:

Avoid to recompute neighborhood many times.

This change addresses the need by:

Add the new method make_neighborhood, use it in tree initiliaze and tree adapt, use neighborhood data saved into nodes instead of calling get_neighbor_all.

Side effects:

To be tested, hopefully the performances are improved, probably new bugs are introduced... (83c761c)

  • Try to fix bug in make_neighborhood (03b4351)
  • Try to improve make_neighboor efficiency (a53fb1f)
  • Add vortex initial conditions; IB is temporary disabled by setting distance = -1 in all cells (to be re-enable after the vortex benchmark conclusion) (fc18a36)
  • Update gitignore (d2e6ecc)
  • Vortex seems to work up to 16 GPU (d08b25c)
  • Merge branch 'develop' of github.com:szaghi/adam into develop (468010d)
  • Update README with branches organization infos (1f03bcb)
  • Re-add distance computation for sphere test (868df6c)
  • Update README with branches organization infos (073a143)
  • Add NASTO README and update main informations, e.g. license

Add NASTO README and update main informations, e.g. license. (8f51847)

  • Start cleaning NASTO CUDAFortran backend

Start cleaning NASTO CUDAFortran backend: names refactoring, classes cleaning, backends separation... the cleaning is started and almost ready to be submitted to the approval of other authors for the testing, profiling and OpenMP backend implementation. (800c319)

  • Start to add API documentation

Start to add API documentation: create place for HTML API documentation created by means of FORD parser. (6154ffd)

  • Update link to nasto API HTML doc (b006f91)
  • Almost clean (382f457)
  • Add some new classes (201a4eb)
  • Continue cleaning, arrived at slices object (f06a638)
  • Almost clean nasto common (f281537)
  • Main namespace clean (8830b60)
  • Add room and placeholders for CPU and GMP backends, correct bugs in adam_grid_object

Add room and placeholders for CPU and GMP backends, correct bugs in adam_grid_object. (da07139)

  • Add NASTO NVF test, not working yet (6f435ca)
  • NASTO NVF shock-sphere test working

NASTO NVF shock-sphere test working (f598999)

  • Add shock-sphere test documentation

Add shock-sphere test documentation (bb06037)

  • Deep clean, santize namespace, sanitize IB handling

Deep clean, santize namespace, sanitize IB handling:

  • Deep clean: clean a lot of dead lines, unused data, old procedures;
  • Sanitize namespace: more clear organization of also ADAM library, separation of common sources from backends ones;
  • Sanitize IB handling: IB handling was a real mess, data allocated everywhere, multiple solids supposed to be supported, but procedures were hardcode on solids 1! Now it is a much more sane and clean implementation with also a real multi-solids support (although test with only one).

Add the bare-minum documentation into each source subdirectory. Ford API not yet updated. (3f5f4e1)

  • Add placeholder for Cristiano's MHD (e02de9b)
  • Added Leonardo configuration in fobos_nasto (0d07e7d)
  • Merge branch 'fortran-cuda-develop' of github.com:szaghi/adam into fortran-cuda-develop (982b844)
  • Clean fobos files (f035987)
  • Clean cristiano's mhd from nasto branch (1d0c803)
  • Immersed Boundary Solids number generalization complete

Immersed Boundary Solids number generalization complete

All kernels should be now generalized to accept any number of IB solids. The phi/phi_gpu array have now solids_number + 1 element: the last element contains a "summary information" about the cell status, namely if the cell is outside all IB solids or inside of at least one solid.

For the NVF kernel the code looks like

fortran
all_solids = ubound(phi_gpu, dim=5)
...
phi_gpu(b,i,j,k,all_solids) = -1._R8P
solids_loop : do s=1, all_solids -1
   if (phi_gpu(b,i,j,k,s)>0) then
      phi_gpu(b,i,j,k,all_solids) = phi_gpu(b,i,j,k,s)
      exit solids_loop
   endif
enddo solids_loop

The common (CPU) is similar. (8f78a7e)

  • Add residuals save and minor clean on objects/cuf kernels

Add residuals save support and minor clean on objects/cuf kernels

Add support to save residuals: the first RK stage residuals, e.g. first euler residuals step, can be saved, namely their norm L2 (sqrt of all square summs, without any normalization).

The umax computation for dt estimation has been improved with full parallelization over bijk and explicit reduction. (60f3fc8)

  • Drastic clean of tree and field objects, new maps object introduced

Drastic clean of tree and field objects, new maps object introduced: communications and bc/ghost maps are now handled by maps object in order to simplify tree and field objects. Some minor memory redudancy is still present in field object. Some minor changes are also inside backend objects, i.e. adam_base_nvf_objects.

Added also a common library in order to compile the ADAM (common, only CPU) library. (10c60cd)

  • Complete refactoring of ADAM library and NASTO app (NVF backend)

Complete refactoring of ADAM library and NASTO app (NVF backend) (bce08b7)

  • Complete NASTO CPU backend, compile, but not work

Complete NASTO CPU backend, compile, but not work, debug started. (2e6a49c)

  • Fix ADAM-node allocatables bug on Tree object

Fix ADAM-node allocatables bug on Tree object

Some tree procedures do loop over neighbors codes arrays that in case of Adam node are not allocated, thus trying to access to non allocated memory. NVF does not complain, but testing with GNU compiler the bugs arise. The bugs discovered are fixed and the NASTO CPU backend test seems to work. (b4bb1f1)

  • NASTO pure CPU app working, also extremenly clean NASTO NVF app

NASTO pure CPU app working, also extremenly clean NASTO NVF app: the pure CPU backend is working, the NVF backend has been strongly cleanead, e.g. to compute convective fluxes only 1 subroutine is used for all x, y, z directions. The ADAM library has been also improved, cleaned and sanitized.

The oly remaining "dirty" subroutines of NASTO apps (both CPU and NVF backends) is the WENO reconstruction. I have also added a much more clean WENO library ready to be parallelized in any device architecture, but designed to reconstruct primitive variables: I am now working on adapting it to reconstruct interface fluxes instead of primitive variables. I am also starting the merging of NASTO GMP backend last updates. (5759cc5)

  • Totally clean WENO kernels, working with my library

Totally clean WENO kernels, working with my library: now it is easy to implement arbitrary high order WENO. Works and scale well. (52ba0ef)

  • Add SOD test for NASTO NVF APP and fix bug for sims without IB

Add SOD test for NASTO NVF APP and fix bug for no IB sims: rapid test for 1D Riemann problem (Sod's test) without IB. Fixed bug for simulations without IB.

New WENO library works up to 5th order (S=3), 7th, 9th and 11th orders are implemented but not working. ROR algorithm implemented into NASTO NVF app. (f24873c)

  • Complete WENO and RK libraries, general cleaning

Complete WENO and RK libraries, general cleaning: ADAM now provides a general library of WENO upwind reconstructor with 3rd, 5th, 7th and 9th accuracy order with ialso NVF backend kernels working a scaling as previous hardcoded NASTO WENO implementantion; ADAM also provides a general Runge-Kutta library with low-storage TVD-SSP schemes up to 3rd order and standard, explicit, non-low-storage schemes up to 4th order (5 stages).

A big general cleaning has been done with improvements expecially in reducing code. The convective fluxes is now 3D parallelized in NVF backend and the CUDA block dimensions are customized directly by file parameters options allowing easy tuning of parallel performance on simulation basis.

A 1D Riemann Problem test (Sod's test) has been added for NASTO NVF app.

TODO (soon, tomorrow):

  • move eikonal procedures into ib_object for making easy new equations implementation;
  • add eikonal integration steps number customization into file parameters;
  • add initial conditions steps-number-imposition customization into file parameters;
  • sync NASTO CPU app with the new NVF app. (bf36d80)
  • Clean NVF, SYNC NASTO CPU app; ready to accept GMP

Clean NVF, SYNC CPU ready to accept GMP: clean NVF backends (lib and NASTO app) and synchronize NASTO CPU app with NVF one. Ready to merge GMP stuff. (dfc56af)

  • Fakepmerge GMP branch

Fakepmerge GMP branch: use GMP branch files to create ex-novo NASTO GMP app, not exactly a merge, but it worked.

Compile correctly, but I am not able to test it.

Now ADAM lib and NASTO app are in synch for NVF, GPU-OpenMP, CPU-OpenMP backends. (3133fa6)

  • Add modes for Intel clusters (b6b6ace)
  • Add initialization value optional argument (d86c6a7)
  • Remove wrong explicit allocation (973e4a0)
  • Add gmp test folder (98182d4)
  • Remove unnecessary check on optional dummy argument (e41f681)
  • Add new tests and refactor tests directories

Add new tests and refactor tests directories: add 2 new tests, sod-y/sod-z in order to test eventual directional bugs and refactor tests directories structures with backends subdirs in the deepest position instead of top. (f7cf109)

  • Merge branch 'fortran-cuda-develop' into develop (2e6423c)
  • Update submodules (5d436e1)
  • Add FUNDAL submodule (c7fb3ce)
  • Update FUNDAL submodule (ef83102)
  • Progress on FUNDAL integration (6b048cc)
  • Add IB FUNDAL-based (a411582)
  • Add field FNL kernels (b69e43c)
  • Complete field FNL class (0d80231)
  • Improve FNL backend (a4c2fa6)
  • Complete FUNDAL integration (33b5464)
  • Clean NASTO fnl and re-add tests (c290be6)
  • Compile with IFX (5d4cd6a)
  • Re-add 2 OMP LOOPS with local_map variable name issue (7c48dab)
  • Add Intel Florence cluster rules (716b5d0)
  • Update fobos for SZ laptop (33a939b)
  • Remove cgal (40ef5d0)
  • Fix fobos for Intel Florence cluster (dd45175)
  • Clean submodules configuration (05e5045)

New features

  • Add script to get&update sources (56fcfac)

Refactoring

  • Refactor save data, update ghost before saving (53fa94e)
  • Refactoring of backends API (08fe178)
  • Start pushing some FUNDAL based sources (b832ff5)