/[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.45 by dimitri, Mon Jul 23 21:18:13 2007 UTC revision 1.57 by dimitri, Mon Apr 26 20:37:02 2010 UTC
# Line 71  C--   Forcing term Line 71  C--   Forcing term
71       &                      myTime, myThid )       &                      myTime, myThid )
72  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
73    
 #ifdef ALLOW_MYPACKAGE  
       IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_U(  
      &                      iMin,iMax, jMin,jMax, bi,bj, kLev,  
      &                      myTime, myThid )  
 #endif /* ALLOW_MYPACKAGE */  
   
74  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
75        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
76  c      DO j=1,sNy  c      DO j=1,sNy
# Line 90  C-jmc: Without CD-scheme, this is OK ; b Line 84  C-jmc: Without CD-scheme, this is OK ; b
84         ENDDO         ENDDO
85        ENDIF        ENDIF
86    
87  #if (defined (ALLOW_TAU_EDDY))  #ifdef ALLOW_EDDYPSI
88         CALL TAUEDDY_EXTERNAL_FORCING_U(         CALL TAUEDDY_EXTERNAL_FORCING_U(
89       I           iMin,iMax, jMin,jMax, bi,bj, kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
90       I           myTime, myThid )       I           myTime, myThid )
# Line 104  C-jmc: Without CD-scheme, this is OK ; b Line 98  C-jmc: Without CD-scheme, this is OK ; b
98        ENDIF        ENDIF
99  #endif  #endif
100    
101    #ifdef ALLOW_MYPACKAGE
102          IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_U(
103         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
104         &                      myTime, myThid )
105    #endif /* ALLOW_MYPACKAGE */
106    
107        RETURN        RETURN
108        END        END
109    
# Line 175  C--   Forcing term Line 175  C--   Forcing term
175       &                      myTime, myThid )       &                      myTime, myThid )
176  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
177    
 #ifdef ALLOW_MYPACKAGE  
       IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_V(  
      &                      iMin,iMax, jMin,jMax, bi,bj, kLev,  
      &                      myTime, myThid )  
 #endif /* ALLOW_MYPACKAGE */  
   
178  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
179        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
180         DO j=1,sNy+1         DO j=1,sNy+1
# Line 194  C-jmc: Without CD-scheme, this is OK ; b Line 188  C-jmc: Without CD-scheme, this is OK ; b
188         ENDDO         ENDDO
189        ENDIF        ENDIF
190    
191  #if (defined (ALLOW_TAU_EDDY))  #ifdef ALLOW_EDDYPSI
192         CALL TAUEDDY_EXTERNAL_FORCING_V(         CALL TAUEDDY_EXTERNAL_FORCING_V(
193       I           iMin,iMax, jMin,jMax, bi,bj, kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
194       I           myTime, myThid )       I           myTime, myThid )
# Line 208  C-jmc: Without CD-scheme, this is OK ; b Line 202  C-jmc: Without CD-scheme, this is OK ; b
202        ENDIF        ENDIF
203  #endif  #endif
204    
205    #ifdef ALLOW_MYPACKAGE
206          IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_V(
207         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
208         &                      myTime, myThid )
209    #endif /* ALLOW_MYPACKAGE */
210    
211        RETURN        RETURN
212        END        END
213    
# Line 287  C--   Forcing term Line 287  C--   Forcing term
287       &                      myTime, myThid )       &                      myTime, myThid )
288  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
289    
290  #ifdef ALLOW_MYPACKAGE  #ifdef ALLOW_ADDFLUID
291        IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_T(        IF ( selectAddFluid.NE.0 .AND. temp_addMass.NE.UNSET_RL ) THEN
292       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,         IF ( ( selectAddFluid.GE.1 .AND. nonlinFreeSurf.GT.0 )
293       &                      myTime, myThid )       &      .OR. convertFW2Salt.EQ.-1. _d 0 ) THEN
294  #endif /* ALLOW_MYPACKAGE */           DO j=1,sNy
295              DO i=1,sNx
296                gT(i,j,kLev,bi,bj) = gT(i,j,kLev,bi,bj)
297         &        + addMass(i,j,kLev,bi,bj)*mass2rUnit
298         &          *( temp_addMass - theta(i,j,kLev,bi,bj) )
299         &          *recip_rA(i,j,bi,bj)
300         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
301    C    &          *recip_deepFac2C(kLev)*recip_rhoFacC(kLev)
302              ENDDO
303             ENDDO
304           ELSE
305             DO j=1,sNy
306              DO i=1,sNx
307                gT(i,j,kLev,bi,bj) = gT(i,j,kLev,bi,bj)
308         &        + addMass(i,j,kLev,bi,bj)*mass2rUnit
309         &          *( temp_addMass - tRef(kLev) )
310         &          *recip_rA(i,j,bi,bj)
311         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
312    C    &          *recip_deepFac2C(kLev)*recip_rhoFacC(kLev)
313              ENDDO
314             ENDDO
315           ENDIF
316          ENDIF
317    #endif /* ALLOW_ADDFLUID */
318    
319  C     Add heat in top-layer  C     Add heat in top-layer
320        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
# Line 304  C     Add heat in top-layer Line 327  C     Add heat in top-layer
327         ENDDO         ENDDO
328        ENDIF        ENDIF
329    
 #ifndef ALLOW_AUTODIFF_TAMC  
