Changeset 4495 for palm/trunk/SOURCE/ocean_mod.f90
- Timestamp:
- Apr 13, 2020 8:11:20 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/ocean_mod.f90
r4481 r4495 25 25 ! ----------------- 26 26 ! $Id$ 27 ! restart data handling with MPI-IO added 28 ! 29 ! 4481 2020-03-31 18:55:54Z maronga 27 30 ! vector directives added to force vectorization on Intel19 compiler 28 31 ! … … 84 87 USE control_parameters, & 85 88 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, & 87 90 wall_salinityflux, loop_optimization, ws_scheme_sca 88 91 … … 97 100 USE indices, & 98 101 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 99 105 100 106 USE surface_mod, & … … 221 227 222 228 INTERFACE ocean_rrd_global 223 MODULE PROCEDURE ocean_rrd_global 229 MODULE PROCEDURE ocean_rrd_global_ftn 230 MODULE PROCEDURE ocean_rrd_global_mpi 224 231 END INTERFACE ocean_rrd_global 225 232 … … 1938 1945 ! Description: 1939 1946 ! ------------ 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 ) 1943 1950 1944 1951 … … 2001 2008 END SELECT 2002 2009 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 2004 2036 2005 2037 … … 2086 2118 SUBROUTINE ocean_wrd_global 2087 2119 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 2129 2182 2130 2183 END SUBROUTINE ocean_wrd_global … … 2143 2196 IMPLICIT NONE 2144 2197 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 2156 2220 ENDIF 2157 2221
Note: See TracChangeset
for help on using the changeset viewer.