[MITgcm-support] Using OBCS in a 1D model setup

Nicholas Rogan nrogan at geomar.de
Wed Mar 11 12:53:08 EDT 2015


Hi all,

I have recently been using a 1D model setup to explore the effects of different aerosol depositions on a water column ~ 500m deep.

Previously the model was set up with closed boundaries and was not a closed system (removal out of the base of the water column is gradually draining the conserved tracers).

For a more robust model I wanted to add open boundaries on all of the faces of my single column, for which I have diagnosed time varying daily T, S, U, V and six ptracers from a Global 3D model field. 

I am now trying to implement these velocity fields and tracer concentrations in order to have the diagnosed fluxes at the boundaries of my model.

The model output from my run with closed boundaries and run with open boundaries is drastically different and I’m not convinced it is solely down to the change in dynamics. 
I’d greatly appreciate if anyone could have a quick look at my input data files and identify an obvious error, or tell me if using OBCS with a model with a horizontal grid size of 1 x 1 is possible? 
I’ve thought that I might have to change to a 3 x 3 grid and have the central grid point as the single water column? 
Or maybe the daily OBCS fields period/cycles do not match with the half hour time step?

I’ve provided my SIZE.h, data, data.exf and data.obcs files.

Look forward to hearing from someone!

Nick

SIZE.h          ###################################################################################################################

C $Header: /u/gcmpack/MITgcm/verification/1D_ocean_ice_column/code/SIZE.h,v 1.2 2011/06/23 17:59:16 ifenty Exp $
C $Name: checkpoint65h $

C
CBOP
C    !ROUTINE: SIZE.h
C    !INTERFACE:
C    include SIZE.h
C    !DESCRIPTION: \bv
C     *==========================================================*
C     | SIZE.h Declare size of underlying computational grid.
C     *==========================================================*
C     | The design here support a three-dimensional model grid
C     | with indices I,J and K. The three-dimensional domain
C     | is comprised of nPx*nSx blocks of size sNx along one axis
C     | nPy*nSy blocks of size sNy along another axis and one
C     | block of size Nz along the final axis.
C     | Blocks have overlap regions of size OLx and OLy along the
C     | dimensions that are subdivided.
C     *==========================================================*
C     \ev
CEOP
C     Voodoo numbers controlling data layout.
C     sNx :: No. X points in sub-grid.
C     sNy :: No. Y points in sub-grid.
C     OLx :: Overlap extent in X.
C     OLy :: Overlat extent in Y.
C     nSx :: No. sub-grids in X.
C     nSy :: No. sub-grids in Y.
C     nPx :: No. of processes to use in X.
C     nPy :: No. of processes to use in Y.
C     Nx  :: No. points in X for the total domain.
C     Ny  :: No. points in Y for the total domain.
C     Nr  :: No. points in Z for full process domain.
      INTEGER sNx
      INTEGER sNy
      INTEGER OLx
      INTEGER OLy
      INTEGER nSx
      INTEGER nSy
      INTEGER nPx
      INTEGER nPy
      INTEGER Nx
      INTEGER Ny
      INTEGER Nr
      PARAMETER (
     &           sNx =   1,
     &           sNy =   1,
     &           OLx =   3,
     &           OLy =   3,
     &           nSx =   1,
     &           nSy =   1,
     &           nPx =   1,
     &           nPy =   1,
     &           Nx  = sNx*nSx*nPx,
     &           Ny  = sNy*nSy*nPy,
     &           Nr  =  23)

C     MAX_OLX  - Set to the maximum overlap region size of any array
C     MAX_OLY    that will be exchanged. Controls the sizing of exch
C                routine buufers.
      INTEGER MAX_OLX
      INTEGER MAX_OLY
      PARAMETER ( MAX_OLX = OLx,
     &            MAX_OLY = OLy )

      integer     nobcs
      parameter ( nobcs = 4 )

data          ###################################################################################################################

# ====================
# | Model parameters |
# ====================
#
# Continuous equation parameters
 &PARM01
 tRef=23*20.,
 sRef=23*35.,
 viscA4=0.,
 viscAh=5.E5,
 diffKhT=0.E3,
 diffKhS=0.E3,
 viscAz=1.E-3,
 diffKzT=5.E-5,
 diffKzS=5.E-5,
 rotationPeriod=86400.,
# beta=1.E-11,
# f0=1.e-4,
 tAlpha=2.E-4,
 sBeta =7.4E-4,
 gravity=9.81,
 gBaro=9.81,
 rhonil=1035.,
 rigidLid=.FALSE.,
 implicitFreeSurface=.TRUE.,
 eosType='JMD95Z',
 implicitDiffusion=.TRUE.,
 implicitViscosity=.TRUE.,
 ivdc_kappa=0.,
 tempAdvection   =.FALSE.,
 saltAdvection   =.FALSE.,
 momAdvection    =.FALSE.,
 tempAdvScheme       = 2,
 saltAdvScheme       = 2,
 tempStepping        = .TRUE.,
 saltStepping        = .TRUE.,
 multiDimAdvection   = .FALSE.,
 allowFreezing=.TRUE.,
 useCDscheme=.FALSE.,
 useSingleCpuIO = .TRUE.,
 &

