Back to home page

MITgcm

 
 

    


File indexing completed on 2023-01-03 06:09:46 UTC

view on githubraw file Latest commit 9293d3c6 on 2023-01-02 17:40:43 UTC
9293d3c672 Hajo*0001 #include "GGL90_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C !ROUTINE: GGL90_ADD_STOKESDRIFT
                0005 
                0006 C !INTERFACE: ==========================================================
                0007       SUBROUTINE GGL90_ADD_STOKESDRIFT(
                0008      O                 uRes, vRes,
                0009      I                 uFld, vFld,
                0010      I                 k, bi, bj, myThid )
                0011 
                0012 C !DESCRIPTION:
                0013 C  Add Stokes-drift contribution to Eulerien velocity to get residual flow
                0014 
                0015 C !USES: ===============================================================
                0016       IMPLICIT NONE
                0017 C     == Global variables ==
                0018 #include "SIZE.h"
                0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
                0021 #include "GRID.h"
                0022 #include "FFIELDS.h"
                0023 #include "GGL90.h"
                0024 
                0025 C !INPUT/OUTPUT PARAMETERS: ===================================================
                0026 C   uRes, vRes   :: residual flow with Stokes-drift added
                0027 C   uFld, vFld   :: Eulerien horizontal velocity, 2 compon.
                0028 C   k            :: current vertical level
                0029 C   bi, bj       :: current tile indices
                0030 C   myThid       :: my Thread Id number
                0031       _RL uRes   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0032       _RL vRes   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0033       _RL uFld   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0034       _RL vFld   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0035       INTEGER k, bi, bj
                0036       INTEGER myThid
                0037 
                0038 #ifdef ALLOW_GGL90_LANGMUIR
                0039 C !LOCAL VARIABLES: ====================================================
                0040 C   i, j         :: loop indices
                0041 C   uStar, vStar :: frictional velocity component
                0042       INTEGER i,j
                0043       _RL uStar, vStar, recip_Lasq, depthFac
                0044       _RL stokesU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0045       _RL stokesV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0046 CEOP
                0047 
                0048       IF ( useLANGMUIR ) THEN
                0049 
                0050 C-    Calculate Stokes-Drift (fct of wind-stress)
                0051 C     surface Stokes-Drift velocity is just (uStar,vStar)/ LC_num^2
                0052         recip_Lasq = 1. _d 0 / LC_num
                0053         recip_Lasq = recip_Lasq * recip_Lasq
                0054         depthFac = recip_Lasq*EXP( 4. _d 0 *PI/LC_lambda*rC(k) )
                0055         DO j=1-OLy,sNy+OLy
                0056          DO i=1-OLx,sNx+OLx
                0057            uStar = SIGN( SQRT(ABS(surfaceForcingU(i,j,bi,bj))),
                0058      &                   surfaceForcingU(i,j,bi,bj) )
                0059            stokesU(i,j) = uStar * depthFac
                0060            vStar = SIGN( SQRT(ABS(surfaceForcingV(i,j,bi,bj))),
                0061      &                   surfaceForcingV(i,j,bi,bj) )
                0062            stokesV(i,j) = vStar * depthFac
                0063          ENDDO
                0064         ENDDO
                0065 
                0066 C-    Add Stokes-Drift to Eulerien velocity to get residual flow:
                0067         DO j=1-OLy,sNy+OLy
                0068          DO i=1-OLx,sNx+OLx
                0069            uRes(i,j) = uFld(i,j) + stokesU(i,j)*maskW(i,j,k,bi,bj)
                0070            vRes(i,j) = vFld(i,j) + stokesV(i,j)*maskS(i,j,k,bi,bj)
                0071          ENDDO
                0072         ENDDO
                0073 
                0074       ENDIF
                0075 
                0076 #endif /* ALLOW_GGL90_LANGMUIR */
                0077 
                0078       RETURN
                0079       END