Ignore:
Timestamp:
Oct 26, 2018 6:25:44 PM (3 years ago)
Author:
gronemeier
Message:

new: terrain-following masked output; bugfixes: increase vertical dimension of gamma_w_green_sat by 1, add checks for masked output for chemistry_model and radiation_model, reordered calls to xxx_define_netcdf_grid in masked output part

File:
1 edited

Legend:

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

    r2718 r3435  
    2525! -----------------
    2626! $Id$
     27! Add terrain-following output
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    6265    USE kinds
    6366   
     67    USE surface_mod,                                                           &
     68        ONLY:  get_topography_top_index_ji
     69   
    6470    USE user
    6571
    6672    IMPLICIT NONE
    6773
    68     CHARACTER (LEN=*) ::  variable   !<
     74    CHARACTER (LEN=*) ::  variable  !<
     75    CHARACTER (LEN=5) ::  grid      !< flag to distinquish between staggered grids
    6976
    70     INTEGER(iwp) ::  av   !<
    71     INTEGER(iwp) ::  i    !<
    72     INTEGER(iwp) ::  j    !<
    73     INTEGER(iwp) ::  k    !<
     77    INTEGER(iwp) ::  av             !<
     78    INTEGER(iwp) ::  i              !<
     79    INTEGER(iwp) ::  j              !<
     80    INTEGER(iwp) ::  k              !<
     81    INTEGER(iwp) ::  topo_top_ind   !< k index of highest horizontal surface
    7482
    75     LOGICAL ::  found     !<
     83    LOGICAL ::  found               !<
    7684
    7785    REAL(wp),                                                                  &
     
    8189
    8290    found = .TRUE.
     91    grid  = 's'
    8392
    8493    SELECT CASE ( TRIM( variable ) )
     
    9099!       CASE ( 'u2' )
    91100!          IF ( av == 0 )  THEN
    92 !            DO  i = 1, mask_size_l(mid,1)
    93 !               DO  j = 1, mask_size_l(mid,2)
    94 !                  DO  k = 1, mask_size_l(mid,3)
    95 !                      local_pf(i,j,k) = u2(mask_k(mid,k),                       &
    96 !                                           mask_j(mid,j),mask_i(mid,i))
     101!             IF ( .NOT. mask_surface(mid) )  THEN
     102!!
     103!!--             Default masked output
     104!                DO  i = 1, mask_size_l(mid,1)
     105!                   DO  j = 1, mask_size_l(mid,2)
     106!                      DO  k = 1, mask_size_l(mid,3)
     107!                         local_pf(i,j,k) = u2(mask_k(mid,k),                  &
     108!                                              mask_j(mid,j),                  &
     109!                                              mask_i(mid,i))
     110!                      ENDDO
    97111!                   ENDDO
    98112!                ENDDO
    99 !             ENDDO
    100 !          ELSE
    101 !            DO  i = 1, mask_size_l(mid,1)
    102 !               DO  j = 1, mask_size_l(mid,2)
    103 !                  DO  k = 1, mask_size_l(mid,3)
    104 !                      local_pf(i,j,k) = u2_av(mask_k(mid,k),                    &
    105 !                                              mask_j(mid,j),mask_i(mid,i))
     113!             ELSE
     114!!
     115!!--             Terrain-following masked output
     116!                DO  i = 1, mask_size_l(mid,1)
     117!                   DO  j = 1, mask_size_l(mid,2)
     118!!
     119!!--                   Get k index of highest horizontal surface
     120!                      topo_top_ind = get_topography_top_index_ji( &
     121!                                        mask_j(mid,j), &
     122!                                        mask_i(mid,i), &
     123!                                        grid )
     124!!
     125!!--                   Save output array
     126!                      DO  k = 1, mask_size_l(mid,3)
     127!                         local_pf(i,j,k) = u2(MIN( topo_top_ind+mask_k(mid,k),&
     128!                                                   nzt+1 ),                   &
     129!                                              mask_j(mid,j),                  &
     130!                                              mask_i(mid,i)                   )
     131!                      ENDDO
    106132!                   ENDDO
    107133!                ENDDO
    108 !             ENDDO
     134!             ENDIF
     135!          ELSE
     136!             IF ( .NOT. mask_surface(mid) )  THEN
     137!!
     138!!--             Default masked output
     139!                DO  i = 1, mask_size_l(mid,1)
     140!                   DO  j = 1, mask_size_l(mid,2)
     141!                      DO  k = 1, mask_size_l(mid,3)
     142!                          local_pf(i,j,k) = u2_av(mask_k(mid,k),              &
     143!                                                  mask_j(mid,j),              &
     144!                                                  mask_i(mid,i) )
     145!                       ENDDO
     146!                    ENDDO
     147!                 ENDDO
     148!             ELSE
     149!!
     150!!--             Terrain-following masked output
     151!                DO  i = 1, mask_size_l(mid,1)
     152!                   DO  j = 1, mask_size_l(mid,2)
     153!!
     154!!--                   Get k index of highest horizontal surface
     155!                      topo_top_ind = get_topography_top_index_ji( &
     156!                                        mask_j(mid,j), &
     157!                                        mask_i(mid,i), &
     158!                                        grid )
     159!!
     160!!--                   Save output array
     161!                      DO  k = 1, mask_size_l(mid,3)
     162!                         local_pf(i,j,k) = u2_av(                             &
     163!                                              MIN( topo_top_ind+mask_k(mid,k),&
     164!                                                   nzt+1 ),                   &
     165!                                              mask_j(mid,j),                  &
     166!                                              mask_i(mid,i)                   )
     167!                      ENDDO
     168!                   ENDDO
     169!                ENDDO
     170!             ENDIF
    109171!          ENDIF
    110172
Note: See TracChangeset for help on using the changeset viewer.