# Elliptic solver parameters
 &PARM02
 cg2dMaxIters=1000,
 cg2dTargetResidual=1.E-13,
 &

# Time stepping parameters
 &PARM03
 pickupStrictlyMatch = .FALSE.,
startTime = 0.,
# nIter0 = 20412000,
# nIter0 = 0,
# nTimeSteps = 20, 1yr =720 (43200s = 12hrs * 360 d/yr)
 nTimeSteps =8760,
# tauCD =     321428.,
 deltaTtracer= 3600.,
 deltaTClock = 3600.,
 abEps = 0.1,
 cAdjFreq = 0,
 abEps = 0.1,
 tracForcingOutAB=1,
# These are 1 year averages, followed by monthly 2592000
#    There are also 5 or 1 day : 432000 / 86400
  pChkptFreq = 432000.,
#  chkptFreq = 432000.,
  dumpFreq = 21600.,
#  taveFreq = 43200.,
#  pChkptFreq = 2592000.,
#  chkptFreq = 2592000.,
#  dumpFreq = 2592000.
#  taveFreq = 2592000.,
#  pChkptFreq = 86400.,
#  chkptFreq = 86400.,
#  dumpFreq = 86400.,
#  taveFreq = 86400.,
 monitorFreq = 1.,
 tauThetaClimRelax = 5184000.0,
 tauSaltClimRelax = 7776000.0,
 periodicExternalForcing=.TRUE.,
 externForcingPeriod = 2592000.,
 externForcingCycle = 31104000.,
 &

# Gridding parameters
 &PARM04
 usingCartesianGrid=.TRUE.,
 dXspacing=5000.,
 dYspacing=5000.,
# usingSphericalPolarGrid=.TRUE.,
# delX=1*2.E0,
# delY=1*2.E0,
 delZ   = 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.01,
 10.03, 10.11, 10.32, 10.80, 11.76, 13.42, 16.04 , 19.82, 24.85,
 31.10, 38.42, 46.50, 55.00, 63.50, 71.58,
# ygOrigin=65.,
# xgOrigin=280.,
# rSphere = 6371.D3,
 &

# Input datasets
 &PARM05
 bathyFile = 'bathy_1x1_1105m_testpool',
 hydrogThetaFile = 'lev_clim_temp.bin',
 hydrogSaltFile = 'lev_clim_salt.bin',
 zonalWindFile ='tren_taux.bin',
 meridWindFile = 'tren_tauy.bin',
 thetaClimFile = 'lev_monthly_temp.bin',
 saltClimFile = 'lev_monthly_salt.bin',
 surfQFile = 'shi_qnet.bin',
 EmPmRFile = 'shi_empmr_year.bin',
 the_run_name = 'nr_obcstest',
 &

data.exf          ###################################################################################################################

#
# *********************
# External Forcing Data
# *********************
 &EXF_NML_01
#
 useExfCheckRange  = .TRUE.,
 repeatPeriod      = 31622400.0,
 exf_iprec         = 32,
#
 &

# *********************
 &EXF_NML_02
#
 hfluxstartdate1   = 19781216,
 hfluxstartdate2   = 180000,
 hfluxperiod       = 2635200.0,
#
 sfluxstartdate1   = 19781216,
 sfluxstartdate2   = 180000,
 sfluxperiod       = 2635200.0,
#
 ustressstartdate1 = 19781216,
 ustressstartdate2 = 180000,
 ustressperiod     = 2635200.0,
#
 vstressstartdate1 = 19781216,
 vstressstartdate2 = 180000,
 vstressperiod     = 2635200.0,
#
 atempstartdate1   = 19781216,
 atempstartdate2   = 180000,
 atempperiod       = 2635200.0,
 atempperiod       = 86400.0,
#
 aqhstartdate1     = 19781216,
 aqhstartdate2     = 180000,
 aqhperiod         = 2635200.0,
#
#evapstartdate1    = 19781216,
#evapstartdate2    = 180000,
#evapperiod        = 2635200.0,
#
 precipstartdate1  = 19781216,
 precipstartdate2  = 180000,
 precipperiod      = 2635200.0,
#
 uwindstartdate1   = 19781216,
 uwindstartdate2   = 180000,
 uwindperiod       = 2635200.0,
#
 vwindstartdate1   = 19781216,
 vwindstartdate2   = 180000,
 vwindperiod       = 2635200.0,
#
 swfluxstartdate1  = 19781216,
 swfluxstartdate2  = 180000,
 swfluxperiod      = 2635200.0,
#
 lwfluxstartdate1  = 19781216,
 lwfluxstartdate2  = 180000,
 lwfluxperiod      = 2635200.0,
