diff --git a/cesm/mod_cesm.F90 b/cesm/mod_cesm.F90
index cc371c18..ac2955d7 100644
--- a/cesm/mod_cesm.F90
+++ b/cesm/mod_cesm.F90
@@ -29,10 +29,14 @@ module mod_cesm
use mod_xc
use mod_forcing, only: trxday, srxday, swa, nsf, lip, sop, eva, rnf, rfi, &
fmltfz, sfl, ztx, mty, ustarw, slp, abswnd, &
- lamult, lasl, ustokes, vstokes, atmco2, atmbrf
+ lamult, lasl, ustokes, vstokes, atmco2, atmbrf, &
+ flxdms, flxbrf
use mod_ben02, only: initai, rdcsic, rdctsf, fnlzai
use mod_seaice, only: ficem
use mod_checksum, only: csdiag, chksummsk
+#ifdef HAMOCC
+ use mo_control_bgc, only: do_bgc_aofluxes
+#endif
implicit none
@@ -76,7 +80,9 @@ module mod_cesm
ustokes_da, & ! u-component of surface Stokes drift [m s-1].
vstokes_da, & ! v-component of surface Stokes drift [m s-1].
atmco2_da, & ! Atmospheric CO2 concentration [ppm].
- atmbrf_da ! Atmospheric bromoform concentration [ppt].
+ atmbrf_da, & ! Atmospheric bromoform concentration [ppt].
+ flxdms_da, & ! dms surface flux computed by mediator [kg m-2 s-1]
+ flxbrf_da ! brf surface flux computed by mediator [kg m-2 s-1]
logical :: &
smtfrc ! If true, time smooth CESM forcing fields.
@@ -84,13 +90,18 @@ module mod_cesm
integer :: &
l1ci, l2ci ! Time-level indices for time smoothing of CESM fields.
+#ifdef BROMO
+ logical :: do_bromo = .true.
+#else
+ logical :: do_bromo = .false.
+#endif
+
public :: runid_cesm, runtyp_cesm, ocn_cpl_dt_cesm, nstep_in_cpl, hmlt, &
frzpot, mltpot, swa_da, nsf_da, hmlt_da, lip_da, sop_da, eva_da, &
rnf_da, rfi_da, fmltfz_da, sfl_da, ztx_da, mty_da, ustarw_da, &
- slp_da, abswnd_da, ficem_da, lamult_da, lasl_da, &
+ slp_da, abswnd_da, ficem_da, lamult_da, lasl_da, flxdms_da, flxbrf_da, &
ustokes_da, vstokes_da, atmco2_da, atmbrf_da, smtfrc, l1ci, l2ci, &
inicon_cesm, inifrc_cesm, getfrc_cesm
-
contains
subroutine inicon_cesm
@@ -189,6 +200,16 @@ subroutine getfrc_cesm
vstokes(i, j) = w1*vstokes_da(i, j, l1ci) + w2*vstokes_da(i, j, l2ci)
atmco2(i, j) = w1*atmco2_da(i, j, l1ci) + w2*atmco2_da(i, j, l2ci)
atmbrf(i, j) = w1*atmbrf_da(i, j, l1ci) + w2*atmbrf_da(i, j, l2ci)
+#ifdef HAMOCC
+ if (.not. do_bgc_aofluxes) then
+ ! flxdms is obtained from the mediator
+ flxdms(i, j) = w1*flxdms_da(i, j, l1ci) + w2*flxdms_da(i, j, l2ci)
+ if (do_bromo) then
+ ! flxbrf is obtained from the mediator
+ flxbrf(i, j) = w1*flxbrf_da(i, j, l1ci) + w2*flxbrf_da(i, j, l2ci)
+ end if
+ end if
+#endif
enddo
enddo
do l = 1, isu(j)
@@ -208,7 +229,7 @@ subroutine getfrc_cesm
call ncfopn('getfrc_cesm.nc', 'w', 'c', 1, iotype)
call ncdims('x', itdm)
call ncdims('y', jtdm)
- call ncdefvar('ustarw_da', 'x y', ndouble, 8)
+ call ncdefvar('ustarw_da', 'x y', ndouble, 8)
call ncdefvar('lip_da', 'x y', ndouble, 8)
call ncdefvar('sop_da', 'x y', ndouble, 8)
call ncdefvar('eva_da', 'x y', ndouble, 8)
diff --git a/cime_config/buildcpp b/cime_config/buildcpp
index dc6cd8e8..8ea9436f 100644
--- a/cime_config/buildcpp
+++ b/cime_config/buildcpp
@@ -87,7 +87,6 @@ def buildcpp(case):
hamocc_nattrc = case.get_value("HAMOCC_NATTRC")
hamocc_sedbypass = case.get_value("HAMOCC_SEDBYPASS")
hamocc_ciso = case.get_value("HAMOCC_CISO")
- hamocc_vsls = case.get_value("HAMOCC_VSLS")
blom_unit = case.get_value("BLOM_UNIT")
pio_typename = case.get_value("PIO_TYPENAME", subgroup="OCN")
@@ -143,7 +142,9 @@ def buildcpp(case):
if hamocc_ciso:
expect(hamocc_sedbypass, "HAMOCC C-isotopes currently not supported in the sediment module. Use HAMOCC_SEDBYPASS=TRUE")
blom_cppdefs = blom_cppdefs + " -Dcisonew"
- if hamocc_vsls:
+ if ocn_grid in ["tnx1v4"]:
+ # HAMOCC bromoform scheme currently only supported on the tnx1v4 grid
+ # (no swa-climatology has been created for other grid configurations)"
blom_cppdefs = blom_cppdefs + " -DBROMO"
if co2type == "prognostic":
blom_cppdefs = blom_cppdefs + " -DPROGCO2"
diff --git a/cime_config/buildnml b/cime_config/buildnml
index caf1f533..d725d2b3 100755
--- a/cime_config/buildnml
+++ b/cime_config/buildnml
@@ -1,1674 +1,272 @@
-#! /bin/csh -f
-
-#------------------------------------------------------------------------------
-# Get variables from Case XML-files
-#------------------------------------------------------------------------------
-
-set CASEROOT = `./xmlquery CASEROOT --value`
-set OCN_GRID = `./xmlquery OCN_GRID --value`
-set BLOM_VCOORD = `./xmlquery BLOM_VCOORD --value`
-set BLOM_UNIT = `./xmlquery BLOM_UNIT --value`
-set DIN_LOC_ROOT = `./xmlquery DIN_LOC_ROOT --value`
-set RUN_TYPE = `./xmlquery RUN_TYPE --value`
-set CONTINUE_RUN = `./xmlquery CONTINUE_RUN --value`
-set CASEBUILD = `./xmlquery CASEBUILD --value`
-set CCSM_CO2_PPMV = `./xmlquery CCSM_CO2_PPMV --value`
-set OCN_NCPL = `./xmlquery OCN_NCPL --value`
-set BLOM_COUPLING = `./xmlquery BLOM_COUPLING --value`
-set RUNDIR = `./xmlquery RUNDIR --value`
-set BLOM_TRACER_MODULES = `./xmlquery BLOM_TRACER_MODULES --value`
-set BLOM_RIVER_NUTRIENTS = `./xmlquery BLOM_RIVER_NUTRIENTS --value`
-set BLOM_N_DEPOSITION = `./xmlquery BLOM_N_DEPOSITION --value`
-set BLOM_NDEP_SCENARIO = `./xmlquery BLOM_NDEP_SCENARIO --value`
-set HAMOCC_VSLS = `./xmlquery HAMOCC_VSLS --value`
-set HAMOCC_CISO = `./xmlquery HAMOCC_CISO --value`
-set HAMOCC_SEDSPINUP = `./xmlquery HAMOCC_SEDSPINUP --value`
-set HAMOCC_SEDSPINUP_YR_START = `./xmlquery HAMOCC_SEDSPINUP_YR_START --value`
-set HAMOCC_SEDSPINUP_YR_END = `./xmlquery HAMOCC_SEDSPINUP_YR_END --value`
-set HAMOCC_SEDSPINUP_NCYCLE = `./xmlquery HAMOCC_SEDSPINUP_NCYCLE --value`
-set RUN_STARTDATE = `./xmlquery RUN_STARTDATE --value`
-set PIO_TYPENAME_OCN = `./xmlquery PIO_TYPENAME_OCN --value`
-set PIO_NETCDF_FORMAT_OCN = `./xmlquery PIO_NETCDF_FORMAT_OCN --value`
-set NINST_OCN = `./xmlquery NINST_OCN --value`
-set TEST=`./xmlquery TEST --value`
-
-#------------------------------------------------------------------------------
-# Check if HAMOCC is requested
-#------------------------------------------------------------------------------
-
-set ecosys = FALSE
-set tracers = (`echo $BLOM_TRACER_MODULES`)
-if ($#tracers != 0) then
- foreach module ($tracers)
- if ($module == ecosys) then
- set ecosys = TRUE
- endif
- end
-endif
-
-#------------------------------------------------------------------------------
-# Set RUN_TYPE to 'continue' if CONTINUE_RUN equals TRUE
-#------------------------------------------------------------------------------
-
-if ("$CONTINUE_RUN" == TRUE) then
- set RUN_TYPE = continue
-endif
-
-#------------------------------------------------------------------------------
-# Get start date
-#------------------------------------------------------------------------------
-
-set YEAR0 = `echo $RUN_STARTDATE | cut -c1-4 `
-set MONTH0 = `echo $RUN_STARTDATE | cut -c6-7 `
-set DAY0 = `echo $RUN_STARTDATE | cut -c9-10`
-
-#------------------------------------------------------------------------------
-# Set namelist variables
-#------------------------------------------------------------------------------
-
-#------------------------------
-# set LIMITS defaults
-#------------------------------
-set NDAY1 = 0
-set NDAY2 = 0
-set IDATE = $YEAR0$MONTH0$DAY0
-set IDATE0 = $YEAR0$MONTH0$DAY0
-set RUNID = "'unset'"
-set EXPCNF = "'cesm'"
-set RUNTYP = "'$RUN_TYPE'"
-set GRFILE = "'unset'"
-set ICFILE = "'unset'"
-if ("$BLOM_UNIT" == cgs) then
- set PREF = 2000.e5
-else
- set PREF = 2000.e4
-endif
-set BACLIN = 1800.
-set BATROP = 36.
-if ("$BLOM_UNIT" == cgs) then
- set MDV2HI = 2.
- set MDV2LO = .4
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 5000.e4
- set MDC2LO = 300.e4
-else
- set MDV2HI = .02
- set MDV2LO = .004
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 5000.
- set MDC2LO = 300.
-endif
-set VSC2HI = .5
-set VSC2LO = .5
-set VSC4HI = 0.
-set VSC4LO = 0.
-if ("$BLOM_UNIT" == cgs) then
- set CBAR = 5.
-else
- set CBAR = .05
-endif
-set CB = .002
-set CWBDTS = 5.e-5
-set CWBDLS = 25.
-set MOMMTH = "'enscon'"
-set BMCMTH = "'uc'"
-set RMPMTH = "'eitvel'"
-set MLRTTP = "'constant'"
-set RM0 = 1.2
-set RM5 = 0.
-set CE = .06
-set TDFILE = "'unset'"
-set NIWGF = 0.
-set NIWBF = .35
-set NIWLF = .5
-set SWAMTH = "'jerlov'"
-set JWTYPE = 3
-set CHLOPT = "'climatology'"
-set CCFILE = "'unset'"
-set TRXDAY = 0.
-set SRXDAY = 0.
-set TRXDPT = 1.
-set SRXDPT = 1.
-set TRXLIM = 1.5
-set SRXLIM = .5
-set APTFLX = .false.
-set APSFLX = .false.
-set DITFLX = .false.
-set DISFLX = .false.
-set SRXBAL = .false.
-set SCFILE = "'unset'"
-set WAVSRC = "'none'"
-set SMTFRC = .true.
-set SPRFAC = .false.
-set ATM_PATH = "'unset'"
-set ITEST = 60
-set JTEST = 60
-set CNSVDI = .false.
-set CSDIAG = .false.
-set RSTFRQ = 1
-if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
- set RSTFMT = 1
-else
- set RSTFMT = 0
-endif
-set RSTCMP = 0
-if ("$PIO_TYPENAME_OCN" == pnetcdf) then
- set IOTYPE = 1
-else
- set IOTYPE = 0
-endif
-
-#------------------------------
-# set VCOORD defaults
-#------------------------------
-set VCOORD_TYPE = "'$BLOM_VCOORD'"
-set RECONSTRUCTION_METHOD = "'ppm'"
-set DENSITY_LIMITING = "'monotonic'"
-set TRACER_LIMITING = "'non_oscillatory'"
-set VELOCITY_LIMITING = "'non_oscillatory'"
-set DENSITY_PC_UPPER_BNDR = .false.
-set DENSITY_PC_LOWER_BNDR = .false.
-set TRACER_PC_UPPER_BNDR = .true.
-set TRACER_PC_LOWER_BNDR = .false.
-set VELOCITY_PC_UPPER_BNDR = .true.
-set VELOCITY_PC_LOWER_BNDR = .false.
-set DPMIN_SURFACE = 2.5
-set DPMIN_INFLATION_FACTOR = 1.08
-set DPMIN_INTERIOR = .1
-set DKTZU = 4
-set DKTZL = 1
-
-#------------------------------
-# set DIFFUSION defaults
-#------------------------------
-set EITMTH = "'gm'"
-set EDRITP = "'large scale'"
-set EDWMTH = "'smooth'"
-set EDDF2D = .false.
-set EDSPRS = .true.
-set EGC = 0.85
-set EGGAM = 200.
-if ("$BLOM_UNIT" == cgs) then
- set EGLSMN = 4000.e2
- set EGMNDF = 100.e4
- set EGMXDF = 1500.e4
-else
- set EGLSMN = 4000.
- set EGMNDF = 100.
- set EGMXDF = 1500.
-endif
-set EGIDFQ = 1.
-set TBFILE = "'unset'"
-set RHISCF = 0.
-set EDANIS = .false.
-set REDI3D = .false.
-set RHSCTP = .false.
-set RI0 = 1.2
-set BDMTYP = 2
-if ("$BLOM_UNIT" == cgs) then
- set BDMC1 = 5.e-4
- set BDMC2 = .1
-else
- set BDMC1 = 5.e-8
- set BDMC2 = 1.e-5
-endif
-set TKEPF = .006
-set SMOBLD = .true.
-set LNGMTP = "'none'"
-if ("$BLOM_VCOORD" == isopyc_bulkml) then
- set BDMLDP = .true.
- set LTEDTP = "'layer'"
-else
- set BDMLDP = .false.
- set LTEDTP = "'neutral'"
-endif
-
-#------------------------------
-# set BGCNML defaults
-#------------------------------
-set ATM_CO2 = "$CCSM_CO2_PPMV"
-if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
- set DO_RIVINPT = .true.
-else
- set DO_RIVINPT = .false.
-endif
-if ("$BLOM_N_DEPOSITION" == TRUE) then
- set DO_NDEP = .true.
- if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx2v1) then
- set NDEPFNAME = ndep_1850_CMIP6_tnx2v1_20180321.nc
- else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx1v4) then
- set NDEPFNAME = ndep_1850_CMIP6_tnx1v4_20171106.nc
- else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx0.25v4) then
- set NDEPFNAME = ndep_1850_CMIP6_tnx0.25v4_20190912.nc
- else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx0.125v4) then
- set NDEPFNAME = ndep_1850_CMIP6_tnx0.125v4_20221013.nc
- else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx2v1) then
- set NDEPFNAME = ndep_2000_CMIP6_tnx2v1_20200826.nc
- else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx1v4) then
- set NDEPFNAME = ndep_2000_CMIP6_tnx1v4_20200826.nc
- else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx0.25v4) then
- set NDEPFNAME = ndep_2000_CMIP6_tnx0.25v4_20200826.nc
- else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx2v1) then
- set NDEPFNAME = ndep_185001-201412_tnx2v1_20190702.nc
- else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx1v4) then
- set NDEPFNAME = ndep_185001-201412_tnx1v4_20180613.nc
- else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx0.25v4) then
- set NDEPFNAME = ndep_185001-201412_tnx0.25v4_20190705.nc
- else if( `echo $BLOM_NDEP_SCENARIO | cut -c1-3` == ssp && "$OCN_GRID" == tnx1v4) then
- set NDEPFNAME = ndep_201501-210012-${BLOM_NDEP_SCENARIO}_tnx1v4_20191112.nc
- else if( "$BLOM_NDEP_SCENARIO" == UNSET ) then
- set DO_NDEP = .false.
- set NDEPFNAME = "''"
- endif
-else
- set DO_NDEP = .false.
- set NDEPFNAME = "''"
-endif
-if ("$HAMOCC_SEDSPINUP" == TRUE) then
- set DO_SEDSPINUP = .true.
- set SEDSPIN_YR_S = $HAMOCC_SEDSPINUP_YR_START
- set SEDSPIN_YR_E = $HAMOCC_SEDSPINUP_YR_END
- set SEDSPIN_NCYC = $HAMOCC_SEDSPINUP_NCYCLE
-else
- set DO_SEDSPINUP = .false.
- set SEDSPIN_YR_S = -1
- set SEDSPIN_YR_E = -1
- set SEDSPIN_NCYC = -1
-endif
-# VSLS is currently only available for the tnx1v4 grid, since a climatlogy file for
-# short wave radiation is needed.
-if ("$HAMOCC_VSLS" == TRUE && "$OCN_GRID" != tnx1v4) then
- echo "$0 ERROR: HAMOCC_VSLS == TRUE not possible with this grid resolution (no swa-climatology available) "
- exit -1
-endif
-# For the following options, there are currently no switches in Case-XML files.
-# These options can be activated by expert users via user namelist.
-set DO_OALK = .false.
-set BGCOAFX_OALKSCEN = "''"
-set BGCOAFX_OALKFILE = "''"
-set BGCOAFX_ADDALK = 0.135
-set BGCOAFX_CDRMIP_LATMAX = 70.0
-set BGCOAFX_CDRMIP_LATMIN = -60.0
-set BGCOAFX_RAMP_START = 2025
-set BGCOAFX_RAMP_END = 2035
-set WITH_DMSPH = .false.
-set PI_PH_FILE = "''"
-set L_3DVARSEDPOR = .false.
-set SEDPORFILE = "''"
-
-
-#------------------------------
-# set DIAPHY defaults
-#------------------------------
-set GLB_FNAMETAG = "'hd','hm','hy'"
-set GLB_AVEPERIO = '1, 30, 365'
-if ("$TEST" == TRUE) then
- set GLB_FILEFREQ = '1, 30, 365'
-else
- set GLB_FILEFREQ = '30, 30, 365'
-endif
-set GLB_COMPFLAG = '0, 0, 0'
-if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
- set GLB_NCFORMAT = '1, 1, 1'
-else
- set GLB_NCFORMAT = '0, 0, 0'
-endif
-set H2D_ABSWND = '0, 4, 0'
-
-set H2D_ALB = '0, 0, 0'
-
-set H2D_BTMSTR = '0, 4, 0'
-set H2D_BRNFLX = '0, 4, 0'
-set H2D_BRNPD = '0, 4, 0'
-
-set H2D_DFL = '0, 0, 0'
-
-set H2D_EVA = '0, 4, 0'
-set H2D_FICE = '0, 4, 0'
-set H2D_FMLTFZ = '0, 4, 0'
-
-set H2D_HICE = '0, 0, 0'
-
-set H2D_HMLTFZ = '0, 4, 0'
-
-set H2D_HSNW = '0, 0, 0'
-set H2D_IAGE = '0, 0, 0'
-
-set H2D_IDKEDT = '0, 4, 0'
-set H2D_LAMULT = '0, 4, 0'
-set H2D_LASL = '0, 4, 0'
-set H2D_LIP = '0, 4, 0'
-
-set H2D_MAXMLD = '4, 4, 0'
-
-set H2D_MLD = '0, 4, 0'
-
-set H2D_MLTS = '4, 4, 0'
-
-set H2D_MLTSMN = '0, 4, 0'
-set H2D_MLTSMX = '0, 4, 0'
-set H2D_MLTSSQ = '0, 4, 0'
-set H2D_MTKEUS = '0, 4, 0'
-set H2D_MTKENI = '0, 4, 0'
-set H2D_MTKEBF = '0, 4, 0'
-set H2D_MTKERS = '0, 4, 0'
-set H2D_MTKEPE = '0, 4, 0'
-set H2D_MTKEKE = '0, 4, 0'
-set H2D_MTY = '0, 4, 0'
-set H2D_NSF = '0, 4, 0'
-set H2D_PBOT = '0, 4, 0'
-set H2D_PSRF = '0, 4, 0'
-set H2D_RFIFLX = '0, 4, 0'
-set H2D_RNFFLX = '0, 4, 0'
-set H2D_SALFLX = '0, 4, 0'
-set H2D_SALRLX = '0, 4, 0'
-set H2D_SBOT = '0, 4, 0'
-
-set H2D_SEALV = '4, 4, 0'
-
-set H2D_SLVSQ = '0, 4, 0'
-set H2D_SFL = '0, 4, 0'
-set H2D_SOP = '0, 4, 0'
-set H2D_SIGMX = '0, 4, 0'
-
-set H2D_SSS = '4, 4, 0'
-set H2D_SSSSQ = '4, 4, 0'
-set H2D_SST = '4, 4, 0'
-set H2D_SSTSQ = '4, 4, 0'
-
-set H2D_SURFLX = '0, 4, 0'
-set H2D_SURRLX = '0, 4, 0'
-set H2D_SWA = '0, 4, 0'
-
-set H2D_T20D = '4, 4, 0'
-
-set H2D_TAUX = '0, 4, 0'
-set H2D_TAUY = '0, 4, 0'
-set H2D_TBOT = '0, 4, 0'
-
-set H2D_TICE = '0, 0, 0'
-set H2D_TSRF = '0, 0, 0'
-
-set H2D_UB = '0, 4, 0'
-
-set H2D_UICE = '0, 0, 0'
-
-set H2D_USTAR = '0, 4, 0'
-set H2D_USTAR3 = '0, 4, 0'
-
-set H2D_USTOKES = '0, 0, 0'
-
-set H2D_VB = '0, 4, 0'
-
-set H2D_VICE = '0, 0, 0'
-set H2D_VSTOKES = '0, 0, 0'
-
-set H2D_ZTX = '0, 4, 0'
-set LYR_BFSQ = '0, 4, 0'
-set LYR_DIFDIA = '0, 4, 0'
-set LYR_DIFVMO = '0, 4, 0'
-set LYR_DIFVHO = '0, 4, 0'
-set LYR_DIFVSO = '0, 4, 0'
-set LYR_DIFINT = '0, 4, 0'
-set LYR_DIFISO = '0, 4, 0'
-set LYR_DP = '0, 4, 0'
-set LYR_DZ = '0, 4, 0'
-set LYR_SALN = '0, 4, 0'
-set LYR_TEMP = '0, 4, 0'
-
-set LYR_TRC = '0, 0, 0'
-
-set LYR_UFLX = '0, 4, 0'
-set LYR_UTFLX = '0, 4, 0'
-set LYR_USFLX = '0, 4, 0'
-
-set LYR_UMFLTD = '0, 0, 4'
-set LYR_UMFLSM = '0, 0, 4'
-set LYR_UTFLTD = '0, 0, 4'
-set LYR_UTFLSM = '0, 0, 4'
-set LYR_UTFLLD = '0, 0, 4'
-set LYR_USFLTD = '0, 0, 4'
-set LYR_USFLSM = '0, 0, 4'
-set LYR_USFLLD = '0, 0, 4'
-
-set LYR_UVEL = '0, 4, 0'
-set LYR_VFLX = '0, 4, 0'
-set LYR_VTFLX = '0, 4, 0'
-set LYR_VSFLX = '0, 4, 0'
-
-set LYR_VMFLTD = '0, 0, 4'
-set LYR_VMFLSM = '0, 0, 4'
-set LYR_VTFLTD = '0, 0, 4'
-set LYR_VTFLSM = '0, 0, 4'
-set LYR_VTFLLD = '0, 0, 4'
-set LYR_VSFLTD = '0, 0, 4'
-set LYR_VSFLSM = '0, 0, 4'
-set LYR_VSFLLD = '0, 0, 4'
-
-set LYR_VVEL = '0, 4, 0'
-set LYR_WFLX = '0, 4, 0'
-set LYR_WFLX2 = '0, 4, 0'
-set LYR_PV = '0, 4, 0'
-set LYR_TKE = '0, 4, 0'
-set LYR_GLS_PSI = '0, 4, 0'
-set LYR_IDLAGE = '0, 4, 0'
-set LVL_BFSQ = '0, 4, 0'
-set LVL_DIFDIA = '0, 4, 0'
-set LVL_DIFVMO = '0, 4, 0'
-set LVL_DIFVHO = '0, 4, 0'
-set LVL_DIFVSO = '0, 4, 0'
-set LVL_DIFINT = '0, 4, 0'
-set LVL_DIFISO = '0, 4, 0'
-set LVL_DZ = '0, 4, 0'
-set LVL_SALN = '0, 4, 0'
-set LVL_TEMP = '0, 4, 0'
-
-set LVL_TRC = '0, 0, 0'
-
-set LVL_UFLX = '0, 4, 0'
-set LVL_UTFLX = '0, 4, 0'
-set LVL_USFLX = '0, 4, 0'
-
-set LVL_UMFLTD = '0, 0, 4'
-set LVL_UMFLSM = '0, 0, 4'
-set LVL_UTFLTD = '0, 0, 4'
-set LVL_UTFLSM = '0, 0, 4'
-set LVL_UTFLLD = '0, 0, 4'
-set LVL_USFLTD = '0, 0, 4'
-set LVL_USFLSM = '0, 0, 4'
-set LVL_USFLLD = '0, 0, 4'
-
-set LVL_UVEL = '0, 4, 0'
-set LVL_VFLX = '0, 4, 0'
-set LVL_VTFLX = '0, 4, 0'
-set LVL_VSFLX = '0, 4, 0'
-
-set LVL_VMFLTD = '0, 0, 4'
-set LVL_VMFLSM = '0, 0, 4'
-set LVL_VTFLTD = '0, 0, 4'
-set LVL_VTFLSM = '0, 0, 4'
-set LVL_VTFLLD = '0, 0, 4'
-set LVL_VSFLTD = '0, 0, 4'
-set LVL_VSFLSM = '0, 0, 4'
-set LVL_VSFLLD = '0, 0, 4'
-
-set LVL_VVEL = '0, 4, 0'
-set LVL_WFLX = '0, 4, 0'
-set LVL_WFLX2 = '0, 4, 0'
-set LVL_PV = '0, 4, 0'
-set LVL_TKE = '0, 4, 0'
-set LVL_GLS_PSI = '0, 4, 0'
-set LVL_IDLAGE = '0, 4, 0'
-set MSC_MMFLXL = '0, 4, 0'
-set MSC_MMFLXD = '0, 4, 0'
-set MSC_MMFTDL = '0, 4, 0'
-set MSC_MMFSML = '0, 4, 0'
-set MSC_MMFTDD = '0, 4, 0'
-set MSC_MMFSMD = '0, 4, 0'
-set MSC_MHFLX = '0, 4, 0'
-set MSC_MHFTD = '0, 4, 0'
-set MSC_MHFSM = '0, 4, 0'
-set MSC_MHFLD = '0, 4, 0'
-set MSC_MSFLX = '0, 4, 0'
-set MSC_MSFTD = '0, 4, 0'
-set MSC_MSFSM = '0, 4, 0'
-set MSC_MSFLD = '0, 4, 0'
-set MSC_VOLTR = '0, 4, 0'
-set MSC_MASSGS = '0, 4, 0'
-set MSC_VOLGS = '0, 4, 0'
-set MSC_SALNGA = '0, 4, 0'
-set MSC_TEMPGA = '0, 4, 0'
-set MSC_SSSGA = '0, 4, 0'
-set MSC_SSTGA = '0, 4, 0'
-
-#------------------------------
-# set DIABGC defaults
-#------------------------------
-set BGC_FNAMETAG = "'hbgcd','hbgcm','hbgcy'"
-set BGC_AVEPERIO = '1,30,365'
-set BGC_FILEFREQ = '30,30,365'
-if ("$TEST" == TRUE) then
- set BGC_FILEFREQ = ' 1,30,365'
-else
- set BGC_FILEFREQ = '30,30,365'
-endif
-set BGC_COMPFLAG = '0, 0, 0'
-if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
- set BGC_NCFORMAT = '1, 1, 1'
-else
- set BGC_NCFORMAT = '0, 0, 0'
-endif
-set BGC_INVENTORY = '0, 1, 0'
-set SRF_PHOSPH = '0, 2, 2'
-set SRF_OXYGEN = '0, 2, 2'
-set SRF_IRON = '0, 2, 2'
-set SRF_ANO3 = '0, 2, 2'
-set SRF_ALKALI = '4, 2, 2'
-set SRF_SILICA = '0, 2, 2'
-set SRF_DIC = '4, 2, 2'
-set SRF_PHYTO = '4, 2, 2'
-set SRF_PH = '0, 2, 2'
-set SRF_EXPORT = '0, 2, 2'
-set SRF_EXPOSI = '0, 2, 2'
-set SRF_EXPOCA = '0, 2, 2'
-set SRF_KWCO2 = '0, 2, 2'
-set SRF_KWCO2KHM = '0, 2, 2'
-set SRF_CO2KH = '0, 2, 2'
-set SRF_CO2KHM = '0, 2, 2'
-set SRF_PCO2 = '0, 2, 2'
-set SRF_PCO2M = '0, 2, 2'
-set SRF_CO2FXD = '4, 2, 2'
-set SRF_CO2FXU = '4, 2, 2'
-set SRF_OXFLUX = '0, 2, 2'
-set SRF_NIFLUX = '0, 2, 2'
-set SRF_N2OFX = '0, 0, 2'
-set SRF_DMSFLUX = '0, 2, 2'
-set SRF_DMS = '0, 2, 2'
-set SRF_DMSPROD = '0, 2, 2'
-set SRF_DMS_BAC = '0, 2, 2'
-set SRF_DMS_UV = '0, 2, 2'
-set SRF_ATMCO2 = '0, 2, 2'
-set SRF_ATMO2 = '0, 2, 2'
-set SRF_ATMN2 = '0, 2, 2'
-set SRF_NATDIC = '0, 2, 2'
-set SRF_NATALKALI = '0, 2, 2'
-set SRF_NATPH = '0, 2, 2'
-set SRF_NATPCO2 = '0, 2, 2'
-set SRF_NATCO2FX = '0, 2, 2'
-set SRF_CO213FXD = '0, 2, 2'
-set SRF_CO213FXU = '0, 2, 2'
-set SRF_CO214FXD = '0, 2, 2'
-set SRF_CO214FXU = '0, 2, 2'
-set SRF_CFC11 = '0, 2, 2'
-set SRF_CFC12 = '0, 2, 2'
-set SRF_SF6 = '0, 2, 2'
-set SRF_BROMO = '0, 2, 2'
-set SRF_BROMOFX = '0, 2, 2'
-set INT_BROMOPRO = '0, 2, 2'
-set INT_BROMOUV = '0, 2, 2'
-set INT_PHOSY = '4, 2, 2'
-set INT_NFIX = '0, 2, 2'
-set INT_DNIT = '0, 2, 2'
-if ("$BLOM_N_DEPOSITION" == TRUE) then
-set FLX_NDEP = '0, 2, 2'
-else
-set FLX_NDEP = '0, 0, 0'
-endif
-set FLX_OALK = '0, 0, 0'
-set FLX_CAR0100 = '0, 2, 2'
-set FLX_CAR0500 = '0, 2, 2'
-set FLX_CAR1000 = '0, 2, 2'
-set FLX_CAR2000 = '0, 2, 2'
-set FLX_CAR4000 = '0, 2, 2'
-set FLX_CAR_BOT = '0, 2, 2'
-set FLX_BSI0100 = '0, 2, 2'
-set FLX_BSI0500 = '0, 2, 2'
-set FLX_BSI1000 = '0, 2, 2'
-set FLX_BSI2000 = '0, 2, 2'
-set FLX_BSI4000 = '0, 2, 2'
-set FLX_BSI_BOT = '0, 2, 2'
-set FLX_CAL0100 = '0, 2, 2'
-set FLX_CAL0500 = '0, 2, 2'
-set FLX_CAL1000 = '0, 2, 2'
-set FLX_CAL2000 = '0, 2, 2'
-set FLX_CAL4000 = '0, 2, 2'
-set FLX_CAL_BOT = '0, 2, 2'
-set LYR_PHYTO = '0, 0, 2'
-set LYR_GRAZER = '0, 0, 2'
-set LYR_DOC = '0, 0, 2'
-set LYR_PHOSY = '0, 0, 2'
-set LYR_PHOSPH = '0, 0, 2'
-set LYR_OXYGEN = '0, 0, 4'
-set LYR_IRON = '0, 0, 2'
-set LYR_ANO3 = '0, 0, 2'
-set LYR_ALKALI = '0, 0, 2'
-set LYR_SILICA = '0, 0, 2'
-set LYR_DIC = '0, 0, 2'
-set LYR_POC = '0, 0, 2'
-set LYR_CALC = '0, 0, 2'
-set LYR_OPAL = '0, 0, 2'
-set LYR_CO3 = '0, 0, 2'
-set LYR_N2O = '0, 0, 0'
-set LYR_PH = '0, 0, 2'
-set LYR_OMEGAC = '0, 0, 2'
-set LYR_OMEGAA = '0, 0, 2'
-set LYR_PREFO2 = '0, 0, 4'
-set LYR_O2SAT = '0, 0, 4'
-set LYR_PREFPO4 = '0, 0, 2'
-set LYR_PREFALK = '0, 0, 2'
-set LYR_PREFDIC = '0, 0, 2'
-set LYR_DICSAT = '0, 0, 2'
-set LYR_NATDIC = '0, 0, 2'
-set LYR_NATALKALI = '0, 0, 2'
-set LYR_NATCO3 = '0, 0, 2'
-set LYR_NATCALC = '0, 0, 2'
-set LYR_NATPH = '0, 0, 2'
-set LYR_NATOMEGAC = '0, 0, 2'
-set LYR_NATOMEGAA = '0, 0, 2'
-set LYR_DIC13 = '0, 0, 2'
-set LYR_DIC14 = '0, 0, 2'
-set LYR_D13C = '0, 0, 2'
-set LYR_D14C = '0, 0, 2'
-set LYR_BIGD14C = '0, 0, 2'
-set LYR_POC13 = '0, 0, 2'
-set LYR_DOC13 = '0, 0, 2'
-set LYR_CALC13 = '0, 0, 2'
-set LYR_PHYTO13 = '0, 0, 2'
-set LYR_GRAZER13 = '0, 0, 2'
-set LYR_CFC11 = '0, 0, 2'
-set LYR_CFC12 = '0, 0, 2'
-set LYR_SF6 = '0, 0, 2'
-set LYR_NOS = '0, 0, 2'
-set LYR_WPHY = '0, 0, 2'
-set LYR_WNOS = '0, 0, 2'
-set LYR_EPS = '0, 0, 0'
-set LYR_ASIZE = '0, 0, 0'
-set LYR_BROMO = '0, 0, 2'
-set BGC_DP = '0, 2, 2'
-set LVL_PHYTO = '0, 2, 2'
-set LVL_GRAZER = '0, 2, 2'
-set LVL_DOC = '0, 2, 2'
-set LVL_PHOSY = '0, 2, 2'
-set LVL_PHOSPH = '0, 2, 2'
-set LVL_OXYGEN = '0, 4, 4'
-set LVL_IRON = '0, 2, 2'
-set LVL_ANO3 = '0, 2, 2'
-set LVL_ALKALI = '0, 2, 2'
-set LVL_SILICA = '0, 2, 2'
-set LVL_DIC = '0, 2, 2'
-set LVL_POC = '0, 2, 2'
-set LVL_CALC = '0, 2, 2'
-set LVL_OPAL = '0, 2, 2'
-set LVL_CO3 = '0, 2, 2'
-set LVL_N2O = '0, 0, 2'
-set LVL_PH = '0, 2, 2'
-set LVL_OMEGAC = '0, 2, 2'
-set LVL_OMEGAA = '0, 2, 2'
-set LVL_PREFO2 = '0, 4, 4'
-set LVL_O2SAT = '0, 4, 4'
-set LVL_PREFPO4 = '0, 2, 2'
-set LVL_PREFALK = '0, 2, 2'
-set LVL_PREFDIC = '0, 2, 2'
-set LVL_DICSAT = '0, 2, 2'
-set LVL_NATDIC = '0, 2, 2'
-set LVL_NATALKALI = '0, 2, 2'
-set LVL_NATCO3 = '0, 2, 2'
-set LVL_NATCALC = '0, 2, 2'
-set LVL_NATPH = '0, 2, 2'
-set LVL_NATOMEGAC = '0, 2, 2'
-set LVL_NATOMEGAA = '0, 2, 2'
-set LVL_DIC13 = '0, 2, 2'
-set LVL_DIC14 = '0, 2, 2'
-set LVL_D13C = '0, 2, 2'
-set LVL_POC13 = '0, 2, 2'
-set LVL_DOC13 = '0, 2, 2'
-set LVL_CALC13 = '0, 2, 2'
-set LVL_PHYTO13 = '0, 2, 2'
-set LVL_GRAZER13 = '0, 2, 2'
-set LVL_CFC11 = '0, 2, 2'
-set LVL_CFC12 = '0, 2, 2'
-set LVL_SF6 = '0, 2, 2'
-set LVL_NOS = '0, 2, 2'
-set LVL_WPHY = '0, 2, 2'
-set LVL_WNOS = '0, 2, 2'
-set LVL_EPS = '0, 0, 0'
-set LVL_ASIZE = '0, 0, 0'
-set LVL_BROMO = '0, 2, 2'
-set FLX_SEDIFFIC = '0, 0, 2'
-set FLX_SEDIFFAL = '0, 0, 2'
-set FLX_SEDIFFPH = '0, 0, 2'
-set FLX_SEDIFFOX = '0, 0, 2'
-set FLX_SEDIFFN2 = '0, 0, 2'
-set FLX_SEDIFFNO3 = '0, 0, 2'
-set FLX_SEDIFFSI = '0, 0, 2'
-set SDM_POWAIC = '0, 0, 2'
-set SDM_POWAAL = '0, 0, 2'
-set SDM_POWAPH = '0, 0, 2'
-set SDM_POWAOX = '0, 0, 2'
-set SDM_POWN2 = '0, 0, 2'
-set SDM_POWNO3 = '0, 0, 2'
-set SDM_POWASI = '0, 0, 2'
-set SDM_SSSO12 = '0, 0, 2'
-set SDM_SSSSIL = '0, 0, 2'
-set SDM_SSSC12 = '0, 0, 2'
-set SDM_SSSTER = '0, 0, 2'
-set BUR_SSSO12 = '0, 0, 2'
-set BUR_SSSSIL = '0, 0, 2'
-set BUR_SSSC12 = '0, 0, 2'
-set BUR_SSSTER = '0, 0, 2'
-
-# if partial coupling, enable SSS relaxation
-if ("$BLOM_COUPLING" =~ *partial*) then
- if ("$BLOM_VCOORD" == isopyc_bulkml) then
- set SRXDAY = 6.
- else
- set SRXDAY = 60.
- set SRXDPT = 10.
- endif
- set SPRFAC = .true.
- set SRXBAL = .true.
-endif
-
-# set grid dependent parameters
-if ("$OCN_GRID" == gx1v5 || "$OCN_GRID" == gx1v6) then
- set BACLIN = 1800.
- set BATROP = 36.
-else if ("$OCN_GRID" == gx3v7) then
- set BACLIN = 3600.
- set BATROP = 72.
-else if ("$OCN_GRID" == tnx2v1 ) then
- set BACLIN = 4800.
- set BATROP = 96.
- set EGC = 0.5
- if ("$BLOM_UNIT" == cgs) then
- set EGMXDF = 1000.e4
- else
- set EGMXDF = 1000.
- endif
- set CWMTAG = "'Gibraltar','Gibraltar'"
- set CWMEDG = " 'u', 'u'"
- set CWMI = " 53, 54"
- set CWMJ = " 137, 137"
- set CWMWTH = " 30.e3, 30.e3"
-else if ("$OCN_GRID" == tnx1.5v1 ) then
- set BACLIN = 4800.
- set BATROP = 96.
- set EGC = 0.5
- if ("$BLOM_UNIT" == cgs) then
- set EGMXDF = 1000.e4
- else
- set EGMXDF = 1000.
- endif
-else if ("$OCN_GRID" == tnx1v1 || "$OCN_GRID" == tnx1v3 || "$OCN_GRID" == tnx1v4) then
- if ("$OCN_NCPL" == 24) then
- set BACLIN = 3600.
- set BATROP = 60.
- set CWBDTS = .75e-4
- set NIWGF = .4
- set SMTFRC = .false.
- if ("$BLOM_VCOORD" == isopyc_bulkml) then
- set CE = .5
- endif
- else
- set BACLIN = 3200.
- set BATROP = 64.
- endif
- set CWMTAG = "'Gibraltar','Gibraltar'"
- set CWMEDG = " 'u', 'u'"
- set CWMI = " 105, 106"
- set CWMJ = " 273, 273"
- set CWMWTH = " 30.e3, 30.e3"
-else if ("$OCN_GRID" == tnx0.25v1 || "$OCN_GRID" == tnx0.25v3 || "$OCN_GRID" == tnx0.25v4) then
- set BACLIN = 900.
- set BATROP = 15.
- if ("$BLOM_UNIT" == cgs) then
- set MDV2HI = .15
- set MDV2LO = .15
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 300.e4
- set MDC2LO = 300.e4
- else
- set MDV2HI = .0015
- set MDV2LO = .0015
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 300.
- set MDC2LO = 300.
- endif
- set VSC2HI = .15
- set VSC2LO = .15
- set VSC4HI = 0.0625
- set VSC4LO = 0.0625
- set CWBDTS = 0.75e-4
- set CWBDLS = 25.
- set EDWMTH = "'step'"
- set EGC = 0.85
- if ("$BLOM_UNIT" == cgs) then
- set EGMXDF = 1500.e4
- else
- set EGMXDF = 1500.
- endif
- if ("$BLOM_VCOORD" == isopyc_bulkml) then
- set CE = 1.0
- endif
-else if ("$OCN_GRID" == tnx0.125v4) then
- set BACLIN = 300.
- set BATROP = 6.
- set EGMNDF = 0.
- set EGMXDF = 0.
- set EDWMTH = "'step'"
- set CWBDTS = .75e-4
- set CWBDLS = 25
- if ("$BLOM_UNIT" == cgs) then
- set MDV2HI = .1
- set MDV2LO = .1
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 300.e4
- set MDC2LO = 100.e4
- else
- set MDV2HI = .001
- set MDV2LO = .001
- set MDV4HI = 0.
- set MDV4LO = 0.
- set MDC2HI = 300.
- set MDC2LO = 100.
- endif
- set VSC2HI = 0.
- set VSC2LO = 0.
- set VSC4HI = .06
- set VSC4LO = .06
- set LTEDTP = "'layer'"
-else
- echo "OCN_GRID is $OCN_GRID \n"
- echo "$0 ERROR: Cannot deal with GRID equal to $OCN_GRID "
- exit -1
-endif
-
-# set grid independent input files (iHAMOCC initial conditions)
-set INIDIC = "'$DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_Ct_preind_OMIPinit_20171107.nc'"
-set INIALK = "'$DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_At_OMIPinit_20171107.nc'"
-set INIPO4 = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_phosphate_OMIPinit_20171107.nc'"
-set INIOXY = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_oxygen_OMIPinit_20171107.nc'"
-set ININO3 = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_nitrate_OMIPinit_20171107.nc'"
-set INISIL = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_silicate_OMIPinit_20171107.nc'"
-if ("$HAMOCC_CISO" == TRUE) then
-set INID13C = "'$DIN_LOC_ROOT/ocn/blom/inicon/d13C_permil_20180609.nc'"
-set INID14C = "'$DIN_LOC_ROOT/ocn/blom/inicon/d14C_permil_20180609.nc'"
-else
-set INID13C = "''"
-set INID14C = "''"
-endif
-
-# set grid dependent input files
-if ("$OCN_GRID" == tnx2v1) then
- set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx2v1_20130206.nc'"
- set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx2v1_20130419.nc'"
- set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx2v1_20130419.nc'"
- set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx2v1_20190826.nc'"
- set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx2v1_20190826.dat'"
- set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx2v1_20190826.dat'"
- set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx2v1_20130927.nc'"
- set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx2v1_20130506.nc'"
- set SWACLIMFILE = "''"
- set SEDPORFILE = "''"
- if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
- set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx2v1_20170915.nc'"
- else
- set RIVINFILE = "''"
- endif
- if ("$BLOM_N_DEPOSITION" == TRUE) then
- set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
- else
- set NDEPFILE = "''"
- endif
-else if ("$OCN_GRID" == tnx1v4) then
- set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx1v4_20170622.nc'"
- set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx1v4_20170622.nc'"
- set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx1v4_20170605.nc'"
- set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx1v4_20190729.nc'"
- set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx1v4_20190615.dat'"
- set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx1v4_20190611.dat'"
- set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx1v4_20170608.nc'"
- set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx1v4_20170604.nc'"
- set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx1v4_20171107.nc'"
- set SEDPORFILE = "''"
- if ("$HAMOCC_VSLS" == TRUE) then
- set SWACLIMFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/Annual_clim_swa_tnx1v4_20210415.nc'"
- else
- set SWACLIMFILE = "''"
- endif
- if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
- set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx1v4_20170820.nc'"
- else
- set RIVINFILE = "''"
- endif
- if ("$BLOM_N_DEPOSITION" == TRUE) then
- set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
- else
- set NDEPFILE = "''"
- endif
-else if ("$OCN_GRID" == tnx0.25v4) then
- set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.25v4_20170622.nc'"
- set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.25v4_20170623.nc'"
- set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.25v4_20170626.nc'"
- set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.25v4_20190612.nc'"
- set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.25v4_20190701.dat'"
- set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.25v4_20190612.dat'"
- set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.25v4_20170623.nc'"
- set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.25v4_20170623.nc'"
- set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.25v4_20181004.nc'"
- set SWACLIMFILE = "''"
- set SEDPORFILE = "''"
- if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
- set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.25v4_20170821.nc'"
- else
- set RIVINFILE = "''"
- endif
- if ("$BLOM_N_DEPOSITION" == TRUE) then
- set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
- else
- set NDEPFILE = "''"
- endif
-else if ("$OCN_GRID" == tnx0.125v4) then
- set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.125v4_20221013.nc'"
- set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.125v4_20230318.nc'"
- set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.125v4_20221013.nc'"
- set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.125v4_20221013.nc'"
- set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.125v4_20221013.dat'"
- set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.125v4_20221013.dat'"
- set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.125v4_20221013.nc'"
- set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.125v4_20221013.nc'"
- set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.125v4_20221013.nc'"
- set SWACLIMFILE = "''"
- set SEDPORFILE = "''"
- if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
- set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.125v4_20221013.nc'"
- else
- set RIVINFILE = "''"
- endif
- if ("$BLOM_N_DEPOSITION" == TRUE) then
- set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
- else
- set NDEPFILE = "''"
- endif
-else
- echo "$0 ERROR: Cannot deal with GRID = $OCN_GRID "
- exit -1
-endif
-
-
-#------------------------------------------------------------------------------
-# Create resolved namelist
-#------------------------------------------------------------------------------
-foreach mem ("`seq $NINST_OCN`")
- if ( ${NINST_OCN} == '1' ) then
- set inststr = ''
- else
- set inststr = ("`printf '_%4.4d' $mem`")
- endif
-
- # modify namelist variables as specified in user_nl_blom
- foreach line ("`grep = $CASEROOT/user_nl_blom$inststr`")
- if (`echo "$line" | tr -d ' ' | cut -c -1` != '#') then
- set var = `echo "$line" | sed 's/=.*//' | tr '[a-z]' '[A-Z]'`
- set val = `echo "$line" | sed 's/.*=//'`
- eval 'set $var = "$val"'
- endif
- end
-
-cp ocn_in.readme $RUNDIR/.
-
-cat >! $RUNDIR/ocn_in$inststr << EOF
-&LIMITS
- NDAY1 = $NDAY1
- NDAY2 = $NDAY2
- IDATE = $IDATE
- IDATE0 = $IDATE0
- RUNID = $RUNID
- EXPCNF = $EXPCNF
- RUNTYP = $RUNTYP
- GRFILE = $GRFILE
- ICFILE = $ICFILE
- PREF = $PREF
- BACLIN = $BACLIN
- BATROP = $BATROP
- MDV2HI = $MDV2HI
- MDV2LO = $MDV2LO
- MDV4HI = $MDV4HI
- MDV4LO = $MDV4LO
- MDC2HI = $MDC2HI
- MDC2LO = $MDC2LO
- VSC2HI = $VSC2HI
- VSC2LO = $VSC2LO
- VSC4HI = $VSC4HI
- VSC4LO = $VSC4LO
- CBAR = $CBAR
- CB = $CB
- CWBDTS = $CWBDTS
- CWBDLS = $CWBDLS
- MOMMTH = $MOMMTH
- BMCMTH = $BMCMTH
- RMPMTH = $RMPMTH
- MLRTTP = $MLRTTP
- RM0 = $RM0
- RM5 = $RM5
- CE = $CE
- TDFILE = $TDFILE
- NIWGF = $NIWGF
- NIWBF = $NIWBF
- NIWLF = $NIWLF
- SWAMTH = $SWAMTH
- JWTYPE = $JWTYPE
- CHLOPT = $CHLOPT
- CCFILE = $CCFILE
- TRXDAY = $TRXDAY
- SRXDAY = $SRXDAY
- TRXDPT = $TRXDPT
- SRXDPT = $SRXDPT
- TRXLIM = $TRXLIM
- SRXLIM = $SRXLIM
- APTFLX = $APTFLX
- APSFLX = $APSFLX
- DITFLX = $DITFLX
- DISFLX = $DISFLX
- SRXBAL = $SRXBAL
- SCFILE = $SCFILE
- WAVSRC = $WAVSRC
- SMTFRC = $SMTFRC
- SPRFAC = $SPRFAC
- ATM_PATH = $ATM_PATH
- ITEST = $ITEST
- JTEST = $JTEST
- CNSVDI = $CNSVDI
- CSDIAG = $CSDIAG
- RSTFRQ = $RSTFRQ
- RSTFMT = $RSTFMT
- RSTCMP = $RSTCMP
- IOTYPE = $IOTYPE
-/
-EOF
-
-if ("$BLOM_VCOORD" == cntiso_hybrid) then
-cat >>! $RUNDIR/ocn_in$inststr << EOF
-
-&VCOORD
- VCOORD_TYPE = $VCOORD_TYPE
- RECONSTRUCTION_METHOD = $RECONSTRUCTION_METHOD
- DENSITY_LIMITING = $DENSITY_LIMITING
- TRACER_LIMITING = $TRACER_LIMITING
- VELOCITY_LIMITING = $VELOCITY_LIMITING
- DENSITY_PC_UPPER_BNDR = $DENSITY_PC_UPPER_BNDR
- DENSITY_PC_LOWER_BNDR = $DENSITY_PC_LOWER_BNDR
- TRACER_PC_UPPER_BNDR = $TRACER_PC_UPPER_BNDR
- TRACER_PC_LOWER_BNDR = $TRACER_PC_LOWER_BNDR
- VELOCITY_PC_UPPER_BNDR = $VELOCITY_PC_UPPER_BNDR
- VELOCITY_PC_LOWER_BNDR = $VELOCITY_PC_LOWER_BNDR
- DPMIN_SURFACE = $DPMIN_SURFACE
- DPMIN_INFLATION_FACTOR = $DPMIN_INFLATION_FACTOR
- DPMIN_INTERIOR = $DPMIN_INTERIOR
- DKTZU = $DKTZU
- DKTZL = $DKTZL
-/
-EOF
-endif
-
-cat >>! $RUNDIR/ocn_in$inststr << EOF
-
-&DIFFUSION
- EITMTH = $EITMTH
- EDRITP = $EDRITP
- EDWMTH = $EDWMTH
- EDDF2D = $EDDF2D
- EDSPRS = $EDSPRS
- EGC = $EGC
- EGGAM = $EGGAM
- EGLSMN = $EGLSMN
- EGMNDF = $EGMNDF
- EGMXDF = $EGMXDF
- EGIDFQ = $EGIDFQ
- TBFILE = $TBFILE
- RHISCF = $RHISCF
- EDANIS = $EDANIS
- REDI3D = $REDI3D
- RHSCTP = $RHSCTP
- RI0 = $RI0
- BDMTYP = $BDMTYP
- BDMC1 = $BDMC1
- BDMC2 = $BDMC2
- BDMLDP = $BDMLDP
- TKEPF = $TKEPF
- SMOBLD = $SMOBLD
- LNGMTP = $LNGMTP
- LTEDTP = $LTEDTP
-/
-EOF
-
-if ($?CWMTAG) then
-cat >>! $RUNDIR/ocn_in$inststr << EOF
-
-&CWMOD
- CWMTAG = $CWMTAG
- CWMEDG = $CWMEDG
- CWMI = $CWMI
- CWMJ = $CWMJ
- CWMWTH = $CWMWTH
-/
-EOF
-endif
-
-cat >>! $RUNDIR/ocn_in$inststr << EOF
-
-&MERDIA
- MER_ORFILE = $MER_ORFILE
- MER_MIFILE = $MER_MIFILE
- MER_REGNAM = 'atlantic_arctic_ocean', 'atlantic_arctic_extended_ocean', 'indian_pacific_ocean', 'global_ocean'
- MER_REGFLG(1,:) = 2, 4
- MER_REGFLG(2,:) = 2, 4, 6, 7, 8, 9
- MER_REGFLG(3,:) = 3, 5
- MER_REGFLG(4,:) = 0
- MER_MINLAT = -34., -34., -34., -90.
- MER_MAXLAT = 90., 90., 90., 90.
-/
-
-&SECDIA
- SEC_SIFILE = $SEC_SIFILE
-/
-
-&DIAPHY
- GLB_FNAMETAG = $GLB_FNAMETAG
- GLB_AVEPERIO = $GLB_AVEPERIO
- GLB_FILEFREQ = $GLB_FILEFREQ
- GLB_COMPFLAG = $GLB_COMPFLAG
- GLB_NCFORMAT = $GLB_NCFORMAT
- H2D_ABSWND = $H2D_ABSWND
- H2D_ALB = $H2D_ALB
- H2D_BTMSTR = $H2D_BTMSTR
- H2D_BRNFLX = $H2D_BRNFLX
- H2D_BRNPD = $H2D_BRNPD
- H2D_DFL = $H2D_DFL
- H2D_EVA = $H2D_EVA
- H2D_FICE = $H2D_FICE
- H2D_FMLTFZ = $H2D_FMLTFZ
- H2D_HICE = $H2D_HICE
- H2D_HMLTFZ = $H2D_HMLTFZ
- H2D_HSNW = $H2D_HSNW
- H2D_IAGE = $H2D_IAGE
- H2D_IDKEDT = $H2D_IDKEDT
- H2D_LAMULT = $H2D_LAMULT
- H2D_LASL = $H2D_LASL
- H2D_LIP = $H2D_LIP
- H2D_MAXMLD = $H2D_MAXMLD
- H2D_MLD = $H2D_MLD
- H2D_MLTS = $H2D_MLTS
- H2D_MLTSMN = $H2D_MLTSMN
- H2D_MLTSMX = $H2D_MLTSMX
- H2D_MLTSSQ = $H2D_MLTSSQ
- H2D_MTKEUS = $H2D_MTKEUS
- H2D_MTKENI = $H2D_MTKENI
- H2D_MTKEBF = $H2D_MTKEBF
- H2D_MTKERS = $H2D_MTKERS
- H2D_MTKEPE = $H2D_MTKEPE
- H2D_MTKEKE = $H2D_MTKEKE
- H2D_MTY = $H2D_MTY
- H2D_NSF = $H2D_NSF
- H2D_PBOT = $H2D_PBOT
- H2D_PSRF = $H2D_PSRF
- H2D_RFIFLX = $H2D_RFIFLX
- H2D_RNFFLX = $H2D_RNFFLX
- H2D_SALFLX = $H2D_SALFLX
- H2D_SALRLX = $H2D_SALRLX
- H2D_SBOT = $H2D_SBOT
- H2D_SEALV = $H2D_SEALV
- H2D_SLVSQ = $H2D_SLVSQ
- H2D_SFL = $H2D_SFL
- H2D_SOP = $H2D_SOP
- H2D_SIGMX = $H2D_SIGMX
- H2D_SSS = $H2D_SSS
- H2D_SSSSQ = $H2D_SSSSQ
- H2D_SST = $H2D_SST
- H2D_SSTSQ = $H2D_SSTSQ
- H2D_SURFLX = $H2D_SURFLX
- H2D_SURRLX = $H2D_SURRLX
- H2D_SWA = $H2D_SWA
- H2D_T20D = $H2D_T20D
- H2D_TAUX = $H2D_TAUX
- H2D_TAUY = $H2D_TAUY
- H2D_TBOT = $H2D_TBOT
- H2D_TICE = $H2D_TICE
- H2D_TSRF = $H2D_TSRF
- H2D_UB = $H2D_UB
- H2D_UICE = $H2D_UICE
- H2D_USTAR = $H2D_USTAR
- H2D_USTAR3 = $H2D_USTAR3
- H2D_USTOKES = $H2D_USTOKES
- H2D_VB = $H2D_VB
- H2D_VICE = $H2D_VICE
- H2D_VSTOKES = $H2D_VSTOKES
- H2D_ZTX = $H2D_ZTX
- LYR_BFSQ = $LYR_BFSQ
- LYR_DIFDIA = $LYR_DIFDIA
- LYR_DIFVMO = $LYR_DIFVMO
- LYR_DIFVHO = $LYR_DIFVHO
- LYR_DIFVSO = $LYR_DIFVSO
- LYR_DIFINT = $LYR_DIFINT
- LYR_DIFISO = $LYR_DIFISO
- LYR_DP = $LYR_DP
- LYR_DZ = $LYR_DZ
- LYR_SALN = $LYR_SALN
- LYR_TEMP = $LYR_TEMP
- LYR_TRC = $LYR_TRC
- LYR_UFLX = $LYR_UFLX
- LYR_UTFLX = $LYR_UTFLX
- LYR_USFLX = $LYR_USFLX
- LYR_UMFLTD = $LYR_UMFLTD
- LYR_UMFLSM = $LYR_UMFLSM
- LYR_UTFLTD = $LYR_UTFLTD
- LYR_UTFLSM = $LYR_UTFLSM
- LYR_UTFLLD = $LYR_UTFLLD
- LYR_USFLTD = $LYR_USFLTD
- LYR_USFLSM = $LYR_USFLSM
- LYR_USFLLD = $LYR_USFLLD
- LYR_UVEL = $LYR_UVEL
- LYR_VFLX = $LYR_VFLX
- LYR_VTFLX = $LYR_VTFLX
- LYR_VSFLX = $LYR_VSFLX
- LYR_VMFLTD = $LYR_VMFLTD
- LYR_VMFLSM = $LYR_VMFLSM
- LYR_VTFLTD = $LYR_VTFLTD
- LYR_VTFLSM = $LYR_VTFLSM
- LYR_VTFLLD = $LYR_VTFLLD
- LYR_VSFLTD = $LYR_VSFLTD
- LYR_VSFLSM = $LYR_VSFLSM
- LYR_VSFLLD = $LYR_VSFLLD
- LYR_VVEL = $LYR_VVEL
- LYR_WFLX = $LYR_WFLX
- LYR_WFLX2 = $LYR_WFLX2
- LYR_PV = $LYR_PV
- LYR_TKE = $LYR_TKE
- LYR_GLS_PSI = $LYR_GLS_PSI
- LYR_IDLAGE = $LYR_IDLAGE
- LVL_BFSQ = $LVL_BFSQ
- LVL_DIFDIA = $LVL_DIFDIA
- LVL_DIFVMO = $LVL_DIFVMO
- LVL_DIFVHO = $LVL_DIFVHO
- LVL_DIFVSO = $LVL_DIFVSO
- LVL_DIFINT = $LVL_DIFINT
- LVL_DIFISO = $LVL_DIFISO
- LVL_DZ = $LVL_DZ
- LVL_SALN = $LVL_SALN
- LVL_TEMP = $LVL_TEMP
- LVL_TRC = $LVL_TRC
- LVL_UFLX = $LVL_UFLX
- LVL_UTFLX = $LVL_UTFLX
- LVL_USFLX = $LVL_USFLX
- LVL_UMFLTD = $LVL_UMFLTD
- LVL_UMFLSM = $LVL_UMFLSM
- LVL_UTFLTD = $LVL_UTFLTD
- LVL_UTFLSM = $LVL_UTFLSM
- LVL_UTFLLD = $LVL_UTFLLD
- LVL_USFLTD = $LVL_USFLTD
- LVL_USFLSM = $LVL_USFLSM
- LVL_USFLLD = $LVL_USFLLD
- LVL_UVEL = $LVL_UVEL
- LVL_VFLX = $LVL_VFLX
- LVL_VTFLX = $LVL_VTFLX
- LVL_VSFLX = $LVL_VSFLX
- LVL_VMFLTD = $LVL_VMFLTD
- LVL_VMFLSM = $LVL_VMFLSM
- LVL_VTFLTD = $LVL_VTFLTD
- LVL_VTFLSM = $LVL_VTFLSM
- LVL_VTFLLD = $LVL_VTFLLD
- LVL_VSFLTD = $LVL_VSFLTD
- LVL_VSFLSM = $LVL_VSFLSM
- LVL_VSFLLD = $LVL_VSFLLD
- LVL_VVEL = $LVL_VVEL
- LVL_WFLX = $LVL_WFLX
- LVL_WFLX2 = $LVL_WFLX2
- LVL_PV = $LVL_PV
- LVL_TKE = $LVL_TKE
- LVL_GLS_PSI = $LVL_GLS_PSI
- LVL_IDLAGE = $LVL_IDLAGE
- MSC_MMFLXL = $MSC_MMFLXL
- MSC_MMFLXD = $MSC_MMFLXD
- MSC_MMFTDL = $MSC_MMFTDL
- MSC_MMFSML = $MSC_MMFSML
- MSC_MMFTDD = $MSC_MMFTDD
- MSC_MMFSMD = $MSC_MMFSMD
- MSC_MHFLX = $MSC_MHFLX
- MSC_MHFTD = $MSC_MHFTD
- MSC_MHFSM = $MSC_MHFSM
- MSC_MHFLD = $MSC_MHFLD
- MSC_MSFLX = $MSC_MSFLX
- MSC_MSFTD = $MSC_MSFTD
- MSC_MSFSM = $MSC_MSFSM
- MSC_MSFLD = $MSC_MSFLD
- MSC_VOLTR = $MSC_VOLTR
- MSC_MASSGS = $MSC_MASSGS
- MSC_VOLGS = $MSC_VOLGS
- MSC_SALNGA = $MSC_SALNGA
- MSC_TEMPGA = $MSC_TEMPGA
- MSC_SSSGA = $MSC_SSSGA
- MSC_SSTGA = $MSC_SSTGA
-/
-EOF
-
-if ("$ecosys" == TRUE) then
-cat >>! $RUNDIR/ocn_in$inststr << EOF
-
-&BGCNML
- ATM_CO2 = $CCSM_CO2_PPMV
- FEDEPFILE = $FEDEPFILE
- SWACLIMFILE = $SWACLIMFILE
- DO_RIVINPT = $DO_RIVINPT
- RIVINFILE = $RIVINFILE
- DO_NDEP = $DO_NDEP
- NDEPFILE = $NDEPFILE
- DO_OALK = $DO_OALK
- DO_SEDSPINUP = $DO_SEDSPINUP
- SEDSPIN_YR_S = $SEDSPIN_YR_S
- SEDSPIN_YR_E = $SEDSPIN_YR_E
- SEDSPIN_NCYC = $SEDSPIN_NCYC
- INIDIC = $INIDIC
- INIALK = $INIALK
- INIPO4 = $INIPO4
- INIOXY = $INIOXY
- ININO3 = $ININO3
- INISIL = $INISIL
- INID13C = $INID13C
- INID14C = $INID14C
- WITH_DMSPH = $WITH_DMSPH
- PI_PH_FILE = $PI_PH_FILE
- L_3DVARSEDPOR = $L_3DVARSEDPOR
- SEDPORFILE = $SEDPORFILE
-/
-
-&BGCOAFX
- OALKSCEN = $BGCOAFX_OALKSCEN
- OALKFILE = $BGCOAFX_OALKFILE
- ADDALK = $BGCOAFX_ADDALK
- CDRMIP_LATMAX = $BGCOAFX_CDRMIP_LATMAX
- CDRMIP_LATMIN = $BGCOAFX_CDRMIP_LATMIN
- RAMP_START = $BGCOAFX_RAMP_START
- RAMP_END = $BGCOAFX_RAMP_END
-/
-
-&DIABGC
- GLB_FNAMETAG = $BGC_FNAMETAG
- GLB_AVEPERIO = $BGC_AVEPERIO
- GLB_FILEFREQ = $BGC_FILEFREQ
- GLB_COMPFLAG = $BGC_COMPFLAG
- GLB_NCFORMAT = $BGC_NCFORMAT
- GLB_INVENTORY = $BGC_INVENTORY
- SRF_PHOSPH = $SRF_PHOSPH
- SRF_OXYGEN = $SRF_OXYGEN
- SRF_IRON = $SRF_IRON
- SRF_ANO3 = $SRF_ANO3
- SRF_ALKALI = $SRF_ALKALI
- SRF_SILICA = $SRF_SILICA
- SRF_DIC = $SRF_DIC
- SRF_PHYTO = $SRF_PHYTO
- SRF_PH = $SRF_PH
- SRF_EXPORT = $SRF_EXPORT
- SRF_EXPOSI = $SRF_EXPOSI
- SRF_EXPOCA = $SRF_EXPOCA
- SRF_KWCO2 = $SRF_KWCO2
- SRF_KWCO2KHM = $SRF_KWCO2KHM
- SRF_CO2KH = $SRF_CO2KH
- SRF_CO2KHM = $SRF_CO2KHM
- SRF_PCO2 = $SRF_PCO2
- SRF_PCO2M = $SRF_PCO2M
- SRF_CO2FXD = $SRF_CO2FXD
- SRF_CO2FXU = $SRF_CO2FXU
- SRF_OXFLUX = $SRF_OXFLUX
- SRF_NIFLUX = $SRF_NIFLUX
- SRF_N2OFX = $SRF_N2OFX
- SRF_DMSFLUX = $SRF_DMSFLUX
- SRF_DMS = $SRF_DMS
- SRF_DMSPROD = $SRF_DMSPROD
- SRF_DMS_BAC = $SRF_DMS_BAC
- SRF_DMS_UV = $SRF_DMS_UV
- SRF_ATMCO2 = $SRF_ATMCO2
- SRF_ATMO2 = $SRF_ATMO2
- SRF_ATMN2 = $SRF_ATMN2
- SRF_NATDIC = $SRF_NATDIC
- SRF_NATALKALI = $SRF_NATALKALI
- SRF_NATPH = $SRF_NATPH
- SRF_NATPCO2 = $SRF_NATPCO2
- SRF_NATCO2FX = $SRF_NATCO2FX
- SRF_CO213FXD = $SRF_CO213FXD
- SRF_CO213FXU = $SRF_CO213FXU
- SRF_CO214FXD = $SRF_CO214FXD
- SRF_CO214FXU = $SRF_CO214FXU
- SRF_CFC11 = $SRF_CFC11
- SRF_CFC12 = $SRF_CFC12
- SRF_SF6 = $SRF_SF6
- SRF_BROMO = $SRF_BROMO
- SRF_BROMOFX = $SRF_BROMOFX
- INT_BROMOPRO = $INT_BROMOPRO
- INT_BROMOUV = $INT_BROMOUV
- INT_PHOSY = $INT_PHOSY
- INT_NFIX = $INT_NFIX
- INT_DNIT = $INT_DNIT
- FLX_NDEP = $FLX_NDEP
- FLX_OALK = $FLX_OALK
- FLX_CAR0100 = $FLX_CAR0100
- FLX_CAR0500 = $FLX_CAR0500
- FLX_CAR1000 = $FLX_CAR1000
- FLX_CAR2000 = $FLX_CAR2000
- FLX_CAR4000 = $FLX_CAR4000
- FLX_CAR_BOT = $FLX_CAR_BOT
- FLX_BSI0100 = $FLX_BSI0100
- FLX_BSI0500 = $FLX_BSI0500
- FLX_BSI1000 = $FLX_BSI1000
- FLX_BSI2000 = $FLX_BSI2000
- FLX_BSI4000 = $FLX_BSI4000
- FLX_BSI_BOT = $FLX_BSI_BOT
- FLX_CAL0100 = $FLX_CAL0100
- FLX_CAL0500 = $FLX_CAL0500
- FLX_CAL1000 = $FLX_CAL1000
- FLX_CAL2000 = $FLX_CAL2000
- FLX_CAL4000 = $FLX_CAL4000
- FLX_CAL_BOT = $FLX_CAL_BOT
- LYR_PHYTO = $LYR_PHYTO
- LYR_GRAZER = $LYR_GRAZER
- LYR_DOC = $LYR_DOC
- LYR_PHOSY = $LYR_PHOSY
- LYR_PHOSPH = $LYR_PHOSPH
- LYR_OXYGEN = $LYR_OXYGEN
- LYR_IRON = $LYR_IRON
- LYR_ANO3 = $LYR_ANO3
- LYR_ALKALI = $LYR_ALKALI
- LYR_SILICA = $LYR_SILICA
- LYR_DIC = $LYR_DIC
- LYR_POC = $LYR_POC
- LYR_CALC = $LYR_CALC
- LYR_OPAL = $LYR_OPAL
- LYR_CO3 = $LYR_CO3
- LYR_N2O = $LYR_N2O
- LYR_PH = $LYR_PH
- LYR_OMEGAC = $LYR_OMEGAC
- LYR_OMEGAA = $LYR_OMEGAA
- LYR_PREFO2 = $LYR_PREFO2
- LYR_O2SAT = $LYR_O2SAT
- LYR_PREFPO4 = $LYR_PREFPO4
- LYR_PREFALK = $LYR_PREFALK
- LYR_PREFDIC = $LYR_PREFDIC
- LYR_DICSAT = $LYR_DICSAT
- LYR_NATDIC = $LYR_NATDIC
- LYR_NATALKALI = $LYR_NATALKALI
- LYR_NATCO3 = $LYR_NATCO3
- LYR_NATCALC = $LYR_NATCALC
- LYR_NATPH = $LYR_NATPH
- LYR_NATOMEGAC = $LYR_NATOMEGAC
- LYR_NATOMEGAA = $LYR_NATOMEGAA
- LYR_DIC13 = $LYR_DIC13
- LYR_DIC14 = $LYR_DIC14
- LYR_D13C = $LYR_D13C
- LYR_D14C = $LYR_D14C
- LYR_BIGD14C = $LYR_BIGD14C
- LYR_POC13 = $LYR_POC13
- LYR_DOC13 = $LYR_DOC13
- LYR_CALC13 = $LYR_CALC13
- LYR_PHYTO13 = $LYR_PHYTO13
- LYR_GRAZER13 = $LYR_GRAZER13
- LYR_CFC11 = $LYR_CFC11
- LYR_CFC12 = $LYR_CFC12
- LYR_SF6 = $LYR_SF6
- LYR_NOS = $LYR_NOS
- LYR_WPHY = $LYR_WPHY
- LYR_WNOS = $LYR_WNOS
- LYR_EPS = $LYR_EPS
- LYR_ASIZE = $LYR_ASIZE
- LYR_DP = $BGC_DP
- LYR_BROMO = $LYR_BROMO
- LVL_PHYTO = $LVL_PHYTO
- LVL_GRAZER = $LVL_GRAZER
- LVL_DOC = $LVL_DOC
- LVL_PHOSY = $LVL_PHOSY
- LVL_PHOSPH = $LVL_PHOSPH
- LVL_OXYGEN = $LVL_OXYGEN
- LVL_IRON = $LVL_IRON
- LVL_ANO3 = $LVL_ANO3
- LVL_ALKALI = $LVL_ALKALI
- LVL_SILICA = $LVL_SILICA
- LVL_DIC = $LVL_DIC
- LVL_POC = $LVL_POC
- LVL_CALC = $LVL_CALC
- LVL_OPAL = $LVL_OPAL
- LVL_CO3 = $LVL_CO3
- LVL_N2O = $LVL_N2O
- LVL_PH = $LVL_PH
- LVL_OMEGAC = $LVL_OMEGAC
- LVL_OMEGAA = $LVL_OMEGAA
- LVL_PREFO2 = $LVL_PREFO2
- LVL_O2SAT = $LVL_O2SAT
- LVL_PREFPO4 = $LVL_PREFPO4
- LVL_PREFALK = $LVL_PREFALK
- LVL_PREFDIC = $LVL_PREFDIC
- LVL_DICSAT = $LVL_DICSAT
- LVL_NATDIC = $LVL_NATDIC
- LVL_NATALKALI = $LVL_NATALKALI
- LVL_NATCO3 = $LVL_NATCO3
- LVL_NATCALC = $LVL_NATCALC
- LVL_NATPH = $LVL_NATPH
- LVL_NATOMEGAC = $LVL_NATOMEGAC
- LVL_NATOMEGAA = $LVL_NATOMEGAA
- LVL_DIC13 = $LVL_DIC13
- LVL_DIC14 = $LVL_DIC14
- LVL_D13C = $LVL_D13C
- LVL_POC13 = $LVL_POC13
- LVL_DOC13 = $LVL_DOC13
- LVL_CALC13 = $LVL_CALC13
- LVL_PHYTO13 = $LVL_PHYTO13
- LVL_GRAZER13 = $LVL_GRAZER13
- LVL_CFC11 = $LVL_CFC11
- LVL_CFC12 = $LVL_CFC12
- LVL_SF6 = $LVL_SF6
- LVL_NOS = $LVL_NOS
- LVL_WPHY = $LVL_WPHY
- LVL_WNOS = $LVL_WNOS
- LVL_EPS = $LVL_EPS
- LVL_ASIZE = $LVL_ASIZE
- LVL_BROMO = $LVL_BROMO
- FLX_SEDIFFIC = $FLX_SEDIFFIC
- FLX_SEDIFFAL = $FLX_SEDIFFAL
- FLX_SEDIFFPH = $FLX_SEDIFFPH
- FLX_SEDIFFOX = $FLX_SEDIFFOX
- FLX_SEDIFFN2 = $FLX_SEDIFFN2
- FLX_SEDIFFNO3 = $FLX_SEDIFFNO3
- FLX_SEDIFFSI = $FLX_SEDIFFSI
- SDM_POWAIC = $SDM_POWAIC
- SDM_POWAAL = $SDM_POWAAL
- SDM_POWAPH = $SDM_POWAPH
- SDM_POWAOX = $SDM_POWAOX
- SDM_POWN2 = $SDM_POWN2
- SDM_POWNO3 = $SDM_POWNO3
- SDM_POWASI = $SDM_POWASI
- SDM_SSSO12 = $SDM_SSSO12
- SDM_SSSSIL = $SDM_SSSSIL
- SDM_SSSC12 = $SDM_SSSC12
- SDM_SSSTER = $SDM_SSSTER
- BUR_SSSO12 = $BUR_SSSO12
- BUR_SSSSIL = $BUR_SSSSIL
- BUR_SSSC12 = $BUR_SSSC12
- BUR_SSSTER = $BUR_SSSTER
-/
-EOF
-endif
-
-end ## foreach mem ("`seq $NINST_OCN`")
-
-#------------------------------------------------------------------------------
-# Generate blom.input_data_list
-#------------------------------------------------------------------------------
-
-cat > $CASEBUILD/blom.input_data_list << EOF
-grid_file = `echo $GRFILE | tr -d '"' | tr -d "'"`
-meridional_transport_index_file = `echo $MER_MIFILE | tr -d '"' | tr -d "'"`
-meridional_transport_basin_file = `echo $MER_ORFILE | tr -d '"' | tr -d "'"`
-section_index_file = `echo $SEC_SIFILE | tr -d '"' | tr -d "'"`
-tidal_dissipation_file = `echo $TDFILE | tr -d '"' | tr -d "'"`
-EOF
-if ($SWAMTH == "'chlorophyll'") then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-chlorophyll_concentration_file = `echo $CCFILE | tr -d '"' | tr -d "'"`
-EOF
-endif
-if ($SRXDAY != "0.") then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-sss_climatology_file = `echo $SCFILE | tr -d '"' | tr -d "'"`
-EOF
-endif
-
-# iHAMOCC boundary conditions
-if ($ecosys == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-dust_file = `echo $FEDEPFILE | tr -d '"' | tr -d "'"`
-EOF
- if ($BLOM_RIVER_NUTRIENTS == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-river_file = `echo $RIVINFILE | tr -d '"' | tr -d "'"`
-EOF
- endif
- if ($BLOM_N_DEPOSITION == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-n_deposition_file = `echo $NDEPFILE | tr -d '"' | tr -d "'"`
-EOF
- endif
- if ($BGCOAFX_OALKFILE != "''") then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-oafx_file = `echo $BGCOAFX_OALKFILE | tr -d '"' | tr -d "'"`
-EOF
- endif
- if ($HAMOCC_VSLS == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-swa_clim_file = `echo $SWACLIMFILE | tr -d '"' | tr -d "'"`
-EOF
- endif
- if ($L_3DVARSEDPOR == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-sed_porosity_file = `echo $SEDPORFILE | tr -d '"' | tr -d "'"`
-EOF
- endif
-endif
-
-# BLOM initial conditions
-cat >> $CASEBUILD/blom.input_data_list << EOF
-inicon_file = `echo $ICFILE | tr -d '"' | tr -d "'"`
-EOF
-
-
-# iHAMOCC initial conditions
-if ($ecosys == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-inidic_file = `echo $INIDIC | tr -d '"' | tr -d "'"`
-inialk_file = `echo $INIALK | tr -d '"' | tr -d "'"`
-inipo4_file = `echo $INIPO4 | tr -d '"' | tr -d "'"`
-inioxy_file = `echo $INIOXY | tr -d '"' | tr -d "'"`
-inino3_file = `echo $ININO3 | tr -d '"' | tr -d "'"`
-inisil_file = `echo $INISIL | tr -d '"' | tr -d "'"`
-EOF
- if ($HAMOCC_CISO == TRUE) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-inic13_file = `echo $INID13C | tr -d '"' | tr -d "'"`
-inic14_file = `echo $INID14C | tr -d '"' | tr -d "'"`
-EOF
- endif
- if ($RUN_TYPE == startup) then
- if ($ICFILE =~ *.blom.r.*) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-inicon_bgc_file = `echo $ICFILE | sed 's/.blom.r./.blom.rbgc./' | tr -d '"' | tr -d "'"`
-EOF
- else if ($ICFILE =~ *.micom.r.*) then
-cat >> $CASEBUILD/blom.input_data_list << EOF
-inicon_bgc_file = `echo $ICFILE | sed 's/.micom.r./.micom.rbgc./' | tr -d '"' | tr -d "'"`
-EOF
- endif
- endif
-endif
-
-
+#!/usr/bin/env python3
+
+"""BLOM namelist creator
+"""
+
+# Typically ignore this.
+# pylint: disable=invalid-name
+
+# Disable these because this is our standard setup
+# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position
+
+import os, shutil, sys, glob, filecmp, imp, re
+
+CIMEROOT = os.environ.get("CIMEROOT")
+if CIMEROOT is None:
+ raise SystemExit("ERROR: must set CIMEROOT environment variable")
+sys.path.append(os.path.join(CIMEROOT, "CIME", "Tools"))
+
+from standard_script_setup import *
+from CIME.case import Case
+from CIME.nmlgen import NamelistGenerator
+from CIME.utils import expect
+from CIME.utils import run_cmd_no_fail, expect
+from CIME.utils import run_cmd
+from CIME.buildnml import create_namelist_infile, parse_input
+
+import glob, shutil
+logger = logging.getLogger(__name__)
+
+# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements
+####################################################################################
+def _create_namelists(case, confdir, infile, nmlgen):
+####################################################################################
+
+ """Write out the namelist for this component.
+
+ Most arguments are the same as those for `NamelistGenerator`.
+ The `confdir` argument is used to specify the directory in which output files will be placed.
+ """
+ rundir = case.get_value("RUNDIR")
+ srcroot = case.get_value("SRCROOT")
+ din_loc_root = case.get_value("DIN_LOC_ROOT")
+ caseroot = case.get_value("CASEROOT")
+ continue_run = case.get_value("CONTINUE_RUN")
+ ocn_grid = case.get_value("OCN_GRID")
+ ocn_ncpl = case.get_value("OCN_NCPL")
+ blom_unit = case.get_value("BLOM_UNIT")
+ blom_vcoord = case.get_value("BLOM_VCOORD")
+ pio_typename_ocn = case.get_value("PIO_TYPENAME_OCN")
+ pio_netcdf_format_ocn = case.get_value("PIO_NETCDF_FORMAT_OCN")
+ is_test = case.get_value("TEST")
+ blom_river_nutrients = case.get_value("BLOM_RIVER_NUTRIENTS")
+ blom_n_deposition = case.get_value("BLOM_N_DEPOSITION")
+ blom_ndep_scenario = case.get_value("BLOM_NDEP_SCENARIO")
+ blom_coupling = case.get_value("BLOM_COUPLING")
+ blom_tracer_modules = case.get_value("BLOM_TRACER_MODULES")
+ hamocc_vsls = case.get_value("HAMOCC_VSLS")
+ hamocc_ciso = case.get_value("HAMOCC_CISO")
+ hamocc_sedspinup = case.get_value("HAMOCC_SEDSPINUP")
+ hamocc_sedspinup_yr_start = case.get_value("HAMOCC_SEDSPINUP_YR_START")
+ hamocc_sedspinup_yr_end = case.get_value("HAMOCC_SEDSPINUP_YR_END")
+ hamocc_sedspinup_ncycle = case.get_value("HAMOCC_SEDSPINUP_NCYCLE")
+
+ # error checks
+ if hamocc_vsls and ocn_grid != "tnx1v4":
+ expect(False,
+ "HAMOCC_VSLS is not supported at this grid resolution (no swa-climatology available)")
+
+ # create config dictionary - used in namelist_definition_blom.xml
+ config = {}
+
+ config['ocn_grid'] = ocn_grid
+ config['ocn_ncpl'] = str(ocn_ncpl)
+ config['pio_typename_ocn'] = pio_typename_ocn
+ config['pio_netcdf_format_ocn'] = pio_netcdf_format_ocn
+ config["continue_run"] = "yes" if continue_run else "no"
+ config["is_test"] = "yes" if is_test else "no"
+ if is_test:
+ testcase = case.get_value("TESTCASE")
+ config["is_test_pfs"] = "yes" if testcase == "PFS" else "no"
+ config["empty_hist"] = "yes" if testcase == "PFS" else "no"
+
+ config['blom_unit'] = blom_unit if blom_unit else "unset"
+ config['blom_vcoord'] = blom_vcoord
+ config["blom_river_nutrients"] = "yes" if blom_river_nutrients else "no"
+ config["blom_ndep_scenario"] = "ssp" if "ssp" in blom_ndep_scenario else blom_ndep_scenario
+ config["blom_n_deposition"] = "yes" if blom_n_deposition else "no"
+ config["blom_coupling"] = blom_coupling
+ config["blom_tracer_modules"] = blom_tracer_modules
+
+ config["hamocc_vsls"] = "yes" if hamocc_vsls else "no"
+ config["hamocc_ciso"] = "yes" if hamocc_ciso else "no"
+ config["hamocc_sedspinup"] = "yes" if hamocc_sedspinup else "no"
+ config["hamocc_sedspinup_yr_start"] = hamocc_sedspinup_yr_start
+ config["hamocc_sedspinup_yr_end"] = hamocc_sedspinup_yr_end
+ config["hamocc_sedspinup_ncycle"] = hamocc_sedspinup_ncycle
+
+ #----------------------------------------------------
+ # initialize namelist defaults
+ #----------------------------------------------------
+ nmlgen.init_defaults(infile, config)
+
+ if nmlgen.get_value('swaclimfile') == 'UNSET':
+ nmlgen.set_value('swaclimfile', value="")
+
+ if nmlgen.get_value('inid13c') == 'UNSET':
+ nmlgen.set_value('inid13c', value="")
+
+ if nmlgen.get_value('inid14c') == 'UNSET':
+ nmlgen.set_value('inid14c', value="")
+
+ run_startdate = case.get_value("RUN_STARTDATE")
+ idate = run_startdate.replace('-','')
+ nmlgen.set_value("idate", idate)
+ nmlgen.set_value("idate0", idate)
+
+ #----------------------------------------------------
+ # Write out namelist groups
+ #----------------------------------------------------
+ groups=['limits','diffusion']
+
+ cwmtag = nmlgen.get_default('cwmtag', config=config)
+ if cwmtag[0] != 'unset':
+ groups.append('cwmod')
+
+ groups.append('merdia')
+ groups.append('secdia')
+ groups.append('diaphy')
+
+ if case.get_value("BLOM_VCOORD") == "cntiso_hybrid":
+ groups.append('vcoord')
+
+ if "ecosys" in case.get_value("BLOM_TRACER_MODULES"):
+ groups.append("bgcnml")
+ groups.append("bgcoafx")
+ groups.append("diabgc")
+
+ data_list_path = os.path.join(case.get_case_root(), "Buildconf", "blom.input_data_list")
+ if os.path.exists(data_list_path):
+ os.remove(data_list_path)
+
+ # Create initial ocn_in
+ namelist_file = os.path.join(confdir, "ocn_in")
+ nmlgen.write_output_file(namelist_file, data_list_path, groups=groups, sorted_groups=False)
+
+ # Replace MER_REGFLAG1 -> MER_REGFLAG4 with array syntax in ocn_in
+ from pathlib import Path
+ file = Path(namelist_file)
+ file.write_text(file.read_text().replace('mer_regflg1','mer_regflg(1,:)'))
+ file.write_text(file.read_text().replace('mer_regflg2','mer_regflg(2,:)'))
+ file.write_text(file.read_text().replace('mer_regflg3','mer_regflg(3,:)'))
+ file.write_text(file.read_text().replace('mer_regflg4','mer_regflg(4,:)'))
+
+ # To compare with previous namelist generation, make namelist variable uppercase and
+ # use single quotes instead of back quotes and make sure that file variables set to UNSET
+ # get changed to blank quotes
+ namelist_file_temp = os.path.join(confdir, "ocn_in_temp")
+ with open(namelist_file, "r") as fread:
+ with open(namelist_file_temp, "w") as fwrite:
+ for line_read in fread:
+ # replace single quote with double quote to generate same namelist as using
+ # csh buildnml
+ line = line_read.replace('"',"'")
+ # make all namelists upper case to generate same namelist as using csh buildnml
+ tokens = line.split('=',maxsplit=1)
+ if len(tokens) == 2:
+ # Change UNSET values for files to lower case
+ if 'UNSET' in tokens[1]:
+ tokens[1] = "'unset'"
+ fwrite.write(f" {tokens[0].upper().strip()} = {tokens[1].strip()}\n")
+ else:
+ fwrite.write(line)
+ shutil.move(namelist_file_temp, namelist_file)
+
+ # Copy ocn_in.readme to $RUNDIR
+ src_filename = os.path.join(srcroot,"components","blom","cime_config","ocn_in.readme")
+ dst_filename = os.path.join(rundir,"ocn_in.readme")
+
+ if not os.path.exists(dst_filename):
+ shutil.copy(src_filename, dst_filename)
+
+ logger.debug(f"blom: grid is {ocn_grid}")
+
+###############################################################################
+def buildnml(case, caseroot, compname):
+###############################################################################
+ """Build the blom namelist """
+
+ # Build the component namelist
+ if compname != "blom":
+ raise AttributeError
+ comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")
+ srcroot = case.get_value("SRCROOT")
+ rundir = case.get_value("RUNDIR")
+ ninst = case.get_value("NINST_OCN")
+
+ # determine the confdir directory
+ confdir = os.path.join(caseroot,"Buildconf","blomconf")
+ if not os.path.isdir(confdir):
+ os.makedirs(confdir)
+
+ #----------------------------------------------------
+ # Construct the namelist generator
+ #----------------------------------------------------
+ # determine directory for user modified namelist_definitions.xml and namelist_defaults.xml
+ user_xml_dir = os.path.join(caseroot, "SourceMods", "src.blom")
+ expect (os.path.isdir(user_xml_dir),
+ "user_xml_dir %s does not exist " %user_xml_dir)
+
+ # user definition *replaces* existing definition.
+ namelist_xml_dir = os.path.join(comp_root_dir_ocn, "cime_config")
+ definition_file = [os.path.join(namelist_xml_dir, "namelist_definition_blom.xml")]
+ user_definition = os.path.join(user_xml_dir, "namelist_definition_blom.xml")
+ if os.path.isfile(user_definition):
+ definition_file = [user_definition]
+ for file_ in definition_file:
+ expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_)
+
+ # Create the namelist generator object - independent of instance
+ nmlgen = NamelistGenerator(case, definition_file)
+
+ #----------------------------------------------------
+ # Loop over instances
+ #----------------------------------------------------
+ for inst_counter in range(1, ninst+1):
+
+ # determine instance string
+ inst_string = ""
+ if ninst > 1:
+ inst_string = '_' + '%04d' % inst_counter
+
+ # If multi-instance case does not have restart file, use
+ # single-case restart for each instance
+ rpointer = "rpointer.ice"
+ if (os.path.isfile(os.path.join(rundir,rpointer)) and
+ (not os.path.isfile(os.path.join(rundir,rpointer + inst_string)))):
+ shutil.copy(os.path.join(rundir, rpointer),
+ os.path.join(rundir, rpointer + inst_string))
+
+ inst_string_label = inst_string
+ if not inst_string_label:
+ inst_string_label = "\"\""
+
+ # create namelist_infile using user_nl_file as input
+ user_nl_file = os.path.join(caseroot, "user_nl_blom" + inst_string)
+ expect(os.path.isfile(user_nl_file),
+ "Missing required user_nl_file %s " %(user_nl_file))
+ infile = os.path.join(confdir, "namelist_infile")
+ create_namelist_infile(case, user_nl_file, infile)
+ namelist_infile = [infile]
+
+ # create namelist
+ _create_namelists(case, confdir, namelist_infile, nmlgen)
+
+ # copy namelist files to rundir
+ if os.path.isdir(rundir):
+ file1 = os.path.join(confdir, "ocn_in")
+ file2 = os.path.join(rundir, "ocn_in")
+ if inst_string:
+ file2 += inst_string
+ logger.debug("BLOM namelist copy: file1 %s file2 %s " %(file1, file2))
+ shutil.copy2(file1, file2)
+
+###############################################################################
+def _main_func():
+
+ caseroot = parse_input(sys.argv)
+ with Case(caseroot, read_only=False) as case:
+ buildnml(case, caseroot, "blom")
+
+if __name__ == "__main__":
+ _main_func()
diff --git a/cime_config/buildnml.csh b/cime_config/buildnml.csh
new file mode 100644
index 00000000..caf1f533
--- /dev/null
+++ b/cime_config/buildnml.csh
@@ -0,0 +1,1674 @@
+#! /bin/csh -f
+
+#------------------------------------------------------------------------------
+# Get variables from Case XML-files
+#------------------------------------------------------------------------------
+
+set CASEROOT = `./xmlquery CASEROOT --value`
+set OCN_GRID = `./xmlquery OCN_GRID --value`
+set BLOM_VCOORD = `./xmlquery BLOM_VCOORD --value`
+set BLOM_UNIT = `./xmlquery BLOM_UNIT --value`
+set DIN_LOC_ROOT = `./xmlquery DIN_LOC_ROOT --value`
+set RUN_TYPE = `./xmlquery RUN_TYPE --value`
+set CONTINUE_RUN = `./xmlquery CONTINUE_RUN --value`
+set CASEBUILD = `./xmlquery CASEBUILD --value`
+set CCSM_CO2_PPMV = `./xmlquery CCSM_CO2_PPMV --value`
+set OCN_NCPL = `./xmlquery OCN_NCPL --value`
+set BLOM_COUPLING = `./xmlquery BLOM_COUPLING --value`
+set RUNDIR = `./xmlquery RUNDIR --value`
+set BLOM_TRACER_MODULES = `./xmlquery BLOM_TRACER_MODULES --value`
+set BLOM_RIVER_NUTRIENTS = `./xmlquery BLOM_RIVER_NUTRIENTS --value`
+set BLOM_N_DEPOSITION = `./xmlquery BLOM_N_DEPOSITION --value`
+set BLOM_NDEP_SCENARIO = `./xmlquery BLOM_NDEP_SCENARIO --value`
+set HAMOCC_VSLS = `./xmlquery HAMOCC_VSLS --value`
+set HAMOCC_CISO = `./xmlquery HAMOCC_CISO --value`
+set HAMOCC_SEDSPINUP = `./xmlquery HAMOCC_SEDSPINUP --value`
+set HAMOCC_SEDSPINUP_YR_START = `./xmlquery HAMOCC_SEDSPINUP_YR_START --value`
+set HAMOCC_SEDSPINUP_YR_END = `./xmlquery HAMOCC_SEDSPINUP_YR_END --value`
+set HAMOCC_SEDSPINUP_NCYCLE = `./xmlquery HAMOCC_SEDSPINUP_NCYCLE --value`
+set RUN_STARTDATE = `./xmlquery RUN_STARTDATE --value`
+set PIO_TYPENAME_OCN = `./xmlquery PIO_TYPENAME_OCN --value`
+set PIO_NETCDF_FORMAT_OCN = `./xmlquery PIO_NETCDF_FORMAT_OCN --value`
+set NINST_OCN = `./xmlquery NINST_OCN --value`
+set TEST=`./xmlquery TEST --value`
+
+#------------------------------------------------------------------------------
+# Check if HAMOCC is requested
+#------------------------------------------------------------------------------
+
+set ecosys = FALSE
+set tracers = (`echo $BLOM_TRACER_MODULES`)
+if ($#tracers != 0) then
+ foreach module ($tracers)
+ if ($module == ecosys) then
+ set ecosys = TRUE
+ endif
+ end
+endif
+
+#------------------------------------------------------------------------------
+# Set RUN_TYPE to 'continue' if CONTINUE_RUN equals TRUE
+#------------------------------------------------------------------------------
+
+if ("$CONTINUE_RUN" == TRUE) then
+ set RUN_TYPE = continue
+endif
+
+#------------------------------------------------------------------------------
+# Get start date
+#------------------------------------------------------------------------------
+
+set YEAR0 = `echo $RUN_STARTDATE | cut -c1-4 `
+set MONTH0 = `echo $RUN_STARTDATE | cut -c6-7 `
+set DAY0 = `echo $RUN_STARTDATE | cut -c9-10`
+
+#------------------------------------------------------------------------------
+# Set namelist variables
+#------------------------------------------------------------------------------
+
+#------------------------------
+# set LIMITS defaults
+#------------------------------
+set NDAY1 = 0
+set NDAY2 = 0
+set IDATE = $YEAR0$MONTH0$DAY0
+set IDATE0 = $YEAR0$MONTH0$DAY0
+set RUNID = "'unset'"
+set EXPCNF = "'cesm'"
+set RUNTYP = "'$RUN_TYPE'"
+set GRFILE = "'unset'"
+set ICFILE = "'unset'"
+if ("$BLOM_UNIT" == cgs) then
+ set PREF = 2000.e5
+else
+ set PREF = 2000.e4
+endif
+set BACLIN = 1800.
+set BATROP = 36.
+if ("$BLOM_UNIT" == cgs) then
+ set MDV2HI = 2.
+ set MDV2LO = .4
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 5000.e4
+ set MDC2LO = 300.e4
+else
+ set MDV2HI = .02
+ set MDV2LO = .004
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 5000.
+ set MDC2LO = 300.
+endif
+set VSC2HI = .5
+set VSC2LO = .5
+set VSC4HI = 0.
+set VSC4LO = 0.
+if ("$BLOM_UNIT" == cgs) then
+ set CBAR = 5.
+else
+ set CBAR = .05
+endif
+set CB = .002
+set CWBDTS = 5.e-5
+set CWBDLS = 25.
+set MOMMTH = "'enscon'"
+set BMCMTH = "'uc'"
+set RMPMTH = "'eitvel'"
+set MLRTTP = "'constant'"
+set RM0 = 1.2
+set RM5 = 0.
+set CE = .06
+set TDFILE = "'unset'"
+set NIWGF = 0.
+set NIWBF = .35
+set NIWLF = .5
+set SWAMTH = "'jerlov'"
+set JWTYPE = 3
+set CHLOPT = "'climatology'"
+set CCFILE = "'unset'"
+set TRXDAY = 0.
+set SRXDAY = 0.
+set TRXDPT = 1.
+set SRXDPT = 1.
+set TRXLIM = 1.5
+set SRXLIM = .5
+set APTFLX = .false.
+set APSFLX = .false.
+set DITFLX = .false.
+set DISFLX = .false.
+set SRXBAL = .false.
+set SCFILE = "'unset'"
+set WAVSRC = "'none'"
+set SMTFRC = .true.
+set SPRFAC = .false.
+set ATM_PATH = "'unset'"
+set ITEST = 60
+set JTEST = 60
+set CNSVDI = .false.
+set CSDIAG = .false.
+set RSTFRQ = 1
+if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
+ set RSTFMT = 1
+else
+ set RSTFMT = 0
+endif
+set RSTCMP = 0
+if ("$PIO_TYPENAME_OCN" == pnetcdf) then
+ set IOTYPE = 1
+else
+ set IOTYPE = 0
+endif
+
+#------------------------------
+# set VCOORD defaults
+#------------------------------
+set VCOORD_TYPE = "'$BLOM_VCOORD'"
+set RECONSTRUCTION_METHOD = "'ppm'"
+set DENSITY_LIMITING = "'monotonic'"
+set TRACER_LIMITING = "'non_oscillatory'"
+set VELOCITY_LIMITING = "'non_oscillatory'"
+set DENSITY_PC_UPPER_BNDR = .false.
+set DENSITY_PC_LOWER_BNDR = .false.
+set TRACER_PC_UPPER_BNDR = .true.
+set TRACER_PC_LOWER_BNDR = .false.
+set VELOCITY_PC_UPPER_BNDR = .true.
+set VELOCITY_PC_LOWER_BNDR = .false.
+set DPMIN_SURFACE = 2.5
+set DPMIN_INFLATION_FACTOR = 1.08
+set DPMIN_INTERIOR = .1
+set DKTZU = 4
+set DKTZL = 1
+
+#------------------------------
+# set DIFFUSION defaults
+#------------------------------
+set EITMTH = "'gm'"
+set EDRITP = "'large scale'"
+set EDWMTH = "'smooth'"
+set EDDF2D = .false.
+set EDSPRS = .true.
+set EGC = 0.85
+set EGGAM = 200.
+if ("$BLOM_UNIT" == cgs) then
+ set EGLSMN = 4000.e2
+ set EGMNDF = 100.e4
+ set EGMXDF = 1500.e4
+else
+ set EGLSMN = 4000.
+ set EGMNDF = 100.
+ set EGMXDF = 1500.
+endif
+set EGIDFQ = 1.
+set TBFILE = "'unset'"
+set RHISCF = 0.
+set EDANIS = .false.
+set REDI3D = .false.
+set RHSCTP = .false.
+set RI0 = 1.2
+set BDMTYP = 2
+if ("$BLOM_UNIT" == cgs) then
+ set BDMC1 = 5.e-4
+ set BDMC2 = .1
+else
+ set BDMC1 = 5.e-8
+ set BDMC2 = 1.e-5
+endif
+set TKEPF = .006
+set SMOBLD = .true.
+set LNGMTP = "'none'"
+if ("$BLOM_VCOORD" == isopyc_bulkml) then
+ set BDMLDP = .true.
+ set LTEDTP = "'layer'"
+else
+ set BDMLDP = .false.
+ set LTEDTP = "'neutral'"
+endif
+
+#------------------------------
+# set BGCNML defaults
+#------------------------------
+set ATM_CO2 = "$CCSM_CO2_PPMV"
+if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
+ set DO_RIVINPT = .true.
+else
+ set DO_RIVINPT = .false.
+endif
+if ("$BLOM_N_DEPOSITION" == TRUE) then
+ set DO_NDEP = .true.
+ if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx2v1) then
+ set NDEPFNAME = ndep_1850_CMIP6_tnx2v1_20180321.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx1v4) then
+ set NDEPFNAME = ndep_1850_CMIP6_tnx1v4_20171106.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx0.25v4) then
+ set NDEPFNAME = ndep_1850_CMIP6_tnx0.25v4_20190912.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 1850 && "$OCN_GRID" == tnx0.125v4) then
+ set NDEPFNAME = ndep_1850_CMIP6_tnx0.125v4_20221013.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx2v1) then
+ set NDEPFNAME = ndep_2000_CMIP6_tnx2v1_20200826.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx1v4) then
+ set NDEPFNAME = ndep_2000_CMIP6_tnx1v4_20200826.nc
+ else if( "$BLOM_NDEP_SCENARIO" == 2000 && "$OCN_GRID" == tnx0.25v4) then
+ set NDEPFNAME = ndep_2000_CMIP6_tnx0.25v4_20200826.nc
+ else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx2v1) then
+ set NDEPFNAME = ndep_185001-201412_tnx2v1_20190702.nc
+ else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx1v4) then
+ set NDEPFNAME = ndep_185001-201412_tnx1v4_20180613.nc
+ else if( "$BLOM_NDEP_SCENARIO" == hist && "$OCN_GRID" == tnx0.25v4) then
+ set NDEPFNAME = ndep_185001-201412_tnx0.25v4_20190705.nc
+ else if( `echo $BLOM_NDEP_SCENARIO | cut -c1-3` == ssp && "$OCN_GRID" == tnx1v4) then
+ set NDEPFNAME = ndep_201501-210012-${BLOM_NDEP_SCENARIO}_tnx1v4_20191112.nc
+ else if( "$BLOM_NDEP_SCENARIO" == UNSET ) then
+ set DO_NDEP = .false.
+ set NDEPFNAME = "''"
+ endif
+else
+ set DO_NDEP = .false.
+ set NDEPFNAME = "''"
+endif
+if ("$HAMOCC_SEDSPINUP" == TRUE) then
+ set DO_SEDSPINUP = .true.
+ set SEDSPIN_YR_S = $HAMOCC_SEDSPINUP_YR_START
+ set SEDSPIN_YR_E = $HAMOCC_SEDSPINUP_YR_END
+ set SEDSPIN_NCYC = $HAMOCC_SEDSPINUP_NCYCLE
+else
+ set DO_SEDSPINUP = .false.
+ set SEDSPIN_YR_S = -1
+ set SEDSPIN_YR_E = -1
+ set SEDSPIN_NCYC = -1
+endif
+# VSLS is currently only available for the tnx1v4 grid, since a climatlogy file for
+# short wave radiation is needed.
+if ("$HAMOCC_VSLS" == TRUE && "$OCN_GRID" != tnx1v4) then
+ echo "$0 ERROR: HAMOCC_VSLS == TRUE not possible with this grid resolution (no swa-climatology available) "
+ exit -1
+endif
+# For the following options, there are currently no switches in Case-XML files.
+# These options can be activated by expert users via user namelist.
+set DO_OALK = .false.
+set BGCOAFX_OALKSCEN = "''"
+set BGCOAFX_OALKFILE = "''"
+set BGCOAFX_ADDALK = 0.135
+set BGCOAFX_CDRMIP_LATMAX = 70.0
+set BGCOAFX_CDRMIP_LATMIN = -60.0
+set BGCOAFX_RAMP_START = 2025
+set BGCOAFX_RAMP_END = 2035
+set WITH_DMSPH = .false.
+set PI_PH_FILE = "''"
+set L_3DVARSEDPOR = .false.
+set SEDPORFILE = "''"
+
+
+#------------------------------
+# set DIAPHY defaults
+#------------------------------
+set GLB_FNAMETAG = "'hd','hm','hy'"
+set GLB_AVEPERIO = '1, 30, 365'
+if ("$TEST" == TRUE) then
+ set GLB_FILEFREQ = '1, 30, 365'
+else
+ set GLB_FILEFREQ = '30, 30, 365'
+endif
+set GLB_COMPFLAG = '0, 0, 0'
+if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
+ set GLB_NCFORMAT = '1, 1, 1'
+else
+ set GLB_NCFORMAT = '0, 0, 0'
+endif
+set H2D_ABSWND = '0, 4, 0'
+
+set H2D_ALB = '0, 0, 0'
+
+set H2D_BTMSTR = '0, 4, 0'
+set H2D_BRNFLX = '0, 4, 0'
+set H2D_BRNPD = '0, 4, 0'
+
+set H2D_DFL = '0, 0, 0'
+
+set H2D_EVA = '0, 4, 0'
+set H2D_FICE = '0, 4, 0'
+set H2D_FMLTFZ = '0, 4, 0'
+
+set H2D_HICE = '0, 0, 0'
+
+set H2D_HMLTFZ = '0, 4, 0'
+
+set H2D_HSNW = '0, 0, 0'
+set H2D_IAGE = '0, 0, 0'
+
+set H2D_IDKEDT = '0, 4, 0'
+set H2D_LAMULT = '0, 4, 0'
+set H2D_LASL = '0, 4, 0'
+set H2D_LIP = '0, 4, 0'
+
+set H2D_MAXMLD = '4, 4, 0'
+
+set H2D_MLD = '0, 4, 0'
+
+set H2D_MLTS = '4, 4, 0'
+
+set H2D_MLTSMN = '0, 4, 0'
+set H2D_MLTSMX = '0, 4, 0'
+set H2D_MLTSSQ = '0, 4, 0'
+set H2D_MTKEUS = '0, 4, 0'
+set H2D_MTKENI = '0, 4, 0'
+set H2D_MTKEBF = '0, 4, 0'
+set H2D_MTKERS = '0, 4, 0'
+set H2D_MTKEPE = '0, 4, 0'
+set H2D_MTKEKE = '0, 4, 0'
+set H2D_MTY = '0, 4, 0'
+set H2D_NSF = '0, 4, 0'
+set H2D_PBOT = '0, 4, 0'
+set H2D_PSRF = '0, 4, 0'
+set H2D_RFIFLX = '0, 4, 0'
+set H2D_RNFFLX = '0, 4, 0'
+set H2D_SALFLX = '0, 4, 0'
+set H2D_SALRLX = '0, 4, 0'
+set H2D_SBOT = '0, 4, 0'
+
+set H2D_SEALV = '4, 4, 0'
+
+set H2D_SLVSQ = '0, 4, 0'
+set H2D_SFL = '0, 4, 0'
+set H2D_SOP = '0, 4, 0'
+set H2D_SIGMX = '0, 4, 0'
+
+set H2D_SSS = '4, 4, 0'
+set H2D_SSSSQ = '4, 4, 0'
+set H2D_SST = '4, 4, 0'
+set H2D_SSTSQ = '4, 4, 0'
+
+set H2D_SURFLX = '0, 4, 0'
+set H2D_SURRLX = '0, 4, 0'
+set H2D_SWA = '0, 4, 0'
+
+set H2D_T20D = '4, 4, 0'
+
+set H2D_TAUX = '0, 4, 0'
+set H2D_TAUY = '0, 4, 0'
+set H2D_TBOT = '0, 4, 0'
+
+set H2D_TICE = '0, 0, 0'
+set H2D_TSRF = '0, 0, 0'
+
+set H2D_UB = '0, 4, 0'
+
+set H2D_UICE = '0, 0, 0'
+
+set H2D_USTAR = '0, 4, 0'
+set H2D_USTAR3 = '0, 4, 0'
+
+set H2D_USTOKES = '0, 0, 0'
+
+set H2D_VB = '0, 4, 0'
+
+set H2D_VICE = '0, 0, 0'
+set H2D_VSTOKES = '0, 0, 0'
+
+set H2D_ZTX = '0, 4, 0'
+set LYR_BFSQ = '0, 4, 0'
+set LYR_DIFDIA = '0, 4, 0'
+set LYR_DIFVMO = '0, 4, 0'
+set LYR_DIFVHO = '0, 4, 0'
+set LYR_DIFVSO = '0, 4, 0'
+set LYR_DIFINT = '0, 4, 0'
+set LYR_DIFISO = '0, 4, 0'
+set LYR_DP = '0, 4, 0'
+set LYR_DZ = '0, 4, 0'
+set LYR_SALN = '0, 4, 0'
+set LYR_TEMP = '0, 4, 0'
+
+set LYR_TRC = '0, 0, 0'
+
+set LYR_UFLX = '0, 4, 0'
+set LYR_UTFLX = '0, 4, 0'
+set LYR_USFLX = '0, 4, 0'
+
+set LYR_UMFLTD = '0, 0, 4'
+set LYR_UMFLSM = '0, 0, 4'
+set LYR_UTFLTD = '0, 0, 4'
+set LYR_UTFLSM = '0, 0, 4'
+set LYR_UTFLLD = '0, 0, 4'
+set LYR_USFLTD = '0, 0, 4'
+set LYR_USFLSM = '0, 0, 4'
+set LYR_USFLLD = '0, 0, 4'
+
+set LYR_UVEL = '0, 4, 0'
+set LYR_VFLX = '0, 4, 0'
+set LYR_VTFLX = '0, 4, 0'
+set LYR_VSFLX = '0, 4, 0'
+
+set LYR_VMFLTD = '0, 0, 4'
+set LYR_VMFLSM = '0, 0, 4'
+set LYR_VTFLTD = '0, 0, 4'
+set LYR_VTFLSM = '0, 0, 4'
+set LYR_VTFLLD = '0, 0, 4'
+set LYR_VSFLTD = '0, 0, 4'
+set LYR_VSFLSM = '0, 0, 4'
+set LYR_VSFLLD = '0, 0, 4'
+
+set LYR_VVEL = '0, 4, 0'
+set LYR_WFLX = '0, 4, 0'
+set LYR_WFLX2 = '0, 4, 0'
+set LYR_PV = '0, 4, 0'
+set LYR_TKE = '0, 4, 0'
+set LYR_GLS_PSI = '0, 4, 0'
+set LYR_IDLAGE = '0, 4, 0'
+set LVL_BFSQ = '0, 4, 0'
+set LVL_DIFDIA = '0, 4, 0'
+set LVL_DIFVMO = '0, 4, 0'
+set LVL_DIFVHO = '0, 4, 0'
+set LVL_DIFVSO = '0, 4, 0'
+set LVL_DIFINT = '0, 4, 0'
+set LVL_DIFISO = '0, 4, 0'
+set LVL_DZ = '0, 4, 0'
+set LVL_SALN = '0, 4, 0'
+set LVL_TEMP = '0, 4, 0'
+
+set LVL_TRC = '0, 0, 0'
+
+set LVL_UFLX = '0, 4, 0'
+set LVL_UTFLX = '0, 4, 0'
+set LVL_USFLX = '0, 4, 0'
+
+set LVL_UMFLTD = '0, 0, 4'
+set LVL_UMFLSM = '0, 0, 4'
+set LVL_UTFLTD = '0, 0, 4'
+set LVL_UTFLSM = '0, 0, 4'
+set LVL_UTFLLD = '0, 0, 4'
+set LVL_USFLTD = '0, 0, 4'
+set LVL_USFLSM = '0, 0, 4'
+set LVL_USFLLD = '0, 0, 4'
+
+set LVL_UVEL = '0, 4, 0'
+set LVL_VFLX = '0, 4, 0'
+set LVL_VTFLX = '0, 4, 0'
+set LVL_VSFLX = '0, 4, 0'
+
+set LVL_VMFLTD = '0, 0, 4'
+set LVL_VMFLSM = '0, 0, 4'
+set LVL_VTFLTD = '0, 0, 4'
+set LVL_VTFLSM = '0, 0, 4'
+set LVL_VTFLLD = '0, 0, 4'
+set LVL_VSFLTD = '0, 0, 4'
+set LVL_VSFLSM = '0, 0, 4'
+set LVL_VSFLLD = '0, 0, 4'
+
+set LVL_VVEL = '0, 4, 0'
+set LVL_WFLX = '0, 4, 0'
+set LVL_WFLX2 = '0, 4, 0'
+set LVL_PV = '0, 4, 0'
+set LVL_TKE = '0, 4, 0'
+set LVL_GLS_PSI = '0, 4, 0'
+set LVL_IDLAGE = '0, 4, 0'
+set MSC_MMFLXL = '0, 4, 0'
+set MSC_MMFLXD = '0, 4, 0'
+set MSC_MMFTDL = '0, 4, 0'
+set MSC_MMFSML = '0, 4, 0'
+set MSC_MMFTDD = '0, 4, 0'
+set MSC_MMFSMD = '0, 4, 0'
+set MSC_MHFLX = '0, 4, 0'
+set MSC_MHFTD = '0, 4, 0'
+set MSC_MHFSM = '0, 4, 0'
+set MSC_MHFLD = '0, 4, 0'
+set MSC_MSFLX = '0, 4, 0'
+set MSC_MSFTD = '0, 4, 0'
+set MSC_MSFSM = '0, 4, 0'
+set MSC_MSFLD = '0, 4, 0'
+set MSC_VOLTR = '0, 4, 0'
+set MSC_MASSGS = '0, 4, 0'
+set MSC_VOLGS = '0, 4, 0'
+set MSC_SALNGA = '0, 4, 0'
+set MSC_TEMPGA = '0, 4, 0'
+set MSC_SSSGA = '0, 4, 0'
+set MSC_SSTGA = '0, 4, 0'
+
+#------------------------------
+# set DIABGC defaults
+#------------------------------
+set BGC_FNAMETAG = "'hbgcd','hbgcm','hbgcy'"
+set BGC_AVEPERIO = '1,30,365'
+set BGC_FILEFREQ = '30,30,365'
+if ("$TEST" == TRUE) then
+ set BGC_FILEFREQ = ' 1,30,365'
+else
+ set BGC_FILEFREQ = '30,30,365'
+endif
+set BGC_COMPFLAG = '0, 0, 0'
+if ("$PIO_NETCDF_FORMAT_OCN" == 64bit_offset) then
+ set BGC_NCFORMAT = '1, 1, 1'
+else
+ set BGC_NCFORMAT = '0, 0, 0'
+endif
+set BGC_INVENTORY = '0, 1, 0'
+set SRF_PHOSPH = '0, 2, 2'
+set SRF_OXYGEN = '0, 2, 2'
+set SRF_IRON = '0, 2, 2'
+set SRF_ANO3 = '0, 2, 2'
+set SRF_ALKALI = '4, 2, 2'
+set SRF_SILICA = '0, 2, 2'
+set SRF_DIC = '4, 2, 2'
+set SRF_PHYTO = '4, 2, 2'
+set SRF_PH = '0, 2, 2'
+set SRF_EXPORT = '0, 2, 2'
+set SRF_EXPOSI = '0, 2, 2'
+set SRF_EXPOCA = '0, 2, 2'
+set SRF_KWCO2 = '0, 2, 2'
+set SRF_KWCO2KHM = '0, 2, 2'
+set SRF_CO2KH = '0, 2, 2'
+set SRF_CO2KHM = '0, 2, 2'
+set SRF_PCO2 = '0, 2, 2'
+set SRF_PCO2M = '0, 2, 2'
+set SRF_CO2FXD = '4, 2, 2'
+set SRF_CO2FXU = '4, 2, 2'
+set SRF_OXFLUX = '0, 2, 2'
+set SRF_NIFLUX = '0, 2, 2'
+set SRF_N2OFX = '0, 0, 2'
+set SRF_DMSFLUX = '0, 2, 2'
+set SRF_DMS = '0, 2, 2'
+set SRF_DMSPROD = '0, 2, 2'
+set SRF_DMS_BAC = '0, 2, 2'
+set SRF_DMS_UV = '0, 2, 2'
+set SRF_ATMCO2 = '0, 2, 2'
+set SRF_ATMO2 = '0, 2, 2'
+set SRF_ATMN2 = '0, 2, 2'
+set SRF_NATDIC = '0, 2, 2'
+set SRF_NATALKALI = '0, 2, 2'
+set SRF_NATPH = '0, 2, 2'
+set SRF_NATPCO2 = '0, 2, 2'
+set SRF_NATCO2FX = '0, 2, 2'
+set SRF_CO213FXD = '0, 2, 2'
+set SRF_CO213FXU = '0, 2, 2'
+set SRF_CO214FXD = '0, 2, 2'
+set SRF_CO214FXU = '0, 2, 2'
+set SRF_CFC11 = '0, 2, 2'
+set SRF_CFC12 = '0, 2, 2'
+set SRF_SF6 = '0, 2, 2'
+set SRF_BROMO = '0, 2, 2'
+set SRF_BROMOFX = '0, 2, 2'
+set INT_BROMOPRO = '0, 2, 2'
+set INT_BROMOUV = '0, 2, 2'
+set INT_PHOSY = '4, 2, 2'
+set INT_NFIX = '0, 2, 2'
+set INT_DNIT = '0, 2, 2'
+if ("$BLOM_N_DEPOSITION" == TRUE) then
+set FLX_NDEP = '0, 2, 2'
+else
+set FLX_NDEP = '0, 0, 0'
+endif
+set FLX_OALK = '0, 0, 0'
+set FLX_CAR0100 = '0, 2, 2'
+set FLX_CAR0500 = '0, 2, 2'
+set FLX_CAR1000 = '0, 2, 2'
+set FLX_CAR2000 = '0, 2, 2'
+set FLX_CAR4000 = '0, 2, 2'
+set FLX_CAR_BOT = '0, 2, 2'
+set FLX_BSI0100 = '0, 2, 2'
+set FLX_BSI0500 = '0, 2, 2'
+set FLX_BSI1000 = '0, 2, 2'
+set FLX_BSI2000 = '0, 2, 2'
+set FLX_BSI4000 = '0, 2, 2'
+set FLX_BSI_BOT = '0, 2, 2'
+set FLX_CAL0100 = '0, 2, 2'
+set FLX_CAL0500 = '0, 2, 2'
+set FLX_CAL1000 = '0, 2, 2'
+set FLX_CAL2000 = '0, 2, 2'
+set FLX_CAL4000 = '0, 2, 2'
+set FLX_CAL_BOT = '0, 2, 2'
+set LYR_PHYTO = '0, 0, 2'
+set LYR_GRAZER = '0, 0, 2'
+set LYR_DOC = '0, 0, 2'
+set LYR_PHOSY = '0, 0, 2'
+set LYR_PHOSPH = '0, 0, 2'
+set LYR_OXYGEN = '0, 0, 4'
+set LYR_IRON = '0, 0, 2'
+set LYR_ANO3 = '0, 0, 2'
+set LYR_ALKALI = '0, 0, 2'
+set LYR_SILICA = '0, 0, 2'
+set LYR_DIC = '0, 0, 2'
+set LYR_POC = '0, 0, 2'
+set LYR_CALC = '0, 0, 2'
+set LYR_OPAL = '0, 0, 2'
+set LYR_CO3 = '0, 0, 2'
+set LYR_N2O = '0, 0, 0'
+set LYR_PH = '0, 0, 2'
+set LYR_OMEGAC = '0, 0, 2'
+set LYR_OMEGAA = '0, 0, 2'
+set LYR_PREFO2 = '0, 0, 4'
+set LYR_O2SAT = '0, 0, 4'
+set LYR_PREFPO4 = '0, 0, 2'
+set LYR_PREFALK = '0, 0, 2'
+set LYR_PREFDIC = '0, 0, 2'
+set LYR_DICSAT = '0, 0, 2'
+set LYR_NATDIC = '0, 0, 2'
+set LYR_NATALKALI = '0, 0, 2'
+set LYR_NATCO3 = '0, 0, 2'
+set LYR_NATCALC = '0, 0, 2'
+set LYR_NATPH = '0, 0, 2'
+set LYR_NATOMEGAC = '0, 0, 2'
+set LYR_NATOMEGAA = '0, 0, 2'
+set LYR_DIC13 = '0, 0, 2'
+set LYR_DIC14 = '0, 0, 2'
+set LYR_D13C = '0, 0, 2'
+set LYR_D14C = '0, 0, 2'
+set LYR_BIGD14C = '0, 0, 2'
+set LYR_POC13 = '0, 0, 2'
+set LYR_DOC13 = '0, 0, 2'
+set LYR_CALC13 = '0, 0, 2'
+set LYR_PHYTO13 = '0, 0, 2'
+set LYR_GRAZER13 = '0, 0, 2'
+set LYR_CFC11 = '0, 0, 2'
+set LYR_CFC12 = '0, 0, 2'
+set LYR_SF6 = '0, 0, 2'
+set LYR_NOS = '0, 0, 2'
+set LYR_WPHY = '0, 0, 2'
+set LYR_WNOS = '0, 0, 2'
+set LYR_EPS = '0, 0, 0'
+set LYR_ASIZE = '0, 0, 0'
+set LYR_BROMO = '0, 0, 2'
+set BGC_DP = '0, 2, 2'
+set LVL_PHYTO = '0, 2, 2'
+set LVL_GRAZER = '0, 2, 2'
+set LVL_DOC = '0, 2, 2'
+set LVL_PHOSY = '0, 2, 2'
+set LVL_PHOSPH = '0, 2, 2'
+set LVL_OXYGEN = '0, 4, 4'
+set LVL_IRON = '0, 2, 2'
+set LVL_ANO3 = '0, 2, 2'
+set LVL_ALKALI = '0, 2, 2'
+set LVL_SILICA = '0, 2, 2'
+set LVL_DIC = '0, 2, 2'
+set LVL_POC = '0, 2, 2'
+set LVL_CALC = '0, 2, 2'
+set LVL_OPAL = '0, 2, 2'
+set LVL_CO3 = '0, 2, 2'
+set LVL_N2O = '0, 0, 2'
+set LVL_PH = '0, 2, 2'
+set LVL_OMEGAC = '0, 2, 2'
+set LVL_OMEGAA = '0, 2, 2'
+set LVL_PREFO2 = '0, 4, 4'
+set LVL_O2SAT = '0, 4, 4'
+set LVL_PREFPO4 = '0, 2, 2'
+set LVL_PREFALK = '0, 2, 2'
+set LVL_PREFDIC = '0, 2, 2'
+set LVL_DICSAT = '0, 2, 2'
+set LVL_NATDIC = '0, 2, 2'
+set LVL_NATALKALI = '0, 2, 2'
+set LVL_NATCO3 = '0, 2, 2'
+set LVL_NATCALC = '0, 2, 2'
+set LVL_NATPH = '0, 2, 2'
+set LVL_NATOMEGAC = '0, 2, 2'
+set LVL_NATOMEGAA = '0, 2, 2'
+set LVL_DIC13 = '0, 2, 2'
+set LVL_DIC14 = '0, 2, 2'
+set LVL_D13C = '0, 2, 2'
+set LVL_POC13 = '0, 2, 2'
+set LVL_DOC13 = '0, 2, 2'
+set LVL_CALC13 = '0, 2, 2'
+set LVL_PHYTO13 = '0, 2, 2'
+set LVL_GRAZER13 = '0, 2, 2'
+set LVL_CFC11 = '0, 2, 2'
+set LVL_CFC12 = '0, 2, 2'
+set LVL_SF6 = '0, 2, 2'
+set LVL_NOS = '0, 2, 2'
+set LVL_WPHY = '0, 2, 2'
+set LVL_WNOS = '0, 2, 2'
+set LVL_EPS = '0, 0, 0'
+set LVL_ASIZE = '0, 0, 0'
+set LVL_BROMO = '0, 2, 2'
+set FLX_SEDIFFIC = '0, 0, 2'
+set FLX_SEDIFFAL = '0, 0, 2'
+set FLX_SEDIFFPH = '0, 0, 2'
+set FLX_SEDIFFOX = '0, 0, 2'
+set FLX_SEDIFFN2 = '0, 0, 2'
+set FLX_SEDIFFNO3 = '0, 0, 2'
+set FLX_SEDIFFSI = '0, 0, 2'
+set SDM_POWAIC = '0, 0, 2'
+set SDM_POWAAL = '0, 0, 2'
+set SDM_POWAPH = '0, 0, 2'
+set SDM_POWAOX = '0, 0, 2'
+set SDM_POWN2 = '0, 0, 2'
+set SDM_POWNO3 = '0, 0, 2'
+set SDM_POWASI = '0, 0, 2'
+set SDM_SSSO12 = '0, 0, 2'
+set SDM_SSSSIL = '0, 0, 2'
+set SDM_SSSC12 = '0, 0, 2'
+set SDM_SSSTER = '0, 0, 2'
+set BUR_SSSO12 = '0, 0, 2'
+set BUR_SSSSIL = '0, 0, 2'
+set BUR_SSSC12 = '0, 0, 2'
+set BUR_SSSTER = '0, 0, 2'
+
+# if partial coupling, enable SSS relaxation
+if ("$BLOM_COUPLING" =~ *partial*) then
+ if ("$BLOM_VCOORD" == isopyc_bulkml) then
+ set SRXDAY = 6.
+ else
+ set SRXDAY = 60.
+ set SRXDPT = 10.
+ endif
+ set SPRFAC = .true.
+ set SRXBAL = .true.
+endif
+
+# set grid dependent parameters
+if ("$OCN_GRID" == gx1v5 || "$OCN_GRID" == gx1v6) then
+ set BACLIN = 1800.
+ set BATROP = 36.
+else if ("$OCN_GRID" == gx3v7) then
+ set BACLIN = 3600.
+ set BATROP = 72.
+else if ("$OCN_GRID" == tnx2v1 ) then
+ set BACLIN = 4800.
+ set BATROP = 96.
+ set EGC = 0.5
+ if ("$BLOM_UNIT" == cgs) then
+ set EGMXDF = 1000.e4
+ else
+ set EGMXDF = 1000.
+ endif
+ set CWMTAG = "'Gibraltar','Gibraltar'"
+ set CWMEDG = " 'u', 'u'"
+ set CWMI = " 53, 54"
+ set CWMJ = " 137, 137"
+ set CWMWTH = " 30.e3, 30.e3"
+else if ("$OCN_GRID" == tnx1.5v1 ) then
+ set BACLIN = 4800.
+ set BATROP = 96.
+ set EGC = 0.5
+ if ("$BLOM_UNIT" == cgs) then
+ set EGMXDF = 1000.e4
+ else
+ set EGMXDF = 1000.
+ endif
+else if ("$OCN_GRID" == tnx1v1 || "$OCN_GRID" == tnx1v3 || "$OCN_GRID" == tnx1v4) then
+ if ("$OCN_NCPL" == 24) then
+ set BACLIN = 3600.
+ set BATROP = 60.
+ set CWBDTS = .75e-4
+ set NIWGF = .4
+ set SMTFRC = .false.
+ if ("$BLOM_VCOORD" == isopyc_bulkml) then
+ set CE = .5
+ endif
+ else
+ set BACLIN = 3200.
+ set BATROP = 64.
+ endif
+ set CWMTAG = "'Gibraltar','Gibraltar'"
+ set CWMEDG = " 'u', 'u'"
+ set CWMI = " 105, 106"
+ set CWMJ = " 273, 273"
+ set CWMWTH = " 30.e3, 30.e3"
+else if ("$OCN_GRID" == tnx0.25v1 || "$OCN_GRID" == tnx0.25v3 || "$OCN_GRID" == tnx0.25v4) then
+ set BACLIN = 900.
+ set BATROP = 15.
+ if ("$BLOM_UNIT" == cgs) then
+ set MDV2HI = .15
+ set MDV2LO = .15
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 300.e4
+ set MDC2LO = 300.e4
+ else
+ set MDV2HI = .0015
+ set MDV2LO = .0015
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 300.
+ set MDC2LO = 300.
+ endif
+ set VSC2HI = .15
+ set VSC2LO = .15
+ set VSC4HI = 0.0625
+ set VSC4LO = 0.0625
+ set CWBDTS = 0.75e-4
+ set CWBDLS = 25.
+ set EDWMTH = "'step'"
+ set EGC = 0.85
+ if ("$BLOM_UNIT" == cgs) then
+ set EGMXDF = 1500.e4
+ else
+ set EGMXDF = 1500.
+ endif
+ if ("$BLOM_VCOORD" == isopyc_bulkml) then
+ set CE = 1.0
+ endif
+else if ("$OCN_GRID" == tnx0.125v4) then
+ set BACLIN = 300.
+ set BATROP = 6.
+ set EGMNDF = 0.
+ set EGMXDF = 0.
+ set EDWMTH = "'step'"
+ set CWBDTS = .75e-4
+ set CWBDLS = 25
+ if ("$BLOM_UNIT" == cgs) then
+ set MDV2HI = .1
+ set MDV2LO = .1
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 300.e4
+ set MDC2LO = 100.e4
+ else
+ set MDV2HI = .001
+ set MDV2LO = .001
+ set MDV4HI = 0.
+ set MDV4LO = 0.
+ set MDC2HI = 300.
+ set MDC2LO = 100.
+ endif
+ set VSC2HI = 0.
+ set VSC2LO = 0.
+ set VSC4HI = .06
+ set VSC4LO = .06
+ set LTEDTP = "'layer'"
+else
+ echo "OCN_GRID is $OCN_GRID \n"
+ echo "$0 ERROR: Cannot deal with GRID equal to $OCN_GRID "
+ exit -1
+endif
+
+# set grid independent input files (iHAMOCC initial conditions)
+set INIDIC = "'$DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_Ct_preind_OMIPinit_20171107.nc'"
+set INIALK = "'$DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_At_OMIPinit_20171107.nc'"
+set INIPO4 = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_phosphate_OMIPinit_20171107.nc'"
+set INIOXY = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_oxygen_OMIPinit_20171107.nc'"
+set ININO3 = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_nitrate_OMIPinit_20171107.nc'"
+set INISIL = "'$DIN_LOC_ROOT/ocn/blom/inicon/woa13_silicate_OMIPinit_20171107.nc'"
+if ("$HAMOCC_CISO" == TRUE) then
+set INID13C = "'$DIN_LOC_ROOT/ocn/blom/inicon/d13C_permil_20180609.nc'"
+set INID14C = "'$DIN_LOC_ROOT/ocn/blom/inicon/d14C_permil_20180609.nc'"
+else
+set INID13C = "''"
+set INID14C = "''"
+endif
+
+# set grid dependent input files
+if ("$OCN_GRID" == tnx2v1) then
+ set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx2v1_20130206.nc'"
+ set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx2v1_20130419.nc'"
+ set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx2v1_20130419.nc'"
+ set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx2v1_20190826.nc'"
+ set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx2v1_20190826.dat'"
+ set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx2v1_20190826.dat'"
+ set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx2v1_20130927.nc'"
+ set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx2v1_20130506.nc'"
+ set SWACLIMFILE = "''"
+ set SEDPORFILE = "''"
+ if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
+ set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx2v1_20170915.nc'"
+ else
+ set RIVINFILE = "''"
+ endif
+ if ("$BLOM_N_DEPOSITION" == TRUE) then
+ set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
+ else
+ set NDEPFILE = "''"
+ endif
+else if ("$OCN_GRID" == tnx1v4) then
+ set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx1v4_20170622.nc'"
+ set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx1v4_20170622.nc'"
+ set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx1v4_20170605.nc'"
+ set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx1v4_20190729.nc'"
+ set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx1v4_20190615.dat'"
+ set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx1v4_20190611.dat'"
+ set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx1v4_20170608.nc'"
+ set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx1v4_20170604.nc'"
+ set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx1v4_20171107.nc'"
+ set SEDPORFILE = "''"
+ if ("$HAMOCC_VSLS" == TRUE) then
+ set SWACLIMFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/Annual_clim_swa_tnx1v4_20210415.nc'"
+ else
+ set SWACLIMFILE = "''"
+ endif
+ if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
+ set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx1v4_20170820.nc'"
+ else
+ set RIVINFILE = "''"
+ endif
+ if ("$BLOM_N_DEPOSITION" == TRUE) then
+ set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
+ else
+ set NDEPFILE = "''"
+ endif
+else if ("$OCN_GRID" == tnx0.25v4) then
+ set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.25v4_20170622.nc'"
+ set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.25v4_20170623.nc'"
+ set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.25v4_20170626.nc'"
+ set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.25v4_20190612.nc'"
+ set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.25v4_20190701.dat'"
+ set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.25v4_20190612.dat'"
+ set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.25v4_20170623.nc'"
+ set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.25v4_20170623.nc'"
+ set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.25v4_20181004.nc'"
+ set SWACLIMFILE = "''"
+ set SEDPORFILE = "''"
+ if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
+ set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.25v4_20170821.nc'"
+ else
+ set RIVINFILE = "''"
+ endif
+ if ("$BLOM_N_DEPOSITION" == TRUE) then
+ set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
+ else
+ set NDEPFILE = "''"
+ endif
+else if ("$OCN_GRID" == tnx0.125v4) then
+ set GRFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.125v4_20221013.nc'"
+ set ICFILE = "'$DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.125v4_20230318.nc'"
+ set TDFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.125v4_20221013.nc'"
+ set MER_ORFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.125v4_20221013.nc'"
+ set MER_MIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.125v4_20221013.dat'"
+ set SEC_SIFILE = "'$DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.125v4_20221013.dat'"
+ set CCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.125v4_20221013.nc'"
+ set SCFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.125v4_20221013.nc'"
+ set FEDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.125v4_20221013.nc'"
+ set SWACLIMFILE = "''"
+ set SEDPORFILE = "''"
+ if ("$BLOM_RIVER_NUTRIENTS" == TRUE) then
+ set RIVINFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.125v4_20221013.nc'"
+ else
+ set RIVINFILE = "''"
+ endif
+ if ("$BLOM_N_DEPOSITION" == TRUE) then
+ set NDEPFILE = "'$DIN_LOC_ROOT/ocn/blom/bndcon/$NDEPFNAME'"
+ else
+ set NDEPFILE = "''"
+ endif
+else
+ echo "$0 ERROR: Cannot deal with GRID = $OCN_GRID "
+ exit -1
+endif
+
+
+#------------------------------------------------------------------------------
+# Create resolved namelist
+#------------------------------------------------------------------------------
+foreach mem ("`seq $NINST_OCN`")
+ if ( ${NINST_OCN} == '1' ) then
+ set inststr = ''
+ else
+ set inststr = ("`printf '_%4.4d' $mem`")
+ endif
+
+ # modify namelist variables as specified in user_nl_blom
+ foreach line ("`grep = $CASEROOT/user_nl_blom$inststr`")
+ if (`echo "$line" | tr -d ' ' | cut -c -1` != '#') then
+ set var = `echo "$line" | sed 's/=.*//' | tr '[a-z]' '[A-Z]'`
+ set val = `echo "$line" | sed 's/.*=//'`
+ eval 'set $var = "$val"'
+ endif
+ end
+
+cp ocn_in.readme $RUNDIR/.
+
+cat >! $RUNDIR/ocn_in$inststr << EOF
+&LIMITS
+ NDAY1 = $NDAY1
+ NDAY2 = $NDAY2
+ IDATE = $IDATE
+ IDATE0 = $IDATE0
+ RUNID = $RUNID
+ EXPCNF = $EXPCNF
+ RUNTYP = $RUNTYP
+ GRFILE = $GRFILE
+ ICFILE = $ICFILE
+ PREF = $PREF
+ BACLIN = $BACLIN
+ BATROP = $BATROP
+ MDV2HI = $MDV2HI
+ MDV2LO = $MDV2LO
+ MDV4HI = $MDV4HI
+ MDV4LO = $MDV4LO
+ MDC2HI = $MDC2HI
+ MDC2LO = $MDC2LO
+ VSC2HI = $VSC2HI
+ VSC2LO = $VSC2LO
+ VSC4HI = $VSC4HI
+ VSC4LO = $VSC4LO
+ CBAR = $CBAR
+ CB = $CB
+ CWBDTS = $CWBDTS
+ CWBDLS = $CWBDLS
+ MOMMTH = $MOMMTH
+ BMCMTH = $BMCMTH
+ RMPMTH = $RMPMTH
+ MLRTTP = $MLRTTP
+ RM0 = $RM0
+ RM5 = $RM5
+ CE = $CE
+ TDFILE = $TDFILE
+ NIWGF = $NIWGF
+ NIWBF = $NIWBF
+ NIWLF = $NIWLF
+ SWAMTH = $SWAMTH
+ JWTYPE = $JWTYPE
+ CHLOPT = $CHLOPT
+ CCFILE = $CCFILE
+ TRXDAY = $TRXDAY
+ SRXDAY = $SRXDAY
+ TRXDPT = $TRXDPT
+ SRXDPT = $SRXDPT
+ TRXLIM = $TRXLIM
+ SRXLIM = $SRXLIM
+ APTFLX = $APTFLX
+ APSFLX = $APSFLX
+ DITFLX = $DITFLX
+ DISFLX = $DISFLX
+ SRXBAL = $SRXBAL
+ SCFILE = $SCFILE
+ WAVSRC = $WAVSRC
+ SMTFRC = $SMTFRC
+ SPRFAC = $SPRFAC
+ ATM_PATH = $ATM_PATH
+ ITEST = $ITEST
+ JTEST = $JTEST
+ CNSVDI = $CNSVDI
+ CSDIAG = $CSDIAG
+ RSTFRQ = $RSTFRQ
+ RSTFMT = $RSTFMT
+ RSTCMP = $RSTCMP
+ IOTYPE = $IOTYPE
+/
+EOF
+
+if ("$BLOM_VCOORD" == cntiso_hybrid) then
+cat >>! $RUNDIR/ocn_in$inststr << EOF
+
+&VCOORD
+ VCOORD_TYPE = $VCOORD_TYPE
+ RECONSTRUCTION_METHOD = $RECONSTRUCTION_METHOD
+ DENSITY_LIMITING = $DENSITY_LIMITING
+ TRACER_LIMITING = $TRACER_LIMITING
+ VELOCITY_LIMITING = $VELOCITY_LIMITING
+ DENSITY_PC_UPPER_BNDR = $DENSITY_PC_UPPER_BNDR
+ DENSITY_PC_LOWER_BNDR = $DENSITY_PC_LOWER_BNDR
+ TRACER_PC_UPPER_BNDR = $TRACER_PC_UPPER_BNDR
+ TRACER_PC_LOWER_BNDR = $TRACER_PC_LOWER_BNDR
+ VELOCITY_PC_UPPER_BNDR = $VELOCITY_PC_UPPER_BNDR
+ VELOCITY_PC_LOWER_BNDR = $VELOCITY_PC_LOWER_BNDR
+ DPMIN_SURFACE = $DPMIN_SURFACE
+ DPMIN_INFLATION_FACTOR = $DPMIN_INFLATION_FACTOR
+ DPMIN_INTERIOR = $DPMIN_INTERIOR
+ DKTZU = $DKTZU
+ DKTZL = $DKTZL
+/
+EOF
+endif
+
+cat >>! $RUNDIR/ocn_in$inststr << EOF
+
+&DIFFUSION
+ EITMTH = $EITMTH
+ EDRITP = $EDRITP
+ EDWMTH = $EDWMTH
+ EDDF2D = $EDDF2D
+ EDSPRS = $EDSPRS
+ EGC = $EGC
+ EGGAM = $EGGAM
+ EGLSMN = $EGLSMN
+ EGMNDF = $EGMNDF
+ EGMXDF = $EGMXDF
+ EGIDFQ = $EGIDFQ
+ TBFILE = $TBFILE
+ RHISCF = $RHISCF
+ EDANIS = $EDANIS
+ REDI3D = $REDI3D
+ RHSCTP = $RHSCTP
+ RI0 = $RI0
+ BDMTYP = $BDMTYP
+ BDMC1 = $BDMC1
+ BDMC2 = $BDMC2
+ BDMLDP = $BDMLDP
+ TKEPF = $TKEPF
+ SMOBLD = $SMOBLD
+ LNGMTP = $LNGMTP
+ LTEDTP = $LTEDTP
+/
+EOF
+
+if ($?CWMTAG) then
+cat >>! $RUNDIR/ocn_in$inststr << EOF
+
+&CWMOD
+ CWMTAG = $CWMTAG
+ CWMEDG = $CWMEDG
+ CWMI = $CWMI
+ CWMJ = $CWMJ
+ CWMWTH = $CWMWTH
+/
+EOF
+endif
+
+cat >>! $RUNDIR/ocn_in$inststr << EOF
+
+&MERDIA
+ MER_ORFILE = $MER_ORFILE
+ MER_MIFILE = $MER_MIFILE
+ MER_REGNAM = 'atlantic_arctic_ocean', 'atlantic_arctic_extended_ocean', 'indian_pacific_ocean', 'global_ocean'
+ MER_REGFLG(1,:) = 2, 4
+ MER_REGFLG(2,:) = 2, 4, 6, 7, 8, 9
+ MER_REGFLG(3,:) = 3, 5
+ MER_REGFLG(4,:) = 0
+ MER_MINLAT = -34., -34., -34., -90.
+ MER_MAXLAT = 90., 90., 90., 90.
+/
+
+&SECDIA
+ SEC_SIFILE = $SEC_SIFILE
+/
+
+&DIAPHY
+ GLB_FNAMETAG = $GLB_FNAMETAG
+ GLB_AVEPERIO = $GLB_AVEPERIO
+ GLB_FILEFREQ = $GLB_FILEFREQ
+ GLB_COMPFLAG = $GLB_COMPFLAG
+ GLB_NCFORMAT = $GLB_NCFORMAT
+ H2D_ABSWND = $H2D_ABSWND
+ H2D_ALB = $H2D_ALB
+ H2D_BTMSTR = $H2D_BTMSTR
+ H2D_BRNFLX = $H2D_BRNFLX
+ H2D_BRNPD = $H2D_BRNPD
+ H2D_DFL = $H2D_DFL
+ H2D_EVA = $H2D_EVA
+ H2D_FICE = $H2D_FICE
+ H2D_FMLTFZ = $H2D_FMLTFZ
+ H2D_HICE = $H2D_HICE
+ H2D_HMLTFZ = $H2D_HMLTFZ
+ H2D_HSNW = $H2D_HSNW
+ H2D_IAGE = $H2D_IAGE
+ H2D_IDKEDT = $H2D_IDKEDT
+ H2D_LAMULT = $H2D_LAMULT
+ H2D_LASL = $H2D_LASL
+ H2D_LIP = $H2D_LIP
+ H2D_MAXMLD = $H2D_MAXMLD
+ H2D_MLD = $H2D_MLD
+ H2D_MLTS = $H2D_MLTS
+ H2D_MLTSMN = $H2D_MLTSMN
+ H2D_MLTSMX = $H2D_MLTSMX
+ H2D_MLTSSQ = $H2D_MLTSSQ
+ H2D_MTKEUS = $H2D_MTKEUS
+ H2D_MTKENI = $H2D_MTKENI
+ H2D_MTKEBF = $H2D_MTKEBF
+ H2D_MTKERS = $H2D_MTKERS
+ H2D_MTKEPE = $H2D_MTKEPE
+ H2D_MTKEKE = $H2D_MTKEKE
+ H2D_MTY = $H2D_MTY
+ H2D_NSF = $H2D_NSF
+ H2D_PBOT = $H2D_PBOT
+ H2D_PSRF = $H2D_PSRF
+ H2D_RFIFLX = $H2D_RFIFLX
+ H2D_RNFFLX = $H2D_RNFFLX
+ H2D_SALFLX = $H2D_SALFLX
+ H2D_SALRLX = $H2D_SALRLX
+ H2D_SBOT = $H2D_SBOT
+ H2D_SEALV = $H2D_SEALV
+ H2D_SLVSQ = $H2D_SLVSQ
+ H2D_SFL = $H2D_SFL
+ H2D_SOP = $H2D_SOP
+ H2D_SIGMX = $H2D_SIGMX
+ H2D_SSS = $H2D_SSS
+ H2D_SSSSQ = $H2D_SSSSQ
+ H2D_SST = $H2D_SST
+ H2D_SSTSQ = $H2D_SSTSQ
+ H2D_SURFLX = $H2D_SURFLX
+ H2D_SURRLX = $H2D_SURRLX
+ H2D_SWA = $H2D_SWA
+ H2D_T20D = $H2D_T20D
+ H2D_TAUX = $H2D_TAUX
+ H2D_TAUY = $H2D_TAUY
+ H2D_TBOT = $H2D_TBOT
+ H2D_TICE = $H2D_TICE
+ H2D_TSRF = $H2D_TSRF
+ H2D_UB = $H2D_UB
+ H2D_UICE = $H2D_UICE
+ H2D_USTAR = $H2D_USTAR
+ H2D_USTAR3 = $H2D_USTAR3
+ H2D_USTOKES = $H2D_USTOKES
+ H2D_VB = $H2D_VB
+ H2D_VICE = $H2D_VICE
+ H2D_VSTOKES = $H2D_VSTOKES
+ H2D_ZTX = $H2D_ZTX
+ LYR_BFSQ = $LYR_BFSQ
+ LYR_DIFDIA = $LYR_DIFDIA
+ LYR_DIFVMO = $LYR_DIFVMO
+ LYR_DIFVHO = $LYR_DIFVHO
+ LYR_DIFVSO = $LYR_DIFVSO
+ LYR_DIFINT = $LYR_DIFINT
+ LYR_DIFISO = $LYR_DIFISO
+ LYR_DP = $LYR_DP
+ LYR_DZ = $LYR_DZ
+ LYR_SALN = $LYR_SALN
+ LYR_TEMP = $LYR_TEMP
+ LYR_TRC = $LYR_TRC
+ LYR_UFLX = $LYR_UFLX
+ LYR_UTFLX = $LYR_UTFLX
+ LYR_USFLX = $LYR_USFLX
+ LYR_UMFLTD = $LYR_UMFLTD
+ LYR_UMFLSM = $LYR_UMFLSM
+ LYR_UTFLTD = $LYR_UTFLTD
+ LYR_UTFLSM = $LYR_UTFLSM
+ LYR_UTFLLD = $LYR_UTFLLD
+ LYR_USFLTD = $LYR_USFLTD
+ LYR_USFLSM = $LYR_USFLSM
+ LYR_USFLLD = $LYR_USFLLD
+ LYR_UVEL = $LYR_UVEL
+ LYR_VFLX = $LYR_VFLX
+ LYR_VTFLX = $LYR_VTFLX
+ LYR_VSFLX = $LYR_VSFLX
+ LYR_VMFLTD = $LYR_VMFLTD
+ LYR_VMFLSM = $LYR_VMFLSM
+ LYR_VTFLTD = $LYR_VTFLTD
+ LYR_VTFLSM = $LYR_VTFLSM
+ LYR_VTFLLD = $LYR_VTFLLD
+ LYR_VSFLTD = $LYR_VSFLTD
+ LYR_VSFLSM = $LYR_VSFLSM
+ LYR_VSFLLD = $LYR_VSFLLD
+ LYR_VVEL = $LYR_VVEL
+ LYR_WFLX = $LYR_WFLX
+ LYR_WFLX2 = $LYR_WFLX2
+ LYR_PV = $LYR_PV
+ LYR_TKE = $LYR_TKE
+ LYR_GLS_PSI = $LYR_GLS_PSI
+ LYR_IDLAGE = $LYR_IDLAGE
+ LVL_BFSQ = $LVL_BFSQ
+ LVL_DIFDIA = $LVL_DIFDIA
+ LVL_DIFVMO = $LVL_DIFVMO
+ LVL_DIFVHO = $LVL_DIFVHO
+ LVL_DIFVSO = $LVL_DIFVSO
+ LVL_DIFINT = $LVL_DIFINT
+ LVL_DIFISO = $LVL_DIFISO
+ LVL_DZ = $LVL_DZ
+ LVL_SALN = $LVL_SALN
+ LVL_TEMP = $LVL_TEMP
+ LVL_TRC = $LVL_TRC
+ LVL_UFLX = $LVL_UFLX
+ LVL_UTFLX = $LVL_UTFLX
+ LVL_USFLX = $LVL_USFLX
+ LVL_UMFLTD = $LVL_UMFLTD
+ LVL_UMFLSM = $LVL_UMFLSM
+ LVL_UTFLTD = $LVL_UTFLTD
+ LVL_UTFLSM = $LVL_UTFLSM
+ LVL_UTFLLD = $LVL_UTFLLD
+ LVL_USFLTD = $LVL_USFLTD
+ LVL_USFLSM = $LVL_USFLSM
+ LVL_USFLLD = $LVL_USFLLD
+ LVL_UVEL = $LVL_UVEL
+ LVL_VFLX = $LVL_VFLX
+ LVL_VTFLX = $LVL_VTFLX
+ LVL_VSFLX = $LVL_VSFLX
+ LVL_VMFLTD = $LVL_VMFLTD
+ LVL_VMFLSM = $LVL_VMFLSM
+ LVL_VTFLTD = $LVL_VTFLTD
+ LVL_VTFLSM = $LVL_VTFLSM
+ LVL_VTFLLD = $LVL_VTFLLD
+ LVL_VSFLTD = $LVL_VSFLTD
+ LVL_VSFLSM = $LVL_VSFLSM
+ LVL_VSFLLD = $LVL_VSFLLD
+ LVL_VVEL = $LVL_VVEL
+ LVL_WFLX = $LVL_WFLX
+ LVL_WFLX2 = $LVL_WFLX2
+ LVL_PV = $LVL_PV
+ LVL_TKE = $LVL_TKE
+ LVL_GLS_PSI = $LVL_GLS_PSI
+ LVL_IDLAGE = $LVL_IDLAGE
+ MSC_MMFLXL = $MSC_MMFLXL
+ MSC_MMFLXD = $MSC_MMFLXD
+ MSC_MMFTDL = $MSC_MMFTDL
+ MSC_MMFSML = $MSC_MMFSML
+ MSC_MMFTDD = $MSC_MMFTDD
+ MSC_MMFSMD = $MSC_MMFSMD
+ MSC_MHFLX = $MSC_MHFLX
+ MSC_MHFTD = $MSC_MHFTD
+ MSC_MHFSM = $MSC_MHFSM
+ MSC_MHFLD = $MSC_MHFLD
+ MSC_MSFLX = $MSC_MSFLX
+ MSC_MSFTD = $MSC_MSFTD
+ MSC_MSFSM = $MSC_MSFSM
+ MSC_MSFLD = $MSC_MSFLD
+ MSC_VOLTR = $MSC_VOLTR
+ MSC_MASSGS = $MSC_MASSGS
+ MSC_VOLGS = $MSC_VOLGS
+ MSC_SALNGA = $MSC_SALNGA
+ MSC_TEMPGA = $MSC_TEMPGA
+ MSC_SSSGA = $MSC_SSSGA
+ MSC_SSTGA = $MSC_SSTGA
+/
+EOF
+
+if ("$ecosys" == TRUE) then
+cat >>! $RUNDIR/ocn_in$inststr << EOF
+
+&BGCNML
+ ATM_CO2 = $CCSM_CO2_PPMV
+ FEDEPFILE = $FEDEPFILE
+ SWACLIMFILE = $SWACLIMFILE
+ DO_RIVINPT = $DO_RIVINPT
+ RIVINFILE = $RIVINFILE
+ DO_NDEP = $DO_NDEP
+ NDEPFILE = $NDEPFILE
+ DO_OALK = $DO_OALK
+ DO_SEDSPINUP = $DO_SEDSPINUP
+ SEDSPIN_YR_S = $SEDSPIN_YR_S
+ SEDSPIN_YR_E = $SEDSPIN_YR_E
+ SEDSPIN_NCYC = $SEDSPIN_NCYC
+ INIDIC = $INIDIC
+ INIALK = $INIALK
+ INIPO4 = $INIPO4
+ INIOXY = $INIOXY
+ ININO3 = $ININO3
+ INISIL = $INISIL
+ INID13C = $INID13C
+ INID14C = $INID14C
+ WITH_DMSPH = $WITH_DMSPH
+ PI_PH_FILE = $PI_PH_FILE
+ L_3DVARSEDPOR = $L_3DVARSEDPOR
+ SEDPORFILE = $SEDPORFILE
+/
+
+&BGCOAFX
+ OALKSCEN = $BGCOAFX_OALKSCEN
+ OALKFILE = $BGCOAFX_OALKFILE
+ ADDALK = $BGCOAFX_ADDALK
+ CDRMIP_LATMAX = $BGCOAFX_CDRMIP_LATMAX
+ CDRMIP_LATMIN = $BGCOAFX_CDRMIP_LATMIN
+ RAMP_START = $BGCOAFX_RAMP_START
+ RAMP_END = $BGCOAFX_RAMP_END
+/
+
+&DIABGC
+ GLB_FNAMETAG = $BGC_FNAMETAG
+ GLB_AVEPERIO = $BGC_AVEPERIO
+ GLB_FILEFREQ = $BGC_FILEFREQ
+ GLB_COMPFLAG = $BGC_COMPFLAG
+ GLB_NCFORMAT = $BGC_NCFORMAT
+ GLB_INVENTORY = $BGC_INVENTORY
+ SRF_PHOSPH = $SRF_PHOSPH
+ SRF_OXYGEN = $SRF_OXYGEN
+ SRF_IRON = $SRF_IRON
+ SRF_ANO3 = $SRF_ANO3
+ SRF_ALKALI = $SRF_ALKALI
+ SRF_SILICA = $SRF_SILICA
+ SRF_DIC = $SRF_DIC
+ SRF_PHYTO = $SRF_PHYTO
+ SRF_PH = $SRF_PH
+ SRF_EXPORT = $SRF_EXPORT
+ SRF_EXPOSI = $SRF_EXPOSI
+ SRF_EXPOCA = $SRF_EXPOCA
+ SRF_KWCO2 = $SRF_KWCO2
+ SRF_KWCO2KHM = $SRF_KWCO2KHM
+ SRF_CO2KH = $SRF_CO2KH
+ SRF_CO2KHM = $SRF_CO2KHM
+ SRF_PCO2 = $SRF_PCO2
+ SRF_PCO2M = $SRF_PCO2M
+ SRF_CO2FXD = $SRF_CO2FXD
+ SRF_CO2FXU = $SRF_CO2FXU
+ SRF_OXFLUX = $SRF_OXFLUX
+ SRF_NIFLUX = $SRF_NIFLUX
+ SRF_N2OFX = $SRF_N2OFX
+ SRF_DMSFLUX = $SRF_DMSFLUX
+ SRF_DMS = $SRF_DMS
+ SRF_DMSPROD = $SRF_DMSPROD
+ SRF_DMS_BAC = $SRF_DMS_BAC
+ SRF_DMS_UV = $SRF_DMS_UV
+ SRF_ATMCO2 = $SRF_ATMCO2
+ SRF_ATMO2 = $SRF_ATMO2
+ SRF_ATMN2 = $SRF_ATMN2
+ SRF_NATDIC = $SRF_NATDIC
+ SRF_NATALKALI = $SRF_NATALKALI
+ SRF_NATPH = $SRF_NATPH
+ SRF_NATPCO2 = $SRF_NATPCO2
+ SRF_NATCO2FX = $SRF_NATCO2FX
+ SRF_CO213FXD = $SRF_CO213FXD
+ SRF_CO213FXU = $SRF_CO213FXU
+ SRF_CO214FXD = $SRF_CO214FXD
+ SRF_CO214FXU = $SRF_CO214FXU
+ SRF_CFC11 = $SRF_CFC11
+ SRF_CFC12 = $SRF_CFC12
+ SRF_SF6 = $SRF_SF6
+ SRF_BROMO = $SRF_BROMO
+ SRF_BROMOFX = $SRF_BROMOFX
+ INT_BROMOPRO = $INT_BROMOPRO
+ INT_BROMOUV = $INT_BROMOUV
+ INT_PHOSY = $INT_PHOSY
+ INT_NFIX = $INT_NFIX
+ INT_DNIT = $INT_DNIT
+ FLX_NDEP = $FLX_NDEP
+ FLX_OALK = $FLX_OALK
+ FLX_CAR0100 = $FLX_CAR0100
+ FLX_CAR0500 = $FLX_CAR0500
+ FLX_CAR1000 = $FLX_CAR1000
+ FLX_CAR2000 = $FLX_CAR2000
+ FLX_CAR4000 = $FLX_CAR4000
+ FLX_CAR_BOT = $FLX_CAR_BOT
+ FLX_BSI0100 = $FLX_BSI0100
+ FLX_BSI0500 = $FLX_BSI0500
+ FLX_BSI1000 = $FLX_BSI1000
+ FLX_BSI2000 = $FLX_BSI2000
+ FLX_BSI4000 = $FLX_BSI4000
+ FLX_BSI_BOT = $FLX_BSI_BOT
+ FLX_CAL0100 = $FLX_CAL0100
+ FLX_CAL0500 = $FLX_CAL0500
+ FLX_CAL1000 = $FLX_CAL1000
+ FLX_CAL2000 = $FLX_CAL2000
+ FLX_CAL4000 = $FLX_CAL4000
+ FLX_CAL_BOT = $FLX_CAL_BOT
+ LYR_PHYTO = $LYR_PHYTO
+ LYR_GRAZER = $LYR_GRAZER
+ LYR_DOC = $LYR_DOC
+ LYR_PHOSY = $LYR_PHOSY
+ LYR_PHOSPH = $LYR_PHOSPH
+ LYR_OXYGEN = $LYR_OXYGEN
+ LYR_IRON = $LYR_IRON
+ LYR_ANO3 = $LYR_ANO3
+ LYR_ALKALI = $LYR_ALKALI
+ LYR_SILICA = $LYR_SILICA
+ LYR_DIC = $LYR_DIC
+ LYR_POC = $LYR_POC
+ LYR_CALC = $LYR_CALC
+ LYR_OPAL = $LYR_OPAL
+ LYR_CO3 = $LYR_CO3
+ LYR_N2O = $LYR_N2O
+ LYR_PH = $LYR_PH
+ LYR_OMEGAC = $LYR_OMEGAC
+ LYR_OMEGAA = $LYR_OMEGAA
+ LYR_PREFO2 = $LYR_PREFO2
+ LYR_O2SAT = $LYR_O2SAT
+ LYR_PREFPO4 = $LYR_PREFPO4
+ LYR_PREFALK = $LYR_PREFALK
+ LYR_PREFDIC = $LYR_PREFDIC
+ LYR_DICSAT = $LYR_DICSAT
+ LYR_NATDIC = $LYR_NATDIC
+ LYR_NATALKALI = $LYR_NATALKALI
+ LYR_NATCO3 = $LYR_NATCO3
+ LYR_NATCALC = $LYR_NATCALC
+ LYR_NATPH = $LYR_NATPH
+ LYR_NATOMEGAC = $LYR_NATOMEGAC
+ LYR_NATOMEGAA = $LYR_NATOMEGAA
+ LYR_DIC13 = $LYR_DIC13
+ LYR_DIC14 = $LYR_DIC14
+ LYR_D13C = $LYR_D13C
+ LYR_D14C = $LYR_D14C
+ LYR_BIGD14C = $LYR_BIGD14C
+ LYR_POC13 = $LYR_POC13
+ LYR_DOC13 = $LYR_DOC13
+ LYR_CALC13 = $LYR_CALC13
+ LYR_PHYTO13 = $LYR_PHYTO13
+ LYR_GRAZER13 = $LYR_GRAZER13
+ LYR_CFC11 = $LYR_CFC11
+ LYR_CFC12 = $LYR_CFC12
+ LYR_SF6 = $LYR_SF6
+ LYR_NOS = $LYR_NOS
+ LYR_WPHY = $LYR_WPHY
+ LYR_WNOS = $LYR_WNOS
+ LYR_EPS = $LYR_EPS
+ LYR_ASIZE = $LYR_ASIZE
+ LYR_DP = $BGC_DP
+ LYR_BROMO = $LYR_BROMO
+ LVL_PHYTO = $LVL_PHYTO
+ LVL_GRAZER = $LVL_GRAZER
+ LVL_DOC = $LVL_DOC
+ LVL_PHOSY = $LVL_PHOSY
+ LVL_PHOSPH = $LVL_PHOSPH
+ LVL_OXYGEN = $LVL_OXYGEN
+ LVL_IRON = $LVL_IRON
+ LVL_ANO3 = $LVL_ANO3
+ LVL_ALKALI = $LVL_ALKALI
+ LVL_SILICA = $LVL_SILICA
+ LVL_DIC = $LVL_DIC
+ LVL_POC = $LVL_POC
+ LVL_CALC = $LVL_CALC
+ LVL_OPAL = $LVL_OPAL
+ LVL_CO3 = $LVL_CO3
+ LVL_N2O = $LVL_N2O
+ LVL_PH = $LVL_PH
+ LVL_OMEGAC = $LVL_OMEGAC
+ LVL_OMEGAA = $LVL_OMEGAA
+ LVL_PREFO2 = $LVL_PREFO2
+ LVL_O2SAT = $LVL_O2SAT
+ LVL_PREFPO4 = $LVL_PREFPO4
+ LVL_PREFALK = $LVL_PREFALK
+ LVL_PREFDIC = $LVL_PREFDIC
+ LVL_DICSAT = $LVL_DICSAT
+ LVL_NATDIC = $LVL_NATDIC
+ LVL_NATALKALI = $LVL_NATALKALI
+ LVL_NATCO3 = $LVL_NATCO3
+ LVL_NATCALC = $LVL_NATCALC
+ LVL_NATPH = $LVL_NATPH
+ LVL_NATOMEGAC = $LVL_NATOMEGAC
+ LVL_NATOMEGAA = $LVL_NATOMEGAA
+ LVL_DIC13 = $LVL_DIC13
+ LVL_DIC14 = $LVL_DIC14
+ LVL_D13C = $LVL_D13C
+ LVL_POC13 = $LVL_POC13
+ LVL_DOC13 = $LVL_DOC13
+ LVL_CALC13 = $LVL_CALC13
+ LVL_PHYTO13 = $LVL_PHYTO13
+ LVL_GRAZER13 = $LVL_GRAZER13
+ LVL_CFC11 = $LVL_CFC11
+ LVL_CFC12 = $LVL_CFC12
+ LVL_SF6 = $LVL_SF6
+ LVL_NOS = $LVL_NOS
+ LVL_WPHY = $LVL_WPHY
+ LVL_WNOS = $LVL_WNOS
+ LVL_EPS = $LVL_EPS
+ LVL_ASIZE = $LVL_ASIZE
+ LVL_BROMO = $LVL_BROMO
+ FLX_SEDIFFIC = $FLX_SEDIFFIC
+ FLX_SEDIFFAL = $FLX_SEDIFFAL
+ FLX_SEDIFFPH = $FLX_SEDIFFPH
+ FLX_SEDIFFOX = $FLX_SEDIFFOX
+ FLX_SEDIFFN2 = $FLX_SEDIFFN2
+ FLX_SEDIFFNO3 = $FLX_SEDIFFNO3
+ FLX_SEDIFFSI = $FLX_SEDIFFSI
+ SDM_POWAIC = $SDM_POWAIC
+ SDM_POWAAL = $SDM_POWAAL
+ SDM_POWAPH = $SDM_POWAPH
+ SDM_POWAOX = $SDM_POWAOX
+ SDM_POWN2 = $SDM_POWN2
+ SDM_POWNO3 = $SDM_POWNO3
+ SDM_POWASI = $SDM_POWASI
+ SDM_SSSO12 = $SDM_SSSO12
+ SDM_SSSSIL = $SDM_SSSSIL
+ SDM_SSSC12 = $SDM_SSSC12
+ SDM_SSSTER = $SDM_SSSTER
+ BUR_SSSO12 = $BUR_SSSO12
+ BUR_SSSSIL = $BUR_SSSSIL
+ BUR_SSSC12 = $BUR_SSSC12
+ BUR_SSSTER = $BUR_SSSTER
+/
+EOF
+endif
+
+end ## foreach mem ("`seq $NINST_OCN`")
+
+#------------------------------------------------------------------------------
+# Generate blom.input_data_list
+#------------------------------------------------------------------------------
+
+cat > $CASEBUILD/blom.input_data_list << EOF
+grid_file = `echo $GRFILE | tr -d '"' | tr -d "'"`
+meridional_transport_index_file = `echo $MER_MIFILE | tr -d '"' | tr -d "'"`
+meridional_transport_basin_file = `echo $MER_ORFILE | tr -d '"' | tr -d "'"`
+section_index_file = `echo $SEC_SIFILE | tr -d '"' | tr -d "'"`
+tidal_dissipation_file = `echo $TDFILE | tr -d '"' | tr -d "'"`
+EOF
+if ($SWAMTH == "'chlorophyll'") then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+chlorophyll_concentration_file = `echo $CCFILE | tr -d '"' | tr -d "'"`
+EOF
+endif
+if ($SRXDAY != "0.") then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+sss_climatology_file = `echo $SCFILE | tr -d '"' | tr -d "'"`
+EOF
+endif
+
+# iHAMOCC boundary conditions
+if ($ecosys == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+dust_file = `echo $FEDEPFILE | tr -d '"' | tr -d "'"`
+EOF
+ if ($BLOM_RIVER_NUTRIENTS == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+river_file = `echo $RIVINFILE | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ if ($BLOM_N_DEPOSITION == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+n_deposition_file = `echo $NDEPFILE | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ if ($BGCOAFX_OALKFILE != "''") then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+oafx_file = `echo $BGCOAFX_OALKFILE | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ if ($HAMOCC_VSLS == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+swa_clim_file = `echo $SWACLIMFILE | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ if ($L_3DVARSEDPOR == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+sed_porosity_file = `echo $SEDPORFILE | tr -d '"' | tr -d "'"`
+EOF
+ endif
+endif
+
+# BLOM initial conditions
+cat >> $CASEBUILD/blom.input_data_list << EOF
+inicon_file = `echo $ICFILE | tr -d '"' | tr -d "'"`
+EOF
+
+
+# iHAMOCC initial conditions
+if ($ecosys == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+inidic_file = `echo $INIDIC | tr -d '"' | tr -d "'"`
+inialk_file = `echo $INIALK | tr -d '"' | tr -d "'"`
+inipo4_file = `echo $INIPO4 | tr -d '"' | tr -d "'"`
+inioxy_file = `echo $INIOXY | tr -d '"' | tr -d "'"`
+inino3_file = `echo $ININO3 | tr -d '"' | tr -d "'"`
+inisil_file = `echo $INISIL | tr -d '"' | tr -d "'"`
+EOF
+ if ($HAMOCC_CISO == TRUE) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+inic13_file = `echo $INID13C | tr -d '"' | tr -d "'"`
+inic14_file = `echo $INID14C | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ if ($RUN_TYPE == startup) then
+ if ($ICFILE =~ *.blom.r.*) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+inicon_bgc_file = `echo $ICFILE | sed 's/.blom.r./.blom.rbgc./' | tr -d '"' | tr -d "'"`
+EOF
+ else if ($ICFILE =~ *.micom.r.*) then
+cat >> $CASEBUILD/blom.input_data_list << EOF
+inicon_bgc_file = `echo $ICFILE | sed 's/.micom.r./.micom.rbgc./' | tr -d '"' | tr -d "'"`
+EOF
+ endif
+ endif
+endif
+
+
diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml
index a38225a8..d1743b17 100644
--- a/cime_config/config_component.xml
+++ b/cime_config/config_component.xml
@@ -206,18 +206,6 @@
Set preprocessor option to activate the debugging mode for iHAMOCC. Requires module ecosys
-
- logical
- TRUE,FALSE
- FALSE
-
- TRUE
-
- build_component_blom
- env_build.xml
- Set preprocessor option to activate the VSLS-Bromoform tracer code. Requires module ecosys
-
-
char
diff --git a/cime_config/namelist_definition_blom.xml b/cime_config/namelist_definition_blom.xml
new file mode 100644
index 00000000..2c5720df
--- /dev/null
+++ b/cime_config/namelist_definition_blom.xml
@@ -0,0 +1,6244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ integer
+ limits
+ limits
+
+ 0
+
+ First day of integration (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 0
+
+ Last day of integration (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 9999999
+
+ Model date in YYYYMMDD (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 9999999
+
+ Initial experiment date in YYYYMMDD (i)
+
+
+
+ limits
+ limits
+
+ unset
+
+ Experiment name (a)
+ char
+
+
+
+ char
+ limits
+ limits
+
+ cesm
+
+ Experiment configuration (a)
+
+
+
+ char
+ limits
+ limits
+
+ $RUN_TYPE
+ continue
+
+ run type (a)
+
+
+
+ char
+ limits
+ limits
+
+ unset
+ $DIN_LOC_ROOT/ocn/blom/grid/grid_tnx2v1_20130206.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/grid_tnx1v4_20170622.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.25v4_20170622.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/grid_tnx0.125v4_20221013.nc
+
+ abs
+ Name of file containing grid specification (a)Name of file containing grid specification
+
+
+
+ char
+ limits
+ limits
+
+ unset
+ $DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx2v1_20130419.nc
+ $DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx1v4_20170622.nc
+ $DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.25v4_20170623.nc
+ $DIN_LOC_ROOT/ocn/blom/inicon/inicon_tnx0.125v4_20230318.nc
+
+ abs
+
+ Name of file containing initial conditions, that is either a
+ valid restart file or 'inicon.nc' if climatological based
+ initial conditions are desired.
+
+
+
+
+ real
+ limits
+ limits
+
+ 2000.e4
+ 2000.e5
+
+ Reference pressure for potential density (g/cm/s2) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 1800.
+ 4800.
+ 4800.
+ 3200.
+ 3600.
+ 900.
+ 300.
+
+ Baroclinic time step (sec) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 36.
+ 96.
+ 96.
+ 64.
+ 60.
+ 15.
+ 6.
+
+ Barotropic time step (sec) (f)
+
+
+
+ real
+ limits
+ limits
+
+ .02
+ 2.
+ .15
+ .0015
+ .1
+ .001
+
+ Laplacian diffusion velocity for momentum dissipation (cm/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ .004
+ .4
+ .15
+ .0015
+ .1
+ .001
+
+ Laplacian diffusion velocity for momentum dissipation (cm/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+
+ Biharmonic diffusion velocity for momentum dissipation (cm/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+
+ Biharmonic diffusion velocity for momentum dissipation (cm/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 5000.
+ 5000.e4
+ 300.e4
+ 300.
+ 300.e4
+ 300.
+
+ Laplacian diffusivity for momentum dissipation (cm**2/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 300.
+ 300.e4
+ 300.e4
+ 300.
+ 100.e4
+ 100.
+
+ Laplacian diffusivity for momentum dissipation (cm**2/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ .5
+ .15
+ 0.
+
+ Parameter in deformation-dependent Laplacian viscosity (f)
+
+
+
+ real
+ limits
+ limits
+
+ .5
+ .15
+ 0.
+
+ Parameter in deformation-dependent Laplacian viscosity (f)
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+ 0.0625
+ 0.06
+
+ Parameter in deformation-dependent Biharmonic viscosity (f)
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+ 0.0625
+ 0.06
+
+ Parameter in deformation-dependent Biharmonic viscosity (f)
+
+
+
+ real
+ limits
+ limits
+
+ .05
+ 5.
+
+ rms flow speed for linear bottom friction law (cm/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ .002
+
+ Nondiemnsional coefficient of quadratic bottom friction (f)
+
+
+
+ real
+ limits
+ limits
+
+ 5.e-5
+ .75e-4
+ 0.75e-4
+ .75e-4
+
+ Coastal wave breaking damping resiprocal time scale (1/s) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 25.
+
+ Coastal wave breaking damping length scale (m) (f)
+
+
+
+ char
+ limits
+ limits
+
+ enscon
+
+ Momentum equation discretization method. Valid methods:
+
+
+
+ char
+ limits
+ limits
+
+ uc
+
+ Baroclinic mass flux correction method. Valid methods:
+
+
+
+ char
+ limits
+ limits
+
+ eitvel
+
+ Method of applying eddy-induced transport in the remap
+
+
+
+ char
+ limits
+ limits
+
+ constant
+
+ Type of mixed layer restratification time scale. Valid
+
+
+
+ real
+ limits
+ limits
+
+ 1.2
+
+ Efficiency factor of wind TKE generation in the Oberhuber
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+
+ Efficiency factor of TKE generation by momentum
+
+
+
+ real
+ limits
+ limits
+
+ .06
+ .5
+ 1.0
+
+ Efficiency factor for the restratification by mixed layer
+
+
+
+ char
+ limits
+ limits
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx2v1_20130419.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx1v4_20170605.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.25v4_20170626.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/tidal_dissipation_tnx0.125v4_20221013.nc
+
+ abs
+
+ Name of file containing tidal wave energy dissipation divided by
+ by bottom buoyancy frequency
+
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+ .4
+
+ Global factor applied to the energy input by near-intertial
+
+
+
+ real
+ limits
+ limits
+
+ .35
+
+ Fraction of near-inertial energy dissipated in the boundary
+
+
+
+ real
+ limits
+ limits
+
+ .5
+
+ Fraction of near-inertial energy dissipated locally beneath
+
+
+
+ char
+ limits
+ limits
+
+ jerlov
+
+ Shortwave radiation absorption method. Valid methods:
+
+
+
+ integer
+ limits
+ limits
+
+ 3
+
+ Number indicating the Jerlov (1968) water type (i)
+
+
+
+ char
+ limits
+ limits
+
+ climatology
+
+ Chlorophyll concentration option. Valid options:
+
+
+
+ char
+ limits
+ limits
+
+ unset
+ $DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx1v4_20170608.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.25v4_20170623.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/chlorophyll_concentration_tnx0.125v4_20221013.nc
+
+ abs
+
+ Name of file containing chlorophyll concentration climatology
+
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+
+ e-folding time scale (days) for SST relax., if 0 no relax. (f)
+
+
+
+ real
+ limits
+ limits
+
+ 0.
+ 60.
+ 6.
+
+ e-folding time scale (days) for SSS relax., if 0 no relax. (f)
+
+
+
+ real
+ limits
+ limits
+
+ 1.
+
+ Maximum mixed layer depth for e-folding SST relaxation (m) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 1.
+ 1.
+ 10.
+
+ Maximum mixed layer depth for e-folding SSS relaxation (m) (f)
+
+
+
+ real
+ limits
+ limits
+
+ 1.5
+
+ Max. absolute value of SST difference in relaxation (degC) (f)
+
+
+
+ real
+ limits
+ limits
+
+ .5
+
+ Max. absolute value of SSS difference in relaxation (psu) (f)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Apply diagnosed heat flux flag (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Apply diagnosed freshwater flux flag (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Diagnose heat flux flag (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Diagnose freshwater flux flag (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+ .true.
+
+ Balance the SSS relaxation (l)
+
+
+
+ char
+ limits
+ limits
+
+ unset
+ $DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx2v1_20130927.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx1v4_20170604.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.25v4_20170623.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/sss_clim_core_tnx0.125v4_20221013.nc
+
+ abs
+ Name of file containing SSS climatology used for relaxation (a)
+ Name of file containing SSS climatology used for relaxation
+
+
+
+
+ char
+ limits
+ limits
+
+ none
+
+ Source of wave fields. Valid source: 'none', 'param', 'extern' (a)
+
+
+
+ logical
+ limits
+ limits
+
+ .true.
+ .false.
+
+ Smooth NorESM forcing (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+ .true.
+
+ Send precipitation/runoff factor to NorESM coupler (l)
+
+
+
+ char
+ limits
+ limits
+
+ unset
+
+ Path to forcing fields in case of EXPCNF 'ben02clim' or
+
+
+
+ integer
+ limits
+ limits
+
+ 60
+
+ Global i-index of point diagnostics (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 60
+
+ Global j-index of point diagnostics (i)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Conservation diagnostics flag (l)
+
+
+
+ logical
+ limits
+ limits
+
+ .false.
+
+ Checksum diagnostics flag (l)
+
+
+
+ integer
+ limits
+ limits
+
+ 1
+
+ Restart frequency in days (30=1month,365=1year) (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 0
+ 1
+
+ Format of restart file (valid arguments are 0 for classic,
+
+
+
+ integer
+ limits
+ limits
+
+ 0
+
+ Compression flag for restart file (i)
+
+
+
+ integer
+ limits
+ limits
+
+ 0
+ 1
+
+ 0 = netcdf, 1 = pnetcdf
+
+
+
+
+
+
+
+ char
+ vcoord
+ vcoord
+
+ $BLOM_VCOORD
+
+
+
+
+
+ char
+ vcoord
+ vcoord
+
+ ppm
+
+
+
+
+
+ char
+ vcoord
+ vcoord
+
+ monotonic
+
+
+
+
+
+ char
+ vcoord
+ vcoord
+
+ non_oscillatory
+
+
+
+
+
+ char
+ vcoord
+ vcoord
+
+ non_oscillatory
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .false.
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .false.
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .true.
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .false.
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .true.
+
+
+
+
+
+ logical
+ vcoord
+ vcoord
+
+ .false.
+
+
+
+
+
+ real
+ vcoord
+ vcoord
+
+ 2.5
+
+
+
+
+
+ real
+ vcoord
+ vcoord
+
+ 1.08
+
+
+
+
+
+ real
+ vcoord
+ vcoord
+
+ .1
+
+
+
+
+
+ integer
+ vcoord
+ vcoord
+
+ 4
+
+
+
+
+
+ integer
+ vcoord
+ vcoord
+
+ 1
+
+
+
+
+
+
+
+
+
+ char
+ diffusion
+ diffusion
+
+ gm
+
+ Eddy-induced transport parameterization method. Valid
+
+
+
+ char
+ diffusion
+ diffusion
+
+ "large scale"
+
+ Type of Richardson number used in eddy diffusivity
+
+
+
+ char
+ diffusion
+ diffusion
+
+ smooth
+ step
+ step
+
+ Method to estimate eddy diffusivity weight as a function of
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .false.
+
+ If true, eddy diffusivity has a 2d structure (l)
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .true.
+
+ Apply eddy mixing suppression away from steering level (l)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 0.85
+ 0.5
+ 0.5
+
+ Parameter c in Eden and Greatbatch (2008) parameterization (f)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 200.
+
+ Parameter gamma in E. and G. (2008) param. (f)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 4000.
+ 4000.e2
+
+ Minimum eddy length scale in E. and G. (2008) param. (cm) (f)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 100.
+ 100.e4
+ 0.
+ 0.
+
+ Minimum diffusivity in E. and G. (2008) param. (cm**2/s) (f)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 1500.
+ 1500.e4
+ 1000.
+ 1000.e4
+ 1000.
+ 1000.e4
+ 0.
+ 0.
+
+ Maximum diffusivity in E. and G. (2008) param. (cm**2/s) (f)
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 1.
+
+ Factor relating the isopycnal diffusivity to the layer
+
+
+
+ char
+ diffusion
+ diffusion
+
+ UNSET
+
+ abs
+ Name of file containing topographic beta parameter (a)Name of file containing topographic beta parameter
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 0.
+
+ Linear scaling parameter for topographic rhines scale () (f)
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .false.
+
+ If true, apply anisotropy correction to eddy diffusivity (l)
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .false.
+
+ If true, then isopycnal/neutral diffusion will have 3D
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .false.
+
+ If true, use the minimum of planetary and topographic beta
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 1.2
+
+ Critical gradient richardson number for shear driven
+
+
+
+ integer
+ diffusion
+ diffusion
+
+ 2
+
+ Type of background diapycnal mixing. If bdmtyp=1 the
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 5.e-8
+ 5.e-4
+
+ Background diapycnal diffusivity times buoyancy frequency
+
+
+
+ real
+ diffusion
+ diffusion
+
+ 1.e-5
+ .1
+
+ Background diapycnal diffusivity (cm**2/s) (f)
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .false.
+ .true.
+
+ Make the background mixing latitude dependent according to
+
+
+
+ real
+ diffusion
+ diffusion
+
+ .006
+
+ Fraction of surface TKE that penetrates beneath mixed layer
+
+
+
+ logical
+ diffusion
+ diffusion
+
+ .true.
+
+ If true, apply lateral smoothing of CVMix estimated
+
+
+
+ char
+ diffusion
+ diffusion
+
+ none
+
+ Type of CVMix Langmuir turbulence parameterization. Valid
+
+
+
+ char
+ diffusion
+ diffusion
+
+ neutral
+ layer
+ layer
+ layer
+
+ Type of lateral tracer eddy diffusion: Valid methods:
+
+
+
+
+
+
+
+ char(2)
+ cwmod
+ cwmod
+
+ unset
+ 'Gibraltar','Gibraltar'
+ 'Gibraltar','Gibraltar'
+
+ Array of geographical names of channels to be modified (a)
+
+
+
+ char(2)
+ cwmod
+ cwmod
+
+ 'unset','unset'
+ 'u','u'
+ 'u','u'
+
+
+ Array of C grid cell edges to be modified. Valid options:
+
+
+
+ integer(2)
+ cwmod
+ cwmod
+
+ -999,-999
+ 53,54
+ 105,106
+
+ Array of grid cell i-indices (i)
+
+
+
+ integer(2)
+ cwmod
+ cwmod
+
+ -999,-999
+ 137,137
+ 273,273
+
+ Array of grid cell j-indices (i)
+
+
+
+ real(2)
+ cwmod
+ cwmod
+
+ 1.e36,1.e36
+ 30.e3,30.e3
+ 30.e3,30.e3
+
+
+ Array of modified grid cell widths (m) (f)
+
+
+
+
+
+
+
+ char
+ secdia
+ secdia
+
+ unset
+ $DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx2v1_20190826.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx1v4_20190611.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.25v4_20190612.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/section_index_tnx0.125v4_20221013.dat
+
+ abs
+
+ Name of file containing section specification for section
+ transport computation
+
+
+
+
+
+
+
+
+
+ char(3)
+ diaphy
+ diaphy
+
+ 'hd','hm','hy'
+
+ tag used in file name (c10)
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 1,30,365
+
+ average period in days
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 30,30,365
+ 1,30,365
+ 30,30,365
+
+ how often to start a new file in days
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+
+ switch for compressed/uncompressed output
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 1,1,1
+
+
+ netcdf format (valid arguments are 0 for classic, 1 for 64-bit
+ offset and 2 for netcdf4/hdf5 format)
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ absolute wind speed [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+
+ surface albedo []
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ Barotropic mass streamfunction [kg s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ brine flux [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ brine plume depth [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ non-solar heat flux derivative [W m-2 K-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ evaporation [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ ice concentration [%]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ fresh water flux due to melting/freezing [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ ice thickness [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ heat flux due to melting/freezing [W m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ snow depth [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ ice age [d]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer inertial kinetic energy tendency [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ Langmuir enhancement factor []
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ Surface layer averaged Langmuir number []
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ liquid precipitation [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ maximum mixed layer depth [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer depth [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer thickness using "sigma-t" criterion [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ minimum mixed layer thickness using "sigma-t" criterion [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ maximum mixed layer thickness using "sigma-t" criterion [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer thickness squared using "sigma-t" criterion [m2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to friction velocity [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to near inertial mot. [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to buoyancy forcing [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to eddy restrat. [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to pot. energy change [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer TKE tendency related to kin. energy change [kg s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ wind stress y-component [N m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ non-solar heat flux [W m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ bottom pressure [Pa]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ surface pressure [Pa]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ frozen runoff [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ liquid runoff [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ salt flux received by ocean [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ restoring salt flux received by ocean [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ bottom salinity [g kg-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ sea level [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ sea level squared [m2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ salt flux [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ solid precipitation [kg m-2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ mixed layer density [kg m-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ ocean surface salinity [g kg-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ ocean surface salinity squared [g2 kg-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ ocean surface temperature [degC]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ ocean surface temperature squared [degC2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ heat flux received by ocean [W m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ restoring heat flux received by ocean [W m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ short-wave heat flux [W m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 4,4,0
+ 4,4,0
+ 0,0,0
+
+ 20C isoterm depth [m]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ momentum flux received by ocean x-component [N m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ momentum flux received by ocean y-component [N m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ bottom temperature [degC]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ ice temperature [degC]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ surface temperature [degC]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ barotropic velocity x-component [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ ice velocity x-component [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ friction velocity [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ friction velocity cubed [m3 s-3]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ surface Stokes drift x-componen [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ barotropic velocity y-component [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ ice velocity y-component [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ surface Stokes drift y-componen [m s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ wind stress x-component [N m-2]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ buoyancy frequency squared [s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ vertical diffusivity [log10(m2 s-1)|m2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ vertical momentum diffusivity [log10(m2 s-1)|m2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ vertical heat diffusivity [log10(m2 s-1)|m2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ vertical salt diffusivity [log10(m2 s-1)|m2 s-1]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ layer interface diffusivity [log10(m2 s-1)]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+ isopycnal diffusivity [log10(m2 s-1)]
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,0,4
+ 0,0,4
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diaphy
+ diaphy
+
+ 0,4,0
+ 4,4,0
+ 0,0,0
+
+
+
+
+
+
+
+
+
+ char
+ merdia
+ merdia
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx2v1_20190826.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx1v4_20190729.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.25v4_20190612.nc
+ $DIN_LOC_ROOT/ocn/blom/grid/ocean_regions_tnx0.125v4_20221013.nc
+
+ abs
+ Name of file containing ocean region specification (a)
+
+
+
+ char
+ merdia
+ merdia
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx2v1_20190826.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx1v4_20190615.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.25v4_20190701.dat
+ $DIN_LOC_ROOT/ocn/blom/grid/mertra_index_tnx0.125v4_20221013.dat
+
+ abs
+ Name of file containing zonal section specification for
+
+
+
+ char(4)
+ merdia
+ merdia
+
+ 'atlantic_arctic_ocean','atlantic_arctic_extended_ocean','indian_pacific_ocean','global_ocean'
+
+ Array of region names for meridional overturning and flux
+
+
+
+ integer(20)
+ merdia
+ merdia
+
+ 2,4
+
+ Array of mask flags in ocean regions file to be included for region (1)
+
+
+ integer(20)
+ merdia
+ merdia
+
+ 2,4,6,7,8,9
+
+ Array of mask flags in ocean regions file to be included for region (2)
+
+
+ integer(20)
+ merdia
+ merdia
+
+ 3,5
+
+ Array of mask flags in ocean regions file to be included for region (3)
+
+
+ integer(20)
+ merdia
+ merdia
+
+ 0
+
+ Array of mask flags in ocean regions file to be included for region (4)
+
+
+
+ real(4)
+ merdia
+ merdia
+
+ -34.,-34.,-34.,-90.
+
+ Minimum latitude to be considered for each region (f)
+
+
+
+ real(4)
+ merdia
+ merdia
+
+ 90.,90.,90.,90.
+
+ Maximum latitude to be considered for each region (f)
+
+
+
+
+
+
+
+ real
+ bgcnml
+ bgcnml
+
+ $CCSM_CO2_PPMV
+
+ Atmospheric CO2 concentration [ppmv]
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx2v1_20130506.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx1v4_20171107.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.25v4_20181004.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/dustdep_mhw2006_tnx0.125v4_20221013.nc
+
+ abs
+ 'File name (incl. full path) for iron (dust) deposition data'
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/bndcon/Annual_clim_swa_tnx1v4_20210415.nc
+
+ abs
+ File name (incl. full path) for swa climatology field (needed if bromoform scheme is activated)
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+ .true.
+
+ Logical switch to activate riverine input
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx2v1_20170915.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx1v4_20170820.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.25v4_20170821.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/river_nutrients_GNEWS2000_tnx0.125v4_20221013.nc
+
+ abs
+ File name (incl. full path) for riverine input data
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+ .true.
+ .false.
+
+ Logical switch to activate N-deposition
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_1850_CMIP6_tnx2v1_20180321.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_2000_CMIP6_tnx2v1_20200826.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_185001-201412_tnx2v1_20190702.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_1850_CMIP6_tnx1v4_20171106.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_2000_CMIP6_tnx1v4_20200826.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_185001-201412_tnx1v4_20180613.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_201501-210012-${BLOM_NDEP_SCENARIO}_tnx1v4_20191112.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_1850_CMIP6_tnx0.25v4_20190912.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_2000_CMIP6_tnx0.25v4_20200826.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_185001-201412_tnx0.25v4_20190705.nc
+ $DIN_LOC_ROOT/ocn/blom/bndcon/ndep_1850_CMIP6_tnx0.125v4_20221013.nc
+
+ abs
+ File name (incl. full path) for atmopheric N-deposition data
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+
+
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+ .true.
+
+ Logical switch to activate sediment spin-upLogical switch to activate sediment spin-up
+
+
+
+ integer
+ bgcnml
+ bgcnml
+
+ -1
+ $HAMOCC_SEDSPINUP_YR_START
+
+ Start year for sediment spinup
+
+
+
+ integer
+ bgcnml
+ bgcnml
+
+ -1
+ $HAMOCC_SEDSPINUP_YR_END
+
+ End year for sediment spinup
+
+
+
+ integer
+ bgcnml
+ bgcnml
+
+ -1
+
+ Number of subcyles per time-step for sediment spinup
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_Ct_preind_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/glodapv2_At_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/woa13_phosphate_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/woa13_oxygen_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/woa13_nitrate_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ $DIN_LOC_ROOT/ocn/blom/inicon/woa13_silicate_OMIPinit_20171107.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/inicon/d13C_permil_20180609.nc
+
+ abs
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+ $DIN_LOC_ROOT/ocn/blom/inicon/d14C_permil_20180609.nc
+
+ abs
+
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+
+ abs
+
+ File name (incl. full path) for surface PI pH input data.
+
+
+
+
+ logical
+ bgcnml
+ bgcnml
+
+ .false.
+
+
+
+
+
+ char
+ bgcnml
+ bgcnml
+
+ UNSET
+
+ abs
+
+ File name (incl. full path) for sediment porosity
+
+
+
+
+
+
+
+
+
+ char
+ bgcoafx
+ bgcoafx
+
+ UNSET
+
+ Name of alkalinization scenario ('const', 'ramp', or 'file')
+
+
+
+ char
+ bgcoafx
+ bgcoafx
+
+ UNSET
+
+ abs
+
+ Full path of the input file for the alkalinization scenario 'file'
+
+
+
+
+ real
+ bgcoafx
+ bgcoafx
+
+ 0.135
+
+ Pmol alkalinity/yr added in 'const' or 'ramp' scenarios
+
+
+
+ real
+ bgcoafx
+ bgcoafx
+
+ 70.0
+
+ Max latitude where alkalinity is added in 'const' or 'ramp' scenarios
+
+
+
+ real
+ bgcoafx
+ bgcoafx
+
+ -60.0
+
+ Min latitude where alkalinity is added in 'const' or 'ramp' scenarios
+
+
+
+ real
+ bgcoafx
+ bgcoafx
+
+ 2025
+
+ Start year for ramp up in 'ramp' scenario
+
+
+
+ real
+ bgcoafx
+ bgcoafx
+
+ 2035
+
+ End year for ramp up in 'ramp' scenario
+
+
+
+
+
+
+
+ char(3)
+ diabgc
+ diabgc
+
+ 'hbgcd','hbgcm','hbgcy'
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 1,30,365
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 30,30,365
+ 1,30,365
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 1,1,1
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,1,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Phosphorus (po4) [mol P m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Oxygen (o2) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved iron (dfe) [mol Fe m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Nitrate (no3) [mol N m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural alkalinity (nattalk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved carbon (dissic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Phytoplankton (phyc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ pH (ph) [-log10([h+])]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Export production (epc100) [mol C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Si export production (epsi100) [mol Si m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Ca export production (epcalc100) [mol Ca m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Piston velocity (kwco2) [m s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Piston velocity times solubility (kwco2*kh; moist air) [m s-1 mol kg-1 uatm-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Piston velocity times solubility (kwco2*kh; moist air) [m s-1 mol kg-1 uatm-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CO2 solubility under moist air assumption (kh) [mol kg-1 atm-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural surface PCO2 (spco2) [uatm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Surface PCO2 under moist air assumption [uatm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Downward CO2 flux (co2fxd) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Upward CO2 flux (co2fxu) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Oxygen flux (fgo2) [mol O2 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Nitrogen flux (fgn2) [mol N2 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+ Nitrous oxide flux [mol N2O m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ DMS flux (dmsflux) [mol DMS m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ surface DMS concentration (dms) [mol DMS m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ DMS production (dmsprod) [mol DMS m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ DMS bacterial consuption (dms_bac) [mol DMS m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ DMS decomposition by UV (dms_uv) [mol DMS m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Atmospheric CO2 (atmco2) [ppm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Atmospheric O2 (atmo2) [ppm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Atmospheric N2 (atmn2) [ppm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural dissolved carbon (natdissic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural alkalinity (nattalk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural pH (natph) [-log10([h+])]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural surface PCO2 (spco2) [uatm]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural net CO2 flux (natco2fx) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 0,2,2
+ 0,0,0
+
+ Downward 13CO2 flux (co213fxd) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 0,2,2
+ 0,0,0
+
+ Upward 13CO2 flux (co213fxu) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Downward 14CO2 flux (co214fxd) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Upward 14CO2 flux (co214fxu) [kg C m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CFC11 flux [mol CFC11 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CFC12 flux [mol CFC12 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ SF6 flux [mol SF6 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 4,2,2
+ 4,2,2
+ 0,0,0
+
+ Primary production (pp) [mol C m-3 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Vertically integrated nitrogen fixation
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Vertically integrated denitrification
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,2,2
+ 4,2,2
+
+ Nitrogen deposition flux [mol N m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ AMELIST FOR DIAGNOSTIC iHAMOCC OUTPUT
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+ Phosphorus (po4) [mol P m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,4
+ 4,0,4
+ 0,0,0
+
+ Oxygen (o2) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Dissolved iron (dfe) [mol Fe m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ CaCO3 shells (calc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Opal shells (opal) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Carbonate ions (co3) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ Nitrous oxide concentration [mol N2O m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Calcite saturation state (omegac) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural aragonite saturation state (natomegaa) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,4
+ 4,0,4
+ 0,0,0
+
+ preformed oxygen (p_o2) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,4
+ 4,0,4
+ 0,0,0
+
+ Saturated oxygen (satoxy) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ preformed alkalinity (p_talk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ preformed DIC (p_dic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ saturated DIC (dic_sat) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural dissolved carbon (natdissic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural alkalinity (nattalk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural carbonate ion concentration (natco3) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural CaCO3 shells (natcalc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural pH (natph) [-log10([h+])]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural calcite saturation state (natomegac) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Natural aragonite saturation state (natomegaa) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Dissolved C13 (dissic13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ Dissolved C14 (dissic14) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ at-depth variable sediment porosity (as opposed to default: only depth)
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ delta 14C of DIC [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Delta 14C of DIC [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Particulate organic carbon 13 (detoc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Dissolved organic carbon 13 (dissoc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Particulate inorganic carbon 13 (calc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ 13C of phytoplankton biomass (phyc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ 13C of zootoplankton biomass (zooc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ CFC11 concentration [mol CFC11 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ CFC12 concentration [mol CFC12 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ SF6 concentration [mol SF6 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ index of point diagnostics (i)
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Mass sinking velocity (aggregate scheme) [m d-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 0,0,2
+ 0,0,0
+
+ Number sinking velocity (aggregate scheme) [m d-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ Epsilon exponent (aggregate scheme) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ Average particle size (aggregate scheme)
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 0,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Phytoplankton (phyc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Zooplankton (zooc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved organic carbon (dissoc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Primary production (pp) [mol C m-3 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Phosphorus (po4) [mol P m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,4,4
+ 4,4,4
+ 0,0,0
+
+ Oxygen (o2) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ eposition
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Nitrate (no3) [mol N m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Alkalinity (talk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Silicate (si) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved carbon (dissic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Detrius (detoc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CaCO3 shells (calc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Opal shells (opal) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ ]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 4,2,2
+ 0,0,0
+
+ Nitrous oxide concentration [mol N2O m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Calcite saturation state (omegac) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Aragonite saturation state (omegaa) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,4,4
+ 4,4,4
+ 0,0,0
+
+ preformed oxygen (p_o2) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,4,4
+
+ Saturated oxygen (satoxy) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ preformed phosphate (p_po4) [mol PO4 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ preformed alkalinity (p_talk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ preformed DIC (p_dic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ saturated DIC (dic_sat) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural dissolved carbon (natdissic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural alkalinity (nattalk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural carbonate ion concentration (natco3) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural CaCO3 shells (natcalc) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural pH (natph) [-log10([h+])]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural calcite saturation state (natomegac) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Natural aragonite saturation state (natomegaa) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved C13 (dissic13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved C14 (dissic14) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ delta 13C of DIC [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Particulate organic carbon 13 (detoc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Dissolved organic carbon 13 (dissoc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Particulate inorganic carbon 13 (calc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ 13C of phytoplankton biomass (phyc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ 13C of zootoplankton biomass (zooc13) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CFC11 concentration [mol CFC11 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ CFC12 concentration [mol CFC12 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ SF6 concentration [mol SF6 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Number of sinking particles (aggregate scheme,nos) [cm-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Mass sinking velocity (aggregate scheme) [m d-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+ Number sinking velocity (aggregate scheme) [m d-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ Epsilon exponent (aggregate scheme) [1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,0
+ 0,0,0
+ 0,0,0
+
+ Average particle size (aggregate scheme)
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,2,2
+ 4,2,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ sediment - water-column diffusive flux of oxygen [mol O2 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ sediment - water-column diffusive flux of N2 [mol N2 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ sediment - water-column diffusive flux of nitrate [mol NO3 m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ sediment - water-column diffusive flux of silica [mol Si m-2 s-1]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powdic) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powalk) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powpho) [eq m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powox) [mol O2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (pown2) [mol N2 m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powno3)[mol N m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (powsi) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssso12) [mol m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssssil) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (sssc12) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssster) [mol m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssso12) [mol m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssssil) [mol Si m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (sssc12) [mol C m-3]
+
+
+
+ integer(3)
+ diabgc
+ diabgc
+
+ 0,0,2
+ 2,0,2
+ 0,0,0
+
+ (ssster) [mol m-3]
+
+
+
diff --git a/cime_config/ocn_in.readme b/cime_config/ocn_in.readme
index 8750f450..56d98527 100644
--- a/cime_config/ocn_in.readme
+++ b/cime_config/ocn_in.readme
@@ -75,8 +75,8 @@
! SRXBAL : Balance the SSS relaxation (l)
! SCFILE : Name of file containing SSS climatology used for relaxation (a)
! WAVSRC : Source of wave fields. Valid source: 'none', 'param', 'extern' (a)
-! SMTFRC : Smooth CESM forcing (l)
-! SPRFAC : Send precipitation/runoff factor to CESM coupler (l)
+! SMTFRC : Smooth NorESM forcing (l)
+! SPRFAC : Send precipitation/runoff factor to NorESM coupler (l)
! ATM_PATH : Path to forcing fields in case of EXPCNF 'ben02clim' or
! 'ben02syn' (a)
! ITEST : Global i-index of point diagnostics (i)
diff --git a/cime_config/testdefs/testlist_blom.xml b/cime_config/testdefs/testlist_blom.xml
index f54c99eb..cdddf99a 100644
--- a/cime_config/testdefs/testlist_blom.xml
+++ b/cime_config/testdefs/testlist_blom.xml
@@ -5,22 +5,22 @@
-
+
-
+
-
+
-
+
diff --git a/cime_config/user_nl_blom b/cime_config/user_nl_blom
index bdfa712d..00abb174 100644
--- a/cime_config/user_nl_blom
+++ b/cime_config/user_nl_blom
@@ -1,7 +1,34 @@
-#----------------------------------------------------------------------------------
-# Users should add all user specific namelist changes below in the form of
-# namelist_var = new_namelist_value
-# Note - that it does not matter what namelist group the namelist_var belongs to
-#----------------------------------------------------------------------------------
+!----------------------------------------------------------------------------------
+! Users should add all user specific namelist changes below in the form of
+! namelist_var = new_namelist_value
+!
+! NOTE: that it does not matter what namelist group the namelist_var belongs to
+! EXCEPT for when a variable appears in more than one namelist
+! There are a few history variables that have the same name in both diaphy and diabgc
+! For those variables an @diaphy or @diabgc to be appendend for the namelist_var
+!
+! GLB_FNAMETAG@diaphy
+! GLB_AVEPERIO@diaphy
+! GLB_FILEFREQ@diaphy
+! GLB_COMPFLAG@diaphy
+! GLB_NCFORMAT@diaphy
+! LYR_DP@diaphy">
+! GLB_FNAMETAG@diabgc
+! GLB_AVEPERIO@diabgc
+! GLB_FILEFREQ@diabgc
+! GLB_COMPFLAG@diabgc
+! GLB_NCFORMAT@diabgc
+! LYR_DP@diabgc">
+!
+! For example:
+! GLB_FNAMETAG@diaphy = 'hd','hd','hd'
+!
+! NOTE: the array sections for MER_REGFLG must be entered as
+! MER_REGFLG1 - sets MER_REGFLG(1,:)
+! MER_REGFLG2 - sets MER_REGFLG(2,:)
+! MER_REGFLG3 - sets MER_REGFLG(3,:)
+! MER_REGFLG4 - sets MER_REGFLG(4,:)
+! To see a full documentation of the namelist variables - see $RUNDIR/ocn_in.readme
+!----------------------------------------------------------------------------------
diff --git a/drivers/nuopc/mod_nuopc_methods.F90 b/drivers/nuopc/mod_nuopc_methods.F90
index 53b52d1e..91c01a17 100644
--- a/drivers/nuopc/mod_nuopc_methods.F90
+++ b/drivers/nuopc/mod_nuopc_methods.F90
@@ -39,10 +39,15 @@ module mod_nuopc_methods
rnf_da, rfi_da, fmltfz_da, sfl_da, ztx_da, mty_da, &
ustarw_da, slp_da, abswnd_da, ficem_da, lamult_da, &
lasl_da, ustokes_da, vstokes_da, atmco2_da, atmbrf_da, &
- l1ci, l2ci
+ flxdms_da, flxbrf_da, l1ci, l2ci
use mod_utility, only: util1, util2
use mod_checksum, only: csdiag, chksummsk
use shr_const_mod, only: SHR_CONST_RHOSW, SHR_CONST_LATICE, SHR_CONST_TKFRZ
+#ifdef HAMOCC
+ use mo_carbch, only: ocetra
+ use mo_param1_bgc, only: idms, ibromo
+ use mo_control_bgc, only: do_bgc_aofluxes
+#endif
implicit none
@@ -57,6 +62,7 @@ module mod_nuopc_methods
integer :: ungridded_ubound = 0
real(r8), dimension(:), pointer :: dataptr
end type fldlist_type
+ integer, parameter :: fldsMax = 100
real(r8), dimension(:), allocatable :: mod2med_areacor, med2mod_areacor
real(r8), dimension(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) :: &
@@ -64,53 +70,234 @@ module mod_nuopc_methods
acc_fco2, acc_fdms, acc_fbrf
real(r8) :: tlast_coupled
integer :: jjcpl
- logical :: fco2_requested, fdms_requested, fbrf_requested
- public :: fldlist_type, tlast_coupled, &
- fco2_requested, fdms_requested, fbrf_requested, &
+ public :: fldlist_type, fldsmax, tlast_coupled, &
blom_logwrite, blom_getgindex, blom_checkmesh, blom_setareacor, &
blom_getglobdim, blom_getprecipfact, blom_accflds, &
+ blom_advertise_imports, blom_advertise_exports, &
blom_importflds, blom_exportflds
+ ! Indices for import fields
+ integer :: &
+ index_Si_ifrac = - 1, &
+ index_So_duu10n = - 1, &
+ index_Fioi_melth = - 1, &
+ index_Fioi_meltw = - 1, &
+ index_Fioi_salt = - 1, &
+ index_Fioi_bcpho = - 1, &
+ index_Fioi_bcphi = - 1, &
+ index_Fioi_flxdst = - 1, &
+ index_Foxx_rofl = - 1, &
+ index_Foxx_rofi = - 1, &
+ index_Faox_dms = - 1, &
+ index_Faox_brf = - 1, &
+ index_Foxx_tauy = - 1, &
+ index_Foxx_taux = - 1, &
+ index_Foxx_lat = - 1, &
+ index_Foxx_sen = - 1, &
+ index_Foxx_lwup = - 1, &
+ index_Foxx_evap = - 1, &
+ index_Foxx_swnet = - 1, &
+ index_Sw_lamult = - 1, &
+ index_Sw_ustokes = - 1, &
+ index_Sw_vstokes = - 1, &
+ index_Sw_hstokes = - 1, &
+ index_Faxa_lwdn = - 1, &
+ index_Faxa_snow = - 1, &
+ index_Faxa_rain = - 1, &
+ index_Sa_pslv = - 1, &
+ index_Sa_co2diag = - 1, &
+ index_Sa_co2prog = - 1
+
+ ! Indices for export fields
+ integer :: &
+ index_So_omask = - 1, &
+ index_So_u = - 1, &
+ index_So_v = - 1, &
+ index_So_dhdx = - 1, &
+ index_So_dhdy = - 1, &
+ index_So_t = - 1, &
+ index_So_s = - 1, &
+ index_So_bldepth = - 1, &
+ index_So_dms = - 1, &
+ index_So_brf = - 1, &
+ index_Fioo_q = - 1, &
+ index_Faoo_fco2_ocn = - 1
+
+
+ ! Set logicals for CPP variables
+#ifdef BROMO
+ logical :: use_bromo = .true.
+#else
+ logical :: use_bromo = .false.
+#endif
+#ifdef PROGCO2
+ logical :: progco2 = .true.
+#else
+ logical :: progco2 = .false.
+#endif
+#ifdef DIAGCO2
+ logical :: diagco2 = .true.
+#else
+ logical :: diagco2 = .false.
+#endif
+
contains
! ---------------------------------------------------------------------------
! Private procedures.
! ---------------------------------------------------------------------------
- subroutine getfldindex(fldlist_num, fldlist, stdname, fldindex)
+ subroutine fldlist_add(num, fldlist, stdname, index, ungridded_lbound, ungridded_ubound)
! ---------------------------------------------------------------------------
- ! Get index of field with given standard name. If no field has a matching
- ! name or a field with matching name has an unassociated data pointer, set
- ! index to zero.
+ ! Add to list of field information.
! ---------------------------------------------------------------------------
! Input/output arguments.
- integer, intent(in) :: fldlist_num
- type(fldlist_type), dimension(:), intent(in) :: fldlist
- character(len=*), intent(in) :: stdname
- integer, intent(inout) :: fldindex
+ integer , intent(inout) :: num
+ type(fldlist_type), intent(inout) :: fldlist(:)
+ character(len=*) , intent(in) :: stdname
+ integer , intent(out) :: index
+ integer, optional , intent(in) :: ungridded_lbound, ungridded_ubound
- ! Local variables.
- integer :: n
+ ! Local parameters.
+ character(len=*), parameter :: &
+ subname = modname//':(fldlist_add)'
- if (fldindex >= 0) return
+ ! Local variables.
+ integer :: rc
+
+#ifdef HAMOCC
+ ! Setting the logical flag do_bgc_aofluxes will change the default value of
+ ! false in mo_control_bgc and will result in then
+ ! dms and bromo fluxes to be computed in the mediator and used in BLOM
+ ! For now this flag will be hard-wired to .true. to permit bit-for-bit
+ ! results. Moving forwards this flag will be moved into a namelist.
+ do_bgc_aofluxes = .true.
+#endif
+
+ num = num + 1
+ if (num > fldsMax) then
+ write(lp,'(a,3i6,2(f21.13,3x),d21.5)') subname// &
+ ': BLOM ERROR: number of fields exceeds fldsMax for '//trim(stdname)
+ call xchalt(subname)
+ stop subname
+ endif
+ fldlist(num)%stdname = trim(stdname)
- fldindex = 0
+ index = num
- do n = 1, fldlist_num
- if (fldlist(n)%stdname == stdname) then
- if (associated(fldlist(n)%dataptr)) fldindex = n
- return
- endif
- enddo
+ if (present(ungridded_lbound) .and. present(ungridded_ubound)) then
+ fldlist(num)%ungridded_lbound = ungridded_lbound
+ fldlist(num)%ungridded_ubound = ungridded_ubound
+ endif
- end subroutine getfldindex
+ end subroutine fldlist_add
! ---------------------------------------------------------------------------
! Public procedures.
! ---------------------------------------------------------------------------
+ subroutine blom_advertise_imports(flds_scalar_name, fldsToOcn_num, fldsToOcn, &
+ flds_co2a, flds_co2c)
+
+ ! -------------------------------------------------------------------
+ ! Determine fldsToOcn for import fields
+ ! -------------------------------------------------------------------
+
+ character(len=*) , intent(in) :: flds_scalar_name
+ integer , intent(inout) :: fldsToOcn_num
+ type(fldlist_type) , intent(inout), dimension(:) :: fldsToOcn
+ logical , intent(in) :: flds_co2a
+ logical , intent(in) :: flds_co2c
+
+ integer :: index_scalar
+
+ call fldlist_add(fldsToOcn_num, fldsToOcn, trim(flds_scalar_name), index_scalar)
+
+ ! From ice:
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Si_ifrac' , index_Si_ifrac )
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_melth' , index_Fioi_melth)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_meltw' , index_Fioi_meltw)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_salt' , index_Fioi_salt)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_bcpho' , index_Fioi_bcpho)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_bcphi' , index_Fioi_bcphi)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_flxdst', index_Fioi_flxdst)
+
+ ! From river:
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_rofl', index_Foxx_rofl)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_rofi', index_Foxx_rofi)
+
+ ! From fields computed mediator:
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'So_duu10n' , index_So_duu10n)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_tauy' , index_Foxx_tauy)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_taux' , index_Foxx_taux)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_lat' , index_Foxx_lat)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_sen' , index_Foxx_sen)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_lwup' , index_Foxx_lwup)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_evap' , index_Foxx_evap)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_swnet' , index_Foxx_swnet)
+#ifdef HAMOCC
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faox_dms', index_Faox_dms)
+ if (use_bromo) then
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faox_brf', index_Faox_brf)
+ end if
+#endif
+
+ ! From wave:
+ if (wavsrc_opt == wavsrc_extern) then
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_lamult' , index_Sw_lamult)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_ustokes' , index_Sw_ustokes)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_vstokes' , index_Sw_vstokes)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_hstokes' , index_Sw_hstokes)
+ end if
+
+ ! From atmosphere:
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_pslv' , index_Sa_pslv )
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_lwdn' , index_Faxa_lwdn)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_snow' , index_Faxa_snow)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_rain' , index_Faxa_rain)
+
+ ! From atm co2 fields:
+ if (flds_co2a .or. flds_co2c) then
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_co2diag' ,index_Sa_co2diag)
+ call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_co2prog', index_Sa_co2prog)
+ endif
+
+ end subroutine blom_advertise_imports
+
+ subroutine blom_advertise_exports(flds_scalar_name, fldsFrOcn_num, fldsFrOcn)
+
+ ! -------------------------------------------------------------------
+ ! Determine fldsToOcn for export fields
+ ! -------------------------------------------------------------------
+
+ character(len=*) , intent(in) :: flds_scalar_name
+ integer , intent(inout) :: fldsFrOcn_num
+ type(fldlist_type), dimension(:) , intent(inout) :: fldsFrOcn
+
+ integer :: index_scalar
+
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, trim(flds_scalar_name), index_scalar)
+
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_omask' , index_So_omask)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_t' , index_So_t)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_u' , index_So_u)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_v' , index_So_v)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_s' , index_So_s)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_dhdx' , index_So_dhdx)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_dhdy' , index_So_dhdy)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_bldepth' , index_So_bldepth)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'Fioo_q' , index_Fioo_q)
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'Faoo_fco2_ocn' , index_Faoo_fco2_ocn)
+#ifdef HAMOCC
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_dms', index_So_dms)
+ if (use_bromo) then
+ call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_brf', index_So_brf)
+ end if
+#endif
+ end subroutine blom_advertise_exports
+
subroutine blom_logwrite(msg)
! ---------------------------------------------------------------------------
! Write message string to standard out from master PE.
@@ -315,6 +502,7 @@ subroutine blom_accflds
! Local variables.
real(r8) :: q
integer m, n, mm, nn, k1m, k1n, i, j, l
+ logical :: first_call = .true.
! ------------------------------------------------------------------------
! Set accumulation arrays to zero if this is the first call after a
@@ -347,7 +535,7 @@ subroutine blom_accflds
k1n = 1 + nn
call xctilr(sealv, 1,1, 1,1, halo_ps)
-
+
!$omp parallel do private(l, i)
do j = 1, jj
do l = 1, isu(j)
@@ -403,13 +591,13 @@ subroutine blom_accflds
enddo
!$omp end parallel do
case default
- if (mnproc == 1) &
+ if (mnproc == 1.and. first_call) &
write(lp,*) subname//': unsupported vertical coordinate!'
call xcstop(subname)
stop subname
end select
- if (fco2_requested) then
+ if (index_Faoo_fco2_ocn > 0) then
!$omp parallel do private(l, i)
do j = 1, jj
do l = 1, isp(j)
@@ -421,36 +609,16 @@ subroutine blom_accflds
!$omp end parallel do
endif
- if (fdms_requested) then
- !$omp parallel do private(l, i)
- do j = 1, jj
- do l = 1, isp(j)
- do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
- acc_fdms(i,j) = acc_fdms(i,j) + flxdms(i,j)*baclin
- enddo
- enddo
- enddo
- !$omp end parallel do
- endif
-
- if (fbrf_requested) then
- !$omp parallel do private(l, i)
- do j = 1, jj
- do l = 1, isp(j)
- do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
- acc_fbrf(i,j) = acc_fbrf(i,j) + flxbrf(i,j)*baclin
- enddo
- enddo
- enddo
- !$omp end parallel do
- endif
-
! ------------------------------------------------------------------------
! Increment time since last coupling.
! ------------------------------------------------------------------------
tlast_coupled = tlast_coupled + baclin
+ if (first_call) then
+ first_call = .false.
+ end if
+
end subroutine blom_accflds
subroutine blom_importflds(fldlist_num, fldlist)
@@ -468,39 +636,12 @@ subroutine blom_importflds(fldlist_num, fldlist)
real(r8), parameter :: &
mval = - 1.e12_r8, &
fval = - 1.e13_r8
+ logical :: first_call = .true.
! Local variables.
real(r8) :: afac, utmp, vtmp
integer :: n, i, j, l
- integer, save :: &
- index_Si_ifrac = - 1, &
- index_Fioi_melth = - 1, &
- index_Fioi_meltw = - 1, &
- index_Fioi_salt = - 1, &
- index_Fioi_bcpho = - 1, &
- index_Fioi_bcphi = - 1, &
- index_Fioi_flxdst = - 1, &
- index_Foxx_rofl = - 1, &
- index_Foxx_rofi = - 1, &
- index_So_duu10n = - 1, &
- index_Foxx_tauy = - 1, &
- index_Foxx_taux = - 1, &
- index_Foxx_lat = - 1, &
- index_Foxx_sen = - 1, &
- index_Foxx_lwup = - 1, &
- index_Foxx_evap = - 1, &
- index_Foxx_swnet = - 1, &
- index_Sw_lamult = - 1, &
- index_Sw_ustokes = - 1, &
- index_Sw_vstokes = - 1, &
- index_Sw_hstokes = - 1, &
- index_Faxa_lwdn = - 1, &
- index_Faxa_snow = - 1, &
- index_Faxa_rain = - 1, &
- index_Sa_pslv = - 1, &
- index_Sa_co2diag = - 1, &
- index_Sa_co2prog = - 1, &
- index_Sa_brfprog = - 1
+ integer :: index_co2
! Update time level indices.
if (l1ci == 1 .and. l2ci == 1) then
@@ -511,9 +652,6 @@ subroutine blom_importflds(fldlist_num, fldlist)
l2ci = 3 - l2ci
endif
- call getfldindex(fldlist_num, fldlist, 'Foxx_taux', index_Foxx_taux)
- call getfldindex(fldlist_num, fldlist, 'Foxx_tauy', index_Foxx_tauy)
-
!$omp parallel do private(i, n, afac, utmp, vtmp)
do j = 1, jjcpl
do i = 1, ii
@@ -566,23 +704,6 @@ subroutine blom_importflds(fldlist_num, fldlist)
enddo
!$omp end parallel do
- call getfldindex(fldlist_num, fldlist, 'Faxa_rain', index_Faxa_rain)
- call getfldindex(fldlist_num, fldlist, 'Faxa_snow', index_Faxa_snow)
- call getfldindex(fldlist_num, fldlist, 'Foxx_evap', index_Foxx_evap)
- call getfldindex(fldlist_num, fldlist, 'Foxx_rofl', index_Foxx_rofl)
- call getfldindex(fldlist_num, fldlist, 'Foxx_rofi', index_Foxx_rofi)
- call getfldindex(fldlist_num, fldlist, 'Fioi_meltw', index_Fioi_meltw)
- call getfldindex(fldlist_num, fldlist, 'Fioi_salt', index_Fioi_salt)
- call getfldindex(fldlist_num, fldlist, 'Foxx_swnet', index_Foxx_swnet)
- call getfldindex(fldlist_num, fldlist, 'Foxx_lat', index_Foxx_lat)
- call getfldindex(fldlist_num, fldlist, 'Foxx_sen', index_Foxx_sen)
- call getfldindex(fldlist_num, fldlist, 'Foxx_lwup', index_Foxx_lwup)
- call getfldindex(fldlist_num, fldlist, 'Faxa_lwdn', index_Faxa_lwdn)
- call getfldindex(fldlist_num, fldlist, 'Fioi_melth', index_Fioi_melth)
- call getfldindex(fldlist_num, fldlist, 'Sa_pslv', index_Sa_pslv)
- call getfldindex(fldlist_num, fldlist, 'So_duu10n', index_So_duu10n)
- call getfldindex(fldlist_num, fldlist, 'Si_ifrac', index_Si_ifrac)
-
!$omp parallel do private(i, n, afac)
do j = 1, jjcpl
do i = 1, ii
@@ -689,12 +810,6 @@ subroutine blom_importflds(fldlist_num, fldlist)
call fill_global(mval, fval, halo_ps, ficem_da(1-nbdy,1-nbdy,l2ci))
if (wavsrc_opt == wavsrc_extern) then
-
- call getfldindex(fldlist_num, fldlist, 'Sw_lamult', index_Sw_lamult)
- call getfldindex(fldlist_num, fldlist, 'Sw_ustokes', index_Sw_ustokes)
- call getfldindex(fldlist_num, fldlist, 'Sw_vstokes', index_Sw_vstokes)
- call getfldindex(fldlist_num, fldlist, 'Sw_hstokes', index_Sw_hstokes)
-
!$omp parallel do private(i, n, utmp, vtmp)
do j = 1, jjcpl
do i = 1, ii
@@ -710,93 +825,62 @@ subroutine blom_importflds(fldlist_num, fldlist)
lasl_da(i,j,l2ci) = fval
else
n = (j - 1)*ii + i
-
+
utmp = fldlist(index_Sw_ustokes)%dataptr(n)
vtmp = fldlist(index_Sw_vstokes)%dataptr(n)
util1(i,j) = utmp*cosang(i,j) + vtmp*sinang(i,j)
util2(i,j) = - utmp*sinang(i,j) + vtmp*cosang(i,j)
-
+
! Langmuir enhancement factor [].
lamult_da(i,j,l2ci) = fldlist(index_Sw_lamult)%dataptr(n)
-
+
! Surface layer averaged Langmuir number [].
lasl_da(i,j,l2ci) = fldlist(index_Sw_hstokes)%dataptr(n)
-
+
endif
enddo
enddo
- !$omp end parallel do
+ !$omp end parallel do
call fill_global(mval, fval, halo_pv, util1)
call fill_global(mval, fval, halo_pv, util2)
call fill_global(mval, fval, halo_ps, lamult_da(1-nbdy,1-nbdy,l2ci))
call fill_global(mval, fval, halo_ps, lasl_da(1-nbdy,1-nbdy,l2ci))
-
+
call xctilr(util1, 1,1, 1,1, halo_pv)
call xctilr(util2, 1,1, 1,1, halo_pv)
- !$omp parallel do private(l, i)
+ !$omp parallel do private(l, i)
do j = 1, jj
do l = 1, isu(j)
- do i = max(1,ifu(j,l)), min(ii,ilu(j,l))
- ! x-component of surface Stokes drift [m s-1].
- ustokes_da(i,j,l2ci) = .5_r8*(util1(i-1,j) + util1(i,j))
- enddo
+ do i = max(1,ifu(j,l)), min(ii,ilu(j,l))
+ ! x-component of surface Stokes drift [m s-1].
+ ustokes_da(i,j,l2ci) = .5_r8*(util1(i-1,j) + util1(i,j))
+ enddo
enddo
do l = 1,isv(j)
- do i = max(1,ifv(j,l)), min(ii,ilv(j,l))
- ! y-component of surface Stokes drift [m s-1].
- vstokes_da(i,j,l2ci) = .5_r8*(util2(i,j-1) + util2(i,j))
- enddo
+ do i = max(1,ifv(j,l)), min(ii,ilv(j,l))
+ ! y-component of surface Stokes drift [m s-1].
+ vstokes_da(i,j,l2ci) = .5_r8*(util2(i,j-1) + util2(i,j))
+ enddo
enddo
enddo
- !$omp end parallel do
+ !$omp end parallel do
- endif
+ end if
-#ifdef PROGCO2
- call getfldindex(fldlist_num, fldlist, 'Sa_co2prog', index_Sa_co2prog)
+ ! CO2 flux
- if (index_Sa_co2prog > 0) then
- !$omp parallel do private(i, n)
- do j = 1, jjcpl
- do i = 1, ii
- if (ip(i,j) == 0) then
- atmco2_da(i,j,l2ci) = mval
- elseif (cplmsk(i,j) == 0) then
- atmco2_da(i,j,l2ci) = fval
- else
- n = (j - 1)*ii + i
- ! Atmospheric co2 concentration [ppmv?]
- atmco2_da(i,j,l2ci) = fldlist(index_Sa_co2prog)%dataptr(n)
- endif
- enddo
- enddo
- !$omp end parallel do
- call fill_global(mval, fval, halo_ps, atmco2_da(1-nbdy,1-nbdy,l2ci))
- if (mnproc == 1) &
- write(lp,*) subname//': prog. atmospheric co2 read'
+ if (diagco2 .and. index_Sa_co2diag > 0) then
+ index_co2 = index_Sa_co2diag
+ else if (progco2 .and. index_Sa_co2prog > 0) then
+ index_co2 = index_Sa_co2prog
else
- !$omp parallel do private(i)
- do j = 1, jj
- do i = 1, ii
- if (ip(i,j) == 0) then
- atmco2_da(i,j,l2ci) = mval
- else
- atmco2_da(i,j,l2ci) = -1
- endif
- enddo
- enddo
- !$omp end parallel do
- if (mnproc == 1) &
- write(lp,*) subname//': prog. atmospheric co2 not read'
- endif
-
-#elif defined(DIAGCO2)
- call getfldindex(fldlist_num, fldlist, 'Sa_co2diag', index_Sa_co2diag)
+ index_co2 = -1
+ end if
- if (index_Sa_co2diag > 0) then
- !$omp parallel do private(i, n)
+ if (index_co2 > 0) then
+ !$omp parallel do private(i, n)
do j = 1, jjcpl
do i = 1, ii
if (ip(i,j) == 0) then
@@ -806,16 +890,17 @@ subroutine blom_importflds(fldlist_num, fldlist)
else
n = (j - 1)*ii + i
! Atmospheric co2 concentration [ppmv?]
- atmco2_da(i,j,l2ci) = fldlist(index_Sa_co2diag)%dataptr(n)
+ atmco2_da(i,j,l2ci) = fldlist(index_co2)%dataptr(n)
endif
enddo
enddo
- !$omp end parallel do
+ !$omp end parallel do
call fill_global(mval, fval, halo_ps, atmco2_da(1-nbdy,1-nbdy,l2ci))
- if (mnproc == 1) &
- write(lp,*) subname//': diag. atmospheric co2 read'
+ if (mnproc == 1 .and. first_call) then
+ write(lp,*) subname//': atmospheric co2 obtained from mediator'
+ end if
else
- !$omp parallel do private(i)
+ !$omp parallel do private(i)
do j = 1, jj
do i = 1, ii
if (ip(i,j) == 0) then
@@ -825,65 +910,66 @@ subroutine blom_importflds(fldlist_num, fldlist)
endif
enddo
enddo
- !$omp end parallel do
- if (mnproc == 1) &
- write(lp,*) subname//': diag. atmospheric co2 not read'
- endif
-#else
- !$omp parallel do private(i)
- do j = 1, jj
- do i = 1, ii
- if (ip(i,j) == 0) then
- atmco2_da(i,j,l2ci) = mval
- else
- atmco2_da(i,j,l2ci) = -1
- endif
- enddo
- enddo
- !$omp end parallel do
- if (mnproc == 1) &
- write(lp,*) subname//': atmospheric co2 not read'
-#endif
+ !$omp end parallel do
+ if (mnproc == 1 .and. first_call) then
+ write(lp,*) subname//': atmospheric co2 not obtained from mediator'
+ endif
+ end if
- call getfldindex(fldlist_num, fldlist, 'Sa_brfprog', index_Sa_brfprog)
+ ! DMS flux
- if (index_Sa_brfprog > 0) then
- !$omp parallel do private(i, n)
- do j = 1, jjcpl
- do i = 1, ii
- if (ip(i,j) == 0) then
- atmbrf_da(i,j,l2ci) = mval
- elseif (cplmsk(i,j) == 0) then
- atmbrf_da(i,j,l2ci) = fval
- else
+ if (index_Faox_dms > 0) then
+ if (associated(fldlist(index_Faox_dms)%dataptr)) then
+ !$omp parallel do private(i, n, afac)
+ do j = 1, jjcpl
+ do i = 1, ii
n = (j - 1)*ii + i
- ! Atmospheric bromoform concentration [ppt]
- atmbrf_da(i,j,l2ci) = fldlist(index_Sa_brfprog)%dataptr(n)
- endif
- enddo
- enddo
- !$omp end parallel do
- call fill_global(mval, fval, halo_ps, atmbrf_da(1-nbdy,1-nbdy,l2ci))
- if (mnproc == 1) &
- write(lp,*) subname//': prog. atmospheric bromoform read'
- else
- !$omp parallel do private(i)
- do j = 1, jj
- do i = 1, ii
- if (ip(i,j) == 0) then
- atmbrf_da(i,j,l2ci) = mval
- else
- atmbrf_da(i,j,l2ci) = -1
- endif
- enddo
- enddo
- !$omp end parallel do
- if (mnproc == 1) &
- write(lp,*) subname//': prog. atmospheric bromoform not read'
- endif
+ afac = med2mod_areacor(n)
+ if (ip(i,j) == 0) then
+ flxdms_da(i,j,l2ci) = mval
+ elseif (cplmsk(i,j) == 0) then
+ flxdms_da(i,j,l2ci) = 0._r8
+ else
+ flxdms_da(i,j,l2ci) = fldlist(index_Faox_dms)%dataptr(n)*afac/62.13
+ end if
+ end do
+ end do
+ !$omp end parallel do
+ if (mnproc == 1 .and. first_call) &
+ write(lp,*) subname//': prog. dms flux obtained from mediator'
+ end if
+ if (nreg == 2) then
+ call xctilr(flxdms_da(1-nbdy,1-nbdy,l2ci), 1,1, 0,0, halo_ps)
+ end if
+ end if
+
+ if (index_Faox_brf > 0) then
+ if (associated(fldlist(index_Faox_brf)%dataptr)) then
+ !$omp parallel do private(i, n, afac)
+ do j = 1, jjcpl
+ do i = 1, ii
+ n = (j - 1)*ii + i
+ afac = med2mod_areacor(n)
+ if (ip(i,j) == 0) then
+ flxbrf_da(i,j,l2ci) = mval
+ elseif (cplmsk(i,j) == 0) then
+ flxbrf_da(i,j,l2ci) = 0._r8
+ else
+ flxbrf_da(i,j,l2ci) = fldlist(index_Faox_brf)%dataptr(n)*afac/252.7
+ end if
+ end do
+ end do
+ !$omp end parallel do
+ if (mnproc == 1 .and. first_call) &
+ write(lp,*) subname//': prog. brf flux obtained from mediator'
+ end if
+ if (nreg == 2) then
+ call xctilr(flxbrf_da(1-nbdy,1-nbdy,l2ci), 1,1, 0,0, halo_ps)
+ end if
+ end if
if (csdiag) then
- if (mnproc == 1) then
+ if (mnproc == 1 .and. first_call) then
write(lp,*) subname//':'
endif
call chksummsk(ustarw_da(1-nbdy,1-nbdy,l2ci),ip,1,'ustarw')
@@ -904,8 +990,15 @@ subroutine blom_importflds(fldlist_num, fldlist)
call chksummsk(ficem_da(1-nbdy,1-nbdy,l2ci),ip,1,'ficem')
call chksummsk(atmco2_da(1-nbdy,1-nbdy,l2ci),ip,1,'atmco2')
call chksummsk(atmbrf_da(1-nbdy,1-nbdy,l2ci),ip,1,'atmbrf')
+ if (index_Faox_dms > 0) then
+ call chksummsk(flxdms_da(1-nbdy,1-nbdy,l2ci),ip,1,'flxdms_da')
+ end if
endif
+ if (first_call) then
+ first_call = .false.
+ end if
+
end subroutine blom_importflds
subroutine blom_exportflds(fldlist_num, fldlist)
@@ -924,19 +1017,7 @@ subroutine blom_exportflds(fldlist_num, fldlist)
! Local variables.
real(r8) :: tfac, utmp, vtmp
integer :: n, l, i, j
- integer, save :: &
- index_So_omask = - 1, &
- index_So_u = - 1, &
- index_So_v = - 1, &
- index_So_dhdx = - 1, &
- index_So_dhdy = - 1, &
- index_So_t = - 1, &
- index_So_s = - 1, &
- index_So_bldepth = - 1, &
- index_Fioo_q = - 1, &
- index_Faoo_fdms_ocn = - 1, &
- index_Faoo_fco2_ocn = - 1, &
- index_Faoo_fbrf_ocn = - 1
+ logical, save :: first_call = .true.
tfac = 1._r8/tlast_coupled
@@ -949,16 +1030,6 @@ subroutine blom_exportflds(fldlist_num, fldlist)
call xctilr(acc_dhdx, 1,1, 1,1, halo_uv)
call xctilr(acc_dhdy, 1,1, 1,1, halo_vv)
- call getfldindex(fldlist_num, fldlist, 'So_omask', index_So_omask)
- call getfldindex(fldlist_num, fldlist, 'So_u', index_So_u)
- call getfldindex(fldlist_num, fldlist, 'So_v', index_So_v)
- call getfldindex(fldlist_num, fldlist, 'So_dhdx', index_So_dhdx)
- call getfldindex(fldlist_num, fldlist, 'So_dhdy', index_So_dhdy)
- call getfldindex(fldlist_num, fldlist, 'So_t', index_So_t)
- call getfldindex(fldlist_num, fldlist, 'So_s', index_So_s)
- call getfldindex(fldlist_num, fldlist, 'So_bldepth', index_So_bldepth)
- call getfldindex(fldlist_num, fldlist, 'Fioo_q', index_Fioo_q)
-
fldlist(index_So_omask)%dataptr(:) = 0._r8
fldlist(index_So_u)%dataptr(:) = 0._r8
fldlist(index_So_v)%dataptr(:) = 0._r8
@@ -1021,80 +1092,69 @@ subroutine blom_exportflds(fldlist_num, fldlist)
enddo
!$omp end parallel do
- ! ------------------------------------------------------------------------
- ! Provide DMS flux [kmol DMS m-2 s-1], if requested.
- ! ------------------------------------------------------------------------
-
- call getfldindex(fldlist_num, fldlist, 'Faoo_fdms_ocn', &
- index_Faoo_fdms_ocn)
-
- if (fbrf_requested .and. index_Faoo_fdms_ocn > 0) then
- fldlist(index_Faoo_fdms_ocn)%dataptr(:) = 0._r8
- !$omp parallel do private(l, i, n)
- do j = 1, jjcpl
- do l = 1, isp(j)
- do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
- n = (j - 1)*ii + i
- fldlist(index_Faoo_fdms_ocn)%dataptr(n) = &
- acc_fbrf(i,j)*tfac*mod2med_areacor(n)
+#ifdef HAMOCC
+ if (index_So_dms > 0) then
+ if (associated(fldlist(index_So_dms)%dataptr)) then
+ fldlist(index_So_dms)%dataptr(:) = 0._r8
+ !$omp parallel do private(l, i, n)
+ do j = 1, jjcpl
+ do l = 1, isp(j)
+ do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
+ n = (j - 1)*ii + i
+ fldlist(index_So_dms)%dataptr(n) = ocetra(i,j,1,idms)
+ enddo
+ enddo
enddo
+ !$omp end parallel do
+ end if
+ end if
+
+ if (index_So_brf > 0) then
+ if (associated(fldlist(index_So_brf)%dataptr)) then
+ fldlist(index_So_brf)%dataptr(:) = 0._r8
+ !$omp parallel do private(l, i, n)
+ do j = 1, jjcpl
+ do l = 1, isp(j)
+ do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
+ n = (j - 1)*ii + i
+ fldlist(index_So_brf)%dataptr(n) = ocetra(i,j,1,ibromo)
+ enddo
+ enddo
enddo
- enddo
- !$omp end parallel do
- else
- if (mnproc == 1) &
- write(lp,*) subname//': dms flux not sent to coupler'
- endif
+ !$omp end parallel do
+ end if
+ end if
+#endif
! ------------------------------------------------------------------------
! Provide CO2 flux [kg CO2 m-2 s-1], if requested.
! ------------------------------------------------------------------------
- call getfldindex(fldlist_num, fldlist, 'Faoo_fco2_ocn', &
- index_Faoo_fco2_ocn)
-
- if (fco2_requested .and. index_Faoo_fco2_ocn > 0) then
- fldlist(index_Faoo_fco2_ocn)%dataptr(:) = 0._r8
- !$omp parallel do private(l, i, n)
- do j = 1, jjcpl
- do l = 1, isp(j)
- do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
- n = (j - 1)*ii + i
- fldlist(index_Faoo_fco2_ocn)%dataptr(n) = &
- acc_fco2(i,j)*tfac*mod2med_areacor(n)
- enddo
+ if (index_Faoo_fco2_ocn > 0) then
+ if (associated(fldlist(index_Faoo_fco2_ocn)%dataptr)) then
+ fldlist(index_Faoo_fco2_ocn)%dataptr(:) = 0._r8
+ !$omp parallel do private(l, i, n)
+ do j = 1, jjcpl
+ do l = 1, isp(j)
+ do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
+ n = (j - 1)*ii + i
+ fldlist(index_Faoo_fco2_ocn)%dataptr(n) = &
+ acc_fco2(i,j)*tfac*mod2med_areacor(n)
+ enddo
+ enddo
enddo
- enddo
- !$omp end parallel do
- else
- if (mnproc == 1) &
- write(lp,*) subname//': co2 flux not sent to coupler'
- endif
-
- ! ------------------------------------------------------------------------
- ! Provide bromoform flux [kg CHBr3 m-2 s-1], if requested.
- ! ------------------------------------------------------------------------
-
- call getfldindex(fldlist_num, fldlist, 'Faoo_fbrf_ocn', &
- index_Faoo_fbrf_ocn)
+ !$omp end parallel do
+ else
+ if (first_call) then
+ if (mnproc == 1 .and. first_call) &
+ write(lp,*) subname//': co2 flux not sent to coupler'
+ end if
+ endif
+ end if
- if (fbrf_requested .and. index_Faoo_fbrf_ocn > 0) then
- fldlist(index_Faoo_fbrf_ocn)%dataptr(:) = 0._r8
- !$omp parallel do private(l, i, n)
- do j = 1, jjcpl
- do l = 1, isp(j)
- do i = max(1, ifp(j,l)), min(ii, ilp(j,l))
- n = (j - 1)*ii + i
- fldlist(index_Faoo_fbrf_ocn)%dataptr(n) = &
- acc_fbrf(i,j)*tfac*mod2med_areacor(n)
- enddo
- enddo
- enddo
- !$omp end parallel do
- else
- if (mnproc == 1) &
- write(lp,*) subname//': bromoform flux not sent to coupler'
- endif
+ if (first_call) then
+ first_call = .false.
+ end if
tlast_coupled = 0._r8
diff --git a/drivers/nuopc/ocn_comp_nuopc.F90 b/drivers/nuopc/ocn_comp_nuopc.F90
index 086501e5..d7b44e3b 100644
--- a/drivers/nuopc/ocn_comp_nuopc.F90
+++ b/drivers/nuopc/ocn_comp_nuopc.F90
@@ -41,12 +41,12 @@ module ocn_comp_nuopc
use shr_file_mod, only: shr_file_getUnit, shr_file_getLogUnit, &
shr_file_setLogUnit
use shr_cal_mod, only : shr_cal_ymd2date
- use mod_nuopc_methods, only: fldlist_type, tlast_coupled, fco2_requested, &
- fdms_requested, fbrf_requested, &
+ use mod_nuopc_methods, only: fldlist_type, fldsMax, tlast_coupled, &
blom_logwrite, blom_getgindex, blom_checkmesh, &
blom_setareacor, blom_getglobdim, &
blom_getprecipfact, blom_accflds, &
- blom_importflds, blom_exportflds
+ blom_importflds, blom_exportflds, &
+ blom_advertise_imports, blom_advertise_exports
use mod_xc, only: mpicom_external, lp, nfu
use mod_cesm, only: runid_cesm, runtyp_cesm, ocn_cpl_dt_cesm
use mod_config, only: inst_index, inst_name, inst_suffix
@@ -62,7 +62,6 @@ module ocn_comp_nuopc
character(len=*), parameter :: u_FILE_u = &
__FILE__
- integer, parameter :: fldsMax = 100
integer :: fldsToOcn_num = 0
integer :: fldsFrOcn_num = 0
type(fldlist_type) :: fldsToOcn(fldsMax)
@@ -74,8 +73,7 @@ module ocn_comp_nuopc
integer :: flds_scalar_index_ny = 0
integer :: flds_scalar_index_precip_factor = 0
- logical :: ldriver_has_atm_co2_diag, ldriver_has_atm_co2_prog, &
- ocn2glc_coupling
+ logical :: ocn2glc_coupling, flds_dms_med
integer :: dbug = 0
logical :: profile_memory = .false.
@@ -88,42 +86,6 @@ module ocn_comp_nuopc
! Private procedures.
! ---------------------------------------------------------------------------
- subroutine fldlist_add(num, fldlist, stdname, &
- ungridded_lbound, ungridded_ubound)
- ! ---------------------------------------------------------------------------
- ! Add to list of field information.
- ! ---------------------------------------------------------------------------
-
- ! Input/output arguments.
- integer , intent(inout) :: num
- type(fldlist_type), intent(inout) :: fldlist(:)
- character(len=*) , intent(in) :: stdname
- integer, optional , intent(in) :: ungridded_lbound, ungridded_ubound
-
- ! Local parameters.
- character(len=*), parameter :: &
- subname = modname//':(fldlist_add)'
-
- ! Local variables.
- integer :: rc
-
- num = num + 1
- if (num > fldsMax) then
- call ESMF_LogSetError(ESMF_RC_VAL_OUTOFRANGE, &
- msg=subname//": ERROR number of field exceeded fldsMax: "// &
- trim(stdname), &
- line=__LINE__, file=__FILE__, rcToReturn=rc)
- return
- endif
- fldlist(num)%stdname = trim(stdname)
-
- if (present(ungridded_lbound) .and. present(ungridded_ubound)) then
- fldlist(num)%ungridded_lbound = ungridded_lbound
- fldlist(num)%ungridded_ubound = ungridded_ubound
- endif
-
- end subroutine fldlist_add
-
subroutine fldlist_realize(state, fldlist_num, fldlist, tag, mesh, rc)
! ---------------------------------------------------------------------------
! Realize list of import or export fields.
@@ -387,7 +349,8 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
integer :: localPet, nthrds, shrlogunit, n
character(len=cslen) :: starttype, stdname, cvalue, cname
character(len=cllen) :: msg
- logical :: isPresent, isSet, flds_co2a, flds_co2b, flds_co2c
+ logical :: isPresent, isSet
+ logical :: flds_co2a, flds_co2c
! Get debug flag.
call NUOPC_CompAttributeGet(gcomp, name='dbug_flag', value=cvalue, &
@@ -521,94 +484,25 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
trim(cvalue), ESMF_LOGMSG_INFO)
endif
- ! ------------------------------------------------------------------------
- ! Advertise import fields.
- ! ------------------------------------------------------------------------
-
- call fldlist_add(fldsToOcn_num, fldsToOcn, trim(flds_scalar_name))
-
- ! From ice:
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Si_ifrac')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_melth')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_meltw')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_salt')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_bcpho')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_bcphi')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Fioi_flxdst')
-
- ! From river:
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_rofl')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_rofi')
-
- ! From mediator:
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'So_duu10n')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_tauy')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_taux')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_lat')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_sen')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_lwup')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_evap')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Foxx_swnet')
-
- ! From wave:
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_lamult')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_ustokes')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_vstokes')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sw_hstokes')
-
- ! From atmosphere:
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_pslv')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_lwdn')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_snow')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Faxa_rain')
-
- ! From atm co2 fields:
-
+ ! Determine if co2 will be imported from mediator
call NUOPC_CompAttributeGet(gcomp, name='flds_co2a', value=cvalue, rc=rc)
if (ChkErr(rc, __LINE__, u_FILE_u)) return
read(cvalue,*) flds_co2a
call blom_logwrite(subname//': flds_co2a = '//trim(cvalue))
- call NUOPC_CompAttributeGet(gcomp, name='flds_co2b', value=cvalue, rc=rc)
- if (ChkErr(rc, __LINE__, u_FILE_u)) return
- read(cvalue,*) flds_co2b
- call blom_logwrite(subname//': flds_co2b = '//trim(cvalue))
-
call NUOPC_CompAttributeGet(gcomp, name='flds_co2c', value=cvalue, rc=rc)
if (ChkErr(rc, __LINE__, u_FILE_u)) return
read(cvalue,*) flds_co2c
call blom_logwrite(subname//': flds_co2c = '//trim(cvalue))
- if (flds_co2a .or. flds_co2c) then
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_co2diag')
- call fldlist_add(fldsToOcn_num, fldsToOcn, 'Sa_co2prog')
- ldriver_has_atm_co2_prog = .true.
- ldriver_has_atm_co2_diag = .true.
- else
- ldriver_has_atm_co2_prog = .false.
- ldriver_has_atm_co2_diag = .false.
- endif
-
- !TODO Determine if will get nitrogen deposition from atm
-
- do n = 1,fldsToOcn_num
- call NUOPC_Advertise(importState, standardName=fldsToOcn(n)%stdname, &
- TransferOfferGeomObject='will provide', rc=rc)
- if (ChkErr(rc, __LINE__, u_FILE_u)) return
- enddo
-
- ! ------------------------------------------------------------------------
- ! Advertise export fields.
- ! ------------------------------------------------------------------------
-
! Determine if ocn is sending temperature and salinity data to glc
+ ! If data is sent to glc will need to determine number of ocean
+ ! levels and ocean level indices
call NUOPC_CompAttributeGet(gcomp, name="ocn2glc_coupling", value=cvalue, rc=rc)
if (ChkErr(rc, __LINE__, u_FILE_u)) return
read(cvalue,*) ocn2glc_coupling
write(msg,'(a,l1)') subname//': ocn2glc coupling is ', ocn2glc_coupling
call blom_logwrite(msg)
-
- ! Determine number of ocean levels and ocean level indices
if (ocn2glc_coupling) then
call ESMF_LogSetError(ESMF_RC_NOT_IMPL, &
msg=subname//": ocn2glc coupling not implemented", &
@@ -616,17 +510,26 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
return
endif
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, trim(flds_scalar_name))
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_omask')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_t')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_u')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_v')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_s')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_dhdx')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_dhdy')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'So_bldepth')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'Fioo_q')
- call fldlist_add(fldsFrOcn_num, fldsFrOcn, 'Faoo_fco2_ocn')
+ !NOTE: Nitrogen deposition is always sent from atm now (either CAM or DATM)
+
+ ! ------------------------------------------------------------------------
+ ! Advertise import fields.
+ ! ------------------------------------------------------------------------
+
+ call blom_advertise_imports(flds_scalar_name, fldsToOcn_num, fldsToOcn, &
+ flds_co2a, flds_co2c)
+
+ do n = 1,fldsToOcn_num
+ call NUOPC_Advertise(importState, standardName=fldsToOcn(n)%stdname, &
+ TransferOfferGeomObject='will provide', rc=rc)
+ if (ChkErr(rc, __LINE__, u_FILE_u)) return
+ enddo
+
+ ! ------------------------------------------------------------------------
+ ! Advertise export fields.
+ ! ------------------------------------------------------------------------
+
+ call blom_advertise_exports(flds_scalar_name, fldsFrOcn_num, fldsFrOcn)
do n = 1,fldsFrOcn_num
call NUOPC_Advertise(exportState, standardName=fldsFrOcn(n)%stdname, &
@@ -786,19 +689,6 @@ subroutine DataInitialize(gcomp, rc)
call ESMF_GridCompGet(gcomp, exportState=exportState, rc=rc)
if (ChkErr(rc, __LINE__, u_FILE_u)) return
- ! ------------------------------------------------------------------------
- ! Check whether non-standard export fields are present.
- ! ------------------------------------------------------------------------
-
- call ESMF_StateGet(exportState, 'Faoo_fco2_ocn', itemType)
- fco2_requested = (itemType /= ESMF_STATEITEM_NOTFOUND)
-
- call ESMF_StateGet(exportState, 'Faoo_fdms_ocn', itemType)
- fdms_requested = (itemType /= ESMF_STATEITEM_NOTFOUND)
-
- call ESMF_StateGet(exportState, 'Faoo_fbrf_ocn', itemType)
- fbrf_requested = (itemType /= ESMF_STATEITEM_NOTFOUND)
-
! ------------------------------------------------------------------------
! TODO
! ------------------------------------------------------------------------
diff --git a/hamocc/carchm.F90 b/hamocc/carchm.F90
index f0563983..6fdcddd3 100644
--- a/hamocc/carchm.F90
+++ b/hamocc/carchm.F90
@@ -20,7 +20,8 @@
SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
pdlxp,pdlyp,pddpo,prho,pglat,omask, &
- psicomo,ppao,pfu10,ptho,psao)
+ psicomo,ppao,pfu10,ptho,psao, &
+ pflxdms,pflxbromo)
!******************************************************************************
!
!**** *CARCHM* - .
@@ -88,6 +89,8 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
! *REAL* *pfu10* - forcing field wind speed.
! *REAL* *ptho* - potential temperature.
! *REAL* *psao* - salinity [psu].
+! *REAL* *pflxdms* - input dms flux that is already computed
+! *REAL* *pflxbromo* - input bromo flux that is already computed
!
! Externals
! ---------
@@ -98,14 +101,12 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
pco2m,kwco2d,co2sold,co2solm
use mo_chemcon, only: al1,al2,al3,al4,an0,an1,an2,an3,an4,an5,an6,atn2o,bl1,bl2,bl3,calcon,ox0,ox1,ox2,ox3,ox4,ox5,ox6, &
& oxyco,tzero
- use mo_control_bgc, only: dtbgc
+ use mo_control_bgc, only: dtbgc,do_bgc_aofluxes
use mo_param1_bgc, only: ialkali,iatmo2,iatmco2,iatmdms,iatmn2,iatmn2o,ian2o,icalc,idicsat,idms,igasnit,ioxygen,iphosph, &
& isco212,isilica
use mo_vgrid, only: dp_min,kmle,kbo,ptiestu
-#ifdef BROMO
use mo_param1_bgc, only: iatmbromo,ibromo
-#endif
#ifdef CFC
use mo_carbch, only: atm_cfc11_nh,atm_cfc11_sh,atm_cfc12_nh,atm_cfc12_sh,atm_sf6_nh,atm_sf6_sh
use mo_param1_bgc, only: iatmf11,iatmf12,iatmsf6,icfc11,icfc12,isf6
@@ -118,7 +119,6 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
use mo_carbch, only: atm_co2_nat,nathi,natco3,natpco2d,natomegaa,natomegac
use mo_param1_bgc, only: iatmnco2,inatalkali,inatcalc,inatsco212
#endif
-
implicit none
INTEGER, intent(in) :: kpie,kpje,kpke,kbnd
@@ -133,6 +133,8 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
REAL, intent(in) :: pfu10(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
REAL, intent(in) :: ptho(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd,kpke)
REAL, intent(in) :: psao(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd,kpke)
+ REAL, intent(in) :: pflxdms(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
+ REAL, intent(in) :: pflxbromo(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
! Local variables
INTEGER :: i,j,k,l,js
@@ -167,9 +169,7 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
REAL :: atco213,atco214,pco213,pco214
REAL :: frac_k,frac_aqg,frac_dicg
#endif
-#ifdef BROMO
REAL :: flx_bromo,sch_bromo,kw_bromo,a_bromo,atbrf,Kb1,lsub
-#endif
! set variables for diagnostic output to zero
atmflx (:,:,:)=0.
@@ -216,9 +216,7 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
!$OMP ,atco213,atco214,rco213,rco214,pco213,pco214,frac_aqg &
!$OMP ,frac_dicg,flux13d,flux13u,flux14d,flux14u,dissol13,dissol14 &
#endif
-#ifdef BROMO
!$OMP ,flx_bromo,sch_bromo,kw_bromo,a_bromo,atbrf,Kb1,lsub &
-#endif
!$OMP ,j,i)
DO k=1,kpke
DO j=1,kpje
@@ -362,7 +360,7 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
! Stemmler et al. (2015; Biogeosciences) Eq. (8)
! 1.e-2/3600 = conversion from [cm hr-1]/[m s-1]^2 to [ms-1]/[m s-1]^2
kw_bromo=(1.-psicomo(i,j)) * 1.e-2/3600. * &
- & (0.222*pfu10(i,j)**2+0.33*pfu10(i,j))*(660./sch_bromo)**0.5
+ & (0.222*pfu10(i,j)**2+0.33*pfu10(i,j))*(660./sch_bromo)**0.5
#endif
atco2 = atm(i,j,iatmco2)
@@ -474,8 +472,15 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
#endif
! Surface flux of dms
- dmsflux = kwdms*dtbgc*ocetra(i,j,1,idms)
- ocetra(i,j,1,idms)=ocetra(i,j,1,idms)-dmsflux/pddpo(i,j,1)
+ if (do_bgc_aofluxes) then
+ ! Note that kwdms already has the open ocean fraction in the term
+ dmsflux = kwdms*dtbgc*ocetra(i,j,1,idms)
+ else
+ dmsflux = -dtbgc*pflxdms(i,j)
+ end if
+ ocetra(i,j,1,idms) = ocetra(i,j,1,idms) - dmsflux/pddpo(i,j,1)
+ atmflx(i,j,iatmdms) = dmsflux ! positive to atmosphere [kmol dms m-2 timestep-1]
+
#ifdef BROMO
! Quack and Wallace (2003) eq. 1
! flux = kw*(Cw - Ca/H) ; kw[m s-1]; Cw[kmol m-3];
@@ -483,18 +488,26 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
! [pptv] to [ppp] by multiplying with 1e-12 (ppp = parts per part, dimensionless)
! [ppp] to [mol L-1] by multiplying with pressure[bar]/(SST[K]*R[L bar K-1 mol-1]); R=0,083
! [mol L-1] to [kmol m-3] by multiplying with 1
- flx_bromo=kw_bromo*dtbgc* &
- & (atbrf/a_bromo*1e-12*ppao(i,j)*1e-5/(tk*0.083) - ocetra(i,j,1,ibromo))
- ocetra(i,j,1,ibromo)=ocetra(i,j,1,ibromo)+flx_bromo/pddpo(i,j,1)
-#endif
+ if (do_bgc_aofluxes) then
+ flx_bromo = kw_bromo*dtbgc* &
+ (atbrf/a_bromo*1e-12*ppao(i,j)*1e-5/(tk*0.083) - ocetra(i,j,1,ibromo))
+ else
+ ! Note that the external computation of fluxes is -flx_bromo/dtbgc
+ ! using above computation of flx_bromo
+ ! So need to divide by 252.7 and multiply by -dtbgc and in order to use this
+ ! for the tendency in the tracer update
+ flx_bromo = dtbgc*pflxbromo(i,j)
+ end if
+ ocetra(i,j,1,ibromo) = ocetra(i,j,1,ibromo) + flx_bromo/pddpo(i,j,1)
+ atmflx(i,j,iatmbromo) = -flx_bromo
+#endif
! Save surface fluxes
atmflx(i,j,iatmco2)=fluxu-fluxd
atmflx(i,j,iatmo2)=oxflux
atmflx(i,j,iatmn2)=niflux
atmflx(i,j,iatmn2o)=n2oflux
- atmflx(i,j,iatmdms)=dmsflux ! positive to atmosphere [kmol dms m-2 timestep-1]
#ifdef cisonew
atmflx(i,j,iatmc13)=flux13u-flux13d
atmflx(i,j,iatmc14)=flux14u-flux14d
@@ -507,9 +520,6 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
#ifdef natDIC
atmflx(i,j,iatmnco2)=natfluxu-natfluxd
#endif
-#ifdef BROMO
- atmflx(i,j,iatmbromo)=-flx_bromo
-#endif
! Save up- and downward components of carbon fluxes for output
co2fxd(i,j) = fluxd
@@ -536,11 +546,12 @@ SUBROUTINE CARCHM(kpie,kpje,kpke,kbnd, &
co2solm(i,j) = Kh ! mol/kg/atm
endif ! k==1
+
#ifdef BROMO
! Degradation to hydrolysis (Eq. 2-4 of Stemmler et al., 2015)
! A1=1.23e17 mol min-1 => 2.05e12 kmol sec-1
- Kb1=2.05e12*exp(-1.073e5/(8.314*tk))*dtbgc
- ocetra(i,j,k,ibromo)=ocetra(i,j,k,ibromo)*(1.-(Kb1*Kw/ah1))
+ Kb1=2.05e12*exp(-1.073e5/(8.314*tk))*dtbgc
+ ocetra(i,j,k,ibromo)=ocetra(i,j,k,ibromo)*(1.-(Kb1*Kw/ah1))
! Degradation to halogen substitution (Eq. 5-6 of Stemmler et al., 2015)
lsub=7.33e-10*exp(1.250713e4*(1/298.-1/tk))*dtbgc
ocetra(i,j,k,ibromo)=ocetra(i,j,k,ibromo)*(1.-lsub)
diff --git a/hamocc/hamocc4bcm.F90 b/hamocc/hamocc4bcm.F90
index f503b524..19d9fdbc 100644
--- a/hamocc/hamocc4bcm.F90
+++ b/hamocc/hamocc4bcm.F90
@@ -19,7 +19,7 @@
SUBROUTINE HAMOCC4BCM(kpie,kpje,kpke,kbnd,kplyear,kplmon,kplday,kldtday,&
pdlxp,pdlyp,pddpo,prho,pglat,omask, &
- dust,rivin,ndep,oafx,pi_ph, &
+ dust,rivin,ndep,oafx,pi_ph, &
pfswr,psicomo,ppao,pfu10,ptho,psao, &
patmco2,pflxco2,pflxdms,patmbromo,pflxbromo)
!******************************************************************************
@@ -125,9 +125,13 @@ SUBROUTINE HAMOCC4BCM(kpie,kpje,kpke,kbnd,kplyear,kplmon,kplday,kldtday,&
REAL, intent(in) :: psao (1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd,kpke)
REAL, intent(in) :: patmco2(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
REAL, intent(out) :: pflxco2(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
- REAL, intent(out) :: pflxdms(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
- REAL, intent(in) :: patmbromo(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
- REAL, intent(out) :: pflxbromo(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
+ REAL, intent(inout) :: pflxdms(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
+ REAL, intent(in) :: patmbromo(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
+ REAL, intent(inout) :: pflxbromo(1-kbnd:kpie+kbnd,1-kbnd:kpje+kbnd)
+
+ ! NOTE - why are some arguments intent(inout)?
+ ! If compute_flxdms is .true. then pflxdms will be computed in carchm.F90
+ ! If compute_flxdms is .false. then pflxdms is obtained external to blom
INTEGER :: i,j,k,l
INTEGER :: nspin,it
@@ -266,9 +270,9 @@ SUBROUTINE HAMOCC4BCM(kpie,kpje,kpke,kbnd,kplyear,kplmon,kplday,kldtday,&
CALL INVENTORY_BGC(kpie,kpje,kpke,pdlxp,pdlyp,pddpo,omask,0)
#endif
-
CALL CARCHM(kpie,kpje,kpke,kbnd,pdlxp,pdlyp,pddpo,prho,pglat,omask, &
- psicomo,ppao,pfu10,ptho,psao)
+ psicomo,ppao,pfu10,ptho,psao,&
+ pflxdms,pflxbromo)
#ifdef PBGC_CK_TIMESTEP
IF (mnproc.eq.1) THEN
diff --git a/hamocc/mo_control_bgc.F90 b/hamocc/mo_control_bgc.F90
index c7058aa5..f15b6b45 100644
--- a/hamocc/mo_control_bgc.F90
+++ b/hamocc/mo_control_bgc.F90
@@ -66,6 +66,8 @@ MODULE mo_control_bgc
LOGICAL, save :: do_oalk =.false. ! apply ocean alkalinization
logical, save :: with_dmsph =.false. ! apply DMS with pH dependence
+ logical, save :: do_bgc_aofluxes = .true. ! If true, atm/ocn bgc fluxes are computed within HAMOCC
+
contains
subroutine get_bgc_namelist