いや、最終確認というよりきちんとモデルの中(コード)のパラメーターを確認するのは初めてかもしれない。
確認してわかったことは、PISCESは改良されつづけているようだが改良の変更点を明確にしたマニュアルが現時点では残念ながらないようだ。僕はAumontが2006年に出した論文の補足資料としてウェブ上にあるマニュアル(ftp://ftp.agu.org/apend/gb/2005gb002591/)を参考に論文を書いていただけに残念だ。これ以後PISCES式やパラメーターは微調整されていろんなエンドユーザーに使われているんだがモデルを紹介するときはみな上記論文を引用している。これじゃblack boxを使っているのと同じじゃないか…。
っということで上記論文からNEMO3.4.1版まででの相違点・変更をパラメーターを周辺にまとめてみることに。
&nampisbio ! biological parameters
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
nrdttrc = 1 ! time step frequency for biology
wsbio = 2. ! POC sinking speed
xkmort = 2.E-7 ! half saturation constant for mortality
ferat3 = 10.E-6 ! Fe/C in zooplankton
wsbio2 = 30. ! Big particles sinking speed
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampislim ! parameters for nutrient limitations
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
conc0 = 1.E-6 ! Phosphate half saturation
conc1 = 8.E-6 ! Phosphate half saturation for diatoms
conc2 = 1.E-9 ! Iron half saturation for phyto
conc2m = 3.E-9 ! Max iron half saturation for phyto
conc3 = 3.E-9 ! Iron half saturation for diatoms
conc3m = 8.E-9 ! Maxi iron half saturation for diatoms
xsizedia = 1.E-6 ! Minimum size criteria for diatoms
xsizephy = 1.E-6 ! Minimum size criteria for phyto
concnnh4 = 1.E-7 ! NH4 half saturation for phyto
concdnh4 = 8.E-7 ! NH4 half saturation for diatoms
xksi1 = 2.E-6 ! half saturation constant for Si uptake
xksi2 = 333.E-8 ! half saturation constant for Si/C
xkdoc = 417.E-6 ! half-saturation constant of DOC remineralization
concfebac = 1.E-11 ! Half-saturation for Fe limitation of Bacteria
qnfelim = 7.E-6 ! Optimal quota of phyto
qdfelim = 7.E-6 ! Optimal quota of diatoms
caco3r = 16.E-2 ! mean rain ratio
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampisprod ! parameters for phytoplankton growth
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
pislope = 2. ! P-I slope
pislope2 = 2. ! P-I slope for diatoms
excret = 5.E-2 ! excretion ratio of phytoplankton
excret2 = 5.E-2 ! excretion ratio of diatoms
ln_newprod = .true. ! Enable new parame. of production (T/F)
bresp = 333.E-5 ! Basal respiration rate
chlcnm = 33.E-3 ! Minimum Chl/C in nanophytoplankton
chlcdm = 5.E-2 ! Minimum Chl/C in diatoms
chlcmin = 33.E-4 ! Maximum Chl/c in phytoplankton
!後のミニマムとマキシマム逆。
fecnm = 40.E-6 ! Maximum Fe/C in nanophytoplankton
fecdm = 40.E-6 ! Minimum Fe/C in diatoms
grosip = 151.E-3 ! mean Si/C ratio
これはマニュアルでは0.14の定数として記されている。
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampismort ! parameters for phytoplankton sinks
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
wchl = 1.E-3 ! quadratic mortality of phytoplankton
wchld = 2.E-2 ! maximum quadratic mortality of diatoms
mprat = 1.E-2 ! phytoplankton mortality rate
mprat2 = 1.E-2 ! Diatoms mortality rate
mpratm = 1.E-2 ! Phytoplankton minimum mortality rate
こいつは使われていないのになぜか存在する。
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampismes ! parameters for mesozooplankton
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
part2 = 75.E-2 ! part of calcite not dissolved in mesozoo guts
grazrat2 = 7.E-1 ! maximal mesozoo grazing rate
resrat2 = 5.E-3 ! exsudation rate of mesozooplankton
mzrat2 = 3.E-2 ! mesozooplankton mortality rate
xprefc = 1. ! zoo preference for phyto
xprefp = 3.E-1 ! zoo preference for POC
xprefz = 1. ! zoo preference for zoo
xprefpoc = 3.E-1 ! zoo preference for poc
このへんのインデックス要注意。今まで「2」はmesozooplanktonを表すために使われていたのにこれらのパラメーターのときだけ逆になっとる(この場合xpref2cはmicrozooplanktonに関連している)。
xthresh2zoo = 1.E-8 ! zoo feeding threshold for mesozooplankton
xthresh2dia = 1.E-8 ! diatoms feeding threshold for mesozooplankton
xthresh2phy = 1.E-8 ! nanophyto feeding threshold for mesozooplankton
xthresh2poc = 1.E-8 ! poc feeding threshold for mesozooplankton
xthresh2 = 2.E-7 ! Food threshold for grazing
xkgraz2 = 20.E-6 ! half sturation constant for meso grazing
epsher2 = 3.E-1 ! Efficicency of Mesozoo growth
sigma2 = 6.E-1 ! Fraction of mesozoo excretion as DOM
unass2 = 3.E-1 ! non assimilated fraction of P by mesozoo
grazflux = 2.E3 ! flux-feeding rate
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampiszoo ! parameters for microzooplankton
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
part = 5.E-1 ! part of calcite not dissolved in microzoo gutsa
grazrat = 3.0 ! maximal zoo grazing rate
resrat = 3.E-2 ! exsudation rate of zooplankton
mzrat = 1.E-3 ! zooplankton mortality rate
捕食されるのはmesozooplanktonのみとマニュアルには書いてあったのにコードではこれも計算されてるっぽい…。そして変動はzooplankton量に対しsquare dependencyのはずなのにコードを見る限りでは二乗されてないと思うんだが。。。
xpref2c = 1.E-1 ! Microzoo preference for POM
xpref2p = 1. ! Microzoo preference for Nanophyto
xpref2d = 5.E-1 ! Microzoo preference for Diatoms
xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton
xthreshphy = 1.E-8 ! Nanophyto feeding threshold for microzooplankton
xthreshpoc = 1.E-8 ! POC feeding threshold for microzooplankton
xthresh = 2.E-7 ! Food threshold for feeding
xkgraz = 20.E-6 ! half sturation constant for grazing
epsher = 3.E-1 ! Efficiency of microzoo growth
sigma1 = 6.E-1 ! Fraction of microzoo excretion as DOM
unass = 3.E-1 ! non assimilated fraction of phyto by zoo
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampisrem ! parameters for remineralization
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
xremik = 25.E-2 ! remineralization rate of DOC
xremip = 25.E-3 ! remineralisation rate of POC
これと一致するパラメータはマニュアルの式では記述されてない。
nitrif = 5.E-2 ! NH4 nitrification rate
xsirem = 3.E-3 ! remineralization rate of Si
xsiremlab = 25.E-3 ! fast remineralization rate of Si
xsilab = 31.E-2 ! Fraction of labile biogenic silica
xlam1 = 5.E-3 ! scavenging rate of Iron
oxymin = 1.E-6 ! Half-saturation constant for anoxia
ligand = 6.E-10 ! Ligands concentration
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampiscal ! parameters for Calcite chemistry
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
kdca = 6. ! calcite dissolution rate constant (1/time)
nca = 1. ! order of dissolution reaction (dimensionless)
2013年6月27日木曜日
2013年6月24日月曜日
Sensitivity Analysisだん
I ended up rewriting the script (sensitivityanalysis.sh) to resolve the precision errors involving floats with ACEnet clusters' Bash. It is probably better to avoid using decimals in Bash. I have adjusted the script and namelist_pisces accordingly (see the notes on the script for details).
Here is my script and it should be the final version:
# Sensitivity Analysis of PISCES model parameters
# INSTRUCTIONS
#
# The value before the exponent (E) in namelist_pisces for all PISCES parameters has to be an integer. If it involves a number after the decimal place, you have to rewrite it using E. This is to avoid floating precision errors involved in Bash.
# For Example, If a1 = 0.034E-5, rewrite it as a1 = 34.E-7. If a2 = 99.9, rewrite it as a2 = 999.E-1. etc...
#
#END of INSTRUCTIONS
# Start of Input. Modify below #
# set of names of parameters to analyze.
set_parnam="wsbio xkmort ferat3 wsbio2 conc0 conc1 conc2 conc2m conc3 conc3m xsizedia xsizephy concnnh4 concdnh4 xksi1 xksi2 xkdoc concfebac qnfelim qdfelim caco3r pislope pislope2 excret excret2 bresp chlcnm chlcdm chlcmin fecnm fecdm grosip wchl wchld mprat mprat2 mpratm part2 grazrat2 resrat2 mzrat2 xprefc xprefp xprefz xprefpoc xthresh2zoo xthresh2dia xthresh2phy xthresh2poc xthresh2 xkgraz2 epsher2 sigma2 unass2 grazflux part grazrat resrat mzrat xpref2c xpref2p xpref2d xthreshdia xthreshphy xthreshpoc xthresh xkgraz epsher sigma1 unass xremik xremip nitrif xsirem xsiremlab xsilab xlam1 oxymin ligand kdca nca"
# set of the corresponding values to the above set (excluding exponents (E) if there are any).
set_stdval="2. 2. 10. 30. 1. 8. 1. 3. 3. 8. 1. 1. 1. 8. 2. 333. 417. 1. 7. 7. 16. 2. 2. 5. 5. 333. 33. 5. 33. 40. 40. 151. 1. 2. 1. 1. 1. 75. 7. 5. 3. 1. 3. 1. 3. 1. 1. 1. 1. 2. 20. 3. 6. 3. 2. 5. 3. 3. 1. 1. 1. 5. 1. 1. 1. 2. 20. 3. 6. 3. 25. 25. 5. 3. 25. 31. 5. 1. 6. 6. 1."
# End of Input. Do NOT modify below #
parnam=($set_parnam)
stdval=($set_stdval)
count=${#parnam[@]}
floats=1 # Number of float precision
for it in `seq 1 $count`
do
para=0
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
for newnum in $(seq `echo "scale=${floats};${stdval[$it-1]}/2" | bc` `echo "scales=${floats};${stdval[$it-1]}/10" | bc` `echo "scales=${floats};${stdval[$it-1]}/2+${stdval[$it-1]}" | bc`)
do
sed -i -r "s/${parnam[$it-1]}\s+=\s+[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam[$it-1]}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for ${parnam[$it-1]}" >> SA_stat.txt
sed -i -r "s/${parnam[$it-1]} += +[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${stdval[$it-1]}/" namelist_pisces
このスクリプトはquequeで走らせるのではなくhead nodeで走らせないと10倍の時間がかかる。1Dの場合head nodeで走らせたとしても20%ぐらいのCPUしか使用されないので
nohup sensitivityanalysis.sh > SA.out
というふうにすることに。
またいつか使うときが来るといいけど。
Here is my script and it should be the final version:
# Sensitivity Analysis of PISCES model parameters
# INSTRUCTIONS
#
# The value before the exponent (E) in namelist_pisces for all PISCES parameters has to be an integer. If it involves a number after the decimal place, you have to rewrite it using E. This is to avoid floating precision errors involved in Bash.
# For Example, If a1 = 0.034E-5, rewrite it as a1 = 34.E-7. If a2 = 99.9, rewrite it as a2 = 999.E-1. etc...
#
#END of INSTRUCTIONS
# Start of Input. Modify below #
# set of names of parameters to analyze.
set_parnam="wsbio xkmort ferat3 wsbio2 conc0 conc1 conc2 conc2m conc3 conc3m xsizedia xsizephy concnnh4 concdnh4 xksi1 xksi2 xkdoc concfebac qnfelim qdfelim caco3r pislope pislope2 excret excret2 bresp chlcnm chlcdm chlcmin fecnm fecdm grosip wchl wchld mprat mprat2 mpratm part2 grazrat2 resrat2 mzrat2 xprefc xprefp xprefz xprefpoc xthresh2zoo xthresh2dia xthresh2phy xthresh2poc xthresh2 xkgraz2 epsher2 sigma2 unass2 grazflux part grazrat resrat mzrat xpref2c xpref2p xpref2d xthreshdia xthreshphy xthreshpoc xthresh xkgraz epsher sigma1 unass xremik xremip nitrif xsirem xsiremlab xsilab xlam1 oxymin ligand kdca nca"
# set of the corresponding values to the above set (excluding exponents (E) if there are any).
set_stdval="2. 2. 10. 30. 1. 8. 1. 3. 3. 8. 1. 1. 1. 8. 2. 333. 417. 1. 7. 7. 16. 2. 2. 5. 5. 333. 33. 5. 33. 40. 40. 151. 1. 2. 1. 1. 1. 75. 7. 5. 3. 1. 3. 1. 3. 1. 1. 1. 1. 2. 20. 3. 6. 3. 2. 5. 3. 3. 1. 1. 1. 5. 1. 1. 1. 2. 20. 3. 6. 3. 25. 25. 5. 3. 25. 31. 5. 1. 6. 6. 1."
# End of Input. Do NOT modify below #
parnam=($set_parnam)
stdval=($set_stdval)
count=${#parnam[@]}
floats=1 # Number of float precision
for it in `seq 1 $count`
do
para=0
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
for newnum in $(seq `echo "scale=${floats};${stdval[$it-1]}/2" | bc` `echo "scales=${floats};${stdval[$it-1]}/10" | bc` `echo "scales=${floats};${stdval[$it-1]}/2+${stdval[$it-1]}" | bc`)
do
sed -i -r "s/${parnam[$it-1]}\s+=\s+[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam[$it-1]}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for ${parnam[$it-1]}" >> SA_stat.txt
sed -i -r "s/${parnam[$it-1]} += +[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${stdval[$it-1]}/" namelist_pisces
このスクリプトはquequeで走らせるのではなくhead nodeで走らせないと10倍の時間がかかる。1Dの場合head nodeで走らせたとしても20%ぐらいのCPUしか使用されないので
nohup sensitivityanalysis.sh > SA.out
というふうにすることに。
またいつか使うときが来るといいけど。
2013年6月23日日曜日
同じshellなのに?
sensitivityanalysis.shが一晩走らせたら終わっていたのでMatlabで結果を解析してみると変なエラーがあることに気づいた。それは、二つのパラメータ(excret, excret2)のときだけ11回されるはずのシミュレーションが10回しかされていなかった。この二つが共通して他のパラメータと違う点はデフォルト値が0.05ということ。
そしていろいろ調べた結果:
for it in `seq 0.025 0.005 0.075`; do echo "$it"; done
すると不思議なことに双方で結果に違いがあった。
Macbook:
0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07
0.075
Placentia:
0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07
もちろん正しいのは前者。なぜか後者では最後のiterationがされていない。これを他の数字で検証してみる。
for it in `seq 0.025 0.005 0.085`; do echo "$it"; done
すると、
0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07
0.075
0.08
0.085
という解答が両者から得られた。
0.075はマジックナンバーなのか???
他のユーザーに同じことしてもらってもし同じ解答が得られたらACEnetに聞いてみよう。
さらに調べてみると他にもxsiremlab, nitrif, xremip, xpref2c, chlcdmも11回目のイタレーションは行われていなかった。これらのデフォルト値はそれぞれ、0.025, 0.05, 0.025, 0.1, 0.05である。これらの数字の規則性は何か。
もしACEnetが何もできないというのであればifを使ってスクリプトをtweakしないといけないな。
さらに調べてみると他にもxsiremlab, nitrif, xremip, xpref2c, chlcdmも11回目のイタレーションは行われていなかった。これらのデフォルト値はそれぞれ、0.025, 0.05, 0.025, 0.1, 0.05である。これらの数字の規則性は何か。
もしACEnetが何もできないというのであればifを使ってスクリプトをtweakしないといけないな。
2013年6月22日土曜日
for do done (shell scripting)
「seq: zero increment」再び!
少数の計算でまた不都合が発生してしていた。今回は「0.05×0.1=0」となってしまう現象。scale=6だから0.005は表示されるはずだと思ったんだがなぁ。
「bc -l」で解決!
ネットで検索して解決策が見つかった。そしてそれはあまりにもシンプルすぎた。
bcに「-l」のオプションを付け加えるだけでかけ算も割り算も支障なくできるようになった。このオプションデフォルトでいるだろって感じだが、bcを使うときはつけるように心がけたい。
「sensitivityanalysis.sh」最終的なスクリプト!
またいつか同じような計算をするかもしれないという将来的なことも考えてPISCESモデルパラメータの各名称&デフォルト値をリストダウンしてスクリプトを作成しておくことにする。これはバージョン3.4.1なので他ではirrelevantな場合多いにあり。
# Start of Input. Modify below #
# set of names of parameters to analyze.
set_parnam="wsbio xkmort ferat3 wsbio2 conc0 conc1 conc2 conc2m conc3 conc3m xsizedia xsizephy concnnh4 concdnh4 xksi1 xksi2 xkdoc concfebac qnfelim qdfelim caco3r pislope pislope2 excret excret2 bresp chlcnm chlcdm chlcmin fecnm fecdm grosip wchl wchld mprat mprat2 mpratm part2 grazrat2 resrat2 mzrat2 xprefc xprefp xprefz xprefpoc xthresh2zoo xthresh2dia xthresh2phy xthresh2poc xthresh2 xkgraz2 epsher2 sigma2 unass2 grazflux part grazrat resrat mzrat xpref2c xpref2p xpref2d xthreshdia xthreshphy xthreshpoc xthresh xkgraz epsher sigma1 unass xremik xremip nitrif xsirem xsiremlab xsilab xlam1 oxymin ligand kdca nca"
# set of standard PISCES values of the above parameters (omitting Exponents if there are any).
floats=6 # number of decimal places. ⇦⇦⇦これは別に必要なかったが簡素化するため。
# End of Input. Do NOT modify below #
parnam=($set_parnam)
stdval=($set_stdval)
count=${#parnam[@]}
for it in `seq 1 $count`
do
para=0
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
for newnum in $(seq `echo "scale=${floats};${stdval[$it-1]}/2" | bc -l` `echo "scales=${floats};${stdval[$it-1]}/10" | bc -l` `echo "scales=${floats};${stdval[$it-1]}/2+${stdval[$it-1]}" | bc -l`)
do
sed -i -r "s/${parnam[$it-1]}\s+=\s+[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam[$it-1]}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for ${parnam[$it-1]}" >> SA_stat.txt
sed -i -r "s/${parnam[$it-1]} += +[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${stdval[$it-1]}/" namelist_pisces
done
2013年6月21日金曜日
sensitivity analysis続き
ACEnet: Placentia
我がメモリアル大のスパコンクラスターPlacentiaのhead nodeとshort.qで計算時間に違いが。前者だと5分で終わる計算が後者だと1時間もかかった。違いは何か。メモリ(
RAM)量?とりあえずhead nodeのときは容量がわからない。short.qではデフォルト値が2GB。
short.qで8GBメモリリクエストすると50分で計算できた。大して変わらない。Placentiaはユーザー数が多いせいか本来より長い時間かかるような気がする。
PISCESのパラメーターが80ちかくあることに気づいたのでループを新しくスクリプトに追加することにした。以下がコード:
# Start of Input. Modify below #
set_parnam="conc3 conc3m" # set of names of parameters to analyze.
set_stdval="3.0 8.0" # set of standard PISCES values of the above parameters.
floats=6 # number of decimal places.
# End of Input. Do NOT modify below #
parnam=($set_parnam)
stdval=($set_stdval)
count=${#parnam[@]}
for it in `seq 1 $count`
do
para=0
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
for newnum in $(seq `echo "scale=${floats};${stdval[$it-1]}*0.5" | bc` `echo "scales=${floats};${stdval[$it-1]}*0.1" | bc` `echo "scales=${floats};${stdval[$it-1]}*0.5+${stdval[$it-1]}" | bc`)
do
sed -i -r "s/${parnam[$it-1]}\s+=\s+[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam[$it-1]}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for ${parnam[$it-1]}" >> SA_stat.txt
sed -i -r "s/${parnam[$it-1]} += +[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${stdval[$it-1]}/" namelist_pisces
done
ちょっと手こずったのは青色でハイライトされているところ。少数計算はechoとbcコマンドを使ってできることは知ったが割り算で答えが1以下になる場合は0となってしまう問題があることに気づいた。例えば:
echo "1/2" | bc
と入力しても0.5という答えにはならず「0」となってしまう。
どうしたら良いか考えた結果、割り算をかけ算に直すことにした。例えばさっきの場合だと1÷2ではなくて1× 0.5と置き換えることにした。割り算は極力避けた方がいいかもな。たぶん解決策はあるんだろうけど。
このスクリプトをhead nodeで試してみると2つのパラメータで合計20分で計算できた。ひとつあたり10分計算。早い。しかもcpuもそんなに使わない(20%程度)なのでたぶん走らせといても何も言われないだろう。nohupで夜行列車モードだな。
short.qで8GBメモリリクエストすると50分で計算できた。大して変わらない。Placentiaはユーザー数が多いせいか本来より長い時間かかるような気がする。
PISCESのパラメーターが80ちかくあることに気づいたのでループを新しくスクリプトに追加することにした。以下がコード:
# Start of Input. Modify below #
set_parnam="conc3 conc3m" # set of names of parameters to analyze.
set_stdval="3.0 8.0" # set of standard PISCES values of the above parameters.
floats=6 # number of decimal places.
# End of Input. Do NOT modify below #
parnam=($set_parnam)
stdval=($set_stdval)
count=${#parnam[@]}
for it in `seq 1 $count`
do
para=0
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
for newnum in $(seq `echo "scale=${floats};${stdval[$it-1]}*0.5" | bc` `echo "scales=${floats};${stdval[$it-1]}*0.1" | bc` `echo "scales=${floats};${stdval[$it-1]}*0.5+${stdval[$it-1]}" | bc`)
do
sed -i -r "s/${parnam[$it-1]}\s+=\s+[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam[$it-1]} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam[$it-1]}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for ${parnam[$it-1]}" >> SA_stat.txt
sed -i -r "s/${parnam[$it-1]} += +[0-9]+\.*[0-9]*/${parnam[$it-1]} = ${stdval[$it-1]}/" namelist_pisces
done
ちょっと手こずったのは青色でハイライトされているところ。少数計算はechoとbcコマンドを使ってできることは知ったが割り算で答えが1以下になる場合は0となってしまう問題があることに気づいた。例えば:
echo "1/2" | bc
と入力しても0.5という答えにはならず「0」となってしまう。
どうしたら良いか考えた結果、割り算をかけ算に直すことにした。例えばさっきの場合だと1÷2ではなくて1× 0.5と置き換えることにした。割り算は極力避けた方がいいかもな。たぶん解決策はあるんだろうけど。
このスクリプトをhead nodeで試してみると2つのパラメータで合計20分で計算できた。ひとつあたり10分計算。早い。しかもcpuもそんなに使わない(20%程度)なのでたぶん走らせといても何も言われないだろう。nohupで夜行列車モードだな。
bashな一日
今日はsensitivity analysisのためにBashでスクリプティングを久しぶりにやった。去年の夏に計算科学の授業をとったとき以来の複雑さ。
もちろん忘れてしまったコマンドなんかもたくさんあるので去年作ったファイルを使って記憶を呼び戻すことに…そのファイルの中からいくつかエラーが出てきた。。。去年の自分、解決させないまま放置していたということか…。
sed -ie ... filename としていたんですが、これだと編集されたファイルと同じファイルで名前の語尾にオプション名として入力したはずのeが含まれたファイルが作成されているkとに気づきました。これを防ぐために各オプションは離して定義するほうがいいみたいです。例えば:
sed -i -e ... filename
っというふうに。
なぜか、正規表現を使っていたにも関わらず-eのオプションで大丈夫だったのが不思議だ。今日作ったスクリプトはこちら:
parnam=xkmort
ininum=2.
para=0
echo $para >> SA_stat.txt
grep "${parnam} " namelist_pisces >> SA_stat.txt
for newnum in $(seq 1.0 0.2 3.0)
do
sed -i -r "s/${parnam}\s+=\s+[0-9]+\.*[0-9]*/${parnam} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for $parnam" >> SA_stat.txt
sed -i -r "s/${parnam} += +[0-9]+\.*[0-9]*/${parnam} = ${ininum}/" namelist_pisces
そんなこんなで昔作ったシェルスクリプトを参考にしてsensitivity.shというファイルを作成。これはquequeで動くように作ったんだがそんなに計算時間がかからないのと扱うデータも少ないのでヘッドノードで走らせてもいいかなと思いtest_SA.shというのを作成(上記スクリプト)してこっちを使ってSensitivity Analysisを開始。ひとつのパラメータにつき5分もあれば終わるので300分も費やせば終わるので月曜までには間に合いそう。あとはミスを犯すことなくスムーズに進むことを祈るのみ。
namelist_piscesを見て気づいたことが…。パラメータを数えてみると80あった。多すぎやろ。。ループザループに変更するべきだな。
…頑張ろう、バッシュスクリプティング。正直自分がコンピューターサイエンスの学生ではないかと思うことがある今日この頃です。
参考文献: http://linuxjm.sourceforge.jp/html/GNU_sed/man1/sed.1.html
もちろん忘れてしまったコマンドなんかもたくさんあるので去年作ったファイルを使って記憶を呼び戻すことに…そのファイルの中からいくつかエラーが出てきた。。。去年の自分、解決させないまま放置していたということか…。
sed
sedのオプションに関して少し。複数のオプション(for example, "i" & "e")を使うときに僕の古いファイルは:sed -ie ... filename としていたんですが、これだと編集されたファイルと同じファイルで名前の語尾にオプション名として入力したはずのeが含まれたファイルが作成されているkとに気づきました。これを防ぐために各オプションは離して定義するほうがいいみたいです。例えば:
sed -i -e ... filename
っというふうに。
なぜか、正規表現を使っていたにも関わらず-eのオプションで大丈夫だったのが不思議だ。今日作ったスクリプトはこちら:
parnam=xkmort
ininum=2.
para=0
echo $para >> SA_stat.txt
grep "${parnam} " namelist_pisces >> SA_stat.txt
for newnum in $(seq 1.0 0.2 3.0)
do
sed -i -r "s/${parnam}\s+=\s+[0-9]+\.*[0-9]*/${parnam} = ${newnum}/" namelist_pisces
./opa
para=$((${para}+1))
echo $para >> SA_stat.txt
grep "${parnam} " namelist_pisces >> SA_stat.txt
mv LABSEA_1m*_ptrc_T.nc ../MY_SRC/SA/${parnam}${para}.nc
rm LABSEA_*restart*.nc
done
echo "end of run for $parnam" >> SA_stat.txt
sed -i -r "s/${parnam} += +[0-9]+\.*[0-9]*/${parnam} = ${ininum}/" namelist_pisces
そんなこんなで昔作ったシェルスクリプトを参考にしてsensitivity.shというファイルを作成。これはquequeで動くように作ったんだがそんなに計算時間がかからないのと扱うデータも少ないのでヘッドノードで走らせてもいいかなと思いtest_SA.shというのを作成(上記スクリプト)してこっちを使ってSensitivity Analysisを開始。ひとつのパラメータにつき5分もあれば終わるので300分も費やせば終わるので月曜までには間に合いそう。あとはミスを犯すことなくスムーズに進むことを祈るのみ。
namelist_piscesを見て気づいたことが…。パラメータを数えてみると80あった。多すぎやろ。。ループザループに変更するべきだな。
…頑張ろう、バッシュスクリプティング。正直自分がコンピューターサイエンスの学生ではないかと思うことがある今日この頃です。
参考文献: http://linuxjm.sourceforge.jp/html/GNU_sed/man1/sed.1.html
2013年6月20日木曜日
寝違えた
今日は寝違えてしまって朝から仕事に手がつかんかった…。なんとなくだが、寝違えるときはいつも寒い環境の中で寝ていたような気がする。今朝の寝違えが起きたのはファジル後二度寝したあと。ちょっと寒いなと思いながらも布団にくるまって温まろうと思ったんだが暖房の温度あげとくべきだったかな。
学校には昼過ぎまでしかおらんかったけんあまり進まんかったけどいくつかまた発見があった。
学校には昼過ぎまでしかおらんかったけんあまり進まんかったけどいくつかまた発見があった。
- the file "nemogcm.F90" in WORK directory for online configuration is not the same file as for the offline configuration.. this is confusing since the two files share the same name.
- diurnal cycle of PAR may not be computed by PISCES.
明日には首の調子が回復するといいけど。
明日すること:
Station 15 (stn15)の1987年のオフライン物理的条件のもとsensitivity analysisをする。各パラメータをデフォルト値から±50%、10%間隔で変動させる。sensitivityを比べるのは6月の珪藻のクロロフィル量(DCHL)。デフォルトではこの月に珪藻が最高値を迎える。
とりあえず次のミーティングがある月曜日までに結果を出さなければいけない。
2013年6月19日水曜日
NaN in 1D?!!
1-D Offline Simulation
Case: run2 (1994 5-day mean dynamical fields. dt=8760s)Wow, it is kind of rare ---> NaN was found in "tracer.stat" for station 15 and 25, but NOT 8.
After checking all the tracers in "ptrc_T 1m" file, I noticed that the NaN is associated only with DIC and Alkalini, and everything else ran without any problem.
This may imply that it is not the time step, but maybe how these two tracers are computed in the model.
Case: run3 (only for station 15. same as run2 except dt=17520s)
...Still, NaN at 5612, exactly at the same time as run2.
---> It turns out that the offline dynamics for grid_T were not rebuild well, perhaps because it is a huge file (~25GB) so maybe there was some errors during computation (more about rebuild: http://www.nemo-ocean.eu/Using-NEMO/FAQ#eztoc1028_10_28).
Case: run4 (only for station 15. same as run2 except jpizoom=297 (shifted few points to the West, where the vertical structures are not affected by the rebuild errors).
0-D Configuration
The purpose is to use PISCES in zero-dimensional or box to study the model sensitivity without physical effects. I am modifying the model code to implement this. Here's what I have touched so far:
nemogcm.F90
By default, number of modeled vertical levels = number of vertical levels in input data. I changed the code so that the former will be 1:
jpk = jpkdta ! third dim
!ModB
#if defined key_box
jpk = 1 ! 0-D box model (Hakase)
#endif
!ModE
Here, I defined jpk = 1, with a new cpp key called "key_box".
---> This did not work as there requires at least 3 vertical levels just like the horizontal grid structure in 1-D configuration (3 x 3 x z-level). but havent tested with jpk = 3 yet.
dtadyn.F90
This file reads and interpolates offline dynamics. There are up to 19 sets of data:
INTEGER , PARAMETER :: jpfld = 19 ! maximum number of files to read
INTEGER , SAVE :: jf_tem ! index of temperature
INTEGER , SAVE :: jf_sal ! index of salinity
INTEGER , SAVE :: jf_uwd ! index of u-wind
INTEGER , SAVE :: jf_vwd ! index of v-wind
INTEGER , SAVE :: jf_wwd ! index of w-wind
INTEGER , SAVE :: jf_avt ! index of Kz
INTEGER , SAVE :: jf_mld ! index of mixed layer deptht
INTEGER , SAVE :: jf_emp ! index of water flux
INTEGER , SAVE :: jf_qsr ! index of solar radiation
INTEGER , SAVE :: jf_wnd ! index of wind speed
INTEGER , SAVE :: jf_ice ! index of sea ice cover
INTEGER , SAVE :: jf_ubl ! index of u-bbl coef
INTEGER , SAVE :: jf_vbl ! index of v-bbl coef
INTEGER , SAVE :: jf_ahu ! index of u-diffusivity coef
INTEGER , SAVE :: jf_ahv ! index of v-diffusivity coef
INTEGER , SAVE :: jf_ahw ! index of w-diffusivity coef
INTEGER , SAVE :: jf_eiu ! index of u-eiv
INTEGER , SAVE :: jf_eiv ! index of v-eiv
INTEGER , SAVE :: jf_eiw ! index of w-eiv
The goal is to make these constant throughout time, so that PISCES will not be independent of physical forcing. Since this configuration is spatially independent, I used ORCA2_LIM_PISCES as the reference configuration. To learn about regional (customized domain), it might be a good idea to take a look at the code in GYRE_LOBSTER configuration.
Biogeochemical modeling with PISCES
REVIEW of other people's work!
Regional model (Mediterranean sea)
http://www.nemo-ocean.eu/content/download/24943/111257/version/1/file/Dutay_NEMO_User_2012.pdf- 2012
- 1/12 degree
- Spectral nudging
- Optimization of 14 parameters with YAO software (1-D data assimilation at 1 station)
Global model
http://www.google.ca/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CDEQFjAB&url=http%3A%2F%2Fwww.nemo-ocean.eu%2Fcontent%2Fdownload%2F7567%2F41030%2Ffile%2FC_Moulin.pdf&ei=9LDBUcTnCYvH0AGC3ICgDQ&usg=AFQjCNHJ5lUel1LU8eHPfNi0u8rNUXhg9w&sig2=LSK67Wfl0roL5n-0gyjhXQ&bvm=bv.47883778,d.dmQ- 2009
- Initial step: Optimization of 6 parameters (growing, mortality, grazing) with YAO (1-D at 1 station)
- Clear improvement at the considered station, but not for other locations: Parameters are specific to the station or at least to the local biogeochemical conditions.
- Increase optimized parameters from 6 to 45 and optimize at not only 1 but at 5 stations.
- Limit the optimized range.
- The improvement from the standard set of parameters is significant for surface Chl, without modifying the ocean dynamics.
- Extended and published work with 45 parameter optimization at 5 stations
- http://onlinelibrary.wiley.com/doi/10.1029/2009JC006005/abstract
- Out of 60 parameters, 15 were set to standard values as they were considered insensitive (<1% variation).
- The remaining 45 parameters were assimilated for 15 different observational profiles at 5 locations.
- Based on the above procedure, decide the final set of 45 optimized parameters for 3-D run, and compare its results with the run with the standard set of parameters.
- Validation with vertical profiles at 5 stations and surface chlorophyll.
2013年6月18日火曜日
クルアーンの中で「海」について述べられている節をまとめました。
書こう書こうと思いながらなかなか書けなかったのですが、トロントからシェイフ・アブダライドリスがセントジョンズへ来られてアンヌールモスクにて講義が開かれたときのことについて少し書くことにします…
シャイフがユース(青年)に向けての講義をされた翌朝、モスクでのファジル礼拝後、空港まで他のブラザー3人と一緒に送迎にいきました。
待ち時間にお話しする機会があったのですが海洋学を勉強しているということを伝えると、
「クルアーンの中には『海』に関する記述がいくつかあるのでインデックスから探して読んでみなさい。」
と言われました。そしてクルアーンの海に関する記述に感銘を受けた海洋学者(のちにジャック=イヴ・クストー/Jacques-Yves Cousteauであったと判明)のことも教えてくれました。詳しくは☞http://wikiislam.net/wiki/Jacques_Cousteau_(Conversion_to_Islam)
帰ってから早速クルアーンの後ろのページにあるインデックスを開いてみると、クルアーンに記述されている事柄がトピック別にまとめられてありました。興味のある事柄をこうやって検索してクルアーンにもっともっと接する機会を設けるとアッラーの啓示も理解することができるのではないかと思いました。
「海」に関しては全部で43節ありました。以下にその43節を載せておきます(日本語訳はhttp://www2.dokidoki.ne.jp/racket/koran_frame.htmlより引用させてもらいました):
2章50節
またわれがあなたがたのために海を分けて、あなたがたを救い、あなたがたが見ている前で、フィルアウンの一族を溺れさせた時のことを思い起せ。
2章164節
本当に天と地の創造、昼夜の交替、人を益するものを運んで海原をゆく船の中に、またアッラーが天から降らせて死んだ大地を甦らせ、生きとし生けるものを地上に広く散らばせる雨の中に、また風向きの変換、果ては天地の間にあって奉仕する雲の中に、理解ある者への(アッラーの)印がある。
5章96節
海で漁撈し、また獲物を食べることは、あなたがたにも旅人にも許されている。だが陸上の狩猟は、巡礼着の間は禁じられる。アッラーを畏れなさい。あなたがたはかれの御許に集められるのである。
6章59節
幽玄界の鍵はかれの御許にあり、かれの外には誰もこれを知らない。かれは陸と海にある凡てのものを知っておられる。一枚の木の葉でも、かれがそれを知らずに落ちることはなく、また大地の暗闇の中の一粒の穀物でも、生気があるのか、または枯れているのか、明瞭な天の書の中にないものはないのである。
6章63節
言ってやるがいい。「陸と海の暗闇の中から、あなたがたを救うのは誰か。あなたがたは心虚しく、畏れかしこんでかれに祈る。『あなたがもし、これからわたしたちを御救いになれば、わたしたちは必ず感謝を捧げる。』と。」
6章97節
かれこそは、あなたがたのため群星を置かれた方で、あなたがたはそれによって、暗黒の陸でも海でも(正しい道に)導かれる。われは知識ある人びとに印の特恵を与えている。
7章138節
われはイスラエルの子孫に海を渡らせたが、かれらはある偶像に仕えているある民族のところに来た。かれらは言った。「ムーサーよ、かれらが持っている神々のような一柱の神を、わたしたちに置いてくれ。」かれは言った。「本当にあなたがたは無知の民である。
7章163節
海岸の町(の人びと)に就いて、かれらに問え。かれらが安息日(の禁)を破った時のことを、魚群はかれらの安息日に水面に現われやって来ていた。だがかれらが安息日の禁を守らなかった時は、それらはやって来なくなったではないか。このようにわれはかれらを試みた。かれらが主の掟に背いていたためである。
10章22節
かれこそはあなたがたを陸に、また海に旅をさせられる御方である。それであなたがたが船に乗る時、それが順風に乗って航行すれば、かれらはそれで喜ぶ。暴風が襲うと、大波が四方から押し寄せ、かれらはもうこれまでだと観念して、アッラーに向かって、信心を尽くして祈る。「あなたが、もしわたしたちをこれから救い下されば、必ず感謝を捧げる者になります。」
10章90節
われは、イスラエルの子孫に海を渡らせ、フィルアウンとその軍勢は、暴虐と敵意に満ちてかれらを追跡した。溺れ死にそうになった時、かれ(フィルアウン)は言った。「わたしは信仰いたします。イスラエルの子孫が信仰するかれの外に、神はありません。わたしは服従、帰依する者です。」
14章32節
アッラーこそは、天と地を創造され、天から雨を降らせ、これによって果実を実らせられ、あなたがたのために御恵みになられる方である。また船をあなたがたに操縦させ、かれの命令によって海上を航行させられる。また川をあなたがたの用に服させられる。
16章14節
かれこそは、海洋を(人間に)使役させられる方で、それによってあなたがたは鮮魚を食べ、また服飾に用いられるものをそれから採り、またかれの恩恵を求めて、その中に波を切って進む船を見る。必ずあなたがたは感謝するであろう。
17章66節
主こそは船をあなたがたのため海に航行させ、かれの恩恵を求めさせる方である。本当にかれは、あなたがたに対しいつも慈悲深くあられる。
17章67節
あなたがたが海上で災難にあうと、かれ以外にあなたがたが祈るものは見捨てる。だがかれが陸に救って下さると、あなたがたは背き去る。人間はいつも恩を忘れる。
17章70節
われはアーダムの子孫を重んじて海陸にかれらを運び、また種々の良い(暮らし向きのための)ものを支給し、またわれが創造した多くの優れたものの上に、かれらを優越させたのである
18章61節
しかしかれらが、2つ(の海)の出会った地点に辿り着いた時、かれらの魚(のこと)を忘れていたので、それは海に道をとって、すっと逃げ失せてしまった。
18章62節
かれら両人が(そこを)過ぎ去った時、かれ(ム-サー)は従者に言った。「わたしたちの朝食を出しなさい。わたしたちは、この旅で本当に疲れ果てた。」
18章63節
かれは(答えて)言った。「あなたは御分りでしょうか。わたしたちが岩の上で休んだ時、わたしはすっかりその魚(のこと)を忘れていました。これに就いて、(あなたに)告げることを忘れさせたのは、悪魔に違いありません。それは、海に道をとって逃げました。不思議なこともあるものです。」
18章79節
「舟に就いていうと、それは海で働く或る貧乏人たちの所有であった。わたしがそれを役立たないようにしようとしたのは、かれらの背後に一人の王がいて、凡ての舟を強奪するためであった。
18章109節
言ってやるがいい。「仮令海が、主の御言葉を記すための墨であっても、主の御言葉が尽きない中に、海は必ず使い尽くされよう。たとえわたしたちが(他の)それと同じ(海)を補充のために持っても。
20章77節
われはムーサーに啓示した。「われのしもべたちと共に夜に旅立って、かれら(イスラエルの民)のために、海の中に乾いた道を(あなたの杖で)打ち開け。(フィルアウンの軍勢に)追い付かれることを心配するな。また(海を)恐がることはない。」
22章65節
あなたは見ないのか。アッラーは地上の凡てのものをあなたがたに従わせ、かれの命令によって、船を海上に走らせられる。また天をかれの御許しなく地上に落ちないよう支えられる。本当にアッラーは人間に、優しく慈悲を垂れられる御方である。
24章40節
また(不信者の状態は)、深海の暗黒のようなもので、波がかれらを覆い、その上に(また)波があり、その上を(更に)雲が覆っている。暗黒の上に暗黒が重なる。かれが手を差し伸べても凡んどそれは見られない。アッラーが光を与えられない者には、光はない。
25章53節
かれこそは、二つの海を分け隔てられた御方である。一つは甘くして旨い、外は塩辛くして苦い。両者の間に障壁を設け、完全に分離なされた。
26章63節
その時、われはムーサーに啓示した。「あなたの杖で海を打て。」するとそれは分れたが、それぞれの割れた部分は巨大な山のようであった。
27章61節
誰が、大地を不動の地となし、そこに川を設け、そこに山々を置いて安定させ、2つの海の間に隔壁を設けたのか。アッラーと共に(それが出来る外の)神があろうか。いや、かれらの多くは知らないのである。
27章62節
苦難のさいに祈る時、誰がそれに答えて災難を除き、あなたがたを地上の後継者とするのか。アッラーと共に(それが出来る外の)神があろうか。だがあなたがたは、少しも留意することがない。
27章63節
陸と海の暗黒の中で、あなたがたを導くのは誰か、また慈悲の前兆の吉報として、風を送るのは誰か。アッラーと共に(それが出来る外の)神があろうか。アッラーはかれらが(主に)配して崇めているもの(偶像)の上にいと高くおられる。
30章41節
人間の手が稼いだことのために、陸に海に荒廃がもう現われている。これは(アッラーが)、かれらの行ったことの一部を味わわせかれらを(悪から)戻らせるためである。
31章27節
仮令地上の凡ての木がペンであって、また海(が墨で)、その外に7つの海をそれに差し添えても、アッラーの御言葉は(書き)尽くすことは出来ない。本当にアッラーは、偉力ならびなく英明であられる。
31章31節
あなたは船が、アッラーの恵みで、大洋を航行するのを見ないのか。(それは)かれの印をあなたがたに示されたためではないか。本当にその中には、不断に耐え忍ぶ者と感謝する凡ての者のために、様々な印がある。
35章12節
2つの海は同じではない。(1つは)甘く、渇きを癒し、飲んで快よい。しかし、(外は)塩辛くて苦い。しかし、そのどれからも、新鮮な肉をとって食べ、またあなたがたが身に付ける、種々の装飾品も採取する。またあなたがたは、その中を船が(水を)切って進むのを見よう。それはあなたがたに、かれの恩恵を求めさせるためである。必ずあなたがたは感謝するであろう。
42章32節
また、かれの印の一つは船で、それはちょうど海の中を進む山のようである。
42章33節
もしかれの御心なら風を静められ、それで(船は)海面に泊ってしまう。本当にこの中には、よく耐え感謝する者への印がある。
42章34節
またかれは、(人びとが)自ら犯した罪のために、それら(船)を難破させることも出来る。だが(その罪の)多くを許される。
44章24節
そして海は(渡った後)分けたままにして置け。本当にかれらは、溺れてしまうことであろう。」
45章12節
アッラーこそは海をあなたがたに従わせられた方で、かれの御命令によって、船はそこを航行し、あなたがたはかれの恩恵(の通商往来)を追求する。それであなたがたは、感謝するであろう。
52章6節
漲り溢れる大洋にかけて(誓う)。
55章19節
かれは2つの海を一緒に合流させられる。
55章20節
(だが)両者の間には、(アッラーの配慮によって)障壁があり一方が他方を制圧することはない。
55章24節
山のように海上に帆を張る船は、かれの有である。
81章6節
大洋が沸きたち、溢れる時、
82章3節
諸大洋が溢れ出される時、
シャイフがユース(青年)に向けての講義をされた翌朝、モスクでのファジル礼拝後、空港まで他のブラザー3人と一緒に送迎にいきました。
待ち時間にお話しする機会があったのですが海洋学を勉強しているということを伝えると、
「クルアーンの中には『海』に関する記述がいくつかあるのでインデックスから探して読んでみなさい。」
と言われました。そしてクルアーンの海に関する記述に感銘を受けた海洋学者(のちにジャック=イヴ・クストー/Jacques-Yves Cousteauであったと判明)のことも教えてくれました。詳しくは☞http://wikiislam.net/wiki/Jacques_Cousteau_(Conversion_to_Islam)
帰ってから早速クルアーンの後ろのページにあるインデックスを開いてみると、クルアーンに記述されている事柄がトピック別にまとめられてありました。興味のある事柄をこうやって検索してクルアーンにもっともっと接する機会を設けるとアッラーの啓示も理解することができるのではないかと思いました。
「海」に関しては全部で43節ありました。以下にその43節を載せておきます(日本語訳はhttp://www2.dokidoki.ne.jp/racket/koran_frame.htmlより引用させてもらいました):
2章50節
またわれがあなたがたのために海を分けて、あなたがたを救い、あなたがたが見ている前で、フィルアウンの一族を溺れさせた時のことを思い起せ。
2章164節
本当に天と地の創造、昼夜の交替、人を益するものを運んで海原をゆく船の中に、またアッラーが天から降らせて死んだ大地を甦らせ、生きとし生けるものを地上に広く散らばせる雨の中に、また風向きの変換、果ては天地の間にあって奉仕する雲の中に、理解ある者への(アッラーの)印がある。
5章96節
海で漁撈し、また獲物を食べることは、あなたがたにも旅人にも許されている。だが陸上の狩猟は、巡礼着の間は禁じられる。アッラーを畏れなさい。あなたがたはかれの御許に集められるのである。
6章59節
幽玄界の鍵はかれの御許にあり、かれの外には誰もこれを知らない。かれは陸と海にある凡てのものを知っておられる。一枚の木の葉でも、かれがそれを知らずに落ちることはなく、また大地の暗闇の中の一粒の穀物でも、生気があるのか、または枯れているのか、明瞭な天の書の中にないものはないのである。
6章63節
言ってやるがいい。「陸と海の暗闇の中から、あなたがたを救うのは誰か。あなたがたは心虚しく、畏れかしこんでかれに祈る。『あなたがもし、これからわたしたちを御救いになれば、わたしたちは必ず感謝を捧げる。』と。」
6章97節
かれこそは、あなたがたのため群星を置かれた方で、あなたがたはそれによって、暗黒の陸でも海でも(正しい道に)導かれる。われは知識ある人びとに印の特恵を与えている。
7章138節
われはイスラエルの子孫に海を渡らせたが、かれらはある偶像に仕えているある民族のところに来た。かれらは言った。「ムーサーよ、かれらが持っている神々のような一柱の神を、わたしたちに置いてくれ。」かれは言った。「本当にあなたがたは無知の民である。
7章163節
海岸の町(の人びと)に就いて、かれらに問え。かれらが安息日(の禁)を破った時のことを、魚群はかれらの安息日に水面に現われやって来ていた。だがかれらが安息日の禁を守らなかった時は、それらはやって来なくなったではないか。このようにわれはかれらを試みた。かれらが主の掟に背いていたためである。
10章22節
かれこそはあなたがたを陸に、また海に旅をさせられる御方である。それであなたがたが船に乗る時、それが順風に乗って航行すれば、かれらはそれで喜ぶ。暴風が襲うと、大波が四方から押し寄せ、かれらはもうこれまでだと観念して、アッラーに向かって、信心を尽くして祈る。「あなたが、もしわたしたちをこれから救い下されば、必ず感謝を捧げる者になります。」
10章90節
われは、イスラエルの子孫に海を渡らせ、フィルアウンとその軍勢は、暴虐と敵意に満ちてかれらを追跡した。溺れ死にそうになった時、かれ(フィルアウン)は言った。「わたしは信仰いたします。イスラエルの子孫が信仰するかれの外に、神はありません。わたしは服従、帰依する者です。」
14章32節
アッラーこそは、天と地を創造され、天から雨を降らせ、これによって果実を実らせられ、あなたがたのために御恵みになられる方である。また船をあなたがたに操縦させ、かれの命令によって海上を航行させられる。また川をあなたがたの用に服させられる。
16章14節
かれこそは、海洋を(人間に)使役させられる方で、それによってあなたがたは鮮魚を食べ、また服飾に用いられるものをそれから採り、またかれの恩恵を求めて、その中に波を切って進む船を見る。必ずあなたがたは感謝するであろう。
17章66節
主こそは船をあなたがたのため海に航行させ、かれの恩恵を求めさせる方である。本当にかれは、あなたがたに対しいつも慈悲深くあられる。
17章67節
あなたがたが海上で災難にあうと、かれ以外にあなたがたが祈るものは見捨てる。だがかれが陸に救って下さると、あなたがたは背き去る。人間はいつも恩を忘れる。
17章70節
われはアーダムの子孫を重んじて海陸にかれらを運び、また種々の良い(暮らし向きのための)ものを支給し、またわれが創造した多くの優れたものの上に、かれらを優越させたのである
18章61節
しかしかれらが、2つ(の海)の出会った地点に辿り着いた時、かれらの魚(のこと)を忘れていたので、それは海に道をとって、すっと逃げ失せてしまった。
18章62節
かれら両人が(そこを)過ぎ去った時、かれ(ム-サー)は従者に言った。「わたしたちの朝食を出しなさい。わたしたちは、この旅で本当に疲れ果てた。」
18章63節
かれは(答えて)言った。「あなたは御分りでしょうか。わたしたちが岩の上で休んだ時、わたしはすっかりその魚(のこと)を忘れていました。これに就いて、(あなたに)告げることを忘れさせたのは、悪魔に違いありません。それは、海に道をとって逃げました。不思議なこともあるものです。」
18章79節
「舟に就いていうと、それは海で働く或る貧乏人たちの所有であった。わたしがそれを役立たないようにしようとしたのは、かれらの背後に一人の王がいて、凡ての舟を強奪するためであった。
18章109節
言ってやるがいい。「仮令海が、主の御言葉を記すための墨であっても、主の御言葉が尽きない中に、海は必ず使い尽くされよう。たとえわたしたちが(他の)それと同じ(海)を補充のために持っても。
20章77節
われはムーサーに啓示した。「われのしもべたちと共に夜に旅立って、かれら(イスラエルの民)のために、海の中に乾いた道を(あなたの杖で)打ち開け。(フィルアウンの軍勢に)追い付かれることを心配するな。また(海を)恐がることはない。」
22章65節
あなたは見ないのか。アッラーは地上の凡てのものをあなたがたに従わせ、かれの命令によって、船を海上に走らせられる。また天をかれの御許しなく地上に落ちないよう支えられる。本当にアッラーは人間に、優しく慈悲を垂れられる御方である。
24章40節
また(不信者の状態は)、深海の暗黒のようなもので、波がかれらを覆い、その上に(また)波があり、その上を(更に)雲が覆っている。暗黒の上に暗黒が重なる。かれが手を差し伸べても凡んどそれは見られない。アッラーが光を与えられない者には、光はない。
25章53節
かれこそは、二つの海を分け隔てられた御方である。一つは甘くして旨い、外は塩辛くして苦い。両者の間に障壁を設け、完全に分離なされた。
26章63節
その時、われはムーサーに啓示した。「あなたの杖で海を打て。」するとそれは分れたが、それぞれの割れた部分は巨大な山のようであった。
27章61節
誰が、大地を不動の地となし、そこに川を設け、そこに山々を置いて安定させ、2つの海の間に隔壁を設けたのか。アッラーと共に(それが出来る外の)神があろうか。いや、かれらの多くは知らないのである。
27章62節
苦難のさいに祈る時、誰がそれに答えて災難を除き、あなたがたを地上の後継者とするのか。アッラーと共に(それが出来る外の)神があろうか。だがあなたがたは、少しも留意することがない。
27章63節
陸と海の暗黒の中で、あなたがたを導くのは誰か、また慈悲の前兆の吉報として、風を送るのは誰か。アッラーと共に(それが出来る外の)神があろうか。アッラーはかれらが(主に)配して崇めているもの(偶像)の上にいと高くおられる。
30章41節
人間の手が稼いだことのために、陸に海に荒廃がもう現われている。これは(アッラーが)、かれらの行ったことの一部を味わわせかれらを(悪から)戻らせるためである。
31章27節
仮令地上の凡ての木がペンであって、また海(が墨で)、その外に7つの海をそれに差し添えても、アッラーの御言葉は(書き)尽くすことは出来ない。本当にアッラーは、偉力ならびなく英明であられる。
31章31節
あなたは船が、アッラーの恵みで、大洋を航行するのを見ないのか。(それは)かれの印をあなたがたに示されたためではないか。本当にその中には、不断に耐え忍ぶ者と感謝する凡ての者のために、様々な印がある。
35章12節
2つの海は同じではない。(1つは)甘く、渇きを癒し、飲んで快よい。しかし、(外は)塩辛くて苦い。しかし、そのどれからも、新鮮な肉をとって食べ、またあなたがたが身に付ける、種々の装飾品も採取する。またあなたがたは、その中を船が(水を)切って進むのを見よう。それはあなたがたに、かれの恩恵を求めさせるためである。必ずあなたがたは感謝するであろう。
42章32節
また、かれの印の一つは船で、それはちょうど海の中を進む山のようである。
42章33節
もしかれの御心なら風を静められ、それで(船は)海面に泊ってしまう。本当にこの中には、よく耐え感謝する者への印がある。
42章34節
またかれは、(人びとが)自ら犯した罪のために、それら(船)を難破させることも出来る。だが(その罪の)多くを許される。
44章24節
そして海は(渡った後)分けたままにして置け。本当にかれらは、溺れてしまうことであろう。」
45章12節
アッラーこそは海をあなたがたに従わせられた方で、かれの御命令によって、船はそこを航行し、あなたがたはかれの恩恵(の通商往来)を追求する。それであなたがたは、感謝するであろう。
52章6節
漲り溢れる大洋にかけて(誓う)。
55章19節
かれは2つの海を一緒に合流させられる。
55章20節
(だが)両者の間には、(アッラーの配慮によって)障壁があり一方が他方を制圧することはない。
55章24節
山のように海上に帆を張る船は、かれの有である。
81章6節
大洋が沸きたち、溢れる時、
82章3節
諸大洋が溢れ出される時、
New Dynamical Fields (5-day mean)
エ教授の物理モデルから5日平均のオフラインで使うデータがようやく手に入りました。これで月平均のデータを使ったシミュレーションと結果を比べることができます。
さっそくnamelistをいじって走らせてみたところいきなりエラーメッセージが!!!ocean.outputを見てみると:
iom_nf90_open ~~~ open existing file: ./Lab_T.nc in READ mode
---> ./Lab_T.nc OK
===>>> : E R R O R
===========
iom_get_123d, file: ./Lab_T.nc, var: votemper
start and count too big regarding to the size of the data,
(istart(4) + icnt(4) - 1) = 1752
is larger than idimsz(4) = 73
fld_init : time-interpolation for votemper read previous record = 1752 at time = -0.10 days
とありました。これは、すぐにわかりましたが、オフラインのデータの情報(data frequency)をnamelistに正しく伝えていませんでした。5日平均は時間に直すと120時間なので120に設定して再度スタート。
無事走りはじめました。時間分解能は1時間。どれも無事走っています:
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
5641371 0.51934 stn8 me r 06/18/2013 11:42:54 short.q@cl076.mun.acenet.ca 1
5641375 0.51934 stn25 me r 06/18/2013 11:50:34 short.q@cl166.mun.acenet.ca 1
5641374 0.51934 stn15 me r 06/18/2013 11:50:34 short.q@cl192.mun.acenet.ca 1
シミュレーションは679秒→約11分で終わりました。シミュレート時間は月平均のときと特にかわりはありませんでした。
結果をrun2と名付けて早速見てみたがデータが違う年のもの(月平均が1987で今回のが1994)だということもあるので結論を出すには少し時間がかかりそう。
ちなみに5日平均のデータ、大きすぎて自分のマックブックにはダウンロードできない。U&Vデータはそれぞれ4GB、Wは19GB、Tは25GB、合計53GB。でも、この中のデータ全部は使わないんだよなぁ。だからiodef.xmlで必要なデータだけ出力するようにすればいいんだが教授のニモは古いバージョンらしい。
5-day mean dataについてもうすこし。データ解析の際、データの時間分解能が5日平均だと月平均に変更するときに考えなければいけないのが、どこからどこまでが各月を表しているのか。毎回考えるが面倒なので昔作ったフォートランを検索するとあった:
以下は5日平均データがいつからいつまでが各月を表しているのかを示しています(例:一月は1~6、2月は7~12、…):
jan=(/(i,i=1,6)/)
feb=(/(i,i=7,12)/)
mar=(/(i,i=13,18)/)
apr=(/(i,i=19,24)/)
may=(/(i,i=25,30)/)
jun=(/(i,i=31,36)/)
jul=(/(i,i=37,42)/)
aug=(/(i,i=43,49)/)
sep=(/(i,i=50,55)/)
oct=(/(i,i=56,61)/)
nov=(/(i,i=62,67)/)
dec=(/(i,i=68,73)/)
ちなみに今日もうひとつわかったこと:
ncviewのインデックスは0からはじまるということ!危うく間違った計算をするとこだった。
さっそくnamelistをいじって走らせてみたところいきなりエラーメッセージが!!!ocean.outputを見てみると:
iom_nf90_open ~~~ open existing file: ./Lab_T.nc in READ mode
---> ./Lab_T.nc OK
===>>> : E R R O R
===========
iom_get_123d, file: ./Lab_T.nc, var: votemper
start and count too big regarding to the size of the data,
(istart(4) + icnt(4) - 1) = 1752
is larger than idimsz(4) = 73
fld_init : time-interpolation for votemper read previous record = 1752 at time = -0.10 days
とありました。これは、すぐにわかりましたが、オフラインのデータの情報(data frequency)をnamelistに正しく伝えていませんでした。5日平均は時間に直すと120時間なので120に設定して再度スタート。
無事走りはじめました。時間分解能は1時間。どれも無事走っています:
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
5641371 0.51934 stn8 me r 06/18/2013 11:42:54 short.q@cl076.mun.acenet.ca 1
5641375 0.51934 stn25 me r 06/18/2013 11:50:34 short.q@cl166.mun.acenet.ca 1
5641374 0.51934 stn15 me r 06/18/2013 11:50:34 short.q@cl192.mun.acenet.ca 1
シミュレーションは679秒→約11分で終わりました。シミュレート時間は月平均のときと特にかわりはありませんでした。
結果をrun2と名付けて早速見てみたがデータが違う年のもの(月平均が1987で今回のが1994)だということもあるので結論を出すには少し時間がかかりそう。
ちなみに5日平均のデータ、大きすぎて自分のマックブックにはダウンロードできない。U&Vデータはそれぞれ4GB、Wは19GB、Tは25GB、合計53GB。でも、この中のデータ全部は使わないんだよなぁ。だからiodef.xmlで必要なデータだけ出力するようにすればいいんだが教授のニモは古いバージョンらしい。
5-day mean dataについてもうすこし。データ解析の際、データの時間分解能が5日平均だと月平均に変更するときに考えなければいけないのが、どこからどこまでが各月を表しているのか。毎回考えるが面倒なので昔作ったフォートランを検索するとあった:
以下は5日平均データがいつからいつまでが各月を表しているのかを示しています(例:一月は1~6、2月は7~12、…):
jan=(/(i,i=1,6)/)
feb=(/(i,i=7,12)/)
mar=(/(i,i=13,18)/)
apr=(/(i,i=19,24)/)
may=(/(i,i=25,30)/)
jun=(/(i,i=31,36)/)
jul=(/(i,i=37,42)/)
aug=(/(i,i=43,49)/)
sep=(/(i,i=50,55)/)
oct=(/(i,i=56,61)/)
nov=(/(i,i=62,67)/)
dec=(/(i,i=68,73)/)
ちなみに今日もうひとつわかったこと:
ncviewのインデックスは0からはじまるということ!危うく間違った計算をするとこだった。
2013年6月17日月曜日
今年の目標
.هذا كتب これは本です
أهذا مسجد؟ これはマスジドですか?
ما هذا؟ これはなんですか?
はい、これは家です。.نعم، هذا بيت
.لا، هذا ولذ いいえ、これは少年です。
من هذا؟ これは、誰ですか?
هذا طالبこれは学生です。
أهذا رجل؟ これは男性ですか?
لا هذا تاجر いいえ、これはmerchantです。
هَذَا كَلْبٌ これは犬です。
⇧アラビア語のキーボードで打ってみました。iPadなら何とか使えるかも。キーボードの文字が表示されるからパソコンより簡単。でも長期的に考えたらブラインドタッチをマスターしたがいいだろなぁ。アラビア語キーボード用のシールが売ってあるそうですがあれを買おうかな。
とりあえず、これから少しずつアラビア語を勉強していくつもりです。ムスリムになってはや4年。最初の2年間はアラビア語をアルファベット表記に直された(⇦Transliterateという)ものを読んで後ろの章を暗記していました。そして遅かれながら去年の初め頃からアラビア文字を一つ一つノートに一ページずつ書いて覚えました(小学生でいう漢字ノートのような)。同時にイスラム学生会(⇦Muslim Students' Associationを略してMSAという)が大学でアラブ人じゃない人のためにアラビア語教室を開いてくれたのでそれにも参加して文字の発音の仕方や書き方を教わりました。
ラマダンが今年は七夕あたりから始まります。僕がムスリムになったのが西暦2009年のラマダンの前日(細かく言うと断食初日の前夜だったのでイスラム暦だとラマダン初日になる?)だったので毎年この時期になると自分がイスラム教徒になったときのことを思い出します。今年の目標は妻からもらったIqraという5冊の小冊子があるのですがそれを読み上げることです。もう3冊は読んでいるのであと2冊をラマダン中に読みます。Iqraはアラビア文字を読む練習のための本で最初のほうは母音(アイウ)で構成された一文字〜三文字を朗読して、だんだん他のルールが含まれて文字数が増えていって最終的にはクルアーンの節を朗読します。マレーシアでは子供のころにみんな読まされるそうです。
これができたら発音はとりあえず完了。そのあとは文法とかに取り組んでいきたいと思います。インシャアッラー。
みなさんのラマダンが素敵なものとなりますように。そしてイスラム教徒でない人はイスラム教徒の人たちと交流してみてください。普段は食べられない珍しい(そしておいしい)食べ物に出会えるはずですw
Mac「Mail」送信メールアカウントのデフォルトを変更する方法
macの付属アプリ「Mail」を使っているんですが、新規メールを送信するときってデフォルトのアカウントがiCloudになってませんか?
iCloudは基本的に使ってないので知り合いに間違ってこのアドレスで送ってしまったこともあるんですがたぶんスルーされていたりしていたはず。
なので、新規メールを送信する際にデフォルトで選択されているアカウントの変更することに。
まず初めに思いついたのが、Mail☞環境設定☞アカウントで登録しているアカウントの順番をドラッグ&ドロップで変更する方法。
意外にも無理でした。ドラッグできなかった。この方法は以下のフォーラムでも紹介されていたんですが2002年の情報だったので古いmacの話だったようです:
https://discussionsjapan.apple.com/thread/10042892?start=0&tstart=0
他にもいろいろ試したり検索しましたが見つかりませんでした。
そして、あまり期待せずに妻に相談してみることに…
すると、Mailアプリ内のメールボックス(受信箱)の順番をドラッグ&ドロップしてみたら?と言われやってみると…
…できました!
そして新規メールをクリックしてみたところ…
…デフォルトの送信メールのアカウントも変わってた!!
パソコン苦手な妻に感謝ですw
iCloudは基本的に使ってないので知り合いに間違ってこのアドレスで送ってしまったこともあるんですがたぶんスルーされていたりしていたはず。
なので、新規メールを送信する際にデフォルトで選択されているアカウントの変更することに。
まず初めに思いついたのが、Mail☞環境設定☞アカウントで登録しているアカウントの順番をドラッグ&ドロップで変更する方法。
意外にも無理でした。ドラッグできなかった。この方法は以下のフォーラムでも紹介されていたんですが2002年の情報だったので古いmacの話だったようです:
https://discussionsjapan.apple.com/thread/10042892?start=0&tstart=0
他にもいろいろ試したり検索しましたが見つかりませんでした。
そして、あまり期待せずに妻に相談してみることに…
すると、Mailアプリ内のメールボックス(受信箱)の順番をドラッグ&ドロップしてみたら?と言われやってみると…
…できました!
そして新規メールをクリックしてみたところ…
…デフォルトの送信メールのアカウントも変わってた!!
パソコン苦手な妻に感謝ですw
2013年6月16日日曜日
父の日
今日は父の日。
今までお世話になっていた感謝の気持ちを込めて、(金銭的に自立した?)大学院生になってからは毎年父には何か贈り物をするようにしています。海外にいるんですが楽天を利用してできるだけユニークなものを探しています。
今年はうどんセットを送りました。それのどこがユニークなのかというと産地直送のネギを2本箱に入れてくれるところです。父から写真が送られてきたので実際の箱の中はこんな感じ:
最後に…
父の日といえばこの曲!
今までお世話になっていた感謝の気持ちを込めて、(金銭的に自立した?)大学院生になってからは毎年父には何か贈り物をするようにしています。海外にいるんですが楽天を利用してできるだけユニークなものを探しています。
今年はうどんセットを送りました。それのどこがユニークなのかというと産地直送のネギを2本箱に入れてくれるところです。父から写真が送られてきたので実際の箱の中はこんな感じ:
父も大変喜んでくれているようでした。
贈り物はまだという方はおススメです☟☟☟
最後に…
父の日といえばこの曲!
2013年6月14日金曜日
Geostrophic Pressure
二酸化炭素フラックスの単位ってPgとGtをよく見かけるんだが双方は同じなんだろうか。
まずはじめのPgはPeta (P)とgram (g)、そしてGtはGiga (G)とtonne (t)。これらをSI Unit(kg)に直すことに。
P=10^15kg
g=10^-3kg
よって
Pg=10^12kg。
G=10^9kg
t=10^3kg
よって
Gt=10^12kg = Pg。
やっぱり同じだった。でも紛らわしいからどっちかに統一してほしい…。っていうか質量のSI Unitがkgってのがやっかいだな。なぜSI Unitにmetric prefixであるはずのkがついてるのかがわからん。そういう意味ではgで統一させてPgにしたがいいのかな。でも論文で添付してるIPCCの炭素循環の図がGtを使っていたような…。
~~~
Lavender et al. 2000がgeostrophic pressureを使ってsubpolar gyre内部のvector plotを説明しているので同じようにやってみることに。geostrophic pressureは学部2年のときにこの教科書で勉強した:http://oceanworld.tamu.edu/resources/ocng_textbook/chapter10/chapter10_02.htm。こういう風に授業で習ったことが研究でも扱われるとモチベーションあがる。
~~~
モデルはbeta5をdt=20分でシミュレーション完了。20分でも大丈夫そう。ってことで20分でとりあえずやっていこう。
まずはじめのPgはPeta (P)とgram (g)、そしてGtはGiga (G)とtonne (t)。これらをSI Unit(kg)に直すことに。
P=10^15kg
g=10^-3kg
よって
Pg=10^12kg。
G=10^9kg
t=10^3kg
よって
Gt=10^12kg = Pg。
やっぱり同じだった。でも紛らわしいからどっちかに統一してほしい…。っていうか質量のSI Unitがkgってのがやっかいだな。なぜSI Unitにmetric prefixであるはずのkがついてるのかがわからん。そういう意味ではgで統一させてPgにしたがいいのかな。でも論文で添付してるIPCCの炭素循環の図がGtを使っていたような…。
~~~
Lavender et al. 2000がgeostrophic pressureを使ってsubpolar gyre内部のvector plotを説明しているので同じようにやってみることに。geostrophic pressureは学部2年のときにこの教科書で勉強した:http://oceanworld.tamu.edu/resources/ocng_textbook/chapter10/chapter10_02.htm。こういう風に授業で習ったことが研究でも扱われるとモチベーションあがる。
~~~
モデルはbeta5をdt=20分でシミュレーション完了。20分でも大丈夫そう。ってことで20分でとりあえずやっていこう。
2013年6月13日木曜日
学会の渡航費
サスカトゥーンであったCMOS学会から戻ってきて約2週間。今日で渡航費関連の申請・報告が完了した。おかげで一銭も払わずに学会へ行くことができた。アルハムドゥリッラー。
メモリアル大学での大学院生の学会参加による援助金についてまとめておこう。
援助金は主に6つのソースから成る:
メモリアル大学での大学院生の学会参加による援助金についてまとめておこう。
援助金は主に6つのソースから成る:
- 大学院課(School of Graduate Studies): $400
- 所属学部(Your Faculty): 様々
- 所属学科(Your department): 様々
- 監督教授(Your supervisor): 様々
- 大学院学生会(Graduate Students Union): $250 (Master), $500 (PhD)
- その他(Others): 様々
もらえる金額は今日現在。このうち1〜5までは一つの用紙で申請することができる。まず、自分の学部へ行き受付の人に学会に行くためのTravel Claimの申請を頼む。いろいろ説明を受けたあと、1〜5のオフィスへ行きそれぞれ担当者からサインと援助してもらえる金額の記入をしてもらう。キャンパス内を結構歩きます。うちの学科は理学部のオフィスと同じ建物内にあるので学科の担当者が理学部長のサインももらってくれた。
ここでちょっと面倒なのが5の院生会。1〜4までのサインをもらってから来るように言われるので全部からもらってから行くこと。そして1〜4まで記入してもらった合計額と5でもらえる金額を足してちょうど自分が設定した予算と合うようにすること。院生会は予算がないのか知らないが出来る限り少ない額を渡そうとする。例えば、自分の場合、院生会からは全くもらえなかった。理由を聞いてみると、うちの監督教授が金額の欄に「足りない額を補う」というようなコメントを記して金額を明記してなかったのでそれはつまり教授が全ての額を払う研究費があるということ。院生会はお金の援助が十分にない人にだけ渡すようにしてるからあなたの場合はなし。と言われた。そこで、「だったら教授に院生会からもらえる上限の額を差し引いた額を明記してもらっておけば$250もらえたのかな?」と聞いてみると「そうだね。」と言われた。なんだそりゃ…。だからちょっとトリッキーです。ていうか自分たちは毎学期学費と一緒に会費を納めてるんだからそれくらいのサポートしてくれよって感じ。
まぁとにかく全てのサインをもらったら所属学科へ戻ってあとはその申請書を担当者に渡して完了。これを学会へ行く前にすませないといけない。
そして学会中は食費以外のありとあらゆる経費のレシートをとっておかなくてはいけない。自分が集めたレシートは:
- 飛行機代
- ホテル代
- タクシー代
- 学会ポスター印刷代
- 学会abstract申し込み料
- 学会参加料
その他証明するために必要だったのが、学会abstractの受諾書と搭乗券。
食費は何を食べたか関係なくもらえる値段が決まってる(朝/昼/夜で$10/20/25だったような。たぶん間違ってるので学科の人に聞くのが一番)。食費にはさらに一日$5の雑費がもらえる(自分の場合は水とかお菓子とか買ってたからこれらの費用)。
そして学会後はこれら集めたレシート等を学科へ持っていき経費の合計を計算してもらい(自分で記入するように言われる場合もある)、また1〜5の援助金を出してくれるとサインしてくれたところを周りサインをもらう。
そしてそれを学科の担当者へ提出してようやく援助金がチェックとしてもらえる。
場所によっては翌日以降にサインがもらえるから取りにくるように言われるところもあったので結構patienceが入りますが渡航費がしっかりカバーされるので根気強く歩き周りました。
わかりづらい
昨日iodef.xmlを解決したところではまだジョブが却下(しかもエラー文なし)されていたんだが原因がわかった。CPUが32以外だとだめなようだ。はっきりとした理由はわからないが、たぶん32以外を使いたいなら./makenemoでリコンパイルしなければいけないみたい。しかしこれは変だ。なぜならCPU数のリクエストはnamelistで行うからである。namelistは本来コンパイルしたあとにも変更できるパラメータが収納されているはずだからリコンパイルは必要ないはずだ。
自分のNEMOのバージョンは3.4だが、エ教授のはそれ以前のものでCPU数の変更後はリコンパイルが必要だそうだ。3.4でも必要なのか?
よくわからん。
とにかく、32で今日のところはやっていくことに。また後日この件に関しては試行錯誤していく。
beta4をdt=30分でやってみたらNaNが発生した。
現在beta5(dt=20分)でシミュレートしている。無理だったら15分。これが無理だったら12分。そして無理だったら10分で決定ということになるかな。
2013年6月12日水曜日
川崎の英語
川崎が英語で話してる様子を見ることができた(以下動画最初の3分くらい)。
この番組、ゲストはDeRosaなのになんか川崎が主役になってる?w
「ガーヒーーー☞」ってなんなんだw
練習中ストレッチする様子もウケる。
英語が上手下手じゃなくて日本人選手が話してるのを見るとすごく新鮮でかっこよくみえる。
この番組、ゲストはDeRosaなのになんか川崎が主役になってる?w
「ガーヒーーー☞」ってなんなんだw
練習中ストレッチする様子もウケる。
英語が上手下手じゃなくて日本人選手が話してるのを見るとすごく新鮮でかっこよくみえる。
試行錯誤
Time resolutionが10分でもいけることがわかったのでもう少し増やしても大丈夫かためしてる段階でわかったこと:
CPUは4(2x2)じゃ足りない。以下エラー文
STOP
pisces_alloc: unable to allocate PISCES arrays
huge E-R-R-O-R : immediate stop
そして8(2x4)でもジョブは却下された。
[cl152:05338] ERROR: A daemon on node cl156.mun.acenet.ca failed to start as expected.
[cl152:05338] ERROR: There may be more information available from
[cl152:05338] ERROR: the 'qstat -t' command on the Grid Engine tasks.
[cl152:05338] ERROR: If the problem persists, please restart the
[cl152:05338] ERROR: Grid Engine PE job
[cl152:05338] ERROR: The daemon exited unexpectedly with status 137.
1じゃ無理なことを考えると4じゃ足りないんだろう。ただ8の場合、大丈夫そうな気はするんだが。。。4のときとエラー文が違うので多分別の原因であろうと思う。
Temporal resolutionを決める際の基準となるCFL条件のレビューをした。
http://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition
学士卒論で使った1/4度の物理モデルはdt=30分だった。これは上記の条件を当てはめて計算したものよりもはるかに低い。実際にはそれぐらいdtを縮めないとinstabilityが起こるのだろう。
上記の条件をLabSea112に当てはめると30分ぐらいだった。だからそれ以下、10分ぐらいまで狭める必要があるんだろうな。とにかくあと何度か試して上限を探してみよう。
trial and error... 試行錯誤です。
STOP
pisces_alloc: unable to allocate PISCES arrays
huge E-R-R-O-R : immediate stop
そして8(2x4)でもジョブは却下された。
[cl152:05338] ERROR: A daemon on node cl156.mun.acenet.ca failed to start as expected.
[cl152:05338] ERROR: There may be more information available from
[cl152:05338] ERROR: the 'qstat -t' command on the Grid Engine tasks.
[cl152:05338] ERROR: If the problem persists, please restart the
[cl152:05338] ERROR: Grid Engine PE job
[cl152:05338] ERROR: The daemon exited unexpectedly with status 137.
1じゃ無理なことを考えると4じゃ足りないんだろう。ただ8の場合、大丈夫そうな気はするんだが。。。4のときとエラー文が違うので多分別の原因であろうと思う。
Temporal resolutionを決める際の基準となるCFL条件のレビューをした。
http://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition
学士卒論で使った1/4度の物理モデルはdt=30分だった。これは上記の条件を当てはめて計算したものよりもはるかに低い。実際にはそれぐらいdtを縮めないとinstabilityが起こるのだろう。
上記の条件をLabSea112に当てはめると30分ぐらいだった。だからそれ以下、10分ぐらいまで狭める必要があるんだろうな。とにかくあと何度か試して上限を探してみよう。
trial and error... 試行錯誤です。
追記
あとからわかったこと。model.outファイルを削除してから新しい(上書きされてない)ファイルを見てみると上記のエラーがなぜ起きはじめたのかわかった。
昨日のシミュレーション後、outputを設定するiodef.xmlというファイルを編集したせいだった。group属はコメント(<!-- -->のこと)できないみたい。だからアンコメントしてfile属だけコメントしなおした。以下がエラー文:
filename : iodef.xml
*** XML parsing Error:
Cannot have -- in comment
Line: 120 Column: 104
Element traceback:
file_definition
context
simulation
FORTRAN STOP
…となるとcpu数8でもシミュレートできるかもしれないな。
2013年6月11日火曜日
研究ノート
合気道ノートと同じように研究ノートもつけていこうと思う。毎日海洋モデルで研究をしているとパラメータを変更したりコードを書き換えたり試行錯誤していてある日は良い結果が得られたり悪かったり。どっちにしても過去に何をやったか覚えていると効率もよくなる。もちろんメモを取ったりしているが紙に書いたり、テキストファイルにセーブしたり各シミュレーションのフォルダに入っていたりとごちゃごちゃしているので、ブロガーに書いてしまおうかと思う。
今日はnamelist_topのhorizontal eddy diffusivityを90に変更してbeta3のテストランを行ったが結果はbeta2と同じで、モデルドメイン左下にinstability、及び全体の数値が下がる現象が起きた。
今後は現在のclosed boundary conditionをOBCにする必要がありそうだ。コードを書き換えなくちゃ。
今日はnamelist_topのhorizontal eddy diffusivityを90に変更してbeta3のテストランを行ったが結果はbeta2と同じで、モデルドメイン左下にinstability、及び全体の数値が下がる現象が起きた。
今後は現在のclosed boundary conditionをOBCにする必要がありそうだ。コードを書き換えなくちゃ。
合気道ノート
約三週間ぶりの練習。でも体はなまっとらんかった。
今日は三教を中心に練習が組まれた。
正面打ち、後ろ両手首取り、後ろ肩取り、あともうひとつ(忘れた)。
おかげで右手首が痛くなった。練習後はなんともなくなったけど。
今日のポイントは三教で締めるときに両膝を使って受けの肩をしっかりと締めることに気をつけるように指摘された。
来週は年に一度開かれるサマーキャンプがあるので練習は休み。今年はハリファックスなのでうちの道場の黒帯の方々がほとんど参加するみたい。来年は参加したいな。
正面打ち、後ろ両手首取り、後ろ肩取り、あともうひとつ(忘れた)。
おかげで右手首が痛くなった。練習後はなんともなくなったけど。
今日のポイントは三教で締めるときに両膝を使って受けの肩をしっかりと締めることに気をつけるように指摘された。
来週は年に一度開かれるサマーキャンプがあるので練習は休み。今年はハリファックスなのでうちの道場の黒帯の方々がほとんど参加するみたい。来年は参加したいな。
2013年6月9日日曜日
行ったことのある、行ってみたい海洋学の学会
- カナダ気象海洋学会(勝手に訳しました)。
- 毎年5月の最後の週から六月第一週に行われる。
- 月曜日から木曜日まで開かれる。日曜日と金曜日はワークショップにも参加できる(今年開かれたプログラミング言語Rのワークショップに参加しました)。
- 会場は毎年変更(開かれた場所によって参加者層がかなり変化するような気もします)。
- 学生に渡航補助金有り(会員であることが必須。僕は申請するために会員になりましたwそしてありがたいことに補助金を得られました。たぶん遠出だったのでもらえたんだと思います。)。
- 会費は学生は年間$15(学会誌を希望しない場合。ウェブサイトで閲覧可能)。
- Abstractの提出期限は2月頃。
- 参加したことがないのでなんとも言えませんが友達から教えてもらい知りました。
- 年に二度、世界中の都市で開催。
- どちらかというと海洋工学系が主体?
- 来年の9月にセントジョンズで開かれるみたいです…そのときは残念ながら居ません。でも戻って来れるかな。http://www.oceans14mtsieeestjohns.org/
International Liege Colloquium on Ocean Dynamics
- ベルギーのリエージュ大学で毎年5月初めに開かれる学会。
- PhD学生とポスドク研究生に渡航費援助有り。
- Abstractの提出期限は2月頃。
- フランス語圏で街も静かなところみたいなので観光としてもすごく魅力的です。いつか家族を連れて参加したいな。そして侍JAPANのゴールキーパー川島の所属クラブもこの街リエージュ。
あとは日本の海洋学会とかアメリカのGeophysical Unionがありますがどちらも機会があれば行ってみたいな〜。
TA (Teaching Assistant)
今年秋から西海岸の仲間入り〜。さらば東よ〜。
っということで先週、ビクトリア大から来年度のTA(ティーチングアシスタント)の希望有無についてのメールが送られて来たので早速希望を出しました。
Earth and Ocean Sciences(地球海洋科学と訳せばいいのかな?)に属するので希望できるのは学部内の科目のみになっています。以下は来年度の秋と春学期に希望できる科目:
http://www.uvic.ca/science/seos/home/jobs/si.php
海洋学よりも地質学のほうが多いようです。自分は海洋学出身なのでちょっと残念です。
科目によってTAとマーカーの二種類あります。TAは実験やチュートリアルの指導をして、マーカーは宿題やレポートの丸付けをします。
上記の科目から各学期別第四希望まで選べます。
TAの時給は最低賃金の倍以上なのですごく人気があります。そして選ばれる基準として、①奨学金の支給額②その他支給源③これまでに教えたことのある科目④履歴書(CV)の提出記入を求められます。
TAに関するメールと同時にTAPPというプログラムについてのメールも来ました。詳細はhttp://www.ltc.uvic.ca/events/2013/September.php#TAPC。ビクトリア大でTAを初めてやる人向けのセミナーのようなもので秋学期に週一回集まってTAについての指導などを行っているようです。早速参加登録希望を出しました。こういうプログラムはメモリアル大ではなかったなぁ。学部生との接し方や指導方法とか学べそうで楽しみです。上記のページには他にも9月に行われる、またはスタートするセミナーやプログラムがあったのでいろいろみてできるだけたくさんのに参加しようかと思います。学生はたぶん全部無料で受講できます。
9月からのUVic生活が楽しみです☆
っということで先週、ビクトリア大から来年度のTA(ティーチングアシスタント)の希望有無についてのメールが送られて来たので早速希望を出しました。
Earth and Ocean Sciences(地球海洋科学と訳せばいいのかな?)に属するので希望できるのは学部内の科目のみになっています。以下は来年度の秋と春学期に希望できる科目:
http://www.uvic.ca/science/seos/home/jobs/si.php
海洋学よりも地質学のほうが多いようです。自分は海洋学出身なのでちょっと残念です。
科目によってTAとマーカーの二種類あります。TAは実験やチュートリアルの指導をして、マーカーは宿題やレポートの丸付けをします。
上記の科目から各学期別第四希望まで選べます。
TAの時給は最低賃金の倍以上なのですごく人気があります。そして選ばれる基準として、①奨学金の支給額②その他支給源③これまでに教えたことのある科目④履歴書(CV)の提出記入を求められます。
TAに関するメールと同時にTAPPというプログラムについてのメールも来ました。詳細はhttp://www.ltc.uvic.ca/events/2013/September.php#TAPC。ビクトリア大でTAを初めてやる人向けのセミナーのようなもので秋学期に週一回集まってTAについての指導などを行っているようです。早速参加登録希望を出しました。こういうプログラムはメモリアル大ではなかったなぁ。学部生との接し方や指導方法とか学べそうで楽しみです。上記のページには他にも9月に行われる、またはスタートするセミナーやプログラムがあったのでいろいろみてできるだけたくさんのに参加しようかと思います。学生はたぶん全部無料で受講できます。
9月からのUVic生活が楽しみです☆
登録:
投稿 (Atom)