/[MITgcm]/MITgcm/pkg/seaice/seaice_calc_strainrates.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_calc_strainrates.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.18 by jmc, Fri Oct 21 17:32:01 2011 UTC revision 1.22 by mlosch, Fri May 26 09:08:32 2017 UTC
# Line 7  C $Name$ Line 7  C $Name$
7  #else  #else
8  # define OBCS_UVICE_OLD  # define OBCS_UVICE_OLD
9  #endif  #endif
10    #ifdef ALLOW_AUTODIFF
11    # include "AUTODIFF_OPTIONS.h"
12    #endif
13    
14  CBOP  CBOP
15  C     !ROUTINE: SEAICE_CALC_STRAINRATES  C     !ROUTINE: SEAICE_CALC_STRAINRATES
# Line 33  C     === Global variables === Line 36  C     === Global variables ===
36  #include "EEPARAMS.h"  #include "EEPARAMS.h"
37  #include "PARAMS.h"  #include "PARAMS.h"
38  #include "GRID.h"  #include "GRID.h"
39    #include "SEAICE_SIZE.h"
40  #include "SEAICE_PARAMS.h"  #include "SEAICE_PARAMS.h"
41  #include "SEAICE.h"  #include "SEAICE.h"
42    
# Line 51  C     iStep  :: Sub-time-step number Line 55  C     iStep  :: Sub-time-step number
55  C     myTime :: Simulation time  C     myTime :: Simulation time
56  C     myIter :: Simulation timestep number  C     myIter :: Simulation timestep number
57  C     myThid :: My Thread Id. number  C     myThid :: My Thread Id. number
58        _RL uFld   (1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)        _RL uFld   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
59        _RL vFld   (1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)        _RL vFld   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
60        _RL e11Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL e11Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
61        _RL e22Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL e22Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
62        _RL e12Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL e12Loc (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
# Line 83  C     vectorizes even after TAFization Line 87  C     vectorizes even after TAFization
87        k = 1        k = 1
88        noSlipFac = 0. _d 0        noSlipFac = 0. _d 0
89        IF ( SEAICE_no_slip ) noSlipFac = 1. _d 0        IF ( SEAICE_no_slip ) noSlipFac = 1. _d 0
90    C     in order repoduce results before fixing a bug in r1.20 comment out
91    C     the following line
92    CML      IF ( SEAICE_no_slip ) noSlipFac = 2. _d 0
93  C  C
94        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
95         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
96  C     abbreviations on C-points, need to do them in separate loops  C     abbreviations on C-points, need to do them in separate loops
97  C     for vectorization  C     for vectorization
98          DO j=1-Oly,sNy+Oly-1          DO j=1-OLy,sNy+OLy-1
99           DO i=1-Olx,sNx+Olx-1           DO i=1-OLx,sNx+OLx-1
100            dudx(i,j) = _recip_dxF(i,j,bi,bj) *            dudx(i,j) = _recip_dxF(i,j,bi,bj) *
101       &         (uFld(i+1,j,bi,bj)-uFld(i,j,bi,bj))       &         (uFld(i+1,j,bi,bj)-uFld(i,j,bi,bj))
102            uave(i,j) = 0.5 _d 0 * (uFld(i,j,bi,bj)+uFld(i+1,j,bi,bj))            uave(i,j) = 0.5 _d 0 * (uFld(i,j,bi,bj)+uFld(i+1,j,bi,bj))
103           ENDDO           ENDDO
104          ENDDO          ENDDO
105          DO j=1-Oly,sNy+Oly-1          DO j=1-OLy,sNy+OLy-1
106           DO i=1-Olx,sNx+Olx-1           DO i=1-OLx,sNx+OLx-1
107            dvdy(i,j) = _recip_dyF(i,j,bi,bj) *            dvdy(i,j) = _recip_dyF(i,j,bi,bj) *
108       &         (vFld(i,j+1,bi,bj)-vFld(i,j,bi,bj))       &         (vFld(i,j+1,bi,bj)-vFld(i,j,bi,bj))
109            vave(i,j) = 0.5 _d 0 * (vFld(i,j,bi,bj)+vFld(i,j+1,bi,bj))            vave(i,j) = 0.5 _d 0 * (vFld(i,j,bi,bj)+vFld(i,j+1,bi,bj))
110           ENDDO           ENDDO
111          ENDDO          ENDDO
112  C     evaluate strain rates at C-points  C     evaluate strain rates at C-points
113          DO j=1-Oly,sNy+Oly-1          DO j=1-OLy,sNy+OLy-1
114           DO i=1-Olx,sNx+Olx-1           DO i=1-OLx,sNx+OLx-1
115            e11Loc(i,j,bi,bj) = dudx(i,j) + vave(i,j) * k2AtC(i,j,bi,bj)            e11Loc(i,j,bi,bj) = dudx(i,j) + vave(i,j) * k2AtC(i,j,bi,bj)
116            e22Loc(i,j,bi,bj) = dvdy(i,j) + uave(i,j) * k1AtC(i,j,bi,bj)            e22Loc(i,j,bi,bj) = dvdy(i,j) + uave(i,j) * k1AtC(i,j,bi,bj)
117           ENDDO           ENDDO
118          ENDDO          ENDDO
119  #ifndef OBCS_UVICE_OLD  #ifndef OBCS_UVICE_OLD
120  C--     for OBCS: assume no gradient beyong OB  C--     for OBCS: assume no gradient beyong OB
121          DO j=1-Oly,sNy+Oly-1          DO j=1-OLy,sNy+OLy-1
122           DO i=1-Olx,sNx+Olx-1           DO i=1-OLx,sNx+OLx-1
123            e11Loc(i,j,bi,bj) = e11Loc(i,j,bi,bj)*maskInC(i,j,bi,bj)            e11Loc(i,j,bi,bj) = e11Loc(i,j,bi,bj)*maskInC(i,j,bi,bj)
124            e22Loc(i,j,bi,bj) = e22Loc(i,j,bi,bj)*maskInC(i,j,bi,bj)            e22Loc(i,j,bi,bj) = e22Loc(i,j,bi,bj)*maskInC(i,j,bi,bj)
125           ENDDO           ENDDO
# Line 121  C--     for OBCS: assume no gradient bey Line 128  C--     for OBCS: assume no gradient bey
128    
129  C     abbreviations at Z-points, need to do them in separate loops  C     abbreviations at Z-points, need to do them in separate loops
130  C     for vectorization  C     for vectorization
131          DO j=1-Oly+1,sNy+Oly          DO j=1-OLy+1,sNy+OLy
132           DO i=1-Olx+1,sNx+Olx           DO i=1-OLx+1,sNx+OLx
133            dudy(i,j) = ( uFld(i,j,bi,bj) - uFld(i  ,j-1,bi,bj) )            dudy(i,j) = ( uFld(i,j,bi,bj) - uFld(i  ,j-1,bi,bj) )
134       &         * _recip_dyU(i,j,bi,bj)       &         * _recip_dyU(i,j,bi,bj)
135            uave(i,j) = 0.5 _d 0 * (uFld(i,j,bi,bj)+uFld(i  ,j-1,bi,bj))            uave(i,j) = 0.5 _d 0 * (uFld(i,j,bi,bj)+uFld(i  ,j-1,bi,bj))
136           ENDDO           ENDDO
137          ENDDO          ENDDO
138          DO j=1-Oly+1,sNy+Oly          DO j=1-OLy+1,sNy+OLy
139           DO i=1-Olx+1,sNx+Olx           DO i=1-OLx+1,sNx+OLx
140            dvdx(i,j) = ( vFld(i,j,bi,bj) - vFld(i-1,j  ,bi,bj) )            dvdx(i,j) = ( vFld(i,j,bi,bj) - vFld(i-1,j  ,bi,bj) )
141       &         * _recip_dxV(i,j,bi,bj)       &         * _recip_dxV(i,j,bi,bj)
142            vave(i,j) = 0.5 _d 0 * (vFld(i,j,bi,bj)+vFld(i-1,j  ,bi,bj))            vave(i,j) = 0.5 _d 0 * (vFld(i,j,bi,bj)+vFld(i-1,j  ,bi,bj))
143           ENDDO           ENDDO
144          ENDDO          ENDDO
145  C     evaluate strain rates at Z-points  C     evaluate strain rates at Z-points
146          DO j=1-Oly+1,sNy+Oly          DO j=1-OLy+1,sNy+OLy
147           DO i=1-Olx+1,sNx+Olx           DO i=1-OLx+1,sNx+OLx
148            hFacU = _maskW(i,j,k,bi,bj) - _maskW(i,j-1,k,bi,bj)            hFacU = _maskW(i,j,k,bi,bj) - _maskW(i,j-1,k,bi,bj)
149            hFacV = _maskS(i,j,k,bi,bj) - _maskS(i-1,j,k,bi,bj)            hFacV = _maskS(i,j,k,bi,bj) - _maskS(i-1,j,k,bi,bj)
150            e12Loc(i,j,bi,bj) = 0.5 _d 0 * (            e12Loc(i,j,bi,bj) = 0.5 _d 0 * (
# Line 147  C     evaluate strain rates at Z-points Line 154  C     evaluate strain rates at Z-points
154       &         )       &         )
155       &         *maskC(i  ,j  ,k,bi,bj)*maskC(i-1,j  ,k,bi,bj)       &         *maskC(i  ,j  ,k,bi,bj)*maskC(i-1,j  ,k,bi,bj)
156       &         *maskC(i  ,j-1,k,bi,bj)*maskC(i-1,j-1,k,bi,bj)       &         *maskC(i  ,j-1,k,bi,bj)*maskC(i-1,j-1,k,bi,bj)
157       &         + 2.0 _d 0 * noSlipFac * (       &         + noSlipFac * (
158       &           2.0 _d 0 * uave(i,j) * _recip_dyU(i,j,bi,bj) * hFacU       &           2.0 _d 0 * uave(i,j) * _recip_dyU(i,j,bi,bj) * hFacU
159       &         + 2.0 _d 0 * vave(i,j) * _recip_dxV(i,j,bi,bj) * hFacV       &         + 2.0 _d 0 * vave(i,j) * _recip_dxV(i,j,bi,bj) * hFacV
160       &         )       &         )
# Line 158  c$$$     &         - hFacV * k1AtZ(i,j,b Line 165  c$$$     &         - hFacV * k1AtZ(i,j,b
165  c$$$     &         - hFacU * k2AtZ(i,j,bi,bj) * uave(i,j)  c$$$     &         - hFacU * k2AtZ(i,j,bi,bj) * uave(i,j)
166           ENDDO           ENDDO
167          ENDDO          ENDDO
   
168         ENDDO         ENDDO
169        ENDDO        ENDDO
170    

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.22

  ViewVC Help
Powered by ViewVC 1.1.22