/[MITgcm]/MITgcm/pkg/aim/aim_external_forcing.F
ViewVC logotype

Diff of /MITgcm/pkg/aim/aim_external_forcing.F

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

revision 1.4 by jmc, Fri Aug 24 00:49:51 2001 UTC revision 1.5 by jmc, Tue Sep 25 19:53:57 2001 UTC
# Line 2  C     $Header$ Line 2  C     $Header$
2  C     $Name$  C     $Name$
3    
4  #include "AIM_OPTIONS.h"  #include "AIM_OPTIONS.h"
 #undef OLD_AIM_GRIG_MAPPING  
5    
6  CStartOfInterface  CStartOfInterface
7        SUBROUTINE AIM_EXTERNAL_FORCING_U(        SUBROUTINE AIM_EXTERNAL_FORCING_U(
# Line 23  C     == Global data == Line 22  C     == Global data ==
22    
23  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
24  #include "AIM2DYN.h"  #include "AIM2DYN.h"
25    #include "AIM_DIAGS.h"
26  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
27    
28  C     == Routine arguments ==  C     == Routine arguments ==
# Line 38  CEndOfInterface Line 38  CEndOfInterface
38    
39  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
40  C     == Local variables ==  C     == Local variables ==
41  C     Loop counters  C     i,j  - Loop counters
42        INTEGER i, j        INTEGER i, j
43          _RL DDTT, uStr_tmp
44    
45          DDTT = deltaTclock
46    
47  #ifdef OLD_AIM_GRIG_MAPPING  #ifdef OLD_AIM_INTERFACE
48  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
49  c - to reproduce old results :  C - to reproduce old results (coupled run, summer 2000) :
50        IF (kLev.eq.1) THEN        IF (kLev.eq.1) THEN
51          DO j=jMin,jMax         DO j=jMin,jMax
52           DO i=iMin,iMax          DO i=iMin,iMax
53            IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN            uStr_tmp = -aim_drag(i,j,bi,bj)*uVel(i,j,kLev,bi,bj)
54             gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)            gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
55       &      -aim_drag(i-1,j,bi,bj)       &                       + uStr_tmp*horiVertRatio*recip_drF(kLev)
56       &          *0.25*(uVel(i-1,j,kLev,bi,bj)+uVel(i,j,kLev,bi,bj))  #ifdef ALLOW_TIMEAVE
57       &      -aim_drag(i,j,bi,bj)            USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
58       &          *0.25*(uVel(i,j,kLev,bi,bj)+uVel(i+1,j,kLev,bi,bj))  #endif
           ENDIF  
          ENDDO  
59          ENDDO          ENDDO
60           ENDDO
61        ELSE        ELSE
62          DO j=jMin,jMax         DO j=jMin,jMax
63           DO i=iMin,iMax          DO i=iMin,iMax
64            IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( maskW(i,j,kLev-1,bi,bj) .EQ. 0. ) THEN
65             gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)            uStr_tmp = -aim_drag(i,j,bi,bj)*uVel(i,j,kLev,bi,bj)
66       &      -(1.-maskC(i-1,j,kLev-1,bi,bj))*aim_drag(i-1,j,bi,bj)  #ifdef ALLOW_TIMEAVE
67       &          *0.25*(uVel(i-1,j,kLev,bi,bj)+uVel(i,j,kLev,bi,bj))            USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
68       &      -(1.-maskC( i ,j,kLev-1,bi,bj))*aim_drag( i ,j,bi,bj)  #endif
69       &          *0.25*(uVel(i,j,kLev,bi,bj)+uVel(i+1,j,kLev,bi,bj))  C - put the same bug as in the old setup :
70            ENDIF            IF ( maskC(i,j,kLev-1,bi,bj) .EQ. 1. ) uStr_tmp = 0.
71           ENDDO            gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
72         &                       + uStr_tmp*horiVertRatio*recip_drF(kLev)
73             ENDIF
74          ENDDO          ENDDO
75           ENDDO
76        ENDIF        ENDIF
77  #else  /* OLD_AIM_GRIG_MAPPING */  #else  /* OLD_AIM_INTERFACE */
78  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
79        IF (kLev.eq.1) THEN        IF (kLev.eq.1) THEN
80         DO j=jMin,jMax         DO j=jMin,jMax
81          DO i=iMin,iMax          DO i=iMin,iMax
82           IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN
83            gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)            uStr_tmp =
84       &     -( aim_drag(i-1,j,bi,bj)+aim_drag(i,j,bi,bj) )       &     -( aim_drag(i-1,j,bi,bj)+aim_drag(i,j,bi,bj) )
85       &       * 0.5 _d 0 * uVel(i,j,kLev,bi,bj)       &       * 0.5 _d 0 * uVel(i,j,kLev,bi,bj)
86              gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
87         &                       + uStr_tmp*horiVertRatio*recip_drF(kLev)
88    #ifdef ALLOW_TIMEAVE
89              USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
90    #endif
91           ENDIF           ENDIF
92          ENDDO          ENDDO
93         ENDDO         ENDDO
# Line 86  c---+----1----+----2----+----3----+----4 Line 95  c---+----1----+----2----+----3----+----4
95         DO j=jMin,jMax         DO j=jMin,jMax
96          DO i=iMin,iMax          DO i=iMin,iMax
97           IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN
98            gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)            uStr_tmp =
99       &      -( (1.-maskC(i-1,j,kLev-1,bi,bj))*aim_drag(i-1,j,bi,bj)       &      -( (1.-maskC(i-1,j,kLev-1,bi,bj))*aim_drag(i-1,j,bi,bj)
100       &        +(1.-maskC( i ,j,kLev-1,bi,bj))*aim_drag( i ,j,bi,bj)       &        +(1.-maskC( i ,j,kLev-1,bi,bj))*aim_drag( i ,j,bi,bj)
101       &       )* 0.5 _d 0 * uVel(i,j,kLev,bi,bj)       &       )* 0.5 _d 0 * uVel(i,j,kLev,bi,bj)
102              gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
103         &                       + uStr_tmp*horiVertRatio*recip_drF(kLev)
104    #ifdef ALLOW_TIMEAVE
105              USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
106    #endif
107           ENDIF           ENDIF
108          ENDDO          ENDDO
109         ENDDO         ENDDO
110        ENDIF        ENDIF
111  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
112  #endif /* OLD_AIM_GRIG_MAPPING */  #endif /* OLD_AIM_INTERFACE */
113    
114  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
115    
# Line 117  C     == Global data == Line 131  C     == Global data ==
131  #include "PARAMS.h"  #include "PARAMS.h"
132  #include "GRID.h"  #include "GRID.h"
133  #include "DYNVARS.h"  #include "DYNVARS.h"
 #include "FFIELDS.h"  
