Ignore:
Timestamp:
Oct 3, 2018 2:39:40 AM (3 years ago)
Author:
raasch
Message:

Craik-Leibovich force and wave breaking effects added to ocean mode, header output for ocean mode

File:
1 edited

Legend:

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

    r2718 r3302  
    2525! -----------------
    2626! $Id$
     27! Stokes drift velocity added
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    104107
    105108       USE arrays_3d,                                                          &
    106            ONLY:  dd2zu, tend, u, v, w
     109           ONLY:  dd2zu, tend, u, u_stokes_zu, v, v_stokes_zu, w
    107110
    108111       USE control_parameters,                                                 &
     
    124127       INTEGER(iwp) ::  j !<
    125128       INTEGER(iwp) ::  k !<
     129
     130       REAL(wp)     ::  gu  !< local additional advective velocity
     131       REAL(wp)     ::  gv  !< local additional advective velocity
    126132
    127133#if defined( __nopointer )
     
    135141          DO  j = nys, nyn
    136142             DO  k = nzb+1, nzt
    137                 tend(k,j,i) = tend(k,j,i) +                                       &
    138             ( -0.5_wp * ( ( u(k,j,i+1) - u_gtrans ) * ( sk(k,j,i+1) - sk(k,j,i) ) &
    139                         - ( u(k,j,i)   - u_gtrans ) * ( sk(k,j,i-1) - sk(k,j,i) ) &
    140                         ) * ddx                                                   &
    141               -0.5_wp * ( ( v(k,j+1,i) - v_gtrans ) * ( sk(k,j+1,i) - sk(k,j,i) ) &
    142                         - ( v(k,j,i)   - v_gtrans ) * ( sk(k,j-1,i) - sk(k,j,i) ) &
    143                         ) * ddy                                                   &
    144               -         (   w(k,j,i)                * ( sk(k+1,j,i) - sk(k,j,i) ) &
    145                         -   w(k-1,j,i)              * ( sk(k-1,j,i) - sk(k,j,i) ) &
    146                         ) * dd2zu(k)                                              &
    147             ) * MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
     143
     144!
     145!--             Galilean transformation + Stokes drift velocity (ocean only)
     146                gu = u_gtrans - u_stokes_zu(k)
     147                gv = v_gtrans - v_stokes_zu(k)
     148
     149                tend(k,j,i) = tend(k,j,i) +                                    &
     150                                     ( -0.5_wp * ( ( u(k,j,i+1) - gu       ) * &
     151                                                   ( sk(k,j,i+1) - sk(k,j,i) ) &
     152                                                 - ( u(k,j,i)   - gu       ) * &
     153                                                   ( sk(k,j,i-1) - sk(k,j,i) ) &
     154                                                 ) * ddx                       &
     155                                       -0.5_wp * ( ( v(k,j+1,i) - gv       ) * &
     156                                                   ( sk(k,j+1,i) - sk(k,j,i) ) &
     157                                                 - ( v(k,j,i)   - gv       ) * &
     158                                                   ( sk(k,j-1,i) - sk(k,j,i) ) &
     159                                                 ) * ddy                       &
     160                                       -         (   w(k,j,i)                * &
     161                                                   ( sk(k+1,j,i) - sk(k,j,i) ) &
     162                                                 -   w(k-1,j,i)              * &
     163                                                   ( sk(k-1,j,i) - sk(k,j,i) ) &
     164                                                 ) * dd2zu(k)                  &
     165                                      ) * MERGE( 1.0_wp, 0.0_wp,               &
     166                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    148167             ENDDO
    149168          ENDDO
     
    161180
    162181       USE arrays_3d,                                                          &
    163            ONLY:  dd2zu, tend, u, v, w
     182           ONLY:  dd2zu, tend, u, u_stokes_zu, v, v_stokes_zu, w
    164183
    165184       USE control_parameters,                                                 &
     
    180199       INTEGER(iwp) ::  j !<
    181200       INTEGER(iwp) ::  k !<
     201
     202       REAL(wp)     ::  gu  !< local additional advective velocity
     203       REAL(wp)     ::  gv  !< local additional advective velocity
    182204
    183205#if defined( __nopointer )
     
    189211
    190212       DO  k = nzb+1, nzt
    191           tend(k,j,i) = tend(k,j,i) +                                             &
    192             ( -0.5_wp * ( ( u(k,j,i+1) - u_gtrans ) * ( sk(k,j,i+1) - sk(k,j,i) ) &
    193                         - ( u(k,j,i)   - u_gtrans ) * ( sk(k,j,i-1) - sk(k,j,i) ) &
    194                         ) * ddx                                                   &
    195               -0.5_wp * ( ( v(k,j+1,i) - v_gtrans ) * ( sk(k,j+1,i) - sk(k,j,i) ) &
    196                         - ( v(k,j,i)   - v_gtrans ) * ( sk(k,j-1,i) - sk(k,j,i) ) &
    197                         ) * ddy                                                   &
    198               -         (   w(k,j,i)                * ( sk(k+1,j,i) - sk(k,j,i) ) &
    199                         -   w(k-1,j,i)              * ( sk(k-1,j,i) - sk(k,j,i) ) &
    200                         ) * dd2zu(k)                                              &
    201             ) * MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
     213
     214!
     215!--       Galilean transformation + Stokes drift velocity (ocean only)
     216          gu = u_gtrans - u_stokes_zu(k)
     217          gv = v_gtrans - v_stokes_zu(k)
     218
     219          tend(k,j,i) = tend(k,j,i) +                                          &
     220                                    ( -0.5_wp * ( ( u(k,j,i+1) - gu        ) * &
     221                                                  ( sk(k,j,i+1) - sk(k,j,i) )  &
     222                                                - ( u(k,j,i)   - gu        ) * &
     223                                                  ( sk(k,j,i-1) - sk(k,j,i) )  &
     224                                                ) * ddx                        &
     225                                      -0.5_wp * ( ( v(k,j+1,i) - gv       ) *  &
     226                                                  ( sk(k,j+1,i) - sk(k,j,i) )  &
     227                                                - ( v(k,j,i)   - gv       ) *  &
     228                                                  ( sk(k,j-1,i) - sk(k,j,i) )  &
     229                                                ) * ddy                        &
     230                                      -         (   w(k,j,i)                *  &
     231                                                  ( sk(k+1,j,i) - sk(k,j,i) )  &
     232                                                -   w(k-1,j,i)              *  &
     233                                                  ( sk(k-1,j,i) - sk(k,j,i) )  &
     234                                                ) * dd2zu(k)                   &
     235                                    ) * MERGE( 1.0_wp, 0.0_wp,                 &
     236                                               BTEST( wall_flags_0(k,j,i), 0 ) )
    202237       ENDDO
    203238
Note: See TracChangeset for help on using the changeset viewer.