- runs the Semi-Lagrangian BSL code
- public part available here https://github.com/selalib/selalib
- "our" currently used branch is https://gitlab.mpcdf.mpg.de/clapp/selalib/-/tree/exahd_communicator
- clone and check out right version (see above)
- depends on
fftwandhdf5+fortran@1.10.5or higher (in spack notation) - create build directory, load dependencies
- in the build directory, run
cmake -DCMAKE_BUILD_TYPE=Release -DOPENMP_ENABLED=ON -DHDF5_PARALLEL_ENABLED=ON -DUSE_FMEMPOOOL=OFF -DCMAKE_INSTALL_PREFIX=$(pwd)/install $SELALIB_DIR
make test_cpp_interface
make sll_m_sim_bsl_vp_3d3v_cart_dd_slim_interface
make sim_bsl_vp_3d3v_cart_dd_slim
make install
where test_cpp_interface can be used to test the gerenal C/Fortran interface, sim_bsl_vp_3d3v_cart_dd_slim is the mononlithic solver for our test case, and sll_m_sim_bsl_vp_3d3v_cart_dd_slim_interface builds the libraries needed for this selalib_distributed example. (This may take some time and usually fails if tried in parallel with make -j).
- run DisCoTec's cmake with
-DDISCOTEC_WITH_SELALIB=1 -DSELALIB_DIR=flags (SELALIB_DIRshould be set to selalib'sCMAKE_INSTALL_PREFIXfolder, appended with/cmake, or wherever you findSELALIBConfig.cmakeaccompanied bylibselalib.aandlibsll_m_sim_bsl_vp_3d3v_cart_dd_slim_interface.a) - then
make selalib_distributed
- update combination technique parameters in
ctparam, selalib parameters intemplate/param.nml(be careful withhaveDiagnosticsTask-- it interpolates ontolmaxto do the diagnostics, which can be extremely costly) - load dependencies and run with mpi, like shown in
sbatch.sh-- the number of MPI tasks has to match the process group number and size inctparam. Make sure that OpenMP runs with 1 process per MPI rank.
- run
./combine_selalib_diagnostics ctparamor update paths in./plot_landau.pyand run (which also invokes./combine_selalib_diagnosticsbut then plots the quantities of interest) - analyze the sparse grid "surplusses" (maximum hierarchical coefficients per level) by running
../../tools/visualize_sg_minmax.py plot.dat_selalib_sg_${TIMESTEP}_0.txt. It shows a correlation matrix and plots projections of maxima on the different level combinations.