Class bcset
In: src/setup/bcset.f90

Methods

Included Modules

dc_trace dc_message

Public Instance methods

cfgfile :character(*), intent(in)
: Input

スカラーな変数とベクトルな変数では, 同じ固定壁/自由境界でも 境界のあたえ方が異なる. そのため BcX では,

  * C: 周期境界条件 (水平方向のみ)
  * R: 固定壁
  * F: 自由境界

を与え, **_Bc では,

  * C: 周期境界条件 (水平方向のみ)
  * sA: スカラー量を境界を挟んで半対称
  * fA: ベクトル量を境界を挟んで半対称
  * sS: スカラー量を境界を挟んで対称
  * fA: ベクトル量を境界を挟んで半対称

を与える

[Source]


  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

[Validate]