[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