Skip to content

Abbas developement #214

Abbas developement

Abbas developement #214

# This is a basic workflow to help you get started with Actions
name: CI SEQ MULTIPHYSICS
########################################################################
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
#env:
# HDF5_ROOT : /usr/lib/x86_64-linux-gnu/hdf5/serial/
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Define strategy matrix
strategy:
fail-fast: false
matrix:
compiler: ['gfortran','ifort']
mode: ['RELEASE', 'DEBUG']
comm: ['SEQUENTIAL']
enable_threads: ['YES']
mkl: ['YES','NO']
exclude:
- compiler: gfortran
mkl: 'YES'
- compiler: ifort
mkl: 'NO'
env:
INTEL_COMPILER_DIR : /opt/intel/oneapi/compiler/2024.1
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# sudo apt-get install -qq pkg-config libhdf5-serial-dev
# - name: Install Linux packages
# run: |
# sudo apt-get update
# sudo apt install libhdf5-dev
# dpkg -L libhdf5-dev
# IF COMPILER = IFORT -> INSTALL IFORT #
# UNCOMMENT TO USE CACHED IFORT
#- name: cache-intel-compilers
# if: (matrix.compiler == 'ifort')
# id: cache-intel-compilers
# uses: actions/cache@v3
# with:
# path: /opt/intel
# key: intel-${{ runner.os }}-compilers-b
- name: Intel Apt repository
# UNCOMMENT TO USE CACHED IFORT
# if: (steps.cache-intel-compilers.outputs.cache-hit != 'true')
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt-get update
- name: Install Intel oneAPI
# UNCOMMENT TO USE CACHED IFORT
# if: (steps.cache-intel-compilers.outputs.cache-hit != 'true')
run: sudo apt-get install intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp intel-oneapi-mpi intel-oneapi-mpi-devel intel-oneapi-mkl-devel ninja-build
# Runs a single command using the runners shell
##- name: Install gfortran
## run: |
## sudo add-apt-repository ppa:ubuntu-toolchain-r/test
## sudo apt update
## sudo apt-get install gfortran-9
##- name: Show gfortran version
## run: gfortran-9 --version
- name: Show ${{matrix.compiler}} version
run: |
source /opt/intel/oneapi/setvars.sh || true
printenv >> $GITHUB_ENV
${{matrix.compiler}} --version
echo "LIB_LAPACK="-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_gf_lp64.a -Wl,--end-group -lpthread -lm -ldl"" >> $GITHUB_ENV
# If it stops working previous line (linking with MKL for GNU) it is probably to an update in mkl. Update following https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html
- name: Configure
working-directory: ./Solver
run: ./configure
- name: Compile horses3d
working-directory: ./Solver
run: |
source /opt/intel/oneapi/setvars.sh || true
make allclean MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
########################################################################
####### PARTICLES ########
########################################################################
#
# 1) FreeFall
# ----------------------------
- name: Build ParticlesFreeFall
working-directory: ./Solver/test/Particles/FreeFall/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run ParticlesFreeFall
working-directory: ./Solver/test/Particles/FreeFall
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ns FreeFall.control
if: '!cancelled()'
#
# 2) RadiationHeat
# ----------------------------
- name: Build RadiationHeat
working-directory: ./Solver/test/Particles/RadiationHeat/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run RadiationHeat
working-directory: ./Solver/test/Particles/RadiationHeat
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ns RadiationHeat.control
if: '!cancelled()'
#
# 3) ParticleBoundaryCond
# ----------------------------
# This case uses a random initialization that affects the solution.
# it only works in Alderaan
# - name: Build ParticleBoundaryCond
# working-directory: ./Solver/test/Particles/ParticleBoundaryCond/SETUP
# run: make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
# - name: Run ParticleBoundaryCond
# working-directory: ./Solver/test/Particles/ParticleBoundaryCond
# run: ./horses3d.ns BoundaryCondition.control
#
# 4) Pouransari
# ----------------------------
# This case uses a random initialization that affects the solution.
# it only works in Alderaan
# - name: Build Pouransari
# working-directory: ./Solver/test/Particles/Pouransari/SETUP
# run: make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
# - name: Run Pouransari
# working-directory: ./Solver/test/Particles/Pouransari
# run: ./horses3d.ns Pouransari_St0041.control
########################################################################
####### MULTIPHASE ########
########################################################################
#
# 1) Convergence
# ----------------------------
# This test case is skipped with gfortran as the result is slightly different
- name: Build MultiphaseConvergence
working-directory: ./Solver/test/Multiphase/Convergence/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: ('!cancelled()' && matrix.compiler == 'ifort')
- name: Run MultiphaseConvergence
working-directory: ./Solver/test/Multiphase/Convergence
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.mu Convergence.control
if: ('!cancelled()' && matrix.compiler == 'ifort')
#
# 2) RisingBubble
# ----------------------------
# This test case is skipped with gfortran as the result is slightly different
- name: Build MultiphaseRisingBubble
working-directory: ./Solver/test/Multiphase/RisingBubble/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: ('!cancelled()' && matrix.compiler == 'ifort')
- name: Run MultiphaseRisingBubble
working-directory: ./Solver/test/Multiphase/RisingBubble
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.mu RisingBubble.control
if: ('!cancelled()' && matrix.compiler == 'ifort')
#
# 3) Pipe
# ----------------------------
- name: Build MultiphasePipe
working-directory: ./Solver/test/Multiphase/Pipe/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run MultiphasePipe
working-directory: ./Solver/test/Multiphase/Pipe
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.mu AnnularFlow.control
if: '!cancelled()'
#
# 4) Entropy conserving test
# ----------------------------
- name: Build MultiphaseEntropyConservingTest
working-directory: ./Solver/test/Multiphase/EntropyConservingTest/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run MultiphaseEntropyConservingTest
working-directory: ./Solver/test/Multiphase/EntropyConservingTest
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.mu EntropyConservingTest.control
if: '!cancelled()'
########################################################################
####### INCOMPRESSIBLE ########
########################################################################
#
# 1) Convergence
# ----------------------------
- name: Build iNS-Convergence
working-directory: ./Solver/test/IncompressibleNS/Convergence/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-Convergence
working-directory: ./Solver/test/IncompressibleNS/Convergence
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins Convergence4P5.control
if: '!cancelled()'
#
# 2) Kovasznay
# ----------------------------
- name: Build iNS-Kovasznay
working-directory: ./Solver/test/IncompressibleNS/Kovasznay/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-Kovasznay
working-directory: ./Solver/test/IncompressibleNS/Kovasznay
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins Kovasznay.control
if: '!cancelled()'
#
# 3) Lid driven cavity
# ----------------------------
- name: Build iNS-LidDrivenCavity
working-directory: ./Solver/test/IncompressibleNS/LidDrivenCavity/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-LidDrivenCavity
working-directory: ./Solver/test/IncompressibleNS/LidDrivenCavity
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins LDCRe7500.control
if: '!cancelled()'
#
# 4) Taylor Green Vortex
# ----------------------------
- name: Build iNS-TaylorGreenVortex
working-directory: ./Solver/test/IncompressibleNS/TaylorGreen/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-TaylorGreenVortex
working-directory: ./Solver/test/IncompressibleNS/TaylorGreen
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins TGV_Central.control
if: '!cancelled()'
#
# 5) Rayleigh-Taylor instability
# -------------------------------
- name: Build iNS-RayleighTaylor
working-directory: ./Solver/test/IncompressibleNS/RayleighTaylor/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-RayleighTaylor
working-directory: ./Solver/test/IncompressibleNS/RayleighTaylor
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins RTI.control
if: '!cancelled()'
#
# 6) INS Cylinder
# -------------------------------
- name: Build iNS-Cylinder
working-directory: ./Solver/test/IncompressibleNS/Cylinder/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-Cylinder
working-directory: ./Solver/test/IncompressibleNS/Cylinder
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins CylinderRe40.control
if: '!cancelled()'
#
# 7) INS Cylinder Vreman
# -------------------------------
- name: Build iNS-Cylinder-Vreman
working-directory: ./Solver/test/IncompressibleNS/CylinderVreman/SETUP
run: |
source /opt/intel/oneapi/setvars.sh || true
make MODE=${{matrix.mode}} COMPILER=${{matrix.compiler}} COMM=${{matrix.comm}} ENABLE_THREADS=${{matrix.enable_threads}} WITH_MKL=${{matrix.mkl}}
if: '!cancelled()'
- name: Run iNS-Cylinder-Vreman
working-directory: ./Solver/test/IncompressibleNS/CylinderVreman
run: |
source /opt/intel/oneapi/setvars.sh || true
./horses3d.ins CylinderVremanRe3900.control
if: '!cancelled()'