module var use const implicit real*8 (a-h,o-z) real*8 :: totalvol,totalvol_sfc,totals,totals_sfc,totalt,totalt_sfc real*8 :: totalvol1 real*8,dimension(i0,j0,k1) :: volume real*8 :: saltotal_tendency !======================== ! "a" grid arrays !======================== !from common/bglo/ real*8 :: westdeg !identify west-boundary degree for each proc. real*8, dimension(j2) :: & tanphi,f !for coriolis coeff !!!! seems like a reduntant variable here ! real*8, dimension(k1) :: & ! sumin !???? real*8, dimension(i0,j0) :: & px,py,p0, &!surf_pressure p01,p02,p0lf !arrays for ice_formation, p01=p02=p0lf currently real*8, dimension(i0,j0,k1) :: & rho,p,plf, &!density and ocn pressure u1,u2,ulf, &!zonal velocity v1,v2,vlf, &!meridional velocity s1,s2,slf, &!ocean salinity t1,t2,tlf, &!ocean temperature c1,c2,clf !ChloroFluoroCarbons(CFC) real*8, dimension(i2,j2,k2) :: & ev,hv,vdcs,vdct !vertical mixing coeff.array !============== !c-grid arrays !============== !from common/cgridglo/,/tavgglo/,/klimatglo/ real*8, dimension(i0,j0,k1) :: & u,v !horizontal velocity real*8, dimension(i0,j0,k0) :: & w !vertical velocity real*8, dimension(i0,j0,k1) :: & sbar,tbar !salinity, temperature avg. field real*8, dimension(i0,j0) :: & pbar,pvar,xbar, &!pressure avg. devi. field ucli,vcli,rmsv !u,v climatological field real*8 :: fnew,fold !ratio for interpolation between months integer :: new,nld !month indices for climatology !================================================ ! logical depth kb and associated masking arrays !================================================ !from common/bathyglo/ integer*2,dimension(i0,j0) :: kb !depth Z-indices integer*2,dimension(0:i01,j0) :: iu0 !u,surface mask integer*2,dimension(i0,0:j0) :: iv0 !v,surface mask integer*2,dimension(0:i01,j0,k1) :: iu !u mask integer*2,dimension(i0,0:j0,k1) :: iv !v mask integer*2,dimension(i0,j0,k0) :: iw !w mask integer*2,dimension(i0,j0,k1) :: in !domain maskk integer*2,dimension(i2,j2) :: ibred !======================================== ! user-defined scalar control parameters !======================================== !from common/controglo/,/metricglo/ real*8 :: qsum,olde,oldq,dt,tlz,b,g,dm0,de0,dmz0,rzmx,drag, & fltw,av,avn,daodt,taudt,taudtn,rawf logical :: lhires real*8 :: evap,epcomp integer :: ktrm,mvi,mxit,isav,mxsav,lrstrt,lopen,lturb,lwind,lheat,& lsol,lmovi,lfsrf,lsolver,lprecon,navg real*8, dimension(i0) :: xdeg !zonal degree real*8, dimension(k1) :: a real*8, dimension(j0) :: & y,ydeg,yv,yvdeg, &!meridional degree cs,ocs, &! dx,odx,dy,ody !dx,dy real*8, dimension(j1) :: & csv,ocsv, & dxv,odxv,dyv,odyv !================= ! derived scalars !================= !from common/scaglo/ real*8 :: odt,prn,orzmx,ofltw,watts real*8 :: days,syng_days integer :: n365,nyr,nmon,itf,it0,itfday,nocn real*8, dimension(12) :: dmonth(12) = (/31.,28.,31.,30.,31.,30., & 31.,31.,30.,31.,30.,31./) real*8, dimension(12) :: ttmon,epday !================ ! scratch arrays !================ !from common/scratchglo/ real*8,dimension(i0,j0,k0+1) :: scr !============================================================ ! sevp elliptic solver arrays ! sevp subregion boundary array "ie" is a user-defined array !============================================================ !from common/sevp/,/bicg/ real*8, dimension(ibir) :: dum1 real*8, dimension(i0) :: dum2 real*8, dimension(i2t) :: dumg integer, dimension(nb0) :: ie real*8, dimension(i0,j0) :: & x,cgr,cgrh,cgp,cgph, & cgv,cgt,cgs,cgsh real*8, dimension(i2,j2) :: & al,ab,ac,ar, & cl,cb,cc,cr,ct,s real*8, dimension(i2,0:j2) :: at real*8, dimension(i0,nb0) :: dum0 real*8, dimension(ibir,i0,nbg0):: rinv real*8, dimension(ibir,i0,nbg1):: rinv1 !===================================================== ! vertical grid arrays ! "z" array contains cell center and interface depths !===================================================== !from common/zfsglo/,/bred/,/grdglo/,/fullopt/,/filterglo/,/timer/,/nudging/ real*8, dimension(k0) :: odzw real*8, dimension(k1) :: odz real*8, dimension(k0+k1) :: z real*8 :: bf1,bf2,bflf real*8 :: dtmp,dsum integer :: lbred = 0 integer :: nopt real*8 :: wopt character grd*7,filename*16 integer, dimension(2) :: & ijlo,ijhi !check max and min value real*8, dimension(31) :: & timer = 0. !MPI_time array real*8, dimension(i0,j0,k1) :: & dmx,dmy !filterglo integer*2, dimension(i0,j0,k1):: & infx,infy !filterglo !!!!! seems like some reduntant variables here ! real*8, dimension(i0,j0,k1) :: & ! ule,vle,wle, & ! tle,sle,ple,pot real*8, dimension(i0,j0) :: & t_nudge,s_nudge !nudging arrays real*8, dimension(i0,j0,k0) :: & hmean_nudge !nudging array character sys1*30,sys2*22,sys3*80,sys4*80 character case*5,dscrib*63 !============= !climate data !============= !from common/climatglo/,/windsglo/,/heatglo/,/evapglo/,/outprec/,/windmxglo/ ! /xymeansglo/,/tauglo/,/blank/,/flxglo/,/vmix_source/,/workvar/ real*8 :: t_nudstr,s_nudstr integer, dimension(12) :: nsombo real*8, dimension(i2,j2) :: tnudge,tnud_tmp,snudge,snud_tmp real*8, dimension(i0,j0) :: epsrc, tkli_cesm real*8, dimension(i2,j2,12) :: & qavg,wavg,qtmp,wtmp !deviation array from climatology real*8, dimension(i0,j0,k1) :: & tclim,sclim !temp for climatology data real*8, dimension(i0,j0,k1,12):: & tclis,sclis !climatology array real*8, dimension(i2,j2,12) :: & taux,tauy,qsw !sea surface stresses, solar radiation !real*8, dimension(i2,j2,12) :: & ! qdottmp,qdot2tmp,prectmp,evaptmp,salttmp real*8, dimension(i2,j2) :: & tauxx,tauyy, & lath,senh, &!latent heat and sensible heat flux qdot,qdot2, &!total heat flux and solar flux evapo,prec, &!evaporation and precipitation mass flux salt,qflx, &!salt flux and ice_formation heat flux rain,snow, &!rain and snow mass flux roff,ioff, &!run-off mass flux melt,melth, &!ice_melt mass and heat flux lwup,lwdn,lwnet, &!long wave heat flux swnet, &!short wave heat flux snow_f,ioff_f, &!snow and icerun-off heat flux ifrac,tz1 real*8, dimension(k2) :: & vbk,hbk !background vertical mixing coeff (min val) real*8, dimension(k1) :: & sxy,txy !xymeansglo real*8, dimension(k1,12) :: & sxycli,txycli !xymeansglo real*8, dimension(i2,j2,k2) :: & add !tauglo real*8, dimension(0:i0,j0) :: xp real*8, dimension(i0,0:j0) :: yp real*8, dimension(2,j0) :: pe real*8, dimension(i0,2) :: ype real*8, dimension(i1,j0) :: dhx real*8, dimension(i0,j1) :: dhy real*8, dimension(k1) :: qprof real*8, dimension(i1,j2) :: & ux,vx,sx,tx,cfcx, &!zonal fluxes sx_diffu,tx_diffu real*8, dimension(i2,j1) :: & uy,vy,sy,ty,cfcy, &!meridional fluxes sy_diffu,ty_diffu real*8, dimension(i2,j2,2) :: & uz,vz,sz,tz,cfcz !vertical fluxes real*8, dimension(i0,j0) :: & shf_qsw, &!qdot2 forcing (SW) kpp_hblt, &!boundary layer depth hmxl !mixed layer depth real*8, dimension(i0,j0,k1) :: & trans !SW transmitted ratio real*8, dimension(i0,j0) :: & tidal_energy_flux !tidal mixing coefficients real*8, dimension(i0,j0,2) :: & stf,smft !momemtum and heat/salt forcing real*8, dimension(i0,j0,k1,2) :: & kpp_src, &!kpp non-local sourcing term trcr !working array !===================================================== ! Gent McWilliams (GM) parameterization ! for eddy-induced tracer transport and diffusion in ocean !===================================================== real*8, dimension(i0,j0,k1) :: & VDC_GM, &!cm^2/s UISOP, &!cm/s VISOP, &!cm/s WISOP, &!cm/s GTK0_T, &!degC/s GTK0_S, &!psu/s=g/kg/s VNT_ISOP, &![diagnostic] degC/s VNS_ISOP, &![diagnostic] gram/kilogram/s UET, &![diagnostic] degC/s UES, &![diagnostic] gram/kilogram/s VNT, &![diagnostic] degC/s VNS ![diagnostic] gram/kilogram/s real*8, dimension(i0,j0) :: & HOR_DIFF_X, &!HOR_DIFF(cm^2/s) HOR_DIFF_Y, &!in x- and y-direction KH_GM_X, &!KAPPA_ISOP+HOR_DIFF(cm^2/s) KH_GM_y, &!in x- and y-direction bolus_sp real*8, dimension(i0,j0,2) :: & GTK0 !msu/s=g/g/s real*8, dimension(i0,j0,2,k1) :: & KAPPA_ISOP, & KAPPA_THIC, & HOR_DIFF real*8, dimension(i0,j0) :: & HTN, HTE, & DXT, DYT, & ADVT_ISOP, &![diagnostic] cm degC/s ADVS_ISOP, &![diagnostic] cm gram/kilogram/s HDIFT, &![diagnostic] cm degC/s HDIFS ![diagnostic] cm gram/kilogram/s real*8, dimension(i0,j0,k1,2) :: & HDIFE, &![diagnostic] 1:degC/s; 2:gram/kilogram/s HDIFN, &![diagnostic] HDIFB ![diagnostic] real*8, dimension(i0,j0,k0) :: & WTS, &![diagnostic] gram/kilogram/s WTT ![diagnostic] degC/s end module