#!/bin/sh # # 初期値生成スクリプトサンプルその 2 96/03/01 S.Takehiro # # src/prep/xmkinit.tmpl に初期分布を与える関数を # このスクリプトで追加し, 初期値生成プログラムを作成・実行する. # # 注意 : 解像度を src/Mkinclude ファイルで指定してあることを確認 # make lib を実行し, 用いる解像度のライブラリを作っておく # ##################### 以下環境に合わせて変更する ####################### # # bsnsq_2d インストールディレクトリ名 BSNDIR=$HOME/model/bsnsq_2d # # 初期値データファイルを置くディレクトリ DATADIR=$BSNDIR/data/sample # # 初期値データファイル名(パス名除く) INITDAT=sample2.init DFORMAT=UR4 # 単精度 ### DFORMAT=UR8 # 倍精度 # # 計算領域の大きさ XLENGTH=10.0 ZLENGTH=1.0 # # 初期値分布プログラム名(一時ファイル) XMKINITBUNPU=$BSNDIR/cntl/sample/init2.F # #################### 初期値分布を与える #################### cat << SHOKI_END > $XMKINITBUNPU **************************************************** REAL FUNCTION PSIINI( X, Z ) REAL X, Z PSIINI = 10*(1.0 - Z) C PSIINI = 0.0 RETURN END * REAL FUNCTION TINI( X, Z ) REAL X, Z TINI = 1.0 - Z & + EXP( -( (X-$XLENGTH/2)**2+(Z-$ZLENGTH/4)**2 ) & /($ZLENGTH/10)**2 ) IF ( Z .EQ. 0.0 ) TINI = 1.0 IF ( Z .EQ. 1.0 ) TINI = 0.0 * RETURN END SHOKI_END # #### 以下変更の必要は少ないであろう ##### # # コンパイルされる初期値生成プログラム PREPDIR=$BSNDIR/src/prep XMKINITF=$PREPDIR/xmkinit.F # # 初期値生成プログラムテンプレート名 XMKINITTMPL=$PREPDIR/xmkinit.tmpl # cd $PREPDIR cat $XMKINITTMPL $XMKINITBUNPU > $XMKINITF ######################################################################## make init << END_OF_DATA # # Control File for bsnsq_2d init # &NMRUN RUN='TEST', SIGN='$USER' &end &NMTIME &END &NMINTG &END # # 計算領域の大きさ # &NMCORD XLNGTH= $XLENGTH, ZLNGTH= $ZLENGTH &END # # 境界条件 &NMBNDR RIGIDB= F, RIGIDT= F, TFIXB= T, TFIXT= T &END # # 初期値ファイル名 # &NMRSTR FILE='$INITDAT' DFMT='$DFORMAT' &END END_OF_DATA ############################# 設定ここまで ############################ # mv -i $INITDAT $DATADIR