Class | bcset |
In: |
src/setup/bcset.f90
|
cfgfile : | character(*), intent(in)
|
スカラーな変数とベクトルな変数では, 同じ固定壁/自由境界でも 境界のあたえ方が異なる. そのため BcX では,
* C: 周期境界条件 (水平方向のみ) * R: 固定壁 * F: 自由境界
を与え, **_Bc では,
* C: 周期境界条件 (水平方向のみ) * sA: スカラー量を境界を挟んで半対称 * fA: ベクトル量を境界を挟んで半対称 * sS: スカラー量を境界を挟んで対称 * fA: ベクトル量を境界を挟んで半対称
を与える
subroutine bcset_init(cfgfile) !=== Dependency !=== Input character(*), intent(in) :: cfgfile !=end character(2) :: BcX character(2) :: BcZ !=begin !=== NAMELIST NAMELIST /bcset/ BcX, BcZ !=end open (10, FILE=cfgfile) read(10, NML=bcset) close(10) call BeginSub("bcset_init", fmt="%c", c1="Initialize boundary conditions. ") !--- 境界のタイプを指定 (boundary.f90 参照) if (trim(BcX) == "C" .AND. trim(BcZ) == "R") then ss_Bc = "CsS" fs_Bc = "CsA" sf_Bc = "CfA" elseif (trim(BcX) == "C" .AND. trim(BcZ) == "F") then ss_Bc = "CsS" fs_Bc = "CsS" sf_Bc = "CfA" !--- test 2005-01-13 elseif (trim(BcX) == "C" .AND. trim(BcZ) == "RF") then ss_Bc = "CsS" fs_Bc = "CsAS" sf_Bc = "CfA" !--- 移流計算テスト用の境界条件. 実際の問題を解く場合には !--- 使用しないこと (2005/02/02 小高正嗣) elseif (trim(BcX) == "F" .AND. trim(BcZ) == "F") then ss_Bc = "sSsS" fs_Bc = "fSsS" sf_Bc = "sSfS" else call MessageNotify("Error", "bcset_init", "unknown boundary condition" ) end if !==== 確認 ! write(*,*) "ss_Bc ", ss_Bc ! write(*,*) "fs_Bc ", fs_Bc ! write(*,*) "sf_Bc ", sf_Bc call EndSub("bcset_init") end subroutine bcset_init