This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
howto:mfix [2023/08/17 13:17] ccrosby [MFix-23.2] |
howto:mfix [2025/04/16 12:28] (current) ccrosby [MFix-Exa] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ======Using MFIX at the CHPC====== | ======Using MFIX at the CHPC====== | ||
| + | Instructional video: [[https:// | ||
| ===== Introduction ===== | ===== Introduction ===== | ||
| MFIX is an open-source multiphase flow solver written in FORTRAN 90. It is used for simulating fluid-solid systems such as fluidized beds. As it appears to have numerous potential uses in chemical engineering and mineral processing applications, | MFIX is an open-source multiphase flow solver written in FORTRAN 90. It is used for simulating fluid-solid systems such as fluidized beds. As it appears to have numerous potential uses in chemical engineering and mineral processing applications, | ||
| Line 15: | Line 16: | ||
| - Through a very slick Python-based GUI. | - Through a very slick Python-based GUI. | ||
| - By customizing the solver and running from the command line. | - By customizing the solver and running from the command line. | ||
| - | However, even when using the customized command line approach, a Python script is still used for building the code. The following instructions apply to MFix-23.2, which has been set up to facilitate both of these approaches. | + | However, even when using the customized command line approach, a Python script is still used for building the code. The following instructions apply from MFix-23.2 |
| - | ==== MFix-23.2 ===== | + | ==== MFix-Exa ==== |
| + | Further to the theme of modernised MFix, is the development of [[https:// | ||
| + | < | ||
| + | |||
| + | === Example job script for MFix-Exa === | ||
| + | <file bash runMFix-exa.pbs> | ||
| + | # | ||
| + | ### Request two compute nodes, each with 12 MPI processes and 2 OpenMP threads per MPI process | ||
| + | #PBS -l select=2: | ||
| + | #PBS -P MECH1234 | ||
| + | #PBS -l walltime=02: | ||
| + | #PBS -q normal | ||
| + | #PBS -o / | ||
| + | #PBS -e / | ||
| + | |||
| + | ### Change directory to a typical test case that comes with MFix. Obviously use your own directory. | ||
| + | cd / | ||
| + | |||
| + | ### Set up the required environment | ||
| + | . / | ||
| + | |||
| + | ### Set up 2 OpenMP threads per MPI process | ||
| + | export OMP_NUM_THREADS=2 | ||
| + | |||
| + | ### Find the number of MPI processes | ||
| + | nproc=`cat $PBS_NODEFILE | wc -l` | ||
| + | |||
| + | mpirun -iface ib0 -np $nproc mfix-exa inputs > mfix.out | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== MFix-24.2.3 ==== | ||
| + | The latest installation makes use of Miniforge-3. | ||
| + | |||
| + | < | ||
| + | module load chpc/ | ||
| + | conda init | ||
| + | conda activate mfix-24.2.3 | ||
| + | </ | ||
| + | |||
| + | You will notice that mfix has been installed in the directory as shown below: | ||
| + | |||
| + | < | ||
| + | (base) [jblogs@cnode1234: | ||
| + | (mfix-24.2.3) [jblogs@cnode1234: | ||
| + | / | ||
| + | (mfix-24.2.3) [jblogs@cnode1234: | ||
| + | </ | ||
| + | |||
| + | To exit this environment, | ||
| + | < | ||
| + | conda deactivate | ||
| + | </ | ||
| + | |||
| + | The MFix source code and tutorials have been unpacked in the directory | ||
| + | < | ||
| + | |||
| + | |||
| + | ==== MFix-23.2 | ||
| A Miniconda environment for MFix-23.2 has been configured, and is installed in the directory ''/ | A Miniconda environment for MFix-23.2 has been configured, and is installed in the directory ''/ | ||
| Line 54: | Line 114: | ||
| <file bash runMFix.pbs> | <file bash runMFix.pbs> | ||
| #!/bin/bash | #!/bin/bash | ||
| + | ### | ||
| + | ### | ||
| + | ### The same workflow should work for 23.2 and 23.3, just substitute 23.2 with 23.3 if | ||
| + | ### you need the more recent version. | ||
| + | ### | ||
| + | ### | ||
| ### Request a single node for 4 MPI processes and 2 OpenMP threads per MPI process | ### Request a single node for 4 MPI processes and 2 OpenMP threads per MPI process | ||
| #PBS -l select=1: | #PBS -l select=1: | ||
| Line 67: | Line 133: | ||
| ### Prepare the Miniconda environment | ### Prepare the Miniconda environment | ||
| source / | source / | ||
| + | |||
| ### Get the following into your path: | ### Get the following into your path: | ||
| ### 1. The standard MFix installation | ### 1. The standard MFix installation | ||
| - | ### 2. gcc-8.3.0 | + | ### 2. gcc-8.3.0 |
| - | ### 3. mpich-3.3 | + | ### 3. mpich-3.3 |
| module load chpc/ | module load chpc/ | ||
| Line 95: | Line 162: | ||
| </ | </ | ||
| + | ==== Interactive MFix ==== | ||
| + | With the environment set up by these instructions: | ||
| + | < | ||
| + | source / | ||
| + | module load chpc/ | ||
| + | conda activate mfix-23.2 | ||
| + | </ | ||
| + | it is also possible to run the interactive version of MFix with its Python-based GUI. However, there are two main problems: | ||
| + | - Doing graphics with X-forwarding is slow | ||
| + | - Compute nodes do not have GPUs that can handle OpenGL graphics | ||
| + | These two problems are easy to overcome. | ||
| ===== Working with older versions ===== | ===== Working with older versions ===== | ||
| ==== Building MFIX ==== | ==== Building MFIX ==== | ||
| Line 134: | Line 212: | ||
| #PBS -q normal | #PBS -q normal | ||
| #PBS -l walltime=01: | #PBS -l walltime=01: | ||
| - | #PBS -o /mnt/lustre3p/ | + | #PBS -o /mnt/lustre/ |
| - | #PBS -e /mnt/lustre3p/ | + | #PBS -e /mnt/lustre/ |
| #PBS -m abe | #PBS -m abe | ||
| #PBS -M username@email.co.za | #PBS -M username@email.co.za | ||
| Line 160: | Line 238: | ||
| #PBS -q normal | #PBS -q normal | ||
| #PBS -l walltime=01: | #PBS -l walltime=01: | ||
| - | #PBS -o /mnt/lustre3p/ | + | #PBS -o /mnt/lustre/ |
| - | #PBS -e /mnt/lustre3p/ | + | #PBS -e /mnt/lustre/ |
| #PBS -m abe | #PBS -m abe | ||
| #PBS -M username@email.co.za | #PBS -M username@email.co.za | ||