Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding OpenFOAM #29248

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions recipes/openfoam/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/bin/bash

export FOAM_DIR_NAME="${SRC_DIR}" #/openfoam-OpenFOAM-${PKG_VERSION}"

# source foam dot file throws error if not compiled
# modify the the output folder of the binaries
sed -i 's/\$WM_PROJECT_DIR\/platforms\/\$WM_OPTIONS/\$\{PREFIX\}/g' ${FOAM_DIR_NAME}/etc/config.sh/settings
source "${FOAM_DIR_NAME}/etc/bashrc" || true
export CONFIGSHDIR=${FOAM_DIR_NAME}/etc/config.sh

# change scotch version to the conda version
sed -i 's/^SCOTCH_VERSION=.*/SCOTCH_VERSION=scotch-system/g' ${CONFIGSHDIR}/scotch
sed -i 's/^export SCOTCH_ARCH_PATH=.*/export SCOTCH_ARCH_PATH=${PREFIX}/g' ${CONFIGSHDIR}/scotch

# change kahip version to the conda version
sed -i 's/^KAHIP_VERSION=.*/KAHIP_VERSION=kahip-system/g' ${CONFIGSHDIR}/kahip
sed -i 's/^export KAHIP_ARCH_PATH=.*/export KAHIP_ARCH_PATH=${PREFIX}/g' ${CONFIGSHDIR}/kahip

# change metis version to the conda version
sed -i 's/^METIS_VERSION=.*/METIS_VERSION=metis-system/g' ${CONFIGSHDIR}/metis
sed -i 's/^export METIS_ARCH_PATH=.*/export METIS_ARCH_PATH=${PREFIX}/g' ${CONFIGSHDIR}/metis

# change petsc version to the conda version
sed -i 's/^petsc_version=.*/petsc_version=petsc-system/g' ${CONFIGSHDIR}/petsc
sed -i 's/^export PETSC_ARCH_PATH=.*/export PETSC_ARCH_PATH=${PREFIX}/g' ${CONFIGSHDIR}/petsc

# change hypre version to the conda version
sed -i 's/^hypre_version=.*/hypre_version=hypre-system/g' ${CONFIGSHDIR}/hypre
sed -i 's/^export HYPRE_ARCH_PATH=.*/export HYPRE_ARCH_PATH=${PREFIX}/g' ${CONFIGSHDIR}/hypre
#
echo "cFLAGS += -I ${BUILD_PREFIX}/include" >> "${FOAM_DIR_NAME}/wmake/rules/linux64Gcc/c"
echo "c++FLAGS += -I ${BUILD_PREFIX}/include" >> "${FOAM_DIR_NAME}/wmake/rules/linux64Gcc/c++"

# remove Allwmake falsely sets the headers to the system
rm "${FOAM_DIR_NAME}/applications/utilities/mesh/manipulation/setSet/Allwmake"

# compile openfoam
${FOAM_DIR_NAME}/Allwmake -j $CPU_COUNT -q -l

# install
echo "Installing ..."

cd ${FOAM_DIR_NAME}
# transportProperties are not referenced via
mkdir -p ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/src/
cp -Lr src/transportModels ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/src/

#copy header in the include folder
for f in $(find . -type d -name lnInclude)
do
if [ ! -d "$(dirname ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/${f})" ]; then
mkdir -p $(dirname ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/${f})
fi
cp -Lr ${f} $(dirname ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/${f})
done

# copy wmake and modify wmake scripts
SCRIPTDIR="\${0%\/\*}"
NEW_SCRIPTDIR="\${WM_PROJECT_DIR:\?}\/wmake"
sed -i "s/$SCRIPTDIR/$NEW_SCRIPTDIR/g" wmake/w*
cp wmake/w* ${PREFIX}/bin

# copy config and script files
cp -r etc ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/
cp -r bin ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/
cp -r wmake ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/
cp -r platforms ${PREFIX}/include/OpenFOAM-${PKG_VERSION}/

ACTIVATE_DIR="${PREFIX}/etc/conda/activate.d"
DEACTIVATE_DIR="${PREFIX}/etc/conda/deactivate.d"

mkdir -p "${ACTIVATE_DIR}"
mkdir -p "${DEACTIVATE_DIR}"

cp "${RECIPE_DIR}/openfoam_activate.sh" "${ACTIVATE_DIR}/openfoam_activate.sh"
cp "${RECIPE_DIR}/openfoam_deactivate.sh" "${DEACTIVATE_DIR}/openfoam_deactivate.sh"
84 changes: 84 additions & 0 deletions recipes/openfoam/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{% set name = "openfoam" %}
{% set version = "v2412" %}
{% set build = 0 %}