330        IF (linFSConserveTr) THEN        IF (linFSConserveTr) THEN
331         DO j=1,sNy         DO j=1,sNy
332          DO i=1,sNx          DO i=1,sNx
# Line 315  C     Add heat in top-layer Line 337  C     Add heat in top-layer
337          ENDDO          ENDDO
338         ENDDO         ENDDO
339        ENDIF        ENDIF
 #endif /* ndfef ALLOW_AUTODIFF_TAMC */  
340    
341  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
342        IF ( useShelfIce )        IF ( useShelfIce )
# Line 324  C     Add heat in top-layer Line 345  C     Add heat in top-layer
345       I     myTime, myThid )       I     myTime, myThid )
346  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
347    
348    #ifdef ALLOW_ICEFRONT
349          IF ( useICEFRONT )
350         &     CALL ICEFRONT_TENDENCY_APPLY_T(
351         &     bi,bj, kLev, myTime, myThid )
352    #endif /* ALLOW_ICEFRONT */
353    
354  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
355  C Penetrating SW radiation  C Penetrating SW radiation
356  c     IF ( usePenetratingSW ) THEN  c     IF ( usePenetratingSW ) THEN
# Line 343  c     IF ( usePenetratingSW ) THEN Line 370  c     IF ( usePenetratingSW ) THEN
370           gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)           gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
371       &   -Qsw(i,j,bi,bj)*(swfracb(1)*maskC(i,j,klev,bi,bj)       &   -Qsw(i,j,bi,bj)*(swfracb(1)*maskC(i,j,klev,bi,bj)
372       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))
373       &    *recip_Cp*recip_rhoConst       &    *recip_Cp*mass2rUnit
374       &    *recip_drF(klev)*_recip_hFacC(i,j,kLev,bi,bj)       &    *recip_drF(klev)*_recip_hFacC(i,j,kLev,bi,bj)
375          ENDDO          ENDDO
376         ENDDO         ENDDO
# Line 351  c     ENDIF Line 378  c     ENDIF
378  #endif  #endif
379    
380  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
381         if (useRBCS) then         IF (useRBCS) THEN
382            call RBCS_ADD_TENDENCY(bi,bj,klev, 1,            CALL RBCS_ADD_TENDENCY(bi,bj,klev, 1,
383       &                            myTime, myThid )       &                            myTime, myThid )
384         endif         ENDIF
385  #endif  #endif
386    
387  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
# Line 365  c     ENDIF Line 392  c     ENDIF
392        ENDIF        ENDIF
393  #endif  #endif
394    
395    #ifdef ALLOW_MYPACKAGE
396          IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_T(
397         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
398         &                      myTime, myThid )
399    #endif /* ALLOW_MYPACKAGE */
400    
401        RETURN        RETURN
402        END        END
403    
# Line 396  C     == Global data == Line 429  C     == Global data ==
429  #include "DYNVARS.h"  #include "DYNVARS.h"
430  #include "FFIELDS.h"  #include "FFIELDS.h"
431  #include "SURFACE.h"  #include "SURFACE.h"
 #ifdef ALLOW_SALT_PLUME  
 #ifdef ALLOW_SEAICE  
 #include "SEAICE_PARAMS.h"  
 #endif /* ALLOW_SEAICE */  
 #endif /* ALLOW_SALT_PLUME */  
432    
433  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
434  C     == Routine arguments ==  C     == Routine arguments ==
# Line 421  C     kSurface  :: index of surface laye Line 449  C     kSurface  :: index of surface laye
449        INTEGER i, j        INTEGER i, j
450        INTEGER kSurface        INTEGER kSurface
451  CEOP  CEOP
 #ifdef ALLOW_SALT_PLUME  
       _RL saltPlume  
 #endif /* ALLOW_SALT_PLUME */  
