[ 地球流体電脳倶楽部 / dcpam 公開領域 ] [ ディレクトリ管理の手引き / SIGEN ]

dcpam ビルドログ @ 宇宙研 SX

dcpam を宇宙研のスパコン(nysa)で動かす


  1. 準備
  2. ビルド
  3. dcpam の実行
  4. 注意
  5. 参考資料

準備

ライブラリのビルド

必要なファイルの取得

必要なファイル

http://www.gfd-dennou.org/arch/dcpam/dcpam5/dcpam5-20131008.tgz
ver. 20131008

コンパイラーモードの設定

> sxmode

でコンパイラーのモードを知ることができる sx-8rとsx-9用がある(sx-9は大規模計算用)

> compver -sx8r

ビルド

dcpam

ビルドは, nysa の /large/t/t583/work/dcpam 以下で行う.

> tar xvf dcpam5-20131008.tgz
> mv dcpam5-20131008 dcpam5-2013-10-18_src_20131008_-DSLTTFULLMONOTONIC_-DVECTOR

> export FC=sxf90
> export FFLAGS='-DSLTTFULLMONOTONIC -DVECTOR -ftrace'
> export AR=sxar
> export ARFLAGS=rv
> export RANLIB=touch
> export SYSLDFLAGS=-ftrace
> export SYSFFLAGS="-w -dW -sx8r -Wf'-pvctl loopcnt=65536 \
 nodivloop noloopchg fullmsg -L fmtlist transform -O -M noinv'"

> ./configure --with-ispack=${HOME}/local/ispack-1.0.2-sx8r/lib/libisp.a \
              --with-netcdf=${HOME}/local/netcdf-3.6.1-sx8r/lib/libnetcdf.a \
              --with-gtool5=${HOME}/local/gtool5-20101228-1-sx8r/lib/libgtool5.a \
              --with-spml=${HOME}/local/spml-svn_snapshot-20130411-sx8r/lib/libspml-vec.a

ftrace を使わない場合には, FFLAGS, SYSLDFLAGS の -ftrace を除く.

コンパイル

> make 

dcpam の実行

作業ディレクトリは,

/large/t/t583/work/dcpam/dcpam5-2013-10-18_src_20131008_-DSLTTFULLMONOTONIC/practice/Earth

とする. 最後のディレクトリの名前は実験によって変更する.

cd /large/t/t583/work/dcpam/dcpam5-2013-10-18_src_20131008_-DSLTTFULLMONOTONIC/practice/Earth

実行用のスクリプトは,

<URL:prepare.sh>, <URL:run_T.sh> (or <URL:run_S.sh>)

を用いる.

上のファイルで実行するディレクトリを指定している部分 (Topdir) を

/large/t/t583/work/dcpam/dcpam5-2013-10-18_src_20131008_-DSLTTFULLMONOTONIC/practice/Earth

に変更する

初期データを作成

> qsub ./prepare.sh

計算の実行

> qsub ./run_T.sh

注意

src/radiation/rad_C2001.f90 の 960 行目

次の行はエラーとなる.

xyrr_TransElem(:,:,k,kk) = xyrr_TransElem(:,:,k,kk)**CoefN

(xyrr_TransElem(:,:,k,kk) の値が小さすぎるところでエラーとなる). そこで下のように書き換える.

where ( xyrr_TransElem(:,:,k,kk) >= 1.0d-10 )
  xyrr_TransElem(:,:,k,kk) = xyrr_TransElem(:,:,k,kk)**CoefN
elsewhere
  xyrr_TransElem(:,:,k,kk) = 0.0_DP
end where

src/util/mass_fixer.f90 の 307 行目

次の行はエラーとなる.

xy_FactAlphaDenom = xy_FactAlphaDenom                               &
  & + xyzf_QMix   (:,:,k,n)                                         &
  & * abs( xyzf_QMix(:,:,k,n) - xyzf_QMixRefLV(:,:,k,n) )**FactBeta &
  & * xyz_DelMass(:,:,k)

そこで下のように書き換える.

where ( abs( xyzf_QMix(:,:,k,n) - xyzf_QMixRefLV(:,:,k,n) ) >=1.0d-30 )
   xy_FactAlphaDenom = xy_FactAlphaDenom                               &
        & + xyzf_QMix   (:,:,k,n)                                      &
        & * abs( xyzf_QMix(:,:,k,n) - xyzf_QMixRefLV(:,:,k,n) )**FactBeta &
        & * xyz_DelMass(:,:,k)
elsewhere
   xy_FactAlphaDenom = xy_FactAlphaDenom
end where

src/util/mass_fixer.f90 の 320 行目

次の行はエラーとなる.

xyzf_QMix(:,:,:,n) = xyzf_QMix(:,:,:,n) &
  & + FactAlpha * xyzf_QMix(:,:,:,n)    &
  &     * abs( xyzf_QMix(:,:,:,n) - xyzf_QMixRefLV(:,:,:,n) )**FactBeta

そこで下のように書き換える.

where( abs( xyzf_QMix(:,:,:,n) - xyzf_QMixRefLV(:,:,:,n) ) > 1.0d-30 )
   xyzf_QMix(:,:,:,n) = xyzf_QMix(:,:,:,n) &
       & + FactAlpha * xyzf_QMix(:,:,:,n)    &
       &     * abs( xyzf_QMix(:,:,:,n) - xyzf_QMixRefLV(:,:,:,n) )**FactBeta
elsewhere
   xyzf_QMix(:,:,:,n) = xyzf_QMix(:,:,:,n)
end where

参考資料


DCPAM Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: unknown, Since: unknown