package:
name: {{ name|lower }}
version: {{ version }}

source:
url: https://develop.openfoam.com/Development/openfoam/-/archive/OpenFOAM-{{ version }}/openfoam-OpenFOAM-{{ version }}.tar.gz
sha256: 27d06edb4a6ffc6f88a494edd3b289d5d0a0874866a416b6b0d0a26aba2d9c4a

build:
skip: True # [not linux]
number: {{ build }}
rpaths:
- lib/
- lib/sys-openmpi/
- lib/dummy/

requirements:
build:
- gcc
- gxx
#- openmpi
- make # [not win]
- ninja # [win]
- flex
- ncurses
- parmetis
- scotch
- ptscotch
- kahip
- petsc
- hypre
- zlib
host:
- gcc
- gxx
#- openmpi
- make # [not win]
- ninja # [win]
- flex
- ncurses
- parmetis
- scotch
- ptscotch
- kahip
- petsc
- hypre
- zlib
run:
#- openmpi
- flex
- ncurses
- parmetis
- scotch
- ptscotch
- kahip
- petsc
- hypre
- zlib

test:
commands:
- test -f ${PREFIX}/bin/blockMesh # [linux]
- ${PREFIX}/bin/foamTestTutorial -full incompressible/simpleFoam/pitzDaily

about:
home: https://openfoam.com/
summary: OpenFOAM-{{ version }}
description: |
OpenFOAM is a free, open source computational fluid dynamics (CFD)
software package released by the ESI.
license: GPL-3.0-only
license_family: GPL
license_file: COPYING
doc_url: https://www.openfoam.com/documentation/overview
dev_url: https://www.openfoam.com/download/openfoam-repositories

extra:
recipe-maintainers:
- ldallolio
- daviddanan
31 changes: 31 additions & 0 deletions recipes/openfoam/openfoam_activate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash

# set all env vars
export FOAM_SOLVERS=${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/applications/solvers
export FOAM_APPBIN=${CONDA_PREFIX}/bin
export FOAM_SITE_APPBIN=${CONDA_PREFIX}/bin
export FOAM_APP=${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/applications
export FOAM_SITE_LIBBIN=${CONDA_PREFIX}/lib
export FOAM_SRC=${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/src
export FOAM_UTILITIES=${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/applications/utilities
export FOAM_API=2212
export FOAM_USER_LIBBIN=${CONDA_PREFIX}/lib
export FOAM_ETC=${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/etc
export FOAM_MPI=sys-openmpi
export FOAM_LIBBIN=${CONDA_PREFIX}/lib
export FOAM_USER_APPBIN=${CONDA_PREFIX}/bin

export WM_ARCH=linux64
export WM_COMPILER_TYPE=system
export WM_PROJECT_VERSION=${PKG_VERSION}
export WM_COMPILER_LIB_ARCH=64
export WM_PROJECT_DIR="${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}"
export WM_LABEL_OPTION=Int32
export WM_PROJECT=OpenFOAM
export WM_COMPILER=Gcc
export WM_MPLIB=SYSTEMOPENMPI
export WM_COMPILE_OPTION=Opt
export WM_DIR="${CONDA_PREFIX}/include/OpenFOAM-${PKG_VERSION}/wmake"
export WM_LABEL_SIZE=32
export WM_OPTIONS=linux64GccDPInt32Opt
export WM_PRECISION_OPTION=DP
30 changes: 30 additions & 0 deletions recipes/openfoam/openfoam_deactivate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash

unset FOAM_SOLVERS
unset FOAM_APPBIN
unset FOAM_SITE_APPBIN
unset FOAM_APP
unset FOAM_SITE_LIBBIN
unset FOAM_SRC
unset FOAM_UTILITIES
unset FOAM_API
unset FOAM_USER_LIBBIN
unset FOAM_ETC
unset FOAM_MPI
unset FOAM_LIBBIN
unset FOAM_USER_APPBIN

unset WM_ARCH
unset WM_COMPILER_TYPE
unset WM_PROJECT_VERSION
unset WM_COMPILER_LIB_ARCH
unset WM_PROJECT_DIR
unset WM_LABEL_OPTION
unset WM_PROJECT
unset WM_COMPILER
unset WM_MPLIB
unset WM_COMPILE_OPTION
unset WM_DIR
unset WM_LABEL_SIZE
unset WM_OPTIONS
unset WM_PRECISION_OPTION
Loading