/[MITgcm]/MITgcm/model/src/external_forcing.F
ViewVC logotype

Diff of /MITgcm/model/src/external_forcing.F

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

revision 1.2 by cnh, Fri Nov 6 22:44:46 1998 UTC revision 1.7 by heimbach, Mon Sep 11 20:45:57 2000 UTC
# Line 22  C     == Global data == Line 22  C     == Global data ==
22  #include "GRID.h"  #include "GRID.h"
23  #include "DYNVARS.h"  #include "DYNVARS.h"
24  #include "FFIELDS.h"  #include "FFIELDS.h"
   
25  C     == Routine arguments ==  C     == Routine arguments ==
26  C     iMin - Working range of tile for applying forcing.  C     iMin - Working range of tile for applying forcing.
27  C     iMax  C     iMax
# Line 30  C     jMin Line 29  C     jMin
29  C     jMax  C     jMax
30  C     kLev  C     kLev
31        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
32        INTEGER myCurrentTime, myThid        _RL myCurrentTime
33          INTEGER myThid
34  CEndOfInterface  CEndOfInterface
35    
36  C     == Local variables ==  C     == Local variables ==
# Line 40  C     Loop counters Line 40  C     Loop counters
40  C--   Forcing term  C--   Forcing term
41  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
42        IF ( kLev .EQ. 1 ) THEN        IF ( kLev .EQ. 1 ) THEN
43           CALL EXTERNAL_FORCING_SURF_U(
44         &           iMin, iMax, jMin, jMax,bi,bj,myThid )
45         DO j=jMin,jMax         DO j=jMin,jMax
46          DO i=iMin,iMax          DO i=iMin,iMax
47           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
48       &    + foFacMom*fu(i,j,bi,bj)*_maskW(i,j,kLev,bi,bj)       &   +foFacMom*surfaceTendencyU(i,j,bi,bj)
49         &   *_maskW(i,j,kLev,bi,bj)
50          ENDDO          ENDDO
51         ENDDO         ENDDO
52        ENDIF        ENDIF
# Line 79  C     jMin Line 82  C     jMin
82  C     jMax  C     jMax
83  C     kLev  C     kLev
84        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
85        INTEGER myCurrentTime, myThid        _RL myCurrentTime
86          INTEGER myThid
87  CEndOfInterface  CEndOfInterface
88  C     == Local variables ==  C     == Local variables ==
89  C     Loop counters  C     Loop counters
# Line 88  C     Loop counters Line 92  C     Loop counters
92  C--   Forcing term  C--   Forcing term
93  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
94        IF ( kLev .EQ. 1 ) THEN        IF ( kLev .EQ. 1 ) THEN
95           CALL EXTERNAL_FORCING_SURF_V(
96         I           iMin, iMax, jMin, jMax,bi,bj,myThid )
97         DO j=jMin,jMax         DO j=jMin,jMax
98          DO i=iMin,iMax          DO i=iMin,iMax
99           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
100       &    + foFacMom*fv(i,j,bi,bj)*_maskS(i,j,kLev,bi,bj)       &   +foFacMom*surfaceTendencyV(i,j,bi,bj)
101         &   *_maskS(i,j,kLev,bi,bj)
102          ENDDO          ENDDO
103         ENDDO         ENDDO
104        ENDIF        ENDIF
# Line 119  C     == Global data == Line 126  C     == Global data ==
126  #include "GRID.h"  #include "GRID.h"
127  #include "DYNVARS.h"  #include "DYNVARS.h"
128  #include "FFIELDS.h"  #include "FFIELDS.h"
129    #ifdef SHORTWAVE_HEATING
130          integer    two, k
131          _RS one
132          parameter (two=2,one=1.)
133           _RS ztmp(two), swfracb(two)
134    #endif
135    
136    
137  C     == Routine arguments ==  C     == Routine arguments ==
138  C     iMin - Working range of tile for applying forcing.  C     iMin - Working range of tile for applying forcing.
# Line 128  C     jMax Line 142  C     jMax
142  C     kLev  C     kLev
143        _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
144        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
145        INTEGER myCurrentTime, myThid        _RL myCurrentTime
146          INTEGER myThid
147  CEndOfInterface  CEndOfInterface
148    
149  C     == Local variables ==  C     == Local variables ==
# Line 138  C     Loop counters Line 153  C     Loop counters
153  C--   Forcing term  C--   Forcing term
154  C     Add heat in top-layer  C     Add heat in top-layer
155        IF ( kLev .EQ. 1 ) THEN        IF ( kLev .EQ. 1 ) THEN
156           CALL EXTERNAL_FORCING_SURF_T(
157         I           iMin, iMax, jMin, jMax,bi,bj,myThid )
158         DO j=jMin,jMax         DO j=jMin,jMax
159          DO i=iMin,iMax          DO i=iMin,iMax
160           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
161       &  +maskC(i,j)*(       &     +maskC(i,j)*surfaceTendencyT(i,j,bi,bj)
      &   -lambdaThetaClimRelax*(theta(i,j,kLev,bi,bj)-SST(i,j,bi,bj))  
      &   -Qnet(i,j,bi,bj) )  
162          ENDDO          ENDDO
163         ENDDO         ENDDO
164        ENDIF        ENDIF
165    
166    #ifdef SHORTWAVE_HEATING
167    C Penetrating SW radiation
168          ztmp(1)=0.0
169          do k=1,klev-1
170             ztmp(1)=ztmp(1)-delZ(k)
171          enddo
172          ztmp(2)=ztmp(1)-delZ(klev)
173          call SWFRAC(two,one,ztmp, swfracb)
174          DO j=jMin,jMax
175           DO i=iMin,iMax
176            gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
177         &    +maskC(i,j)*Qsw(i,j,bi,bj)*(swfracb(1)-swfracb(2))
178           ENDDO
179          ENDDO
180    #endif
181        RETURN        RETURN
182        END        END
183  CStartOfInterface  CStartOfInterface
# Line 180  C     jMax Line 210  C     jMax
210  C     kLev  C     kLev
211        _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
212        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
213        INTEGER myCurrentTime, myThid        _RL myCurrentTime
214          INTEGER myThid
215  CEndOfInterface  CEndOfInterface
216    
217  C     == Local variables ==  C     == Local variables ==
# Line 190  C     Loop counters Line 221  C     Loop counters
221  C--   Forcing term  C--   Forcing term
222  C     Add fresh-water in top-layer  C     Add fresh-water in top-layer
223        IF ( kLev .EQ. 1 ) THEN        IF ( kLev .EQ. 1 ) THEN
224           CALL EXTERNAL_FORCING_SURF_S(
225         I           iMin, iMax, jMin, jMax,bi,bj,myThid )
226         DO j=jMin,jMax         DO j=jMin,jMax
227          DO i=iMin,iMax          DO i=iMin,iMax
228           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
229       &   +maskC(i,j)*(       &   +maskC(i,j)*surfaceTendencyS(i,j,bi,bj)
      &   -lambdaSaltClimRelax*(salt(i,j,kLev,bi,bj)-SSS(i,j,bi,bj))  
      &   +EmPmR(i,j,bi,bj) )  
230          ENDDO          ENDDO
231         ENDDO         ENDDO
232        ENDIF        ENDIF

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22