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/ocean_mod.f90

    r4481 r4495  
    2525! -----------------
    2626! $Id$
     27! restart data handling with MPI-IO added
     28!
     29! 4481 2020-03-31 18:55:54Z maronga
    2730! vector directives added to force vectorization on Intel19 compiler
    2831!
     
    8487    USE control_parameters,                                                    &
    8588        ONLY:  atmos_ocean_sign, bottom_salinityflux,                          &
    86                constant_top_salinityflux, ocean_mode, top_salinityflux,        &
     89               constant_top_salinityflux, restart_data_format_output, ocean_mode, top_salinityflux, &
    8790               wall_salinityflux, loop_optimization, ws_scheme_sca
    8891
     
    97100    USE indices,                                                               &
    98101        ONLY:  advc_flags_s, nxl, nxr, nyn, nys, nzb, nzt, wall_flags_total_0
     102
     103    USE restart_data_mpi_io_mod,                                                                   &
     104        ONLY:  rrd_mpi_io, rrd_mpi_io_global_array, wrd_mpi_io, wrd_mpi_io_global_array
    99105
    100106    USE surface_mod,                                                           &
     
    221227
    222228    INTERFACE ocean_rrd_global
    223        MODULE PROCEDURE ocean_rrd_global
     229       MODULE PROCEDURE ocean_rrd_global_ftn
     230       MODULE PROCEDURE ocean_rrd_global_mpi
    224231    END INTERFACE ocean_rrd_global
    225232
     
    19381945! Description:
    19391946! ------------
    1940 !> This routine reads the respective restart data for the ocean module.
    1941 !------------------------------------------------------------------------------!
    1942  SUBROUTINE ocean_rrd_global( found )
     1947!> Read module-specific global restart data (Fortran binary format).
     1948!------------------------------------------------------------------------------!
     1949 SUBROUTINE ocean_rrd_global_ftn( found )
    19431950
    19441951
     
    20012008    END SELECT
    20022009
    2003  END SUBROUTINE ocean_rrd_global
     2010 END SUBROUTINE ocean_rrd_global_ftn
     2011
     2012
     2013!------------------------------------------------------------------------------!
     2014! Description:
     2015! ------------
     2016!> Read module-specific global restart data (MPI-IO).
     2017!------------------------------------------------------------------------------!
     2018 SUBROUTINE ocean_rrd_global_mpi
     2019
     2020    CALL rrd_mpi_io( 'bc_sa_t', bc_sa_t )
     2021    CALL rrd_mpi_io( 'bottom_salinityflux', bottom_salinityflux )
     2022    CALL rrd_mpi_io( 'salinity', salinity )
     2023    CALL rrd_mpi_io_global_array( 'sa_init', sa_init )
     2024    CALL rrd_mpi_io( 'sa_surface', sa_surface )
     2025    CALL rrd_mpi_io_global_array( 'sa_vertical_gradient', sa_vertical_gradient )
     2026    CALL rrd_mpi_io_global_array( 'sa_vertical_gradient_level', sa_vertical_gradient_level )
     2027    CALL rrd_mpi_io_global_array( 'sa_vertical_gradient_level_ind', sa_vertical_gradient_level_ind )
     2028    CALL rrd_mpi_io( 'stokes_waveheight', stokes_waveheight )
     2029    CALL rrd_mpi_io( 'stokes_wavelength', stokes_wavelength )
     2030    CALL rrd_mpi_io( 'surface_cooling_spinup_time', surface_cooling_spinup_time )
     2031    CALL rrd_mpi_io( 'top_salinityflux', top_salinityflux )
     2032    CALL rrd_mpi_io_global_array( 'wall_salinityflux', wall_salinityflux )
     2033    CALL rrd_mpi_io( 'wave_breaking', wave_breaking )
     2034
     2035 END SUBROUTINE ocean_rrd_global_mpi
    20042036
    20052037
     
    20862118 SUBROUTINE ocean_wrd_global
    20872119
    2088 
    2089     IMPLICIT NONE
    2090 
    2091     CALL wrd_write_string( 'bc_sa_t' )
    2092     WRITE ( 14 )  bc_sa_t
    2093 
    2094     CALL wrd_write_string( 'bottom_salinityflux' )
    2095     WRITE ( 14 )  bottom_salinityflux
    2096 
    2097     CALL wrd_write_string( 'salinity' )
    2098     WRITE ( 14 )  salinity
    2099 
    2100     CALL wrd_write_string( 'sa_init' )
    2101     WRITE ( 14 )  sa_init
    2102 
    2103     CALL wrd_write_string( 'sa_surface' )
    2104     WRITE ( 14 )  sa_surface
    2105 
    2106     CALL wrd_write_string( 'sa_vertical_gradient' )
    2107     WRITE ( 14 )  sa_vertical_gradient
    2108 
    2109     CALL wrd_write_string( 'sa_vertical_gradient_level' )
    2110     WRITE ( 14 )  sa_vertical_gradient_level
    2111 
    2112     CALL wrd_write_string( 'stokes_waveheight' )
    2113     WRITE ( 14 )  stokes_waveheight
    2114 
    2115     CALL wrd_write_string( 'stokes_wavelength' )
    2116     WRITE ( 14 )  stokes_wavelength
    2117 
    2118     CALL wrd_write_string( 'surface_cooling_spinup_time' )
    2119     WRITE ( 14 )  surface_cooling_spinup_time
    2120 
    2121     CALL wrd_write_string( 'top_salinityflux' )
    2122     WRITE ( 14 )  top_salinityflux
    2123 
    2124     CALL wrd_write_string( 'wall_salinityflux' )
    2125     WRITE ( 14 )  wall_salinityflux
    2126 
    2127     CALL wrd_write_string( 'wave_breaking' )
    2128     WRITE ( 14 )  wave_breaking
     2120    IMPLICIT NONE
     2121
     2122
     2123    IF ( TRIM( restart_data_format_output ) == 'fortran_binary' )  THEN
     2124
     2125       CALL wrd_write_string( 'bc_sa_t' )
     2126       WRITE ( 14 )  bc_sa_t
     2127
     2128       CALL wrd_write_string( 'bottom_salinityflux' )
     2129       WRITE ( 14 )  bottom_salinityflux
     2130
     2131       CALL wrd_write_string( 'salinity' )
     2132       WRITE ( 14 )  salinity
     2133
     2134       CALL wrd_write_string( 'sa_init' )
     2135       WRITE ( 14 )  sa_init
     2136
     2137       CALL wrd_write_string( 'sa_surface' )
     2138       WRITE ( 14 )  sa_surface
     2139
     2140       CALL wrd_write_string( 'sa_vertical_gradient' )
     2141       WRITE ( 14 )  sa_vertical_gradient
     2142
     2143       CALL wrd_write_string( 'sa_vertical_gradient_level' )
     2144       WRITE ( 14 )  sa_vertical_gradient_level
     2145
     2146       CALL wrd_write_string( 'stokes_waveheight' )
     2147       WRITE ( 14 )  stokes_waveheight
     2148
     2149       CALL wrd_write_string( 'stokes_wavelength' )
     2150       WRITE ( 14 )  stokes_wavelength
     2151
     2152       CALL wrd_write_string( 'surface_cooling_spinup_time' )
     2153       WRITE ( 14 )  surface_cooling_spinup_time
     2154
     2155       CALL wrd_write_string( 'top_salinityflux' )
     2156       WRITE ( 14 )  top_salinityflux
     2157
     2158       CALL wrd_write_string( 'wall_salinityflux' )
     2159       WRITE ( 14 )  wall_salinityflux
     2160
     2161       CALL wrd_write_string( 'wave_breaking' )
     2162       WRITE ( 14 )  wave_breaking
     2163
     2164    ELSEIF ( TRIM( restart_data_format_output ) == 'mpi' )  THEN
     2165
     2166       CALL wrd_mpi_io( 'bc_sa_t', bc_sa_t )
     2167       CALL wrd_mpi_io( 'bottom_salinityflux', bottom_salinityflux )
     2168       CALL wrd_mpi_io( 'salinity', salinity )
     2169       CALL wrd_mpi_io_global_array( 'sa_init', sa_init )
     2170       CALL wrd_mpi_io( 'sa_surface', sa_surface )
     2171       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient', sa_vertical_gradient )
     2172       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient_level', sa_vertical_gradient_level )
     2173       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient_level_ind', sa_vertical_gradient_level_ind )
     2174       CALL wrd_mpi_io( 'stokes_waveheight', stokes_waveheight )
     2175       CALL wrd_mpi_io( 'stokes_wavelength', stokes_wavelength )
     2176       CALL wrd_mpi_io( 'surface_cooling_spinup_time', surface_cooling_spinup_time )
     2177       CALL wrd_mpi_io( 'top_salinityflux', top_salinityflux )
     2178       CALL wrd_mpi_io_global_array( 'wall_salinityflux', wall_salinityflux )
     2179       CALL wrd_mpi_io( 'wave_breaking', wave_breaking )
     2180
     2181    ENDIF
    21292182
    21302183 END SUBROUTINE ocean_wrd_global
     
    21432196    IMPLICIT NONE
    21442197
    2145     IF ( ALLOCATED( rho_ocean_av ) )  THEN
    2146        CALL wrd_write_string( 'rho_ocean_av' )
    2147        WRITE ( 14 )  rho_ocean_av
    2148     ENDIF
    2149 
    2150     CALL wrd_write_string( 'sa' )
    2151     WRITE ( 14 )  sa
    2152 
    2153     IF ( ALLOCATED( sa_av ) )  THEN
    2154        CALL wrd_write_string( 'sa_av' )
    2155        WRITE ( 14 )  sa_av
     2198
     2199    IF ( TRIM( restart_data_format_output ) == 'fortran_binary' )  THEN
     2200
     2201       IF ( ALLOCATED( rho_ocean_av ) )  THEN
     2202          CALL wrd_write_string( 'rho_ocean_av' )
     2203          WRITE ( 14 )  rho_ocean_av
     2204       ENDIF
     2205
     2206       CALL wrd_write_string( 'sa' )
     2207       WRITE ( 14 )  sa
     2208
     2209       IF ( ALLOCATED( sa_av ) )  THEN
     2210          CALL wrd_write_string( 'sa_av' )
     2211          WRITE ( 14 )  sa_av
     2212       ENDIF
     2213
     2214    ELSEIF ( TRIM( restart_data_format_output ) == 'mpi' )  THEN
     2215
     2216       IF ( ALLOCATED( rho_ocean_av ) )  CALL wrd_mpi_io( 'rho_ocean_av', rho_ocean_av )
     2217       CALL wrd_mpi_io( 'sa', sa )
     2218       IF ( ALLOCATED( sa_av ) )  CALL wrd_mpi_io( 'sa_av', sa_av )
     2219
    21562220    ENDIF
    21572221
Note: See TracChangeset for help on using the changeset viewer.