/[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.5 by atn, Fri May 2 05:46:01 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,Nrp1)- 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,0: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,0: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    c            DO k = 1, kl
462    c             IF (abs(worka(i)).GE.(abs(zgrid(k))-hwide(k)/2.0) THEN
463    c              bfsfc(i) = bfsfc(i) + boplume(i,k)
464    c             ENDIF
465    c            ENDDO
466                 bfsfc(i) = bfsfc(i) + boplume(i,kbl(i))
467               ENDDO
468  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
469             ENDIF
470  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
471    
472  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 587  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 589  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
589        end do        end do
590    
591  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
592        IF ( useSALT_PLUME ) THEN        IF ( useSALT_PLUME ) THEN
593    #ifndef SALT_PLUME_VOLUME
594          do i = 1, imt          do i = 1, imt
595             worka(i) = hbl(i)             worka(i) = hbl(i)
596          enddo          enddo
# Line 599  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 601  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
601          do i = 1, imt          do i = 1, imt
602             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))
603          enddo          enddo
604        ENDIF  #else /* def SALT_PLUME_VOLUME */
605            DO i = 1, imt
606    c         DO k = 1, Nr
607    c          IF (hbl(i).GE.(abs(zgrid(k))-hwide(k)/2.0) THEN
608    c           bfsfc(i) = bfsfc(i) + boplume(i,k)
609    c          ENDIF
610    c         ENDDO
611               bfsfc(i) = bfsfc(i) + boplume(i,kbl(i))
612            ENDDO
613  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
614          ENDIF
615  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
616  CADJ store bfsfc = comlev1_kpp  CADJ store bfsfc = comlev1_kpp
617  CADJ &   , key=ikppkey, kind=isbyte,  CADJ &   , key=ikppkey, kind=isbyte,
# Line 685  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 696  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
696        end do        end do
697    
698  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
 #ifndef SALT_PLUME_VOLUME  
699        IF ( useSALT_PLUME ) THEN        IF ( useSALT_PLUME ) THEN
700    #ifndef SALT_PLUME_VOLUME
701          do i = 1, imt          do i = 1, imt
702             worka(i) = hbl(i)             worka(i) = hbl(i)
703          enddo          enddo
# Line 697  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2 Line 708  CADJ &     shape = (/ (sNx+2*OLx)*(sNy+2
708          do i = 1, imt          do i = 1, imt
709             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))             bfsfc(i) = bfsfc(i) + boplume(i) * (worka(i))
710          enddo          enddo
711        ENDIF  #else /* def SALT_PLUME_VOLUME */
712            DO i = 1, imt
713    C         DO k = 1, Nr
714    C          IF (hbl(i).GE.(abs(zgrid(k))-hwide(k)/2.0) THEN
715    C           bfsfc(i) = bfsfc(i) + boplume(i,k)
716    C          ENDIF
717    C         ENDDO
718              bfsfc(i) = bfsfc(i) + boplume(i,kbl(i))
719            ENDDO
720  #endif /* ndef SALT_PLUME_VOLUME */  #endif /* ndef SALT_PLUME_VOLUME */
721          ENDIF
722  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
723  CADJ store bfsfc = comlev1_kpp  CADJ store bfsfc = comlev1_kpp
724  CADJ &   , key=ikppkey, kind=isbyte,  CADJ &   , key=ikppkey, kind=isbyte,

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

  ViewVC Help
Powered by ViewVC 1.1.22