上海交大超算OF容器制作第二篇

首先,请浏览我写的第一篇内容,链接如下

https://blog.csdn.net/joshua_shi_t/article/details/124604379

现在,我已经将第一篇中的容器定义文件更新了,安装了GMSH,并且编译安装了OpenFOAM-5,6,7,8,9,v1206,使用source /etc/bashrc &&${OF90} 激活某个版本的OpenFOAM,容器定义文件如下。

siyuan1.DockerFile

# siyuan1.DockerFile centos:8 
FROM centos:8 
RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* && \
    sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-* 
RUN yum update -y && \
    rm -rf /var/cache/yum/* 
RUN yum install -y \
        tree \
        vim \
        git \
        bzip2 \
        wget && \
    rm -rf /var/cache/yum/* 
RUN echo "basic tools completed !! " 
RUN yum install -y \
        mesa-libGLU \
        libXrender \
        libXcursor \
        libXft \
        libXinerama \
        libgomp \
        && \
    rm -rf /var/cache/yum/* 
RUN echo "gmsh basic libs completed !! " 
RUN mkdir -p opt/GMSH/ && \
    cd opt/GMSH/ && \
    wget http://www.gmsh.info/bin/Linux/gmsh-4.4.0-Linux64.tgz && \
    tar -xzvf gmsh-4.4.0-Linux64.tgz && \
    rm -rvf gmsh-4.4.0-Linux64.tgz && \
    echo "export PATH='$PATH':/opt/GMSH/gmsh-4.4.0-Linux64/bin " >> /etc/bashrc 
RUN echo "gmsh 4.4.0 completed !! " 
RUN yum install -y \
    epel-release \
    cmake3 \
    make \
    patch \
    flex \
    bison \
    zlib-devel \
    boost-system \
    boost-thread \
    readline-devel \
    ncurses-devel \
    gcc-c++ \
    gcc \
    openmpi \
    openmpi-devel \
    boost \
    openssl && \
    rm -rf /var/cache/yum/* 
RUN echo "OpenFOAM tools completed !! " 
RUN echo "192.30.255.113 github.com" >> /etc/hosts 
RUN echo "export PATH='$PATH':/usr/lib64/openmpi/bin:/usr/lib64/openmpi/bin/mpicc " >> /etc/bashrc 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/xinxinzhou1995/OpenFOAM-4.x && \
    git clone https://gitee.com/xinxinzhou1995/ThirdParty-4.x 
RUN echo "OpenFOAM 4.x download completed !!" 
RUN echo "export OF40='source /opt/OpenFOAM/OpenFOAM-4.x/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-4.x && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF40} # && 
    # ./Allwmake -j 
# RUN echo "OpenFOAM 4.x make completed !! " 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/Allenxcw/OpenFOAM-5.x && \
    git clone https://gitee.com/Allenxcw/ThirdParty-5.x 
RUN echo "OpenFOAM 5.x download completed !!" 
RUN echo "export OF50='source /opt/OpenFOAM/OpenFOAM-5.x/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-5.x && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF50} && \
    ./Allwmake -j 
RUN echo "OpenFOAM 5.x make completed !! " 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/diyboy/OpenFOAM-6 && \
    git clone https://gitee.com/diyboy/ThirdParty-6 
RUN echo "OpenFOAM 6.0 download completed !!" 
RUN echo "export OF60='source /opt/OpenFOAM/OpenFOAM-6/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-6 && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF60} && \
    ./Allwmake -j 
RUN echo "OpenFOAM 6.0 make completed !! " 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/zhouxu2012/OpenFOAM-7 && \
    git clone https://gitee.com/zhouxu2012/ThirdParty-7 
RUN echo "OpenFOAM 7.0 download completed !!" 
RUN echo "export OF70='source /opt/OpenFOAM/OpenFOAM-7/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-7 && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF70} && \
    ./Allwmake -j 
RUN echo "OpenFOAM 7.0 make completed !! " 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/zzw0799/OpenFOAM-8 && \
    git clone https://gitee.com/zzw0799/ThirdParty-8 
RUN echo "OpenFOAM 8.0 download completed !!" 
RUN echo "export OF80='source /opt/OpenFOAM/OpenFOAM-8/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-8 && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF80} && \
    ./Allwmake -j 
RUN echo "OpenFOAM 8.0 make completed !! " 
RUN mkdir -p /opt && \
    export BUILD_DIR=/opt/OpenFOAM && \
    mkdir -p $BUILD_DIR && \
    cd $BUILD_DIR && \
    git clone https://gitee.com/cjthermo/OpenFOAM-9 && \
    git clone https://gitee.com/cjthermo/ThirdParty-9 
RUN echo "OpenFOAM 9.0 download completed !!" 
RUN echo "export OF90='source /opt/OpenFOAM/OpenFOAM-9/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-9 && \
    ncount=$(grep -n 'export FOAM_INST_DIR=\$HOME/\$WM_PROJECT' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i "${ncount}a export FOAM_INST_DIR=/opt/\$WM_PROJECT" etc/bashrc && \
    source /etc/bashrc && \
    ${OF90} && \
    ./Allwmake -j 
RUN echo "OpenFOAM 9.0 make completed !! " 
RUN cd /opt/OpenFOAM/ && \
    wget https://sourceforge.net/projects/openfoam/files/v2106/OpenFOAM-v2106.tgz && \
    wget https://sourceforge.net/projects/openfoam/files/v2106/ThirdParty-v2106.tgz && \
    tar -xzvf OpenFOAM-v2106.tgz && \
    rm -rvf OpenFOAM-v2106.tgz && \
    tar -xzvf ThirdParty-v2106.tgz && \
    rm -rvf ThirdParty-v2106.tgz 
RUN echo "OpenFOAM v2106 download completed !!" 
RUN echo "export OFv2106='source /opt/OpenFOAM/OpenFOAM-v2106/etc/bashrc ' " >> /etc/bashrc && \
    cd /opt/OpenFOAM/OpenFOAM-v2106 && \
    ncount=$(grep -n 'projectDir=\"\$HOME/OpenFOAM/OpenFOAM-\$WM_PROJECT_VERSION\"' etc/bashrc | cut -f1 --delimiter=':') && \
    sed -i "${ncount}d" etc/bashrc && \
    ncount=$(($ncount-1)) && \
    sed -i ${ncount}'a projectDir="/opt/openfoam/OpenFOAM-\$WM_PROJECT_VERSION"' etc/bashrc && \
    source /etc/bashrc && \
    ${OFv2106} && \
    ./Allwmake -j 
RUN echo "OpenFOAM v2106 make completed !! " 

接下来讲一下如何使用容器

1.编译自己写的求解器

export myOFenv2=OF70 &&
myScript2=". /etc/bashrc " &&
myScript2=${myScript2}"&&\${"${myOFenv2}"} " &&
myScript2=${myScript2}"&&wclean "${mySolverPath}" " &&
myScript2=${myScript2}"&&wmake "${mySolverPath}" " &&
myScript2=${myScript2}"&&wclean "${mySolverPath}" " &&
singularity exec ../../../siyuan1.sif /bin/bash -c "${myScript2}" 

2.划分网格

myScript2="source /etc/bashrc " &&
myScript2=${myScript2}"&&\${"${myOFenv2}"} " &&
myScript2=${myScript2}"&&/opt/GMSH/gmsh-4.4.0-Linux64/bin/gmsh ./constant/geometry/"${myMsh}".geo -3 -format msh22 " &&
myScript2=${myScript2}"&&gmshToFoam ./constant/geometry/"${myMsh}".msh " &&
myScript2=${myScript2}"&&renumberMesh -overwrite -noFunctionObjects " &&
myScript2=${myScript2}"&&setFields -dict ./system/setFD_aw " &&
myScript2=${myScript2}"&&checkMesh " &&
myScript2=${myScript2}"&&decomposePar -force " &&
singularity exec ${IMAGE_NAME} /bin/bash -c "${myScript2}" 

3.运行算例

#!/bin/bash

#SBATCH --job-name=myCase
#SBATCH --partition=64c512g
#SBATCH -N 1
#SBATCH --ntasks-per-node=default
#SBATCH --output=%j.out
#SBATCH --error=%j.err

module purge &&
module --ignore-cache load "openmpi/4.1.1-gcc-9.3.0" &&
IMAGE_NAME=/dssg/home/acct-naoxb/naoxb/tongxin/siyuan1.sif &&
myScript2="source /etc/bashrc " &&
myScript2=${myScript2}"&&\${"${myOFenv2}"} " &&
myScript2=${myScript2}"&&"${myAppBin}" -parallel " &&
echo "begin mpi running " &&
echo "myScript2 is: "${myScript2} &&
echo "myAppBin is: "${myAppBin} &&
mpirun -n ${SLURM_NTASKS} singularity exec ${IMAGE_NAME} /bin/bash -c "${myScript2}" &&
echo "end mpi running " &&
myScript2="source /etc/bashrc " &&
myScript2=${myScript2}"&&\${"${myOFenv2}"} " &&
myScript2=${myScript2}"&&reconstructPar " &&
singularity exec ${IMAGE_NAME} /bin/bash -c "${myScript2}" 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越前列线打造非凡yt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值