| 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