C $Header: /u/gcmpack/MITgcm/pkg/atm2d/ATM2D_VARS.h,v 1.16 2013/05/02 20:37:52 jmc Exp $ C $Name: $ INTEGER nForcingPer PARAMETER ( nForcingPer = 12) COMMON/TMSTPS4OCN/dtatmo,dtocno,dtcouplo _RS dtatmo ! atmospheric time step (s) _RS dtocno ! ocean time step (s) _RS dtcouplo ! time of coupling period (s) C Files: mean 2D atmos fields used for wind anomaly coupling COMMON /MEANWIND/ & atmosTauuFile, atmosTauvFile,atmosWindFile, & atau, atav, awind CHARACTER*(MAX_LEN_FNAM) atmosTauuFile CHARACTER*(MAX_LEN_FNAM) atmosTauvFile CHARACTER*(MAX_LEN_FNAM) atmosWindFile _RL atau(jm0,nForcingPer) ! zonal wind stress _RL atav(jm0,nForcingPer) ! meridional wind stress _RL awind(jm0,nForcingPer)! (total) wind speed C Files: basic state 3D wind fields, and E,P, and qnet prescibed fluxes (if used) COMMON /OCEAN_2D_FILES/ & tauuFile, tauvFile, windFile, & qnetFile, evapFile, precipFile, new_mon CHARACTER*(MAX_LEN_FNAM) tauuFile CHARACTER*(MAX_LEN_FNAM) tauvFile CHARACTER*(MAX_LEN_FNAM) windFile CHARACTER*(MAX_LEN_FNAM) qnetFile CHARACTER*(MAX_LEN_FNAM) evapFile CHARACTER*(MAX_LEN_FNAM) precipFile LOGICAL new_mon ! toggle for loading new calendar month data COMMON /OCEAN_RELAX_FILES/ & thetaRelaxFile, saltRelaxFile, & tauThetaRelax, tauSaltRelax, & r_tauThetaRelax, r_tauSaltRelax, & nttyperelax, nstyperelax CHARACTER*(MAX_LEN_FNAM) thetaRelaxFile CHARACTER*(MAX_LEN_FNAM) saltRelaxFile _RL tauThetaRelax ! relaxation time (s) for temp _RL tauSaltRelax ! relaxation time (s) for salt _RL r_tauThetaRelax ! reciprocal of above _RL r_tauSaltRelax ! reciprocal of above INTEGER ntTypeRelax ! method of relaxation for temp, non-zero is tapered INTEGER nsTypeRelax ! method of relaxation for salt, non-zero is tapered COMMON /RUNOFF_DATA/ & runoffFile, runoffMapFile, & runoffVal, numBands, rband, runIndex CHARACTER*(MAX_LEN_FNAM) runoffFile CHARACTER*(MAX_LEN_FNAM) runoffMapFile _RL runoffVal (1-OLx:sNx+OLx,1-OLy:sNy+OLy) INTEGER numBands ! number of runoff bands INTEGER rband(sNy) ! first band j=1,rband(1); next j=rband(1)+1,rband(2) etc. INTEGER runIndex(sNy) ! for specific latitude, corresponding runoff band COMMON /OPTIONS_1DTO2D/ & useObsEmP, useObsRunoff, useAltDeriv LOGICAL useObsEmP ! if true, do not pass 2D atmos fluxes to ocean LOGICAL useObsRunoff ! if true, do do not pass 2S atmos runoff to ocean LOGICAL useAltDeriv ! use alternate derivative formulation (smaller derivates) ! not used for thSice surface temp solver COMMON /ATMOS4OCN/ atm_tauu, atm_tauv, atm_Tair, & atm_precip, atm_runoff, & atm_evap_ice, atm_evap_ocn, & atm_qnet_ice, atm_qnet_ocn, & atm_dLdt_ice, atm_dLdt_ocn, & atm_dFdt_ice, atm_dFdt_ocn, & atm_dLdt_iceq, atm_dLdt_ocnq, & atm_dFdt_iceq, atm_dFdt_ocnq, & atm_solarinc, atm_solar_ice, & atm_solar_ocn, atm_windspeed, & atm_slp, atm_pco2 _RL atm_tauu(jm0) ! zonal mom flux at lower boundary (N/m2) _RL atm_tauv(jm0) ! merid. mom flux at lower boundary (N/m2) _RL atm_Tair(jm0) ! precipitation temp (used over seaice) (C) _RL atm_precip(jm0) ! precip (m/s) (+=out of ocean, - definite) _RL atm_runoff(jm0) ! runoff (m3/s) (+=out of ocean, normally - ) _RL atm_evap_ice(jm0) ! seaice evap. (m/s) (-=out of ocean, normally -) _RL atm_evap_ocn(jm0) ! ocean evap. (m/s) (-=out of ocean, normally -) _RL atm_qnet_ice(jm0) ! seaice surf. heat flux (W/m2) (+=upward) _RL atm_qnet_ocn(jm0) ! ocean surf. heat flux (W/m2) (+=upward) _RL atm_dLdt_ice(jm0) ! dL/dT ice (m/s/K) (-) _RL atm_dLdt_ocn(jm0) ! dL/dT ocean (m/s/K) (-) _RL atm_dFdt_ice(jm0) ! dF/dT ice (W/m2/K) (+) _RL atm_dFdt_ocn(jm0) ! dF/dT ocean (W/m2/K) (+) _RL atm_dLdt_iceq(jm0) ! dL/dT ice, alternate form (m/s/K) (-) _RL atm_dLdt_ocnq(jm0) ! dL/dT ocean, alternate form (m/s/K) (-) _RL atm_dFdt_iceq(jm0) ! dF/dT ice, alternate form (W/m2/K) (+) _RL atm_dFdt_ocnq(jm0) ! dF/dT ocean, alternate form (W/m2/K) (+) _RL atm_solarinc(jm0) ! solar incoming (W/m2 +=into ocean) _RL atm_solar_ice(jm0) ! net solar rad to ice (unused)(+=into ocean) _RL atm_solar_ocn(jm0) ! solar incoming to ocean (+=into ocean) _RL atm_windspeed(jm0) ! windspeed at ocean surface (m/s) _RL atm_slp(jm0) ! SLP anomaly (mb) _RL atm_pco2(jm0) ! atmospheric pCO2 (ppmv) c c ocean data zonal means COMMON/OCN_ZONALMN/ ctocn, ctice, cfice, csAlb, csAlbNIR, & ocnArea, cco2flux _RL ctocn(jm0) ! zonal mean ice-free ocean temp _RL ctice(jm0) ! zonal mean seaice surface temp _RL cfice(jm0) ! zonal mean ice fraction _RL csAlb(jm0) ! zonal mean seaice albedo _RL csAlbNIR(jm0) ! zonal mean seaice albedo _RL ocnArea(jm0) ! ocean area of latitude strip on atm grid (m2) _RL cco2flux(jm0) ! zonally integrated flux of CO2 from ocean->atm (mol/m2/s) c c OCN fluxes after conversion from 1D to 2D, whether by flux adj., c restoring, or by manipulating 1D atmos values for ocean model c COMMON/FLUXES_2D_OCN/ qneto_2D, evapo_2D, runoff_2D, & precipo_2D, fu_2D, fv_2D, solarnet_ocn_2D, & slp_2D, pCO2_2D, wspeed_2D _RL qneto_2D(1:sNx,1:sNy) ! ocean surf. heat flux (W/m2) (+=upward) _RL evapo_2D(1:sNx,1:sNy) ! ocean evap. (m/s) (-=out of ocean) _RL runoff_2D(1:sNx,1:sNy) ! runoff (m/s over gridcell) (+=out of ocean) _RL precipo_2D(1:sNx,1:sNy) ! precip (m/s) (+=out of ocean, - definite) _RL fu_2D(1:sNx,1:sNy) ! zonal mom flux at lower boundary (N/m2) _RL fv_2D(1:sNx,1:sNy) ! merid. mom flux at lower boundary (N/m2) _RL solarnet_ocn_2D(1:sNx,1:sNy) ! solar incoming to ocean (+=into ocean) _RL slp_2D(1:sNx,1:sNy) ! SLP anomaly (mb) _RL pCO2_2D(1:sNx,1:sNy) ! atmospheric pCO2 (ppmv) _RL wspeed_2D(1:sNx,1:sNy) ! windspeed at ocean surface (m/s) c c ICE fluxes after conversion from 1D to 2D, whether by flux adj., c restoring, or by manipulating 1D atmos values for seaice model c COMMON/FLUXES_2D_ICE/ qneti_2D, evapi_2D, precipi_2D, & solarinc_2D, dFdT_ice_2D, Tair_2D _RL qneti_2D(1:sNx,1:sNy) ! seaice surf. heat flux (W/m2) (+=upward) _RL evapi_2D(1:sNx,1:sNy) ! ocean evap. (m/s) (-=out of ocean) _RL precipi_2D(1:sNx,1:sNy) ! precip (m/s) (+=out of ocean, - definite) _RL solarinc_2D(1:sNx,1:sNy)! solar incoming (+=into ocean) _RL dFdT_ice_2D(1:sNx,1:sNy)! dF/dT ice (W/m^2/K) (+ given +=up HF) _RL Tair_2D(1:sNx,1:sNy) ! precipitation temp (used over seaice) (C) c c lookup table for ocean gridcell to atmos grid cell. The weight c is for that atmos grid cell; 1-weight is for atmos cell+1. c COMMON/LOOKUP_GRID/ atm_oc_ind, atm_oc_wgt, & atm_oc_frac1, atm_oc_frac2, & endwgt1, endwgt2, rsumwgt, tauv_jpt, tauv_jwght INTEGER atm_oc_ind(sNy) ! lookup of (first) atm grid for given ocean lat _RL atm_oc_wgt(sNy) ! weight of first atm grid for given ocean lat _RL atm_oc_frac1(sNy) ! fraction of atm lat area covered by ocean lat _RL atm_oc_frac2(sNy) ! fraction of atm+1 lat area covered by ocean lat _RL endwgt1 ! weighting of atmos polar cap _RL endwgt2 ! weighting of atmos cell next polar cap _RL rsumwgt ! recip of sum of above INTEGER tauv_jpt(sNy) ! lookup of (first) atm grid for ocean tauv on C-grid _RL tauv_jwght(sNy) ! weight of (first) atm grid for ocean tauv C Fields use to sum 2D ocean fluxes over several atm timesteps C Also sum of atm E,P for seaice growth step, and sum of seaice bottom fluxes->ocean COMMON/OCN_FLUXES_SUM/ sum_runoff, sum_precip, sum_evap, sum_qnet, & sum_fu, sum_fv, sum_wspeed, & sum_solarnet, sum_slp, sum_pCO2, & sum_prcIce, sum_snowPrc, sum_evapIce, & sum_sHeat, sum_flxCnB _RL sum_runoff(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of runoff (m/s) (+=out of ocean) _RL sum_precip(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only precip (m/s) (+=out of ocean, - def) _RL sum_evap(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only evap (m/s) (-=out of ocean) _RL sum_qnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only qnet (W/m2) (+=upward) _RL sum_fu(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of zonal wind stress applied to ocean (N/m2) _RL sum_fv(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of merid wind stress applied to ocean (N/m2) _RL sum_wspeed(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of wind speed applied to ocean (m/s) _RL sum_solarnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of net solar into ocean, inc. thru ice (+=into ocn) _RL sum_slp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of SLP anomaly (mb) _RL sum_pCO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of atmospheric pCO2 (ppmv) _RL sum_prcIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of total precip over ice (kg/m2/s, + def) _RL sum_snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)! sum of snow precip to ice (kg/m2/s, + def) _RL sum_evapIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy)! total evap over ice (kg/m2/s, +=out of ocean) _RL sum_sHeat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! surf heating, post ice temp step, to melt ice/snow _RL sum_flxCnB(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! heat flux conducted through ice to bottom surface C ! W/m2, +=down C These are the fluxes actually passed to the ocean model (w/some unit/sign conversion) COMMON/OCN_FLUXES_PASS/ pass_runoff, pass_precip, pass_evap, & pass_qnet, pass_fu, pass_fv, pass_wspeed, & pass_solarnet, pass_slp, pass_pCO2, & pass_sIceLoad, sFluxFromIce _RL pass_runoff(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! runoff -> ocean (m/s) (+=out of ocean) _RL pass_precip(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! precip -> ocean (m/s) (+=out of ocean, - def) _RL pass_evap(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! evap -> ocean (m/s) (+=out of ocean), inc. seaice part _RL pass_qnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! HF-> ocean (W/m2) (+=out of ocean), inc seaice part _RL pass_fu(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! zonal wind stress -> ocean (N/m2) _RL pass_fv(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! merid wind stress -> ocean (N/m2 _RL pass_wspeed(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! wind speed -> ocean (m/s) _RL pass_solarnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! total net solar -> ocean (+=out of ocn, - def) _RL pass_slp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! slp anomaly -> ocean (pascals) _RL pass_pCO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! atmos pCO2 -> ocean (parts by volume, i.e. ppmv*1e-6) _RL pass_sIceLoad(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! seaice mass loading -> ocean _RL sFluxFromIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! upward salt flux->ocean (psu.kg/m^2/s) COMMON/ICE_FLUXES_PASS/ netSW, sFlx, dTsurf, pass_prcAtm, snowPrc _RL netSW(sNx,sNy) ! net shortwave flux to ice (W/m2) (+= down) _RL sFlx(sNx,sNy,0:2) ! input variables to seaice temp solver: C ! 0: sFlx(:,1) - Tsurf * dF/dT (W/m2) C ! 1: surface heat flux to ice, no SW (Ts=Ts^n) (W/m2) (+=down) C ! 2: dF/dT (over ice), (- def, as for +=down HF) _RL dTsurf(sNx,sNy) ! surf temp adjustment Ts^n+1 - Ts^n _RL pass_prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! total precip -> seaice top (kg/m2/s, +=precip to ice) _RL snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! snow precip (kg/m2/s) C Variables used to sum and compute atm2d diagnostic outputs COMMON/DIAGS_1DTO2D/ qnet_atm, evap_atm, precip_atm, runoff_atm, & sum_qrel, sum_frel, & sum_iceMask, sum_iceHeight, sum_iceTime, & sum_oceMxLT, sum_oceMxLS, & qnet_atm_ta, evap_atm_ta, & precip_atm_ta, runoff_atm_ta, & sum_qrel_ta, sum_frel_ta, & sum_iceMask_ta, sum_iceHeight_ta, & sum_iceTime_ta, & sum_oceMxLT_ta, sum_oceMxLS_ta, & sum_tauu_ta, sum_tauv_ta, sum_wsocean_ta, & sum_ps4ocean_ta _RL qnet_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL evap_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL precip_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL runoff_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_qrel(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_frel(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_iceMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_iceHeight(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_iceTime(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_oceMxLT(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL sum_oceMxLS(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL qnet_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL evap_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL precip_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL runoff_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_qrel_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_frel_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_iceMask_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_iceHeight_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_iceTime_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_oceMxLT_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_oceMxLS_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) _RL sum_tauu_ta(jm0,nForcingPer) _RL sum_tauv_ta(jm0,nForcingPer) _RL sum_wsocean_ta(jm0,nForcingPer) _RL sum_ps4ocean_ta(jm0,nForcingPer) C Yearly output diagnostics COMMON/YR_MEAN_DIAG/ sst_tave, sss_tave, SHice_min, SHice_max, & NHice_min, NHice_max, HF2ocn_tave, & FW2ocn_tave, CO2flx_tave _RL sst_tave _RL sss_tave _RL SHice_min _RL SHice_max _RL NHice_min _RL NHice_max _RL HF2ocn_tave _RL FW2ocn_tave _RL CO2flx_tave C Variables passed from ocean model COMMON/FROM_OCN/ sstFromOcn, sssFromOcn, oFluxCO2, mlDepth _RL sstFromOcn(1:sNx,1:sNy) _RL sssFromOcn(1:sNx,1:sNy) _RL oFluxCO2(1:sNx,1:sNy) ! flux of CO2 from ocean DIC etc. package (mol/m2/s) _RL mlDepth(1:sNx,1:sNy) ! at present, simply the depth of top ocean grid cell (m)