#
 swdownstartdate1  = 19781216,
 swdownstartdate2  = 180000,
 swdownperiod      = 2635200.0,
 swdownperiod = 86400.0,
#
 lwdownstartdate1  = 19781216,
 lwdownstartdate2  = 180000,
 lwdownperiod      = 2635200.0,
 lwdownperiod = 86400.0,
#
# climsststartdate1  = 19781216,
# climsststartdate2  = 180000,
# climsstperiod      = 2635200.0,
# climsstTauRelax    = 0.0,
#
# climsssstartdate1  = 19781216,
# climsssstartdate2  = 180000,
# climsssperiod      = 2635200.0,
# climsssTauRelax    = 4142330.0,
#
 hfluxfile         = ' ',
 sfluxfile         = ' ',
 ustressfile       = ' ',
 vstressfile       = ' ',
 atempfile         ='atempp_1x1_one_year',
 lwdownfile        ='dlwrf_1x1_one_year',
 swdownfile        ='dswrf_1x1_one_year',
 uwindfile         ='u_1ms_1x1_one_year',
 vwindfile         ='u_1ms_1x1_one_year',
 lwfluxfile        = ' ',
 swfluxfile        = ' ',
 runoffFile        = ' '
 &

# *********************
 &EXF_NML_03
 &

# *********************
# &EXF_NML_04
 
# *********************
 &EXF_NML_OBCS
 obcsSstartdate1   = 19790101,
 obcsSstartdate2   = 000000,
 obcsSperiod       = 31536000.0,
#
 obcsNstartdate1   = 19790101,
 obcsNstartdate2   = 000000,
 obcsNperiod       = 31536000.0,
#
 obcsWstartdate1   = 19790101,
 obcsWstartdate2   = 000000,
 obcsWperiod       = 31536000.0,
#
 obcsEstartdate1   = 19790101,
 obcsEstartdate2   = 000000,
 obcsEperiod       = 31536000.0,
#
# siobSstartdate1   = 19790101,
# siobSstartdate2   = 000000,
# siobSperiod       = 3600.0,
#
# siobNstartdate1   = 19790101,
# siobNstartdate2   = 000000,
# siobNperiod       = 3600.0,
#
# siobWstartdate1   = 19790101,
# siobWstartdate2   = 000000,
# siobWperiod       = 3600.0,
 &

data.obcs          ###################################################################################################################

# Open-boundaries
 &OBCS_PARM01
# This flag turns off checking and fixing problematic topography across 
# open boundaries.
 OBCSfixTopo=.FALSE.,
 OB_Jnorth= 2,
 OB_Jsouth= 1,
 OB_Ieast = 2,
 OB_Iwest = 1,
 useOBCSprescribe = .TRUE.,
 OBNvFile = 'OBNv.bin',
 OBSvFile = 'OBSv.bin',

 OBEuFile = 'OBEu.bin',
 OBWuFile = 'OBWu.bin',

 OBNtFile = 'OBNt.bin',
 OBStFile = 'OBSt.bin',
 OBEtFile = 'OBEt.bin',
 OBWtFile = 'OBWt.bin', 
 OBNsFile = 'OBNs.bin',
 OBSsFile = 'OBSs.bin',
 OBEsFile = 'OBEs.bin',
 OBWsFile = 'OBWs.bin', 

 OBNptrFile(1) = 'OBNdic.bin',
 OBNptrFile(2) = 'OBNalk.bin',
 OBNptrFile(3) = 'OBNpo4.bin',
 OBNptrFile(4) = 'OBNdop.bin',
 OBNptrFile(5) = 'OBNo2.bin',
 OBNptrFile(6) = 'OBNfe.bin',
 OBSptrFile(1) = 'OBSdic.bin',
 OBSptrFile(2) = 'OBSalk.bin', 
 OBSptrFile(3) = 'OBSpo4.bin',
 OBSptrFile(4) = 'OBSdop.bin',
 OBSptrFile(5) = 'OBSo2.bin',
 OBSptrFile(6) = 'OBSfe.bin',
 OBEptrFile(1) = 'OBEdic.bin',
 OBEptrFile(2) = 'OBEalk.bin',
 OBEptrFile(3) = 'OBEpo4.bin',
 OBEptrFile(4) = 'OBEdop.bin',
 OBEptrFile(5) = 'OBEo2.bin',
 OBEptrFile(6) = 'OBEfe.bin',
 OBWptrFile(1) = 'OBWdic.bin',  
 OBWptrFile(2) = 'OBWalk.bin',  
 OBWptrFile(3) = 'OBWpo4.bin',  
 OBWptrFile(4) = 'OBWdop.bin',  
 OBWptrFile(5) = 'OBWo2.bin',  
 OBWptrFile(6) = 'OBWfe.bin',  
 OBCS_monitorFreq= 1200.,
 OBCS_monSelect = 1,
 &

# Orlanski parameters
 &OBCS_PARM02
#Cmax=0.45,
#cVelTimeScale=1000.,
 &






More information about the MITgcm-support mailing list