134    
135  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
136  #include "AIM2DYN.h"  #include "AIM2DYN.h"
137    #include "AIM_DIAGS.h"
138  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
139    
140  C     == Routine arguments ==  C     == Routine arguments ==
# Line 138  CEndOfInterface Line 152  CEndOfInterface
152  C     == Local variables ==  C     == Local variables ==
153  C     Loop counters  C     Loop counters
154        INTEGER i, j        INTEGER i, j
155          _RL DDTT, vStr_tmp
156    
157          DDTT = deltaTclock
158    
159  C     call CHKSUM_TILED( ' drag AAA ',aim_drag,1,bi,bj,myThid )  C     call CHKSUM_TILED( ' drag AAA ',aim_drag,1,bi,bj,myThid )
160    
161  #ifdef OLD_AIM_GRIG_MAPPING  #ifdef OLD_AIM_INTERFACE
162  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
163  c - to reproduce old results :  C - to reproduce old results (coupled run, summer 2000) :
164        IF (kLev.eq.1) THEN        IF (kLev.eq.1) THEN
165         DO j=jMin,jMax         DO j=jMin,jMax
166          DO i=iMin,iMax          DO i=iMin,iMax
167           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN            vStr_tmp = -aim_drag(i,j,bi,bj)*vVel(i,j,kLev,bi,bj)
168            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
169       &     -aim_drag(i,j-1,bi,bj)       &                       + vStr_tmp*horiVertRatio*recip_drF(kLev)
170       &         *0.25*(vVel(i,j-1,kLev,bi,bj)+vVel(i,j,kLev,bi,bj))  #ifdef ALLOW_TIMEAVE
171       &     -aim_drag(i,j,bi,bj)            VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
172       &         *0.25*(vVel(i,j,kLev,bi,bj)+vVel(i,j+1,kLev,bi,bj))  #endif
          ENDIF  
