Page 1 of 1

num_urban_layers

PostPosted: Wed Dec 10, 2014 4:18 am
by otaka
Dear all

I try to use WRFV3.5.1 with BEP_BEM but this shows error “num_urban_layers too small”.
What’s “num_urban_layers” ?
I want to understand meaning of “num_urban_layers”.
Please teach me.

Regards,
otaka

Re: num_urban_layers

PostPosted: Mon Jul 02, 2018 11:34 pm
by alainaketh
Hi

You might want to take a look atthis post.

Hope this helps.

Re: num_urban_layers

PostPosted: Sat Jul 14, 2018 2:54 am
by BHajni
Hi,


Or you could take a look at the source code.
(The number of urban layers name is a bit misleading. There are only 18 vertical layers in the urban canopy. The others are required because the module uses a large array for different buildings, street directions etc.)
Don't be afraid to check the phys directory for answers, look for the .F source codes. Some of them are quite well documented.

Cheers,
Hajni


Code: Select all
!prepare the arrays to collapse indexes

      if(num_urban_layers.lt.nbui_max*nz_um*ndm*max(nwr_u,ng_u))then
        write(*,*)'num_urban_layers too small, please increase to at least ', nbui_max*nz_um*ndm*max(nwr_u,ng_u)
        stop
      endif
!
!New conditions for BEM
!
      if(num_urban_layers.lt.nbui_max*nz_um)then !limit for indoor temperature and indoor humidity
        write(*,*)'num_urban_layers too small, please increase to at least ', nbui_max*nz_um
        stop
      endif

      if(num_urban_layers.lt.nbui_max*nz_um*ndm)then !limit for window temperature
        write(*,*)'num_urban_layers too small, please increase to at least ', nbui_max*nz_um*ndm
        stop
      endif

      if(num_urban_layers.lt.nbui_max*ndm*ngb_u)then !limit for ground temperature below a building
        write(*,*)'num_urban_layers too small, please increase to at least ', nbui_max*ndm*ngb_u
        stop
      endif

      if(num_urban_layers.lt.(nz_um-1)*nbui_max*ndm*nf_u)then !limit for floor temperature
        write(*,*)'num_urban_layers too small, please increase to at least ', nbui_max*ndm*nf_u*(nz_um-1),num_urban_layers
        stop
      endif



where the constants that limit the number of urban layers are:
Code: Select all
      integer nurbm           ! Maximum number of urban classes
      parameter (nurbm=3)

      integer ndm             ! Maximum number of street directions
      parameter (ndm=2)

      integer nz_um           ! Maximum number of vertical levels in the urban grid
      parameter(nz_um=18)

      integer ng_u            ! Number of grid levels in the ground
      parameter (ng_u=10)
      integer nwr_u            ! Number of grid levels in the walls or roofs
      parameter (nwr_u=10)

      integer nf_u             !Number of grid levels in the floors (BEM)
      parameter (nf_u=10)

      integer ngb_u            !Number of grid levels in the ground below building (BEM)
      parameter (ngb_u=10)

      real dz_u                ! Urban grid resolution
      parameter (dz_u=5.)

      integer nbui_max         !maximum number of types of buildings in an urban class
      parameter (nbui_max=15)   !must be less or equal than nz_um