diff --git a/HPC/wrf/4.7.1/24.03-lts-sp2/Dockerfile b/HPC/wrf/4.7.1/24.03-lts-sp2/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..99c30db6a6bc5b194cd65893f8fa63b0d9865f14 --- /dev/null +++ b/HPC/wrf/4.7.1/24.03-lts-sp2/Dockerfile @@ -0,0 +1,94 @@ +ARG BASE=openeuler/openeuler:24.03-lts-sp2 +FROM ${BASE} + +ARG VERSION=4.7.1 +ARG TARGETARCH + +RUN yum install -y git gcc g++ glibc time tcsh wget gfortran libcurl-devel m4 \ + zlib-devel libpng-devel patch g2clib-devel cmake \ + libjpeg-turbo libjpeg-turbo-devel + +WORKDIR /tmp/sources + +RUN wget https://github.com/jasper-software/jasper/releases/download/version-2.0.33/jasper-2.0.33.tar.gz && \ + tar -xzf jasper-2.0.33.tar.gz && \ + rm -f jasper-2.0.33.tar.gz && \ + cd jasper-2.0.33/build && \ + cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local && \ + make -j$(nproc) && make install + +# Install all dependecy +ENV HDF5=/usr/local +ENV NETCDF=/usr/local +ENV JASPERINC=/usr/local/include +ENV JASPERLIB=/usr/local/lib64 +ENV LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH + +RUN wget -O mpich-3.3.2.tar.gz http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz && \ + tar zxf mpich-3.3.2.tar.gz && \ + cd mpich-3.3.2 && \ + ./configure \ + --prefix=/usr/local \ + FFLAGS="-w -fallow-argument-mismatch -O2" && \ + make -j "$(nproc)" install + +RUN wget -O hdf5-1.12.0.tar.gz https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.gz && \ + tar zxf hdf5-1.12.0.tar.gz && \ + cd hdf5-1.12.0 && \ + ./configure \ + --prefix=$HDF5 \ + --enable-fortran \ + --enable-static=yes \ + --enable-parallel \ + --enable-shared \ + CFLAGS="-O3 -fPIC -Wno-incompatible-pointer-types-discards-qualifiers -Wno-non-literal-null-conversion" \ + FCFLAGS="-O3 -fPIC" LDFLAGS="-Wl,--build-id" \ + --enable-fortran \ + --enable-parallel \ + CC=mpicc FC=mpif90 CXX=mpicxx && \ + make -j "$(nproc)" install + +RUN wget -O netcdf-c.tar.gz https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.7.4.tar.gz && \ + mkdir -p netcdf-c && tar vxf netcdf-c.tar.gz -C netcdf-c --strip-components=1 && \ + cd netcdf-c && \ + ./configure \ + --prefix=$NETCDF \ + LDFLAGS="-L$HDF5/lib" CPPFLAGS="-I$HDF5/include" CC=mpicc --disable-dap FC=mpif90 CXX=mpicxx && \ + make -j "$(nproc)" install && \ + ldconfig +RUN wget -O netcdf-fortran.tar.gz https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.3.tar.gz && \ + mkdir netcdf-fortran && tar -zvxf netcdf-fortran.tar.gz -C netcdf-fortran --strip-components=1 && \ + cd netcdf-fortran && \ + ./configure \ + --prefix=$NETCDF \ + CPPFLAGS="-I$HDF5/include -I$NETCDF/include" \ + LDFLAGS="-L$HDF5/lib -L$NETCDF/lib" \ + --enable-static=yes \ + --enable-shared \ + CFLAGS="-O3 -fPIC -Wno-incompatible-pointer-types-discards-qualifiers -Wno-non-literal-conversion" \ + FCFLAGS="-O3 -fPIC" LDFLAGS="-Wl,--build-id" \ + CC=mpicc FC=mpif90 CXX=mpicxx && \ + make -j "$(nproc)" install && \ + ldconfig && \ + rm -rf /tmp/sources + +WORKDIR /WRF +RUN git clone -b v${VERSION} --recursive https://github.com/wrf-model/WRF.git /WRF && \ + if [ "$TARGETARCH" = "amd64" ]; then \ + ./configure <<< $'34\r1\r' ; \ + elif [ "$TARGETARCH" = "arm64" ]; then \ + ./configure <<< $'4\r1\r'; \ + fi; \ + ./compile -j "$(nproc)" em_real + +WORKDIR /WPS + +RUN wget -O WPS.tar.gz https://github.com/wrf-model/WPS/archive/refs/tags/v4.6.0.tar.gz && \ + tar -zvxf WPS.tar.gz -C /WPS --strip-components=1 && \ + rm -f WPS.tar.gz + +COPY aarch64.patch /WPS/ + +RUN patch -Np1 < aarch64.patch && \ + ./configure <<< $'1\r' && \ + ./compile diff --git a/HPC/wrf/4.7.1/24.03-lts-sp2/aarch64.patch b/HPC/wrf/4.7.1/24.03-lts-sp2/aarch64.patch new file mode 100644 index 0000000000000000000000000000000000000000..6944d535e6abb31d51e4bff05f7e3582f842a2fb --- /dev/null +++ b/HPC/wrf/4.7.1/24.03-lts-sp2/aarch64.patch @@ -0,0 +1,37 @@ +diff --git a/arch/configure.defaults b/arch/configure.defaults +index cdb9407..c05b425 100644 +--- a/arch/configure.defaults ++++ b/arch/configure.defaults +@@ -214,6 +214,32 @@ CPP = /usr/bin/cpp -P -traditional + CPPFLAGS = -D_UNDERSCORE -DBYTESWAP -DLINUX -DIO_NETCDF -DBIT32 -DNO_SIGNAL CONFIGURE_MPI + RANLIB = ranlib + ++######################################################################################################################## ++#ARCH Linux aarch64, gfortran # serial serial_NO_GRIB2 dmpar dmpar_NO_GRIB2 ++# ++COMPRESSION_LIBS = CONFIGURE_COMP_L ++COMPRESSION_INC = CONFIGURE_COMP_I ++FDEFS = CONFIGURE_FDEFS ++SFC = gfortran ++SCC = gcc ++DM_FC = mpif90 ++DM_CC = mpicc ++FC = CONFIGURE_FC ++CC = CONFIGURE_CC ++LD = $(FC) ++FFLAGS = $(FORMAT_FREE) -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FORMAT_FIXED) -O -fconvert=big-endian -frecord-marker=4 ++FORMAT_FREE = -ffree-form ++FORMAT_FIXED = -ffixed-form ++FCCOMPAT = CONFIGURE_COMPAT_FLAGS ++FCSUFFIX = ++FNGFLAGS = $(FFLAGS) ++LDFLAGS = -fopenmp ++CFLAGS = ++CPP = /usr/bin/cpp -P -traditional ++CPPFLAGS = -D_UNDERSCORE -DBYTESWAP -DLINUX -DIO_NETCDF -DBIT32 -DNO_SIGNAL CONFIGURE_MPI ++RANLIB = ranlib ++ + ######################################################################################################################## + #ARCH Linux x86_64, PGI compiler # serial serial_NO_GRIB2 dmpar dmpar_NO_GRIB2 + # \ No newline at end of file diff --git a/HPC/wrf/README.md b/HPC/wrf/README.md index 0a8717cc78f036998068521a3f73462da912a3c1..4ee7fdadfdcf22d0c2f7ad540175619738fe501f 100644 --- a/HPC/wrf/README.md +++ b/HPC/wrf/README.md @@ -15,9 +15,13 @@ Learn more on [WRF website](https://www.mmm.ucar.edu/models/wrf). # Supported tags and respective Dockerfile links The tag of each `wrf` docker image is consist of the version of `wrf` and the version of basic image. The details are as follows -| Tag | Currently | Architectures | -|----------|-------------|------------------| -|[4.6.1-oe2403lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.6.1/24.03-lts/Dockerfile)| WRF 4.6.1 on openEuler 24.03-LTS | amd64, arm64 | + +| Tag | Currently | Architectures | +|---------------------------------------------------------------------------------------------------------------------------|--------------------------------------|---------------| +| [4.7.1-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.1/24.03-lts-sp2/Dockerfile) | WRF 4.7.1 on openEuler 24.03-LTS-SP2 | amd64, arm64 | +| [4.7.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.1/24.03-lts-sp1/Dockerfile) | WRF 4.7.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | +| [4.7.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.0/24.03-lts-sp1/Dockerfile) | WRF 4.7.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | +| [4.6.1-oe2403lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.6.1/24.03-lts/Dockerfile) | WRF 4.6.1 on openEuler 24.03-LTS | amd64, arm64 | # Usage Here, users can select the corresponding `{Tag}` by requirements. diff --git a/HPC/wrf/doc/image-info.yml b/HPC/wrf/doc/image-info.yml index cda55e13dcf07933d4dfe58b112f4cdc93a48fff..d0a9e4818b4f67921c355396e3d63198aa812063 100644 --- a/HPC/wrf/doc/image-info.yml +++ b/HPC/wrf/doc/image-info.yml @@ -10,9 +10,12 @@ environment: | tags: | WRF镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 - | Tag | Currently | Architectures | - |----------|-------------|------------------| - |[4.6.1-oe2403lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.6.1/24.03-lts/Dockerfile)| WRF 4.6.1 on openEuler 24.03-LTS | amd64, arm64 | + | Tag | Currently | Architectures | + |---------------------------------------------------------------------------------------------------------------------------|--------------------------------------|---------------| + | [4.7.1-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.1/24.03-lts-sp2/Dockerfile) | WRF 4.7.1 on openEuler 24.03-LTS-SP2 | amd64, arm64 | + | [4.7.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.1/24.03-lts-sp1/Dockerfile) | WRF 4.7.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + | [4.7.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.7.0/24.03-lts-sp1/Dockerfile) | WRF 4.7.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + | [4.6.1-oe2403lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/wrf/4.6.1/24.03-lts/Dockerfile) | WRF 4.6.1 on openEuler 24.03-LTS | amd64, arm64 | download: | 拉取镜像到本地 diff --git a/HPC/wrf/meta.yml b/HPC/wrf/meta.yml index 67e030e8b2624d5ba3319ec149081b96af14ab08..52749009ff25e15443ed8013603fc22dc80f1d37 100644 --- a/HPC/wrf/meta.yml +++ b/HPC/wrf/meta.yml @@ -3,4 +3,6 @@ 4.7.0-oe2403sp1: path: HPC/wrf/4.7.0/24.03-lts-sp1/Dockerfile 4.7.1-oe2403sp1: - path: 4.7.1/24.03-lts-sp1/Dockerfile \ No newline at end of file + path: 4.7.1/24.03-lts-sp1/Dockerfile +4.7.1-oe2403sp2: + path: 4.7.1/24.03-lts-sp2/Dockerfile \ No newline at end of file