/[MITgcm]/MITgcm_contrib/atnguyen/code_21Dec2012_saltplume/kpp_routines.F
ViewVC logotype

Diff of /MITgcm_contrib/atnguyen/code_21Dec2012_saltplume/kpp_routines.F

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

revision 1.2 by atn, Tue Apr 29 06:49:40 2014 UTC revision 1.4 by atn, Thu May 1 21:30:48 2014 UTC
# Line 26  c*************************************** Line 26  c***************************************
26       I       kmtj, shsq, dvsq, ustar, msk       I       kmtj, shsq, dvsq, ustar, msk
27       I     , bo, bosol       I     , bo, bosol
28  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
29       I     , boplume,SPDepth       I     , boplume,SPDepth
 #endif /* ndef SALT_PLUME_VOLUME */  
30  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
31       I     , dbloc, Ritop, coriol       I     , dbloc, Ritop, coriol
32       I     , diffusKzS, diffusKzT       I     , diffusKzS, diffusKzT
# Line 74  c     dvsq   (imt,Nr)  - (velocity shear Line 72  c     dvsq   (imt,Nr)  - (velocity shear
72  c     ustar  (imt)     - surface friction velocity                        (m/s)  c     ustar  (imt)     - surface friction velocity                        (m/s)
73  c     bo     (imt)     - surface turbulent buoy. forcing              (m^2/s^3)  c     bo     (imt)     - surface turbulent buoy. forcing              (m^2/s^3)
74  c     bosol  (imt)     - radiative buoyancy forcing                   (m^2/s^3)  c     bosol  (imt)     - radiative buoyancy forcing                   (m^2/s^3)
75  c     boplume(imt)     - haline buoyancy forcing                      (m^2/s^3)  c     boplume(imt,Nr)  - haline buoyancy forcing                      (m^2/s^3)
76  c     dbloc  (imt,Nr)  - local delta buoyancy across interfaces         (m/s^2)  c     dbloc  (imt,Nr)  - local delta buoyancy across interfaces         (m/s^2)
77  c     dblocSm(imt,Nr)  - horizontally smoothed dbloc                    (m/s^2)  c     dblocSm(imt,Nr)  - horizontally smoothed dbloc                    (m/s^2)
78  c                          stored in ghat to save space  c                          stored in ghat to save space
# Line 97  c           where hbl(i,j) -> hbl((j-1)* Line 95  c           where hbl(i,j) -> hbl((j-1)*
95        _RL bo       (imt   )        _RL bo       (imt   )
96        _RL bosol    (imt   )        _RL bosol    (imt   )
97  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
98  #ifndef SALT_PLUME_VOLUME        _RL boplume  (imt,Nr)
       _RL boplume  (imt   )  
99        _RL SPDepth  (imt   )        _RL SPDepth  (imt   )
 #endif /* ndef SALT_PLUME_VOLUME */  
100  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
101        _RL dbloc    (imt,Nr)        _RL dbloc    (imt,Nr)
102        _RL Ritop    (imt,Nr)        _RL Ritop    (imt,Nr)
# Line 195  c--------------------------------------- Line 191  c---------------------------------------
191       I       kmtj       I       kmtj
192       I     , dvsq, dbloc, Ritop, ustar, bo, bosol       I     , dvsq, dbloc, Ritop, ustar, bo, bosol
193  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
194       I     , boplume,SPDepth       I     , boplume,SPDepth
 #endif /* ndef SALT_PLUME_VOLUME */  
195  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
196       I     , coriol       I     , coriol
197       I     , ikppkey       I     , ikppkey
# Line 276  c*************************************** Line 270  c***************************************
270       I       kmtj       I       kmtj
271       I     , dvsq, dbloc, Ritop, ustar, bo, bosol       I     , dvsq, dbloc, Ritop, ustar, bo, bosol
272  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
273       I     , boplume,SPDepth       I     , boplume,SPDepth
 #endif /* ndef SALT_PLUME_VOLUME */  
274  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
275       I     , coriol       I     , coriol
276       I     , ikppkey       I     , ikppkey
# Line 347  c coriol    : Coriolis parameter Line 339  c coriol    : Coriolis parameter
339        _RL coriol  (imt)        _RL coriol  (imt)
340        integer ikppkey        integer ikppkey
341  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
342  #ifndef SALT_PLUME_VOLUME        _RL boplume (imt,Nr)
       _RL boplume (imt)  
343        _RL SPDepth (imt)        _RL SPDepth (imt)
 #endif /* ndef SALT_PLUME_VOLUME */  
