/[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.40 by dfer, Fri Jan 5 01:29:31 2007 UTC revision 1.46 by heimbach, Tue Aug 14 20:58:24 2007 UTC
# Line 304  C     Add heat in top-layer Line 304  C     Add heat in top-layer
304         ENDDO         ENDDO
305        ENDIF        ENDIF
306    
307    cph#ifndef ALLOW_AUTODIFF_TAMC
308    cph I didnt put this ifndef here.
309        IF (linFSConserveTr) THEN        IF (linFSConserveTr) THEN
310         DO j=1,sNy         DO j=1,sNy
311          DO i=1,sNx          DO i=1,sNx
# Line 314  C     Add heat in top-layer Line 316  C     Add heat in top-layer
316          ENDDO          ENDDO
317         ENDDO         ENDDO
318        ENDIF        ENDIF
319    cph#endif /* ndfef ALLOW_AUTODIFF_TAMC */
320    
321  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
322        IF ( useShelfIce )        IF ( useShelfIce )
# Line 328  c     IF ( usePenetratingSW ) THEN Line 331  c     IF ( usePenetratingSW ) THEN
331         swfracb(1)=abs(rF(klev))         swfracb(1)=abs(rF(klev))
332         swfracb(2)=abs(rF(klev+1))         swfracb(2)=abs(rF(klev+1))
333         CALL SWFRAC(         CALL SWFRAC(
334       I     two,minusone,       I             two, minusone,
335       I     myTime,myThid,       U             swfracb,
336       U     swfracb)       I             myTime, 1, myThid )
337         kp1 = klev+1         kp1 = klev+1
338         IF (klev.EQ.Nr) THEN         IF (klev.EQ.Nr) THEN
339          kp1 = klev          kp1 = klev
# Line 394  C     == Global data == Line 397  C     == Global data ==
397  #include "DYNVARS.h"  #include "DYNVARS.h"
398  #include "FFIELDS.h"  #include "FFIELDS.h"
399  #include "SURFACE.h"  #include "SURFACE.h"
400    #ifdef ALLOW_SALT_PLUME
401    #ifdef ALLOW_SEAICE
402    #include "SEAICE_PARAMS.h"
403    #endif /* ALLOW_SEAICE */
404    #endif /* ALLOW_SALT_PLUME */
405    
406  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
407  C     == Routine arguments ==  C     == Routine arguments ==
# Line 414  C     kSurface  :: index of surface laye Line 422  C     kSurface  :: index of surface laye
422        INTEGER i, j        INTEGER i, j
423        INTEGER kSurface        INTEGER kSurface
424  CEOP  CEOP
425    #ifdef ALLOW_SALT_PLUME
426          _RL saltPlume
427    #endif /* ALLOW_SALT_PLUME */
428    
429        IF ( fluidIsAir ) THEN        IF ( fluidIsAir ) THEN
430         kSurface = 0         kSurface = 0
# Line 453  C     Add fresh-water in top-layer Line 464  C     Add fresh-water in top-layer
464         ENDDO         ENDDO
465        ENDIF        ENDIF
466    
467    cph#ifndef ALLOW_AUTODIFF_TAMC
468    cph I didnt put this ifndef here.
469        IF (linFSConserveTr) THEN        IF (linFSConserveTr) THEN
470         DO j=1,sNy         DO j=1,sNy
471          DO i=1,sNx          DO i=1,sNx
# Line 463  C     Add fresh-water in top-layer Line 476  C     Add fresh-water in top-layer
476          ENDDO          ENDDO
477         ENDDO         ENDDO
478        ENDIF        ENDIF
479    cph#endif /* ndfef ALLOW_AUTODIFF_TAMC */
480    
481  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
482        IF ( useShelfIce )        IF ( useShelfIce )
# Line 471  C     Add fresh-water in top-layer Line 485  C     Add fresh-water in top-layer
485       I     myTime, myThid )       I     myTime, myThid )
486  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
487    
488    #ifdef ALLOW_SALT_PLUME
489    C saltPlume is the amount of salt rejected by ice while freezing;
490    C it is here redistributed to multiple vertical levels as per
491    C Duffy et al. (GRL 1999)
492           DO j=1,sNy
493            DO i=1,sNx
494              saltPlume = 0.
495    #ifdef ALLOW_SEAICE
496              IF ( saltFlux(i,j,bi,bj) .GT. 0. .AND.
497         &         salt(i,j,kSurface,bi,bj)  .GT. SEAICE_salinity ) THEN
498               saltPlume = (salt(i,j,kSurface,bi,bj)-SEAICE_salinity) *
499         &          saltFlux(i,j,bi,bj) / salt(i,j,kSurface,bi,bj)
500              ENDIF
501    #endif /* ALLOW_SEAICE */
502              IF ( SaltPlumeDepth(i,j,bi,bj) .GT. -rF(kLev) ) THEN
503               gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
504         &          +saltPlume*horiVertRatio*recip_rhoConst
505         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
506         &          *min(drF(kLev),SaltPlumeDepth(i,j,bi,bj)+rF(kLev))
507         &          /SaltPlumeDepth(i,j,bi,bj)
508              ENDIF
509            ENDDO
510           ENDDO
511    #endif /* ALLOW_SALT_PLUME */
512    
513  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
514         if (useRBCS) then         if (useRBCS) then
515            call RBCS_ADD_TENDENCY(bi,bj,klev, 2,            call RBCS_ADD_TENDENCY(bi,bj,klev, 2,
516       &                            myTime, myThid )       &                            myTime, myThid )
517         endif         endif
518  #endif  #endif /* ALLOW_RBCS */
519    
520  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
521        IF (useOBCS) THEN        IF (useOBCS) THEN
# Line 484  C     Add fresh-water in top-layer Line 523  C     Add fresh-water in top-layer
523       I           iMin,iMax, jMin,jMax, bi,bj, kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
524       I           myTime, myThid )       I           myTime, myThid )
525        ENDIF        ENDIF
526  #endif  #endif /* ALLOW_OBCS */
527    
528        RETURN        RETURN
529        END        END

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.46

  ViewVC Help
Powered by ViewVC 1.1.22