Changeset 3554


Ignore:
Timestamp:
Nov 22, 2018 11:24:52 AM (6 years ago)
Author:
gronemeier
Message:

renamed variable if to ivar; add variable description

Location:
palm/trunk/SOURCE
Files:
7 edited

Legend:

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

    r3525 r3554  
    2525! -----------------
    2626! $Id$
     27! - add variable description
     28! - rename variable 'if' into 'ivar'
     29! - removed namelist LOCAL
     30! - removed variable rtext
     31!
     32! 3525 2018-11-14 16:06:14Z kanani
    2733! Changes related to clean-up of biometeorology (dom_dwd_user)
    2834!
     
    337343    IMPLICIT NONE
    338344
    339     CHARACTER (LEN=2)  ::  do2d_mode    !<
    340     CHARACTER (LEN=2)  ::  mode         !<
    341     CHARACTER (LEN=4)  ::  grid         !<
    342     CHARACTER (LEN=50) ::  rtext        !<
     345    CHARACTER (LEN=2)  ::  do2d_mode    !< output mode of variable ('xy', 'xz', 'yz')
     346    CHARACTER (LEN=2)  ::  mode         !< mode with which the routine is called ('xy', 'xz', 'yz')
     347    CHARACTER (LEN=4)  ::  grid         !< string defining the vertical grid
    343348   
    344     INTEGER(iwp) ::  av        !<
    345     INTEGER(iwp) ::  ngp       !<
    346     INTEGER(iwp) ::  file_id   !<
     349    INTEGER(iwp) ::  av        !< flag for (non-)average output
     350    INTEGER(iwp) ::  ngp       !< number of grid points of an output slice
     351    INTEGER(iwp) ::  file_id   !< id of output files
    347352    INTEGER(iwp) ::  flag_nr   !< number of masking flag
    348     INTEGER(iwp) ::  i         !<
    349     INTEGER(iwp) ::  if        !<
    350     INTEGER(iwp) ::  is        !<
    351     INTEGER(iwp) ::  iis       !<
    352     INTEGER(iwp) ::  j         !<
    353     INTEGER(iwp) ::  k         !<
    354     INTEGER(iwp) ::  l         !<
    355     INTEGER(iwp) ::  layer_xy  !<
    356     INTEGER(iwp) ::  m         !<
    357     INTEGER(iwp) ::  n         !<
    358     INTEGER(iwp) ::  nis       !<
    359     INTEGER(iwp) ::  ns        !<
     353    INTEGER(iwp) ::  i         !< loop index
     354    INTEGER(iwp) ::  iis       !< vertical index of a xy slice in array 'local_2d_sections'
     355    INTEGER(iwp) ::  is        !< slice index
     356    INTEGER(iwp) ::  ivar      !< variable index
     357    INTEGER(iwp) ::  j         !< loop index
     358    INTEGER(iwp) ::  k         !< loop index
     359    INTEGER(iwp) ::  l         !< loop index
     360    INTEGER(iwp) ::  layer_xy  !< vertical index of a xy slice in array 'local_pf'
     361    INTEGER(iwp) ::  m         !< loop index
     362    INTEGER(iwp) ::  n         !< loop index
     363    INTEGER(iwp) ::  nis       !< number of vertical slices to be written via parallel NetCDF output
     364    INTEGER(iwp) ::  ns        !< number of output slices
    360365    INTEGER(iwp) ::  nzb_do    !< lower limit of the data field (usually nzb)
    361366    INTEGER(iwp) ::  nzt_do    !< upper limit of the data field (usually nzt+1)
    362     INTEGER(iwp) ::  s_ind     !<
    363     INTEGER(iwp) ::  sender    !<
    364     INTEGER(iwp) ::  ind(4)    !<
     367    INTEGER(iwp) ::  s_ind     !< index of slice types (xy=1, xz=2, yz=3)
     368    INTEGER(iwp) ::  sender    !< PE id of sending PE
     369    INTEGER(iwp) ::  ind(4)    !< index limits (lower/upper bounds) of array 'local_2d'
     370
     371    LOGICAL ::  found          !< true if output variable was found
     372    LOGICAL ::  resorted       !< true if variable is resorted
     373    LOGICAL ::  two_d          !< true if variable is only two dimensional
     374
     375    REAL(wp) ::  mean_r        !< mean particle radius
     376    REAL(wp) ::  s_r2          !< sum( particle-radius**2 )
     377    REAL(wp) ::  s_r3          !< sum( particle-radius**3 )
    365378   
    366     LOGICAL ::  found          !<
    367     LOGICAL ::  resorted       !<
    368     LOGICAL ::  two_d          !<
    369    
    370     REAL(wp) ::  mean_r        !<
    371     REAL(wp) ::  s_r2          !<
    372     REAL(wp) ::  s_r3          !<
    373    
    374     REAL(wp), DIMENSION(:), ALLOCATABLE     ::  level_z             !<
    375     REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d            !<
    376     REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d_l          !<
    377 
    378     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf            !<
    379     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_2d_sections   !<
    380     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_2d_sections_l !<
     379    REAL(wp), DIMENSION(:), ALLOCATABLE     ::  level_z             !< z levels for output array
     380    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d            !< local 2-dimensional array containing output values
     381    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d_l          !< local 2-dimensional array containing output values
     382
     383    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf            !< output array
     384    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_2d_sections   !< local array containing values at all slices
     385    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_2d_sections_l !< local array containing values at all slices
    381386
    382387#if defined( __parallel )
    383     REAL(wp), DIMENSION(:,:),   ALLOCATABLE ::  total_2d    !<
    384 #endif
    385     REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !<
    386 
    387     NAMELIST /LOCAL/  rtext
     388    REAL(wp), DIMENSION(:,:),   ALLOCATABLE ::  total_2d    !< same as local_2d
     389#endif
     390    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< points to array which shall be output
    388391
    389392!
     
    543546!-- Loop of all variables to be written.
    544547!-- Output dimensions chosen
    545     if = 1
    546     l = MAX( 2, LEN_TRIM( do2d(av,if) ) )
    547     do2d_mode = do2d(av,if)(l-1:l)
    548 
    549     DO  WHILE ( do2d(av,if)(1:1) /= ' ' )
     548    ivar = 1
     549    l = MAX( 2, LEN_TRIM( do2d(av,ivar) ) )
     550    do2d_mode = do2d(av,ivar)(l-1:l)
     551
     552    DO  WHILE ( do2d(av,ivar)(1:1) /= ' ' )
    550553
    551554       IF ( do2d_mode == mode )  THEN
     
    567570!--       Store the array chosen on the temporary array.
    568571          resorted = .FALSE.
    569           SELECT CASE ( TRIM( do2d(av,if) ) )
     572          SELECT CASE ( TRIM( do2d(av,ivar) ) )
    570573             CASE ( 'e_xy', 'e_xz', 'e_yz' )
    571574                IF ( av == 0 )  THEN
     
    11351138!--             Substitute the values generated by "mirror" boundary condition
    11361139!--             at the bottom boundary by the real surface values.
    1137                 IF ( do2d(av,if) == 'u_xz'  .OR.  do2d(av,if) == 'u_yz' )  THEN
     1140                IF ( do2d(av,ivar) == 'u_xz'  .OR.  do2d(av,ivar) == 'u_yz' )  THEN
    11381141                   IF ( ibc_uv_b == 0 )  local_pf(:,:,nzb) = 0.0_wp
    11391142                ENDIF
     
    11861189!--             Substitute the values generated by "mirror" boundary condition
    11871190!--             at the bottom boundary by the real surface values.
    1188                 IF ( do2d(av,if) == 'v_xz'  .OR.  do2d(av,if) == 'v_yz' )  THEN
     1191                IF ( do2d(av,ivar) == 'v_xz'  .OR.  do2d(av,ivar) == 'v_yz' )  THEN
    11891192                   IF ( ibc_uv_b == 0 )  local_pf(:,:,nzb) = 0.0_wp
    11901193                ENDIF
     
    13161319!--             Quantities of other modules
    13171320                IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
    1318                    CALL bcm_data_output_2d( av, do2d(av,if), found, grid, mode,&
     1321                   CALL bcm_data_output_2d( av, do2d(av,ivar), found, grid, mode,&
    13191322                                            local_pf, two_d, nzb_do, nzt_do )
    13201323                ENDIF
    13211324
    13221325                IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
    1323                    CALL gust_data_output_2d( av, do2d(av,if), found, grid,     &
     1326                   CALL gust_data_output_2d( av, do2d(av,ivar), found, grid,     &
    13241327                                             local_pf, two_d, nzb_do, nzt_do )
    13251328                ENDIF
     
    13271330                IF ( .NOT. found  .AND.  biometeorology                        &
    13281331                                  .AND.  mode == 'xy' )  THEN
    1329                    CALL bio_data_output_2d( av, do2d(av,if), found, grid,      &
     1332                   CALL bio_data_output_2d( av, do2d(av,ivar), found, grid,      &
    13301333                                            local_pf, two_d, nzb_do, nzt_do,   &
    13311334                                            fill_value )
     
    13331336
    13341337                IF ( .NOT. found  .AND.  land_surface )  THEN
    1335                    CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,&
     1338                   CALL lsm_data_output_2d( av, do2d(av,ivar), found, grid, mode,&
    13361339                                            local_pf, two_d, nzb_do, nzt_do )
    13371340                ENDIF
    13381341
    13391342                IF ( .NOT. found  .AND.  ocean_mode )  THEN
    1340                    CALL ocean_data_output_2d( av, do2d(av,if), found, grid,    &
     1343                   CALL ocean_data_output_2d( av, do2d(av,ivar), found, grid,    &
    13411344                                              mode, local_pf, nzb_do, nzt_do )
    13421345                ENDIF
    13431346
    13441347                IF ( .NOT. found  .AND.  radiation )  THEN
    1345                    CALL radiation_data_output_2d( av, do2d(av,if), found, grid,&
     1348                   CALL radiation_data_output_2d( av, do2d(av,ivar), found, grid,&
    13461349                                                  mode, local_pf, two_d,       &
    13471350                                                  nzb_do, nzt_do  )
     
    13491352               
    13501353                IF ( .NOT. found  .AND.  salsa )  THEN
    1351                    CALL salsa_data_output_2d( av, do2d(av,if), found, grid,    &
     1354                   CALL salsa_data_output_2d( av, do2d(av,ivar), found, grid,    &
    13521355                                              mode, local_pf, two_d )
    13531356                ENDIF                 
    13541357
    13551358                IF ( .NOT. found  .AND.  uv_exposure )  THEN
    1356                    CALL uvem_data_output_2d( av, do2d(av,if), found, grid,     &
     1359                   CALL uvem_data_output_2d( av, do2d(av,ivar), found, grid,     &
    13571360                                             local_pf, two_d, nzb_do, nzt_do )
    13581361                ENDIF
    13591362
    13601363                IF ( .NOT. found  .AND.  air_chemistry )  THEN
    1361                    CALL chem_data_output_2d( av, do2d(av,if), found, grid, mode, &
     1364                   CALL chem_data_output_2d( av, do2d(av,ivar), found, grid, mode, &
    13621365                                             local_pf, two_d, nzb_do, nzt_do, fill_value )
    13631366                ENDIF
     
    13651368!--             User defined quantities
    13661369                IF ( .NOT. found )  THEN
    1367                    CALL user_data_output_2d( av, do2d(av,if), found, grid,     &
     1370                   CALL user_data_output_2d( av, do2d(av,ivar), found, grid,     &
    13681371                                             local_pf, two_d, nzb_do, nzt_do )
    13691372                ENDIF
     
    13831386                IF ( .NOT. found )  THEN
    13841387                   message_string = 'no output provided for: ' //              &
    1385                                     TRIM( do2d(av,if) )
     1388                                    TRIM( do2d(av,ivar) )
    13861389                   CALL message( 'data_output_2d', 'PA0181', 0, 0, 0, 6, 0 )
    13871390                ENDIF
     
    15561559                            IF ( two_d ) THEN
    15571560                               nc_stat = NF90_PUT_VAR( id_set_xy(av),       &
    1558                                                        id_var_do2d(av,if),  &
     1561                                                       id_var_do2d(av,ivar),  &
    15591562                                                       total_2d(0:nx,0:ny), &
    15601563                             start = (/ 1, 1, 1, do2d_xy_time_count(av) /), &
     
    15621565                            ELSE
    15631566                               nc_stat = NF90_PUT_VAR( id_set_xy(av),       &
    1564                                                        id_var_do2d(av,if),  &
     1567                                                       id_var_do2d(av,ivar),  &
    15651568                                                       total_2d(0:nx,0:ny), &
    15661569                            start = (/ 1, 1, is, do2d_xy_time_count(av) /), &
     
    15941597                   IF ( two_d ) THEN
    15951598                      nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    1596                                               id_var_do2d(av,if),           &
     1599                                              id_var_do2d(av,ivar),           &
    15971600                                              local_2d(nxl:nxr,nys:nyn),    &
    15981601                             start = (/ 1, 1, 1, do2d_xy_time_count(av) /), &
     
    16001603                   ELSE
    16011604                      nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    1602                                               id_var_do2d(av,if),           &
     1605                                              id_var_do2d(av,ivar),           &
    16031606                                              local_2d(nxl:nxr,nys:nyn),    &
    16041607                            start = (/ 1, 1, is, do2d_xy_time_count(av) /), &
     
    17861789#if defined( __netcdf )
    17871790                            nc_stat = NF90_PUT_VAR( id_set_xz(av),             &
    1788                                                  id_var_do2d(av,if),           &
     1791                                                 id_var_do2d(av,ivar),           &
    17891792                                                 total_2d(0:nx,nzb_do:nzt_do), &
    17901793                               start = (/ 1, is, 1, do2d_xz_time_count(av) /), &
     
    18271830#if defined( __netcdf )
    18281831                   nc_stat = NF90_PUT_VAR( id_set_xz(av),                   &
    1829                                            id_var_do2d(av,if),              &
     1832                                           id_var_do2d(av,ivar),              &
    18301833                                           local_2d(nxl:nxr,nzb_do:nzt_do), &
    18311834                            start = (/ 1, is, 1, do2d_xz_time_count(av) /), &
     
    20042007#if defined( __netcdf )
    20052008                            nc_stat = NF90_PUT_VAR( id_set_yz(av),             &
    2006                                                  id_var_do2d(av,if),           &
     2009                                                 id_var_do2d(av,ivar),           &
    20072010                                                 total_2d(0:ny,nzb_do:nzt_do), &
    20082011                            start = (/ is, 1, 1, do2d_yz_time_count(av) /),    &
     
    20452048#if defined( __netcdf )
    20462049                   nc_stat = NF90_PUT_VAR( id_set_yz(av),                   &
    2047                                            id_var_do2d(av,if),              &
     2050                                           id_var_do2d(av,ivar),              &
    20482051                                           local_2d(nys:nyn,nzb_do:nzt_do), &
    20492052                            start = (/ is, 1, 1, do2d_xz_time_count(av) /), &
     
    20792082!                      IF ( nxr == nx  .AND.  nyn /= ny )  THEN
    20802083!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    2081 !                                                 id_var_do2d(av,if),           &
     2084!                                                 id_var_do2d(av,ivar),           &
    20822085!                                                 local_2d_sections(nxl:nxr+1,  &
    20832086!                                                    nys:nyn,1:nis),            &
     
    20892092!                      ELSEIF ( nxr /= nx  .AND.  nyn == ny )  THEN
    20902093!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    2091 !                                                 id_var_do2d(av,if),           &
     2094!                                                 id_var_do2d(av,ivar),           &
    20922095!                                                 local_2d_sections(nxl:nxr,    &
    20932096!                                                    nys:nyn+1,1:nis),          &
     
    20992102!                      ELSEIF ( nxr == nx  .AND.  nyn == ny )  THEN
    21002103!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    2101 !                                                 id_var_do2d(av,if),           &
     2104!                                                 id_var_do2d(av,ivar),           &
    21022105!                                                 local_2d_sections(nxl:nxr+1,  &
    21032106!                                                    nys:nyn+1,1:nis),          &
     
    21092112!                      ELSE
    21102113                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    2111                                                  id_var_do2d(av,if),           &
     2114                                                 id_var_do2d(av,ivar),           &
    21122115                                                 local_2d_sections(nxl:nxr,    &
    21132116                                                    nys:nyn,1:nis),            &
     
    21512154!                      IF ( nxr == nx )  THEN
    21522155!                         nc_stat = NF90_PUT_VAR( id_set_xz(av),                &
    2153 !                                             id_var_do2d(av,if),               &
     2156!                                             id_var_do2d(av,ivar),               &
    21542157!                                             local_2d_sections(nxl:nxr+1,1:ns, &
    21552158!                                                nzb_do:nzt_do),                &
     
    21602163!                      ELSE
    21612164                         nc_stat = NF90_PUT_VAR( id_set_xz(av),                &
    2162                                              id_var_do2d(av,if),               &
     2165                                             id_var_do2d(av,ivar),               &
    21632166                                             local_2d_sections(nxl:nxr,1:ns,   &
    21642167                                                nzb_do:nzt_do),                &
     
    22012204!                      IF ( nyn == ny )  THEN
    22022205!                         nc_stat = NF90_PUT_VAR( id_set_yz(av),                &
    2203 !                                             id_var_do2d(av,if),               &
     2206!                                             id_var_do2d(av,ivar),               &
    22042207!                                             local_2d_sections(1:ns,           &
    22052208!                                                nys:nyn+1,nzb_do:nzt_do),      &
     
    22102213!                      ELSE
    22112214                         nc_stat = NF90_PUT_VAR( id_set_yz(av),                &
    2212                                              id_var_do2d(av,if),               &
     2215                                             id_var_do2d(av,ivar),               &
    22132216                                             local_2d_sections(1:ns,nys:nyn,   &
    22142217                                                nzb_do:nzt_do),                &
     
    22312234       ENDIF
    22322235
    2233        if = if + 1
    2234        l = MAX( 2, LEN_TRIM( do2d(av,if) ) )
    2235        do2d_mode = do2d(av,if)(l-1:l)
     2236       ivar = ivar + 1
     2237       l = MAX( 2, LEN_TRIM( do2d(av,ivar) ) )
     2238       do2d_mode = do2d(av,ivar)(l-1:l)
    22362239
    22372240    ENDDO
  • palm/trunk/SOURCE/data_output_3d.f90

    r3525 r3554  
    2525! -----------------
    2626! $Id$
     27! add variable description; rename variable 'if' into 'ivar'
     28!
     29! 3525 2018-11-14 16:06:14Z kanani
    2730! Changes related to clean-up of biometeorology (dom_dwd_user)
    2831!
     
    310313    IMPLICIT NONE
    311314
    312     INTEGER(iwp) ::  av        !<
     315    INTEGER(iwp) ::  av        !< flag for (non-)average output
    313316    INTEGER(iwp) ::  flag_nr   !< number of masking flag
    314     INTEGER(iwp) ::  i         !<
    315     INTEGER(iwp) ::  if        !<
    316     INTEGER(iwp) ::  j         !<
    317     INTEGER(iwp) ::  k         !<
    318     INTEGER(iwp) ::  n         !<
     317    INTEGER(iwp) ::  i         !< loop index
     318    INTEGER(iwp) ::  ivar      !< variable index
     319    INTEGER(iwp) ::  j         !< loop index
     320    INTEGER(iwp) ::  k         !< loop index
     321    INTEGER(iwp) ::  n         !< loop index
    319322    INTEGER(iwp) ::  nzb_do    !< vertical lower limit for data output
    320323    INTEGER(iwp) ::  nzt_do    !< vertical upper limit for data output
    321324
    322     LOGICAL      ::  found     !<
    323     LOGICAL      ::  resorted  !<
    324 
    325     REAL(wp)     ::  mean_r    !<
    326     REAL(wp)     ::  s_r2      !<
    327     REAL(wp)     ::  s_r3      !<
    328 
    329     REAL(sp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf  !<
    330 
    331     REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !<
     325    LOGICAL      ::  found     !< true if output variable was found
     326    LOGICAL      ::  resorted  !< true if variable is resorted
     327
     328    REAL(wp)     ::  mean_r    !< mean particle radius
     329    REAL(wp)     ::  s_r2      !< sum( particle-radius**2 )
     330    REAL(wp)     ::  s_r3      !< sum( particle-radius**3 )
     331
     332    REAL(sp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf  !< output array
     333
     334    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< pointer to array which shall be output
    332335
    333336    CHARACTER (LEN=varnamelength) ::  trimvar  !< TRIM of output-variable string
     
    387390!
    388391!-- Loop over all variables to be written.
    389     if = 1
    390 
    391     DO  WHILE ( do3d(av,if)(1:1) /= ' ' )
     392    ivar = 1
     393
     394    DO  WHILE ( do3d(av,ivar)(1:1) /= ' ' )
    392395
    393396!
     
    395398!--    surface model (urban_surface_mod.f90), see also SELECT CASE ( trimvar ).
    396399!--    Store the array chosen on the temporary array.
    397        trimvar = TRIM( do3d(av,if) )
     400       trimvar = TRIM( do3d(av,ivar) )
    398401       IF ( urban_surface  .AND.  trimvar(1:4) == 'usm_' )  THEN
    399402          trimvar = 'usm_output'
     
    711714!--       Block of urban surface model outputs   
    712715          CASE ( 'usm_output' )
    713              CALL usm_data_output_3d( av, do3d(av,if), found, local_pf,        &
     716             CALL usm_data_output_3d( av, do3d(av,ivar), found, local_pf,        &
    714717                                         nzb_do, nzt_do )
    715718
     
    719722!--          Quantities of other modules
    720723             IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
    721                 CALL bcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     724                CALL bcm_data_output_3d( av, do3d(av,ivar), found, local_pf,     &
    722725                                         nzb_do, nzt_do )
    723726                resorted = .TRUE.
     
    725728
    726729             IF ( .NOT. found  .AND.  air_chemistry )  THEN
    727                 CALL chem_data_output_3d( av, do3d(av,if), found,              &
     730                CALL chem_data_output_3d( av, do3d(av,ivar), found,              &
    728731                                          local_pf, fill_value, nzb_do, nzt_do )
    729732                resorted = .TRUE.
     
    731734
    732735             IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
    733                 CALL gust_data_output_3d( av, do3d(av,if), found, local_pf,    &
     736                CALL gust_data_output_3d( av, do3d(av,ivar), found, local_pf,    &
    734737                                          nzb_do, nzt_do )
    735738                resorted = .TRUE.
     
    746749                local_pf = fill_value
    747750
    748                 CALL lsm_data_output_3d( av, do3d(av,if), found, local_pf )
     751                CALL lsm_data_output_3d( av, do3d(av,ivar), found, local_pf )
    749752                resorted = .TRUE.
    750753
     
    762765
    763766             IF ( .NOT. found  .AND.  ocean_mode )  THEN
    764                 CALL ocean_data_output_3d( av, do3d(av,if), found, local_pf,   &
     767                CALL ocean_data_output_3d( av, do3d(av,ivar), found, local_pf,   &
    765768                                           nzb_do, nzt_do )
    766769                resorted = .TRUE.
     
    768771
    769772             IF ( .NOT. found  .AND.  plant_canopy )  THEN
    770                 CALL pcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     773                CALL pcm_data_output_3d( av, do3d(av,ivar), found, local_pf,     &
    771774                                         fill_value, nzb_do, nzt_do )
    772775                resorted = .TRUE.
     
    774777
    775778             IF ( .NOT. found  .AND.  radiation )  THEN
    776                 CALL radiation_data_output_3d( av, do3d(av,if), found,         &
     779                CALL radiation_data_output_3d( av, do3d(av,ivar), found,         &
    777780                                               local_pf, nzb_do, nzt_do )
    778781                resorted = .TRUE.
     
    780783
    781784             IF ( .NOT. found )  THEN
    782                 CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     785                CALL tcm_data_output_3d( av, do3d(av,ivar), found, local_pf,     &
    783786                                         nzb_do, nzt_do )
    784787                resorted = .TRUE.
     
    788791!--          SALSA output
    789792             IF ( .NOT. found  .AND.  salsa )  THEN
    790                 CALL salsa_data_output_3d( av, do3d(av,if), found, local_pf )
     793                CALL salsa_data_output_3d( av, do3d(av,ivar), found, local_pf )
    791794                resorted = .TRUE.
    792795             ENDIF                 
    793796
    794797             IF ( .NOT. found  .AND.  biometeorology )  THEN
    795                  CALL bio_data_output_3d( av, do3d(av,if), found, local_pf,    &
     798                 CALL bio_data_output_3d( av, do3d(av,ivar), found, local_pf,    &
    796799                                          nzb_do, nzt_do )
    797800             ENDIF
     
    800803!--          User defined quantities
    801804             IF ( .NOT. found )  THEN
    802                 CALL user_data_output_3d( av, do3d(av,if), found, local_pf,    &
     805                CALL user_data_output_3d( av, do3d(av,ivar), found, local_pf,    &
    803806                                          nzb_do, nzt_do )
    804807                resorted = .TRUE.
     
    807810             IF ( .NOT. found )  THEN
    808811                message_string =  'no output available for: ' //               &
    809                                   TRIM( do3d(av,if) )
     812                                  TRIM( do3d(av,ivar) )
    810813                CALL message( 'data_output_3d', 'PA0182', 0, 0, 0, 6, 0 )
    811814             ENDIF
     
    855858!--       Parallel output in netCDF4/HDF5 format.
    856859!          IF ( nxr == nx  .AND.  nyn /= ny )  THEN
    857 !             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,if),  &
     860!             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,ivar),  &
    858861!                               local_pf(nxl:nxr+1,nys:nyn,nzb_do:nzt_do),    &
    859862!                start = (/ nxl+1, nys+1, nzb_do+1, do3d_time_count(av) /),  &
    860863!                count = (/ nxr-nxl+2, nyn-nys+1, nzt_do-nzb_do+1, 1 /) )
    861864!          ELSEIF ( nxr /= nx  .AND.  nyn == ny )  THEN
    862 !             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,if),  &
     865!             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,ivar),  &
    863866!                               local_pf(nxl:nxr,nys:nyn+1,nzb_do:nzt_do),    &
    864867!                start = (/ nxl+1, nys+1, nzb_do+1, do3d_time_count(av) /),  &
    865868!                count = (/ nxr-nxl+1, nyn-nys+2, nzt_do-nzb_do+1, 1 /) )
    866869!          ELSEIF ( nxr == nx  .AND.  nyn == ny )  THEN
    867 !             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,if),  &
     870!             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,ivar),  &
    868871!                             local_pf(nxl:nxr+1,nys:nyn+1,nzb_do:nzt_do  ),  &
    869872!                start = (/ nxl+1, nys+1, nzb_do+1, do3d_time_count(av) /),  &
    870873!                count = (/ nxr-nxl+2, nyn-nys+2, nzt_do-nzb_do+1, 1 /) )
    871874!          ELSE
    872              nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,if),  &
     875             nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,ivar),  &
    873876                                 local_pf(nxl:nxr,nys:nyn,nzb_do:nzt_do),    &
    874877                start = (/ nxl+1, nys+1, nzb_do+1, do3d_time_count(av) /),  &
     
    880883#else
    881884#if defined( __netcdf )
    882        nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,if),        &
     885       nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_do3d(av,ivar),        &
    883886                         local_pf(nxl:nxr+1,nys:nyn+1,nzb_do:nzt_do),        &
    884887                         start = (/ 1, 1, 1, do3d_time_count(av) /),     &
     
    888891#endif
    889892
    890        if = if + 1
     893       ivar = ivar + 1
    891894
    892895!
  • palm/trunk/SOURCE/data_output_mask.f90

    r3467 r3554  
    2525! -----------------
    2626! $Id$
     27! add variable description
     28!
     29! 3467 2018-10-30 19:05:21Z suehring
    2730! Implementation of a new aerosol module salsa.
    2831!
     
    199202    CHARACTER(LEN=5) ::  grid !< flag to distinquish between staggered grids
    200203
    201     INTEGER(iwp) ::  av                      !<
    202     INTEGER(iwp) ::  ngp                     !<
    203     INTEGER(iwp) ::  i                       !<
    204     INTEGER(iwp) ::  ivar                    !<
    205     INTEGER(iwp) ::  j                       !<
    206     INTEGER(iwp) ::  k                       !<
    207     INTEGER(iwp) ::  kk                      !<
    208     INTEGER(iwp) ::  n                       !<
    209     INTEGER(iwp) ::  netcdf_data_format_save !<
    210     INTEGER(iwp) ::  sender                  !<
     204    INTEGER(iwp) ::  av                      !< flag for (non-)average output
     205    INTEGER(iwp) ::  ngp                     !< number of grid points of an output slice
     206    INTEGER(iwp) ::  i                       !< loop index
     207    INTEGER(iwp) ::  ivar                    !< variable index
     208    INTEGER(iwp) ::  j                       !< loop index
     209    INTEGER(iwp) ::  k                       !< loop index
     210    INTEGER(iwp) ::  kk                      !< vertical index
     211    INTEGER(iwp) ::  n                       !< loop index
     212    INTEGER(iwp) ::  netcdf_data_format_save !< value of netcdf_data_format
     213    INTEGER(iwp) ::  sender                  !< PE id of sending PE
    211214    INTEGER(iwp) ::  topo_top_ind            !< k index of highest horizontal surface
    212     INTEGER(iwp) ::  ind(6)                  !<
    213 
    214     LOGICAL ::  found     !<
    215     LOGICAL ::  resorted  !<
    216 
    217     REAL(wp) ::  mean_r   !<
    218     REAL(wp) ::  s_r2     !<
    219     REAL(wp) ::  s_r3     !<
     215    INTEGER(iwp) ::  ind(6)                  !< index limits (lower/upper bounds) of array 'local_2d'
     216
     217    LOGICAL ::  found      !< true if output variable was found
     218    LOGICAL ::  resorted   !< true if variable is resorted
     219
     220    REAL(wp) ::  mean_r    !< mean particle radius
     221    REAL(wp) ::  s_r2      !< sum( particle-radius**2 )
     222    REAL(wp) ::  s_r3      !< sum( particle-radius**3 )
    220223   
    221     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf    !<
     224    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf    !< output array
    222225#if defined( __parallel )
    223     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  total_pf    !<
     226    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  total_pf    !< collected output array
    224227#endif
    225     REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !<
     228    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< points to array which shall be output
    226229
    227230!
  • palm/trunk/SOURCE/data_output_profiles.f90

    r3241 r3554  
    2525! -----------------
    2626! $Id$
     27! add variable description
     28!
     29! 3241 2018-09-12 15:02:00Z raasch
    2730! unused format statements removed
    2831!
     
    126129
    127130
    128     INTEGER(iwp) ::  i  !<
    129     INTEGER(iwp) ::  sr !<
     131    INTEGER(iwp) ::  i  !< loop index
     132    INTEGER(iwp) ::  sr !< statistic region index
    130133
    131134!
  • palm/trunk/SOURCE/init_masks.f90

    r3512 r3554  
    2525! -----------------
    2626! $Id$
     27! add variable description
     28!
     29! 3512 2018-11-09 18:09:51Z gronemeier
    2730! Bugfix: do not output ghost points if mask_x/y_loop is not specified
    2831!
     
    196199    IMPLICIT NONE
    197200
    198     CHARACTER (LEN=varnamelength) ::  var  !<
    199     CHARACTER (LEN=7) ::  unit !<
     201    CHARACTER (LEN=varnamelength) ::  var  !< contains variable name
     202    CHARACTER (LEN=7)             ::  unit !< contains unit of variable
    200203   
    201     CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) ::  do_mask      !<
    202     CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) ::  do_mask_user !<
     204    CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) ::  do_mask      !< list of output variables
     205    CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) ::  do_mask_user !< list of user-specified output variables
    203206
    204207    INTEGER(iwp) ::  count        !< counting masking indices along a dimension
    205     INTEGER(iwp) ::  i            !<
    206     INTEGER(iwp) ::  ilen         !<
    207     INTEGER(iwp) ::  ind(6)       !<
    208     INTEGER(iwp) ::  ind_array(1) !<
    209     INTEGER(iwp) ::  j            !<
    210     INTEGER(iwp) ::  k            !<
     208    INTEGER(iwp) ::  i            !< loop index
     209    INTEGER(iwp) ::  ilen         !< length of string saved in 'do_mask'
     210    INTEGER(iwp) ::  ind(6)       !< index limits (lower/upper bounds) of output array
     211    INTEGER(iwp) ::  ind_array(1) !< array index
     212    INTEGER(iwp) ::  j            !< loop index
     213    INTEGER(iwp) ::  k            !< loop index
    211214    INTEGER(iwp) ::  m            !< mask index
    212     INTEGER(iwp) ::  n            !<
    213     INTEGER(iwp) ::  sender       !<
     215    INTEGER(iwp) ::  n            !< loop index
     216    INTEGER(iwp) ::  sender       !< PE id of sending PE
    214217   
    215     INTEGER(iwp), DIMENSION(:), ALLOCATABLE ::  tmp_array !<
    216 
    217     LOGICAL ::  found !<
     218    INTEGER(iwp), DIMENSION(:), ALLOCATABLE ::  tmp_array !< temporary 1D array
     219
     220    LOGICAL ::  found !< true if variable is found
    218221
    219222!
  • palm/trunk/SOURCE/posix_calls_from_fortran.f90

    r2718 r3554  
    2525! -----------------
    2626! $Id: posix_calls_from_fortran.f90 2696 2017-12-14 17:12:51Z kanani $
     27! add variable description
     28!
     29! 2696 2017-12-14 17:12:51Z kanani
    2730! Corrected "Former revisions" section
    2831!
     
    5053
    5154    INTERFACE
    52 
     55!
     56!--    Sleep function from C library
    5357       FUNCTION fsleep( seconds )  BIND( C, NAME='sleep' )
    5458          IMPORT
     
    7377!> Wait a specified amount of seconds
    7478!------------------------------------------------------------------------------!
    75     SUBROUTINE fortran_sleep( seconds )
     79 SUBROUTINE fortran_sleep( seconds )
    7680
    77        INTEGER, INTENT(IN) ::  seconds
     81    INTEGER, INTENT(IN) ::  seconds             !< seconds to wait
    7882
    79        INTEGER(c_int)      ::  seconds_in_c
    80        INTEGER(c_int)      ::  sleep_return_value
     83    INTEGER(c_int)      ::  seconds_in_c        !< same as seconds
     84    INTEGER(c_int)      ::  sleep_return_value  !< returned value to sleep
    8185
    82        seconds_in_c = seconds
     86    seconds_in_c = seconds
    8387
    84        sleep_return_value = fsleep( seconds_in_c )
     88    sleep_return_value = fsleep( seconds_in_c )
    8589
    86    END SUBROUTINE fortran_sleep
     90 END SUBROUTINE fortran_sleep
    8791
    8892 END MODULE posix_calls_from_fortran
    89 
  • palm/trunk/SOURCE/subsidence_mod.f90

    r3302 r3554  
    2525! -----------------
    2626! $Id$
     27! add subroutine and variable description
     28!
     29! 3302 2018-10-03 02:39:40Z raasch
    2730! small message change
    2831!
     
    124127! Description:
    125128! ------------
    126 !> @todo Missing subroutine description.
     129!> Initialize vertical subsidence velocity w_subs.
    127130!------------------------------------------------------------------------------!
    128131    SUBROUTINE init_w_subsidence
     
    142145       IMPLICIT NONE
    143146
    144        INTEGER(iwp) ::  i !<
    145        INTEGER(iwp) ::  k !<
    146 
    147        REAL(wp)     ::  gradient   !<
    148        REAL(wp)     ::  ws_surface !<
     147       INTEGER(iwp) ::  i !< loop index
     148       INTEGER(iwp) ::  k !< loop index
     149
     150       REAL(wp)     ::  gradient   !< vertical gradient of subsidence velocity
     151       REAL(wp)     ::  ws_surface !< subsidence velocity at the surface
    149152
    150153       IF ( .NOT. ALLOCATED( w_subs ) )  THEN
     
    201204! Description:
    202205! ------------
    203 !> @todo Missing subroutine description.
     206!> Add effect of large-scale subsidence to variable.
    204207!------------------------------------------------------------------------------!
    205208    SUBROUTINE subsidence( tendency, var, var_init, ls_index )
     
    223226       IMPLICIT NONE
    224227 
    225        INTEGER(iwp) ::  i !<
    226        INTEGER(iwp) ::  j !<
    227        INTEGER(iwp) ::  k !<
    228        INTEGER(iwp) ::  ls_index !<
    229 
    230        REAL(wp)     ::  tmp_tend !<
    231        REAL(wp)     ::  tmp_grad !<
     228       INTEGER(iwp) ::  i        !< loop index
     229       INTEGER(iwp) ::  j        !< loop index
     230       INTEGER(iwp) ::  k        !< loop index
     231       INTEGER(iwp) ::  ls_index !< index of large-scale subsidence in sums_ls_l
     232
     233       REAL(wp)     ::  tmp_tend !< temporary tendency
     234       REAL(wp)     ::  tmp_grad !< temporary gradient
    232235   
    233        REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var      !<
    234        REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  tendency !<
    235        REAL(wp), DIMENSION(nzb:nzt+1) ::  var_init                     !<
    236        REAL(wp), DIMENSION(nzb:nzt+1) ::  var_mod                      !<
     236       REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var      !< variable where to add subsidence
     237       REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  tendency !< tendency of var
     238       REAL(wp), DIMENSION(nzb:nzt+1) ::  var_init                     !< initialization profile of var
     239       REAL(wp), DIMENSION(nzb:nzt+1) ::  var_mod                      !< modified profile of var
    237240
    238241       var_mod = var_init
     
    316319! Description:
    317320! ------------
    318 !> @todo Missing subroutine description.
     321!> Add effect of large-scale subsidence to variable.
    319322!------------------------------------------------------------------------------!
    320323 SUBROUTINE subsidence_ij( i, j, tendency, var, var_init, ls_index )
     
    337340       IMPLICIT NONE
    338341 
    339        INTEGER(iwp) ::  i !<
    340        INTEGER(iwp) ::  j !<
    341        INTEGER(iwp) ::  k !<
    342        INTEGER(iwp) ::  ls_index !<
    343 
    344        REAL(wp)     ::  tmp_tend !<
    345        REAL(wp)     ::  tmp_grad !<
     342       INTEGER(iwp) ::  i        !< loop variable
     343       INTEGER(iwp) ::  j        !< loop variable
     344       INTEGER(iwp) ::  k        !< loop variable
     345       INTEGER(iwp) ::  ls_index !< index of large-scale subsidence in sums_ls_l
     346
     347       REAL(wp)     ::  tmp_tend !< temporary tendency
     348       REAL(wp)     ::  tmp_grad !< temporary gradient
    346349   
    347        REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var      !<
    348        REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  tendency !<
    349        REAL(wp), DIMENSION(nzb:nzt+1) ::  var_init                     !<
    350        REAL(wp), DIMENSION(nzb:nzt+1) ::  var_mod                      !<
     350       REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var      !< variable where to add subsidence
     351       REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  tendency !< tendency of var
     352       REAL(wp), DIMENSION(nzb:nzt+1) ::  var_init                     !< initialization profile of var
     353       REAL(wp), DIMENSION(nzb:nzt+1) ::  var_mod                      !< modified profile of var
    351354
    352355       var_mod = var_init
Note: See TracChangeset for help on using the changeset viewer.