Ignore:
Timestamp:
May 4, 2020 3:44:28 PM (4 years ago)
Author:
suehring
Message:

Diagnostic output: Define arrays over ghost points in order to allow for standard mpi-io treatment. By this modularization of restart-data input is possible with the module interface. Move input of restart data to doq_rrd_local. Enable mpi-io for restart data. Bugfix: add missing restart input of wtheta_av, wq_av, wu_av, and wv_av.

File:
1 edited

Legend:

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

    r4517 r4518  
    2525! -----------------
    2626! $Id$
     27! Move input of diagnostic output quantities to doq_rrd_local
     28!
     29! 4517 2020-05-03 14:29:30Z raasch
    2730! qsurf and ssurf added
    2831!
     
    130133    USE cpulog,                                                                &
    131134        ONLY:  cpu_log, log_point_s
    132 
    133     USE diagnostic_output_quantities_mod,                                      &
    134         ONLY:  pt_2m_av,                                                       &
    135                ti_av,                                                          &
    136                u_center_av,                                                    &
    137                uu_av,                                                          &
    138                uv_10m_av,                                                      &
    139                v_center_av,                                                    &
    140                vv_av,                                                          &
    141                wspeed_av,                                                      &
    142                ww_av
    143135
    144136    USE grid_variables,                                                        &
     
    17731765                         tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    17741766
    1775                    CASE ( 'pt_2m_av' )
    1776                       IF ( .NOT. ALLOCATED( pt_2m_av ) )  THEN
    1777                          ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )
    1778                       ENDIF
    1779                       IF ( k == 1 )  READ ( 13 )  tmp_2d
    1780                       pt_2m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  =                            &
    1781                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    1782 
    17831767                   CASE ( 'q' )
    17841768                      IF ( k == 1 )  READ ( 13 )  tmp_3d
     
    18951879                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    18961880
    1897                    CASE ( 'ti_av' )
    1898                       IF ( .NOT. ALLOCATED( ti_av ) )  THEN
    1899                          ALLOCATE( ti_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    1900                       ENDIF
    1901                       IF ( k == 1 )  THEN
    1902                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    1903                                                        nxl_on_file:nxr_on_file) )
    1904                          READ ( 13 )  tmp_3d_non_standard
    1905                       ENDIF
    1906                       ti_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    1907 
    19081881                   CASE ( 'ts_av' )
    19091882                      IF ( .NOT. ALLOCATED( ts_av ) )  THEN
     
    19341907                      u_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                               &
    19351908                         tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    1936 
    1937                    CASE ( 'u_center_av' )
    1938                       IF ( .NOT. ALLOCATED( u_center_av ) )  THEN
    1939                          ALLOCATE( u_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    1940                       ENDIF
    1941                       IF ( k == 1 )  THEN
    1942                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    1943                                                        nxl_on_file:nxr_on_file) )
    1944                          READ ( 13 )  tmp_3d_non_standard
    1945                       ENDIF
    1946                       u_center_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    1947 
    1948                    CASE ( 'uu_av' )
    1949                       IF ( .NOT. ALLOCATED( uu_av ) )  THEN
    1950                          ALLOCATE( uu_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    1951                       ENDIF
    1952                       IF ( k == 1 )  THEN
    1953                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    1954                                                        nxl_on_file:nxr_on_file) )
    1955                          READ ( 13 )  tmp_3d_non_standard
    1956                       ENDIF
    1957                       uu_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    1958 
    1959                    CASE ( 'uv_10m_av' )
    1960                       IF ( .NOT. ALLOCATED( uv_10m_av ) )  THEN
    1961                          ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) )
    1962                       ENDIF
    1963                       IF ( k == 1 )  READ ( 13 )  tmp_2d
    1964                       uv_10m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  =                           &
    1965                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    19661909
    19671910                   CASE ( 'u_m_l' )
     
    20261969                         tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    20271970
    2028                    CASE ( 'v_center_av' )
    2029                       IF ( .NOT. ALLOCATED( v_center_av ) )  THEN
    2030                          ALLOCATE( v_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2031                       ENDIF
    2032                       IF ( k == 1 )  THEN
    2033                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    2034                                                        nxl_on_file:nxr_on_file) )
    2035                          READ ( 13 )  tmp_3d_non_standard
    2036                       ENDIF
    2037                       v_center_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    2038 
    2039                    CASE ( 'vv_av' )
    2040                       IF ( .NOT. ALLOCATED( vv_av ) )  THEN
    2041                       ALLOCATE( vv_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2042                       ENDIF
    2043                       IF ( k == 1 )  THEN
    2044                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    2045                                                        nxl_on_file:nxr_on_file) )
    2046                          READ ( 13 )  tmp_3d_non_standard
    2047                       ENDIF
    2048                       vv_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    2049 
    20501971                   CASE ( 'v_m_l' )
    20511972                      IF ( k == 1 )  THEN
     
    21142035                         tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    21152036
    2116                    CASE ( 'ww_av' )
    2117                       IF ( .NOT. ALLOCATED( ww_av ) )  THEN
    2118                          ALLOCATE( ww_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2119                       ENDIF
    2120                       IF ( k == 1 )  THEN
    2121                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    2122                                                        nxl_on_file:nxr_on_file) )
    2123                          READ ( 13 )  tmp_3d_non_standard
    2124                       ENDIF
    2125                       ww_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    2126 
    21272037                   CASE ( 'w_m_l' )
    21282038                      IF ( k == 1 )  THEN
     
    21642074                         w_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3d_non_standard(:,:,nxlf-nbgp:nxrf+nbgp)
    21652075                      ENDIF
    2166 
    2167                    CASE ( 'wspeed_av' )
    2168                       IF ( .NOT. ALLOCATED( wspeed_av ) )  THEN
    2169                          ALLOCATE( wspeed_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2170                       ENDIF
    2171                       IF ( k == 1 )  THEN
    2172                          ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file,             &
    2173                                                        nxl_on_file:nxr_on_file) )
    2174                          READ ( 13 )  tmp_3d_non_standard
    2175                       ENDIF
    2176                       wspeed_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)
    21772076
    21782077                   CASE ( 'z0_av' )
     
    23262225       ENDIF
    23272226
    2328        CALL rd_mpi_io_check_array( 'pt_2m_av' , found = array_found )
    2329        IF ( array_found )  THEN
    2330           IF ( .NOT. ALLOCATED( pt_2m_av ) )  ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )
    2331           CALL rrd_mpi_io( 'pt_2m_av', pt_2m_av )
    2332        ENDIF
    2333 
    23342227       CALL rd_mpi_io_check_array( 'q' , found = array_found )
    23352228       IF ( array_found )  THEN
     
    24252318       ENDIF
    24262319
    2427        CALL rd_mpi_io_check_array( 'ti_av' , found = array_found )
    2428        IF ( array_found )  THEN
    2429           IF ( .NOT. ALLOCATED( ti_av ) )  ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    2430           CALL rrd_mpi_io( 'ti_av', ti_av )
    2431        ENDIF
    2432 
    24332320       CALL rd_mpi_io_check_array( 'ts_av' , found = array_found )
    24342321       IF ( array_found )  THEN
     
    24512338       ENDIF
    24522339
    2453        CALL rd_mpi_io_check_array( 'u_center_av' , found = array_found )
    2454        IF ( array_found )  THEN
    2455           IF ( .NOT. ALLOCATED( u_center_av ) )  ALLOCATE( u_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2456           CALL rrd_mpi_io( 'u_center_av', u_center_av )
    2457        ENDIF
    2458 
    2459        CALL rd_mpi_io_check_array( 'uu_av' , found = array_found )
    2460        IF ( array_found )  THEN
    2461           IF ( .NOT. ALLOCATED( uu_av ) )  ALLOCATE( uu_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2462           CALL rrd_mpi_io( 'uu_av', uu_av )
    2463        ENDIF
    2464 
    2465        CALL rd_mpi_io_check_array( 'uv_10m_av' , found = array_found )
    2466        IF ( array_found )  THEN
    2467           IF ( .NOT. ALLOCATED( uv_10m_av ) )  ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) )
    2468           CALL rrd_mpi_io( 'uv_10m_av', uv_10m_av )
    2469        ENDIF
    2470 
    24712340       CALL rd_mpi_io_check_array( 'u_m_l' , found = array_found )
    24722341       IF ( array_found )  THEN
     
    25072376       ENDIF
    25082377
    2509        CALL rd_mpi_io_check_array( 'v_center_av' , found = array_found )
    2510        IF ( array_found )  THEN
    2511           IF ( .NOT. ALLOCATED( v_center_av ) )  ALLOCATE( v_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2512           CALL rrd_mpi_io( 'v_center_av', v_center_av )
    2513        ENDIF
    2514 
    2515        CALL rd_mpi_io_check_array( 'vv_av' , found = array_found )
    2516        IF ( array_found )  THEN
    2517           IF ( .NOT. ALLOCATED( vv_av ) )  ALLOCATE( vv_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2518           CALL rrd_mpi_io( 'vv_av', vv_av )
    2519        ENDIF
    2520 
    25212378       CALL rd_mpi_io_check_array( 'v_m_l' , found = array_found )
    25222379       IF ( array_found )  THEN
     
    25622419       ENDIF
    25632420
    2564        CALL rd_mpi_io_check_array( 'ww_av' , found = array_found )
    2565        IF ( array_found )  THEN
    2566           IF ( .NOT. ALLOCATED( ww_av ) )  ALLOCATE( w_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2567           CALL rrd_mpi_io( 'ww_av', ww_av )
    2568        ENDIF
    2569 
    25702421       CALL rd_mpi_io_check_array( 'w_m_l' , found = array_found )
    25712422       IF ( array_found )  THEN
     
    25902441          IF ( .NOT. ALLOCATED( w_m_s ) )  ALLOCATE( w_m_s(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    25912442          CALL rrd_mpi_io( 'w_m_s', w_m_s )
    2592        ENDIF
    2593 
    2594        CALL rd_mpi_io_check_array( 'wspeed_av' , found = array_found )
    2595        IF ( array_found )  THEN
    2596           IF ( .NOT. ALLOCATED( wspeed_av ) )  ALLOCATE( wspeed_av(nzb:nzt+1,nys:nyn,nxl:nxr) )
    2597           CALL rrd_mpi_io( 'wspeed_av', wspeed_av )
    25982443       ENDIF
    25992444
Note: See TracChangeset for help on using the changeset viewer.