Ignore:
Timestamp:
Apr 13, 2020 8:11:20 PM (4 years ago)
Author:
raasch
Message:

restart data handling with MPI-IO added, first part

File:
1 edited

Legend:

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

    r4435 r4495  
    2525! -----------------
    2626! $Id$
     27! restart data handling with MPI-IO added
     28!
     29! 4435 2020-03-03 10:38:41Z raasch
    2730! bugfix for message that reports about files that are read from in case that the virtual PE grid
    2831! has chenged (in case of large number of files format was exceeded), detailed messages about the
     
    107110
    108111    USE averaging
     112
     113    USE bulk_cloud_model_mod,                                                                      &
     114        ONLY:  bulk_cloud_model
    109115
    110116    USE chem_modules,                                                                              &
     
    130136        ONLY:  dx, dy
    131137
     138    USE gust_mod,                                                                                  &
     139        ONLY:  gust_module_enabled
     140
    132141    USE indices,                                                               &
    133142        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, nx_on_file, ny, nys, nysg, nyn, &
     
    146155        ONLY:  netcdf_precision, output_for_t0
    147156
     157    USE particle_attributes,                                                                       &
     158        ONLY:  particle_advection
     159
    148160    USE pegrid
    149161
     
    156168    USE random_generator_parallel,                                             &
    157169        ONLY:  id_random_array, seq_random_array
     170
     171    USE restart_data_mpi_io_mod,                                                                   &
     172        ONLY:  rd_mpi_io_check_array, rd_mpi_io_close, rd_mpi_io_open, rrd_mpi_io,                 &
     173               rrd_mpi_io_global_array
    158174
    159175    USE spectra_mod,                                                           &
     
    166182        ONLY:  statistic_regions, hom, hom_sum, pr_palm, u_max, u_max_ijk,     &
    167183               v_max, v_max_ijk, w_max, w_max_ijk, z_i
     184
     185    USE user,                                                                                      &
     186        ONLY:  user_module_enabled
    168187
    169188    USE vertical_nesting_mod,                                                  &
     
    205224!> created by PE0 of the previous run
    206225!------------------------------------------------------------------------------!
    207     SUBROUTINE rrd_global
    208 
    209 
    210        CHARACTER (LEN=10) ::  binary_version_global, version_on_file
    211 
    212        LOGICAL ::  found
    213 
    214 
     226 SUBROUTINE rrd_global
     227
     228
     229    CHARACTER(LEN=10) ::  binary_version_global  !<
     230    CHARACTER(LEN=10) ::  version_on_file        !<
     231    CHARACTER(LEN=20) ::  tmp_name               !< temporary variable
     232
     233    INTEGER ::  i                                !< loop index
     234
     235    LOGICAL ::  array_found                      !<
     236    LOGICAL ::  found                            !<
     237
     238
     239    CALL location_message( 'read global restart data', 'start' )
     240
     241    IF ( TRIM( restart_data_format_input ) == 'fortran_binary' )  THEN
     242!
     243!--    Input in Fortran binary format
    215244       CALL check_open( 13 )
    216245!
     
    294323       READ ( 13 )  statistic_regions
    295324
     325!
     326!--    The following global arrays (better to say, they have the same size and values on each
     327!--    subdomain) are by default allocated in routine parin, but not in case of restarts!
    296328       IF ( .NOT. ALLOCATED( ug ) )  THEN
    297           ALLOCATE( ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1),                    &
    298                     v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1),           &
    299                     ref_state(0:nz+1), s_init(0:nz+1), sa_init(0:nz+1),        &
     329          ALLOCATE( ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1),                                        &
     330                    v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1),                               &
     331                    ref_state(0:nz+1), s_init(0:nz+1), sa_init(0:nz+1),                            &
    300332                    hom(0:nz+1,2,pr_palm+max_pr_user+max_pr_cs+max_pr_salsa,0:statistic_regions),  &
    301333                    hom_sum(0:nz+1,pr_palm+max_pr_user+max_pr_cs+max_pr_salsa,0:statistic_regions) )
     
    617649             CASE ( 'spinup_time' )
    618650                READ ( 13 )  spinup_time
     651             CASE ( 'subs_vertical_gradient' )
     652                READ ( 13 )  subs_vertical_gradient
     653             CASE ( 'subs_vertical_gradient_level' )
     654                READ ( 13 )  subs_vertical_gradient_level
     655             CASE ( 'subs_vertical_gradient_level_i' )
     656                READ ( 13 )  subs_vertical_gradient_level_i
    619657             CASE ( 'surface_heatflux' )
    620658                READ ( 13 )  surface_heatflux
     
    747785             CASE ( 'volume_flow_initial' )
    748786                READ ( 13 )  volume_flow_initial
    749              CASE ( 'subs_vertical_gradient' )
    750                 READ ( 13 )  subs_vertical_gradient
    751              CASE ( 'subs_vertical_gradient_level' )
    752                 READ ( 13 )  subs_vertical_gradient_level
    753              CASE ( 'subs_vertical_gradient_level_i' )
    754                 READ ( 13 )  subs_vertical_gradient_level_i
    755787             CASE ( 'w_max' )
    756788                READ ( 13 )  w_max
     
    796828          READ ( 13 )  restart_string(1:length)
    797829
     830       ENDDO  ! End of loop for reading the restart string
     831
     832       CALL close_file( 13 )
     833
     834    ELSEIF ( TRIM( restart_data_format_input ) == 'mpi' )  THEN
     835!
     836!--    Read global restart data using MPI-IO
     837!--    ATTENTION: Arrays need to be read with routine rrd_mpi_io_global_array!
     838!--    Caution: When any of the following read instructions have been changed, the
     839!--    -------  version number stored in the variable binary_version_global has
     840!--             to be increased. The same changes must also be done in
     841!--             wrd_write_global.
     842!
     843!--    Open the MPI-IO restart file.
     844       CALL rd_mpi_io_open( 'read', 'BININ', only_global = .TRUE. )
     845
     846!
     847!--    Make version number check first
     848       CALL rrd_mpi_io( 'binary_version_global',  version_on_file )
     849
     850       binary_version_global = '5.0'
     851       IF ( TRIM( version_on_file ) /= TRIM( binary_version_global ) )  THEN
     852          WRITE( message_string, * ) 'version mismatch concerning binary_version_global:',         &
     853                                     '&version on file    = "', TRIM( version_on_file ), '"',      &
     854                                     '&version in program = "', TRIM( binary_version_global ), '"'
     855          CALL message( 'rrd_global', 'PA0296', 1, 2, 0, 6, 0 )
     856       ENDIF
     857
     858       CALL rrd_mpi_io( 'numprocs',  numprocs_previous_run )
     859       CALL rrd_mpi_io( 'nz' , nz )
     860       CALL rrd_mpi_io( 'max_pr_user',  max_pr_user )
     861       CALL rrd_mpi_io( 'statistic_regions', statistic_regions )
     862
     863!
     864!--    The following global arrays (better to say, they have the same size and values on each
     865!--    subdomain) are by default allocated in routine parin, but not in case of restarts!
     866       IF ( .NOT. ALLOCATED( ug ) )  THEN
     867           ALLOCATE( ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1),                                       &
     868                     v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1),                              &
     869                     ref_state(0:nz+1), s_init(0:nz+1), sa_init(0:nz+1),                           &
     870                     hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions),                        &
     871                     hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) )
     872       ENDIF
     873
     874       CALL rrd_mpi_io( 'advected_distance_x',  advected_distance_x )
     875       CALL rrd_mpi_io( 'advected_distance_y', advected_distance_y )
     876       CALL rrd_mpi_io( 'alpha_surface', alpha_surface )
     877       CALL rrd_mpi_io( 'average_count_pr', average_count_pr )
     878       CALL rrd_mpi_io( 'average_count_sp', average_count_sp )
     879       CALL rrd_mpi_io( 'average_count_3d', average_count_3d )
     880       CALL rrd_mpi_io( 'bc_e_b', bc_e_b )
     881       CALL rrd_mpi_io( 'bc_lr', bc_lr )
     882       CALL rrd_mpi_io( 'bc_ns', bc_ns )
     883       CALL rrd_mpi_io( 'bc_p_b', bc_p_b )
     884       CALL rrd_mpi_io( 'bc_p_t', bc_p_t )
     885       CALL rrd_mpi_io( 'bc_pt_b', bc_pt_b )
     886       CALL rrd_mpi_io( 'bc_pt_t', bc_pt_t )
     887       CALL rrd_mpi_io( 'bc_pt_t_val', bc_pt_t_val )
     888       CALL rrd_mpi_io( 'bc_q_b', bc_q_b )
     889       CALL rrd_mpi_io( 'bc_q_t', bc_q_t )
     890       CALL rrd_mpi_io( 'bc_q_t_val', bc_q_t_val )
     891       CALL rrd_mpi_io( 'bc_s_b', bc_s_b )
     892       CALL rrd_mpi_io( 'bc_s_t', bc_s_t )
     893       CALL rrd_mpi_io( 'bc_uv_b', bc_uv_b )
     894       CALL rrd_mpi_io( 'bc_uv_t', bc_uv_t )
     895       CALL rrd_mpi_io( 'biometeorology', biometeorology )
     896       CALL rrd_mpi_io( 'building_height', building_height )
     897       CALL rrd_mpi_io( 'building_length_x', building_length_x )
     898       CALL rrd_mpi_io( 'building_length_y', building_length_y )
     899       CALL rrd_mpi_io( 'building_wall_left', building_wall_left )
     900       CALL rrd_mpi_io( 'building_wall_south', building_wall_south )
     901       CALL rrd_mpi_io( 'bulk_cloud_model', bulk_cloud_model )
     902       CALL rrd_mpi_io( 'call_psolver_at_all_substeps', call_psolver_at_all_substeps )
     903       CALL rrd_mpi_io( 'canyon_height', canyon_height )
     904       CALL rrd_mpi_io( 'canyon_wall_left', canyon_wall_left )
     905       CALL rrd_mpi_io( 'canyon_wall_south', canyon_wall_south )
     906       CALL rrd_mpi_io( 'canyon_width_x',  canyon_width_x )
     907       CALL rrd_mpi_io( 'canyon_width_y', canyon_width_y )
     908       CALL rrd_mpi_io( 'cfl_factor', cfl_factor )
     909       CALL rrd_mpi_io( 'cloud_droplets',  cloud_droplets )
     910       CALL rrd_mpi_io( 'collective_wait', collective_wait )
     911       CALL rrd_mpi_io( 'conserve_volume_flow', conserve_volume_flow )
     912       CALL rrd_mpi_io( 'conserve_volume_flow_mode', conserve_volume_flow_mode )
     913       CALL rrd_mpi_io( 'constant_flux_layer', constant_flux_layer )
     914       CALL rrd_mpi_io( 'coupling_start_time', coupling_start_time )
     915       CALL rrd_mpi_io( 'current_timestep_number', current_timestep_number )
     916       CALL rrd_mpi_io( 'cycle_mg', cycle_mg )
     917       CALL rrd_mpi_io( 'damp_level_1d', damp_level_1d )
     918       CALL rrd_mpi_io( 'dissipation_1d', dissipation_1d )
     919       CALL rrd_mpi_io_global_array( 'do2d_xy_time_count', do2d_xy_time_count )
     920       CALL rrd_mpi_io_global_array( 'do2d_xz_time_count', do2d_xz_time_count )
     921       CALL rrd_mpi_io_global_array( 'do2d_yz_time_count', do2d_yz_time_count )
     922       CALL rrd_mpi_io_global_array( 'do3d_time_count', do3d_time_count )
     923       CALL rrd_mpi_io( 'dp_external', dp_external )
     924       CALL rrd_mpi_io( 'dp_level_b', dp_level_b )
     925       CALL rrd_mpi_io( 'dp_smooth', dp_smooth )
     926       CALL rrd_mpi_io_global_array( 'dpdxy', dpdxy )
     927       CALL rrd_mpi_io( 'dt_3d', dt_3d )
     928       CALL rrd_mpi_io( 'dt_pr_1d', dt_pr_1d )
     929       CALL rrd_mpi_io( 'dt_run_control_1d', dt_run_control_1d )
     930       CALL rrd_mpi_io( 'dx', dx )
     931       CALL rrd_mpi_io( 'dy', dy )
     932       CALL rrd_mpi_io_global_array( 'dz', dz )
     933       CALL rrd_mpi_io( 'dz_max', dz_max )
     934       CALL rrd_mpi_io( 'dz_stretch_factor', dz_stretch_factor )
     935       CALL rrd_mpi_io_global_array( 'dz_stretch_factor_array', dz_stretch_factor_array )
     936       CALL rrd_mpi_io( 'dz_stretch_level', dz_stretch_level )
     937       CALL rrd_mpi_io_global_array( 'dz_stretch_level_end', dz_stretch_level_end )
     938       CALL rrd_mpi_io_global_array( 'dz_stretch_level_start', dz_stretch_level_start )
     939       CALL rrd_mpi_io( 'e_min', e_min )
     940       CALL rrd_mpi_io( 'end_time_1d', end_time_1d )
     941       CALL rrd_mpi_io( 'fft_method', fft_method )
     942       CALL rrd_mpi_io( 'first_call_lpm', first_call_lpm )
     943       CALL rrd_mpi_io( 'galilei_transformation', galilei_transformation )
     944       CALL rrd_mpi_io( 'gust_module_enabled', gust_module_enabled )
     945       CALL rrd_mpi_io_global_array( 'hom', hom )
     946       CALL rrd_mpi_io_global_array( 'hom_sum', hom_sum )
     947       CALL rrd_mpi_io( 'humidity', humidity )
     948       CALL rd_mpi_io_check_array( 'inflow_damping_factor', found = array_found )
     949       IF ( array_found )  THEN
     950           IF ( .NOT. ALLOCATED( inflow_damping_factor ) )  THEN
     951               ALLOCATE( inflow_damping_factor(0:nz+1) )
     952           ENDIF
     953           CALL rrd_mpi_io_global_array( 'inflow_damping_factor', inflow_damping_factor )
     954       ENDIF
     955       CALL rrd_mpi_io( 'inflow_damping_height', inflow_damping_height )
     956       CALL rrd_mpi_io( 'inflow_damping_width', inflow_damping_width )
     957       CALL rrd_mpi_io( 'inflow_disturbance_begin', inflow_disturbance_begin )
     958       CALL rrd_mpi_io( 'inflow_disturbance_end', inflow_disturbance_end )
     959       CALL rrd_mpi_io( 'km_constant', km_constant )
     960       CALL rrd_mpi_io( 'large_scale_forcing', large_scale_forcing )
     961       CALL rrd_mpi_io( 'large_scale_subsidence', large_scale_subsidence )
     962       CALL rrd_mpi_io( 'latitude', latitude )
     963       CALL rrd_mpi_io( 'longitude', longitude )
     964       CALL rrd_mpi_io( 'loop_optimization', loop_optimization )
     965       CALL rrd_mpi_io( 'masking_method', masking_method )
     966       CALL rd_mpi_io_check_array( 'mean_inflow_profiles', found = array_found )
     967       IF ( array_found)  THEN
     968          IF ( .NOT. ALLOCATED( mean_inflow_profiles ) )  THEN
     969             ALLOCATE( mean_inflow_profiles(0:nz+1,7) )
     970          ENDIF
     971          CALL rrd_mpi_io_global_array( 'mean_inflow_profiles', mean_inflow_profiles )
     972       ENDIF
     973       CALL rrd_mpi_io( 'mg_cycles', mg_cycles )
     974       CALL rrd_mpi_io( 'mg_switch_to_pe0_level', mg_switch_to_pe0_level )
     975       CALL rrd_mpi_io( 'mixing_length_1d', mixing_length_1d )
     976       CALL rrd_mpi_io( 'momentum_advec', momentum_advec )
     977!
     978!--    There is no module procedure for CHARACTER arrays
     979       DO  i = 1, SIZE( netcdf_precision , 1 )
     980          WRITE( tmp_name, '(A,I2.2)' )  'netcdf_precision_', i
     981          CALL rrd_mpi_io( TRIM( tmp_name ), netcdf_precision(i) )
    798982       ENDDO
    799 
    800 
    801     CALL close_file( 13 )
    802 
    803 
    804     END SUBROUTINE rrd_global
     983       CALL rrd_mpi_io( 'neutral', neutral )
     984       CALL rrd_mpi_io( 'ngsrb', ngsrb )
     985       CALL rrd_mpi_io( 'nsor', nsor )
     986       CALL rrd_mpi_io( 'nsor_ini', nsor_ini )
     987       CALL rrd_mpi_io( 'nudging', nudging )
     988       CALL rrd_mpi_io( 'num_leg', num_leg )
     989       CALL rrd_mpi_io( 'nx', nx )
     990       nx_on_file = nx
     991       CALL rrd_mpi_io( 'ny', ny )
     992       ny_on_file = ny
     993       CALL rrd_mpi_io( 'ocean_mode', ocean_mode )
     994       CALL rrd_mpi_io( 'omega', omega )
     995       CALL rrd_mpi_io( 'omega_sor', omega_sor )
     996       CALL rrd_mpi_io( 'origin_data_time', origin_date_time )
     997       CALL rrd_mpi_io( 'output_for_t0', output_for_t0 )
     998       CALL rrd_mpi_io( 'particle_advection', particle_advection )
     999       CALL rrd_mpi_io( 'passive_scalar', passive_scalar )
     1000       CALL rrd_mpi_io( 'prandtl_number', prandtl_number )
     1001       CALL rrd_mpi_io( 'psolver', psolver )
     1002       CALL rrd_mpi_io( 'pt_damping_factor', pt_damping_factor )
     1003       CALL rrd_mpi_io( 'pt_damping_width', pt_damping_width )
     1004       CALL rrd_mpi_io_global_array( 'pt_init', pt_init )
     1005       CALL rrd_mpi_io( 'pt_reference', pt_reference )
     1006       CALL rrd_mpi_io( 'pt_surface', pt_surface )
     1007       CALL rrd_mpi_io( 'pt_surface_initial_change', pt_surface_initial_change )
     1008       CALL rrd_mpi_io_global_array( 'pt_vertical_gradient', pt_vertical_gradient )
     1009       CALL rrd_mpi_io_global_array( 'pt_vertical_gradient_level', pt_vertical_gradient_level )
     1010       CALL rrd_mpi_io_global_array( 'pt_vertical_gradient_level_ind', pt_vertical_gradient_level_ind )
     1011       CALL rrd_mpi_io_global_array( 'q_init', q_init )
     1012       CALL rrd_mpi_io( 'q_surface', q_surface )
     1013       CALL rrd_mpi_io( 'q_surface_initial_change', q_surface_initial_change )
     1014       CALL rrd_mpi_io_global_array( 'q_vertical_gradient', q_vertical_gradient )
     1015       CALL rrd_mpi_io_global_array( 'q_vertical_gradient_level', q_vertical_gradient_level )
     1016       CALL rrd_mpi_io_global_array( 'q_vertical_gradient_level_ind', q_vertical_gradient_level_ind )
     1017       CALL rrd_mpi_io( 'random_generator', random_generator )
     1018       CALL rrd_mpi_io( 'random_heatflux', random_heatflux )
     1019       CALL rrd_mpi_io( 'rans_mode', rans_mode )
     1020       CALL rrd_mpi_io( 'rayleigh_damping_factor', rayleigh_damping_factor )
     1021       CALL rrd_mpi_io( 'rayleigh_damping_height', rayleigh_damping_height )
     1022       CALL rrd_mpi_io( 'recycling_width', recycling_width )
     1023       CALL rrd_mpi_io_global_array( 'ref_state', ref_state )
     1024       CALL rrd_mpi_io( 'reference_state', reference_state )
     1025       CALL rrd_mpi_io( 'residual_limit', residual_limit )
     1026       CALL rrd_mpi_io( 'roughness_length', roughness_length )
     1027       CALL rrd_mpi_io( 'run_coupled', run_coupled )
     1028       CALL rrd_mpi_io( 'runnr', runnr )
     1029       CALL rrd_mpi_io_global_array( 's_init', s_init )
     1030       CALL rrd_mpi_io( 's_surface', s_surface )
     1031       CALL rrd_mpi_io( 's_surface_initial_change', s_surface_initial_change )
     1032       CALL rrd_mpi_io_global_array( 's_vertical_gradient', s_vertical_gradient )
     1033       CALL rrd_mpi_io_global_array( 's_vertical_gradient_level', s_vertical_gradient_level )
     1034       CALL rrd_mpi_io_global_array( 's_vertical_gradient_level_ind', s_vertical_gradient_level_ind )
     1035       CALL rrd_mpi_io( 'scalar_advec', scalar_advec )
     1036       CALL rrd_mpi_io( 'simulated_time', simulated_time )
     1037       CALL rd_mpi_io_check_array( 'spectrum_x', found = array_found )
     1038       IF (array_found )  THEN
     1039           IF ( .NOT. ALLOCATED( spectrum_x ) )  THEN
     1040              ALLOCATE( spectrum_x( 1:nx/2, 1:100, 1:10 ) )
     1041           ENDIF
     1042           CALL rrd_mpi_io( 'spectrum_y', spectrum_y )
     1043       ENDIF
     1044       CALL rd_mpi_io_check_array( 'spectrum_y', found = array_found )
     1045       IF ( array_found )  THEN
     1046           IF ( .NOT. ALLOCATED( spectrum_y ) )  THEN
     1047              ALLOCATE( spectrum_y( 1:ny/2, 1:100, 1:10 ) )
     1048           ENDIF
     1049           CALL rrd_mpi_io( 'spectrum_y', spectrum_y )
     1050       ENDIF
     1051       CALL rrd_mpi_io( 'spinup_time ', spinup_time )
     1052       CALL rrd_mpi_io_global_array( 'subs_vertical_gradient', subs_vertical_gradient )
     1053       CALL rrd_mpi_io_global_array( 'subs_vertical_gradient_level', subs_vertical_gradient_level )
     1054       CALL rrd_mpi_io_global_array( 'subs_vertical_gradient_level_i', subs_vertical_gradient_level_i )
     1055       CALL rrd_mpi_io( 'surface_heatflux', surface_heatflux )
     1056       CALL rrd_mpi_io( 'surface_pressure', surface_pressure )
     1057       CALL rrd_mpi_io( 'surface_output', surface_output )
     1058       CALL rrd_mpi_io( 'surface_scalarflux', surface_scalarflux )
     1059       CALL rrd_mpi_io( 'surface_waterflux', surface_waterflux )
     1060       CALL rrd_mpi_io( 'syn_turb_gen', syn_turb_gen )
     1061       CALL rrd_mpi_io( 'time_coupling', time_coupling )
     1062       CALL rrd_mpi_io( 'time_disturb', time_disturb )
     1063       CALL rrd_mpi_io( 'time_do2d_xy', time_do2d_xy )
     1064       CALL rrd_mpi_io( 'time_do2d_xz', time_do2d_xz )
     1065       CALL rrd_mpi_io( 'time_do2d_yz', time_do2d_yz )
     1066       CALL rrd_mpi_io( 'time_do3d', time_do3d )
     1067       CALL rrd_mpi_io( 'time_do_av', time_do_av )
     1068       CALL rrd_mpi_io( 'time_do_sla', time_do_sla )
     1069       CALL rrd_mpi_io_global_array( 'time_domask', time_domask )
     1070       CALL rrd_mpi_io( 'time_dopr', time_dopr )
     1071       CALL rrd_mpi_io( 'time_dopr_av', time_dopr_av )
     1072       CALL rrd_mpi_io( 'time_dopr_listing', time_dopr_listing )
     1073       CALL rrd_mpi_io( 'time_dopts', time_dopts )
     1074       CALL rrd_mpi_io( 'time_dosp', time_dosp )
     1075       CALL rrd_mpi_io( 'time_dots', time_dots )
     1076       CALL rrd_mpi_io( 'time_radiation', time_radiation )
     1077       CALL rrd_mpi_io( 'time_restart', time_restart )
     1078       CALL rrd_mpi_io( 'time_run_control', time_run_control )
     1079       CALL rrd_mpi_io( 'time_since_reference_point', time_since_reference_point )
     1080       CALL rrd_mpi_io( 'time_virtual_measurement', time_virtual_measurement )
     1081       CALL rrd_mpi_io( 'timestep_scheme', timestep_scheme )
     1082       CALL rrd_mpi_io( 'top_heatflux', top_heatflux )
     1083       CALL rrd_mpi_io( 'top_momentumflux_u', top_momentumflux_u )
     1084       CALL rrd_mpi_io( 'top_momentumflux_v', top_momentumflux_v )
     1085       CALL rrd_mpi_io( 'top_scalarflux', top_scalarflux )
     1086       CALL rrd_mpi_io( 'topography', topography )
     1087       CALL rrd_mpi_io( 'topography_grid_convention', topography_grid_convention )
     1088       CALL rrd_mpi_io_global_array( 'tsc', tsc )
     1089       CALL rrd_mpi_io( 'tunnel_height', tunnel_height )
     1090       CALL rrd_mpi_io( 'tunnel_length', tunnel_length )
     1091       CALL rrd_mpi_io( 'tunnel_wall_depth', tunnel_wall_depth )
     1092       CALL rrd_mpi_io( 'tunnel_width_x', tunnel_width_x )
     1093       CALL rrd_mpi_io( 'tunnel_width_y', tunnel_width_y )
     1094       CALL rrd_mpi_io( 'turbulence_closure', turbulence_closure )
     1095       CALL rrd_mpi_io( 'turbulent_inflow', turbulent_inflow )
     1096       CALL rrd_mpi_io( 'u_bulk', u_bulk )
     1097       CALL rrd_mpi_io_global_array( 'u_init', u_init )
     1098       CALL rrd_mpi_io( 'u_max', u_max )
     1099       CALL rrd_mpi_io_global_array( 'u_max_ijk', u_max_ijk )
     1100       CALL rrd_mpi_io_global_array( 'ug', ug )
     1101       CALL rrd_mpi_io( 'ug_surface', ug_surface )
     1102       CALL rrd_mpi_io_global_array( 'ug_vertical_gradient', ug_vertical_gradient )
     1103       CALL rrd_mpi_io_global_array( 'ug_vertical_gradient_level', ug_vertical_gradient_level )
     1104       CALL rrd_mpi_io_global_array( 'ug_vertical_gradient_level_ind', ug_vertical_gradient_level_ind )
     1105       CALL rrd_mpi_io( 'use_surface_fluxes', use_surface_fluxes )
     1106       CALL rrd_mpi_io( 'use_top_fluxes', use_top_fluxes )
     1107       CALL rrd_mpi_io( 'use_ug_for_galilei_tr', use_ug_for_galilei_tr )
     1108       CALL rrd_mpi_io( 'use_upstream_for_tke', use_upstream_for_tke )
     1109       CALL rrd_mpi_io( 'user_module_enabled', user_module_enabled )
     1110       CALL rrd_mpi_io( 'v_bulk', v_bulk )
     1111       CALL rrd_mpi_io_global_array( 'v_init', v_init )
     1112       CALL rrd_mpi_io( 'v_max', v_max )
     1113       CALL rrd_mpi_io_global_array( 'v_max_ijk', v_max_ijk )
     1114       CALL rrd_mpi_io_global_array( 'vg', vg )
     1115       CALL rrd_mpi_io( 'vg_surface', vg_surface )
     1116       CALL rrd_mpi_io_global_array( 'vg_vertical_gradient', vg_vertical_gradient )
     1117       CALL rrd_mpi_io_global_array( 'vg_vertical_gradient_level', vg_vertical_gradient_level )
     1118       CALL rrd_mpi_io_global_array( 'vg_vertical_gradient_level_ind', vg_vertical_gradient_level_ind )
     1119       CALL rrd_mpi_io( 'virtual_flight', virtual_flight )
     1120       CALL rrd_mpi_io( 'vnest_init', vnest_init )
     1121       CALL rrd_mpi_io_global_array( 'volume_flow_area', volume_flow_area )
     1122       CALL rrd_mpi_io_global_array( 'volume_flow_initial', volume_flow_initial )
     1123       CALL rrd_mpi_io( 'w_max', w_max )
     1124       CALL rrd_mpi_io_global_array( 'w_max_ijk', w_max_ijk )
     1125       CALL rrd_mpi_io( 'wall_adjustment', wall_adjustment )
     1126       CALL rrd_mpi_io_global_array( 'wall_heatflux', wall_heatflux )
     1127       CALL rrd_mpi_io_global_array( 'wall_humidityflux', wall_humidityflux )
     1128       CALL rrd_mpi_io_global_array( 'wall_scalarflux', wall_scalarflux )
     1129       CALL rrd_mpi_io( 'y_shift', y_shift )
     1130       CALL rrd_mpi_io( 'z0h_factor', z0h_factor )
     1131       CALL rrd_mpi_io( 'zeta_max', zeta_max )
     1132       CALL rrd_mpi_io( 'zeta_min', zeta_min )
     1133       CALL rrd_mpi_io_global_array( 'z_i', z_i )
     1134
     1135!
     1136!--    Read global variables from of other modules
     1137       CALL module_interface_rrd_global
     1138
     1139!
     1140!--    Close restart File
     1141       CALL rd_mpi_io_close
     1142
     1143#if defined( __parallel )
     1144       CALL MPI_BARRIER( MPI_COMM_WORLD, ierr )
     1145#endif
     1146
     1147    ENDIF
     1148
     1149    CALL location_message( 'read global restart data', 'finished' )
     1150
     1151 END SUBROUTINE rrd_global
    8051152
    8061153
     
    18952242!> Skipping the global control variables from restart-file (binary format)
    18962243!------------------------------------------------------------------------------!
    1897 
    1898     SUBROUTINE rrd_skip_global
    1899 
    1900 
    1901        CHARACTER (LEN=1) ::  cdum
    1902 
    1903 
     2244 SUBROUTINE rrd_skip_global
     2245
     2246
     2247    CHARACTER (LEN=1) ::  cdum
     2248
     2249
     2250    READ ( 13 )  length
     2251    READ ( 13 )  restart_string(1:length)
     2252
     2253    DO  WHILE ( restart_string(1:length) /= 'binary_version_local' )
     2254
     2255       READ ( 13 )  cdum
    19042256       READ ( 13 )  length
    19052257       READ ( 13 )  restart_string(1:length)
    19062258
    1907        DO  WHILE ( restart_string(1:length) /= 'binary_version_local' )
    1908 
    1909           READ ( 13 )  cdum
    1910           READ ( 13 )  length
    1911           READ ( 13 )  restart_string(1:length)
    1912 
    1913        ENDDO
    1914 
    1915        BACKSPACE ( 13 )
    1916        BACKSPACE ( 13 )
    1917 
    1918 
    1919     END SUBROUTINE rrd_skip_global
     2259    ENDDO
     2260
     2261    BACKSPACE ( 13 )
     2262    BACKSPACE ( 13 )
     2263
     2264
     2265 END SUBROUTINE rrd_skip_global
    19202266
    19212267
Note: See TracChangeset for help on using the changeset viewer.