module var 
    use const
implicit real*8 (a-h,o-z)

    ! double precision sevp ellipti! solver arrays
    real*8 rinv,rinv1,dum0,dum1,dum2,dumg,x,h,rho
    real*8 cgr,cgrh,cgp,cgv,cgs,cgt,cgph,cgsh
    real*8 a,t1,s1
    ! real*8 al,ar,ab,at,ac,cl,cb,cc,cr,ct,s
    ! lower precision logical depth and masking arrays
    integer*2 kb,iu0,iv0,in,iu,iv,iw
    integer*2 ibred
    
    integer*2 infx,infy
    integer n360,nyr,itf,itff,it0,itfday,nocn
    integer nopt
    integer nld
  
    ! "a" grid arrays
    common/bglo/rho(i0,j0,k1),px(i0,j0),py(i0,j0), &
    u1(i0,j0,k1),u2(i0,j0,k1),v1(i0,j0,k1),v2(i0,j0,k1), &
    s1(i0,j0,k1),s2(i0,j0,k1),t1(i0,j0,k1),t2(i0,j0,k1), &
    p0(i0,j0),p(i0,j0,k1),ulf(i0,j0,k1),vlf(i0,j0,k1),slf(i0,j0,k1), &
    tlf(i0,j0,k1),ev(i2,j2,k2),hv(i2,j2,k2),f(j2), &
    tanphi(j2),sumin(k1),c1(i0,j0,k1),c2(i0,j0,k1),clf(i0,j0,k1)

    real*8 westdeg

    ! logical depth kb and associated masking arrays
    common/bathyglo/kb(i0,j0),iu0(0:i01,j0),iv0(i0,0:j0), &
    in(i0,j0,k1),iu(0:i01,j0,k1),iv(i0,0:j0,k1),iw(i0,j0,k0)

    !c-grid arrays
    common/cgridglo/u(i0,j0,k1),v(i0,j0,k1),w(i0,j0,k0)
    common/tavgglo/pbar(i0,j0),pvar(i0,j0),xbar(i0,j0),sbar(i0,j0,k1), &
    tbar(i0,j0,k1),ucli(i0,j0),vcli(i0,j0),rmsv(i0,j0)
    common/klimatglo/fnew,fold,new,nld
    ! user-defined scalar control parameters
    common/controglo/evap,qsum,olde,oldq, &
    dt,tlz,b,g,dm0,de0,dmz0,rzmx,drag,fltw,av,avn,navg,daodt, &
    taudt,taudtn,ktrm,mvi,mxit,isav, &
    mxsav,lrstrt,lopen,lturb,lwind,lheat,lsol,lmovi,lfsrf,lsolver, &
    rawf,lprecon

    common/metricglo/a(k1),y(j0),yv(j0),yvdeg(j0),ydeg(j0),xdeg(i0), &
    cs(j0),csv(j1),ocs(j0),ocsv(j1),dx(j0),dxv(j1),odx(j0),odxv(j1), &
    dy(j0),dyv(j1),ody(j0),odyv(j1)

    ! derived scalars
    common/scaglo/ odt,prn,days,orzmx,ofltw,watts,n360,nyr,itf,it0,itfday,nocn

    ! scratch arrays
    common/scratchglo/scr(i0,j0,k0+1)

    ! sevp elliptic solver arrays
    ! sevp subregion boundary array "ie" is a user-defined array

    common/sevp/rinv(ibir,i0,nbg0),rinv1(ibir,i0,nbg1),dum0(i0,nb0), &
    dum1(ibir),dum2(i0),dumg(i2t),x(i0,j0),al(i2,j2),ab(i2,j2), &
    ac(i2,j2),ar(i2,j2),at(i2,0:j2),s(i2,j2),ie(nb0), &
    cl(i2,j2),cb(i2,j2),cc(i2,j2),cr(i2,j2),ct(i2,j2)
    common/bicg/cgr(i0,j0),cgrh(i0,j0),cgp(i0,j0),cgv(i0,j0),cgs(i0,j0),cgt(i0,j0),cgph(i0,j0),cgsh(i0,j0)

    ! vertical grid arrays
    ! "z" array contains cell center and interface depths
    common/zfsglo/z(k0+k1),odz(k1),odzw(k0)
    
    common/bred/lbred,ibred(i2,j2),bf1,bf2,bflf

    character grd*7,filename*16
    common/grdglo/grd

    common/fullopt/nopt,wopt

    common/filterglo/ dmx(i0,j0,k1),dmy(i0,j0,k1),infx(i0,j0,k1),infy(i0,j0,k1)

    dimension ule(i0,j0,k1),vle(i0,j0,k1),tle(i0,j0,k1),sle(i0,j0,k1),ple(i0,j0,k1),wle(i0,j0,k1),pot(i0,j0,k1)

    real*8 dtmp,dsum
    real*8 timer
    integer ijlo(2),ijhi(2)
    common/timer/timer(10)

    common/nudging/hmean_nudge(i0,j0,k0),t_nudge(i0,j0),s_nudge(i0,j0)

    character sys1*30,sys2*22

    integer ::   lbred=0

    !climate data for winter
    common/climatglo/tnudge(i2,j2),qavg(i2,j2,12),tclis(i0,j0,k1,12),sclis(i0,j0,k1,12),nsombo(12),tclim(i0,j0,k1),sclim(i0,j0,k1)
    
    character case*5,dscrib*63

    common/title/case,dscrib

    common/windsglo/taux(i2,j2,12),tauy(i2,j2,12)

    real*8 :: lath,ioff,lwup,lwdn,ioff_f,melt,meltH
    common/heatglo/lath(i2,j2),senh(i2,j2),qdot(i2,j2),qdot2(i2,j2)
    common/evapglo/evapo(i2,j2),prec(i2,j2),salt(i2,j2),qflx(i2,j2)
    common/outprec/rain(i2,j2),roff(i2,j2),ioff(i2,j2),melt(i2,j2),snow(i2,j2),&
                   lwup(i2,j2),lwdn(i2,j2),melth(i2,j2),snow_f(i2,j2),ioff_f(i2,j2)

    common/windmxglo/vbk(k2),hbk(k2)
    common/xymeansglo/sxy(k1),txy(k1),sxycli(k1,12),txycli(k1,12)
    common/tauglo/add(i2,j2,k2)

    common/blank/xp(0:i0,j0),yp(i0,0:j0),pe(2,j0),ype(i0,2),qprof(k1),dhx(i1,j0),dhy(i0,j1),plf(i0,j0,k1)

    common/flxglo/ ux(i1,j2),uy(i2,j1),uz(i2,j2,2),vx(i1,j2),vy(i2,j1),vz(i2,j2,2),sx(i1,j2),sy(i2,j1),sz(i2,j2,2),&
                  tx(i1,j2),ty(i2,j1),tz(i2,j2,2),cfcx(i1,j2),cfcy(i2,j1),cfcz(i2,j2,2)

    real*8 :: kpp_src, kpp_hblt
    common/vmix_source/stf(i0,j0,2),smft(i0,j0,2),shf_qsw(i0,j0),trcr(i0,j0,k1,2),trans(i0,j0,k1),&
                       kpp_src(i0,j0,k1,2),kpp_hblt(i0,j0)
                       
                       

end module