| 1 | atn | 1.4 | C $Header: /u/gcmpack/MITgcm_contrib/atnguyen/code_21Dec2012_saltplume/SALT_PLUME.h,v 1.3 2014/04/22 10:32:25 atn Exp $ | 
| 2 | atn | 1.1 | C $Name:  $ | 
| 3 |  |  |  | 
| 4 |  |  | #ifdef ALLOW_SALT_PLUME | 
| 5 |  |  |  | 
| 6 |  |  | C--   SALT_PLUME parameters | 
| 7 |  |  | C     Find surface where the potential density (ref.lev=surface) is | 
| 8 |  |  | C     larger than surface density plus SaltPlumeCriterion. | 
| 9 |  |  |  | 
| 10 |  |  | C     SaltPlumeSouthernOcean: TRUE  = apply salt plume globally | 
| 11 |  |  | C                             FALSE = apply salt plume in Arctic Ocean only | 
| 12 |  |  | LOGICAL SaltPlumeSouthernOcean | 
| 13 |  |  | COMMON /SALT_PLUME_PARAMS_L/ SaltPlumeSouthernOcean | 
| 14 |  |  |  | 
| 15 |  |  | C     CriterionType: 1=delta_rho, 2=drhodz, default is 1 | 
| 16 |  |  | C     PlumeMethod: method of distributing salt plume vertically | 
| 17 |  |  | C       1=power, 2=exp, 3=overshoot, 5=dump_at_top, 6=reverse of 1 | 
| 18 |  |  | C       default is 1 | 
| 19 |  |  | C     Npower: choices of distributing salt uniformly (0), linear (1), | 
| 20 |  |  | C       or higher power (Npower>1); default is 0 when PlumeMethod = 1 | 
| 21 |  |  | INTEGER CriterionType, PlumeMethod, Npower | 
| 22 |  |  | COMMON /SALT_PLUME_PARAMS_I/ CriterionType, PlumeMethod, Npower | 
| 23 |  |  |  | 
| 24 |  |  | C     SaltPlumeCriterion | 
| 25 |  |  | C       for CriterionType=1, default is 0.4 kg/m^3 of Duffy et al 1999 | 
| 26 |  |  | C       for CriterionType=2, default is 0.005 kg/m^3/m | 
| 27 |  |  | C     SPovershoot: overshooting depth of penetrating salt plume, | 
| 28 |  |  | C       so that 1.0 = no-overshoot, 1.2 = 20% overshoot. | 
| 29 |  |  | C       default is 1.0 | 
| 30 |  |  | C     SPsalFRAC: fraction of the salt by-product of seaice growth (not melt) that | 
| 31 |  |  | C       will be re-distributed vertically according to the salt_plume_frac.F | 
| 32 |  |  | C       Its default is 1. (for 100% effect), and its range is [0. 1.] | 
| 33 |  |  | C     SPinflectionPoint: the inflection point of a nonlinear function | 
| 34 |  |  | C       f(AREA) controlling saltPlumeFlux. f(AREA) is a logistic curve | 
| 35 |  |  | C       (sigmoid) with range [0. 1.] and f(SPinflectionPoint) == 0.5. | 
| 36 |  |  | C       Usage: pkg/salt_plume activates when AREA>=SPinflectionPoint. | 
| 37 |  |  | C       To assure only narrow leads generate plumes: | 
| 38 |  |  | C       set SPinflectionPoint >= 0.8. | 
| 39 |  |  | C     SPalpha :: fraction of grid volume designated to be brine, [0. 1.] | 
| 40 |  |  | C       If grid cell 18km x 18km x 10m, take SPalpha=0.001 gives | 
| 41 |  |  | C       volume of 0.001*drF(1)*[dx*dy] of brine. Thus SPbrineSalt | 
| 42 |  |  | C       can be calc as adding SaltPlumeFlux into this fractional vol. | 
| 43 |  |  | C       Default: 0.008 -> SPbrineSalt ~37 if SSS is ~32. | 
| 44 | atn | 1.4 | C     SPbrineSconst :: salinity of brine pocket [psu] | 
| 45 | atn | 1.1 |  | 
| 46 |  |  | _RL SPsalFRAC, SaltPlumeCriterion, SPovershoot | 
| 47 |  |  | #ifdef SALT_PLUME_IN_LEADS | 
| 48 | atn | 1.3 | &   , SPinflectionPoint | 
| 49 |  |  | #endif | 
| 50 |  |  | #ifdef SALT_PLUME_VOLUME | 
| 51 | atn | 1.4 | &   , SPbrineSconst, SPbrineSaltmax | 
| 52 | atn | 1.1 | #endif | 
| 53 |  |  | COMMON /SALT_PLUME_PARAMS_R/ | 
| 54 |  |  | &   SPsalFRAC, SaltPlumeCriterion, SPovershoot | 
| 55 |  |  | #ifdef SALT_PLUME_IN_LEADS | 
| 56 |  |  | &   , SPinflectionPoint | 
| 57 |  |  | #endif | 
| 58 |  |  | #ifdef SALT_PLUME_VOLUME | 
| 59 | atn | 1.4 | &   , SPbrineSconst, SPbrineSaltmax | 
| 60 | atn | 1.1 | #endif | 
| 61 |  |  | C--   SALT_PLUME 2-dim. fields | 
| 62 |  |  | C     SaltPlumeDepth :: depth of penetration of salt plumes | 
| 63 |  |  | C                       rejected during sea ice growth | 
| 64 |  |  | C     saltPlumeFlux :: Net downward salt flux in psu.kg/m^2/s | 
| 65 |  |  | C              Note: a) only used when salty sea-ice forms. | 
| 66 |  |  | C                    b) units: when salinity (unit= psu) is expressed | 
| 67 |  |  | C                       in g/kg, saltPlumeFlux unit becomes g/m^2/s. | 
| 68 |  |  | C              > 0 for increasing in SSS. | 
| 69 |  |  | C              Southwest C-grid tracer point | 
| 70 | atn | 1.3 | C     dSPvolSurf2kLev :: downward volume frac from klev=1 associated w/ saltPlumeFlux | 
| 71 |  |  | C     dSPvolBelow2kLev:: upward volume frac from grid below | 
| 72 |  |  | C     dSPvolkLev2Above:: upward volume frac to grid above | 
| 73 |  |  | C     SPbrineSalt     :: salinity of brine, read in or a function of SPalpha | 
| 74 |  |  | C     SPkBottom       :: bottom kLev associated with SaltPlumeDepth | 
| 75 | atn | 1.1 |  | 
| 76 |  |  | _RL SaltPlumeDepth (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 77 |  |  | _RL  saltPlumeFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 78 |  |  | #ifdef SALT_PLUME_VOLUME | 
| 79 | atn | 1.3 | _RL SPbrineSalt     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 80 |  |  | &   ,SPkBottom       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 81 |  |  | _RL dSPvolSurf2kLev (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 82 |  |  | &   ,dSPvolBelow2kLev(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 83 |  |  | &   ,dSPvolkLev2Above(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1,nSx,nSy) | 
| 84 |  |  | &   ,SPplumek        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1,nSx,nSy) | 
| 85 | atn | 1.2 | #endif /* SALT_PLUME_VOLUME */ | 
| 86 | atn | 1.1 | COMMON /DYNVARS_SALT_PLUME/ SaltPlumeDepth | 
| 87 | atn | 1.2 | #ifdef SALT_PLUME_VOLUME | 
| 88 |  |  | &    ,SPbrineSalt,SPkBottom | 
| 89 |  |  | COMMON /FFIELDS_SaltPlumeVol/ | 
| 90 | atn | 1.3 | &     dSPvolSurf2kLev,dSPvolBelow2kLev,dSPvolkLev2Above,SPplumek | 
| 91 | atn | 1.2 | #endif /* SALT_PLUME_VOLUME */ | 
| 92 | atn | 1.1 | COMMON /FFIELDS_saltPlumeFlux/ saltPlumeFlux | 
| 93 |  |  | #endif /* ALLOW_SALT_PLUME */ |