Changeset 1833 for palm


Ignore:
Timestamp:
Apr 7, 2016 2:23:03 PM (8 years ago)
Author:
raasch
Message:

spectrum renamed spactra_par and further modularized, POINTER-attributes added in coupler-routines to avoid gfortran error messages

Location:
palm/trunk/SOURCE
Files:
20 edited
1 moved

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/Makefile

    r1827 r1833  
    2020# Current revisions:
    2121# ------------------
    22 #
     22# spectrum renamed spectra_mod, depencies for spectra changed
    2323#
    2424# Former revisions:
     
    290290        random_function.f90 random_gauss.f90 random_generator_parallel.f90 \
    291291        read_3d_binary.f90 read_var_list.f90 run_control.f90 \
    292         set_slicer_attributes_dvrp.f90 singleton.f90 sor.f90 spectrum.f90 \
     292        set_slicer_attributes_dvrp.f90 singleton.f90 sor.f90 spectra_mod.f90 \
    293293        subsidence.f90 sum_up_3d_data.f90 \
    294294        surface_coupler.f90 surface_layer_fluxes.f90 swap_timelevel.f90 temperton_fft.f90 \
     
    361361check_parameters.o: modules.o mod_kinds.o land_surface_model_mod.o \
    362362        netcdf_interface.o plant_canopy_model_mod.o pmc_interface.o radiation_model_mod.o \
    363         subsidence.o
     363        spectra_mod.o subsidence.o
    364364close_file.o: modules.o mod_kinds.o netcdf_interface.o
    365365compute_vpt.o: modules.o mod_kinds.o
     
    376376   netcdf_interface.o mod_particle_attributes.o
    377377data_output_spectra.o: modules.o cpulog.o mod_kinds.o netcdf_interface.o \
    378    spectrum.o
     378   spectra_mod.o
    379379data_output_tseries.o: modules.o cpulog.o mod_kinds.o netcdf_interface.o
    380380data_output_2d.o: modules.o cpulog.o mod_kinds.o mod_particle_attributes.o\
     
    399399global_min_max.o: modules.o mod_kinds.o
    400400header.o: modules.o cpulog.o mod_kinds.o netcdf_interface.o land_surface_model_mod.o\
    401 plant_canopy_model_mod.o pmc_handle_communicator.o pmc_interface.o \
    402    radiation_model_mod.o spectrum.o subsidence.o
     401   plant_canopy_model.o pmc_handle_communicator.o pmc_interface.o \
     402   radiation_model_mod.o spectra_mod.o subsidence.o
    403403inflow_turbulence.o: modules.o cpulog.o mod_kinds.o
    404404init_1d_model.o: modules.o mod_kinds.o
     
    414414init_masks.o: modules.o mod_kinds.o netcdf_interface.o
    415415init_ocean.o: modules.o eqn_state_seawater.o mod_kinds.o
    416 init_pegrid.o: modules.o mod_kinds.o
     416init_pegrid.o: modules.o mod_kinds.o spectra_mod.o
    417417init_pt_anomaly.o: modules.o mod_kinds.o
    418418init_rankine.o: modules.o mod_kinds.o
     
    456456mod_particle_attributes.o: mod_particle_attributes.f90 mod_kinds.o
    457457netcdf_interface.o: netcdf_interface.f90 modules.o mod_kinds.o \
    458    land_surface_model_mod.o spectrum.o
     458   land_surface_model_mod.o spectra_mod.o
    459459nudging.o: modules.o cpulog.o mod_kinds.o
     460<<<<<<< .mine
     461package_parin.o: modules.o mod_kinds.o \
     462   plant_canopy_model.o radiation_model.o
     463=======
    460464package_parin.o: modules.o mod_kinds.o spectrum.o
     465>>>>>>> .r1832
    461466palm.o: modules.o cpulog.o ls_forcing.o mod_kinds.o nudging.o\
    462467        pmc_interface.o surface_layer_fluxes.o
    463468parin.o: modules.o cpulog.o land_surface_model_mod.o mod_kinds.o netcdf_interface.o \
     469<<<<<<< .mine
     470   pmc_interface.o progress_bar.o spectra_mod.o
     471plant_canopy_model.o: modules.o mod_kinds.o
     472=======
    464473   plant_canopy_model_mod.o pmc_interface.o progress_bar.o radiation_model_mod.o
    465474plant_canopy_model_mod.o: modules.o mod_kinds.o
     475>>>>>>> .r1832
    466476pmc_interface.o: modules.o mod_kinds.o pmc_client.o pmc_general.o\
    467477        pmc_handle_communicator.o pmc_mpi_wrapper.o pmc_server.o
     
    490500random_gauss.o: mod_kinds.o random_function.o random_generator_parallel.o
    491501random_generator_parallel.o: mod_kinds.o
     502<<<<<<< .mine
     503read_3d_binary.o: modules.o cpulog.o mod_kinds.o land_surface_model_mod.o \
     504   radiation_model.o random_function.o random_generator_parallel.o \
     505   spectra_mod.o
     506read_var_list.o: modules.o mod_kinds.o netcdf_interface.o plant_canopy_model.o \
     507   spectra_mod.o
     508=======
    492509read_3d_binary.o: modules.o cpulog.o mod_kinds.o land_surface_model_mod.o\
    493510                  radiation_model_mod.o random_function.o\
    494511                  random_generator_parallel.o
    495512read_var_list.o: modules.o mod_kinds.o netcdf_interface.o plant_canopy_model_mod.o
     513>>>>>>> .r1832
    496514run_control.o: modules.o cpulog.o mod_kinds.o
    497515set_slicer_attributes_dvrp.o: modules.o mod_kinds.o
    498516singleton.o: mod_kinds.o singleton.f90
    499517sor.o: modules.o mod_kinds.o
    500 spectrum.o: spectrum.f90 modules.o mod_kinds.o cpulog.o fft_xy.o
     518spectra_mod.o: spectra_mod.f90 modules.o mod_kinds.o cpulog.o fft_xy.o
    501519subsidence.o: modules.o mod_kinds.o
    502520sum_up_3d_data.o: modules.o cpulog.o mod_kinds.o land_surface_model_mod.o\
     
    511529        ls_forcing.o mod_kinds.o nudging.o pmc_interface.o production_e.o \
    512530        prognostic_equations.o progress_bar.o radiation_model_mod.o \
    513         spectrum.o user_actions.o surface_layer_fluxes.o
     531        spectra_mod.o user_actions.o surface_layer_fluxes.o
    514532time_to_string.o: mod_kinds.o
    515533timestep.o: modules.o cpulog.o mod_kinds.o
     
    544562user_parin.o: modules.o mod_kinds.o user_module.o
    545563user_read_restart_data.o: modules.o mod_kinds.o user_module.o
    546 user_spectra.o: modules.o mod_kinds.o spectrum.o user_module.o
     564user_spectra.o: modules.o mod_kinds.o spectra_mod.o user_module.o
    547565user_statistics.o: modules.o mod_kinds.o netcdf_interface.o user_module.o
    548566wall_fluxes.o: modules.o mod_kinds.o
     567<<<<<<< .mine
     568write_3d_binary.o: modules.o cpulog.o mod_kinds.o land_surface_model_mod.o \
     569        radiation_model.o random_function.o random_generator_parallel.o \
     570        spectra_mod.o
     571write_var_list.o: modules.o mod_kinds.o netcdf_interface.o plant_canopy_model.o\
     572   spectra_mod.o =======
    549573write_3d_binary.o: modules.o cpulog.o mod_kinds.o land_surface_model_mod.o\
    550574                   radiation_model_mod.o random_function.o\
    551575                   random_generator_parallel.o
    552 write_var_list.o: modules.o mod_kinds.o netcdf_interface.o plant_canopy_model_mod.o
     576write_var_list.o: modules.o mod_kinds.o netcdf_interface.o plant_canopy_model_mod.o >>>>>>> .r1832
  • palm/trunk/SOURCE/check_parameters.f90

    r1830 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! check of spectra quantities moved to spectra_mod
    2222!
    2323! Former revisions:
     
    377377        ONLY: radiation, radiation_check_data_output,                          &
    378378              radiation_check_data_output_pr, radiation_check_parameters
     379    USE spectra_mod,                                                           &
     380        ONLY:  calculate_spectra, spectra_check_parameters
    379381    USE statistics
    380382    USE subsidence_mod
     
    10421044   
    10431045!
    1044 !-- When land surface model is used, peform addtional checks
     1046!-- Additional checks for spectra
     1047    IF ( calculate_spectra )  CALL spectra_check_parameters
     1048!
     1049!-- When land surface model is used, perform additional checks
    10451050    IF ( land_surface )  CALL lsm_check_parameters
    10461051
     
    20092014!
    20102015!-- Set the default intervals for data output, if necessary
    2011 !-- NOTE: dt_dosp has already been set in package_parin
     2016!-- NOTE: dt_dosp has already been set in spectra_parin
    20122017    IF ( dt_data_output /= 9999999.9_wp )  THEN
    20132018       IF ( dt_dopr           == 9999999.9_wp )  dt_dopr           = dt_data_output
     
    20272032    IF ( skip_time_dopr    == 9999999.9_wp )                                   &
    20282033                                       skip_time_dopr    = skip_time_data_output
    2029     IF ( skip_time_dosp    == 9999999.9_wp )                                   &
    2030                                        skip_time_dosp    = skip_time_data_output
    20312034    IF ( skip_time_do2d_xy == 9999999.9_wp )                                   &
    20322035                                       skip_time_do2d_xy = skip_time_data_output
     
    20452048
    20462049!
    2047 !-- Check the average intervals (first for 3d-data, then for profiles and
    2048 !-- spectra)
     2050!-- Check the average intervals (first for 3d-data, then for profiles)
    20492051    IF ( averaging_interval > dt_data_output_av )  THEN
    20502052       WRITE( message_string, * )  'averaging_interval = ',                    &
     
    20612063             averaging_interval_pr, ' must be <= dt_dopr = ', dt_dopr
    20622064       CALL message( 'check_parameters', 'PA0086', 1, 2, 0, 6, 0 )
    2063     ENDIF
    2064 
    2065     IF ( averaging_interval_sp == 9999999.9_wp )  THEN
    2066        averaging_interval_sp = averaging_interval
    2067     ENDIF
    2068 
    2069     IF ( averaging_interval_sp > dt_dosp )  THEN
    2070        WRITE( message_string, * )  'averaging_interval_sp = ',                 &
    2071              averaging_interval_sp, ' must be <= dt_dosp = ', dt_dosp
    2072        CALL message( 'check_parameters', 'PA0087', 1, 2, 0, 6, 0 )
    20732065    ENDIF
    20742066
  • palm/trunk/SOURCE/data_output_spectra.f90

    r1818 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectrum renamed spectra_mod, spectra related variables moved to spectra_mod,
     22! routines data_output_spectra_x/y removed
    2223!
    2324! Former revisions:
     
    7879#if defined( __netcdf )
    7980    USE control_parameters,                                                    &
    80         ONLY:  average_count_sp, averaging_interval_sp, dosp_time_count,       &
    81                message_string, run_description_header,                         &
     81        ONLY:  message_string, run_description_header,                         &
    8282               time_since_reference_point
    8383
     
    9494    USE pegrid
    9595
    96     USE spectrum,                                                              &
    97         ONLY:  comp_spectra_level, data_output_sp, spectra_direction
    98 
    99     USE statistics,                                                            &
    100         ONLY:  spectrum_x, spectrum_y
     96    USE spectra_mod,                                                           &
     97        ONLY:  average_count_sp, averaging_interval_sp, comp_spectra_level,    &
     98               data_output_sp, dosp_time_count, spectra_direction, spectrum_x, &
     99               spectrum_y
    101100
    102101
     
    226225        ONLY:  pi
    227226
    228     USE control_parameters,                                                    &
    229         ONLY:  dosp_time_count
    230 
    231227    USE grid_variables,                                                        &
    232228        ONLY:  dx, dy
     
    243239               netcdf_handle_error
    244240
    245     USE spectrum,                                                              &
    246         ONLY:  n_sp_x, n_sp_y
    247 
    248     USE statistics,                                                            &
    249         ONLY:  spectrum_x, spectrum_y
     241    USE spectra_mod,                                                           &
     242        ONLY:  dosp_time_count, n_sp_x, n_sp_y, spectrum_x, spectrum_y
     243
    250244
    251245    IMPLICIT NONE
     
    302296#endif
    303297 END SUBROUTINE output_spectra_netcdf
    304 
    305 
    306 !------------------------------------------------------------------------------!
    307 ! Description:
    308 ! ------------
    309 !> @todo Missing subroutine description.
    310 !------------------------------------------------------------------------------!
    311  SUBROUTINE data_output_spectra_x( m, cranz, pr, frame_written )
    312 
    313     USE arrays_3d,                                                             &
    314         ONLY:  zu, zw
    315     USE constants,                                                             &
    316         ONLY:  pi
    317 
    318     USE control_parameters,                                                    &
    319         ONLY:  averaging_interval_sp, run_description_header, simulated_time_chr
    320 
    321     USE grid_variables,                                                        &
    322         ONLY:  dx
    323 
    324     USE indices,                                                               &
    325         ONLY:  nx
    326 
    327     USE kinds
    328 
    329     USE pegrid
    330 
    331     USE statistics,                                                            &
    332         ONLY:  spectrum_x
    333 
    334     USE spectrum,                                                              &
    335         ONLY:  comp_spectra_level, header_char, lstyles, klist_x, n_sp_x,      &
    336                plot_spectra_level, utext_char, ytext_char
    337 
    338     IMPLICIT NONE
    339 
    340     CHARACTER (LEN=30) ::  atext !<
    341    
    342     INTEGER(iwp)       ::  i     !<
    343     INTEGER(iwp)       ::  j     !<
    344     INTEGER(iwp)       ::  k     !<
    345     INTEGER(iwp)       ::  m     !<
    346     INTEGER(iwp)       ::  pr    !<
    347    
    348     LOGICAL            ::  frame_written   !<
    349    
    350     REAL(wp)           ::  frequency = 0.0_wp !<
    351 !
    352 !-- Variables needed for PROFIL-namelist
    353     CHARACTER (LEN=80) ::  rtext                !<
    354     CHARACTER (LEN=80) ::  utext                !<
    355     CHARACTER (LEN=80) ::  xtext = 'k in m>->1' !<
    356     CHARACTER (LEN=80) ::  ytext                !<
    357 
    358     INTEGER(iwp)       ::  cranz       !<
    359     INTEGER(iwp)       ::  labforx = 3 !<
    360     INTEGER(iwp)       ::  labfory = 3 !<
    361     INTEGER(iwp)       ::  legpos  = 3 !<
    362     INTEGER(iwp)       ::  timodex = 1 !<
    363    
    364     INTEGER(iwp), DIMENSION(1:100) ::  cucol  = 1      !<
    365     INTEGER(iwp), DIMENSION(1:100) ::  klist  = 999999 !<
    366     INTEGER(iwp), DIMENSION(1:100) ::  lstyle = 0      !<
    367    
    368     LOGICAL ::  datleg = .TRUE. !<
    369     LOGICAL ::  grid = .TRUE.   !<
    370     LOGICAL ::  lclose = .TRUE. !<
    371     LOGICAL ::  rand = .TRUE.   !<
    372     LOGICAL ::  swap = .TRUE.   !<
    373     LOGICAL ::  twoxa = .TRUE.  !<
    374     LOGICAL ::  xlog = .TRUE.   !<
    375     LOGICAL ::  ylog = .TRUE.   !<
    376    
    377     REAL(wp) ::  gwid = 0.1_wp    !<
    378     REAL(wp) ::  rlegfak = 0.7_wp !<
    379     REAL(wp) ::  uxmin            !<
    380     REAL(wp) ::  uxmax            !<
    381     REAL(wp) ::  uymin            !<
    382     REAL(wp) ::  uymax            !<
    383      
    384     REAL(wp), DIMENSION(1:100) ::  lwid = 0.6_wp !<
    385     REAL(wp), DIMENSION(100)   ::  uyma          !<
    386     REAL(wp), DIMENSION(100)   ::  uymi          !<
    387 
    388     NAMELIST /RAHMEN/  cranz, datleg, rtext, swap
    389     NAMELIST /CROSS/   rand, cucol, grid, gwid, klist, labforx, labfory,      &
    390                        legpos, lclose, lstyle, lwid, rlegfak, timodex, utext, &
    391                        uxmin, uxmax, uymin, uymax, twoxa, xlog, xtext, ylog,  &
    392                        ytext
    393 
    394 
    395     rtext = '\0.5 ' // run_description_header
    396 
    397 !
    398 !-- Open parameter- and data-file
    399     CALL check_open( 81 )
    400     CALL check_open( 82 )
    401 
    402 !
    403 !-- Write file header,
    404 !-- write RAHMEN-parameters (pr=3: w-array is on zw, other arrys on zu,
    405 !-- pr serves as an index for output of strings (axis-labels) of the
    406 !-- different quantities u, v, w, pt and q)
    407     DO  k = 1, n_sp_x
    408        IF ( k < 100 )  THEN
    409           IF ( pr == 3 )  THEN
    410              WRITE ( 82, 100 )  '#', k, header_char( pr ),        &
    411                                 INT( zw(comp_spectra_level(k)) ), &
    412                                 simulated_time_chr
    413           ELSE
    414              WRITE ( 82, 100 )  '#', k, header_char( pr ),        &
    415                                 INT( zu(comp_spectra_level(k)) ), &
    416                                 simulated_time_chr
    417           ENDIF
    418        ELSE
    419           IF ( pr == 3 )  THEN
    420              WRITE ( 82, 101 )  '#', k, header_char( pr ),        &
    421                                 INT( zw(comp_spectra_level(k)) ), &
    422                                 simulated_time_chr
    423           ELSE
    424              WRITE ( 82, 101 )  '#', k, header_char( pr ),        &
    425                                 INT( zu(comp_spectra_level(k)) ), &
    426                                 simulated_time_chr
    427           ENDIF
    428        ENDIF
    429     ENDDO
    430 
    431     IF ( .NOT. frame_written )  THEN
    432        WRITE ( 81, RAHMEN )
    433        frame_written = .TRUE.
    434     ENDIF
    435 
    436 !
    437 !-- Write all data and calculate uymi and uyma. They serve to calculate
    438 !-- the CROSS-parameters uymin and uymax
    439     uymi = 999.999_wp; uyma = -999.999_wp
    440     DO  i = 1, nx/2
    441        frequency = 2.0_wp * pi * i / ( dx * ( nx + 1 ) )
    442        WRITE ( 82, 102 )  frequency, ( frequency * spectrum_x(i,k,m), k = 1, &
    443                           n_sp_x )
    444        DO  k = 1, n_sp_x
    445           uymi(k) = MIN( uymi(k), frequency * spectrum_x(i,k,m) )
    446           uyma(k) = MAX( uyma(k), frequency * spectrum_x(i,k,m) )
    447        ENDDO
    448     ENDDO
    449 
    450 !
    451 !-- Determine CROSS-parameters
    452     cucol(1:n_sp_x)  = (/ ( k, k = 1, n_sp_x ) /)
    453     lstyle(1:n_sp_x) = (/ ( lstyles(k), k = 1, n_sp_x ) /)
    454 
    455 !
    456 !-- Calculate klist-values from the available comp_spectra_level values
    457     i = 1; k = 1
    458     DO WHILE ( i <= 100  .AND.  plot_spectra_level(i) /= 999999 )
    459        DO WHILE ( k <= n_sp_x  .AND. &
    460                   plot_spectra_level(i) >= comp_spectra_level(k) )
    461           IF ( plot_spectra_level(i) == comp_spectra_level(k) )  THEN
    462              klist(i) = k + klist_x
    463           ELSE
    464              uymi(k) =  999.999_wp
    465              uyma(k) = -999.999_wp
    466           ENDIF
    467           k = k + 1
    468        ENDDO
    469        i = i + 1
    470     ENDDO
    471     uymi(k:n_sp_x) =  999.999_wp
    472     uyma(k:n_sp_x) = -999.999_wp
    473     utext = 'x'//utext_char( pr )
    474     IF ( averaging_interval_sp /= 0.0_wp ) THEN
    475        WRITE ( atext, 104 )  averaging_interval_sp
    476        utext = TRIM(utext) // ',  ' // TRIM( atext )
    477     ENDIF
    478     uxmin = 0.8_wp * 2.0_wp * pi        / ( dx * ( nx + 1 ) )
    479     uxmax = 1.2_wp * 2.0_wp * pi * nx/2 / ( dx * ( nx + 1 ) )
    480     uymin = 0.8_wp * MIN (  999.999_wp, MINVAL ( uymi ) )
    481     uymax = 1.2_wp * MAX ( -999.999_wp, MAXVAL ( uyma ) )
    482     ytext = ytext_char( pr )
    483 
    484 !
    485 !-- Output of CROSS-parameters
    486     WRITE ( 81, CROSS )
    487 
    488 !
    489 !-- Increase counter by the number of profiles written in the actual block
    490     klist_x = klist_x + n_sp_x
    491 
    492 !
    493 !-- Write end-mark
    494     WRITE ( 82, 103 )
    495 
    496 !
    497 !-- Close parameter- and data-file
    498     CALL close_file( 81 )
    499     CALL close_file( 82 )
    500 
    501 !
    502 !-- Formats
    503 100 FORMAT (A,I1,1X,A,1X,I4,'m ',A)
    504 101 FORMAT (A,I2,1X,A,1X,I4,'m ',A)
    505 102 FORMAT (E15.7,100(1X,E15.7))
    506 103 FORMAT ('NEXT')
    507 104 FORMAT ('time averaged over',F7.1,' s')
    508 
    509  END SUBROUTINE data_output_spectra_x
    510 
    511 
    512 !------------------------------------------------------------------------------!
    513 ! Description:
    514 ! ------------
    515 !> @todo Missing subroutine description.
    516 !------------------------------------------------------------------------------!
    517  SUBROUTINE data_output_spectra_y( m, cranz, pr, frame_written )
    518 
    519     USE arrays_3d,                                                             &
    520         ONLY:  zu, zw
    521  
    522     USE constants,                                                             &
    523         ONLY:  pi
    524 
    525     USE control_parameters,                                                    &
    526         ONLY:  averaging_interval_sp, run_description_header, simulated_time_chr
    527 
    528     USE grid_variables,                                                        &
    529         ONLY:  dy
    530 
    531     USE indices,                                                               &
    532         ONLY:  ny
    533 
    534     USE kinds
    535 
    536     USE pegrid
    537    
    538     USE statistics,                                                             &
    539         ONLY:  spectrum_y
    540 
    541     USE spectrum,                                                              &
    542         ONLY:  comp_spectra_level, header_char, klist_y, lstyles, n_sp_y,      &
    543                plot_spectra_level, utext_char, ytext_char
    544 
    545     IMPLICIT NONE
    546 
    547    
    548     CHARACTER (LEN=30) ::  atext !<
    549    
    550     INTEGER(iwp)       ::  i     !<
    551     INTEGER(iwp)       ::  j     !<
    552     INTEGER(iwp)       ::  k     !<
    553     INTEGER(iwp)       ::  m     !<
    554     INTEGER(iwp)       ::  pr    !<
    555    
    556     LOGICAL            :: frame_written   !<
    557    
    558     REAL(wp)           :: frequency = 0.0_wp !<
    559 
    560 !
    561 !-- Variables needed for PROFIL-namelist
    562     CHARACTER (LEN=80) ::  rtext                !<
    563     CHARACTER (LEN=80) ::  utext                !<
    564     CHARACTER (LEN=80) ::  xtext = 'k in m>->1' !<
    565     CHARACTER (LEN=80) ::  ytext                !<
    566 
    567     INTEGER(iwp) ::  cranz       !<
    568     INTEGER(iwp) ::  labforx = 3 !<
    569     INTEGER(iwp) ::  labfory = 3 !<
    570     INTEGER(iwp) ::  legpos  = 3 !<
    571     INTEGER(iwp) ::  timodex = 1 !<
    572    
    573     INTEGER(iwp), DIMENSION(1:100) ::  cucol  = 1      !<
    574     INTEGER(iwp), DIMENSION(1:100) ::  klist  = 999999 !<
    575     INTEGER(iwp), DIMENSION(1:100) ::  lstyle = 0      !<
    576    
    577     LOGICAL ::  datleg = .TRUE. !<
    578     LOGICAL ::  grid = .TRUE.   !<
    579     LOGICAL ::  lclose = .TRUE. !<
    580     LOGICAL ::  rand = .TRUE.   !<
    581     LOGICAL ::  swap = .TRUE.   !<
    582     LOGICAL ::  twoxa = .TRUE.  !<
    583     LOGICAL ::  xlog = .TRUE.   !<
    584     LOGICAL ::  ylog = .TRUE.   !<
    585    
    586     REAL(wp) ::  gwid = 0.1_wp     !<
    587     REAL(wp) ::  rlegfak = 0.7_wp  !<
    588     REAL(wp) ::  uxmin             !<
    589     REAL(wp) ::  uxmax             !<
    590     REAL(wp) ::  uymin             !<
    591     REAL(wp) ::  uymax             !<
    592    
    593     REAL(wp), DIMENSION(1:100) ::  lwid = 0.6_wp !<
    594    
    595     REAL(wp), DIMENSION(100)   ::  uyma          !<
    596     REAL(wp), DIMENSION(100)   ::  uymi          !<
    597 
    598     NAMELIST /RAHMEN/  cranz, datleg, rtext, swap
    599     NAMELIST /CROSS/   rand, cucol, grid, gwid, klist, labforx, labfory,      &
    600                        legpos, lclose, lstyle, lwid, rlegfak, timodex, utext, &
    601                        uxmin, uxmax, uymin, uymax, twoxa, xlog, xtext, ylog,  &
    602                        ytext
    603 
    604 
    605     rtext = '\0.5 ' // run_description_header
    606 
    607 !
    608 !-- Open parameter- and data-file
    609     CALL check_open( 83 )
    610     CALL check_open( 84 )
    611 
    612 !
    613 !-- Write file header,
    614 !-- write RAHMEN-parameters (pr=3: w-array is on zw, other arrys on zu,
    615 !-- pr serves as an index for output of strings (axis-labels) of the
    616 !-- different quantities u, v, w, pt and q)
    617     DO  k = 1, n_sp_y
    618        IF ( k < 100 )  THEN
    619           IF ( pr == 3 ) THEN
    620              WRITE ( 84, 100 )  '#', k, header_char( pr ),        &
    621                                 INT( zw(comp_spectra_level(k)) ), &
    622                                 simulated_time_chr
    623           ELSE
    624              WRITE ( 84, 100 )  '#', k, header_char( pr ),        &
    625                                 INT( zu(comp_spectra_level(k)) ), &
    626                                 simulated_time_chr
    627           ENDIF
    628        ELSE
    629           IF ( pr == 3 )  THEN
    630              WRITE ( 84, 101 )  '#', k, header_char( pr ),        &
    631                                 INT( zw(comp_spectra_level(k)) ), &
    632                                 simulated_time_chr
    633           ELSE
    634              WRITE ( 84, 101 )  '#', k, header_char( pr ),        &
    635                                 INT( zu(comp_spectra_level(k)) ), &
    636                                 simulated_time_chr
    637           ENDIF
    638        ENDIF
    639     ENDDO
    640 
    641     IF ( .NOT. frame_written )  THEN
    642        WRITE ( 83, RAHMEN )
    643        frame_written = .TRUE.
    644     ENDIF
    645 
    646 !
    647 !-- Write all data and calculate uymi and uyma. They serve to calculate
    648 !-- the CROSS-parameters uymin and uymax
    649     uymi = 999.999_wp; uyma = -999.999_wp
    650     DO  j = 1, ny/2
    651        frequency = 2.0_wp * pi * j / ( dy * ( ny + 1 ) )
    652        WRITE ( 84, 102 ) frequency, ( frequency * spectrum_y(j,k,m), &
    653                                       k = 1, n_sp_y )
    654        DO k = 1, n_sp_y
    655           uymi(k) = MIN( uymi(k), frequency * spectrum_y(j,k,m) )
    656           uyma(k) = MAX( uyma(k), frequency * spectrum_y(j,k,m) )
    657        ENDDO
    658     ENDDO
    659 
    660 !
    661 !-- Determine CROSS-parameters
    662     cucol(1:n_sp_y)  = (/ ( k, k = 1, n_sp_y ) /)
    663     lstyle(1:n_sp_y) = (/ ( lstyles(k), k = 1, n_sp_y ) /)
    664 
    665 !
    666 !-- Calculate klist-values from the available comp_spectra_level values
    667     j = 1; k = 1
    668     DO WHILE ( j <= 100  .AND.  plot_spectra_level(j) /= 999999 )
    669        DO WHILE ( k <= n_sp_y  .AND. &
    670                   plot_spectra_level(j) >= comp_spectra_level(k) )
    671           IF ( plot_spectra_level(j) == comp_spectra_level(k) )  THEN
    672              klist(j) = k + klist_y
    673           ELSE
    674              uymi(k) =  999.999_wp
    675              uyma(k) = -999.999_wp
    676           ENDIF
    677           k = k + 1
    678        ENDDO
    679        j = j + 1
    680     ENDDO
    681     uymi(k:n_sp_y) =  999.999_wp
    682     uyma(k:n_sp_y) = -999.999_wp
    683     utext = 'y'//utext_char( pr )
    684     IF ( averaging_interval_sp /= 0.0_wp )  THEN
    685        WRITE ( atext, 104 )  averaging_interval_sp
    686        utext = TRIM(utext) // ',  ' // TRIM( atext )
    687     ENDIF
    688     uxmin = 0.8_wp * 2.0_wp * pi        / ( dy * ( ny + 1 ) )
    689     uxmax = 1.2_wp * 2.0_wp * pi * ny/2 / ( dy * ( ny + 1 ) )
    690     uymin = 0.8_wp * MIN (  999.999_wp, MINVAL ( uymi ) )
    691     uymax = 1.2_wp * MAX ( -999.999_wp, MAXVAL ( uyma ) )
    692     ytext = ytext_char( pr )
    693 
    694 !
    695 !-- Output CROSS-parameters
    696     WRITE ( 83, CROSS )
    697 
    698 !
    699 !-- Increase counter by the number of profiles written in the actual block
    700     klist_y = klist_y + n_sp_y
    701 
    702 !
    703 !-- Write end-mark
    704     WRITE ( 84, 103 ) 
    705 
    706 !
    707 !-- Close parameter- and data-file
    708     CALL close_file( 83 )
    709     CALL close_file( 84 )
    710 
    711 !
    712 !-- Formats
    713 100 FORMAT (A,I1,1X,A,1X,I4,'m ',A)
    714 101 FORMAT (A,I2,1X,A,1X,I4,'m ',A)
    715 102 FORMAT (E15.7,100(1X,E15.7))
    716 103 FORMAT ('NEXT')
    717 104 FORMAT ('time averaged over',F7.1,' s')
    718 
    719  END SUBROUTINE data_output_spectra_y
  • palm/trunk/SOURCE/header.f90

    r1832 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! spectrum renamed spectra_mod, output of spectra related quantities moved to
     22! spectra_mod
    2223!
    2324! Former revisions:
     
    310311        ONLY:  radiation, radiation_header
    311312   
    312     USE spectrum,                                                              &
    313         ONLY:  comp_spectra_level, data_output_sp, plot_spectra_level,         &
    314                spectra_direction
     313    USE spectra_mod,                                                           &
     314        ONLY:  calculate_spectra, spectra_header
    315315
    316316    IMPLICIT NONE
     
    16311631
    16321632!
    1633 !-- Spectra output
    1634     IF ( dt_dosp /= 9999999.9_wp )  THEN
    1635        WRITE ( io, 370 )
    1636 
    1637        output_format = netcdf_data_format_string
    1638        IF ( netcdf_deflate == 0 )  THEN
    1639           WRITE ( io, 344 )  output_format
    1640        ELSE
    1641           WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
    1642        ENDIF
    1643        WRITE ( io, 371 )  dt_dosp
    1644        IF ( skip_time_dosp /= 0.0_wp )  WRITE ( io, 339 )  skip_time_dosp
    1645        WRITE ( io, 372 )  ( data_output_sp(i), i = 1,10 ),     &
    1646                           ( spectra_direction(i), i = 1,10 ),  &
    1647                           ( comp_spectra_level(i), i = 1,100 ), &
    1648                           ( plot_spectra_level(i), i = 1,100 ), &
    1649                           averaging_interval_sp, dt_averaging_input_pr
    1650     ENDIF
     1633!-- Output of spectra related quantities
     1634    IF ( calculate_spectra )  CALL spectra_header( io )
    16511635
    16521636    WRITE ( io, 99 )
     
    20892073367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
    20902074#endif
    2091 370 FORMAT ('    Spectra:')
    2092 371 FORMAT ('       Output every ',F7.1,' s'/)
    2093 372 FORMAT ('       Arrays:     ', 10(A5,',')/                         &
    2094             '       Directions: ', 10(A5,',')/                         &
    2095             '       height levels  k = ', 20(I3,',')/                  &
    2096             '                          ', 20(I3,',')/                  &
    2097             '                          ', 20(I3,',')/                  &
    2098             '                          ', 20(I3,',')/                  &
    2099             '                          ', 19(I3,','),I3,'.'/           &
    2100             '       height levels selected for standard plot:'/        &
    2101             '                      k = ', 20(I3,',')/                  &
    2102             '                          ', 20(I3,',')/                  &
    2103             '                          ', 20(I3,',')/                  &
    2104             '                          ', 20(I3,',')/                  &
    2105             '                          ', 19(I3,','),I3,'.'/           &
    2106             '       Time averaged over ', F7.1, ' s,' /                &
    2107             '       Profiles for the time averaging are taken every ', &
    2108                     F6.1,' s')
    21092075400 FORMAT (//' Physical quantities:'/ &
    21102076              ' -------------------'/)
  • palm/trunk/SOURCE/init_3d_model.f90

    r1832 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! initialization of spectra quantities moved to spectra_mod
    2222!
    2323! Former revisions:
     
    309309    USE statistics,                                                            &
    310310        ONLY:  hom, hom_sum, mean_surface_level_height, pr_palm, rmask,        &
    311                spectrum_x, spectrum_y, statistic_regions, sums, sums_divnew_l, &
    312                sums_divold_l, sums_l, sums_l_l, sums_up_fraction_l,            &
    313                sums_wsts_bc_l, ts_value, var_d, weight_pres, weight_substep
     311               statistic_regions, sums, sums_divnew_l, sums_divold_l, sums_l, &
     312               sums_l_l, sums_up_fraction_l, sums_wsts_bc_l, ts_value,         &
     313               weight_pres, weight_substep
    314314 
    315315    USE surface_layer_fluxes_mod,                                              &
     
    578578    ENDIF
    579579
    580     IF ( dt_dosp /= 9999999.9_wp )  THEN
    581        ALLOCATE( spectrum_x( 1:nx/2, 1:10, 1:10 ),                             &
    582                  spectrum_y( 1:ny/2, 1:10, 1:10 ) )
    583        spectrum_x = 0.0_wp
    584        spectrum_y = 0.0_wp
    585 
    586        ALLOCATE( var_d(nzb:nzt+1) )
    587        var_d = 0.0_wp
    588     ENDIF
    589 
    590580!
    591581!-- 1D-array for large scale subsidence velocity
  • palm/trunk/SOURCE/init_pegrid.f90

    r1818 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectra related variables moved to spectra_mod
    2222!
    2323! Former revisions:
     
    141141    USE control_parameters,                                                    &
    142142        ONLY:  bc_lr, bc_ns, coupling_mode, coupling_mode_remote,              &
    143                coupling_topology, dt_dosp, gathered_size, grid_level,          &
     143               coupling_topology, gathered_size, grid_level,                   &
    144144               grid_level_count, host, inflow_l, inflow_n, inflow_r, inflow_s, &
    145145               io_blocks, io_group, maximum_grid_level,                        &
     
    163163     
    164164    USE pegrid
    165  
     165
     166    USE spectra_mod,                                                           &
     167        ONLY:  dt_dosp
     168
    166169    USE transpose_indices,                                                     &
    167170        ONLY:  nxl_y, nxl_yd, nxl_z, nxr_y, nxr_yd, nxr_z, nyn_x, nyn_z, nys_x,&
  • palm/trunk/SOURCE/modules.f90

    r1832 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectra parameter moved to spectra module
    2222!
    2323! Former revisions:
     
    663663    CHARACTER (LEN=20), DIMENSION(0:1,100) ::  do2d = ' ', do3d = ' '
    664664
    665     INTEGER(iwp) ::  abort_mode = 1, average_count_pr = 0, average_count_sp = 0, &
     665    INTEGER(iwp) ::  abort_mode = 1, average_count_pr = 0, &
    666666                     average_count_3d = 0, current_timestep_number = 0, &
    667667                     coupling_topology = 0, &
     
    669669                     disturbance_level_ind_t, doav_n = 0, dopr_n = 0, &
    670670                     dopr_time_count = 0, dopts_time_count = 0, &
    671                      dosp_time_count = 0, dots_time_count = 0, &
     671                     dots_time_count = 0, &
    672672                     do2d_xy_n = 0, do2d_xz_n = 0, do2d_yz_n = 0, do3d_avs_n = 0, &
    673673                     dp_level_ind_b = 0, dvrp_filecount = 0, &
     
    781781                 alpha_surface = 0.0_wp, atmos_ocean_sign = 1.0_wp, &
    782782                 averaging_interval = 0.0_wp, averaging_interval_pr = 9999999.9_wp, &
    783                  averaging_interval_sp = 9999999.9_wp, bc_pt_t_val, bc_q_t_val, &
    784                  bottom_salinityflux = 0.0_wp, &
     783                 bc_pt_t_val, bc_q_t_val, bottom_salinityflux = 0.0_wp, &
    785784                 building_height = 50.0_wp, building_length_x = 50.0_wp, &
    786785                 building_length_y = 50.0_wp, building_wall_left = 9999999.9_wp, &
     
    799798                 dt_data_output_av = 9999999.9_wp, dt_disturb = 9999999.9_wp, &
    800799                 dt_dopr = 9999999.9_wp, dt_dopr_listing = 9999999.9_wp, &
    801                  dt_dopts = 9999999.9_wp, dt_dosp = 9999999.9_wp, dt_dots = 9999999.9_wp, &
     800                 dt_dopts = 9999999.9_wp, dt_dots = 9999999.9_wp, &
    802801                 dt_do2d_xy = 9999999.9_wp, dt_do2d_xz = 9999999.9_wp, &
    803802                 dt_do2d_yz = 9999999.9_wp, dt_do3d = 9999999.9_wp, dt_dvrp = 9999999.9_wp, &
     
    828827                 simulated_time = 0.0_wp, simulated_time_at_begin, sin_alpha_surface, &
    829828                 skip_time_data_output = 0.0_wp, skip_time_data_output_av = 9999999.9_wp,&
    830                  skip_time_dopr = 9999999.9_wp, skip_time_dosp = 9999999.9_wp, &
     829                 skip_time_dopr = 9999999.9_wp, &
    831830                 skip_time_do2d_xy = 9999999.9_wp, skip_time_do2d_xz = 9999999.9_wp, &
    832831                 skip_time_do2d_yz = 9999999.9_wp, skip_time_do3d = 9999999.9_wp, &
     
    12911290    REAL(wp), DIMENSION(:), ALLOCATABLE       ::  mean_surface_level_height,      &
    12921291                                                  sums_divnew_l, sums_divold_l,   &
    1293                                                   var_d, weight_substep,          &
    1294                                                   weight_pres
     1292                                                  weight_substep, weight_pres
    12951293    REAL(wp), DIMENSION(:,:), ALLOCATABLE     ::  sums, sums_wsts_bc_l, ts_value, &
    12961294                                                  sums_wsus_ws_l, sums_wsvs_ws_l, &
     
    13041302                                                  sums_ls_l
    13051303                                             
    1306     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  hom_sum, rmask, spectrum_x,     &
    1307                                                   spectrum_y, sums_l, sums_l_l,   &
    1308                                                   sums_up_fraction_l
     1304    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  hom_sum, rmask, sums_l,      &
     1305                                                  sums_l_l, sums_up_fraction_l
     1306
    13091307    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  hom
    13101308
  • palm/trunk/SOURCE/netcdf_interface.f90

    r1818 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectrum renamed spectra_mod
    2222!
    2323! Former revisions:
     
    348348    USE control_parameters,                                                    &
    349349        ONLY:  averaging_interval, averaging_interval_pr,                      &
    350                averaging_interval_sp, data_output_pr,  domask,  dopr_n,        &
     350               data_output_pr,  domask,  dopr_n,        &
    351351               dopr_time_count, dopts_time_count, dots_time_count,             &
    352                dosp_time_count, do2d, do2d_xz_time_count, do3d,                &
     352               do2d, do2d_xz_time_count, do3d,                &
    353353               do2d_yz_time_count, dt_data_output_av, dt_do2d_xy, dt_do2d_xz,  &
    354354               dt_do2d_yz, dt_do3d, mask_size, do2d_xy_time_count,             &
     
    380380        ONLY:  crmax, cross_profiles, dopr_index, profile_columns, profile_rows
    381381
    382     USE spectrum,                                                              &
    383         ONLY:  comp_spectra_level, data_output_sp, spectra_direction
     382    USE spectra_mod,                                                           &
     383        ONLY:  averaging_interval_sp, comp_spectra_level, data_output_sp, dosp_time_count, spectra_direction
    384384
    385385    USE statistics,                                                            &
  • palm/trunk/SOURCE/package_parin.f90

    r1832 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! reading of spectra_par moved to spectra_mod
    2222!
    2323! Former revisions:
     
    126126
    127127    USE control_parameters,                                                    &
    128         ONLY:  averaging_interval_sp, dt_data_output, dt_dopts, dt_dosp,       &
    129                dt_dvrp, particle_maximum_age, skip_time_dosp,                  &
     128        ONLY:  dt_data_output, dt_dopts, dt_dvrp, particle_maximum_age,        &
    130129               threshold
    131130
     
    159158               seed_follows_topography, use_sgs_for_particles,                 &
    160159               vertical_particle_advection, write_particle_statistics
    161 
    162     USE spectrum,                                                              &
    163         ONLY:  comp_spectra_level, data_output_sp, plot_spectra_level,         &
    164                spectra_direction
    165160
    166161    IMPLICIT NONE
     
    206201                                  write_particle_statistics
    207202
    208     NAMELIST /spectra_par/        averaging_interval_sp, comp_spectra_level,   &
    209                                   data_output_sp, dt_dosp, plot_spectra_level, &
    210                                   skip_time_dosp, spectra_direction
    211 
    212203!
    213204!-- Position the namelist-file at the beginning (it was already opened in
     
    251242 30 CONTINUE
    252243
    253     REWIND ( 11 )
    254     line = ' '
    255     DO   WHILE ( INDEX( line, '&spectra_par' ) == 0 )
    256        READ ( 11, '(A)', END=40 )  line
    257     ENDDO
    258     BACKSPACE ( 11 )
    259 
    260 !
    261 !-- Read user-defined namelist
    262     READ ( 11, spectra_par )
    263 
    264 !
    265 !-- Default setting of dt_dosp here (instead of check_parameters), because its
    266 !-- current value is needed in init_pegrid
    267     IF ( dt_dosp == 9999999.9_wp )  dt_dosp = dt_data_output
    268 
    269  40 CONTINUE
    270 
    271 
    272 
    273 
    274244 END SUBROUTINE package_parin
  • palm/trunk/SOURCE/palm.f90

    r1818 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! required user interface version changed
    2222!
    2323! Former revisions:
     
    192192
    193193    version = 'PALM 4.0'
    194     user_interface_required_revision = 'r1783'
     194    user_interface_required_revision = 'r1819'
    195195
    196196#if defined( __parallel )
  • palm/trunk/SOURCE/parin.f90

    r1832 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! call of spectra_parin
    2222!
    2323! Former revisions:
     
    245245        ONLY :  batch_job
    246246
    247      USE radiation_model_mod,                                                  &
    248          ONLY: radiation_parin 
    249        
     247    USE radiation_model_mod,                                                   &
     248        ONLY: radiation_parin 
     249
     250    USE spectra_mod,                                                           &
     251        ONLY :  spectra_parin
     252
    250253    USE statistics,                                                            &
    251254        ONLY:  hom, hom_sum, pr_palm, region, statistic_regions
     
    473476          ENDIF
    474477
    475          
    476478!
    477479!--       Check if land surface model is used and read &lsm_par if required
    478480          CALL lsm_parin
    479  
     481
     482!
     483!--       Check if spectra shall be calculated and read spectra_par if required
     484          CALL spectra_parin
     485
    480486!
    481487!--       Check if radiation model is used and read &radiation_par if required
  • palm/trunk/SOURCE/pmc_client.f90

    r1818 r1833  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! gfortran requires pointer attributes for some array declarations,
     23! long line wrapped
    2324!
    2425! Former revisions:
     
    354355       IMPLICIT none
    355356
    356        REAL(wp), INTENT(IN) ,DIMENSION(:,:) ::  array
     357       REAL(wp), INTENT(IN) ,DIMENSION(:,:), POINTER ::  array
    357358
    358359       INTEGER                              :: NrDims
     
    387388       IMPLICIT none
    388389
    389        REAL(wp),INTENT(IN),DIMENSION(:,:,:) ::  array
     390       REAL(wp),INTENT(IN),DIMENSION(:,:,:), POINTER ::  array
    390391
    391392       INTEGER                              ::  NrDims
     
    551552              ar%SendBuf = c_loc(base_array_cs(ar%SendIndex))
    552553              if(ar%SendIndex+ar%SendSize > bufsize) then
    553                  write(0,'(a,i4,4i7,1x,a)') 'Client Buffer too small ',i,ar%SendIndex,ar%SendSize,ar%SendIndex+ar%SendSize,bufsize,trim(ar%name)
     554                 write(0,'(a,i4,4i7,1x,a)') 'Client Buffer too small ',i,      &
     555                     ar%SendIndex,ar%SendSize,ar%SendIndex+ar%SendSize,bufsize,trim(ar%name)
    554556                 CALL MPI_Abort (MPI_COMM_WORLD, istat, ierr)
    555557              end if
  • palm/trunk/SOURCE/pmc_server.f90

    r1818 r1833  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! gfortran requires pointer attributes for some array declarations,
     23! long line wrapped
    2324!
    2425! Former revisions:
     
    277278        IMPLICIT none
    278279
    279         INTEGER,INTENT(IN)                         :: ClientId
    280         REAL(wp), INTENT(IN), DIMENSION(:,:)           ::  array
    281         REAL(wp), INTENT(IN), DIMENSION(:,:), OPTIONAL ::  array_2
     280        INTEGER,INTENT(IN) ::  ClientId
     281
     282        REAL(wp), INTENT(IN), DIMENSION(:,:), POINTER           ::  array
     283        REAL(wp), INTENT(IN), DIMENSION(:,:), POINTER, OPTIONAL ::  array_2
    282284
    283285        INTEGER                           :: NrDims
     
    307309        IMPLICIT none
    308310
    309         INTEGER,INTENT(IN)                         :: ClientId
    310         REAL(wp), INTENT(IN), DIMENSION(:,:,:)           ::  array
    311         REAL(wp), INTENT(IN), DIMENSION(:,:,:), OPTIONAL ::  array_2
     311        INTEGER,INTENT(IN) ::  ClientId
     312
     313        REAL(wp), INTENT(IN), DIMENSION(:,:,:), POINTER           ::  array
     314        REAL(wp), INTENT(IN), DIMENSION(:,:,:), POINTER, OPTIONAL ::  array_2
    312315        INTEGER,INTENT(IN)                         :: nz_cl
    313316        INTEGER,INTENT(IN)                         :: nz
     
    433436            ar%SendBuf = c_loc(base_array_sc(ar%SendIndex))
    434437            if(ar%SendIndex+ar%SendSize > bufsize) then
    435                write(0,'(a,i4,4i7,1x,a)') 'Server Buffer too small ',i,ar%SendIndex,ar%SendSize,ar%SendIndex+ar%SendSize,bufsize,trim(ar%name)
     438               write(0,'(a,i4,4i7,1x,a)') 'Server Buffer too small ',i,        &
     439                  ar%SendIndex,ar%SendSize,ar%SendIndex+ar%SendSize,bufsize,trim(ar%name)
    436440               CALL MPI_Abort (MPI_COMM_WORLD, istat, ierr)
    437441            end if
  • palm/trunk/SOURCE/read_3d_binary.f90

    r1818 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! statistics module replaced by spectra module
    2222!
    2323! Former revisions:
     
    146146        ONLY:  id_random_array, seq_random_array
    147147
    148     USE statistics,                                                            &
     148    USE spectra_mod,                                                           &
    149149        ONLY:  spectrum_x, spectrum_y
    150150
  • palm/trunk/SOURCE/read_var_list.f90

    r1832 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectra_mod added
    2222!
    2323! Former revisions:
     
    193193
    194194    USE radiation_model_mod,                                                   &
    195         ONLY: time_radiation
     195        ONLY:  time_radiation
     196
     197    USE spectra_mod,                                                           &
     198        ONLY:  average_count_sp
    196199
    197200    USE statistics,                                                            &
  • palm/trunk/SOURCE/spectra_mod.f90

    r1832 r1833  
    1 !> @file spectrum.f90
     1!> @file spectra_mod.f90
    22!--------------------------------------------------------------------------------!
    33! This file is part of PALM.
     
    1919! Current revisions:
    2020! -----------------
    21 !
     21! file renamed, reading the spectra_par NAMELIST moved from package_parin to
     22! here
    2223!
    2324! Former revisions:
     
    9192!>            transpose_zyd needs modification).
    9293!------------------------------------------------------------------------------!
    93  MODULE spectrum
     94 MODULE spectra_mod
    9495
    9596    USE kinds
     
    9798    PRIVATE
    9899
    99     CHARACTER (LEN=6),  DIMENSION(1:5) ::  header_char = (/ 'PS(u) ', 'PS(v) ',&
    100                                            'PS(w) ', 'PS(pt)', 'PS(q) ' /)
    101     CHARACTER (LEN=2),  DIMENSION(10)  ::  spectra_direction = 'x'
    102     CHARACTER (LEN=10), DIMENSION(10)  ::  data_output_sp  = ' '
    103     CHARACTER (LEN=25), DIMENSION(1:5) ::  utext_char =                    &
    104                                            (/ '-power spectrum of u     ', &
    105                                               '-power spectrum of v     ', &
    106                                               '-power spectrum of w     ', &
    107                                               '-power spectrum of ^1185 ', &
    108                                               '-power spectrum of q     ' /)
    109     CHARACTER (LEN=39), DIMENSION(1:5) ::  ytext_char =                        &
    110                                  (/ 'k ^2236 ^2566^2569<u(k) in m>2s>->2    ', &
    111                                     'k ^2236 ^2566^2569<v(k) in m>2s>->2    ', &
    112                                     'k ^2236 ^2566^2569<w(k) in m>2s>->2    ', &
    113                                     'k ^2236 ^2566^2569<^1185(k) in m>2s>->2', &
    114                                     'k ^2236 ^2566^2569<q(k) in m>2s>->2    ' /)
    115 
    116     INTEGER(iwp) ::  klist_x = 0, klist_y = 0, n_sp_x = 0, n_sp_y = 0
    117 
    118     INTEGER(iwp) ::  comp_spectra_level(100) = 999999,                   &
    119                      lstyles(100) = (/ 0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    120                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    121                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    122                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    123                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    124                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    125                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    126                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    127                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8,    &
    128                                        0, 7, 3, 10, 1, 4, 9, 2, 6, 8 /), &
    129                      plot_spectra_level(100) = 999999
    130 
    131     REAL(wp)    ::  time_to_start_sp = 0.0_wp
    132 
    133     PUBLIC  comp_spectra_level, data_output_sp, header_char, klist_x, klist_y, &
    134             lstyles, n_sp_x, n_sp_y, plot_spectra_level, spectra_direction,    &
    135             utext_char, ytext_char
     100    CHARACTER (LEN=2),  DIMENSION(10) ::  spectra_direction = 'x'
     101    CHARACTER (LEN=10), DIMENSION(10) ::  data_output_sp  = ' '
     102
     103    INTEGER(iwp) ::  average_count_sp = 0
     104    INTEGER(iwp) ::  dosp_time_count = 0
     105    INTEGER(iwp) ::  n_sp_x = 0, n_sp_y = 0
     106
     107    INTEGER(iwp) ::  comp_spectra_level(100) = 999999
     108
     109    LOGICAL ::  calculate_spectra   = .FALSE.  !< internal switch that spectra are calculated
     110    LOGICAL ::  spectra_initialized = .FALSE.  !< internal switch that spectra related quantities are initialized
     111
     112    REAL(wp) ::  averaging_interval_sp = 9999999.9_wp  !< averaging interval for spectra output
     113    REAL(wp) ::  dt_dosp = 9999999.9_wp                !< time interval for spectra output
     114    REAL(wp) ::  skip_time_dosp = 9999999.9_wp         !< no output of spectra data before this interval has passed
     115
     116    REAL(wp), DIMENSION(:), ALLOCATABLE ::  var_d
     117
     118    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  spectrum_x, spectrum_y
    136119
    137120    SAVE
     
    153136    END INTERFACE calc_spectra_y
    154137
    155     PUBLIC calc_spectra
     138    INTERFACE spectra_check_parameters
     139       MODULE PROCEDURE spectra_check_parameters
     140    END INTERFACE spectra_check_parameters
     141
     142    INTERFACE spectra_header
     143       MODULE PROCEDURE spectra_header
     144    END INTERFACE spectra_header
     145
     146    INTERFACE spectra_init
     147       MODULE PROCEDURE spectra_init
     148    END INTERFACE spectra_init
     149
     150    INTERFACE spectra_parin
     151       MODULE PROCEDURE spectra_parin
     152    END INTERFACE spectra_parin
     153
     154    PUBLIC average_count_sp, averaging_interval_sp, calc_spectra,              &
     155           calculate_spectra, comp_spectra_level, data_output_sp,              &
     156           dosp_time_count, dt_dosp, n_sp_x, n_sp_y, plot_spectra_level,       &
     157           skip_time_dosp, spectra_check_parameters, spectra_direction,        &
     158           spectra_header, spectra_init, spectra_parin, spectrum_x,            &
     159           spectrum_y, var_d
    156160
    157161
    158162 CONTAINS
     163
     164!------------------------------------------------------------------------------!
     165! Description:
     166! ------------
     167!> Parin for &spectra_par for calculating spectra
     168!------------------------------------------------------------------------------!
     169    SUBROUTINE spectra_parin
     170
     171       USE control_parameters,                                                 &
     172           ONLY:  dt_data_output
     173
     174       IMPLICIT NONE
     175
     176       CHARACTER (LEN=80) ::  line  !< dummy string that contains the current  &
     177                                    !< line of the parameter file
     178
     179       NAMELIST /spectra_par/  averaging_interval_sp, comp_spectra_level,      &
     180                               data_output_sp, dt_dosp, skip_time_dosp,        &
     181                               spectra_direction
     182
     183
     184!
     185!--    Position the namelist-file at the beginning (it was already opened in
     186!--    parin), search for the namelist-group of the package and position the
     187!--    file at this line.
     188       line = ' '
     189
     190!
     191!--    Try to find the spectra package
     192       REWIND ( 11 )
     193       line = ' '
     194       DO   WHILE ( INDEX( line, '&spectra_par' ) == 0 )
     195          READ ( 11, '(A)', END=10 )  line
     196       ENDDO
     197       BACKSPACE ( 11 )
     198
     199!
     200!--    Read namelist
     201       READ ( 11, spectra_par )
     202
     203!
     204!--    Default setting of dt_dosp here (instead of check_parameters), because
     205!--    its current value is needed in init_pegrid
     206       IF ( dt_dosp == 9999999.9_wp )  dt_dosp = dt_data_output
     207
     208!
     209!--    Set general switch that spectra shall be calculated
     210       calculate_spectra = .TRUE.
     211
     212 10    CONTINUE
     213
     214    END SUBROUTINE spectra_parin
     215
     216
     217
     218!------------------------------------------------------------------------------!
     219! Description:
     220! ------------
     221!> Initialization of spectra related variables
     222!------------------------------------------------------------------------------!
     223    SUBROUTINE spectra_init
     224
     225       USE indices,                                                            &
     226           ONLY:  nx, ny, nzb, nzt
     227
     228       IMPLICIT NONE
     229
     230       IF ( spectra_initialized )  RETURN
     231
     232       IF ( dt_dosp /= 9999999.9_wp )  THEN
     233          ALLOCATE( spectrum_x( 1:nx/2, 1:10, 1:10 ),                          &
     234                    spectrum_y( 1:ny/2, 1:10, 1:10 ) )
     235          spectrum_x = 0.0_wp
     236          spectrum_y = 0.0_wp
     237
     238          ALLOCATE( var_d(nzb:nzt+1) )
     239          var_d = 0.0_wp
     240       ENDIF
     241
     242       spectra_initialized = .TRUE.
     243
     244    END SUBROUTINE spectra_init
     245
     246
     247
     248!------------------------------------------------------------------------------!
     249! Description:
     250! ------------
     251!> Check spectra related quantities
     252!------------------------------------------------------------------------------!
     253    SUBROUTINE spectra_check_parameters
     254
     255       USE control_parameters,                                                 &
     256           ONLY:  averaging_interval, message_string, skip_time_data_output
     257
     258       IMPLICIT NONE
     259
     260!
     261!--    Check the average interval
     262       IF ( averaging_interval_sp == 9999999.9_wp )  THEN
     263          averaging_interval_sp = averaging_interval
     264       ENDIF
     265
     266       IF ( averaging_interval_sp > dt_dosp )  THEN
     267          WRITE( message_string, * )  'averaging_interval_sp = ',              &
     268                averaging_interval_sp, ' must be <= dt_dosp = ', dt_dosp
     269          CALL message( 'spectra_check_parameters', 'PA0087', 1, 2, 0, 6, 0 )
     270       ENDIF
     271
     272!
     273!--    Set the default skip time interval for data output, if necessary
     274       IF ( skip_time_dosp == 9999999.9_wp )                                   &
     275                                          skip_time_dosp = skip_time_data_output
     276
     277    END SUBROUTINE spectra_check_parameters
     278
     279
     280
     281!------------------------------------------------------------------------------!
     282! Description:
     283! ------------
     284!> Header output for spectra
     285!>
     286!> @todo Output of netcdf data format and compression level
     287!------------------------------------------------------------------------------!
     288    SUBROUTINE spectra_header ( io )
     289
     290       USE control_parameters,                                                 &
     291           ONLY:  dt_averaging_input_pr
     292
     293!       USE netcdf_interface,                                                  &
     294!           ONLY:  netcdf_data_format_string, netcdf_deflate
     295
     296       IMPLICIT NONE
     297
     298       CHARACTER (LEN=40) ::  output_format       !< internal string
     299
     300       INTEGER(iwp) ::  i                         !< internal counter
     301       INTEGER(iwp), INTENT(IN) ::  io            !< Unit of the output file
     302
     303!
     304!--    Spectra output
     305       IF ( dt_dosp /= 9999999.9_wp )  THEN
     306          WRITE ( io, 1 )
     307
     308!          output_format = netcdf_data_format_string
     309!          IF ( netcdf_deflate == 0 )  THEN
     310!             WRITE ( io, 2 )  output_format
     311!          ELSE
     312!             WRITE ( io, 3 )  TRIM( output_format ), netcdf_deflate
     313!          ENDIF
     314          WRITE ( io, 2 )  'see profiles or other quantities'
     315          WRITE ( io, 4 )  dt_dosp
     316          IF ( skip_time_dosp /= 0.0_wp )  WRITE ( io, 5 )  skip_time_dosp
     317          WRITE ( io, 6 )  ( data_output_sp(i), i = 1,10 ),     &
     318                           ( spectra_direction(i), i = 1,10 ),  &
     319                           ( comp_spectra_level(i), i = 1,100 ), &
     320                           averaging_interval_sp, dt_averaging_input_pr
     321       ENDIF
     322
     323     1 FORMAT ('    Spectra:')
     324     2 FORMAT ('       Output format: ',A/)
     325     3 FORMAT ('       Output format: ',A, '   compressed with level: ',I1/)
     326     4 FORMAT ('       Output every ',F7.1,' s'/)
     327     5 FORMAT ('       No output during initial ',F8.2,' s')
     328     6 FORMAT ('       Arrays:     ', 10(A5,',')/                         &
     329               '       Directions: ', 10(A5,',')/                         &
     330               '       height levels  k = ', 20(I3,',')/                  &
     331               '                          ', 20(I3,',')/                  &
     332               '                          ', 20(I3,',')/                  &
     333               '                          ', 20(I3,',')/                  &
     334               '                          ', 19(I3,','),I3,'.'/           &
     335               '       Time averaged over ', F7.1, ' s,' /                &
     336               '       Profiles for the time averaging are taken every ', &
     337                    F6.1,' s')
     338
     339    END SUBROUTINE spectra_header
     340
     341
    159342
    160343    SUBROUTINE calc_spectra
     
    164347
    165348       USE control_parameters,                                                 &
    166            ONLY:  average_count_sp, bc_lr_cyc, bc_ns_cyc, message_string, psolver
     349           ONLY:  bc_lr_cyc, bc_ns_cyc, message_string, psolver
    167350
    168351       USE cpulog,                                                             &
     
    191374
    192375       CALL cpu_log( log_point(30), 'calc_spectra', 'start' )
     376
     377!
     378!--    Initialize spectra related quantities
     379       CALL spectra_init
    193380
    194381!
     
    308495
    309496       USE statistics,                                                         &
    310            ONLY:  hom, var_d
     497           ONLY:  hom
    311498
    312499
     
    411598           ONLY:  comm2d, ierr, myid
    412599
    413        USE statistics,                                                         &
    414            ONLY:  spectrum_x, var_d
    415 
    416600       USE transpose_indices,                                                  &
    417601           ONLY:  nyn_x, nys_x, nzb_x, nzt_x
     
    554738           ONLY:  comm2d, ierr, myid
    555739
    556        USE statistics,                                                         &
    557            ONLY:  spectrum_y, var_d
    558 
    559740       USE transpose_indices,                                                  &
    560741           ONLY:  nxl_yd, nxr_yd, nzb_yd, nzt_yd
     
    669850    END SUBROUTINE calc_spectra_y
    670851
    671  END MODULE spectrum
     852 END MODULE spectra_mod
  • palm/trunk/SOURCE/time_integration.f90

    r1832 r1833  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! spectrum renamed spectra_mod, spectra related variables moved to spectra_mod
    2222!
    2323! Former revisions:
     
    207207    USE control_parameters,                                                    &
    208208        ONLY:  advected_distance_x, advected_distance_y, average_count_3d,     &
    209                average_count_sp, averaging_interval, averaging_interval_pr,    &
    210                averaging_interval_sp, bc_lr_cyc, bc_ns_cyc, bc_pt_t_val,       &
     209               averaging_interval, averaging_interval_pr,                      &
     210               bc_lr_cyc, bc_ns_cyc, bc_pt_t_val,                              &
    211211               bc_q_t_val, call_psolver_at_all_substeps, cloud_droplets,       &
    212212               cloud_physics, constant_flux_layer, constant_heatflux,          &
     
    217217               dt_coupling, dt_data_output_av, dt_disturb, dt_do2d_xy,         &
    218218               dt_do2d_xz, dt_do2d_yz, dt_do3d, dt_domask,dt_dopts, dt_dopr,   &
    219                dt_dopr_listing, dt_dosp, dt_dots, dt_dvrp, dt_run_control,     &
     219               dt_dopr_listing, dt_dots, dt_dvrp, dt_run_control,              &
    220220               end_time, first_call_lpm, galilei_transformation, humidity,     &
    221221               intermediate_timestep_count,                                    &
     
    229229               skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz,        &
    230230               skip_time_do3d, skip_time_domask, skip_time_dopr,               &
    231                skip_time_dosp, skip_time_data_output_av, sloping_surface,      &
     231               skip_time_data_output_av, sloping_surface,                      &
    232232               stop_dt, terminate_coupled, terminate_run, timestep_scheme,     &
    233233               time_coupling, time_do2d_xy, time_do2d_xz, time_do2d_yz,        &
     
    292292              skip_time_do_radiation, time_radiation
    293293
    294     USE spectrum,                                                              &
    295         ONLY: calc_spectra
     294    USE spectra_mod,                                                           &
     295        ONLY: average_count_sp, averaging_interval_sp, calc_spectra, dt_dosp,  &
     296              skip_time_dosp
    296297
    297298    USE statistics,                                                            &
  • palm/trunk/SOURCE/user_parin.f90

    r1818 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! required interface revision changed
    2222!
    2323! Former revisions:
     
    9292!-- current revision does not match with previous revisions (e.g. if routines
    9393!-- have been added/deleted or if parameter lists in subroutines have been changed).
    94     user_interface_current_revision = 'r1783'
     94    user_interface_current_revision = 'r1819'
    9595
    9696!
  • palm/trunk/SOURCE/user_spectra.f90

    r1818 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! spectrum renamed spectra_mod
    2222!
    2323! Former revisions:
     
    5959    USE kinds
    6060   
    61     USE spectrum
     61    USE spectra_mod
    6262   
    6363    USE statistics
  • palm/trunk/SOURCE/write_3d_binary.f90

    r1823 r1833  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! statistics module replaced by spectra module
    2222!
    2323! Former revisions:
     
    134134        ONLY:  id_random_array, seq_random_array
    135135       
    136     USE statistics,                                                            &
     136    USE spectra_mod,                                                           &
    137137        ONLY:  spectrum_x, spectrum_y
    138138
  • palm/trunk/SOURCE/write_var_list.f90

    r1832 r1833  
    1919! Current revisions:
    2020! -----------------
     21! spectra_mod added
    2122!
    2223!
     
    172173
    173174    USE radiation_model_mod,                                                   &
    174         ONLY: time_radiation
     175        ONLY:  time_radiation
     176
     177    USE spectra_mod,                                                           &
     178        ONLY:  average_count_sp
    175179
    176180    USE statistics,                                                            &
Note: See TracChangeset for help on using the changeset viewer.