num_urban_layers

Topics related to current and future physics in the WRF as well as any problems you may have.

num_urban_layers

Postby otaka » Wed Dec 10, 2014 4:18 am

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
otaka
 
Posts: 1
Joined: Wed Dec 10, 2014 4:04 am

Re: num_urban_layers

Postby alainaketh » Mon Jul 02, 2018 11:34 pm

Hi

You might want to take a look atthis post.

Hope this helps.
Hydrology Researcher, University of Bristol
alainaketh
 
Posts: 34
Joined: Fri Jun 26, 2015 12:30 pm

Re: num_urban_layers

Postby BHajni » Sat Jul 14, 2018 2:54 am

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

BHajni
 
Posts: 31
Joined: Sun Mar 10, 2013 11:50 am


Return to Physics

Who is online

Users browsing this forum: Google [Bot] and 9 guests