Ignore:
Timestamp:
Mar 26, 2019 8:40:31 AM (2 years ago)
Author:
pavelkrc
Message:

Rename conflicting variable names

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/radiation_model_mod.f90

    r3771 r3814  
    2828! -----------------
    2929! $Id$
     30! Rename exported nzu, nzp and related variables due to name conflict
     31!
     32! 3771 2019-02-28 12:19:33Z raasch
    3033! rrtmg preprocessor for directives moved/added, save attribute added to temporary
    3134! pointers to avoid compiler warnings about outlived pointer targets,
     
    584587
    585588    USE basic_constants_and_equations_mod,                                     &
    586         ONLY:  c_p, g, lv_d_cp, l_v, pi, r_d, rho_l, solar_constant,     &
     589        ONLY:  c_p, g, lv_d_cp, l_v, pi, r_d, rho_l, solar_constant, sigma_sb, &
    587590               barometric_formula
    588591
     
    708711                                                         /)
    709712
    710     REAL(wp), PARAMETER :: sigma_sb       = 5.67037321E-8_wp !< Stefan-Boltzmann constant
    711 
    712     INTEGER(iwp) :: albedo_type  = 9999999, & !< Albedo surface type
    713                     dots_rad     = 0          !< starting index for timeseries output
     713    INTEGER(iwp) :: albedo_type  = 9999999_iwp, &     !< Albedo surface type
     714                    dots_rad     = 0_iwp              !< starting index for timeseries output
    714715
    715716    LOGICAL ::  unscheduled_radiation_calls = .TRUE., & !< flag parameter indicating whether additional calls of the radiation code are allowed
     
    912913!
    913914!-- Parameters of urban and land surface models
    914     INTEGER(iwp)                                   ::  nzu                                !< number of layers of urban surface (will be calculated)
    915     INTEGER(iwp)                                   ::  nzp                                !< number of layers of plant canopy (will be calculated)
    916     INTEGER(iwp)                                   ::  nzub,nzut                          !< bottom and top layer of urban surface (will be calculated)
    917     INTEGER(iwp)                                   ::  nzpt                               !< top layer of plant canopy (will be calculated)
     915    INTEGER(iwp)                                   ::  nz_urban                           !< number of layers of urban surface (will be calculated)
     916    INTEGER(iwp)                                   ::  nz_plant                           !< number of layers of plant canopy (will be calculated)
     917    INTEGER(iwp)                                   ::  nz_urban_b                         !< bottom layer of urban surface (will be calculated)
     918    INTEGER(iwp)                                   ::  nz_urban_t                         !< top layer of urban surface (will be calculated)
     919    INTEGER(iwp)                                   ::  nz_plant_t                         !< top layer of plant canopy (will be calculated)
    918920!-- parameters of urban and land surface models
    919921    INTEGER(iwp), PARAMETER                        ::  nzut_free = 3                      !< number of free layers above top of of topography
     
    11041106    INTEGER(iwp)                                   ::  nmrtfa           !< dimmension of array allocated for storage of mrt
    11051107    INTEGER(iwp)                                   ::  msvf, mcsf, mmrtf!< mod for swapping the growing array
    1106     INTEGER(iwp), PARAMETER                        ::  gasize = 100000  !< initial size of growing arrays
     1108    INTEGER(iwp), PARAMETER                        ::  gasize = 100000_iwp  !< initial size of growing arrays
    11071109    REAL(wp), PARAMETER                            ::  grow_factor = 1.4_wp !< growth factor of growing arrays
    11081110    INTEGER(iwp)                                   ::  nsvfl            !< number of svf for local processor
     
    12981300           iup_u, inorth_u, isouth_u, ieast_u, iwest_u,                        &
    12991301           iup_l, inorth_l, isouth_l, ieast_l, iwest_l,                        &
    1300            nsurf_type, nzub, nzut, nzu, pch, nsurf,                            &
     1302           nsurf_type, nz_urban_b, nz_urban_t, nz_urban, pch, nsurf,                 &
    13011303           idsvf, ndsvf, idcsf, ndcsf, kdcsf, pct,                             &
    13021304           radiation_interactions, startwall, startland, endland, endwall,     &
     
    28432845          IF ( bulk_cloud_model  .OR.  cloud_droplets )  ql1   = 0.0_wp
    28442846
    2845           pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) )
    2846           IF ( bulk_cloud_model  .OR.  cloud_droplets  )  ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )
     2847          pt1_l = SUM( pt(nz_urban_t,nys:nyn,nxl:nxr) )
     2848          IF ( bulk_cloud_model  .OR.  cloud_droplets  )  ql1_l = SUM( ql(nz_urban_t,nys:nyn,nxl:nxr) )
    28472849
    28482850#if defined( __parallel )     
     
    28662868#endif
    28672869
    2868           IF ( bulk_cloud_model  .OR.  cloud_droplets  )  pt1 = pt1 + lv_d_cp / exner(nzut) * ql1
     2870          IF ( bulk_cloud_model  .OR.  cloud_droplets  )  pt1 = pt1 + lv_d_cp / exner(nz_urban_t) * ql1
    28692871!
    28702872!--       Finally, divide by number of grid points
     
    29052907             IF ( average_radiation ) THEN       
    29062908
    2907                 k = nzut
     2909                k = nz_urban_t
    29082910
    29092911                surf%rad_sw_in  = solar_constant * sky_trans * zenith(0)
     
    30233025          IF ( bulk_cloud_model  .OR.  cloud_droplets )  ql1   = 0.0_wp
    30243026
    3025           pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) )
    3026           IF ( bulk_cloud_model  .OR.  cloud_droplets )  ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )
     3027          pt1_l = SUM( pt(nz_urban_t,nys:nyn,nxl:nxr) )
     3028          IF ( bulk_cloud_model  .OR.  cloud_droplets )  ql1_l = SUM( ql(nz_urban_t,nys:nyn,nxl:nxr) )
    30273029
    30283030#if defined( __parallel )     
     
    30443046          IF ( bulk_cloud_model  .OR.  cloud_droplets )  ql1 = ql1_l
    30453047#endif
    3046           IF ( bulk_cloud_model  .OR.  cloud_droplets )  pt1 = pt1 + lv_d_cp / exner(nzut+1) * ql1
     3048          IF ( bulk_cloud_model  .OR.  cloud_droplets )  pt1 = pt1 + lv_d_cp / exner(nz_urban_t+1) * ql1
    30473049!
    30483050!--       Finally, divide by number of grid points
     
    30863088                surf%rad_net = net_radiation
    30873089
    3088                 surf%rad_lw_in  = 0.8_wp * sigma_sb * (pt1 * exner(nzut+1))**4
     3090                surf%rad_lw_in  = 0.8_wp * sigma_sb * (pt1 * exner(nz_urban_t+1))**4
    30893091
    30903092                surf%rad_lw_out = emissivity_urb * sigma_sb * (t_rad_urb)**4   &
     
    49794981     REAL(wp), DIMENSION(3)            :: sunorig_grid       !< grid squashed solar direction unit vector (zyx)
    49804982     REAL(wp), DIMENSION(0:nsurf_type) :: costheta           !< direct irradiance factor of solar angle
    4981      REAL(wp), DIMENSION(nzub:nzut)    :: pchf_prep          !< precalculated factor for canopy temperature tendency
     4983     REAL(wp), DIMENSION(nz_urban_b:nz_urban_t)    :: pchf_prep          !< precalculated factor for canopy temperature tendency
    49824984     REAL(wp), PARAMETER               :: alpha = 0._wp      !< grid rotation (TODO: add to namelist or remove)
    49834985     REAL(wp)                          :: pc_box_area, pc_abs_frac, pc_abs_eff
     
    50025004
    50035005     IF ( plant_canopy )  THEN
    5004          pchf_prep(:) = r_d * exner(nzub:nzut)                                 &
    5005                      / (c_p * hyp(nzub:nzut) * dx*dy*dz(1)) !< equals to 1 / (rho * c_p * Vbox * T)
     5006         pchf_prep(:) = r_d * exner(nz_urban_b:nz_urban_t)                                 &
     5007                     / (c_p * hyp(nz_urban_b:nz_urban_t) * dx*dy*dz(1)) !< equals to 1 / (rho * c_p * Vbox * T)
    50065008     ENDIF
    50075009
     
    59235925        ENDDO
    59245926!
    5925 !--    Find nzub, nzut, nzu via wall_flag_0 array (nzb_s_inner will be
     5927!--    Find nz_urban_b, nz_urban_t, nz_urban via wall_flag_0 array (nzb_s_inner will be
    59265928!--    removed later). The following contruct finds the lowest / largest index
    59275929!--    for any upward-facing wall (see bit 12).
     
    59765978
    59775979#if defined( __parallel )
    5978        CALL MPI_AllReduce(nzubl, nzub, 1, MPI_INTEGER, MPI_MIN, comm2d, ierr )
     5980       CALL MPI_AllReduce(nzubl, nz_urban_b, 1, MPI_INTEGER, MPI_MIN, comm2d, ierr )
    59795981       IF ( ierr /= 0 ) THEN
    5980            WRITE(9,*) 'Error MPI_AllReduce11:', ierr, nzubl, nzub
     5982           WRITE(9,*) 'Error MPI_AllReduce11:', ierr, nzubl, nz_urban_b
    59815983           FLUSH(9)
    59825984       ENDIF
    5983        CALL MPI_AllReduce(nzutl, nzut, 1, MPI_INTEGER, MPI_MAX, comm2d, ierr )
     5985       CALL MPI_AllReduce(nzutl, nz_urban_t, 1, MPI_INTEGER, MPI_MAX, comm2d, ierr )
    59845986       IF ( ierr /= 0 ) THEN
    5985            WRITE(9,*) 'Error MPI_AllReduce12:', ierr, nzutl, nzut
     5987           WRITE(9,*) 'Error MPI_AllReduce12:', ierr, nzutl, nz_urban_t
    59865988           FLUSH(9)
    59875989       ENDIF
    5988        CALL MPI_AllReduce(nzptl, nzpt, 1, MPI_INTEGER, MPI_MAX, comm2d, ierr )
     5990       CALL MPI_AllReduce(nzptl, nz_plant_t, 1, MPI_INTEGER, MPI_MAX, comm2d, ierr )
    59895991       IF ( ierr /= 0 ) THEN
    5990            WRITE(9,*) 'Error MPI_AllReduce13:', ierr, nzptl, nzpt
     5992           WRITE(9,*) 'Error MPI_AllReduce13:', ierr, nzptl, nz_plant_t
    59915993           FLUSH(9)
    59925994       ENDIF
    59935995#else
    5994        nzub = nzubl
    5995        nzut = nzutl
    5996        nzpt = nzptl
     5996       nz_urban_b = nzubl
     5997       nz_urban_t = nzutl
     5998       nz_plant_t = nzptl
    59975999#endif
    59986000!
     
    60026004!--    are active. ABS (...) is required because the default value of
    60036005!--    dz_stretch_level_start is -9999999.9_wp (negative).
    6004        IF ( ABS( dz_stretch_level_start(1) ) <= zw(nzut) ) THEN
     6006       IF ( ABS( dz_stretch_level_start(1) ) <= zw(nz_urban_t) ) THEN
    60056007          WRITE( message_string, * ) 'The lowest level where vertical ',       &
    60066008                                     'stretching is applied have to be ',      &
    6007                                      'greater than ', zw(nzut)
     6009                                     'greater than ', zw(nz_urban_t)
    60086010          CALL message( 'radiation_interaction_init', 'PA0496', 1, 2, 0, 6, 0 )
    60096011       ENDIF
    60106012!
    60116013!--    global number of urban and plant layers
    6012        nzu = nzut - nzub + 1
    6013        nzp = nzpt - nzub + 1
     6014       nz_urban = nz_urban_t - nz_urban_b + 1
     6015       nz_plant = nz_plant_t - nz_urban_b + 1
    60146016!
    60156017!--    check max_raytracing_dist relative to urban surface layer height
    6016        mrl = 2.0_wp * nzu * dz(1)
     6018       mrl = 2.0_wp * nz_urban * dz(1)
    60176019!--    set max_raytracing_dist to double the urban surface layer height, if not set
    60186020       IF ( max_raytracing_dist == -999.0_wp ) THEN
     
    60636065       IF ( npcbl > 0 )  THEN
    60646066           ALLOCATE( pcbl(iz:ix, 1:npcbl) )
    6065            ALLOCATE( gridpcbl(nzub:nzpt,nys:nyn,nxl:nxr) )
     6067           ALLOCATE( gridpcbl(nz_urban_b:nz_plant_t,nys:nyn,nxl:nxr) )
    60666068           pcbl = -1
    60676069           gridpcbl(:,:,:) = 0
     
    61256127          ENDIF
    61266128
    6127           CALL MPI_Win_allocate(INT(STORAGE_SIZE(1_iwp)/8*nsurf_type_u*nzu*nny*nnx, &
     6129          CALL MPI_Win_allocate(INT(STORAGE_SIZE(1_iwp)/8*nsurf_type_u*nz_urban*nny*nnx, &
    61286130                                    kind=MPI_ADDRESS_KIND), STORAGE_SIZE(1_iwp)/8,  &
    61296131                                minfo, comm2d, gridsurf_rma_p, win_gridsurf, ierr)
    61306132          IF ( ierr /= 0 ) THEN
    61316133              WRITE(9,*) 'Error MPI_Win_allocate1:', ierr, &
    6132                  INT(STORAGE_SIZE(1_iwp)/8*nsurf_type_u*nzu*nny*nnx,kind=MPI_ADDRESS_KIND), &
     6134                 INT(STORAGE_SIZE(1_iwp)/8*nsurf_type_u*nz_urban*nny*nnx,kind=MPI_ADDRESS_KIND), &
    61336135                 STORAGE_SIZE(1_iwp)/8, win_gridsurf
    61346136              FLUSH(9)
     
    61476149!--       pointer and then redirecting a multidimensional pointer to it works
    61486150!--       fine.
    6149           CALL c_f_pointer(gridsurf_rma_p, gridsurf_rma, (/ nsurf_type_u*nzu*nny*nnx /))
    6150           gridsurf(0:nsurf_type_u-1, nzub:nzut, nys:nyn, nxl:nxr) =>                &
    6151                      gridsurf_rma(1:nsurf_type_u*nzu*nny*nnx)
     6151          CALL c_f_pointer(gridsurf_rma_p, gridsurf_rma, (/ nsurf_type_u*nz_urban*nny*nnx /))
     6152          gridsurf(0:nsurf_type_u-1, nz_urban_b:nz_urban_t, nys:nyn, nxl:nxr) =>                &
     6153                     gridsurf_rma(1:nsurf_type_u*nz_urban*nny*nnx)
    61526154#else
    6153           ALLOCATE(gridsurf(0:nsurf_type_u-1,nzub:nzut,nys:nyn,nxl:nxr) )
     6155          ALLOCATE(gridsurf(0:nsurf_type_u-1,nz_urban_b:nz_urban_t,nys:nyn,nxl:nxr) )
    61546156#endif
    61556157          gridsurf(:,:,:,:) = -999
     
    65116513        IF ( plant_canopy )  THEN
    65126514            ALLOCATE( plantt(0:(nx+1)*(ny+1)-1) )
    6513             maxboxesg = nx + ny + nzp + 1
     6515            maxboxesg = nx + ny + nz_plant + 1
    65146516            max_track_len = nx + ny + 1
    65156517!--         temporary arrays storing values for csf calculation during raytracing
     
    65646566!--             optimization of memory should be done
    65656567!--             Argument X of function STORAGE_SIZE(X) needs arbitrary REAL(wp) value, set to 1.0_wp for now
    6566                 size_lad_rma = STORAGE_SIZE(1.0_wp)/8*nnx*nny*nzp
     6568                size_lad_rma = STORAGE_SIZE(1.0_wp)/8*nnx*nny*nz_plant
    65676569                CALL MPI_Win_allocate(size_lad_rma, STORAGE_SIZE(1.0_wp)/8, minfo, comm2d, &
    65686570                                        lad_s_rma_p, win_lad, ierr)
     
    65726574                    FLUSH(9)
    65736575                ENDIF
    6574                 CALL c_f_pointer(lad_s_rma_p, lad_s_rma, (/ nzp*nny*nnx /))
    6575                 sub_lad(nzub:nzpt, nys:nyn, nxl:nxr) => lad_s_rma(1:nzp*nny*nnx)
     6576                CALL c_f_pointer(lad_s_rma_p, lad_s_rma, (/ nz_plant*nny*nnx /))
     6577                sub_lad(nz_urban_b:nz_plant_t, nys:nyn, nxl:nxr) => lad_s_rma(1:nz_plant*nny*nnx)
    65766578            ELSE
    6577                 ALLOCATE(sub_lad(nzub:nzpt, nys:nyn, nxl:nxr))
     6579                ALLOCATE(sub_lad(nz_urban_b:nz_plant_t, nys:nyn, nxl:nxr))
    65786580            ENDIF
    65796581#else
    65806582            plantt = RESHAPE( pct(nys:nyn,nxl:nxr), (/(nx+1)*(ny+1)/) )
    6581             ALLOCATE(sub_lad(nzub:nzpt, nys:nyn, nxl:nxr))
     6583            ALLOCATE(sub_lad(nz_urban_b:nz_plant_t, nys:nyn, nxl:nxr))
    65826584#endif
    65836585            plantt_max = MAXVAL(plantt)
    6584             ALLOCATE( rt2_track(2, max_track_len), rt2_track_lad(nzub:plantt_max, max_track_len), &
    6585                       rt2_track_dist(0:max_track_len), rt2_dist(plantt_max-nzub+2) )
     6586            ALLOCATE( rt2_track(2, max_track_len), rt2_track_lad(nz_urban_b:plantt_max, max_track_len), &
     6587                      rt2_track_dist(0:max_track_len), rt2_dist(plantt_max-nz_urban_b+2) )
    65866588
    65876589            sub_lad(:,:,:) = 0._wp
     
    65906592                    k = get_topography_top_index_ji( j, i, 's' )
    65916593
    6592                     sub_lad(k:nzpt, j, i) = lad_s(0:nzpt-k, j, i)
     6594                    sub_lad(k:nz_plant_t, j, i) = lad_s(0:nz_plant_t-k, j, i)
    65936595                ENDDO
    65946596            ENDDO
     
    66086610               
    66096611            ELSE
    6610                 ALLOCATE( sub_lad_g(0:(nx+1)*(ny+1)*nzp-1) )
    6611                 CALL MPI_AllGather( sub_lad, nnx*nny*nzp, MPI_REAL, &
    6612                                     sub_lad_g, nnx*nny*nzp, MPI_REAL, comm2d, ierr )
     6612                ALLOCATE( sub_lad_g(0:(nx+1)*(ny+1)*nz_plant-1) )
     6613                CALL MPI_AllGather( sub_lad, nnx*nny*nz_plant, MPI_REAL, &
     6614                                    sub_lad_g, nnx*nny*nz_plant, MPI_REAL, comm2d, ierr )
    66136615                IF ( ierr /= 0 ) THEN
    66146616                    WRITE(9,*) 'Error MPI_AllGather3:', ierr, SIZE(sub_lad), &
    6615                                 nnx*nny*nzp, SIZE(sub_lad_g), nnx*nny*nzp
     6617                                nnx*nny*nz_plant, SIZE(sub_lad_g), nnx*nny*nz_plant
    66166618                    FLUSH(9)
    66176619                ENDIF
     
    75517553#if defined( __parallel )
    75527554                        lad_ip(ncsb) = ip
    7553                         lad_disp(ncsb) = (box(3)-px*nnx)*(nny*nzp) + (box(2)-py*nny)*nzp + box(1)-nzub
     7555                        lad_disp(ncsb) = (box(3)-px*nnx)*(nny*nz_plant) + (box(2)-py*nny)*nz_plant + box(1)-nz_urban_b
    75547556#endif
    75557557                    ENDIF
     
    75957597                    lad_s_target = lad_s_ray(i)
    75967598                ELSE
    7597                     lad_s_target = sub_lad_g(lad_ip(i)*nnx*nny*nzp + lad_disp(i))
     7599                    lad_s_target = sub_lad_g(lad_ip(i)*nnx*nny*nz_plant + lad_disp(i))
    75987600                ENDIF
    75997601#else
     
    77367738         rt2_track_dist(0) = 0._wp
    77377739         rt2_track_lad(:,:) = 0._wp
    7738          nly = plantt_max - nzub + 1
     7740         nly = plantt_max - nz_urban_b + 1
    77397741      ENDIF
    77407742
     
    78717873               IF ( plantt(ig) < lowest_lad )  CYCLE
    78727874
    7873                wdisp = (rt2_track(2,i)-px*nnx)*(nny*nzp) + (rt2_track(1,i)-py*nny)*nzp + lowest_lad-nzub
     7875               wdisp = (rt2_track(2,i)-px*nnx)*(nny*nz_plant) + (rt2_track(1,i)-py*nny)*nz_plant + lowest_lad-nz_urban_b
    78747876               wcount = plantt(ig)-lowest_lad+1
    78757877               ! TODO send request ASAP - even during raytracing
     
    78977899               py = rt2_track(1,i)/nny
    78987900               ip = px*pdims(2)+py
    7899                ig = ip*nnx*nny*nzp + (rt2_track(2,i)-px*nnx)*(nny*nzp) + (rt2_track(1,i)-py*nny)*nzp
    7900                rt2_track_lad(nzub:plantt_max, i) = sub_lad_g(ig:ig+nly-1)
     7901               ig = ip*nnx*nny*nz_plant + (rt2_track(2,i)-px*nnx)*(nny*nz_plant) + (rt2_track(1,i)-py*nny)*nz_plant
     7902               rt2_track_lad(nz_urban_b:plantt_max, i) = sub_lad_g(ig:ig+nly-1)
    79017903            ENDDO
    79027904         ENDIF
    79037905#else
    79047906         DO  i = 1, ntrack
    7905             rt2_track_lad(nzub:plantt_max, i) = sub_lad(rt2_track(1,i), rt2_track(2,i), nzub:plantt_max)
     7907            rt2_track_lad(nz_urban_b:plantt_max, i) = sub_lad(rt2_track(1,i), rt2_track(2,i), nz_urban_b:plantt_max)
    79067908         ENDDO
    79077909#endif
     
    79427944!--      Assert that we have space allocated for CSFs
    79437945!--     
    7944          maxboxes = (ntrack + MAX(CEILING(origin(1)-.5_wp) - nzub,          &
    7945                                   nzut - CEILING(origin(1)-.5_wp))) * nrays
     7946         maxboxes = (ntrack + MAX(CEILING(origin(1)-.5_wp) - nz_urban_b,          &
     7947                                  nz_urban_t - CEILING(origin(1)-.5_wp))) * nrays
    79467948         IF ( ncsfl + maxboxes > ncsfla )  THEN
    79477949!--         use this code for growing by fixed exponential increments (equivalent to case where ncsfl always increases by 1)
     
    79557957!--      Calculate transparencies and store new CSFs
    79567958!--     
    7957          zbottom = REAL(nzub, wp) - .5_wp
     7959         zbottom = REAL(nz_urban_b, wp) - .5_wp
    79587960         ztop = REAL(plantt_max, wp) + .5_wp
    79597961
     
    81168118         py = y / nny
    81178119         iproc = px * pdims(2) + py
    8118          target_displ = ((x-px*nnx) * nny + y - py*nny ) * nzu * nsurf_type_u +&
    8119                         ( z-nzub ) * nsurf_type_u + d
     8120         target_displ = ((x-px*nnx) * nny + y - py*nny ) * nz_urban * nsurf_type_u +&
     8121                        ( z-nz_urban_b ) * nsurf_type_u + d
    81208122!
    81218123!--      Send MPI_Get request to obtain index target_surfl(i)
Note: See TracChangeset for help on using the changeset viewer.