Ignore:
Timestamp:
Apr 30, 2020 4:29:59 PM (4 years ago)
Author:
suehring
Message:

Bugfix in plant-canopy model for output of averaged transpiration rate after a restart; Revise check for output for plant heating rate and rename error message number; Surface-data output: enable output of mixing ratio and passive scalar concentration at the surface; Surface-data input: Add possibility to prescribe surface sensible and latent heat fluxes via static input file

File:
1 edited

Legend:

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

    r4442 r4514  
    2525! -----------------
    2626! $Id$
     27! Enable output of qsurf and ssurf
     28!
     29! 4442 2020-03-04 19:21:13Z suehring
    2730! Change order of dimension in surface array %frac to allow for better
    2831! vectorization.
     
    7780    USE averaging,                                                             &
    7881        ONLY:  e_av, ghf_av, lpt_av, lwp_av, ol_av, p_av, pc_av, pr_av, pt_av, &
    79                q_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qsws_av,               &
    80                qv_av, r_a_av, s_av, shf_av, ssws_av, ts_av, tsurf_av, u_av,    &
     82               q_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qsurf_av, qsws_av,     &
     83               qv_av, r_a_av, s_av, shf_av, ssurf_av,                          &
     84               ssws_av, ts_av, tsurf_av, u_av,                                 &
    8185               us_av, v_av, vpt_av, w_av, z0_av, z0h_av, z0q_av
    8286
     
    9599
    96100    USE indices,                                                               &
    97         ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt
     101        ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt,           &
     102               topo_top_ind
    98103
    99104    USE kinds
     
    232237                ql_vp_av = 0.0_wp
    233238
     239             CASE ( 'qsurf*' )
     240                IF ( .NOT. ALLOCATED( qsurf_av ) )  THEN
     241                   ALLOCATE( qsurf_av(nysg:nyng,nxlg:nxrg) )
     242                ENDIF
     243                qsurf_av = 0.0_wp
     244
    234245             CASE ( 'qsws*' )
    235246                IF ( .NOT. ALLOCATED( qsws_av ) )  THEN
     
    261272                ENDIF
    262273                shf_av = 0.0_wp
    263                
     274
     275             CASE ( 'ssurf*' )
     276                IF ( .NOT. ALLOCATED( ssurf_av ) )  THEN
     277                   ALLOCATE( ssurf_av(nysg:nyng,nxlg:nxrg) )
     278                ENDIF
     279                ssurf_av = 0.0_wp
     280
    264281             CASE ( 'ssws*' )
    265282                IF ( .NOT. ALLOCATED( ssws_av ) )  THEN
     
    587604             ENDIF
    588605
     606          CASE ( 'qsurf*' )
     607             IF ( ALLOCATED( qsurf_av ) ) THEN
     608                DO  i = nxl, nxr
     609                   DO  j = nys, nyn
     610                      match_def = surf_def_h(0)%start_index(j,i) <=            &
     611                                  surf_def_h(0)%end_index(j,i)
     612                      match_lsm = surf_lsm_h%start_index(j,i) <=               &
     613                                  surf_lsm_h%end_index(j,i)
     614                      match_usm = surf_usm_h%start_index(j,i) <=               &
     615                                  surf_usm_h%end_index(j,i)
     616
     617                      IF ( match_def )  THEN
     618                         m = surf_def_h(0)%end_index(j,i)
     619                         qsurf_av(j,i) = qsurf_av(j,i) +                       &
     620                                         surf_def_h(0)%q_surface(m)
     621                      ELSEIF ( match_lsm  .AND.  .NOT. match_usm )  THEN
     622                         m = surf_lsm_h%end_index(j,i)
     623                         qsurf_av(j,i) = qsurf_av(j,i) +                       &
     624                                         surf_lsm_h%q_surface(m)
     625                      ELSEIF ( match_usm )  THEN
     626                         m = surf_usm_h%end_index(j,i)
     627                         qsurf_av(j,i) = qsurf_av(j,i) +                       &
     628                                         surf_usm_h%q_surface(m)
     629                      ENDIF
     630                   ENDDO
     631                ENDDO
     632             ENDIF
     633
    589634          CASE ( 'qsws*' )
    590635!
     
    703748             ENDIF
    704749
     750          CASE ( 'ssurf*' )
     751             IF ( ALLOCATED( ssurf_av ) ) THEN
     752                DO  i = nxl, nxr
     753                   DO  j = nys, nyn
     754                      k = topo_top_ind(j,i,0)
     755                      ssurf_av(j,i) = ssurf_av(j,i) + s(k,j,i)
     756                   ENDDO
     757                ENDDO
     758             ENDIF
     759
    705760          CASE ( 'ssws*' )
    706761             IF ( ALLOCATED( ssws_av ) ) THEN
Note: See TracChangeset for help on using the changeset viewer.