Compilación de OpenFOAM.com mediante NIX ------------------------------------- Mediante estas instrucciones se compila un OpenFOAM a una carpeta local para los casos de uso de ciclos de editar-recompilar-correr. 1. Checkout del repo nix en GIT CSC para openfoam, get de las fuentes ```bash git clone https://git.csc.gob.ar/tupac/openfoam-nix.git cd openfoam-nix wget https://develop.openfoam.com/Development/openfoam/-/archive/OpenFOAM-v2212/openfoam-OpenFOAM-v2212.tar.gz tar -xzf openfoam-OpenFOAM-v2212.tar.gz mv openfoam-OpenFOAM-v2212 OpenFOAM ``` 2. Pisar etc/bashrc con el nuestro editado ``` cp bashrc OpenFOAM/etc ``` 3. Entrar a entorno de desarrollo de nix y compilar OpenFOAM en recursos del clúster ```bash nix develop cd OpenFOAM source etc/bashrc ./Allwmake -q -j -s ``` 4. Correr con SLURM algún ejemplo (damBreak) ```bash cp ../slurm-example-damBreak tutorials/multiphase/interFoam/laminar/damBreak/damBreak cd tutorials/multiphase/interFoam/laminar/damBreak/damBreak blockMesh cp -r 0.orig 0 setFields decomposePar sbatch slurm-example-damBreak # esperar a que termine la corrida paralela reconstructPar ``` (Observar que estamos ejecutando `blockMesh`, `setFields`, `decomposePar` y `reconstructPar` en el headnode, en el caso de un proyecto real de envergadura tanto el preprocesamiento como el postprocesamiento debería realizarse de forma paralela en los recursos del clúster con `srun`.) ∞. Postinstalación Luego de terminada la sesión de compilación, al abrir una nueva sesión en el futuro: a. Para correr cualquier aplicación hay que incluir el `bashrc` de OpenFOAM ``` source openfoam-nix/OpenFOAM/etc/bashrc ``` previo a lanzar la simulación con `sbatch`. b. Para recompilar hay que volver a cargar el entorno de Nix ``` cd openfoam-nix nix develop ``` y disparar la recompilación de OpenFOAM en el clúster, por ejemplo con ``` cd OpenFOAM ./Allwmake -q -j -s ```