Ignore:
Timestamp:
Nov 26, 2020 4:02:39 PM (4 years ago)
Author:
raasch
Message:

files re-formatted to follow the PALM coding standard

File:
1 edited

Legend:

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

    r4768 r4797  
    11!> @file ocean_mod.f90
    2 !------------------------------------------------------------------------------!
     2!--------------------------------------------------------------------------------------------------!
    33! This file is part of the PALM model system.
    44!
    5 ! PALM is free software: you can redistribute it and/or modify it under the
    6 ! terms of the GNU General Public License as published by the Free Software
    7 ! Foundation, either version 3 of the License, or (at your option) any later
    8 ! version.
    9 !
    10 ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
    11 ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
    12 ! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
    13 !
    14 ! You should have received a copy of the GNU General Public License along with
    15 ! PALM. If not, see <http://www.gnu.org/licenses/>.
     5! PALM is free software: you can redistribute it and/or modify it under the terms of the GNU General
     6! Public License as published by the Free Software Foundation, either version 3 of the License, or
     7! (at your option) any later version.
     8!
     9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
     10! implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
     11! Public License for more details.
     12!
     13! You should have received a copy of the GNU General Public License along with PALM. If not, see
     14! <http://www.gnu.org/licenses/>.
    1615!
    1716! Copyright 2017-2020 Leibniz Universitaet Hannover
    18 !--------------------------------------------------------------------------------!
     17!--------------------------------------------------------------------------------------------------!
    1918!
    2019! Current revisions:
     
    2524! -----------------
    2625! $Id$
     26! file re-formatted to follow the PALM coding standard
     27!
     28! 4768 2020-11-02 19:11:23Z suehring
    2729! Enable 3D data output also with 64-bit precision
    2830!
     
    3234! 4671 2020-09-09 20:27:58Z pavelkrc
    3335! Implementation of downward facing USM and LSM surfaces
    34 ! 
     36!
    3537! 4535 2020-05-15 12:07:23Z raasch
    3638! bugfix for restart data format query
    37 ! 
     39!
    3840! 4517 2020-05-03 14:29:30Z raasch
    3941! added restart with MPI-IO for reading local arrays
    40 ! 
     42!
    4143! 4495 2020-04-13 20:11:20Z raasch
    4244! restart data handling with MPI-IO added
    43 ! 
     45!
    4446! 4481 2020-03-31 18:55:54Z maronga
    4547! vector directives added to force vectorization on Intel19 compiler
    46 ! 
     48!
    4749! 4346 2019-12-18 11:55:56Z motisi
    48 ! Introduction of wall_flags_total_0, which currently sets bits based on static
    49 ! topography information used in wall_flags_static_0
    50 ! 
     50! Introduction of wall_flags_total_0, which currently sets bits based on static topography
     51! information used in wall_flags_static_0
     52!
    5153! 4329 2019-12-10 15:46:36Z motisi
    5254! Renamed wall_flags_0 to wall_flags_static_0
    53 ! 
     55!
    5456! 4272 2019-10-23 15:18:57Z schwenkel
    55 ! Further modularization of boundary conditions: moved boundary conditions to
    56 ! respective modules
     57! Further modularization of boundary conditions: moved boundary conditions to respective modules
    5758!
    5859! 4196 2019-08-29 11:02:06Z gronemeier
    5960! Consider rotation of model domain for calculating the Stokes drift
    60 ! 
     61!
    6162! 4182 2019-08-22 15:20:23Z scharf
    6263! Corrected "Former revisions" section
    63 ! 
     64!
    6465! 4110 2019-07-22 17:05:21Z suehring
    65 ! Pass integer flag array as well as boundary flags to WS scalar advection
    66 ! routine
    67 !
     66! Pass integer flag array as well as boundary flags to WS scalar advection routine
     67!
    6868! 4109 2019-07-22 17:00:34Z suehring
    6969! implemented ocean_actions
    70 ! 
     70!
    7171! 3767 2019-02-27 08:18:02Z raasch
    72 ! unused variable for file index and tmp_2d removed from rrd-subroutine parameter
    73 ! list
    74 !
     72! unused variable for file index and tmp_2d removed from rrd-subroutine parameter list
     73!
    7574! 3719 2019-02-06 13:10:18Z kanani
    76 ! Changed log_point to log_point_s, otherwise this overlaps with
    77 ! 'all progn.equations' cpu measurement.
    78 ! 
     75! Changed log_point to log_point_s, otherwise this overlaps with 'all progn.equations'
     76! cpu measurement.
     77!
    7978! 3684 2019-01-20 20:20:58Z knoop
    8079! nopointer option removed
     80!
    8181! 3294 2018-10-01 02:37:10Z raasch
    8282! initial revision
     
    8989! Description:
    9090! ------------
    91 !> This module contains relevant code for PALM's ocean mode, e.g. the
    92 !> prognostic equation for salinity, the equation of state for seawater,
    93 !> the Craik Leibovich force (Stokes force), and wave breaking effects
    94 !------------------------------------------------------------------------------!
     91!> This module contains relevant code for PALM's ocean mode, e.g. the prognostic equation for
     92!> salinity, the equation of state for seawater, the Craik Leibovich force (Stokes force), and wave
     93!> breaking effects
     94!--------------------------------------------------------------------------------------------------!
    9595 MODULE ocean_mod
    96  
    97 
    98     USE arrays_3d,                                                             &
    99         ONLY:  prho, prho_1, rho_ocean, rho_1, sa, sa_init, sa_1, sa_2, sa_3,  &
    100                sa_p, tsa_m, flux_l_sa, flux_s_sa, diss_l_sa, diss_s_sa
    101 
    102     USE control_parameters,                                                    &
    103         ONLY:  atmos_ocean_sign, bottom_salinityflux,                          &
    104                constant_top_salinityflux, restart_data_format_output, ocean_mode, top_salinityflux,&
    105                wall_salinityflux, loop_optimization, ws_scheme_sca
     96
     97
     98    USE arrays_3d,                                                                                 &
     99        ONLY:  diss_l_sa, diss_s_sa, flux_l_sa, flux_s_sa, prho, prho_1, rho_1, rho_ocean, sa,     &
     100               sa_1, sa_2, sa_3, sa_init, sa_p, tsa_m
     101
     102    USE control_parameters,                                                                        &
     103        ONLY:  atmos_ocean_sign, bottom_salinityflux, constant_top_salinityflux, loop_optimization,&
     104               ocean_mode, restart_data_format_output, top_salinityflux, wall_salinityflux,        &
     105               ws_scheme_sca
    106106
    107107    USE kinds
    108108
    109     USE pegrid,                                                                &
     109    USE pegrid,                                                                                    &
    110110        ONLY:  threads_per_task
    111111
    112     USE statistics,                                                            &
     112    USE statistics,                                                                                &
    113113        ONLY:  sums_wssas_ws_l
    114114
    115     USE indices,                                                               &
    116         ONLY:  advc_flags_s, nxl, nxr, nyn, nys, nzb, nzt, wall_flags_total_0, nbgp
     115    USE indices,                                                                                   &
     116        ONLY:  advc_flags_s, nbgp, nxl, nxr, nyn, nys, nzb, nzt, wall_flags_total_0
    117117
    118118    USE restart_data_mpi_io_mod,                                                                   &
     
    120120               wrd_mpi_io_global_array
    121121
    122     USE surface_mod,                                                           &
    123         ONLY:  bc_h, surf_def_v, surf_def_h, surf_lsm_h, surf_lsm_v,           &
    124                surf_usm_h, surf_usm_v
     122    USE surface_mod,                                                                               &
     123        ONLY:  bc_h, surf_def_v, surf_def_h, surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v
    125124
    126125       USE exchange_horiz_mod,                                                                     &
     
    132131    CHARACTER (LEN=20) ::  bc_sa_t = 'neumann'  !< namelist parameter
    133132
    134     INTEGER(iwp) ::  ibc_sa_t   !< integer flag for bc_sa_t
    135     INTEGER(iwp) ::  iran_ocean = -1234567  !< random number used for wave breaking effects
    136 
     133    INTEGER(iwp) ::  ibc_sa_t                                    !< integer flag for bc_sa_t
     134    INTEGER(iwp) ::  iran_ocean = -1234567                       !< random number used for wave breaking effects
    137135    INTEGER(iwp) ::  sa_vertical_gradient_level_ind(10) = -9999  !< grid index values of sa_vertical_gradient_level(s)
    138136
    139137    LOGICAL ::  salinity = .TRUE.             !< switch for using salinity
    140138    LOGICAL ::  stokes_force = .FALSE.        !< switch to switch on the Stokes force
     139    LOGICAL ::  surface_cooling_switched_off = .FALSE.  !< variable to check if surface heat flux has been switched off
    141140    LOGICAL ::  wave_breaking = .FALSE.       !< switch to switch on wave breaking effects
    142     LOGICAL ::  surface_cooling_switched_off = .FALSE.  !< variable to check if surface heat flux has been switched off
    143141
    144142    REAL(wp) ::  alpha_wave_breaking = 3.0_wp !< coefficient for wave breaking generated turbulence from Noh et al. (2004), JPO
     
    153151    REAL(wp) ::  u_star_wave_breaking        !< to store the absolute value of friction velocity at the ocean surface
    154152
    155     REAL(wp), DIMENSION(12), PARAMETER ::  nom =                               &
    156                           (/ 9.9984085444849347D2,   7.3471625860981584D0,     &
    157                             -5.3211231792841769D-2,  3.6492439109814549D-4,    &
    158                              2.5880571023991390D0,  -6.7168282786692354D-3,    &
    159                              1.9203202055760151D-3,  1.1798263740430364D-2,    &
    160                              9.8920219266399117D-8,  4.6996642771754730D-6,    &
    161                             -2.5862187075154352D-8, -3.2921414007960662D-12 /)
    162                           !< constants used in equation of state for seawater
    163 
    164     REAL(wp), DIMENSION(13), PARAMETER ::  den =                               &
    165                           (/ 1.0D0,                  7.2815210113327091D-3,    &
    166                             -4.4787265461983921D-5,  3.3851002965802430D-7,    &
    167                              1.3651202389758572D-10, 1.7632126669040377D-3,    &
    168                             -8.8066583251206474D-6, -1.8832689434804897D-10,   &
    169                              5.7463776745432097D-6,  1.4716275472242334D-9,    &
    170                              6.7103246285651894D-6, -2.4461698007024582D-17,   &
    171                             -9.1534417604289062D-18 /)
    172                           !< constants used in equation of state for seawater
     153    REAL(wp), DIMENSION(12), PARAMETER ::  nom =                                                   &
     154                                              (/ 9.9984085444849347D2,   7.3471625860981584D0,     &
     155                                                -5.3211231792841769D-2,  3.6492439109814549D-4,    &
     156                                                 2.5880571023991390D0,  -6.7168282786692354D-3,    &
     157                                                 1.9203202055760151D-3,  1.1798263740430364D-2,    &
     158                                                 9.8920219266399117D-8,  4.6996642771754730D-6,    &
     159                                                -2.5862187075154352D-8, -3.2921414007960662D-12 /)
     160                                               !< constants used in equation of state for seawater
     161
     162    REAL(wp), DIMENSION(13), PARAMETER ::  den =                                                   &
     163                                              (/ 1.0D0,                  7.2815210113327091D-3,    &
     164                                                -4.4787265461983921D-5,  3.3851002965802430D-7,    &
     165                                                 1.3651202389758572D-10, 1.7632126669040377D-3,    &
     166                                                -8.8066583251206474D-6, -1.8832689434804897D-10,   &
     167                                                 5.7463776745432097D-6,  1.4716275472242334D-9,    &
     168                                                 6.7103246285651894D-6, -2.4461698007024582D-17,   &
     169                                                -9.1534417604289062D-18 /)
     170                                              !< constants used in equation of state for seawater
    173171
    174172    SAVE
    175173
    176     PUBLIC ::  bc_sa_t, ibc_sa_t, prho_reference, sa_surface,                  &
    177                sa_vertical_gradient, sa_vertical_gradient_level,               &
    178                sa_vertical_gradient_level_ind, stokes_force, wave_breaking
     174    PUBLIC ::  bc_sa_t, ibc_sa_t, prho_reference, sa_surface, sa_vertical_gradient,                &
     175               sa_vertical_gradient_level, sa_vertical_gradient_level_ind, stokes_force,           &
     176               wave_breaking
    179177
    180178
     
    285283!
    286284!-- Add INTERFACES that must be available to other modules (alphabetical order)
    287     PUBLIC eqn_state_seawater, ocean_actions, ocean_check_data_output,         &
    288            ocean_check_data_output_pr, ocean_check_parameters,                 &
    289            ocean_data_output_2d, ocean_data_output_3d, ocean_exchange_horiz,   &
    290            ocean_define_netcdf_grid, ocean_header, ocean_init,                 &
    291            ocean_init_arrays, ocean_parin, ocean_prognostic_equations,         &
    292            ocean_swap_timelevel, ocean_rrd_global, ocean_rrd_local,            &
    293            ocean_wrd_global, ocean_wrd_local, ocean_3d_data_averaging,         &
    294            ocean_boundary_conditions, stokes_drift_terms, wave_breaking_term
     285    PUBLIC eqn_state_seawater, ocean_actions, ocean_check_data_output, ocean_check_data_output_pr, &
     286           ocean_check_parameters, ocean_data_output_2d, ocean_data_output_3d,                     &
     287           ocean_exchange_horiz, ocean_define_netcdf_grid, ocean_header, ocean_init,               &
     288           ocean_init_arrays, ocean_parin, ocean_prognostic_equations, ocean_swap_timelevel,       &
     289           ocean_rrd_global, ocean_rrd_local, ocean_wrd_global, ocean_wrd_local,                   &
     290           ocean_3d_data_averaging, ocean_boundary_conditions, stokes_drift_terms,                 &
     291           wave_breaking_term
    295292
    296293
    297294 CONTAINS
    298295
    299 !------------------------------------------------------------------------------!
    300 ! Description:
    301 ! ------------
    302 !> Equation of state for seawater as a function of potential temperature,
    303 !> salinity, and pressure.
     296!--------------------------------------------------------------------------------------------------!
     297! Description:
     298! ------------
     299!> Equation of state for seawater as a function of potential temperature, salinity, and pressure.
    304300!> For coefficients see Jackett et al., 2006: J. Atm. Ocean Tech.
    305301!> eqn_state_seawater calculates the potential density referred at hyp(0).
    306302!> eqn_state_seawater_func calculates density.
    307303!> TODO: so far, routine is not adjusted to use topography
    308 !------------------------------------------------------------------------------!
     304!--------------------------------------------------------------------------------------------------!
    309305 SUBROUTINE eqn_state_seawater
    310306
    311     USE arrays_3d,                                                             &
     307    USE arrays_3d,                                                                                 &
    312308        ONLY:  hyp, prho, pt_p, rho_ocean, sa_p
    313     USE indices,                                                               &
     309    USE indices,                                                                                   &
    314310        ONLY:  nxl, nxr, nyn, nys, nzb, nzt
    315311
     
    355351             sa2  = sa1 * sa1
    356352
    357              pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +       &
    358                     nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 +       &
     353             pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +                           &
     354                    nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 +                           &
    359355                    nom(7)*sa2
    360356
    361              pden = den(1)           + den(2)*pt1     + den(3)*pt2     +       &
    362                     den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +       &
    363                     den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +       &
     357             pden = den(1)           + den(2)*pt1     + den(3)*pt2     +                           &
     358                    den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +                           &
     359                    den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +                           &
    364360                    den(10)*sa15*pt2
    365361!
     
    367363             prho(k,j,i) = pnom / pden
    368364
    369              pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  +       &
     365             pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  +                           &
    370366                    nom(10)*p1*sa1   + nom(11)*p2     + nom(12)*p2*pt2
    371367
    372              pden = pden +             den(11)*p1     + den(12)*p2*pt3 +       &
     368             pden = pden +             den(11)*p1     + den(12)*p2*pt3 +                           &
    373369                    den(13)*p3*pt1
    374370
     
    380376
    381377!
    382 !--       Neumann conditions are assumed at top boundary and currently also at
    383 !--       bottom boundary (see comment lines below)
     378!--       Neumann conditions are assumed at top boundary and currently also at bottom boundary
     379!--       (see comment lines below)
    384380          prho(nzt+1,j,i)      = prho(nzt,j,i)
    385381          rho_ocean(nzt+1,j,i) = rho_ocean(nzt,j,i)
     
    411407
    412408
    413 !------------------------------------------------------------------------------!
     409!--------------------------------------------------------------------------------------------------!
    414410! Description:
    415411! ------------
    416412!> Same as above, but for grid point i,j
    417 !------------------------------------------------------------------------------!
     413!--------------------------------------------------------------------------------------------------!
    418414 SUBROUTINE eqn_state_seawater_ij( i, j )
    419415
    420     USE arrays_3d,                                                             &
     416    USE arrays_3d,                                                                                 &
    421417        ONLY:  hyp, prho, pt_p, rho_ocean, sa_p
    422418
    423     USE indices,                                                               &
     419    USE indices,                                                                                   &
    424420        ONLY:  nzb, nzt
    425421
     
    446442    REAL(wp) ::  sa2    !< temporary scalar user for calculating density
    447443
     444
    448445    DO  k = nzb+1, nzt
    449446!
     
    463460       sa2  = sa1 * sa1
    464461
    465        pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +             &
     462       pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +                                 &
    466463              nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 + nom(7)*sa2
    467464
    468        pden = den(1)           + den(2)*pt1     + den(3)*pt2     +             &
    469               den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +             &
    470               den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +             &
     465       pden = den(1)           + den(2)*pt1     + den(3)*pt2     +                                 &
     466              den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +                                 &
     467              den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +                                 &
    471468              den(10)*sa15*pt2
    472469!
     
    474471       prho(k,j,i) = pnom / pden
    475472
    476        pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  +             &
     473       pnom = pnom             + nom(8)*p1      + nom(9)*p1*pt2  +                                 &
    477474              nom(10)*p1*sa1   + nom(11)*p2     + nom(12)*p2*pt2
    478        pden = pden +             den(11)*p1     + den(12)*p2*pt3 +             &
     475
     476       pden = pden             + den(11)*p1     + den(12)*p2*pt3 +                                 &
    479477              den(13)*p3*pt1
    480478
     
    510508
    511509
    512 !------------------------------------------------------------------------------!
     510!--------------------------------------------------------------------------------------------------!
    513511! Description:
    514512! ------------
    515513!> Equation of state for seawater as a function
    516 !------------------------------------------------------------------------------!
     514!--------------------------------------------------------------------------------------------------!
    517515 REAL(wp) FUNCTION eqn_state_seawater_func( p, pt, sa )
    518516
     
    532530    REAL(wp) ::  sa2    !< temporary scalar user for calculating density
    533531
     532
    534533!
    535534!-- Pressure is needed in dbar
     
    549548
    550549
    551     eqn_state_seawater_func =                                                  &
    552          ( nom(1)        + nom(2)*pt1       + nom(3)*pt2    + nom(4)*pt3     + &
    553            nom(5)*sa     + nom(6)*sa*pt1    + nom(7)*sa2    + nom(8)*p1      + &
    554            nom(9)*p1*pt2 + nom(10)*p1*sa    + nom(11)*p2    + nom(12)*p2*pt2   &
    555          ) /                                                                   &
    556          ( den(1)        + den(2)*pt1       + den(3)*pt2    + den(4)*pt3     + &
    557            den(5)*pt4    + den(6)*sa        + den(7)*sa*pt1 + den(8)*sa*pt3  + &
    558            den(9)*sa15   + den(10)*sa15*pt2 + den(11)*p1    + den(12)*p2*pt3 + &
    559            den(13)*p3*pt1                                                      &
    560          )
     550    eqn_state_seawater_func =                                                                      &
     551                             ( nom(1)        + nom(2)*pt1       + nom(3)*pt2    + nom(4)*pt3     + &
     552                               nom(5)*sa     + nom(6)*sa*pt1    + nom(7)*sa2    + nom(8)*p1      + &
     553                               nom(9)*p1*pt2 + nom(10)*p1*sa    + nom(11)*p2    + nom(12)*p2*pt2   &
     554                             ) /                                                                   &
     555                             ( den(1)        + den(2)*pt1       + den(3)*pt2    + den(4)*pt3     + &
     556                               den(5)*pt4    + den(6)*sa        + den(7)*sa*pt1 + den(8)*sa*pt3  + &
     557                               den(9)*sa15   + den(10)*sa15*pt2 + den(11)*p1    + den(12)*p2*pt3 + &
     558                               den(13)*p3*pt1                                                      &
     559                             )
    561560
    562561
     
    564563
    565564
    566 !------------------------------------------------------------------------------!
     565!--------------------------------------------------------------------------------------------------!
    567566! Description:
    568567! ------------
    569568!> Reads the ocean parameters namelist
    570 !------------------------------------------------------------------------------!
     569!--------------------------------------------------------------------------------------------------!
    571570 SUBROUTINE ocean_parin
    572571
     
    576575
    577576
    578     NAMELIST /ocean_parameters/  bc_sa_t, bottom_salinityflux, salinity,       &
    579              sa_surface, sa_vertical_gradient, sa_vertical_gradient_level,     &
    580              stokes_waveheight, stokes_wavelength, surface_cooling_spinup_time,&
    581              top_salinityflux, wall_salinityflux, wave_breaking
     577    NAMELIST /ocean_parameters/  bc_sa_t, bottom_salinityflux, salinity, sa_surface,               &
     578                                 sa_vertical_gradient, sa_vertical_gradient_level,                 &
     579                                 stokes_waveheight, stokes_wavelength, surface_cooling_spinup_time,&
     580                                 top_salinityflux, wall_salinityflux, wave_breaking
    582581
    583582!
     
    607606 END SUBROUTINE ocean_parin
    608607
    609 !------------------------------------------------------------------------------!
     608!--------------------------------------------------------------------------------------------------!
    610609! Description:
    611610! ------------
    612611!> Check parameters routine for the ocean mode
    613 !------------------------------------------------------------------------------!
     612!--------------------------------------------------------------------------------------------------!
    614613 SUBROUTINE ocean_check_parameters
    615614
    616     USE control_parameters,                                                    &
    617         ONLY:  coupling_char, coupling_mode, initializing_actions,             &
    618                message_string, use_top_fluxes
    619 
    620     USE pmc_interface,                                                         &
     615    USE control_parameters,                                                                        &
     616        ONLY:  coupling_char, coupling_mode, initializing_actions, message_string, use_top_fluxes
     617
     618    USE pmc_interface,                                                                             &
    621619        ONLY:  nested_run
    622620
     
    638636!
    639637!-- Check ocean setting
    640     IF ( TRIM( coupling_mode ) == 'uncoupled'  .AND.                           &
    641          TRIM( coupling_char ) == '_O' .AND.                                   &
     638    IF ( TRIM( coupling_mode ) == 'uncoupled'  .AND.  TRIM( coupling_char ) == '_O' .AND.          &
    642639         .NOT. ocean_mode )  THEN
    643640
    644641!
    645 !--    Check whether an (uncoupled) atmospheric run has been declared as an
    646 !--    ocean run (this setting is done via palmrun-option -y)
    647        message_string = 'ocean mode does not allow coupling_char = "' //       &
    648                         TRIM( coupling_char ) // '" set by palmrun-option "-y"'
     642!--    Check whether an (uncoupled) atmospheric run has been declared as an ocean run (this setting
     643!--    is done via palmrun-option -y)
     644       message_string = 'ocean mode does not allow coupling_char = "' // TRIM( coupling_char ) //  &
     645                        '" set by palmrun-option "-y"'
    649646       CALL message( 'ocean_check_parameters', 'PA0317', 1, 2, 0, 6, 0 )
    650647
     
    665662       ibc_sa_t = 1
    666663    ELSE
    667        message_string = 'unknown boundary condition: bc_sa_t = "' //           &
    668                         TRIM( bc_sa_t ) // '"'
     664       message_string = 'unknown boundary condition: bc_sa_t = "' // TRIM( bc_sa_t ) // '"'
    669665       CALL message( 'ocean_check_parameters', 'PA0068', 1, 2, 0, 6, 0 )
    670666    ENDIF
     
    673669
    674670    IF ( .NOT. salinity )  THEN
    675        IF ( ( bottom_salinityflux /= 0.0_wp  .AND.                             &
    676               bottom_salinityflux /= 9999999.9_wp )  .OR.                      &
    677             ( top_salinityflux /= 0.0_wp     .AND.                             &
    678               top_salinityflux /= 9999999.9_wp ) )                             &
     671       IF ( ( bottom_salinityflux /= 0.0_wp  .AND.  bottom_salinityflux /= 9999999.9_wp )  .OR.    &
     672            ( top_salinityflux /= 0.0_wp     .AND.  top_salinityflux /= 9999999.9_wp    ) )        &
    679673       THEN
    680           message_string = 'salinityflux must not be set for ocean run ' //    &
    681                            'without salinity'
     674          message_string = 'salinityflux must not be set for ocean run ' // 'without salinity'
    682675          CALL message( 'ocean_check_parameters', 'PA0509', 1, 2, 0, 6, 0 )
    683676       ENDIF
     
    685678
    686679    IF ( ibc_sa_t == 1  .AND.  top_salinityflux == 9999999.9_wp )  THEN
    687        message_string = 'boundary condition: bc_sa_t = "' //                   &
    688                         TRIM( bc_sa_t ) // '" requires to set top_salinityflux'
     680       message_string = 'boundary condition: bc_sa_t = "' // TRIM( bc_sa_t ) //                    &
     681                        '" requires to set top_salinityflux'
    689682       CALL message( 'ocean_check_parameters', 'PA0069', 1, 2, 0, 6, 0 )
    690683    ENDIF
    691684
    692685!
    693 !-- A fixed salinity at the top implies Dirichlet boundary condition for
    694 !-- salinity. In this case specification of a constant salinity flux is
    695 !-- forbidden.
    696     IF ( ibc_sa_t == 0  .AND.  constant_top_salinityflux  .AND.                &
    697          top_salinityflux /= 0.0_wp )  THEN
    698        message_string = 'boundary condition: bc_sa_t = "' //                   &
    699                         TRIM( bc_sa_t ) // '" is not allowed with ' //         &
    700                         'top_salinityflux /= 0.0'
     686!-- A fixed salinity at the top implies Dirichlet boundary condition for salinity. In this case
     687!-- specification of a constant salinity flux is forbidden.
     688    IF ( ibc_sa_t == 0  .AND.  constant_top_salinityflux  .AND.  top_salinityflux /= 0.0_wp )  THEN
     689       message_string = 'boundary condition: bc_sa_t = "' // TRIM( bc_sa_t ) //                    &
     690                        '" is not allowed with top_salinityflux /= 0.0'
    701691       CALL message( 'ocean_check_parameters', 'PA0070', 1, 2, 0, 6, 0 )
    702692    ENDIF
     
    707697       stokes_force = .TRUE.
    708698    ELSE
    709        IF ( ( stokes_waveheight <= 0.0_wp .AND. stokes_wavelength > 0.0_wp ) &
    710             .OR.                                                               &
    711             ( stokes_waveheight > 0.0_wp .AND. stokes_wavelength <= 0.0_wp ) &
    712             .OR.                                                               &
    713             ( stokes_waveheight < 0.0_wp .AND. stokes_wavelength < 0.0_wp  ) ) &
     699       IF ( ( stokes_waveheight <= 0.0_wp .AND. stokes_wavelength >  0.0_wp )  .OR.                &
     700            ( stokes_waveheight >  0.0_wp .AND. stokes_wavelength <= 0.0_wp )  .OR.                &
     701            ( stokes_waveheight <  0.0_wp .AND. stokes_wavelength <  0.0_wp ) )                    &
    714702       THEN
    715           message_string = 'wrong settings for stokes_wavelength and/or ' //   &
    716                            'stokes_waveheight'
     703          message_string = 'wrong settings for stokes_wavelength and/or stokes_waveheight'
    717704          CALL message( 'ocean_check_parameters', 'PA0460', 1, 2, 0, 6, 0 )
    718705       ENDIF
     
    722709
    723710
    724 !------------------------------------------------------------------------------!
     711!--------------------------------------------------------------------------------------------------!
    725712! Description:
    726713! ------------
    727714!> Check data output.
    728 !------------------------------------------------------------------------------!
     715!--------------------------------------------------------------------------------------------------!
    729716 SUBROUTINE ocean_check_data_output( var, unit )
    730  
     717
    731718    IMPLICIT NONE
    732719
     
    751738
    752739
    753 !------------------------------------------------------------------------------!
     740!--------------------------------------------------------------------------------------------------!
    754741! Description:
    755742! ------------
    756743!> Check data output of profiles
    757 !------------------------------------------------------------------------------!
     744!--------------------------------------------------------------------------------------------------!
    758745 SUBROUTINE ocean_check_data_output_pr( variable, var_count, unit, dopr_unit )
    759746
    760     USE arrays_3d,                                                             &
     747    USE arrays_3d,                                                                                 &
    761748        ONLY:  zu, zw
    762749
    763     USE control_parameters,                                                    &
     750    USE control_parameters,                                                                        &
    764751        ONLY:  data_output_pr
    765752
     
    772759    IMPLICIT NONE
    773760
     761    CHARACTER (LEN=*) ::  dopr_unit !< local value of dopr_unit
    774762    CHARACTER (LEN=*) ::  unit      !<
    775763    CHARACTER (LEN=*) ::  variable  !<
    776     CHARACTER (LEN=*) ::  dopr_unit !< local value of dopr_unit
    777764
    778765    INTEGER(iwp) ::  var_count     !<
     766
    779767
    780768    SELECT CASE ( TRIM( variable ) )
     
    837825
    838826
    839 !------------------------------------------------------------------------------!
     827!--------------------------------------------------------------------------------------------------!
    840828! Description:
    841829! ------------
    842830!> Define appropriate grid for netcdf variables.
    843831!> It is called out from subroutine netcdf.
    844 !------------------------------------------------------------------------------!
     832!--------------------------------------------------------------------------------------------------!
    845833 SUBROUTINE ocean_define_netcdf_grid( var, found, grid_x, grid_y, grid_z )
    846    
     834
    847835    IMPLICIT NONE
    848836
     
    854842    LOGICAL, INTENT(OUT) ::  found   !< flag if output variable is found
    855843
     844
    856845    found  = .TRUE.
    857846
     
    860849    SELECT CASE ( TRIM( var ) )
    861850
    862        CASE ( 'rho_sea_water', 'rho_sea_water_xy', 'rho_sea_water_xz', &
    863               'rho_sea_water_yz', 'sa', 'sa_xy', 'sa_xz', 'sa_yz' )
     851       CASE ( 'rho_sea_water', 'rho_sea_water_xy', 'rho_sea_water_xz', 'rho_sea_water_yz', 'sa',   &
     852              'sa_xy', 'sa_xz', 'sa_yz' )
    864853          grid_x = 'x'
    865854          grid_y = 'y'
     
    877866
    878867
    879 !------------------------------------------------------------------------------!
     868!--------------------------------------------------------------------------------------------------!
    880869! Description:
    881870! ------------
    882871!> Average 3D data.
    883 !------------------------------------------------------------------------------!
     872!--------------------------------------------------------------------------------------------------!
    884873 SUBROUTINE ocean_3d_data_averaging( mode, variable )
    885  
    886 
    887     USE arrays_3d,                                                             &
     874
     875
     876    USE arrays_3d,                                                                                 &
    888877        ONLY:  rho_ocean, sa
    889878
    890     USE averaging,                                                             &
     879    USE averaging,                                                                                 &
    891880        ONLY:  rho_ocean_av, sa_av
    892881
    893     USE control_parameters,                                                    &
     882    USE control_parameters,                                                                        &
    894883        ONLY:  average_count_3d
    895884
    896     USE indices,                                                               &
     885    USE indices,                                                                                   &
    897886        ONLY:  nxlg, nxrg, nyng, nysg, nzb, nzt
    898887
     
    905894    INTEGER(iwp) ::  j   !< loop index
    906895    INTEGER(iwp) ::  k   !< loop index
     896
    907897
    908898    IF ( mode == 'allocate' )  THEN
     
    936926                   DO  j = nysg, nyng
    937927                      DO  k = nzb, nzt+1
    938                          rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) +           &
    939                                                rho_ocean(k,j,i)
     928                         rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) + rho_ocean(k,j,i)
    940929                      ENDDO
    941930                   ENDDO
     
    964953
    965954          CASE ( 'rho_sea_water' )
    966              IF ( ALLOCATED( rho_ocean_av ) ) THEN
     955             IF ( ALLOCATED( rho_ocean_av ) )  THEN
    967956                DO  i = nxlg, nxrg
    968957                   DO  j = nysg, nyng
    969958                      DO  k = nzb, nzt+1
    970                          rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) /           &
     959                         rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) /                               &
    971960                                               REAL( average_count_3d, KIND=wp )
    972961                      ENDDO
     
    976965
    977966          CASE ( 'sa' )
    978              IF ( ALLOCATED( sa_av ) ) THEN
     967             IF ( ALLOCATED( sa_av ) )  THEN
    979968                DO  i = nxlg, nxrg
    980969                   DO  j = nysg, nyng
    981970                      DO  k = nzb, nzt+1
    982                          sa_av(k,j,i) = sa_av(k,j,i) /                         &
    983                                         REAL( average_count_3d, KIND=wp )
     971                         sa_av(k,j,i) = sa_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    984972                      ENDDO
    985973                   ENDDO
     
    994982
    995983
    996 !------------------------------------------------------------------------------!
     984!--------------------------------------------------------------------------------------------------!
    997985! Description:
    998986! ------------
    999987!> Define 2D output variables.
    1000 !------------------------------------------------------------------------------!
    1001  SUBROUTINE ocean_data_output_2d( av, variable, found, grid, mode, local_pf,   &
    1002                                   nzb_do, nzt_do )
    1003  
    1004     USE arrays_3d,                                                             &
     988!--------------------------------------------------------------------------------------------------!
     989 SUBROUTINE ocean_data_output_2d( av, variable, found, grid, mode, local_pf, nzb_do, nzt_do )
     990
     991    USE arrays_3d,                                                                                 &
    1005992        ONLY:  rho_ocean, sa
    1006993
    1007     USE averaging,                                                             &
     994    USE averaging,                                                                                 &
    1008995        ONLY:  rho_ocean_av, sa_av
    1009996
    1010     USE indices,                                                               &
    1011         ONLY: nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt,            &
    1012               wall_flags_total_0
     997    USE indices,                                                                                   &
     998        ONLY: nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt, wall_flags_total_0
    1013999
    10141000    IMPLICIT NONE
     
    10311017    REAL(wp) ::  fill_value = -999.0_wp  !< value for the _FillValue attribute
    10321018
    1033     REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do) ::  local_pf !< local
    1034        !< array to which output data is resorted to
     1019    REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do) ::  local_pf !< local array to which output data is resorted to
    10351020
    10361021    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< points to selected output variable
    1037    
     1022
     1023
    10381024    found = .TRUE.
    10391025    resorted = .FALSE.
     
    10481034             to_be_resorted => rho_ocean
    10491035          ELSE
    1050              IF ( .NOT. ALLOCATED( rho_ocean_av ) ) THEN
     1036             IF ( .NOT. ALLOCATED( rho_ocean_av ) )  THEN
    10511037                ALLOCATE( rho_ocean_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    10521038                rho_ocean_av = REAL( fill_value, KIND = wp )
     
    10591045             to_be_resorted => sa
    10601046          ELSE
    1061              IF ( .NOT. ALLOCATED( sa_av ) ) THEN
     1047             IF ( .NOT. ALLOCATED( sa_av ) )  THEN
    10621048                ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    10631049                sa_av = REAL( fill_value, KIND = wp )
     
    10771063          DO  j = nys, nyn
    10781064             DO  k = nzb_do, nzt_do
    1079                 local_pf(i,j,k) = MERGE( to_be_resorted(k,j,i),                &
    1080                                    REAL( fill_value, KIND = wp ),              &
    1081                                    BTEST( wall_flags_total_0(k,j,i), flag_nr ) )
     1065                local_pf(i,j,k) = MERGE( to_be_resorted(k,j,i), REAL( fill_value, KIND = wp ),     &
     1066                                         BTEST( wall_flags_total_0(k,j,i), flag_nr ) )
    10821067             ENDDO
    10831068          ENDDO
     
    10851070       resorted = .TRUE.
    10861071    ENDIF
    1087  
     1072
    10881073 END SUBROUTINE ocean_data_output_2d
    10891074
    1090  
    1091 !------------------------------------------------------------------------------!
     1075
     1076!--------------------------------------------------------------------------------------------------!
    10921077! Description:
    10931078! ------------
    10941079!> Define 3D output variables.
    1095 !------------------------------------------------------------------------------!
     1080!--------------------------------------------------------------------------------------------------!
    10961081 SUBROUTINE ocean_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1097  
    1098 
    1099     USE arrays_3d,                                                             &
     1082
     1083
     1084    USE arrays_3d,                                                                                 &
    11001085        ONLY:  rho_ocean, sa
    11011086
    1102     USE averaging,                                                             &
     1087    USE averaging,                                                                                 &
    11031088        ONLY:  rho_ocean_av, sa_av
    11041089
    1105     USE indices,                                                               &
    1106         ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt,           &
    1107                wall_flags_total_0
     1090    USE indices,                                                                                   &
     1091        ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt, wall_flags_total_0
    11081092
    11091093    IMPLICIT NONE
     
    11291113    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< points to selected output variable
    11301114
     1115
    11311116    found = .TRUE.
    11321117    resorted = .FALSE.
     
    11411126             to_be_resorted => rho_ocean
    11421127          ELSE
    1143              IF ( .NOT. ALLOCATED( rho_ocean_av ) ) THEN
     1128             IF ( .NOT. ALLOCATED( rho_ocean_av ) )  THEN
    11441129                ALLOCATE( rho_ocean_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    11451130                rho_ocean_av = REAL( fill_value, KIND = wp )
     
    11521137             to_be_resorted => sa
    11531138          ELSE
    1154              IF ( .NOT. ALLOCATED( sa_av ) ) THEN
     1139             IF ( .NOT. ALLOCATED( sa_av ) )  THEN
    11551140                ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    11561141                sa_av = REAL( fill_value, KIND = wp )
     
    11691154          DO  j = nys, nyn
    11701155             DO  k = nzb_do, nzt_do
    1171                 local_pf(i,j,k) = MERGE( to_be_resorted(k,j,i),                &
    1172                                    REAL( fill_value, KIND = wp ),              &
    1173                                    BTEST( wall_flags_total_0(k,j,i), flag_nr ) )
     1156                local_pf(i,j,k) = MERGE( to_be_resorted(k,j,i), REAL( fill_value, KIND = wp ),     &
     1157                                         BTEST( wall_flags_total_0(k,j,i), flag_nr ) )
    11741158             ENDDO
    11751159          ENDDO
     
    12061190
    12071191
    1208 !------------------------------------------------------------------------------!
     1192!--------------------------------------------------------------------------------------------------!
    12091193! Description:
    12101194! ------------
    12111195!> Header output for ocean parameters
    1212 !------------------------------------------------------------------------------!
     1196!--------------------------------------------------------------------------------------------------!
    12131197 SUBROUTINE ocean_header( io )
    12141198
    1215 
    12161199    IMPLICIT NONE
    12171200
    12181201    INTEGER(iwp), INTENT(IN) ::  io   !< Unit of the output file
     1202
    12191203
    12201204!
     
    12301214    ENDIF
    12311215
    1232 1   FORMAT (//' Ocean settings:'/                                              &
    1233               ' ------------------------------------------'/)
    1234 2   FORMAT ('    --> Craik-Leibovich vortex force and Stokes drift switched',  &
    1235                      ' on'/                                                    &
     12161   FORMAT (//' Ocean settings:'/' ------------------------------------------'/)
     12172   FORMAT ('    --> Craik-Leibovich vortex force and Stokes drift switched',' on'/                &
    12361218            '        waveheight: ',F4.1,' m   wavelength: ',F6.1,' m')
    1237 3   FORMAT ('    --> wave breaking generated turbulence switched on'/          &
    1238             '        alpha:    ',F4.1/                                         &
    1239             '        timescale:',F5.1,' s')
     12193   FORMAT ('    --> wave breaking generated turbulence switched on'/                              &
     1220            '        alpha:    ',F4.1/'        timescale:',F5.1,' s')
    124012214   FORMAT ('    --> prognostic salinity equation is switched off' )
    124112225   FORMAT ('    --> surface heat flux is switched off after ',F8.1,' s')
     
    12441225
    12451226
    1246 !------------------------------------------------------------------------------!
     1227!--------------------------------------------------------------------------------------------------!
    12471228! Description:
    12481229! ------------
    12491230!> Allocate arrays and assign pointers.
    1250 !------------------------------------------------------------------------------!
     1231!--------------------------------------------------------------------------------------------------!
    12511232 SUBROUTINE ocean_init_arrays
    12521233
    1253     USE indices,                                                               &
     1234    USE indices,                                                                                   &
    12541235        ONLY:  nxlg, nxrg, nyn, nyng, nys, nysg, nzb, nzt
    12551236
    12561237    IMPLICIT NONE
    12571238
    1258     ALLOCATE( prho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                           &
    1259               rho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                            &
    1260               sa_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                             &
     1239    ALLOCATE( prho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                                               &
     1240              rho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                                                &
     1241              sa_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                                                 &
    12611242              sa_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     1243
    12621244
    12631245    IF (  salinity )  THEN
     
    12821264
    12831265    prho => prho_1
    1284     rho_ocean  => rho_1  ! routines calc_mean_profile and diffusion_e require
    1285                          ! density to be a pointer
     1266    rho_ocean  => rho_1  ! routines calc_mean_profile and diffusion_e require density to be a pointer
    12861267
    12871268!
     
    12961277
    12971278
    1298 !------------------------------------------------------------------------------!
     1279!--------------------------------------------------------------------------------------------------!
    12991280! Description:
    13001281! ------------
    13011282!> Initialization of quantities needed for the ocean mode
    1302 !------------------------------------------------------------------------------!
     1283!--------------------------------------------------------------------------------------------------!
    13031284 SUBROUTINE ocean_init
    13041285
    13051286
    1306     USE arrays_3d,                                                             &
    1307         ONLY:  dzu, dzw, hyp, pt_init, ref_state, u_stokes_zu, u_stokes_zw,    &
    1308                v_stokes_zu, v_stokes_zw, zu, zw
    1309 
    1310     USE basic_constants_and_equations_mod,                                     &
     1287    USE arrays_3d,                                                                                 &
     1288        ONLY:  dzu, dzw, hyp, pt_init, ref_state, u_stokes_zu, u_stokes_zw, v_stokes_zu,           &
     1289               v_stokes_zw, zu, zw
     1290
     1291    USE basic_constants_and_equations_mod,                                                         &
    13111292        ONLY:  g
    13121293
    1313     USE basic_constants_and_equations_mod,                                     &
     1294    USE basic_constants_and_equations_mod,                                                         &
    13141295        ONLY:  pi
    13151296
    1316     USE control_parameters,                                                    &
    1317         ONLY:  initializing_actions, molecular_viscosity, rho_surface,         &
    1318                rho_reference, surface_pressure, top_momentumflux_u,            &
    1319                top_momentumflux_v, use_single_reference_value
    1320 
    1321     USE indices,                                                               &
     1297    USE control_parameters,                                                                        &
     1298        ONLY:  initializing_actions, molecular_viscosity, rho_surface, rho_reference,              &
     1299               surface_pressure, top_momentumflux_u, top_momentumflux_v, use_single_reference_value
     1300
     1301    USE indices,                                                                                   &
    13221302        ONLY:  nxl, nxlg, nxrg, nyng, nys, nysg, nzb, nzt
    13231303
    13241304    USE kinds
    13251305
    1326     USE pegrid,                                                                &
     1306    USE pegrid,                                                                                    &
    13271307        ONLY:  myid
    13281308
    1329     USE statistics,                                                            &
     1309    USE statistics,                                                                                &
    13301310        ONLY:  hom, statistic_regions
    13311311
     
    13371317    INTEGER(iwp) ::  n  !< loop index
    13381318
    1339     REAL(wp) ::  alpha !< angle of surface stress
    1340     REAL(wp) ::  dum   !< dummy argument
    1341     REAL(wp) ::  pt_l  !< local scalar for pt used in equation of state function
    1342     REAL(wp) ::  sa_l  !< local scalar for sa used in equation of state function
     1319    REAL(wp) ::  alpha               !< angle of surface stress
     1320    REAL(wp) ::  dum                 !< dummy argument
     1321    REAL(wp) ::  pt_l                !< local scalar for pt used in equation of state function
     1322    REAL(wp) ::  sa_l                !< local scalar for sa used in equation of state function
    13431323    REAL(wp) ::  velocity_amplitude  !< local scalar for amplitude of Stokes drift velocity
    1344     REAL(wp) ::  x     !< temporary variable to store surface stress along x
    1345     REAL(wp) ::  y     !< temporary variable to store surface stress along y
     1324    REAL(wp) ::  x                   !< temporary variable to store surface stress along x
     1325    REAL(wp) ::  y                   !< temporary variable to store surface stress along y
    13461326
    13471327    REAL(wp), DIMENSION(nzb:nzt+1) ::  rho_ocean_init  !< local array for initial density
     
    13511331
    13521332!
    1353 !-- In case of no restart run, calculate the inital salinity profilevcusing the
    1354 !-- given salinity gradients
     1333!-- In case of no restart run, calculate the inital salinity profile using the given salinity
     1334!-- gradients.
    13551335    IF ( TRIM( initializing_actions ) /= 'read_restart_data' )  THEN
    13561336
    13571337       sa_init = sa_surface
    13581338!
    1359 !--    Last arguments gives back the gradient at top level to be used as
    1360 !--    possible Neumann boundary condition. This is not realized for the ocean
    1361 !--    mode, therefore a dummy argument is used.
     1339!--    Last arguments gives back the gradient at top level to be used as possible Neumann boundary
     1340!--    condition. This is not realized for the ocean mode, therefore a dummy argument is used.
    13621341       IF ( salinity )  THEN
    1363           CALL init_vertical_profiles( sa_vertical_gradient_level_ind,          &
    1364                                        sa_vertical_gradient_level,              &
    1365                                        sa_vertical_gradient, sa_init,           &
     1342          CALL init_vertical_profiles( sa_vertical_gradient_level_ind,                             &
     1343                                       sa_vertical_gradient_level,                                 &
     1344                                       sa_vertical_gradient, sa_init,                              &
    13661345                                       sa_surface, dum )
    13671346       ENDIF
     
    13701349!
    13711350!-- Initialize required 3d-arrays
    1372     IF ( TRIM( initializing_actions ) /= 'read_restart_data'  .AND.            &
     1351    IF ( TRIM( initializing_actions ) /= 'read_restart_data'  .AND.                                &
    13731352         TRIM( initializing_actions ) /= 'cyclic_fill' )  THEN
    13741353!
     
    13951374
    13961375!
    1397 !--    Initialize new time levels (only done in order to set boundary values
    1398 !--    including ghost points)
     1376!--    Initialize new time levels (only done in order to set boundary values including ghost points)
    13991377       sa_p = sa
    14001378!
    1401 !--    Allthough tendency arrays are set in prognostic_equations, they have
    1402 !--    have to be predefined here because they are used (but multiplied with 0)
    1403 !--    there before they are set.
     1379!--    Allthough tendency arrays are set in prognostic_equations, they have to be predefined here
     1380!--    because they are used (but multiplied with 0) there before they are set.
    14041381       tsa_m = 0.0_wp
    14051382
     
    14161393
    14171394!
    1418 !-- Change sign of buoyancy/stability terms because density gradient is used
    1419 !-- instead of the potential temperature gradient to calculate the buoyancy
     1395!-- Change sign of buoyancy/stability terms because density gradient is used instead of the
     1396!-- potential temperature gradient to calculate the buoyancy.
    14201397    atmos_ocean_sign = -1.0_wp
    14211398
    14221399!
    1423 !-- Calculate initial vertical profile of hydrostatic pressure (in Pa)
    1424 !-- and the reference density (used later in buoyancy term)
    1425 !-- First step: Calculate pressure using reference density
     1400!-- Calculate initial vertical profile of hydrostatic pressure (in Pa) and the reference density
     1401!-- (used later in buoyancy term).
     1402!-- First step: Calculate pressure using reference density.
    14261403    hyp(nzt+1) = surface_pressure * 100.0_wp
    14271404    hyp(nzt)   = hyp(nzt+1) + rho_surface * g * 0.5_wp * dzu(nzt+1)
     
    14351412
    14361413!
    1437 !-- Second step: Iteratively calculate in situ density (based on presssure)
    1438 !-- and pressure (based on in situ density)
     1414!-- Second step: Iteratively calculate in situ density (based on presssure) and pressure
     1415!-- (based on in situ density)
    14391416    DO  n = 1, 5
    14401417
     
    14561433       hyp(nzt) = hyp(nzt+1) + rho_surface * g * 0.5_wp * dzu(nzt+1)
    14571434       DO  k = nzt-1, 0, -1
    1458           hyp(k) = hyp(k+1) + g * 0.5_wp * ( rho_ocean_init(k)                 &
    1459                                            + rho_ocean_init(k+1) ) * dzu(k+1)
     1435          hyp(k) = hyp(k+1) + g * 0.5_wp * ( rho_ocean_init(k) + rho_ocean_init(k+1) ) * dzu(k+1)
    14601436       ENDDO
    14611437
     
    14701446       pt_l = 0.5_wp * ( pt_init(k) + pt_init(k+1) )
    14711447
    1472        prho_reference = prho_reference + dzu(k+1) * &
    1473                         eqn_state_seawater_func( 0.0_wp, pt_l, sa_l )
     1448       prho_reference = prho_reference + dzu(k+1) * eqn_state_seawater_func( 0.0_wp, pt_l, sa_l )
    14741449
    14751450    ENDDO
     
    14781453
    14791454!
    1480 !-- Calculate the 3d array of initial in situ and potential density,
    1481 !-- based on the initial temperature and salinity profile
     1455!-- Calculate the 3d array of initial in situ and potential density, based on the initial
     1456!-- temperature and salinity profile.
    14821457    CALL eqn_state_seawater
    14831458
     
    15201495       ENDIF
    15211496
    1522        velocity_amplitude = ( pi * stokes_waveheight / stokes_wavelength )**2 *&
     1497       velocity_amplitude = ( pi * stokes_waveheight / stokes_wavelength )**2 *                    &
    15231498                            SQRT( g * stokes_wavelength / ( 2.0_wp * pi ) )
    15241499
    15251500       DO  k = nzb, nzt
    1526           u_stokes_zu(k) = velocity_amplitude * COS( alpha ) *                 &
     1501          u_stokes_zu(k) = velocity_amplitude * COS( alpha ) *                                     &
    15271502                           EXP( 4.0_wp * pi * zu(k) / stokes_wavelength )
    1528           u_stokes_zw(k) = velocity_amplitude * COS( alpha ) *                 &
     1503          u_stokes_zw(k) = velocity_amplitude * COS( alpha ) *                                     &
    15291504                           EXP( 4.0_wp * pi * zw(k) / stokes_wavelength )
    1530           v_stokes_zu(k) = velocity_amplitude * SIN( alpha ) *                 &
     1505          v_stokes_zu(k) = velocity_amplitude * SIN( alpha ) *                                     &
    15311506                           EXP( 4.0_wp * pi * zu(k) / stokes_wavelength )
    15321507          v_stokes_zw(k) = velocity_amplitude * SIN( alpha ) *                 &
     
    15451520!
    15461521!--    Calculate friction velocity at ocean surface
    1547        u_star_wave_breaking = SQRT( SQRT( top_momentumflux_u**2 +              &
    1548                                           top_momentumflux_v**2 ) )
    1549 !
    1550 !--    Set the time scale of random forcing. The vertical grid spacing at the
    1551 !--    ocean surface is assumed as the length scale of turbulence.
     1522       u_star_wave_breaking = SQRT( SQRT( top_momentumflux_u**2 + top_momentumflux_v**2 ) )
     1523!
     1524!--    Set the time scale of random forcing. The vertical grid spacing at the ocean surface is
     1525!--    assumed as the length scale of turbulence.
    15521526!--    Formula follows Noh et al. (2004), JPO
    1553        timescale_wave_breaking = 0.1_wp * dzw(nzt) / alpha_wave_breaking /     &
    1554                                  u_star_wave_breaking
    1555 !
    1556 !--    Set random number seeds differently on the processor cores in order to
    1557 !--    create different random number sequences
     1527       timescale_wave_breaking = 0.1_wp * dzw(nzt) / alpha_wave_breaking / u_star_wave_breaking
     1528!
     1529!--    Set random number seeds differently on the processor cores in order to create different
     1530!--    random number sequences
    15581531       iran_ocean = iran_ocean + myid
    15591532    ENDIF
     
    15621535
    15631536
    1564 !------------------------------------------------------------------------------!
     1537!--------------------------------------------------------------------------------------------------!
    15651538! Description:
    15661539! ------------
    15671540!> Call for all grid points
    1568 !------------------------------------------------------------------------------!
     1541!--------------------------------------------------------------------------------------------------!
    15691542 SUBROUTINE ocean_actions( location )
    15701543
     
    15881561
    15891562
    1590 !------------------------------------------------------------------------------!
     1563!--------------------------------------------------------------------------------------------------!
    15911564! Description:
    15921565! ------------
    15931566!> Call for grid points i,j
    1594 !------------------------------------------------------------------------------!
     1567!--------------------------------------------------------------------------------------------------!
    15951568 SUBROUTINE ocean_actions_ij( i, j, location )
    15961569
    1597 
    1598     INTEGER(iwp),      INTENT(IN) ::  i         !< grid index in x-direction
    1599     INTEGER(iwp),      INTENT(IN) ::  j         !< grid index in y-direction
    16001570    CHARACTER (LEN=*), INTENT(IN) ::  location  !< call location string
    1601     INTEGER(iwp)  ::  dummy  !< call location string
     1571
     1572    INTEGER(iwp)             ::  dummy     !< call location string
     1573    INTEGER(iwp), INTENT(IN) ::  i         !< grid index in x-direction
     1574    INTEGER(iwp), INTENT(IN) ::  j         !< grid index in y-direction
     1575
    16021576
    16031577    IF ( ocean_mode )   dummy = i + j
     
    16191593
    16201594
    1621 !------------------------------------------------------------------------------!
     1595!--------------------------------------------------------------------------------------------------!
    16221596! Description:
    16231597! ------------
    16241598!> Prognostic equation for salinity.
    16251599!> Vector-optimized version
    1626 !------------------------------------------------------------------------------!
     1600!--------------------------------------------------------------------------------------------------!
    16271601 SUBROUTINE ocean_prognostic_equations
    16281602
    1629     USE advec_s_bc_mod,                                                        &
     1603    USE advec_s_bc_mod,                                                                            &
    16301604        ONLY:  advec_s_bc
    16311605
    1632     USE advec_s_pw_mod,                                                        &
     1606    USE advec_s_pw_mod,                                                                            &
    16331607        ONLY:  advec_s_pw
    16341608
    1635     USE advec_s_up_mod,                                                        &
     1609    USE advec_s_up_mod,                                                                            &
    16361610        ONLY:  advec_s_up
    16371611
    1638     USE advec_ws,                                                              &
     1612    USE advec_ws,                                                                                  &
    16391613        ONLY:  advec_s_ws
    16401614
    1641     USE arrays_3d,                                                             &
     1615    USE arrays_3d,                                                                                 &
    16421616        ONLY:  rdf_sc, tend, tsa_m
    16431617
    1644     USE control_parameters,                                                    &
    1645         ONLY:  bc_dirichlet_l,                                                 &
    1646                bc_dirichlet_n,                                                 &
    1647                bc_dirichlet_r,                                                 &
    1648                bc_dirichlet_s,                                                 &
    1649                bc_radiation_l,                                                 &
    1650                bc_radiation_n,                                                 &
    1651                bc_radiation_r,                                                 &
    1652                bc_radiation_s,                                                 &
    1653                dt_3d, intermediate_timestep_count,                             &
    1654                intermediate_timestep_count_max, scalar_advec, simulated_time,  &
    1655                timestep_scheme, tsc, ws_scheme_sca
    1656 
    1657     USE cpulog,                                                                &
     1618    USE control_parameters,                                                                        &
     1619        ONLY:  bc_dirichlet_l,                                                                     &
     1620               bc_dirichlet_n,                                                                     &
     1621               bc_dirichlet_r,                                                                     &
     1622               bc_dirichlet_s,                                                                     &
     1623               bc_radiation_l,                                                                     &
     1624               bc_radiation_n,                                                                     &
     1625               bc_radiation_r,                                                                     &
     1626               bc_radiation_s,                                                                     &
     1627               dt_3d,                                                                              &
     1628               intermediate_timestep_count,                                                        &
     1629               intermediate_timestep_count_max,                                                    &
     1630               scalar_advec,                                                                       &
     1631               simulated_time,                                                                     &
     1632               timestep_scheme,                                                                    &
     1633               tsc,                                                                                &
     1634               ws_scheme_sca
     1635
     1636    USE cpulog,                                                                                    &
    16581637        ONLY:  cpu_log, log_point_s
    16591638
    1660     USE diffusion_s_mod,                                                       &
     1639    USE diffusion_s_mod,                                                                           &
    16611640        ONLY:  diffusion_s
    16621641
     
    16691648    REAL(wp)     ::  sbt     !< weighting factor for sub-time step
    16701649
     1650
    16711651!
    16721652!-- Switch of the surface heat flux, if requested
    16731653    IF ( surface_cooling_spinup_time /= 999999.9_wp )  THEN
    1674        IF ( .NOT. surface_cooling_switched_off  .AND.                          &
     1654       IF ( .NOT. surface_cooling_switched_off  .AND.                                              &
    16751655            simulated_time >= surface_cooling_spinup_time )  THEN
    16761656
     
    16821662
    16831663!
    1684 !-- Compute prognostic equations for the ocean mode
    1685 !-- First, start with salinity
     1664!-- Compute prognostic equations for the ocean mode.
     1665!-- First, start with salinity.
    16861666    IF ( salinity )  THEN
    16871667
     
    17091689          IF ( timestep_scheme(1:5) == 'runge' )  THEN
    17101690             IF ( ws_scheme_sca )  THEN
    1711                 CALL advec_s_ws( advc_flags_s, sa, 'sa',                       &
    1712                                  bc_dirichlet_l  .OR.  bc_radiation_l,         &
    1713                                  bc_dirichlet_n  .OR.  bc_radiation_n,         &
    1714                                  bc_dirichlet_r  .OR.  bc_radiation_r,         &
     1691                CALL advec_s_ws( advc_flags_s, sa, 'sa',                                           &
     1692                                 bc_dirichlet_l  .OR.  bc_radiation_l,                             &
     1693                                 bc_dirichlet_n  .OR.  bc_radiation_n,                             &
     1694                                 bc_dirichlet_r  .OR.  bc_radiation_r,                             &
    17151695                                 bc_dirichlet_s  .OR.  bc_radiation_s )
    17161696             ELSE
     
    17221702       ENDIF
    17231703
    1724        CALL diffusion_s( sa,                                                   &
    1725                          surf_def_h(0)%sasws, surf_def_h(1)%sasws,             &
    1726                          surf_def_h(2)%sasws,                                  &
    1727                          surf_lsm_h(0)%sasws, surf_lsm_h(1)%sasws,             &
    1728                          surf_usm_h(0)%sasws, surf_usm_h(1)%sasws,             &
    1729                          surf_def_v(0)%sasws, surf_def_v(1)%sasws,             &
    1730                          surf_def_v(2)%sasws, surf_def_v(3)%sasws,             &
    1731                          surf_lsm_v(0)%sasws, surf_lsm_v(1)%sasws,             &
    1732                          surf_lsm_v(2)%sasws, surf_lsm_v(3)%sasws,             &
    1733                          surf_usm_v(0)%sasws, surf_usm_v(1)%sasws,             &
     1704       CALL diffusion_s( sa,                                                                       &
     1705                         surf_def_h(0)%sasws, surf_def_h(1)%sasws,                                 &
     1706                         surf_def_h(2)%sasws,                                                      &
     1707                         surf_lsm_h(0)%sasws, surf_lsm_h(1)%sasws,                                 &
     1708                         surf_usm_h(0)%sasws, surf_usm_h(1)%sasws,                                 &
     1709                         surf_def_v(0)%sasws, surf_def_v(1)%sasws,                                 &
     1710                         surf_def_v(2)%sasws, surf_def_v(3)%sasws,                                 &
     1711                         surf_lsm_v(0)%sasws, surf_lsm_v(1)%sasws,                                 &
     1712                         surf_lsm_v(2)%sasws, surf_lsm_v(3)%sasws,                                 &
     1713                         surf_usm_v(0)%sasws, surf_usm_v(1)%sasws,                                 &
    17341714                         surf_usm_v(2)%sasws, surf_usm_v(3)%sasws )
    17351715
     
    17431723             !DIR$ IVDEP
    17441724             DO  k = nzb+1, nzt
    1745                 sa_p(k,j,i) = sa(k,j,i) + ( dt_3d * ( sbt * tend(k,j,i) +            &
    1746                                                       tsc(3) * tsa_m(k,j,i) )        &
    1747                                                   - tsc(5) * rdf_sc(k) *             &
    1748                                                     ( sa(k,j,i) - sa_init(k) )       &
    1749                                           )                                          &
    1750                                             * MERGE( 1.0_wp, 0.0_wp,                 &
    1751                                                BTEST( wall_flags_total_0(k,j,i), 0 ) &
     1725                sa_p(k,j,i) = sa(k,j,i) + ( dt_3d * ( sbt * tend(k,j,i) + tsc(3) * tsa_m(k,j,i) )  &
     1726                                            - tsc(5) * rdf_sc(k) * ( sa(k,j,i) - sa_init(k) )      &
     1727                                          )                                                        &
     1728                                            * MERGE( 1.0_wp, 0.0_wp,                               &
     1729                                                     BTEST( wall_flags_total_0(k,j,i), 0 )         &
    17521730                                                   )
    17531731                IF ( sa_p(k,j,i) < 0.0_wp )  sa_p(k,j,i) = 0.1_wp * sa(k,j,i)
     
    17671745                ENDDO
    17681746             ENDDO
    1769           ELSEIF ( intermediate_timestep_count < intermediate_timestep_count_max ) &
    1770           THEN
     1747          ELSEIF ( intermediate_timestep_count < intermediate_timestep_count_max )  THEN
    17711748             DO  i = nxl, nxr
    17721749                DO  j = nys, nyn
    17731750                   DO  k = nzb+1, nzt
    1774                       tsa_m(k,j,i) =   -9.5625_wp * tend(k,j,i) +              &
    1775                                         5.3125_wp * tsa_m(k,j,i)
     1751                      tsa_m(k,j,i) =   -9.5625_wp * tend(k,j,i) + 5.3125_wp * tsa_m(k,j,i)
    17761752                   ENDDO
    17771753                ENDDO
     
    17931769
    17941770
    1795 !------------------------------------------------------------------------------!
     1771!--------------------------------------------------------------------------------------------------!
    17961772! Description:
    17971773! ------------
    17981774!> Prognostic equations for ocean mode (so far, salinity only)
    17991775!> Cache-optimized version
    1800 !------------------------------------------------------------------------------!
     1776!--------------------------------------------------------------------------------------------------!
    18011777 SUBROUTINE ocean_prognostic_equations_ij( i, j, i_omp_start, tn )
    18021778
    1803     USE advec_s_pw_mod,                                                        &
     1779    USE advec_s_pw_mod,                                                                            &
    18041780        ONLY:  advec_s_pw
    18051781
    1806     USE advec_s_up_mod,                                                        &
     1782    USE advec_s_up_mod,                                                                            &
    18071783        ONLY:  advec_s_up
    18081784
    1809     USE advec_ws,                                                              &
     1785    USE advec_ws,                                                                                  &
    18101786        ONLY:  advec_s_ws
    18111787
    1812     USE arrays_3d,                                                             &
     1788    USE arrays_3d,                                                                                 &
    18131789        ONLY:  diss_l_sa, diss_s_sa, flux_l_sa, flux_s_sa, rdf_sc, tend, tsa_m
    18141790
    1815     USE control_parameters,                                                    &
    1816         ONLY:  bc_dirichlet_l,                                                 &
    1817                bc_dirichlet_n,                                                 &
    1818                bc_dirichlet_r,                                                 &
    1819                bc_dirichlet_s,                                                 &
    1820                bc_radiation_l,                                                 &
    1821                bc_radiation_n,                                                 &
    1822                bc_radiation_r,                                                 &
    1823                bc_radiation_s,                                                 &
    1824                dt_3d, intermediate_timestep_count,                             &
    1825                intermediate_timestep_count_max, simulated_time,                &
    1826                timestep_scheme, tsc, ws_scheme_sca
    1827 
    1828     USE diffusion_s_mod,                                                       &
     1791    USE control_parameters,                                                                        &
     1792        ONLY:  bc_dirichlet_l,                                                                     &
     1793               bc_dirichlet_n,                                                                     &
     1794               bc_dirichlet_r,                                                                     &
     1795               bc_dirichlet_s,                                                                     &
     1796               bc_radiation_l,                                                                     &
     1797               bc_radiation_n,                                                                     &
     1798               bc_radiation_r,                                                                     &
     1799               bc_radiation_s,                                                                     &
     1800               dt_3d,                                                                              &
     1801               intermediate_timestep_count,                                                        &
     1802               intermediate_timestep_count_max,                                                    &
     1803               simulated_time,                                                                     &
     1804               timestep_scheme,                                                                    &
     1805               tsc,                                                                                &
     1806               ws_scheme_sca
     1807
     1808    USE diffusion_s_mod,                                                                           &
    18291809        ONLY:  diffusion_s
    18301810
     
    18321812
    18331813    INTEGER(iwp) ::  i             !< loop index x direction
    1834     INTEGER(iwp) ::  i_omp_start   !< first loop index of i-loop in calling    &
    1835                                    !< routine prognostic_equations
     1814    INTEGER(iwp) ::  i_omp_start   !< first loop index of i-loop in calling routine prognostic_equations
    18361815    INTEGER(iwp) ::  j             !< loop index y direction
    18371816    INTEGER(iwp) ::  k             !< loop index z direction
     
    18421821!-- Switch of the surface heat flux, if requested
    18431822    IF ( surface_cooling_spinup_time /= 999999.9_wp )  THEN
    1844        IF ( .NOT. surface_cooling_switched_off  .AND.                          &
     1823       IF ( .NOT. surface_cooling_switched_off  .AND.                                              &
    18451824            simulated_time >= surface_cooling_spinup_time )  THEN
    18461825
     
    18521831
    18531832!
    1854 !-- Compute prognostic equations for the ocean mode
    1855 !-- First, start with tendency-terms for salinity
     1833!-- Compute prognostic equations for the ocean mode.
     1834!-- First, start with tendency-terms for salinity.
    18561835    IF ( salinity )  THEN
    18571836
    18581837       tend(:,j,i) = 0.0_wp
    1859        IF ( timestep_scheme(1:5) == 'runge' ) &
    1860        THEN
     1838       IF ( timestep_scheme(1:5) == 'runge' )  THEN
    18611839          IF ( ws_scheme_sca )  THEN
    1862              CALL advec_s_ws( advc_flags_s,                                    &
    1863                               i, j, sa, 'sa', flux_s_sa,  diss_s_sa, flux_l_sa,&
    1864                               diss_l_sa, i_omp_start, tn,                      &
    1865                               bc_dirichlet_l  .OR.  bc_radiation_l,            &
    1866                               bc_dirichlet_n  .OR.  bc_radiation_n,            &
    1867                               bc_dirichlet_r  .OR.  bc_radiation_r,            &
     1840             CALL advec_s_ws( advc_flags_s,                                                        &
     1841                              i, j, sa, 'sa', flux_s_sa,  diss_s_sa, flux_l_sa, diss_l_sa,         &
     1842                              i_omp_start, tn,                                                     &
     1843                              bc_dirichlet_l  .OR.  bc_radiation_l,                                &
     1844                              bc_dirichlet_n  .OR.  bc_radiation_n,                                &
     1845                              bc_dirichlet_r  .OR.  bc_radiation_r,                                &
    18681846                              bc_dirichlet_s  .OR.  bc_radiation_s )
    18691847          ELSE
     
    18731851          CALL advec_s_up( i, j, sa )
    18741852       ENDIF
    1875        CALL diffusion_s( i, j, sa,                                             &
    1876                          surf_def_h(0)%sasws, surf_def_h(1)%sasws,             &
    1877                          surf_def_h(2)%sasws,                                  &
    1878                          surf_lsm_h(0)%sasws, surf_lsm_h(1)%sasws,             &
    1879                          surf_usm_h(0)%sasws, surf_usm_h(1)%sasws,             &
    1880                          surf_def_v(0)%sasws, surf_def_v(1)%sasws,             &
    1881                          surf_def_v(2)%sasws, surf_def_v(3)%sasws,             &
    1882                          surf_lsm_v(0)%sasws, surf_lsm_v(1)%sasws,             &
    1883                          surf_lsm_v(2)%sasws, surf_lsm_v(3)%sasws,             &
    1884                          surf_usm_v(0)%sasws, surf_usm_v(1)%sasws,             &
    1885                          surf_usm_v(2)%sasws, surf_usm_v(3)%sasws )
     1853       CALL diffusion_s( i, j, sa,                                                                 &
     1854                         surf_def_h(0)%sasws, surf_def_h(1)%sasws, surf_def_h(2)%sasws,            &
     1855                         surf_lsm_h(0)%sasws, surf_lsm_h(1)%sasws,                                 &
     1856                         surf_usm_h(0)%sasws, surf_usm_h(1)%sasws,                                 &
     1857                         surf_def_v(0)%sasws, surf_def_v(1)%sasws, surf_def_v(2)%sasws,            &
     1858                         surf_def_v(3)%sasws,             &
     1859                         surf_lsm_v(0)%sasws, surf_lsm_v(1)%sasws, surf_lsm_v(2)%sasws,            &
     1860                         surf_lsm_v(3)%sasws,             &
     1861                         surf_usm_v(0)%sasws, surf_usm_v(1)%sasws, surf_usm_v(2)%sasws,            &
     1862                         surf_usm_v(3)%sasws )
    18861863
    18871864!       CALL user_actions( i, j, 'sa-tendency' ) ToDo: find general solution for dependency between modules
     
    18911868       DO  k = nzb+1, nzt
    18921869
    1893           sa_p(k,j,i) = sa(k,j,i) + ( dt_3d *                                  &
    1894                                               ( tsc(2) * tend(k,j,i) +         &
    1895                                                 tsc(3) * tsa_m(k,j,i) )        &
    1896                                     - tsc(5) * rdf_sc(k)                       &
    1897                                              * ( sa(k,j,i) - sa_init(k) )      &
    1898                                     ) * MERGE( 1.0_wp, 0.0_wp,                 &
    1899                                          BTEST( wall_flags_total_0(k,j,i), 0 ) )
     1870          sa_p(k,j,i) = sa(k,j,i) + ( dt_3d * ( tsc(2) * tend(k,j,i) + tsc(3) * tsa_m(k,j,i) )     &
     1871                                    - tsc(5) * rdf_sc(k) * ( sa(k,j,i) - sa_init(k) )              &
     1872                                    ) * MERGE( 1.0_wp, 0.0_wp,                                     &
     1873                                               BTEST( wall_flags_total_0(k,j,i), 0 )               &
     1874                                             )
    19001875
    19011876          IF ( sa_p(k,j,i) < 0.0_wp )  sa_p(k,j,i) = 0.1_wp * sa(k,j,i)
     
    19101885                tsa_m(k,j,i) = tend(k,j,i)
    19111886             ENDDO
    1912           ELSEIF ( intermediate_timestep_count < intermediate_timestep_count_max ) &
    1913           THEN
     1887          ELSEIF ( intermediate_timestep_count < intermediate_timestep_count_max )  THEN
    19141888             DO  k = nzb+1, nzt
    1915                 tsa_m(k,j,i) =   -9.5625_wp * tend(k,j,i) +                    &
    1916                                   5.3125_wp * tsa_m(k,j,i)
     1889                tsa_m(k,j,i) =   -9.5625_wp * tend(k,j,i) + 5.3125_wp * tsa_m(k,j,i)
    19171890             ENDDO
    19181891          ENDIF
     
    19271900 END SUBROUTINE ocean_prognostic_equations_ij
    19281901
    1929 !------------------------------------------------------------------------------!
     1902!--------------------------------------------------------------------------------------------------!
    19301903! Description:
    19311904! ------------
    19321905!> Boundary conditions for ocean model
    1933 !------------------------------------------------------------------------------!
     1906!--------------------------------------------------------------------------------------------------!
    19341907 SUBROUTINE ocean_boundary_conditions
    19351908
     
    19431916
    19441917!
    1945 !--    Boundary conditions for salinity
    1946 !--    Bottom boundary: Neumann condition because salinity flux is always
    1947 !--    given.
     1918!--    Boundary conditions for salinity.
     1919!--    Bottom boundary: Neumann condition because salinity flux is always given.
    19481920       DO  l = 0, 1
    19491921          !$OMP PARALLEL DO PRIVATE( i, j, k )
     
    19651937 END SUBROUTINE ocean_boundary_conditions
    19661938
    1967 !------------------------------------------------------------------------------!
     1939!--------------------------------------------------------------------------------------------------!
    19681940! Description:
    19691941! ------------
    19701942!> Swapping of timelevels.
    1971 !------------------------------------------------------------------------------!
     1943!--------------------------------------------------------------------------------------------------!
    19721944 SUBROUTINE ocean_swap_timelevel( mod_count )
    19731945
     
    19941966
    19951967
    1996 !------------------------------------------------------------------------------!
     1968!--------------------------------------------------------------------------------------------------!
    19971969! Description:
    19981970! ------------
    19991971!> Read module-specific global restart data (Fortran binary format).
    2000 !------------------------------------------------------------------------------!
     1972!--------------------------------------------------------------------------------------------------!
    20011973 SUBROUTINE ocean_rrd_global_ftn( found )
    20021974
    20031975
    2004     USE control_parameters,                                                    &
     1976    USE control_parameters,                                                                        &
    20051977        ONLY: length, restart_string
    20061978
     
    20632035
    20642036
    2065 !------------------------------------------------------------------------------!
     2037!--------------------------------------------------------------------------------------------------!
    20662038! Description:
    20672039! ------------
    20682040!> Read module-specific global restart data (MPI-IO).
    2069 !------------------------------------------------------------------------------!
     2041!--------------------------------------------------------------------------------------------------!
    20702042 SUBROUTINE ocean_rrd_global_mpi
    20712043
     
    20882060
    20892061
    2090 !------------------------------------------------------------------------------!
     2062!--------------------------------------------------------------------------------------------------!
    20912063! Description:
    20922064! ------------
    20932065!> Read module-specific local restart data arrays (Fortran binary format).
    2094 !------------------------------------------------------------------------------!
    2095  SUBROUTINE ocean_rrd_local_ftn( k, nxlf, nxlc, nxl_on_file, nxrf, nxrc,           &
    2096                                  nxr_on_file, nynf, nync, nyn_on_file, nysf,       &
    2097                                  nysc, nys_on_file, tmp_3d, found )
    2098 
    2099     USE averaging,                                                             &
     2066!--------------------------------------------------------------------------------------------------!
     2067 SUBROUTINE ocean_rrd_local_ftn( k, nxlf, nxlc, nxl_on_file, nxrf, nxrc, nxr_on_file, nynf, nync,  &
     2068                                 nyn_on_file, nysf, nysc, nys_on_file, tmp_3d, found )
     2069
     2070    USE averaging,                                                                                 &
    21002071        ONLY:  rho_ocean_av, sa_av
    21012072
    2102     USE control_parameters,                                                    &
     2073    USE control_parameters,                                                                        &
    21032074        ONLY:  length, restart_string
    21042075
    2105     USE indices,                                                               &
     2076    USE indices,                                                                                   &
    21062077        ONLY:  nbgp, nxlg, nxrg, nyng, nysg, nzb, nzt
    21072078
     
    21272098    LOGICAL, INTENT(OUT)  ::  found
    21282099
    2129     REAL(wp), DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp) :: tmp_3d   !<
     2100    REAL(wp),                                                                                      &
     2101       DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp)    &
     2102       :: tmp_3d   !<
    21302103
    21312104
     
    21392112          ENDIF
    21402113          IF ( k == 1 )  READ ( 13 )  tmp_3d
    2141           rho_ocean_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =            &
    2142                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
     2114          rho_ocean_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                                &
     2115                                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    21432116
    21442117       CASE ( 'sa' )
    21452118          IF ( k == 1 )  READ ( 13 )  tmp_3d
    2146           sa(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                      &
    2147                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
     2119          sa(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                                          &
     2120                                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    21482121
    21492122       CASE ( 'sa_av' )
     
    21522125          ENDIF
    21532126          IF ( k == 1 )  READ ( 13 )  tmp_3d
    2154           sa_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                   &
    2155                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
     2127          sa_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =                                       &
     2128                                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    21562129
    21572130       CASE DEFAULT
     
    21632136
    21642137
    2165 !------------------------------------------------------------------------------!
     2138!--------------------------------------------------------------------------------------------------!
    21662139! Description:
    21672140! ------------
    21682141!> Read module-specific local restart data arrays (MPI-IO).
    2169 !------------------------------------------------------------------------------!
     2142!--------------------------------------------------------------------------------------------------!
    21702143 SUBROUTINE ocean_rrd_local_mpi
    21712144
    2172     USE averaging,                                                             &
     2145    USE averaging,                                                                                 &
    21732146        ONLY:  rho_ocean_av, sa_av
    21742147
    2175     USE indices,                                                               &
     2148    USE indices,                                                                                   &
    21762149        ONLY:  nxlg, nxrg, nyng, nysg, nzb, nzt
    21772150
     
    21832156    CALL rd_mpi_io_check_array( 'rho_ocean_av' , found = array_found )
    21842157    IF ( array_found )  THEN
    2185        IF ( .NOT. ALLOCATED( rho_ocean_av ) )  ALLOCATE( rho_ocean_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     2158       IF ( .NOT. ALLOCATED( rho_ocean_av ) )                                                      &
     2159          ALLOCATE( rho_ocean_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    21862160       CALL rrd_mpi_io( 'rho_ocean_av', rho_ocean_av )
    21872161    ENDIF
     
    21982172
    21992173
    2200 !------------------------------------------------------------------------------!
     2174!--------------------------------------------------------------------------------------------------!
    22012175! Description:
    22022176! ------------
    22032177!> This routine writes the respective restart data for the ocean module.
    2204 !------------------------------------------------------------------------------!
     2178!--------------------------------------------------------------------------------------------------!
    22052179 SUBROUTINE ocean_wrd_global
    22062180
     
    22582232       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient', sa_vertical_gradient )
    22592233       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient_level', sa_vertical_gradient_level )
    2260        CALL wrd_mpi_io_global_array( 'sa_vertical_gradient_level_ind', sa_vertical_gradient_level_ind )
     2234       CALL wrd_mpi_io_global_array( 'sa_vertical_gradient_level_ind',                             &
     2235                                     sa_vertical_gradient_level_ind )
    22612236       CALL wrd_mpi_io( 'stokes_waveheight', stokes_waveheight )
    22622237       CALL wrd_mpi_io( 'stokes_wavelength', stokes_wavelength )
     
    22712246
    22722247
    2273 !------------------------------------------------------------------------------!
     2248!--------------------------------------------------------------------------------------------------!
    22742249! Description:
    22752250! ------------
    22762251!> This routine writes the respective restart data for the ocean module.
    2277 !------------------------------------------------------------------------------!
     2252!--------------------------------------------------------------------------------------------------!
    22782253 SUBROUTINE ocean_wrd_local
    22792254
    2280     USE averaging,                                                             &
     2255    USE averaging,                                                                                 &
    22812256        ONLY:  rho_ocean_av, sa_av
    22822257
     
    23102285
    23112286
    2312 !------------------------------------------------------------------------------!
    2313 ! Description:
    2314 ! ------------
    2315 !> This routine calculates the Craik Leibovich vortex force and the additional
    2316 !> effect of the Stokes drift on the Coriolis force
     2287!--------------------------------------------------------------------------------------------------!
     2288! Description:
     2289! ------------
     2290!> This routine calculates the Craik Leibovich vortex force and the additional effect of the Stokes
     2291!> drift on the Coriolis force.
    23172292!> Call for all gridpoints.
    2318 !------------------------------------------------------------------------------!
     2293!--------------------------------------------------------------------------------------------------!
    23192294 SUBROUTINE stokes_drift_terms( component )
    23202295
    2321     USE arrays_3d,                                                             &
    2322         ONLY:  ddzu, u, u_stokes_zu, u_stokes_zw, v, v_stokes_zu,              &
    2323                v_stokes_zw, w, tend
    2324 
    2325     USE basic_constants_and_equations_mod,                                     &
     2296    USE arrays_3d,                                                                                 &
     2297        ONLY:  ddzu, u, u_stokes_zu, u_stokes_zw, v, v_stokes_zu, v_stokes_zw, w, tend
     2298
     2299    USE basic_constants_and_equations_mod,                                                         &
    23262300        ONLY:  pi
    23272301
    2328     USE control_parameters,                                                    &
     2302    USE control_parameters,                                                                        &
    23292303        ONLY:  f, fs, message_string, rotation_angle
    23302304
    2331     USE grid_variables,                                                        &
     2305    USE grid_variables,                                                                            &
    23322306        ONLY:  ddx, ddy
    23332307
    2334     USE indices,                                                               &
     2308    USE indices,                                                                                   &
    23352309        ONLY:  nxl, nxr, nys, nysv, nyn, nzb, nzt
    23362310
     
    23442318    REAL(wp)     ::  cos_rot_angle  !< cosine of model rotation angle
    23452319    REAL(wp)     ::  sin_rot_angle  !< sine of model rotation angle
     2320
    23462321
    23472322!
     
    23552330             DO  j = nysv, nyn
    23562331                DO  k = nzb+1, nzt
    2357                    tend(k,j,i) = tend(k,j,i) + v_stokes_zu(k) * (              &
    2358                                    0.5 * ( v(k,j+1,i) - v(k,j+1,i-1)           &
    2359                                          + v(k,j,i)   - v(k,j,i-1)   ) * ddx   &
    2360                                  - 0.5 * ( u(k,j+1,i) - u(k,j-1,i) )   * ddy   &
    2361                                                                 )              &
     2332                   tend(k,j,i) = tend(k,j,i) + v_stokes_zu(k) * (                                  &
     2333                                                  0.5 * ( v(k,j+1,i) - v(k,j+1,i-1)                &
     2334                                                        + v(k,j,i)   - v(k,j,i-1)   ) * ddx        &
     2335                                                - 0.5 * ( u(k,j+1,i) - u(k,j-1,i) )   * ddy        &
     2336                                                                )                                  &
    23622337                                 + f * v_stokes_zu(k)
    23632338                ENDDO
     
    23712346             DO  j = nysv, nyn
    23722347                DO  k = nzb+1, nzt
    2373                    tend(k,j,i) = tend(k,j,i) - u_stokes_zu(k) * (              &
    2374                                    0.5 * ( v(k,j,i+1) - v(k,j,i-1) )   * ddx   &
    2375                                  - 0.5 * ( u(k,j,i) - u(k,j-1,i)               &
    2376                                          + u(k,j,i+1) - u(k,j-1,i+1) ) * ddy   &
     2348                   tend(k,j,i) = tend(k,j,i) - u_stokes_zu(k) * (                                  &
     2349                                                  0.5 * ( v(k,j,i+1) - v(k,j,i-1) )   * ddx        &
     2350                                                - 0.5 * ( u(k,j,i) - u(k,j-1,i)                    &
     2351                                                        + u(k,j,i+1) - u(k,j-1,i+1) ) * ddy        &
    23772352                                                                )              &
    23782353                                 - f * u_stokes_zu(k)
     
    23932368             DO  j = nys, nyn
    23942369                DO  k = nzb+1, nzt
    2395                    tend(k,j,i) = tend(k,j,i) + u_stokes_zw(k) * (              &
    2396                                              0.5 * ( u(k+1,j,i) - u(k,j,i)     &
    2397                                                    + u(k+1,j,i+1) - u(k,j,i+1) &
    2398                                                    ) * ddzu(k+1)               &
    2399                                            - 0.5 * ( w(k,j,i+1) - w(k,j,i-1)   &
    2400                                                    ) * ddx      )              &
    2401                                              - v_stokes_zw(k) * (              &
    2402                                              0.5 * ( w(k,j+1,i) - w(k,j-1,i)   &
    2403                                                    ) * ddy                     &
    2404                                            - 0.5 * ( v(k+1,j,i) - v(k,j,i)     &
    2405                                                    + v(k+1,j+1,i) - v(k,j+1,i) &
    2406                                                    ) * ddzu(k)  )              &
    2407                                            + fs * (                            &
    2408                                                sin_rot_angle * v_stokes_zw(k)  &
    2409                                              + cos_rot_angle * u_stokes_zw(k)  &
    2410                                                   )
     2370                   tend(k,j,i) = tend(k,j,i) + u_stokes_zw(k) *   (                                &
     2371                                                   0.5 * ( u(k+1,j,i) - u(k,j,i)                   &
     2372                                                         + u(k+1,j,i+1) - u(k,j,i+1)               &
     2373                                                         ) * ddzu(k+1)                             &
     2374                                                 - 0.5 * ( w(k,j,i+1) - w(k,j,i-1)                 &
     2375                                                         ) * ddx  )                                &
     2376                                             - v_stokes_zw(k) *      (                             &
     2377                                                   0.5 * ( w(k,j+1,i) - w(k,j-1,i)                 &
     2378                                                         ) * ddy                                   &
     2379                                                 - 0.5 * ( v(k+1,j,i) - v(k,j,i)                   &
     2380                                                         + v(k+1,j+1,i) - v(k,j+1,i)               &
     2381                                                         ) * ddzu(k) )                             &
     2382                                              + fs * (   sin_rot_angle * v_stokes_zw(k)            &
     2383                                                       + cos_rot_angle * u_stokes_zw(k)            &
     2384                                                     )
    24112385                ENDDO
    24122386             ENDDO
     
    24142388
    24152389       CASE DEFAULT
    2416           WRITE( message_string, * ) 'wrong component of Stokes force: ',      &
    2417                                      component
     2390          WRITE( message_string, * ) 'wrong component of Stokes force: ', component
    24182391          CALL message( 'stokes_drift_terms', 'PA0091', 1, 2, 0, 6, 0 )
    24192392
     
    24232396
    24242397
    2425 !------------------------------------------------------------------------------!
    2426 ! Description:
    2427 ! ------------
    2428 !> This routine calculates the Craik Leibovich vortex force and the additional
    2429 !> effect of the Stokes drift on the Coriolis force
     2398!--------------------------------------------------------------------------------------------------!
     2399! Description:
     2400! ------------
     2401!> This routine calculates the Craik Leibovich vortex force and the additional effect of the Stokes
     2402!> drift on the Coriolis force.
    24302403!> Call for gridpoints i,j.
    2431 !------------------------------------------------------------------------------!
     2404!--------------------------------------------------------------------------------------------------!
    24322405
    24332406 SUBROUTINE stokes_drift_terms_ij( i, j, component )
    24342407
    2435     USE arrays_3d,                                                             &
    2436         ONLY:  ddzu, u, u_stokes_zu, u_stokes_zw, v, v_stokes_zu,              &
    2437                v_stokes_zw, w, tend
    2438 
    2439     USE basic_constants_and_equations_mod,                                     &
     2408    USE arrays_3d,                                                                                 &
     2409        ONLY:  ddzu, u, u_stokes_zu, u_stokes_zw, v, v_stokes_zu, v_stokes_zw, w, tend
     2410
     2411    USE basic_constants_and_equations_mod,                                                         &
    24402412        ONLY:  pi
    24412413
    2442     USE control_parameters,                                                    &
     2414    USE control_parameters,                                                                        &
    24432415        ONLY:  f, fs, message_string, rotation_angle
    24442416
    2445     USE grid_variables,                                                        &
     2417    USE grid_variables,                                                                            &
    24462418        ONLY:  ddx, ddy
    24472419
    2448     USE indices,                                                               &
     2420    USE indices,                                                                                   &
    24492421        ONLY:  nzb, nzt
    24502422
     
    24592431    REAL(wp)     ::  sin_rot_angle  !< sine of model rotation angle
    24602432
     2433
    24612434!
    24622435!-- Compute Stokes terms for the respective velocity components
     
    24672440       CASE ( 1 )
    24682441          DO  k = nzb+1, nzt
    2469              tend(k,j,i) = tend(k,j,i) + v_stokes_zu(k) * (                    &
    2470                                      0.5 * ( v(k,j+1,i) - v(k,j+1,i-1)         &
    2471                                            + v(k,j,i)   - v(k,j,i-1)   ) * ddx &
    2472                                    - 0.5 * ( u(k,j+1,i) - u(k,j-1,i) )   * ddy &
    2473                                                           )                    &
     2442             tend(k,j,i) = tend(k,j,i) + v_stokes_zu(k) * (                                        &
     2443                                              0.5 * ( v(k,j+1,i) - v(k,j+1,i-1)                    &
     2444                                                    + v(k,j,i)   - v(k,j,i-1)   ) * ddx            &
     2445                                            - 0.5 * ( u(k,j+1,i) - u(k,j-1,i) )   * ddy            &
     2446                                                          )                                        &
    24742447                                       + f * v_stokes_zu(k)
    24752448          ENDDO
     
    24782451       CASE ( 2 )
    24792452          DO  k = nzb+1, nzt
    2480              tend(k,j,i) = tend(k,j,i) - u_stokes_zu(k) * (                    &
    2481                                      0.5 * ( v(k,j,i+1) - v(k,j,i-1) )   * ddx &
    2482                                    - 0.5 * ( u(k,j,i) - u(k,j-1,i)             &
    2483                                            + u(k,j,i+1) - u(k,j-1,i+1) ) * ddy &
    2484                                                           )                    &
     2453             tend(k,j,i) = tend(k,j,i) - u_stokes_zu(k) * (                                        &
     2454                                              0.5 * ( v(k,j,i+1) - v(k,j,i-1) )   * ddx            &
     2455                                            - 0.5 * ( u(k,j,i) - u(k,j-1,i)                        &
     2456                                                    + u(k,j,i+1) - u(k,j-1,i+1) ) * ddy            &
     2457                                                          )                                        &
    24852458                                       - f * u_stokes_zu(k)
    24862459          ENDDO
     
    24962469
    24972470          DO  k = nzb+1, nzt
    2498              tend(k,j,i) = tend(k,j,i) + u_stokes_zw(k) * (              &
    2499                                      0.5 * ( u(k+1,j,i) - u(k,j,i)     &
    2500                                                    + u(k+1,j,i+1) - u(k,j,i+1) &
    2501                                                    ) * ddzu(k+1)               &
    2502                                            - 0.5 * ( w(k,j,i+1) - w(k,j,i-1)   &
    2503                                                    ) * ddx )                   &
    2504                                        - v_stokes_zw(k) * (                    &
    2505                                              0.5 * ( w(k,j+1,i) - w(k,j-1,i)   &
    2506                                                    ) * ddy                     &
    2507                                            - 0.5 * ( v(k+1,j,i) - v(k,j,i)     &
    2508                                                    + v(k+1,j+1,i) - v(k,j+1,i) &
    2509                                                    ) * ddzu(k)  )              &
    2510                                        + fs * ( sin_rot_angle * v_stokes_zw(k) &
    2511                                               + cos_rot_angle * u_stokes_zw(k) &
     2471             tend(k,j,i) = tend(k,j,i) + u_stokes_zw(k) * ( 0.5 * ( u(k+1,j,i) - u(k,j,i)          &
     2472                                                                  + u(k+1,j,i+1) - u(k,j,i+1)      &
     2473                                                                  ) * ddzu(k+1)                    &
     2474                                                          - 0.5 * ( w(k,j,i+1) - w(k,j,i-1)        &
     2475                                                                  ) * ddx      )                   &
     2476                                       - v_stokes_zw(k) * ( 0.5 * ( w(k,j+1,i) - w(k,j-1,i)        &
     2477                                                                  ) * ddy                          &
     2478                                                          - 0.5 * ( v(k+1,j,i) - v(k,j,i)          &
     2479                                                                  + v(k+1,j+1,i) - v(k,j+1,i)      &
     2480                                                                  ) * ddzu(k)  )                   &
     2481                                       + fs * ( sin_rot_angle * v_stokes_zw(k)                     &
     2482                                              + cos_rot_angle * u_stokes_zw(k)                     &
    25122483                                              )
    25132484          ENDDO
     
    25222493
    25232494
    2524 !------------------------------------------------------------------------------!
    2525 ! Description:
    2526 ! ------------
    2527 !> This routine calculates turbulence generated by wave breaking near the ocean
    2528 !> surface, following a parameterization given in Noh et al. (2004), JPO
     2495!--------------------------------------------------------------------------------------------------!
     2496! Description:
     2497! ------------
     2498!> This routine calculates turbulence generated by wave breaking near the ocean surface, following
     2499!> a parameterization given in Noh et al. (2004), JPO
    25292500!> Call for all gridpoints.
    2530 !> TODO: so far, this routine only works if the model time step has about the
    2531 !>       same value as the time scale of wave breaking!
    2532 !------------------------------------------------------------------------------!
     2501!> TODO: so far, this routine only works if the model time step has about the same value as the time
     2502!>       scale of wave breaking!
     2503!--------------------------------------------------------------------------------------------------!
    25332504 SUBROUTINE wave_breaking_term( component )
    25342505
    2535     USE arrays_3d,                                                             &
     2506    USE arrays_3d,                                                                                 &
    25362507        ONLY:  u_p, v_p
    25372508
    2538     USE control_parameters,                                                    &
     2509    USE control_parameters,                                                                        &
    25392510        ONLY:  dt_3d, message_string
    25402511
    2541     USE indices,                                                               &
     2512    USE indices,                                                                                   &
    25422513        ONLY:  nxl, nxlu, nxr, nys, nysv, nyn, nzt
    25432514
     
    25482519    INTEGER(iwp) ::  j          !< loop index along y
    25492520
    2550     REAL(wp) ::  random_gauss  !< function that creates a random number with a
    2551                                !< Gaussian distribution
     2521    REAL(wp) ::  random_gauss  !< function that creates a random number with a Gaussian distribution
    25522522
    25532523
     
    25622532          DO  i = nxlu, nxr
    25632533             DO  j = nys, nyn
    2564                 u_p(nzt,j,i) = u_p(nzt,j,i) +                                  &
    2565                                ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp ) &
    2566                                * alpha_wave_breaking * u_star_wave_breaking    &
     2534                u_p(nzt,j,i) = u_p(nzt,j,i) +                                                      &
     2535                               ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )                     &
     2536                               * alpha_wave_breaking * u_star_wave_breaking                        &
    25672537                               / timescale_wave_breaking * dt_3d
    25682538             ENDDO
     
    25732543          DO  i = nxl, nxr
    25742544             DO  j = nysv, nyn
    2575                 v_p(nzt,j,i) = v_p(nzt,j,i) +                                  &
    2576                                ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp ) &
    2577                                * alpha_wave_breaking * u_star_wave_breaking    &
     2545                v_p(nzt,j,i) = v_p(nzt,j,i) +                                                      &
     2546                               ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )                     &
     2547                               * alpha_wave_breaking * u_star_wave_breaking                        &
    25782548                               / timescale_wave_breaking * dt_3d
    25792549             ENDDO
     
    25812551
    25822552       CASE DEFAULT
    2583           WRITE( message_string, * ) 'wrong component of wave breaking: ',     &
    2584                                      component
     2553          WRITE( message_string, * ) 'wrong component of wave breaking: ', component
    25852554          CALL message( 'stokes_drift_terms', 'PA0466', 1, 2, 0, 6, 0 )
    25862555
     
    25902559
    25912560
    2592 !------------------------------------------------------------------------------!
    2593 ! Description:
    2594 ! ------------
    2595 !> This routine calculates turbulence generated by wave breaking near the ocean
    2596 !> surface, following a parameterization given in Noh et al. (2004), JPO
     2561!--------------------------------------------------------------------------------------------------!
     2562! Description:
     2563! ------------
     2564!> This routine calculates turbulence generated by wave breaking near the ocean surface, following a
     2565!> parameterization given in Noh et al. (2004), JPO
    25972566!> Call for gridpoint i,j.
    2598 !> TODO: so far, this routine only works if the model time step has about the
    2599 !>       same value as the time scale of wave breaking!
    2600 !------------------------------------------------------------------------------!
     2567!> TODO: so far, this routine only works if the model time step has about the same value as the time
     2568!> scale of wave breaking!
     2569!--------------------------------------------------------------------------------------------------!
    26012570 SUBROUTINE wave_breaking_term_ij( i, j, component )
    26022571
    2603     USE arrays_3d,                                                             &
     2572    USE arrays_3d,                                                                                 &
    26042573        ONLY:  u_p, v_p
    26052574
    2606     USE control_parameters,                                                    &
     2575    USE control_parameters,                                                                        &
    26072576        ONLY:  dt_3d, message_string
    26082577
    2609     USE indices,                                                               &
     2578    USE indices,                                                                                   &
    26102579        ONLY:  nzt
    26112580
     
    26162585    INTEGER(iwp) ::  j          !< loop index along y
    26172586
    2618     REAL(wp) ::  random_gauss  !< function that creates a random number with a
    2619                                !< Gaussian distribution
     2587    REAL(wp) ::  random_gauss  !< function that creates a random number with a Gaussian distribution
    26202588
    26212589!
     
    26262594!--    u-/v-component
    26272595       CASE ( 1 )
    2628           u_p(nzt,j,i) = u_p(nzt,j,i) +                                        &
    2629                          ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )       &
    2630                          * alpha_wave_breaking * u_star_wave_breaking          &
     2596          u_p(nzt,j,i) = u_p(nzt,j,i) +                                                            &
     2597                         ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )                           &
     2598                         * alpha_wave_breaking * u_star_wave_breaking                              &
    26312599                         / timescale_wave_breaking * dt_3d
    26322600
    26332601       CASE ( 2 )
    2634           v_p(nzt,j,i) = v_p(nzt,j,i) +                                        &
    2635                          ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )       &
    2636                          * alpha_wave_breaking * u_star_wave_breaking          &
     2602          v_p(nzt,j,i) = v_p(nzt,j,i) +                                                            &
     2603                         ( random_gauss( iran_ocean, 1.0_wp ) - 1.0_wp )                           &
     2604                         * alpha_wave_breaking * u_star_wave_breaking                              &
    26372605                         / timescale_wave_breaking * dt_3d
    26382606
    26392607       CASE DEFAULT
    2640           WRITE( message_string, * ) 'wrong component of wave breaking: ',     &
    2641                                      component
     2608          WRITE( message_string, * ) 'wrong component of wave breaking: ', component
    26422609          CALL message( 'stokes_drift_terms', 'PA0466', 1, 2, 0, 6, 0 )
    26432610
Note: See TracChangeset for help on using the changeset viewer.