1 |
C $Header: /u/gcmpack/MITgcm/pkg/atm2d/ATM2D_VARS.h,v 1.15 2011/06/24 01:42:33 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
INTEGER nForcingPer |
5 |
PARAMETER ( nForcingPer = 12) |
6 |
|
7 |
COMMON/TMSTPS4OCN/dtatmo,dtocno,dtcouplo |
8 |
_RS dtatmo ! atmospheric time step (s) |
9 |
_RS dtocno ! ocean time step (s) |
10 |
_RS dtcouplo ! time of coupling period (s) |
11 |
|
12 |
|
13 |
C Files: mean 2D atmos fields used for wind anomaly coupling |
14 |
COMMON /MEANWIND/ |
15 |
& atmosTauuFile, atmosTauvFile,atmosWindFile, |
16 |
& atau, atav, awind |
17 |
CHARACTER*(MAX_LEN_FNAM) atmosTauuFile |
18 |
CHARACTER*(MAX_LEN_FNAM) atmosTauvFile |
19 |
CHARACTER*(MAX_LEN_FNAM) atmosWindFile |
20 |
_RL atau(jm0,nForcingPer) ! zonal wind stress |
21 |
_RL atav(jm0,nForcingPer) ! meridional wind stress |
22 |
_RL awind(jm0,nForcingPer)! (total) wind speed |
23 |
|
24 |
|
25 |
C Files: basic state 3D wind fields, and E,P, and qnet prescibed fluxes (if used) |
26 |
COMMON /OCEAN_2D_FILES/ |
27 |
& tauuFile, tauvFile, windFile, |
28 |
& qnetFile, evapFile, precipFile, new_mon |
29 |
|
30 |
CHARACTER*(MAX_LEN_FNAM) tauuFile |
31 |
CHARACTER*(MAX_LEN_FNAM) tauvFile |
32 |
CHARACTER*(MAX_LEN_FNAM) windFile |
33 |
CHARACTER*(MAX_LEN_FNAM) qnetFile |
34 |
CHARACTER*(MAX_LEN_FNAM) evapFile |
35 |
CHARACTER*(MAX_LEN_FNAM) precipFile |
36 |
LOGICAL new_mon ! toggle for loading new calendar month data |
37 |
|
38 |
COMMON /OCEAN_RELAX_FILES/ |
39 |
& thetaRelaxFile, saltRelaxFile, |
40 |
& tauThetaRelax, tauSaltRelax, |
41 |
& r_tauThetaRelax, r_tauSaltRelax, |
42 |
& nttyperelax, nstyperelax |
43 |
|
44 |
|
45 |
CHARACTER*(MAX_LEN_FNAM) thetaRelaxFile |
46 |
CHARACTER*(MAX_LEN_FNAM) saltRelaxFile |
47 |
_RL tauThetaRelax ! relaxation time (s) for temp |
48 |
_RL tauSaltRelax ! relaxation time (s) for salt |
49 |
_RL r_tauThetaRelax ! reciprocal of above |
50 |
_RL r_tauSaltRelax ! reciprocal of above |
51 |
INTEGER ntTypeRelax ! method of relaxation for temp, non-zero is tapered |
52 |
INTEGER nsTypeRelax ! method of relaxation for salt, non-zero is tapered |
53 |
|
54 |
|
55 |
COMMON /RUNOFF_DATA/ |
56 |
& runoffFile, runoffMapFile, |
57 |
& runoffVal, numBands, rband, runIndex |
58 |
|
59 |
CHARACTER*(MAX_LEN_FNAM) runoffFile |
60 |
CHARACTER*(MAX_LEN_FNAM) runoffMapFile |
61 |
_RL runoffVal (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
62 |
INTEGER numBands ! number of runoff bands |
63 |
INTEGER rband(sNy) ! first band j=1,rband(1); next j=rband(1)+1,rband(2) etc. |
64 |
INTEGER runIndex(sNy) ! for specific latitude, corresponding runoff band |
65 |
|
66 |
COMMON /OPTIONS_1DTO2D/ |
67 |
& useObsEmP, useObsRunoff, useAltDeriv |
68 |
LOGICAL useObsEmP ! if true, do not pass 2D atmos fluxes to ocean |
69 |
LOGICAL useObsRunoff ! if true, do do not pass 2S atmos runoff to ocean |
70 |
LOGICAL useAltDeriv ! use alternate derivative formulation (smaller derivates) |
71 |
! not used for thSice surface temp solver |
72 |
|
73 |
COMMON /ATMOS4OCN/ atm_tauu, atm_tauv, atm_Tair, |
74 |
& atm_precip, atm_runoff, |
75 |
& atm_evap_ice, atm_evap_ocn, |
76 |
& atm_qnet_ice, atm_qnet_ocn, |
77 |
& atm_dLdt_ice, atm_dLdt_ocn, |
78 |
& atm_dFdt_ice, atm_dFdt_ocn, |
79 |
& atm_dLdt_iceq, atm_dLdt_ocnq, |
80 |
& atm_dFdt_iceq, atm_dFdt_ocnq, |
81 |
& atm_solarinc, atm_solar_ice, |
82 |
& atm_solar_ocn, atm_windspeed, |
83 |
& atm_slp, atm_pco2 |
84 |
_RL atm_tauu(jm0) ! zonal mom flux at lower boundary (N/m2) |
85 |
_RL atm_tauv(jm0) ! merid. mom flux at lower boundary (N/m2) |
86 |
_RL atm_Tair(jm0) ! precipitation temp (used over seaice) (C) |
87 |
_RL atm_precip(jm0) ! precip (m/s) (+=out of ocean, - definite) |
88 |
_RL atm_runoff(jm0) ! runoff (m3/s) (+=out of ocean, normally - ) |
89 |
_RL atm_evap_ice(jm0) ! seaice evap. (m/s) (-=out of ocean, normally -) |
90 |
_RL atm_evap_ocn(jm0) ! ocean evap. (m/s) (-=out of ocean, normally -) |
91 |
_RL atm_qnet_ice(jm0) ! seaice surf. heat flux (W/m2) (+=upward) |
92 |
_RL atm_qnet_ocn(jm0) ! ocean surf. heat flux (W/m2) (+=upward) |
93 |
_RL atm_dLdt_ice(jm0) ! dL/dT ice (m/s/K) (-) |
94 |
_RL atm_dLdt_ocn(jm0) ! dL/dT ocean (m/s/K) (-) |
95 |
_RL atm_dFdt_ice(jm0) ! dF/dT ice (W/m2/K) (+) |
96 |
_RL atm_dFdt_ocn(jm0) ! dF/dT ocean (W/m2/K) (+) |
97 |
_RL atm_dLdt_iceq(jm0) ! dL/dT ice, alternate form (m/s/K) (-) |
98 |
_RL atm_dLdt_ocnq(jm0) ! dL/dT ocean, alternate form (m/s/K) (-) |
99 |
_RL atm_dFdt_iceq(jm0) ! dF/dT ice, alternate form (W/m2/K) (+) |
100 |
_RL atm_dFdt_ocnq(jm0) ! dF/dT ocean, alternate form (W/m2/K) (+) |
101 |
_RL atm_solarinc(jm0) ! solar incoming (W/m2 +=into ocean) |
102 |
_RL atm_solar_ice(jm0) ! net solar rad to ice (unused)(+=into ocean) |
103 |
_RL atm_solar_ocn(jm0) ! solar incoming to ocean (+=into ocean) |
104 |
_RL atm_windspeed(jm0) ! windspeed at ocean surface (m/s) |
105 |
_RL atm_slp(jm0) ! SLP anomaly (mb) |
106 |
_RL atm_pco2(jm0) ! atmospheric pCO2 (ppmv) |
107 |
|
108 |
c |
109 |
c ocean data zonal means |
110 |
COMMON/OCN_ZONALMN/ ctocn, ctice, cfice, csAlb, csAlbNIR, |
111 |
& ocnArea, cco2flux |
112 |
_RL ctocn(jm0) ! zonal mean ice-free ocean temp |
113 |
_RL ctice(jm0) ! zonal mean seaice surface temp |
114 |
_RL cfice(jm0) ! zonal mean ice fraction |
115 |
_RL csAlb(jm0) ! zonal mean seaice albedo |
116 |
_RL csAlbNIR(jm0) ! zonal mean seaice albedo |
117 |
_RL ocnArea(jm0) ! ocean area of latitude strip on atm grid (m2) |
118 |
_RL cco2flux(jm0) ! zonally integrated flux of CO2 from ocean->atm (mol/m2/s) |
119 |
|
120 |
c |
121 |
c OCN fluxes after conversion from 1D to 2D, whether by flux adj., |
122 |
c restoring, or by manipulating 1D atmos values for ocean model |
123 |
c |
124 |
COMMON/FLUXES_2D_OCN/ qneto_2D, evapo_2D, runoff_2D, |
125 |
& precipo_2D, fu_2D, fv_2D, solarnet_ocn_2D, |
126 |
& slp_2D, pCO2_2D, wspeed_2D |
127 |
_RL qneto_2D(1:sNx,1:sNy) ! ocean surf. heat flux (W/m2) (+=upward) |
128 |
_RL evapo_2D(1:sNx,1:sNy) ! ocean evap. (m/s) (-=out of ocean) |
129 |
_RL runoff_2D(1:sNx,1:sNy) ! runoff (m/s over gridcell) (+=out of ocean) |
130 |
_RL precipo_2D(1:sNx,1:sNy) ! precip (m/s) (+=out of ocean, - definite) |
131 |
_RL fu_2D(1:sNx,1:sNy) ! zonal mom flux at lower boundary (N/m2) |
132 |
_RL fv_2D(1:sNx,1:sNy) ! merid. mom flux at lower boundary (N/m2) |
133 |
_RL solarnet_ocn_2D(1:sNx,1:sNy) ! solar incoming to ocean (+=into ocean) |
134 |
_RL slp_2D(1:sNx,1:sNy) ! SLP anomaly (mb) |
135 |
_RL pCO2_2D(1:sNx,1:sNy) ! atmospheric pCO2 (ppmv) |
136 |
_RL wspeed_2D(1:sNx,1:sNy) ! windspeed at ocean surface (m/s) |
137 |
|
138 |
c |
139 |
c ICE fluxes after conversion from 1D to 2D, whether by flux adj., |
140 |
c restoring, or by manipulating 1D atmos values for seaice model |
141 |
c |
142 |
COMMON/FLUXES_2D_ICE/ qneti_2D, evapi_2D, precipi_2D, |
143 |
& solarinc_2D, dFdT_ice_2D, Tair_2D |
144 |
_RL qneti_2D(1:sNx,1:sNy) ! seaice surf. heat flux (W/m2) (+=upward) |
145 |
_RL evapi_2D(1:sNx,1:sNy) ! ocean evap. (m/s) (-=out of ocean) |
146 |
_RL precipi_2D(1:sNx,1:sNy) ! precip (m/s) (+=out of ocean, - definite) |
147 |
_RL solarinc_2D(1:sNx,1:sNy)! solar incoming (+=into ocean) |
148 |
_RL dFdT_ice_2D(1:sNx,1:sNy)! dF/dT ice (W/m^2/K) (+ given +=up HF) |
149 |
_RL Tair_2D(1:sNx,1:sNy) ! precipitation temp (used over seaice) (C) |
150 |
|
151 |
c |
152 |
c lookup table for ocean gridcell to atmos grid cell. The weight |
153 |
c is for that atmos grid cell; 1-weight is for atmos cell+1. |
154 |
c |
155 |
COMMON/LOOKUP_GRID/ atm_oc_ind, atm_oc_wgt, |
156 |
& atm_oc_frac1, atm_oc_frac2, |
157 |
& endwgt1, endwgt2, rsumwgt, tauv_jpt, tauv_jwght |
158 |
INTEGER atm_oc_ind(sNy) ! lookup of (first) atm grid for given ocean lat |
159 |
_RL atm_oc_wgt(sNy) ! weight of first atm grid for given ocean lat |
160 |
_RL atm_oc_frac1(sNy) ! fraction of atm lat area covered by ocean lat |
161 |
_RL atm_oc_frac2(sNy) ! fraction of atm+1 lat area covered by ocean lat |
162 |
_RL endwgt1 ! weighting of atmos polar cap |
163 |
_RL endwgt2 ! weighting of atmos cell next polar cap |
164 |
_RL rsumwgt ! recip of sum of above |
165 |
INTEGER tauv_jpt(sNy) ! lookup of (first) atm grid for ocean tauv on C-grid |
166 |
_RL tauv_jwght(sNy) ! weight of (first) atm grid for ocean tauv |
167 |
|
168 |
|
169 |
C Fields use to sum 2D ocean fluxes over several atm timesteps |
170 |
C Also sum of atm E,P for seaice growth step, and sum of seaice bottom fluxes->ocean |
171 |
COMMON/OCN_FLUXES_SUM/ sum_runoff, sum_precip, sum_evap, sum_qnet, |
172 |
& sum_fu, sum_fv, sum_wspeed, |
173 |
& sum_solarnet, sum_slp, sum_pCO2, |
174 |
& sum_prcIce, sum_snowPrc, sum_evapIce, |
175 |
& sum_sHeat, sum_flxCnB |
176 |
_RL sum_runoff(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of runoff (m/s) (+=out of ocean) |
177 |
_RL sum_precip(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only precip (m/s) (+=out of ocean, - def) |
178 |
_RL sum_evap(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only evap (m/s) (-=out of ocean) |
179 |
_RL sum_qnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum ocean-only qnet (W/m2) (+=upward) |
180 |
_RL sum_fu(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of zonal wind stress applied to ocean (N/m2) |
181 |
_RL sum_fv(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of merid wind stress applied to ocean (N/m2) |
182 |
_RL sum_wspeed(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of wind speed applied to ocean (m/s) |
183 |
_RL sum_solarnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of net solar into ocean, inc. thru ice (+=into ocn) |
184 |
_RL sum_slp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of SLP anomaly (mb) |
185 |
_RL sum_pCO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of atmospheric pCO2 (ppmv) |
186 |
_RL sum_prcIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! sum of total precip over ice (kg/m2/s, + def) |
187 |
_RL sum_snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)! sum of snow precip to ice (kg/m2/s, + def) |
188 |
_RL sum_evapIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy)! total evap over ice (kg/m2/s, +=out of ocean) |
189 |
_RL sum_sHeat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! surf heating, post ice temp step, to melt ice/snow |
190 |
_RL sum_flxCnB(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! heat flux conducted through ice to bottom surface |
191 |
C ! W/m2, +=down |
192 |
|
193 |
|
194 |
C These are the fluxes actually passed to the ocean model (w/some unit/sign conversion) |
195 |
COMMON/OCN_FLUXES_PASS/ pass_runoff, pass_precip, pass_evap, |
196 |
& pass_qnet, pass_fu, pass_fv, pass_wspeed, |
197 |
& pass_solarnet, pass_slp, pass_pCO2, |
198 |
& pass_sIceLoad, sFluxFromIce |
199 |
_RL pass_runoff(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! runoff -> ocean (m/s) (+=out of ocean) |
200 |
_RL pass_precip(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! precip -> ocean (m/s) (+=out of ocean, - def) |
201 |
_RL pass_evap(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! evap -> ocean (m/s) (+=out of ocean), inc. seaice part |
202 |
_RL pass_qnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! HF-> ocean (W/m2) (+=out of ocean), inc seaice part |
203 |
_RL pass_fu(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! zonal wind stress -> ocean (N/m2) |
204 |
_RL pass_fv(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! merid wind stress -> ocean (N/m2 |
205 |
_RL pass_wspeed(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! wind speed -> ocean (m/s) |
206 |
_RL pass_solarnet(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! total net solar -> ocean (+=out of ocn, - def) |
207 |
_RL pass_slp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! slp anomaly -> ocean (pascals) |
208 |
_RL pass_pCO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! atmos pCO2 -> ocean (parts by volume, i.e. ppmv*1e-6) |
209 |
_RL pass_sIceLoad(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! seaice mass loading -> ocean |
210 |
_RL sFluxFromIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! upward salt flux->ocean (psu.kg/m^2/s) |
211 |
|
212 |
|
213 |
COMMON/ICE_FLUXES_PASS/ netSW, sFlx, dTsurf, pass_prcAtm, snowPrc |
214 |
_RL netSW(sNx,sNy) ! net shortwave flux to ice (W/m2) (+= down) |
215 |
_RL sFlx(sNx,sNy,0:2) ! input variables to seaice temp solver: |
216 |
C ! 0: sFlx(:,1) - Tsurf * dF/dT (W/m2) |
217 |
C ! 1: surface heat flux to ice, no SW (Ts=Ts^n) (W/m2) (+=down) |
218 |
C ! 2: dF/dT (over ice), (- def, as for +=down HF) |
219 |
_RL dTsurf(sNx,sNy) ! surf temp adjustment Ts^n+1 - Ts^n |
220 |
_RL pass_prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! total precip -> seaice top (kg/m2/s, +=precip to ice) |
221 |
_RL snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy) ! snow precip (kg/m2/s) |
222 |
|
223 |
C Variables used to sum and compute atm2d diagnostic outputs |
224 |
COMMON/DIAGS_1DTO2D/ qnet_atm, evap_atm, precip_atm, runoff_atm, |
225 |
& sum_qrel, sum_frel, |
226 |
& sum_iceMask, sum_iceHeight, sum_iceTime, |
227 |
& sum_oceMxLT, sum_oceMxLS, |
228 |
& qnet_atm_ta, evap_atm_ta, |
229 |
& precip_atm_ta, runoff_atm_ta, |
230 |
& sum_qrel_ta, sum_frel_ta, |
231 |
& sum_iceMask_ta, sum_iceHeight_ta, |
232 |
& sum_iceTime_ta, |
233 |
& sum_oceMxLT_ta, sum_oceMxLS_ta, |
234 |
& sum_tauu_ta, sum_tauv_ta, sum_wsocean_ta, |
235 |
& sum_ps4ocean_ta |
236 |
_RL qnet_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
237 |
_RL evap_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
238 |
_RL precip_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
239 |
_RL runoff_atm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
240 |
_RL sum_qrel(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
241 |
_RL sum_frel(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
242 |
_RL sum_iceMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
243 |
_RL sum_iceHeight(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
244 |
_RL sum_iceTime(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
245 |
_RL sum_oceMxLT(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
246 |
_RL sum_oceMxLS(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
247 |
_RL qnet_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
248 |
_RL evap_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
249 |
_RL precip_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
250 |
_RL runoff_atm_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
251 |
_RL sum_qrel_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
252 |
_RL sum_frel_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
253 |
_RL sum_iceMask_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
254 |
_RL sum_iceHeight_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
255 |
_RL sum_iceTime_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
256 |
_RL sum_oceMxLT_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
257 |
_RL sum_oceMxLS_ta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nForcingPer) |
258 |
_RL sum_tauu_ta(jm0,nForcingPer) |
259 |
_RL sum_tauv_ta(jm0,nForcingPer) |
260 |
_RL sum_wsocean_ta(jm0,nForcingPer) |
261 |
_RL sum_ps4ocean_ta(jm0,nForcingPer) |
262 |
|
263 |
C Yearly output diagnostics |
264 |
COMMON/YR_MEAN_DIAG/ sst_tave, sss_tave, SHice_min, SHice_max, |
265 |
& NHice_min, NHice_max, HF2ocn_tave, |
266 |
& FW2ocn_tave, CO2flx_tave |
267 |
_RL sst_tave |
268 |
_RL sss_tave |
269 |
_RL SHice_min |
270 |
_RL SHice_max |
271 |
_RL NHice_min |
272 |
_RL NHice_max |
273 |
_RL HF2ocn_tave |
274 |
_RL FW2ocn_tave |
275 |
_RL CO2flx_tave |
276 |
|
277 |
|
278 |
C Variables passed from ocean model |
279 |
COMMON/FROM_OCN/ sstFromOcn, sssFromOcn, oFluxCO2, mlDepth |
280 |
_RL sstFromOcn(1:sNx,1:sNy) |
281 |
_RL sssFromOcn(1:sNx,1:sNy) |
282 |
_RL oFluxCO2(1:sNx,1:sNy) ! flux of CO2 from ocean DIC etc. package (mol/m2/s) |
283 |
_RL mlDepth(1:sNx,1:sNy) ! at present, simply the depth of top ocean grid cell (m) |
284 |
|