FVCOM泥沙模块河流边界处理

简介

入流河流携带泥沙可以按照节点和边界两种形式给定,这两种方法都是在相关的节点上进行直接赋值,并不能保证进入计算域内泥沙总体积。

相关设置

XX_run.nml 河流参数设置

 &NML_RIVER_TYPE
 RIVER_NUMBER    = 101,
 RIVER_TS_SETTING        = 'specified'
 RIVER_INFLOW_LOCATION   = 'node'

XX_sediment.inp 泥沙参数设置

SED_PTSOURCE = T

相关变量

variable type meaning
NUMQBC_GL integer GLOBAL NUMBER OF FRESHWATER INFLOW NODES (RIVERS)
NUMQBC integer LOCAL NUMBER OF FRESHWATER INFLOW NODES
sed(i)%cdis(1:numqbc) real(sp), allocatable :: & allocate(sed(i)%cdis(500 )) 河流入流节点泥沙边界给定值

河流入流边界

入流边界处理
mod_sed.F: Advance_Sed

  if(sed_source .and. .not. oned_model)then
    do i=1,nsed
      call bcond_scal_PTsource(sed(i)%conc, &
                               sed(i)%cnew, &
                               sed(i)%cdis) 
    end do
  endif

函数bcond_scal_PTsource中直接给边界节点赋值

mod_scal: Bcond_Scal_PTsource

  if(RIVER_TS_SETTING == 'specified') then
    if(numqbc > 0) then
      if(RIVER_INFLOW_LOCATION == 'node') then
        do i=1,numqbc
          j11=inodeq(i)
          do k=1,kbm1
            fn(j11,k)=fdis(i)
          end do
        end do
      else if(RIVER_INFLOW_LOCATION == 'edge') then
        do i=1,numqbc
          j11=n_icellq(i,1)
          j22=n_icellq(i,2)
          do k=1,kbm1
            fn(j11,k)=fdis(i)
            fn(j22,k)=fdis(i)
          end do
        end do
      end if
    end if
  end if

  return
原文地址:https://www.cnblogs.com/li12242/p/5114429.html