Ignore:
Timestamp:
Jul 26, 2018 12:55:23 PM (6 years ago)
Author:
suehring
Message:

Further revision of 2D surface output for radiation and chemistry quantities; bugfix for commit 3170

File:
1 edited

Legend:

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

    r3172 r3173  
    2828! -----------------
    2929! $Id$
     30! Revise output of surface radiation quantities in case of overhanging
     31! structures
     32!
     33! 3172 2018-07-26 12:06:06Z suehring
    3034! Bugfixes:
    3135!  - temporal work-around for calculation of effective radiative surface
     
    74977501    CHARACTER (LEN=*) :: variable !<
    74987502
     7503    LOGICAL      ::  match_lsm !< flag indicating natural-type surface
     7504    LOGICAL      ::  match_usm !< flag indicating urban-type surface
     7505   
    74997506    INTEGER(iwp) ::  i !<
    75007507    INTEGER(iwp) ::  j !<
     
    75977604                DO  i = nxl, nxr
    75987605                   DO  j = nys, nyn
    7599                       DO m = surf_lsm_h%start_index(j,i),                      &
    7600                              surf_lsm_h%end_index(j,i)
     7606                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     7607                                  surf_lsm_h%end_index(j,i)
     7608                      match_usm = surf_usm_h%start_index(j,i) <=               &
     7609                                  surf_usm_h%end_index(j,i)
     7610
     7611                     IF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     7612                         m = surf_lsm_h%end_index(j,i)
    76017613                         rad_net_av(j,i) = rad_net_av(j,i) +                   &
    7602                                            surf_lsm_h%rad_net(m)
    7603                       ENDDO
    7604                       DO m = surf_usm_h%start_index(j,i),                      &
    7605                              surf_usm_h%end_index(j,i)
     7614                                         surf_lsm_h%rad_net(m)
     7615                      ELSEIF ( match_usm )  THEN
     7616                         m = surf_usm_h%end_index(j,i)
    76067617                         rad_net_av(j,i) = rad_net_av(j,i) +                   &
    7607                                            surf_usm_h%rad_net(m)
    7608                       ENDDO
     7618                                         surf_usm_h%rad_net(m)
     7619                      ENDIF
    76097620                   ENDDO
    76107621                ENDDO
     
    76157626                DO  i = nxl, nxr
    76167627                   DO  j = nys, nyn
    7617                       DO m = surf_lsm_h%start_index(j,i),                      &
    7618                              surf_lsm_h%end_index(j,i)
     7628                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     7629                                  surf_lsm_h%end_index(j,i)
     7630                      match_usm = surf_usm_h%start_index(j,i) <=               &
     7631                                  surf_usm_h%end_index(j,i)
     7632
     7633                      IF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     7634                         m = surf_lsm_h%end_index(j,i)
    76197635                         rad_lw_in_xy_av(j,i) = rad_lw_in_xy_av(j,i) +         &
    7620                                                 surf_lsm_h%rad_lw_in(m)
    7621                       ENDDO
    7622                       DO m = surf_usm_h%start_index(j,i),                      &
    7623                              surf_usm_h%end_index(j,i)
     7636                                         surf_lsm_h%rad_lw_in(m)
     7637                      ELSEIF ( match_usm )  THEN
     7638                         m = surf_usm_h%end_index(j,i)
    76247639                         rad_lw_in_xy_av(j,i) = rad_lw_in_xy_av(j,i) +         &
    7625                                                 surf_usm_h%rad_lw_in(m)
    7626                       ENDDO
     7640                                         surf_usm_h%rad_lw_in(m)
     7641                      ENDIF
    76277642                   ENDDO
    76287643                ENDDO
     
    76337648                DO  i = nxl, nxr
    76347649                   DO  j = nys, nyn
    7635                       DO m = surf_lsm_h%start_index(j,i),                      &
    7636                              surf_lsm_h%end_index(j,i)
     7650                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     7651                                  surf_lsm_h%end_index(j,i)
     7652                      match_usm = surf_usm_h%start_index(j,i) <=               &
     7653                                  surf_usm_h%end_index(j,i)
     7654
     7655                      IF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     7656                         m = surf_lsm_h%end_index(j,i)
    76377657                         rad_lw_out_xy_av(j,i) = rad_lw_out_xy_av(j,i) +       &
    7638                                                    surf_lsm_h%rad_lw_out(m)
    7639                       ENDDO
    7640                       DO m = surf_usm_h%start_index(j,i),                      &
    7641                              surf_usm_h%end_index(j,i)
     7658                                                 surf_lsm_h%rad_lw_out(m)
     7659                      ELSEIF ( match_usm )  THEN
     7660                         m = surf_usm_h%end_index(j,i)
    76427661                         rad_lw_out_xy_av(j,i) = rad_lw_out_xy_av(j,i) +       &
    7643                                                   surf_usm_h%rad_lw_out(m)
    7644                       ENDDO
     7662                                                 surf_usm_h%rad_lw_out(m)
     7663                      ENDIF
    76457664                   ENDDO
    76467665                ENDDO
     
    76517670                DO  i = nxl, nxr
    76527671                   DO  j = nys, nyn
    7653                       DO m = surf_lsm_h%start_index(j,i),                      &
    7654                              surf_lsm_h%end_index(j,i)
     7672                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     7673                                  surf_lsm_h%end_index(j,i)
     7674                      match_usm = surf_usm_h%start_index(j,i) <=               &
     7675                                  surf_usm_h%end_index(j,i)
     7676
     7677                      IF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     7678                         m = surf_lsm_h%end_index(j,i)
    76557679                         rad_sw_in_xy_av(j,i) = rad_sw_in_xy_av(j,i) +         &
    7656                                                   surf_lsm_h%rad_sw_in(m)
    7657                       ENDDO
    7658                       DO m = surf_usm_h%start_index(j,i),                      &
    7659                              surf_usm_h%end_index(j,i)
     7680                                                surf_lsm_h%rad_sw_in(m)
     7681                      ELSEIF ( match_usm )  THEN
     7682                         m = surf_usm_h%end_index(j,i)
    76607683                         rad_sw_in_xy_av(j,i) = rad_sw_in_xy_av(j,i) +         &
    76617684                                                surf_usm_h%rad_sw_in(m)
    7662                       ENDDO
     7685                      ENDIF
    76637686                   ENDDO
    76647687                ENDDO
     
    76697692                DO  i = nxl, nxr
    76707693                   DO  j = nys, nyn
    7671                       DO m = surf_lsm_h%start_index(j,i),                      &
    7672                              surf_lsm_h%end_index(j,i)
     7694                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     7695                                  surf_lsm_h%end_index(j,i)
     7696                      match_usm = surf_usm_h%start_index(j,i) <=               &
     7697                                  surf_usm_h%end_index(j,i)
     7698
     7699                      IF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     7700                         m = surf_lsm_h%end_index(j,i)
    76737701                         rad_sw_out_xy_av(j,i) = rad_sw_out_xy_av(j,i) +       &
    7674                                                    surf_lsm_h%rad_sw_out(m)
    7675                       ENDDO
    7676                       DO m = surf_usm_h%start_index(j,i),                      &
    7677                              surf_usm_h%end_index(j,i)
     7702                                                 surf_lsm_h%rad_sw_out(m)
     7703                      ELSEIF ( match_usm )  THEN
     7704                         m = surf_usm_h%end_index(j,i)
    76787705                         rad_sw_out_xy_av(j,i) = rad_sw_out_xy_av(j,i) +       &
    7679                                                    surf_usm_h%rad_sw_out(m)
    7680                       ENDDO
     7706                                                 surf_usm_h%rad_sw_out(m)
     7707                      ENDIF
    76817708                   ENDDO
    76827709                ENDDO
Note: See TracChangeset for help on using the changeset viewer.