344  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
345    
346  c  output  c  output
# Line 378  c wm, ws    : turbulent velocity scales Line 368  c wm, ws    : turbulent velocity scales
368        _RL wm(imt), ws(imt)        _RL wm(imt), ws(imt)
369        _RL worka(imt)        _RL worka(imt)
370        _RL bvsq, vtsq, hekman, hmonob, hlimit, tempVar1, tempVar2        _RL bvsq, vtsq, hekman, hmonob, hlimit, tempVar1, tempVar2
371        integer i, kl        integer i, k, kl
372    
373        _RL         p5    , eins        _RL         p5    , eins
374        parameter ( p5=0.5, eins=1.0 )        parameter ( p5=0.5, eins=1.0 )
# Line 450  c     compute bfsfc= Bo + radiative cont Line 440  c     compute bfsfc= Bo + radiative cont
440    
441           end do           end do
442  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
443  c     compute bfsfc = plume fraction at hbf * zgrid  c     compute bfsfc = plume fraction at hbf * zgrid
444           IF ( useSALT_PLUME ) THEN           IF ( useSALT_PLUME ) THEN
445             do i = 1, imt             do i = 1, imt
446                worka(i) = zgrid(kl)                worka(i) = zgrid(kl)
447             enddo             enddo
448    #ifndef SALT_PLUME_VOLUME
449    catn: in original way: accumulate all fractions of boplume above zgrid(kl)
450             call SALT_PLUME_FRAC(             call SALT_PLUME_FRAC(
451       I         imt, hbf,SPDepth,       I         imt, hbf,SPDepth,
452       U         worka,       U         worka,
453       I         myTime, myIter, myThid)       I         myTime, myIter, myThid)
454             do i = 1, imt             do i = 1, imt
455                bfsfc(i) = bfsfc(i) + boplume(i)*(worka(i))                bfsfc(i) = bfsfc(i) + boplume(i,1)*(worka(i))
456             enddo             enddo
457           ENDIF  #else /* def SALT_PLUME_VOLUME */
458    catn: in vol way: need to integrate down to hbl, so first locate
459    c     k level associated with this hbl, then sum up all SPforc[T,S]
460               DO i = 1, imt
461                DO k = 1, kl
462                 IF (abs(worka(i)).GE.abs( zgrid(k)-hwide(k)/2.0 )) THEN
463                  bfsfc(i) = bfsfc(i) + boplume(i,k)
464                 ENDIF
465                ENDDO
466               ENDDO
467  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
468             ENDIF
469  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
470    
471  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 587  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 588  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
588        end do        end do
589    
590  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
591        IF ( useSALT_PLUME ) THEN        IF ( useSALT_PLUME ) THEN
592    #ifndef SALT_PLUME_VOLUME
593          do i = 1, imt          do i = 1, imt
594             worka(i) = hbl(i)             worka(i) = hbl(i)
595          enddo          enddo
# Line 599  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 600  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
600          do i = 1, imt          do i = 1, imt
601             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))
602          enddo          enddo
603        ENDIF  #else /* def SALT_PLUME_VOLUME */
604            DO i = 1, imt
605             DO k = 1, Nr
606              IF (hbl(i).GE.abs( zgrid(k)-hwide(k)/2.0 )) THEN
607               bfsfc(i) = bfsfc(i) + boplume(i,k)
608              ENDIF
609             ENDDO
610            ENDDO
611  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
612          ENDIF
613  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
614  CADJ store bfsfc = comlev1_kpp  CADJ store bfsfc = comlev1_kpp
615  CADJ &   , key=ikppkey, kind=isbyte,  CADJ &   , key=ikppkey, kind=isbyte,
# Line 685  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 694  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
694        end do        end do
695    
696  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
697        IF ( useSALT_PLUME ) THEN        IF ( useSALT_PLUME ) THEN
698    #ifndef SALT_PLUME_VOLUME
699          do i = 1, imt          do i = 1, imt
700             worka(i) = hbl(i)             worka(i) = hbl(i)
701          enddo          enddo
# Line 697  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 706  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
706          do i = 1, imt          do i = 1, imt
707             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))
708          enddo          enddo
709        ENDIF  #else /* def SALT_PLUME_VOLUME */
710            DO i = 1, imt
711             DO k = 1, Nr
712              IF (hbl(i).GE.abs( zgrid(k)-hwide(k)/2.0 )) THEN
713               bfsfc(i) = bfsfc(i) + boplume(i,k)
714              ENDIF
715             ENDDO
716            ENDDO
717  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
718          ENDIF
719  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
720  CADJ store bfsfc = comlev1_kpp  CADJ store bfsfc = comlev1_kpp
721  CADJ &   , key=ikppkey, kind=isbyte,  CADJ &   , key=ikppkey, kind=isbyte,

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

  ViewVC Help
Powered by ViewVC 1.1.22