/[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.49 by dimitri, Mon Sep 24 01:17:25 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 341  c     IF ( usePenetratingSW ) THEN Line 344  c     IF ( usePenetratingSW ) THEN
344           gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)           gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
345       &   -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)
346       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))
347       &    *recip_Cp*recip_rhoConst       &    *recip_Cp*mass2rUnit
348       &    *recip_drF(klev)*_recip_hFacC(i,j,kLev,bi,bj)       &    *recip_drF(klev)*_recip_hFacC(i,j,kLev,bi,bj)
349          ENDDO          ENDDO
350         ENDDO         ENDDO
# Line 349  c     ENDIF Line 352  c     ENDIF
352  #endif  #endif
353    
354  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
355         if (useRBCS) then         IF (useRBCS) THEN
356            call RBCS_ADD_TENDENCY(bi,bj,klev, 1,            CALL RBCS_ADD_TENDENCY(bi,bj,klev, 1,
357       &                            myTime, myThid )       &                            myTime, myThid )
358         endif         ENDIF
359  #endif  #endif
360    
361  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
# 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          integer two2
428          _RL minusone
429          parameter (two2=2,minusone=-1.)
430          _RL plumekb(two2)
431          _RL SPdepth(two2)
432          INTEGER kp1
433    #endif /* ALLOW_SALT_PLUME */
434    
435        IF ( fluidIsAir ) THEN        IF ( fluidIsAir ) THEN
436         kSurface = 0         kSurface = 0
# Line 453  C     Add fresh-water in top-layer Line 470  C     Add fresh-water in top-layer
470         ENDDO         ENDDO
471        ENDIF        ENDIF
472    
473    cph#ifndef ALLOW_AUTODIFF_TAMC
474    cph I didnt put this ifndef here.
475        IF (linFSConserveTr) THEN        IF (linFSConserveTr) THEN
476         DO j=1,sNy         DO j=1,sNy
477          DO i=1,sNx          DO i=1,sNx
# Line 463  C     Add fresh-water in top-layer Line 482  C     Add fresh-water in top-layer
482          ENDDO          ENDDO
483         ENDDO         ENDDO
484        ENDIF        ENDIF
485    cph#endif /* ndfef ALLOW_AUTODIFF_TAMC */
486    
487  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
488        IF ( useShelfIce )        IF ( useShelfIce )
# Line 471  C     Add fresh-water in top-layer Line 491  C     Add fresh-water in top-layer
491       I     myTime, myThid )       I     myTime, myThid )
492  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
493    
494    #ifdef ALLOW_SALT_PLUME
495    C saltPlume is the amount of salt rejected by ice while freezing;
496    C it is here redistributed to multiple vertical levels as per
497    C Duffy et al. (GRL 1999)
498           DO j=1,sNy
499            DO i=1,sNx
500    C Penetrating saltplume fraction:
501              plumekb(1)=abs(rF(klev))
502              plumekb(2)=abs(rF(klev+1))
503              SPdepth(1)=SaltPlumeDepth(i,j,bi,bj)
504              SPdepth(2)=SaltPlumeDepth(i,j,bi,bj)
505              CALL PLUMEFRAC(
506         I                   two2,minusone,SPdepth,
507         U                   plumekb,
508         I                   myTime, 1, myThid )
509              kp1 = klev+1
510              IF (klev.EQ.Nr) THEN
511               kp1 = klev
512               plumekb(2)=0. _d 0
513              ENDIF
514              saltPlume = 0.
515    #ifdef ALLOW_SEAICE
516              IF ( saltFlux(i,j,bi,bj) .GT. 0. .AND.
517         &         salt(i,j,kSurface,bi,bj)  .GT. SEAICE_salinity ) THEN
518                saltPlume = saltPlumeFlux(i,j,bi,bj)
519              ENDIF
520    #endif /* ALLOW_SEAICE */
521              IF ( SaltPlumeDepth(i,j,bi,bj) .GT. -rF(kLev) ) THEN
522               gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
523         &          +saltPlume*(plumekb(1)*maskC(i,j,klev,bi,bj)
524         &                     -plumekb(2)*maskC(i,j,kp1, bi,bj))
525         &          *mass2rUnit
526         &          *recip_drF(kLev)*_recip_hFacC(i,j,kLev,bi,bj)
527              ENDIF
528            ENDDO
529           ENDDO
530    #endif /* ALLOW_SALT_PLUME */
531    
532  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
533         if (useRBCS) then         IF (useRBCS) THEN
534            call RBCS_ADD_TENDENCY(bi,bj,klev, 2,            CALL RBCS_ADD_TENDENCY(bi,bj,klev, 2,
535       &                            myTime, myThid )       &                            myTime, myThid )
536         endif         ENDIF
537  #endif  #endif /* ALLOW_RBCS */
538    
539  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
540        IF (useOBCS) THEN        IF (useOBCS) THEN
# Line 484  C     Add fresh-water in top-layer Line 542  C     Add fresh-water in top-layer
542       I           iMin,iMax, jMin,jMax, bi,bj, kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
543       I           myTime, myThid )       I           myTime, myThid )
544        ENDIF        ENDIF
545  #endif  #endif /* ALLOW_OBCS */
546    
547        RETURN        RETURN
548        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22