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

renamed variable if to ivar; add variable description

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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!
Note: See TracChangeset for help on using the changeset viewer.