452    
453        IF ( fluidIsAir ) THEN        IF ( fluidIsAir ) THEN
454         kSurface = 0         kSurface = 0
# Line 446  C--   Forcing term Line 471  C--   Forcing term
471       &                      myTime, myThid )       &                      myTime, myThid )
472  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
473    
474  #ifdef ALLOW_MYPACKAGE  #ifdef ALLOW_ADDFLUID
475        IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_S(        IF ( selectAddFluid.NE.0 .AND. salt_addMass.NE.UNSET_RL ) THEN
476       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,         IF ( ( selectAddFluid.GE.1 .AND. nonlinFreeSurf.GT.0 )
477       &                      myTime, myThid )       &      .OR. convertFW2Salt.EQ.-1. _d 0 ) THEN
478  #endif /* ALLOW_MYPACKAGE */           DO j=1,sNy
479              DO i=1,sNx
480                gS(i,j,kLev,bi,bj) = gS(i,j,kLev,bi,bj)
481         &        + addMass(i,j,kLev,bi,bj)*mass2rUnit
482         &          *( salt_addMass - salt(i,j,kLev,bi,bj) )
483         &          *recip_rA(i,j,bi,bj)
484         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
485    C    &          *recip_deepFac2C(kLev)*recip_rhoFacC(kLev)
486              ENDDO
487             ENDDO
488           ELSE
489             DO j=1,sNy
490              DO i=1,sNx
491                gS(i,j,kLev,bi,bj) = gS(i,j,kLev,bi,bj)
492         &        + addMass(i,j,kLev,bi,bj)*mass2rUnit
493         &          *( salt_addMass - sRef(kLev) )
494         &          *recip_rA(i,j,bi,bj)
495         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
496    C    &          *recip_deepFac2C(kLev)*recip_rhoFacC(kLev)
497              ENDDO
498             ENDDO
499           ENDIF
500          ENDIF
501    #endif /* ALLOW_ADDFLUID */
502    
503  C     Add fresh-water in top-layer  C     Add fresh-water in top-layer
504        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
# Line 463  C     Add fresh-water in top-layer Line 511  C     Add fresh-water in top-layer
511         ENDDO         ENDDO
512        ENDIF        ENDIF
513    
 #ifndef ALLOW_AUTODIFF_TAMC  
514        IF (linFSConserveTr) THEN        IF (linFSConserveTr) THEN
515         DO j=1,sNy         DO j=1,sNy
516          DO i=1,sNx          DO i=1,sNx
# Line 474  C     Add fresh-water in top-layer Line 521  C     Add fresh-water in top-layer
521          ENDDO          ENDDO
522         ENDDO         ENDDO
523        ENDIF        ENDIF
 #endif /* ndfef ALLOW_AUTODIFF_TAMC */  
524    
525  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
526        IF ( useShelfIce )        IF ( useShelfIce )
# Line 483  C     Add fresh-water in top-layer Line 529  C     Add fresh-water in top-layer
529       I     myTime, myThid )       I     myTime, myThid )
530  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
531    
532    #ifdef ALLOW_ICEFRONT
533          IF ( useICEFRONT )
534         &     CALL ICEFRONT_TENDENCY_APPLY_S(
535         &     bi,bj, kLev, myTime, myThid )
536    #endif /* ALLOW_ICEFRONT */
537    
538  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
539  C saltPlume is the amount of salt rejected by ice while freezing;        IF ( useSALT_PLUME )
540  C it is here redistributed to multiple vertical levels as per       &     CALL SALT_PLUME_TENDENCY_APPLY_S(
541  C Duffy et al. (GRL 1999)       I     iMin,iMax, jMin,jMax, bi,bj, kLev,
542         DO j=1,sNy       I     myTime, myThid )
         DO i=1,sNx  
           saltPlume = 0.  
 #ifdef ALLOW_SEAICE  
           IF ( saltFlux(i,j,bi,bj) .GT. 0. .AND.  
      &         salt(i,j,kSurface,bi,bj)  .GT. SEAICE_salinity ) THEN  
            saltPlume = (salt(i,j,kSurface,bi,bj)-SEAICE_salinity) *  
      &          saltFlux(i,j,bi,bj) / salt(i,j,kSurface,bi,bj)  
           ENDIF  
 #endif /* ALLOW_SEAICE */  
           IF ( SaltPlumeDepth(i,j,bi,bj) .GT. -rF(kLev) ) THEN  
            gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)  
      &          +saltPlume*horiVertRatio*recip_rhoConst  
      &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)  
      &          *min(drF(kLev),SaltPlumeDepth(i,j,bi,bj)+rF(kLev))  
      &          /SaltPlumeDepth(i,j,bi,bj)  
           ENDIF  
         ENDDO  
        ENDDO  
543  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
544    
545  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
546         if (useRBCS) then         IF (useRBCS) THEN
547            call RBCS_ADD_TENDENCY(bi,bj,klev, 2,            CALL RBCS_ADD_TENDENCY(bi,bj,klev, 2,
548       &                            myTime, myThid )       &                            myTime, myThid )
549         endif         ENDIF
550  #endif /* ALLOW_RBCS */  #endif /* ALLOW_RBCS */
551    
552  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
# Line 523  C Duffy et al. (GRL 1999) Line 557  C Duffy et al. (GRL 1999)
557        ENDIF        ENDIF
558  #endif /* ALLOW_OBCS */  #endif /* ALLOW_OBCS */
559    
560    #ifdef ALLOW_MYPACKAGE
561          IF ( useMYPACKAGE ) CALL MYPACKAGE_TENDENCY_APPLY_S(
562         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
563         &                      myTime, myThid )
564    #endif /* ALLOW_MYPACKAGE */
565    
566        RETURN        RETURN
567        END        END

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.57

  ViewVC Help
Powered by ViewVC 1.1.22