Takuya Miyashita
This site
Web
Start:
*基本方針 Fortran [#a74ed472]
プログラムを読みやすくし,間違い・条件設定等のミスを減ら...
あくまで個人的な見解です.~
効率的に開発をし,無駄な時間を減らせるよう心がけたい.
***implicit none を使用する [#x601b6f0]
-暗黙の宣言の場合,変数のスペルミスをしても気づきにくい.
使う変数は全て宣言した方が他人から見てもわかりやすい.
VBA の Option Explicit も同じ.
~
~
***変数名をわかりやすく&1文字にしない [#g60ebf79]
-例えば水位を H,流量を Q などとして,算出の過程で生じる...
-また上記のように変数を1文字とすると,デバッグ段階で変数...
-ループで使う i, j, k は慣習的にも1文字で良いかも.その他...
~
~
***定数の入力に namelist を活用する [#me797cda]
-定数を外部から値を読み込むことで汎用性をもたせる.
-格子数,計算ステップ数は namelist を活用すると手間が省け...
-ただし,重力加速度,円周率などいずれの計算においても不変...
テキストファイルの編集ミスで思わぬエラーが出たり計算が破...
~
~
***subroutine 内で intent を使う [#me797cda]
-引数が他の値の算出に用いられるだけなのか,値が変わって s...
#codeprettify(lang-fortran){{
real*8, intent(in) :: hoge
real*8, intent(inout) :: huga
}}
などと書く.引数全てに intent をつけることで,引数と loca...
~
~
***係数はルーチンの冒頭部に定義する [#je0ab416]
-プログラム中盤の計算部分に 12 や (1/3.6) と書かれても,...
alpha, beta や coef1, coef2 (coefficient の略)として,メ...
-ただし,差分法において生じる係数(3/2, 1/6など)は,文字列...
~
~
***配列が基本の変数は allocatable (動的配列)に [#te14525b]
-計算領域が変化する場合に対応できるよう,動的配列を使用す...
#codeprettify(lang-fortran){{
real, allocatable :: hogehoge(:,:)
}}
で宣言して,あとから
#codeprettify(lang-fortran){{
allocate(hogehoge(ny,nx))
}}
とかするだけ.大した手間ではない.
-古いプログラムでは,利用する配列より大きめに宣言するケー...
-現在も今後も,明らかに○○個(大抵2or3個)の配列しか必要とし...
~
~
***装置番号は I/O 別に開始する数を決める [#x2b63bc2]
-例えば input 用ファイルは11番から始め,output 用ファイル...
~
~
***類似変数を構造体でグルーピングする [#a30ec5d9]
-環境が似たような変数(同じ格子で構成されている等)は,boun...
-いちいち計算式に bound%x と書くのが面倒と思われるが,主...
~
~
***go to 文の使用を極力避ける [#xbce4e2b]
-特に go to (hogehoge, hugahuga) のような記述は厳禁.編集...
-format 文で文番号が必要なため,使わずに済むものは使わな...
-do ループの中でgo to と continue を使って次のループへ…と...
~
~
***ENTRY 文を使用しない [#lb2c5147]
-自身が ENTRY 文をよくわかっていないのが最大の理由.古い...
~
~
***COMMON文を使用しない [#j7440358]
-他人のためにも,subroutine 内で利用している変数は明示し...
-COMMON 文を使用するメリットは,subroutine 内で変数の宣言...
-同じ配列構造であれば subroutine の引数を変えるだけで同様...
End:
*基本方針 Fortran [#a74ed472]
プログラムを読みやすくし,間違い・条件設定等のミスを減ら...
あくまで個人的な見解です.~
効率的に開発をし,無駄な時間を減らせるよう心がけたい.
***implicit none を使用する [#x601b6f0]
-暗黙の宣言の場合,変数のスペルミスをしても気づきにくい.
使う変数は全て宣言した方が他人から見てもわかりやすい.
VBA の Option Explicit も同じ.
~
~
***変数名をわかりやすく&1文字にしない [#g60ebf79]
-例えば水位を H,流量を Q などとして,算出の過程で生じる...
-また上記のように変数を1文字とすると,デバッグ段階で変数...
-ループで使う i, j, k は慣習的にも1文字で良いかも.その他...
~
~
***定数の入力に namelist を活用する [#me797cda]
-定数を外部から値を読み込むことで汎用性をもたせる.
-格子数,計算ステップ数は namelist を活用すると手間が省け...
-ただし,重力加速度,円周率などいずれの計算においても不変...
テキストファイルの編集ミスで思わぬエラーが出たり計算が破...
~
~
***subroutine 内で intent を使う [#me797cda]
-引数が他の値の算出に用いられるだけなのか,値が変わって s...
#codeprettify(lang-fortran){{
real*8, intent(in) :: hoge
real*8, intent(inout) :: huga
}}
などと書く.引数全てに intent をつけることで,引数と loca...
~
~
***係数はルーチンの冒頭部に定義する [#je0ab416]
-プログラム中盤の計算部分に 12 や (1/3.6) と書かれても,...
alpha, beta や coef1, coef2 (coefficient の略)として,メ...
-ただし,差分法において生じる係数(3/2, 1/6など)は,文字列...
~
~
***配列が基本の変数は allocatable (動的配列)に [#te14525b]
-計算領域が変化する場合に対応できるよう,動的配列を使用す...
#codeprettify(lang-fortran){{
real, allocatable :: hogehoge(:,:)
}}
で宣言して,あとから
#codeprettify(lang-fortran){{
allocate(hogehoge(ny,nx))
}}
とかするだけ.大した手間ではない.
-古いプログラムでは,利用する配列より大きめに宣言するケー...
-現在も今後も,明らかに○○個(大抵2or3個)の配列しか必要とし...
~
~
***装置番号は I/O 別に開始する数を決める [#x2b63bc2]
-例えば input 用ファイルは11番から始め,output 用ファイル...
~
~
***類似変数を構造体でグルーピングする [#a30ec5d9]
-環境が似たような変数(同じ格子で構成されている等)は,boun...
-いちいち計算式に bound%x と書くのが面倒と思われるが,主...
~
~
***go to 文の使用を極力避ける [#xbce4e2b]
-特に go to (hogehoge, hugahuga) のような記述は厳禁.編集...
-format 文で文番号が必要なため,使わずに済むものは使わな...
-do ループの中でgo to と continue を使って次のループへ…と...
~
~
***ENTRY 文を使用しない [#lb2c5147]
-自身が ENTRY 文をよくわかっていないのが最大の理由.古い...
~
~
***COMMON文を使用しない [#j7440358]
-他人のためにも,subroutine 内で利用している変数は明示し...
-COMMON 文を使用するメリットは,subroutine 内で変数の宣言...
-同じ配列構造であれば subroutine の引数を変えるだけで同様...
Page:
Edit with a page name which already exists