Ignore:
Timestamp:
Dec 14, 2017 5:12:51 PM (4 years ago)
Author:
kanani
Message:

Merge of branch palm4u into trunk

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/data_output_3d.f90

    r2512 r2696  
    11!> @file data_output_3d.f90
    22!------------------------------------------------------------------------------!
    3 ! This file is part of PALM.
     3! This file is part of the PALM model system.
    44!
    55! PALM is free software: you can redistribute it and/or modify it under the
     
    2525! -----------------
    2626! $Id$
     27! Implementation of turbulence_closure_mod (TG)
     28! Implementation of chemistry module (FK)
     29! Set fill values at topography grid points or e.g. non-natural-type surface
     30! in case of LSM output (MS)
     31!
     32! 2512 2017-10-04 08:26:59Z raasch
    2733! upper bounds of 3d output changed from nx+1,ny+1 to nx,ny
    2834! no output of ghost layer data
     
    169175    USE averaging
    170176       
     177#if defined( __chem )
     178    USE chemistry_model_mod,                                                   &
     179        ONLY:  chem_data_output_3d
     180#endif       
     181
    171182    USE cloud_parameters,                                                      &
    172183        ONLY:  l_d_cp, pt_d_t
    173184       
    174185    USE control_parameters,                                                    &
    175         ONLY:  cloud_physics, do3d, do3d_no, do3d_time_count, io_blocks,       &
    176                io_group, land_surface, message_string, ntdim_3d, nz_do3d,      &
     186        ONLY:  air_chemistry, cloud_physics, do3d, do3d_no, do3d_time_count,   &
     187               io_blocks, io_group, land_surface, message_string,              &
     188               ntdim_3d, nz_do3d,                                              &
    177189               psolver, simulated_time, time_since_reference_point,            &
    178190               urban_surface, varnamelength
     
    182194       
    183195    USE indices,                                                               &
    184         ONLY:  nbgp, nx, nxl, nxr, ny, nyn, nys, nzb
     196        ONLY:  nbgp, nx, nxl, nxr, ny, nyn, nys, nzb, wall_flags_0
    185197       
    186198    USE kinds
     
    194206
    195207    USE netcdf_interface,                                                      &
    196         ONLY:  id_set_3d, id_var_do3d, id_var_time_3d, nc_stat,                &
     208        ONLY:  fill_value, id_set_3d, id_var_do3d, id_var_time_3d, nc_stat,    &
    197209               netcdf_data_format, netcdf_handle_error
    198210       
     
    207219       
    208220    USE radiation_model_mod,                                                   &
    209         ONLY:  radiation, radiation_data_output_3d
     221        ONLY:  nzub, nzut, radiation, radiation_data_output_3d
     222
     223    USE turbulence_closure_mod,                                                &
     224        ONLY:  tcm_data_output_3d
    210225
    211226    USE urban_surface_mod,                                                     &
    212         ONLY:  nzub, nzut, usm_data_output_3d
     227        ONLY:  usm_data_output_3d
    213228
    214229
     
    216231
    217232    INTEGER(iwp) ::  av        !<
     233    INTEGER(iwp) ::  flag_nr   !< number of masking flag
    218234    INTEGER(iwp) ::  i         !<
    219235    INTEGER(iwp) ::  if        !<
     
    315331!--    Allocate a temporary array with the desired output dimensions.
    316332       ALLOCATE( local_pf(nxl:nxr,nys:nyn,nzb_do:nzt_do) )
     333!
     334!--    Before each output, set array local_pf to fill value
     335       local_pf = fill_value
     336!
     337!--    Set masking flag for topography for not resorted arrays
     338       flag_nr = 0
    317339
    318340       SELECT CASE ( trimvar )
     
    569591
    570592          CASE ( 'u' )
     593             flag_nr = 1
    571594             IF ( av == 0 )  THEN
    572595                to_be_resorted => u
     
    576599
    577600          CASE ( 'v' )
     601             flag_nr = 2
    578602             IF ( av == 0 )  THEN
    579603                to_be_resorted => v
     
    590614
    591615          CASE ( 'w' )
     616             flag_nr = 3
    592617             IF ( av == 0 )  THEN
    593618                to_be_resorted => w
     
    613638                DEALLOCATE ( local_pf )
    614639                ALLOCATE( local_pf(nxl:nxr,nys:nyn,nzb_do:nzt_do) )
     640                local_pf = fill_value
    615641
    616642                CALL lsm_data_output_3d( av, do3d(av,if), found, local_pf )
     
    629655             ENDIF
    630656
     657             IF ( .NOT. found )  THEN
     658                CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf )
     659                resorted = .TRUE.
     660             ENDIF
     661
    631662!
    632663!--          Radiation quantity
     
    638669
    639670!
     671!--          Chemistry model output
     672#if defined( __chem )
     673             IF ( .NOT. found  .AND.  air_chemistry )  THEN
     674                CALL chem_data_output_3d( av, do3d(av,if), found,              &
     675                                          local_pf )
     676                resorted = .TRUE.
     677             ENDIF
     678#endif
     679
     680!
    640681!--          Plant canopy model output
    641682             IF ( .NOT. found  .AND.  plant_canopy )  THEN
    642                 CALL pcm_data_output_3d( av, do3d(av,if), found,         &
    643                                                local_pf )
     683                CALL pcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     684                                         fill_value )
    644685                resorted = .TRUE.
    645686             ENDIF
     
    667708             DO  j = nys, nyn
    668709                DO  k = nzb_do, nzt_do
    669                    local_pf(i,j,k) = to_be_resorted(k,j,i)
     710                   local_pf(i,j,k) = MERGE(                                    &
     711                                      to_be_resorted(k,j,i),                   &
     712                                      REAL( fill_value, KIND = wp ),           &
     713                                      BTEST( wall_flags_0(k,j,i), flag_nr ) )
    670714                ENDDO
    671715             ENDDO
Note: See TracChangeset for help on using the changeset viewer.