173          ENDDO          ENDDO
174         ENDDO         ENDDO
175        ELSE        ELSE
176         DO j=jMin,jMax         DO j=jMin,jMax
177          DO i=iMin,iMax          DO i=iMin,iMax
178           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( maskS(i,j,kLev-1,bi,bj) .EQ. 0. ) THEN
179              vStr_tmp = -aim_drag(i,j,bi,bj)*vVel(i,j,kLev,bi,bj)
180    #ifdef ALLOW_TIMEAVE
181              VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
182    #endif
183    C - put the same bug as in the old setup :
184              IF ( maskC(i,j,kLev-1,bi,bj) .EQ. 1. ) vStr_tmp = 0.
185            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
186       &     -(1.-maskC(i,j-1,kLev-1,bi,bj))*aim_drag(i,j-1,bi,bj)       &                       + vStr_tmp*horiVertRatio*recip_drF(kLev)
      &         *0.25*(vVel(i,j-1,kLev,bi,bj)+vVel(i,j,kLev,bi,bj))  
      &     -(1.-maskC(i, j ,kLev-1,bi,bj))*aim_drag(i, j ,bi,bj)  
      &         *0.25*(vVel(i,j,kLev,bi,bj)+vVel(i,j+1,kLev,bi,bj))  
187           ENDIF           ENDIF
188          ENDDO          ENDDO
189         ENDDO         ENDDO
190        ENDIF        ENDIF
191  #else  /* OLD_AIM_GRIG_MAPPING */  #else  /* OLD_AIM_INTERFACE */
192  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
193        IF (kLev.eq.1) THEN        IF (kLev.eq.1) THEN
194         DO j=jMin,jMax         DO j=jMin,jMax
195          DO i=iMin,iMax          DO i=iMin,iMax
196           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN
197            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)            vStr_tmp =
198       &     -( aim_drag(i,j-1,bi,bj)+aim_drag(i,j,bi,bj) )       &     -( aim_drag(i,j-1,bi,bj)+aim_drag(i,j,bi,bj) )
199       &       * 0.5 _d 0 * vVel(i,j,kLev,bi,bj)       &       * 0.5 _d 0 * vVel(i,j,kLev,bi,bj)
200              gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
201         &                       + vStr_tmp*horiVertRatio*recip_drF(kLev)
202    #ifdef ALLOW_TIMEAVE
203              VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
204    #endif
205           ENDIF           ENDIF
206          ENDDO          ENDDO
207         ENDDO         ENDDO
# Line 185  c---+----1----+----2----+----3----+----4 Line 209  c---+----1----+----2----+----3----+----4
209         DO j=jMin,jMax         DO j=jMin,jMax
210          DO i=iMin,iMax          DO i=iMin,iMax
211           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN           IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN
212            gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)            vStr_tmp =
213       &     -( (1.-maskC(i,j-1,kLev-1,bi,bj))*aim_drag(i,j-1,bi,bj)       &     -( (1.-maskC(i,j-1,kLev-1,bi,bj))*aim_drag(i,j-1,bi,bj)
214       &       +(1.-maskC(i, j ,kLev-1,bi,bj))*aim_drag(i, j ,bi,bj)       &       +(1.-maskC(i, j ,kLev-1,bi,bj))*aim_drag(i, j ,bi,bj)
215       &      )* 0.5 _d 0 * vVel(i,j,kLev,bi,bj)       &      )* 0.5 _d 0 * vVel(i,j,kLev,bi,bj)
216              gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
217         &                       + vStr_tmp*horiVertRatio*recip_drF(kLev)
218    #ifdef ALLOW_TIMEAVE
219              VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
220    #endif
221           ENDIF           ENDIF
222          ENDDO          ENDDO
223         ENDDO         ENDDO
224        ENDIF        ENDIF
225  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
226  #endif /* OLD_AIM_GRIG_MAPPING */  #endif /* OLD_AIM_INTERFACE */
227    
228  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
229    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22