diff --git a/Csrc/kinematics.h b/Csrc/kinematics.h index ccbe7a7e..abb89fc6 100644 --- a/Csrc/kinematics.h +++ b/Csrc/kinematics.h @@ -111,7 +111,7 @@ void compute_strain_rate_mag(const struct DimStruct *dims, double* restrict stra //Off-diagonal components //Here factor of 2 arises because we invoke symmetry of tensor for(ssize_t vi1=0;vi1dims-1;vi1++){ - for (ssize_t d=vi1;ddims;d++){ + for (ssize_t d=vi1+1;ddims;d++){ const ssize_t shift_s = 3 * dims->npg * vi1 + dims->npg * d ; for(ssize_t i=imin+1;i 273.16 ){ - src_sl = -cvl/lf0*(temperature-273.16)*rime_sl; - src_rl = src_rl + rime_sl - src_sl; + src_sl_s = -cvl/lf0*(temperature-273.16)*rime_sl; + src_sl_r = (1.0 + cvl/lf0*(temperature-273.16))*rime_sl; } else{ - src_sl = rime_sl + (factor_r*e_ri*qi + piacr)/density; + src_ri_i = factor_r*e_ri*qi/density; + src_ri_r = -piacr/density; + src_sl_s = rime_sl; } + src_ri_s = -src_ri_r + src_ri_i; //both rain-ice collision terms contribute to snow tendency + /* Now precip-precip interactions */ double src_r = 0.0; double src_s = 0.0; @@ -376,10 +383,10 @@ void accretion_all(double density, double p0, double temperature, double ccn, do } } - *qrain_tendency = src_r + src_rl + src_ri; - *qsnow_tendency = src_s + src_sl + src_si; - *ql_tendency = -(src_rl + rime_sl); - *qi_tendency = -(src_ri + src_si); + *qrain_tendency = src_r + src_rl_r + src_ri_r + src_sl_r; + *qsnow_tendency = src_s + src_sl_s + src_ri_s + src_si_s; + *ql_tendency = -src_rl_r - src_sl_s - src_sl_r; + *qi_tendency = -src_ri_i - src_si_s; return; }; @@ -1103,3 +1110,90 @@ void melt_snow_wrapper(const struct DimStruct *dims, double* density, double* te return; }; + +void get_n_ice(const struct DimStruct *dims, double* density, double* qi, double n0i, double* n_ice){ + + const ssize_t istride = dims->nlg[1] * dims->nlg[2]; + const ssize_t jstride = dims->nlg[2]; + const ssize_t imin = dims->gw; + const ssize_t jmin = dims->gw; + const ssize_t kmin = dims->gw; + const ssize_t imax = dims->nlg[0]-dims->gw; + const ssize_t jmax = dims->nlg[1]-dims->gw; + const ssize_t kmax = dims->nlg[2]-dims->gw; + + for(ssize_t i=imin; inlg[1] * dims->nlg[2]; + const ssize_t jstride = dims->nlg[2]; + const ssize_t imin = dims->gw; + const ssize_t jmin = dims->gw; + const ssize_t kmin = dims->gw; + const ssize_t imax = dims->nlg[0]-dims->gw; + const ssize_t jmax = dims->nlg[1]-dims->gw; + const ssize_t kmax = dims->nlg[2]-dims->gw; + + for(ssize_t i=imin; inlg[1] * dims->nlg[2]; + const ssize_t jstride = dims->nlg[2]; + const ssize_t imin = dims->gw; + const ssize_t jmin = dims->gw; + const ssize_t kmin = dims->gw; + const ssize_t imax = dims->nlg[0]-dims->gw; + const ssize_t jmax = dims->nlg[1]-dims->gw; + const ssize_t kmax = dims->nlg[2]-dims->gw; + + for(ssize_t i=imin; i p_inv: - thetal[k] = 255.7 #257.0 - wt[k] = 0.91 #0.915 #Mixing ratio in g/kg - else: - thetal[k] = 255.7+6.9 #263.9 - wt[k] = 0.8 + sheba_init = np.loadtxt('./SHEBAdata/sheba_init.txt', comments='!') + sheba_p = sheba_init[:, 0] + sheba_t = sheba_init[:, 1] + sheba_rh = sheba_init[:, 2] + sheba_rl = sheba_init[:, 3] + sheba_thetal = sheba_t*(p_tilde/sheba_p)**(Rd/cpd)*np.exp(-(sheba_rl*2.501e6) / (sheba_t*cpd)) + sheba_u = sheba_init[:, 4] + sheba_v = sheba_init[:, 5] - for k in xrange(Gr.dims.nlg[2]-1): - if RS.p0_half[k] < p_inv: - thetal[k+1] = thetal[k] + ((1.0/exner_c(RS.p0_half[k+1]))*fmin(3.631e-8*(p_inv - RS.p0_half[k+1]), 5.7e-4))*(RS.p0_half[k]-RS.p0_half[k+1]) - wt[k+1] = wt[k] - 1.4e-5*(RS.p0_half[k]-RS.p0_half[k+1]) - - #Convert mixing ratio to specific humidity - qt[k] = wt[k]/(1.0 + wt[k]/1000.0)/1000.0 - - #Horizontal wind profiles from Colleen's JPLLES code - - ps = np.array([1017.0,1012.0,1007.0,1002.0,997.0,992.0,987.0,982.0,977.0,972.0,967.0,962.0,957.01,957.0, - 956.99,952.0,947.0,942.0,937.0,932.0,927.0,922.0,917.0,912.0,907.0,902.0,897.0,892.0, - 887.0,882.0,877.0,872.0,867.0,862.0,857.0,852.0,847.0,842.0,837.0,832.0,827.0,822.0,817.0, - 812.0,807.0,802.0,797.0,792.0,787.0,782.0,777.0,772.0,767.0,762.0,757.0,752.0,747.0,742.0, - 737.0,732.0,727.0,722.0,717.0,712.0,707.0,702.0,697.0,692.0,687.0,682.0,677.0,672.0,667.0, - 662.0,657.0,652.0,647.0,642.0,637.0,632.0,627.0,622.0,617.0,612.0,607.0],dtype=np.double,order='c')*100.0 - - us = np.array([2.916,2.8999,2.7895,2.679,2.5568,2.417,2.2772,2.1374,1.9976,1.8856,1.7926,1.6996,1.6066,1.6066, - 1.6066,1.5136,1.4205,1.3248,1.2203,1.1159,1.0114,0.90701,0.80257,0.69813,0.59368,0.48564,0.37645, - 0.26726,0.15807,0.048881,-0.06031,-0.1695,-0.27869,-0.42739,-0.61744,-0.80748,-0.99753,-1.1876, - -1.3776,-1.5677,-1.7577,-1.9477,-2.0576,-2.1326,-2.2076,-2.2826,-2.3576,-2.4326,-2.5076,-2.5826, - -2.6576,-2.6911,-2.6961,-2.701,-2.7059,-2.7109,-2.7158,-2.7207,-2.7257,-2.7306,-2.7137,-2.653, - -2.5923,-2.5316,-2.4708,-2.4101,-2.3494,-2.2886,-2.2279,-2.1662,-2.08,-1.9938,-1.9076,-1.8214, - -1.7352,-1.649,-1.5629,-1.4767,-1.3905,-1.302,-1.213,-1.124,-1.035,-0.94601,-0.85701],dtype=np.double,order='c') - - vs = np.array([2.8497,2.9023,3.2622,3.6221,3.8701,3.9526,4.0351,4.1177,4.2002,4.2743,4.3427,4.4112,4.4796,4.4796, - 4.4796,4.548,4.6165,4.6831,4.744,4.8048,4.8657,4.9266,4.9874,5.0483,5.1092,5.1671,5.2241,5.2811, - 5.3381,5.3951,5.4521,5.5091,5.5662,5.6245,5.6844,5.7442,5.8041,5.8639,5.9238,5.9836,6.0434,6.1033, - 6.1444,6.1774,6.2105,6.2435,6.2765,6.3096,6.3426,6.3756,6.4086,6.4722,6.5567,6.6412,6.7258,6.8103, - 6.8948,6.9794,7.0639,7.1484,7.2388,7.3407,7.4426,7.5446,7.6465,7.7485,7.8504,7.9524,8.0543,8.1574, - 8.2893,8.4211,8.553,8.6848,8.8167,8.9485,9.0804,9.2122,9.3441,9.493,9.6463,9.7995,9.9527,10.106, - 10.259],dtype=np.double,order='c') + sheba_pv = np.zeros_like(sheba_u) + for n, t_ in enumerate(sheba_t): + sheba_pv[n] = Th.get_pv_star(t_)*sheba_rh[n]/100.0 + sheba_wt = eps_v * sheba_pv/(sheba_p - sheba_pv) + sheba_rl + sheba_qt = sheba_wt/(1.0 + sheba_wt) + sheba_ql = sheba_rl/(1.0 + sheba_rl) #Interpolate to LES grid for k in xrange(Gr.dims.nlg[2]): - u[k] = interp_pchip(RS.p0[k], ps[::-1], us[::-1]) - v[k] = interp_pchip(RS.p0[k], ps[::-1], vs[::-1]) - + u[k] = interp_pchip(RS.p0_half[k], sheba_p, sheba_u) + v[k] = interp_pchip(RS.p0_half[k], sheba_p, sheba_v) + thetal[k] = interp_pchip(RS.p0_half[k], sheba_p, sheba_thetal) + qt[k] = interp_pchip(RS.p0_half[k], sheba_p, sheba_qt) + + # plt.figure() + # plt.subplot(121) + # plt.plot(thetal, RS.p0_half) + # plt.plot(sheba_thetal, sheba_p) + # plt.ylim([110000, 80000]) + # plt.subplot(122) + # plt.plot(qt, RS.p0_half) + # plt.plot(sheba_qt, sheba_p) + # plt.ylim([110000, 80000]) + # plt.show() RS.u0 = 0.5 * (np.amax(u)+np.amin(u)) RS.v0 = 0.5 * (np.amax(v)+np.amin(v)) diff --git a/Microphysics_Arctic_1M.pxd b/Microphysics_Arctic_1M.pxd index ed943616..b6bb4885 100644 --- a/Microphysics_Arctic_1M.pxd +++ b/Microphysics_Arctic_1M.pxd @@ -125,6 +125,8 @@ cdef class Microphysics_Arctic_1M: TimeStepping.TimeStepping TS, ParallelMPI.ParallelMPI Pa) cpdef stats_io(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, Th, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) + cpdef micro_fields(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, + DiagnosticVariables.DiagnosticVariables DV) cpdef ice_stats(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) diff --git a/Microphysics_Arctic_1M.pyx b/Microphysics_Arctic_1M.pyx index ce8df663..8b102616 100644 --- a/Microphysics_Arctic_1M.pyx +++ b/Microphysics_Arctic_1M.pyx @@ -70,6 +70,10 @@ cdef extern from "microphysics_arctic_1m.h": double (*L_fp)(double, double), double* p0, double* temperature, double* qt, double* qv, double* precip_rate, double* entropy_tendency) void entropy_source_melt(Grid.DimStruct *dims, double* temperature, double* melt_rate, double* entropy_tendency) + void get_n_ice(Grid.DimStruct *dims, double* density, double* qi, double n0i, double* n_ice) + void get_n_rain(Grid.DimStruct *dims, double* density, double* qrain, double* n0rain, double* n_rain) + void get_n_snow(Grid.DimStruct *dims, double* density, double* qsnow, double* n0snow, double* n_snow) + cdef extern from "microphysics.h": @@ -160,6 +164,9 @@ cdef class Microphysics_Arctic_1M: # add wet bulb temperature DV.add_variables('temperature_wb', 'K', r'T_{wb}','wet bulb temperature', 'sym', Pa) + # add micro variables to DV + DV.add_variables('snow_depo', 'kg kg^-1 s^-1', r'dqsnow/dt', 'snow deposition tendency', 'sym', Pa) + NS.add_profile('evap_rate', Gr, Pa) NS.add_profile('precip_rate', Gr, Pa) NS.add_profile('melt_rate', Gr, Pa) @@ -180,6 +187,10 @@ cdef class Microphysics_Arctic_1M: NS.add_profile('thetav_mean', Gr, Pa) NS.add_profile('thetav_flux_z', Gr, Pa) + NS.add_profile('qv_flux_z', Gr, Pa) + NS.add_profile('ql_flux_z', Gr, Pa) + NS.add_profile('qi_flux_z', Gr, Pa) + NS.add_profile('temperature_flux_z', Gr, Pa) NS.add_ts('iwp', Gr, Pa) NS.add_ts('rwp', Gr, Pa) @@ -190,6 +201,10 @@ cdef class Microphysics_Arctic_1M: NS.add_ts('cloud_fraction_ice', Gr, Pa) NS.add_ts('cloud_fraction_mixed_phase', Gr, Pa) + NS.add_profile('n_ice', Gr, Pa) + NS.add_profile('n_snow', Gr, Pa) + NS.add_profile('n_rain', Gr, Pa) + return cpdef update(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, Th, @@ -368,6 +383,18 @@ cdef class Microphysics_Arctic_1M: tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &dummy[0]) NS.write_profile('thetav_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &DV.values[qv_shift]) + NS.write_profile('qv_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + + tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &DV.values[ql_shift]) + NS.write_profile('ql_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + + tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &DV.values[qi_shift]) + NS.write_profile('qi_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + + tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &DV.values[t_shift]) + NS.write_profile('temperature_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + #Output entropy source terms due to microphysics entropy_source_precipitation(&Gr.dims, &self.CC.LT.LookupStructC, self.Lambda_fp, self.L_fp, &Ref.p0_half[0], @@ -388,10 +415,42 @@ cdef class Microphysics_Arctic_1M: tmp = Pa.HorizontalMean(Gr, &tmp_tendency[0]) NS.write_profile('micro_s_source_melt', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + dummy[:] = 0.0 + get_n_ice(&Gr.dims, &Ref.rho0[0], &DV.values[qi_shift], self.n0_ice_input, &dummy[0]) + tmp = Pa.HorizontalMean(Gr, &dummy[0]) + NS.write_profile('n_ice', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + + dummy[:] = 0.0 + get_n_rain(&Gr.dims, &Ref.rho0[0], &PV.values[qrain_shift], &DV.values[nrain_shift], &dummy[0]) + tmp = Pa.HorizontalMean(Gr, &dummy[0]) + NS.write_profile('n_rain', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + + dummy[:] = 0.0 + get_n_snow(&Gr.dims, &Ref.rho0[0], &PV.values[qsnow_shift], &DV.values[nsnow_shift], &dummy[0]) + tmp = Pa.HorizontalMean(Gr, &dummy[0]) + NS.write_profile('n_snow', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + self.ice_stats(Gr, Ref, PV, DV, NS, Pa) return + cpdef micro_fields(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, + DiagnosticVariables.DiagnosticVariables DV): + + cdef: + Py_ssize_t qt_shift = PV.get_varshift(Gr, 'qt') + Py_ssize_t t_shift = DV.get_varshift(Gr, 'temperature') + Py_ssize_t qsnow_shift = PV.get_varshift(Gr, 'qsnow') + Py_ssize_t nsnow_shift = DV.get_varshift(Gr, 'nsnow') + Py_ssize_t depo_shift = DV.get_varshift(Gr, 'snow_depo') + + evaporation_snow_wrapper(&Gr.dims, &self.CC.LT.LookupStructC, self.Lambda_fp, self.L_fp, &Ref.rho0_half[0], + &Ref.p0_half[0], &DV.values[t_shift], &PV.values[qt_shift], &PV.values[qsnow_shift], + &DV.values[nsnow_shift], &DV.values[depo_shift]) + + return + + cpdef ice_stats(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa): diff --git a/Radiation.pxd b/Radiation.pxd index dc78045f..1c2f5fbe 100644 --- a/Radiation.pxd +++ b/Radiation.pxd @@ -165,6 +165,7 @@ cdef class RadiationRRTM(RadiationBase): double [:, :] uflx_sw_pencils double [:, :] dflx_sw_pencils double IsdacCC_dT + double IsdacCC_dHf cpdef initialize(self, Grid.Grid Gr, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) diff --git a/Radiation.pyx b/Radiation.pyx index 71c7f7c6..2227b206 100644 --- a/Radiation.pyx +++ b/Radiation.pyx @@ -691,6 +691,7 @@ cdef class RadiationRRTM(RadiationBase): if self.daily_mean_sw: try: self.coszen = namelist['radiation']['RRTM']['coszen'] + Pa.root_print('Prescribed cos(SZA) = %5.4f .' %self.coszen) except: Pa.root_print('Mean Daytime cos(SZA) not set so RadiationRRTM takes default value: coszen = 2.0/pi .') self.coszen = 2.0/pi @@ -749,6 +750,12 @@ cdef class RadiationRRTM(RadiationBase): except: self.IsdacCC_dT = 0.0 + try: + self.IsdacCC_dHf = namelist['initial']['rh'] - 0.6 + print('IsdacCC case: RRTM profiles are shifted according to %2.2f RH change in free troposphere.'%(self.IsdacCC_dHf)) + except: + self.IsdacCC_dHf = 0.0 + return @@ -835,7 +842,8 @@ cdef class RadiationRRTM(RadiationBase): specific_humidity = vapor_mixing_ratios / (1.0 + vapor_mixing_ratios) for k in xrange(len(pressures)-n_profile, len(pressures)): self.p_ext[self.n_buffer+count] = pressures[k] - qt_new = get_humidity(temperatures[k], specific_humidity[k], pressures[k], temperatures[k]+self.IsdacCC_dT, Th) + qt_new = get_humidity(temperatures[k], specific_humidity[k], pressures[k], + temperatures[k]+self.IsdacCC_dT, self.IsdacCC_dHf, Th) self.t_ext[self.n_buffer+count] = temperatures[k] + self.IsdacCC_dT self.rv_ext[self.n_buffer+count] = qt_new / (1.0 - qt_new) count += 1 @@ -1357,10 +1365,12 @@ cdef double cos_sza(double jday, double hourz, double dlat, double dlon) nogil: return cos_sza -def get_humidity(temperature_old, qt_old, pressure, temperature_new, Th): +def get_humidity(temperature_old, qt_old, pressure, temperature_new, dHf, Th): pv_star_1 = Th.get_pv_star(temperature_old) pv_1 = (pressure * qt_old) / (eps_v * (1.0 - qt_old) + qt_old) - rh_ = pv_1 / pv_star_1 + rh_ = pv_1 / pv_star_1 + dHf + if rh_ > 1.0: + rh_ = 1.0 pv_star_2 = Th.get_pv_star(temperature_new) pv_2 = rh_ * pv_star_2 qt_new = 1.0/(eps_vi * (pressure - pv_2)/pv_2 + 1.0) diff --git a/SHEBAdata/SHEBA_forcing.pkl b/SHEBAdata/SHEBA_forcing.pkl index 103e8f5d..3b96a610 100644 --- a/SHEBAdata/SHEBA_forcing.pkl +++ b/SHEBAdata/SHEBA_forcing.pkl @@ -14,7 +14,7 @@ p5 tp6 Rp7 (I1 -(I32 +(I106 tp8 cnumpy dtype @@ -33,7 +33,7 @@ I-1 I0 tp14 bI00 -S'\x8d,\n\xf05\xbd\xbd>,\xcb\xcc\xfb\xbc\x92\xb6\xbe\xb8\xdf\r\xfbd\x81\xcc\xbe\xc4\x98\\v\x03\x9a\xf9\xbe\xbf\xe3\xf0\x14\xa5x\x00\xbfM\xa1\xbf\x00s\xc2\x02\xbf\xb8\'\xc7\xbbI\xe9\x05\xbf%3<_\x8d\x13\x0b\xbf57\xbc$\xf3\xb4\x11\xbf\xf4\xb0iE\x11\xdd\x13\xbf\xbd\xaca\xd1\xcc\xb7\x1c\xbf\x84W\xa5\xfa\xb7\xe5$\xbf9\xa2\x86\xd5t\xb3$\xbf\x88\xf4\xa31\x18\x83\x1e\xbf\xd8\xfb\x82\x88\xccq\x15\xbfs\x802\xa9\xc8\x88\x15\xbf\xbb<\x97.\xceI\x19\xbf\xbc\xf8\x16ohK\x15\xbf{"\xffkz\xb6\x13\xbf y\x93\x8d\x7f\xe3\x12\xbf(\xa2`\xe1\x0e+\x13\xbf*\xaf\xa8\xee\xf5/\x11\xbf\xeb\x08\x97\xc0&\x97\x07\xbf\xa7\xdf>h\x9b\xce\xdf\xbe\xaf\xfeHG\xfc{\xfe>$\x1c\xe3\xd8\xc6\xc2\x11?0\x99\xbca-0\x0f?\xf7u\xbdWYV\x0c?E\x8f\xbb\x11PG\x08?\xf8\x05\x8d\x03\x0b\xb0\xff>\xc9PP\xcf\x04\x9e\xfe>\xc9PP\xcf\x04\x9e\xfe>' +S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x8e7\x8c\x91\x0b\xff\xbe\x143\x02\xf7*\x9c\xfe\xbe|;\x1ak\xa5.\xfe\xbe\x88\x07P0\xbc\xc2\xfd\xbe\xd47\xd3\xfe\xb3X\xfd\xbe_\xcc\xa3\xd6\x8c\xf0\xfc\xbe\xf3\x83bG\xbd\x89\xfc\xbe\xc6\x9fn\xc1\xce$\xfc\xbe\xa2\xdeh\xd47\xc1\xfb\xbe\xbe\x81\xb0\xf0\x81_\xfb\xbe\xe2G\xe6\xa5#\xff\xfa\xbe\x0f1\n\xf4\x1c\xa0\xfa\xbe\xe0\xddK\x93\xb2B\xfa\xbe\xba\xad{\xcb\x9f\xe6\xf9\xbe\x9d\xa0\x99\x9c\xe4\x8b\xf9\xbe\x88\xb6\xa5\x06\x812\xf9\xbe\x18\x90\xcf\xc1\xb9\xda\xf8\xbe\x15\xec\xb7]\x05\x84\xf8\xbe\x80\xca^\xdac.\xf8\xbe\x8el#\xa8^\xda\xf7\xbeo\xf0v\x9e\'\x87\xf7\xbe\xf37\xe8\xe5\x8c5\xf7\xbeJa\xe8U\xc0\xe4\xf6\xbe\xaa\xad\xd6^K\x95\xf6\xbew|\x83H\xe9F\xf6\xbe\xb1\xcd\xee\x12\x9a\xf9\xf5\xbe\xbe\x00\xe9\x05\x19\xad\xf5\xbe\xd3V\xd1\x91\xefa\xf5\xbeU/x\xfe\xd8\x17\xf5\xbe\xaa\xe9\xad\x93\x90\xce\xf4\xbel&\xa2\t[\x86\xf4\xbe\x00E%\xa8\xf3>\xf4\xbe\x02\xe6f\'\x9f\xf8\xf3\xbeq\tg\x87]\xb3\xf3\xbe\xb2\x0e\xf6\x0f\xean\xf3\xbe\xc5\xf5\x13\xc1D+\xf3\xbe\xaa\xbe\xc0\x9am\xe8\xf2\xbe\xfd\t,U\xa9\xa6\xf2\xbe\x86\x96\xf6\x7fne\xf2\xbe}\xa5\x7f\x8bF%\xf2\xbeE\x96\x97\xbf\xec\xe5\xf1\xbe)%\xc7G\xd2\x08\xf2\xbed?\x8b\xa5H\xbe\xf2\xbe\xd5\x9a\xaesHt\xf3\xbe\xe2\x96\x01\xfa\x8c*\xf4\xbe\x893\x848\x16\xe1\xf4\xbeh\x11f\xe7(\x98\xf5\xbeG\xefG\x96;O\xf6\xbe\\\x0e\x89\xb5\xd7\x06\xf7\xbe\r\xce\xf9\x8c\xb8\xbe\xf7\xbeY.\x9a\x1c\xdev\xf8\xbe@/jdH/\xf9\xbe\xc3\xd0id\xf7\xe7\xf9\xbe\xe1\x12\x99\x1c\xeb\xa0\xfa\xbe\x9a\xf5\xf7\x8c#Z\xfb\xbe\xefx\x86\xb5\xa0\x13\xfc\xbe\xdf\x9cD\x96b\xcd\xfc\xbe\x06\x02b\xe7\xad\x87\xfd\xbe-g\x7f8\xf9A\xfe\xbe\xefl\xccA\x89\xfc\xfe\xbeM\x13I\x03^\xb7\xff\xbe\xd5\xdcbb\x199\x00\xbf\x9f\xd0P{\xc8\x96\x00\xbf\xb7\x94V\xf0\x99\xf4\x00\xbf\xcfX\\ekR\x01\xbf\x82\xbd\x91\x92\x81\xb0\x01\xbf5"\xc7\xbf\x97\x0e\x02\xbf6W\x14I\xd0l\x02\xbf\x85\\y.+\xcb\x02\xbf\xd3a\xde\x13\x86)\x03\xbf\xbd\x07s\xb1%\x88\x03\xbf\xa7\xad\x07O\xc5\xe6\x03\xbf=\x9e\x96\x1f\xb8\xca\x03\xbf\xee*\xe3`\xe8q\x05?G\x0e{\x1bG\x1e\xfb>b\x8d_\xeaz\xb1\xe6>\x13k7\x91GV\xb8>\x0b`\xa6\xceo\xa0\x9b>\x01\xfc\xc7Iw\x0c\xa5\xbe:f\xb19\xb4\xf4\xbb\xbe\x8a\xb3\x7fm_\xb1\xc6\xbe6\x96C;\xeb`\x80>\xaf\xa0\xf7\xea\x8dX\xd7>\xc5\xb2\xb2\xe0\xf2\x16\xe7>\xa87\x82\xd8\xc2\xc1\xe8>' p15 tp16 bsS'pressure' @@ -46,11 +46,11 @@ g5 tp19 Rp20 (I1 -(I32 +(I106 tp21 g12 I00 -S'\xcd\xcc\xcc\xcc\xcc\xc8\x8f@\x99\x99\x99\x99\x99\xd6\xa7@\x00\x00\x00\x00\x80\xdd\xb3@4333\xb3\xcf\xbb@3333\xf3\xe0\xc1@\xcd\xcc\xcc\xcc\x0c\xda\xc5@{\x14\xaeG\x01\x06\xca@R\xb8\x1e\x85\xab\x97\xce@)\\\x8f\xc2\x85\xc7\xd1@=\n\xd7\xa3\x10v\xd4@p=\n\xd7\xe3p\xd7@\xafG\xe1z$\x85\xda@\n\xd7\xa3p\xad\xe5\xdd@\xb9\x1e\x85\xeb\xd1\xaf\xe0@{\x14\xaeG\xf1\x92\xe2@\x9a\x99\x99\x99\x11\x1d\xe4@\n\xd7\xa3p\x9dr\xe6@\\\x8f\xc2\xf5\xe0{\xe8@\xb9\x1e\x85\xeb\x91\x9e\xea@\x1e\x85\xebQ\xb0\xda\xec@\x00\x00\x00\x00\x18\n\xef@\xf6(\\\x8fv\xa9\xf0@)\\\x8f\xc2\x85\xc7\xf1@\\\x8f\xc2\xf5\x94\xe5\xf2@\x15\xaeG\xe1Z\x10\xf4@\xc2\xf5(\\\xb3!\xf5@)\\\x8f\xc2\xf9\x1f\xf6@H\xe1z\x14.\x0b\xf7@\xd7\xa3p=>\xd0\xf7@R\xb8\x1e\x85sb\xf8@\xb8\x1e\x85\xeb\xcd\xc1\xf8@\x00\x00\x00\x00\xe0\xd4\xf8@' +S'fffff\x17\xbb@\x00\x00\x00\x00\x00)\xc4@\x00\x00\x00\x00\x80\xd4\xc9@\x00\x00\x00\x00\x80\x80\xcf@\x00\x00\x00\x00\x00\x96\xd2@\x00\x00\x00\x00\xc0k\xd5@\x00\x00\x00\x00\x80A\xd8@\x00\x00\x00\x00@\x17\xdb@\x00\x00\x00\x00\x00\xed\xdd@\x00\x00\x00\x00`a\xe0@\x00\x00\x00\x00@\xcc\xe1@\x00\x00\x00\x00 7\xe3@\x00\x00\x00\x00\x00\xa2\xe4@\x00\x00\x00\x00\x80\xd0\xe5@\x00\x00\x00\x00`\xc2\xe6@\x00\x00\x00\x00`\xb4\xe7@\x00\x00\x00\x00@\xa6\xe8@\x00\x00\x00\x00 \x98\xe9@\x00\x00\x00\x00 \x8a\xea@\x00\x00\x00\x00\x00|\xeb@\x00\x00\x00\x00\x00n\xec@\x00\x00\x00\x00\x80&\xed@\x00\x00\x00\x00\x00e\xed@\x00\x00\x00\x00\x80\xa3\xed@\x00\x00\x00\x00\x00\xe2\xed@\x00\x00\x00\x00\x80 \xee@\x00\x00\x00\x00\x00_\xee@\x00\x00\x00\x00\x80\x9d\xee@\x00\x00\x00\x00\x00\xdc\xee@\x00\x00\x00\x00\x80\x1a\xef@\x00\x00\x00\x00\x00Y\xef@\x00\x00\x00\x00\x80\x97\xef@\x00\x00\x00\x00\x00\xd6\xef@\x00\x00\x00\x00@\n\xf0@\x00\x00\x00\x00\x80)\xf0@\x00\x00\x00\x00\xc0H\xf0@\x00\x00\x00\x00\x00h\xf0@\x00\x00\x00\x00@\x87\xf0@\x00\x00\x00\x00\x80\xa6\xf0@\x00\x00\x00\x00\xc0\xc5\xf0@\x00\x00\x00\x00\x00\xe5\xf0@\x00\x00\x00\x00@\x04\xf1@\x00\x00\x00\x00\x80#\xf1@\x00\x00\x00\x00\xc0B\xf1@\x00\x00\x00\x00\x00b\xf1@\x00\x00\x00\x00@\x81\xf1@\x00\x00\x00\x00\x80\xa0\xf1@\x00\x00\x00\x00\xc0\xbf\xf1@\x00\x00\x00\x00\x00\xdf\xf1@\x00\x00\x00\x00@\xfe\xf1@\x00\x00\x00\x00\x80\x1d\xf2@\x00\x00\x00\x00\xc0<\xf2@\x00\x00\x00\x00\x00\\\xf2@\x00\x00\x00\x00@{\xf2@\x00\x00\x00\x00\x80\x9a\xf2@\x00\x00\x00\x00\xc0\xb9\xf2@\x00\x00\x00\x00\x00\xd9\xf2@\x00\x00\x00\x00@\xf8\xf2@\x00\x00\x00\x00\x80\x17\xf3@\x00\x00\x00\x00\xc06\xf3@\x00\x00\x00\x00\x00V\xf3@\x00\x00\x00\x00@u\xf3@\x00\x00\x00\x00\x80\x94\xf3@\x00\x00\x00\x00\xc0\xb3\xf3@\x00\x00\x00\x00\x00\xd3\xf3@\x00\x00\x00\x00@\xf2\xf3@\x00\x00\x00\x00\x80\x11\xf4@\x00\x00\x00\x00\xc00\xf4@\x00\x00\x00\x00\x00P\xf4@\x00\x00\x00\x00@o\xf4@\x00\x00\x00\x00\x80\x8e\xf4@\x00\x00\x00\x00\xc0\xad\xf4@\x00\x00\x00\x00\x00\xcd\xf4@\x00\x00\x00\x00@\xec\xf4@\x00\x00\x00\x00\x80\x0b\xf5@\x00\x00\x00\x00\xc0*\xf5@\x00\x00\x00\x00\x00J\xf5@\x00\x00\x00\x00@i\xf5@\x00\x00\x00\x00\x80\x88\xf5@\x00\x00\x00\x00\xc0\xa7\xf5@\x00\x00\x00\x00\x00\xc7\xf5@\x00\x00\x00\x00@\xe6\xf5@\x00\x00\x00\x00\x80\x05\xf6@\x00\x00\x00\x00\xc0$\xf6@\x00\x00\x00\x00\x00D\xf6@\x00\x00\x00\x00@c\xf6@\x00\x00\x00\x00\x80\x82\xf6@\x00\x00\x00\x00\xc0\xa1\xf6@\x00\x00\x00\x00\x00\xc1\xf6@\x00\x00\x00\x00@\xe0\xf6@\x00\x00\x00\x00\x80\xff\xf6@\x00\x00\x00\x00\xc0\x1e\xf7@\x00\x00\x00\x00\x00>\xf7@\x00\x00\x00\x00@]\xf7@\x00\x00\x00\x00\x80|\xf7@\x00\x00\x00\x00\xc0\x9b\xf7@\x00\x00\x00\x00\x00\xbb\xf7@\x00\x00\x00\x00@\xda\xf7@\x00\x00\x00\x00\x80\xf9\xf7@\x00\x00\x00\x00\xc0\x18\xf8@\x00\x00\x00\x00\x008\xf8@\x00\x00\x00\x00@W\xf8@\x00\x00\x00\x00\x80v\xf8@\x00\x00\x00\x00\xc0\x95\xf8@\x00\x00\x00\x00\x00\xb5\xf8@\x00\x00\x00\x00@\xd4\xf8@' p22 tp23 bsS'u' @@ -63,11 +63,11 @@ g5 tp26 Rp27 (I1 -(I32 +(I106 tp28 g12 I00 -S'"\xfa\xc8\xc0\x14\xa8$\xc0\x97\xb5:&x\x90\x17\xc0\xb1+@\xee5W\x11\xc0\xcb\xeb\x9b\x0ew\xe8\x0b\xc0wg\xed\xb6\x0bm\x00\xc0\xa6{\x9d\xd4\x97e\xd0\xbf\x05N\xc9L|\xc8\xfa?\x98\xb8h\xdbC\xf5\x0b@\x9e^)\xcb\x10\x17\x14@\x03r\xaf\xb9\x90\xb4\x1b@\x8fx\x9f\xd0\xd8t$@\x80j\xbct\x93\xc8*@\xc4\xd9\x87\xcf\xb0K/@{\xa2\xfe\x8dPn0@\xbc\xbb\xbb\xbb\xbb#0@\xfc\x1b\xa1\x8c\xde\xe6.@\xc9\xe8mY\xab\x03-@Mb\x10X9\xe4*@\x80#\x94\xd1\xdb\x92(@\xd9\xf3"\x00%\xeb%@\x84/L\xa6\n&#@U\x9f\xab\xad\xd8\xc7 @\xe1O\x8d\x97n\xe2\x1d@\xb8\xff\xb5\xa9\xa7\xbc\x1a@y\xcaW\xef]\x80\x19@\x97\xd77\x1d\xee\x00\x17@\xb5\x84|\xd0\xb3\xd9\x14@\x16 \xf7\x9a\x0b\xf9\x12@\xe7j+\xf6\x97M\x11@\x9c\xc4 \xb0r\x18\x10@0\x08\xac\x1cZ\x04\x08@0\x08\xac\x1cZ\x04\x08@' +S"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x05\xf5-s\xba\xe5\xbf\xdd\x07 \xb5\x89\x93\xe8\xbf\xea\tK<\xa0l\xeb\xbf\xf6\x0bv\xc3\xb6E\xee\xbf\x8f\xc2\xf5(\\\x8f\xf0\xbf\x96C\x8bl\xe7\xfb\xf1\xbf\x9c\xc4 \xb0rh\xf3\xbf\xa2E\xb6\xf3\xfd\xd4\xf4\xbfsh\x91\xed|?\xf6\xbf\x1b\r\xe0-\x90\xa0\xf7\xbf\xc4\xb1.n\xa3\x01\xf9\xbf\xfc\xa9\xf1\xd2Mb\xfa\xbf\xa5N@\x13a\xc3\xfb\xbfM\xf3\x8eSt$\xfd\xbf\xf6\x97\xdd\x93\x87\x85\xfe\xbf\x9f<,\xd4\x9a\xe6\xff\xbf\xa4p=\n\xd7\xa3\x00\xc0\xf8\xc2d\xaa`T\x01\xc04\x116<\xbd\xd2\x01\xc0;\x01M\x84\rO\x02\xc0z\xc7):\x92\xcb\x02\xc0\x80\xb7@\x82\xe2G\x03\xc0\x87\xa7W\xca2\xc4\x03\xc0\xc6m4\x80\xb7@\x04\xc0\xcc]K\xc8\x07\xbd\x04\xc0\xd3Mb\x10X9\x05\xc0\xd9=yX\xa8\xb5\x05\xc0*\xa9\x13\xd0D\xd8\x05\xc0X\xa85\xcd;\xce\x05\xc0N\xd1\x91\\\xfe\xc3\x05\xc0}\xd0\xb3Y\xf5\xb9\x05\xc0\xab\xcf\xd5V\xec\xaf\x05\xc0\xa1\xf81\xe6\xae\xa5\x05\xc0\xcf\xf7S\xe3\xa5\x9b\x05\xc0\xfd\xf6u\xe0\x9c\x91\x05\xc0\xf3\x1f\xd2o_\x87\x05\xc0\xfb\xcb\xee\xc9\xc3B\x05\xc0a2U0*\xa9\x04\xc0\xc8\x98\xbb\x96\x90\x0f\x04\xc0.\xff!\xfd\xf6u\x03\xc0\x95e\x88c]\xdc\x02\xc0\xfb\xcb\xee\xc9\xc3B\x02\xc0a2U0*\xa9\x01\xc0\xc8\x98\xbb\x96\x90\x0f\x01\xc0.\xff!\xfd\xf6u\x00\xc0\x0b\xb5\xa6y\xc7)\xff\xbf\x01\xde\x02\t\x8a\x1f\xfc\xbf\xf7\x06_\x98L\x15\xf9\xbf{\x83/L\xa6\n\xf6\xbfq\xac\x8b\xdbh\x00\xf3\xbf\x96\xec\xd8\x08\xc4\xeb\xef\xbf\x10\x92\x05L\xe0\xd6\xe9\xbfn\xc0\xe7\x87\x11\xc2\xe3\xbf\xd1\xcb(\x96[Z\xdb\xbf.9\xee\x94\x0e\xd6\xd1\xbf\x19\x04V\x0e-\xb2\xc5\xbfTW>\xcb\xf3\xe0\xae\xbf'\xa3\xca0\xee\x06\xa9?\xb2F=D\xa3;\xc4?{\xda\xe1\xaf\xc9\x1a\xd1?\x9d\x11\xa5\xbd\xc1\x17\xd8?\xbfHh\xcb\xb9\x14\xdf?\xc8A\t3m\xff\xe2?Ih\xcb\xb9\x14W\xe6?\xe6\x05\xd8G\xa7\xae\xe9?\x83\xa3\xe4\xd59\x06\xed?X\xca2\xc4\xb1.\xf0?\xd0\xb3Y\xf5\xb9\xda\xf1?\xd8\xf0\xf4JY\x86\xf3?Q\xda\x1b|a2\xf5?\xee|?5^\xba\xf6?\x0f\x9c3\xa2\xb47\xf8?\xbf\x0e\x9c3\xa2\xb4\xf9?o\x81\x04\xc5\x8f1\xfb?\x1f\xf4lV}\xae\xfc?\xcff\xd5\xe7j+\xfe?g\xd5\xe7j+\xf6\xff?a\xc3\xd3+e\x19\x01@\x0f\x9c3\xa2\xb47\x02@\xbct\x93\x18\x04V\x03@jM\xf3\x8eSt\x04@;\xdfO\x8d\x97n\x05@7\x89A`\xe5P\x06@\xfb\\m\xc5\xfe2\x07@\x87\x16\xd9\xce\xf7S\x07@" p29 tp30 bsS'dqdt' @@ -80,11 +80,11 @@ g5 tp33 Rp34 (I1 -(I32 +(I106 tp35 g12 I00 -S']\xdd\xafH\xc3\xa5;\xbd\xc0b\xd5\x98}\xd46\xbd\x1b\x05>g[\x9bV=\x9b\xe2>\x0e\xdaD3\xbd&\xfb\x91\xb0\xabaP=\xac\x9aK\xa8#\xc0F=\x06/u\\\xf9\x91A\xbd@\x99a\x9b\x12\x9d<=c\x0b&\xac\xe9\x95[=B\xb4\x10\xd8X\xdd\xb1=\xb8J\xff\x84\x17\x9d\xc1=+\x92\x04\x84\x8dU\xd5=\xf1\xf6#\x846\xf6\xf7=\x95\x15:\xb2\x05\xe6\x02>\xed\xaaE~\xa5*\t>\xa9(\x87\xfeH\xca\x11>\x0b\xab&\xa5dt\x19>\xe0\xa5\xeef\x91\\$>h\xf39\x13\n\xdb,>\xdf!\xfa\x03\xf8~1>\xce\x17\xac\xf8oP2>\xcd\x8a\xe2\x82E\xac2>\x9193\xcc\xb1\x9a4>\xf9K~\xc86\n<>P\xd0\xc0\xe8vA8>{\xdc\xfdbJ\x98>>\xf5\xafM\xf2\x12\x92>>FKV\x91E\xe2D>\xd5\x15\xed\x9d\x02\xd6L>\xa9\xb3\xe2\xa9\xf0\xa0T>H\x8f\x9c\x85\xd8}F>H\x8f\x9c\x85\xd8}F>' +S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>\x03\xc6\x9c\xdeC\r\x08>cq_\xef\xa1\xd1@>N\xd3\xb3\xad\xa3TA>^i\xe9~\xb3\xd7A>\xeeD\x9e\xc1\xbamB>b\x996{\xaf\x1fC>\xd6\xed\xce4\xa4\xd1C>IBg\xee\x98\x83D>\xbd\x96\xff\xa7\x8d5E>\xfa(]^\xaePA>1o\xecu\x10\xa14>\xbf1z\xbc\x10\x83\x1a>\x17{w\xf8\x08V\x12>' p36 tp37 bsS'v' @@ -97,11 +97,11 @@ g5 tp40 Rp41 (I1 -(I32 +(I106 tp42 g12 I00 -S'\xaf\x00\xb9\xd7\\H\x18@+\xd1l1R\xc2\x12@\xf5o\x842z+\x12@c\xc9/\x96\xfc\xc2\x16@\xc1^N\xf6\xbc8\x1c@T\xc1\xa8\xa4Np\x1e@\xb5\x15\xfb\xcb\xee\x19 @\x17 \xf7\x9a\x0b\xd1 @ A\xf1c\xcc5 @\xf81\xe6\xae%\xc4\x1f@\x05Y<\xe2}\x02"@\x15\xd3r\x8d\xbcq#@\x03\xbf3\xc7\xdf\xc3"@\xdeL_\xe2\xa2m @7d\x16\xb4\xa3\xbb\x19@\xb21\x9cX\xcd\x90\x12@UX\x83\n!Z\x07@\x8bq\xfe&\x14\xe2\xf4?@\xde\x85\xc0\xa4\x0b\x94?\x87\xacn\xf5\x9cT\xed\xbf\xc8\x89v\x15R^\xfc\xbf\x91{\xcd\x85\xa4y\x04\xc0\x08\x13Y~\xf3e\x08\xc0|\x05i\xc6\xa2\t\x07\xc0\x0b\x83\x1f\xc2\xe5\x0e\x01\xc0\x84\xfb\xeeC\xcb\xa7\xdb\xbf/,\x92\x89nP\xd8?\x85\xe6:\x8d\xb4T\xf0?\x1d$1.B\xbe\xf7?\xc7`\xd8t\x17\x1b\x01@\xe1@H\x160\x81\x04@\xe1@H\x160\x81\x04@' +S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00o\x12\x83\xc0\xca!%@m\xe7\xfb\xa9\xf1\xd2$@\xf8S\xe3\xa5\x9b\x84$@\x83\xc0\xca\xa1E6$@d\xcc]K\xc8\xe7#@\xd3Mb\x10X\x99#@B\xcff\xd5\xe7J#@#\xdb\xf9~j\xfc"@q\x1b\r\xe0-\xb0"@"lxz\xa5l"@a2U0*)"@\x12\x83\xc0\xca\xa1\xe5!@RI\x9d\x80&\xa2!@\x02\x9a\x08\x1b\x9e^!@B`\xe5\xd0"\x1b!@\xf2\xb0Pk\x9a\xd7 @2w-!\x1f\x94 @\xe3\xc7\x98\xbb\x96P @yX\xa85\xcd\x1b @s\xd7\x12\xf2A\xcf\x1f@\xd7\x12\xf2A\xcff\x1f@X9\xb4\xc8v\xfe\x1e@\xbct\x93\x18\x04\x96\x1e@=\x9bU\x9f\xab-\x1e@\xa1\xd64\xef8\xc5\x1d@"\xfd\xf6u\xe0\\\x1d@\xa3#\xb9\xfc\x87\xf4\x1c@\xd5\xe7j+\xf6\x97\x1c@\x8c\xdbh\x00oA\x1c@B\xcff\xd5\xe7\xea\x1b@\xdc\xd7\x81sF\x94\x1b@\x92\xcb\x7fH\xbf=\x1b@H\xbf}\x1d8\xe7\x1a@\xe3\xc7\x98\xbb\x96\x90\x1a@\x99\xbb\x96\x90\x0f:\x1a@O\xaf\x94e\x88\xe3\x19@\x18\x95\xd4\th\xa2\x19@\xaa\x82QI\x9d\x80\x19@;p\xce\x88\xd2^\x19@\xcc]K\xc8\x07=\x19@B`\xe5\xd0"\x1b\x19@\xd3Mb\x10X\xf9\x18@d;\xdfO\x8d\xd7\x18@\xd9=yX\xa8\xb5\x18@k+\xf6\x97\xdd\x93\x18@\x0b\xb5\xa6y\xc7i\x18@\xea\x95\xb2\x0cq,\x18@\xe5a\xa1\xd64\xef\x17@\xe0-\x90\xa0\xf8\xb1\x17@\xbf\x0e\x9c3\xa2t\x17@\xba\xda\x8a\xfde7\x17@\x99\xbb\x96\x90\x0f\xfa\x16@\x94\x87\x85Z\xd3\xbc\x16@sh\x91\xed|\x7f\x16@\x16\xfb\xcb\xee\xc9C\x16@\x0c\x93\xa9\x82Q\t\x16@\x1e\x16jM\xf3\xce\x15@1\x99*\x18\x95\x94\x15@C\x1c\xeb\xe26Z\x15@V\x9f\xab\xad\xd8\x1f\x15@h"lxz\xe5\x14@z\xa5,C\x1c\xab\x14@\x8f\xe4\xf2\x1f\xd2o\x14@S\x96!\x8eu1\x14@\x17HP\xfc\x18\xf3\x13@\xf7\xe4a\xa1\xd6\xb4\x13@\xbc\x96\x90\x0fzv\x13@\x80H\xbf}\x1d8\x13@`\xe5\xd0"\xdb\xf9\x12@$\x97\xff\x90~\xbb\x12@\x9e\xef\xa7\xc6Kw\x12@\xfe\xd4x\xe9&1\x12@z\xa5,C\x1c\xeb\x11@\xf7u\xe0\x9c\x11\xa5\x11@W[\xb1\xbf\xec^\x11@\xd4+e\x19\xe2\x18\x11@\x05\xa3\x92:\x01\xcd\x10@\xf1\xf4JY\x86x\x10@\xc0[ A\xf1#\x10@W[\xb1\xbf\xec\x9e\x0f@.\xff!\xfd\xf6\xf5\x0e@\x99\xbb\x96\x90\x0f\xfa\x0c@\xf0\x16HP\xfc\x18\n@Gr\xf9\x0f\xe97\x07@#J{\x83/\xcc\x06@' p43 tp44 bs. \ No newline at end of file diff --git a/SHEBAdata/sheba_init.txt b/SHEBAdata/sheba_init.txt new file mode 100644 index 00000000..fa3bfb88 --- /dev/null +++ b/SHEBAdata/sheba_init.txt @@ -0,0 +1,112 @@ +! +! For details, see http://www.rap.ucar.edu/~gthompsn/workshop2008/ +! Refer to case#2 (SHEBA). +! Data below represent initial boundary condition data, see relevant PDF +! description for details. +! + 0.69354E+04 0.22942E+03 0.90780E-01 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.10322E+05 0.22908E+03 0.91335E-01 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.13225E+05 0.22808E+03 0.39857E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.16129E+05 0.22756E+03 0.49931E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.19032E+05 0.22669E+03 0.36816E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.21935E+05 0.22552E+03 0.12552E+01 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.24838E+05 0.22351E+03 0.49863E+01 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.27741E+05 0.22062E+03 0.18608E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.30644E+05 0.21919E+03 0.32031E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.33547E+05 0.22062E+03 0.33049E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.36450E+05 0.22247E+03 0.39861E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.39353E+05 0.22512E+03 0.40614E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.42256E+05 0.22822E+03 0.42098E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.44676E+05 0.23061E+03 0.45472E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.46611E+05 0.23254E+03 0.45732E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.48547E+05 0.23443E+03 0.46706E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.50482E+05 0.23628E+03 0.47139E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.52417E+05 0.23787E+03 0.50761E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.54353E+05 0.23961E+03 0.52029E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.56288E+05 0.24066E+03 0.57588E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.58224E+05 0.24208E+03 0.60478E+02 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 + 0.59700E+05 0.24282E+03 0.58965E+02 0.00000E+00 -0.67901E+00 0.10566E+02 0.50000E-01 -0.29607E-04 0.70000E-09 + 0.60200E+05 0.24311E+03 0.59214E+02 0.00000E+00 -0.76801E+00 0.10412E+02 0.50000E-01 -0.29192E-04 0.70000E-09 + 0.60700E+05 0.24339E+03 0.59434E+02 0.00000E+00 -0.85701E+00 0.10259E+02 0.50000E-01 -0.28784E-04 0.70000E-09 + 0.61200E+05 0.24368E+03 0.59626E+02 0.00000E+00 -0.94601E+00 0.10106E+02 0.50000E-01 -0.28382E-04 0.70000E-09 + 0.61700E+05 0.24396E+03 0.59791E+02 0.00000E+00 -0.10350E+01 0.99527E+01 0.50000E-01 -0.27987E-04 0.70000E-09 + 0.62200E+05 0.24425E+03 0.59929E+02 0.00000E+00 -0.11240E+01 0.97995E+01 0.50000E-01 -0.27599E-04 0.70000E-09 + 0.62700E+05 0.24453E+03 0.60043E+02 0.00000E+00 -0.12130E+01 0.96463E+01 0.50000E-01 -0.27216E-04 0.70000E-09 + 0.63200E+05 0.24482E+03 0.60132E+02 0.00000E+00 -0.13020E+01 0.94930E+01 0.50000E-01 -0.26840E-04 0.70000E-09 + 0.63700E+05 0.24510E+03 0.60198E+02 0.00000E+00 -0.13905E+01 0.93441E+01 0.50000E-01 -0.26469E-04 0.70000E-09 + 0.64200E+05 0.24539E+03 0.60242E+02 0.00000E+00 -0.14767E+01 0.92122E+01 0.50000E-01 -0.26105E-04 0.70000E-09 + 0.64700E+05 0.24567E+03 0.60264E+02 0.00000E+00 -0.15629E+01 0.90804E+01 0.50000E-01 -0.25746E-04 0.70000E-09 + 0.65200E+05 0.24596E+03 0.60265E+02 0.00000E+00 -0.16490E+01 0.89485E+01 0.50000E-01 -0.25392E-04 0.70000E-09 + 0.65700E+05 0.24624E+03 0.60247E+02 0.00000E+00 -0.17352E+01 0.88167E+01 0.50000E-01 -0.25044E-04 0.70000E-09 + 0.66200E+05 0.24653E+03 0.60209E+02 0.00000E+00 -0.18214E+01 0.86848E+01 0.50000E-01 -0.24701E-04 0.70000E-09 + 0.66700E+05 0.24681E+03 0.60153E+02 0.00000E+00 -0.19076E+01 0.85530E+01 0.50000E-01 -0.24363E-04 0.70000E-09 + 0.67200E+05 0.24710E+03 0.60080E+02 0.00000E+00 -0.19938E+01 0.84211E+01 0.50000E-01 -0.24030E-04 0.70000E-09 + 0.67700E+05 0.24738E+03 0.59989E+02 0.00000E+00 -0.20800E+01 0.82893E+01 0.50000E-01 -0.23703E-04 0.70000E-09 + 0.68200E+05 0.24767E+03 0.59883E+02 0.00000E+00 -0.21662E+01 0.81574E+01 0.50000E-01 -0.23380E-04 0.70000E-09 + 0.68700E+05 0.24795E+03 0.59760E+02 0.00000E+00 -0.22279E+01 0.80543E+01 0.50000E-01 -0.23061E-04 0.70000E-09 + 0.69200E+05 0.24824E+03 0.59623E+02 0.00000E+00 -0.22886E+01 0.79524E+01 0.50000E-01 -0.22748E-04 0.70000E-09 + 0.69700E+05 0.24852E+03 0.59472E+02 0.00000E+00 -0.23494E+01 0.78504E+01 0.50000E-01 -0.22438E-04 0.70000E-09 + 0.70200E+05 0.24881E+03 0.59307E+02 0.00000E+00 -0.24101E+01 0.77485E+01 0.50000E-01 -0.22134E-04 0.70000E-09 + 0.70700E+05 0.24909E+03 0.59130E+02 0.00000E+00 -0.24708E+01 0.76465E+01 0.50000E-01 -0.21833E-04 0.70000E-09 + 0.71200E+05 0.24938E+03 0.58939E+02 0.00000E+00 -0.25316E+01 0.75446E+01 0.50000E-01 -0.21537E-04 0.70000E-09 + 0.71700E+05 0.24966E+03 0.58737E+02 0.00000E+00 -0.25923E+01 0.74426E+01 0.50000E-01 -0.21245E-04 0.70000E-09 + 0.72200E+05 0.24995E+03 0.58524E+02 0.00000E+00 -0.26530E+01 0.73407E+01 0.50000E-01 -0.20957E-04 0.70000E-09 + 0.72700E+05 0.25023E+03 0.58300E+02 0.00000E+00 -0.27137E+01 0.72388E+01 0.50000E-01 -0.20672E-04 0.70000E-09 + 0.73200E+05 0.25052E+03 0.58065E+02 0.00000E+00 -0.27306E+01 0.71484E+01 0.50000E-01 -0.20392E-04 0.70000E-09 + 0.73700E+05 0.25080E+03 0.57821E+02 0.00000E+00 -0.27257E+01 0.70639E+01 0.50000E-01 -0.20116E-04 0.70000E-09 + 0.74200E+05 0.25109E+03 0.57568E+02 0.00000E+00 -0.27207E+01 0.69794E+01 0.50000E-01 -0.19843E-04 0.70000E-09 + 0.74700E+05 0.25137E+03 0.57305E+02 0.00000E+00 -0.27158E+01 0.68948E+01 0.50000E-01 -0.19574E-04 0.70000E-09 + 0.75200E+05 0.25166E+03 0.57035E+02 0.00000E+00 -0.27109E+01 0.68103E+01 0.50000E-01 -0.19308E-04 0.70000E-09 + 0.75700E+05 0.25194E+03 0.56756E+02 0.00000E+00 -0.27059E+01 0.67258E+01 0.50000E-01 -0.19046E-04 0.70000E-09 + 0.76200E+05 0.25223E+03 0.56470E+02 0.00000E+00 -0.27010E+01 0.66412E+01 0.50000E-01 -0.18788E-04 0.70000E-09 + 0.76700E+05 0.25251E+03 0.56177E+02 0.00000E+00 -0.26961E+01 0.65567E+01 0.50000E-01 -0.18533E-04 0.70000E-09 + 0.77200E+05 0.25280E+03 0.55877E+02 0.00000E+00 -0.26911E+01 0.64722E+01 0.50000E-01 -0.18281E-04 0.70000E-09 + 0.77700E+05 0.25308E+03 0.55570E+02 0.00000E+00 -0.26576E+01 0.64086E+01 0.50000E-01 -0.18032E-04 0.70000E-09 + 0.78200E+05 0.25337E+03 0.55258E+02 0.00000E+00 -0.25826E+01 0.63756E+01 0.50000E-01 -0.17787E-04 0.70000E-09 + 0.78700E+05 0.25365E+03 0.54940E+02 0.00000E+00 -0.25076E+01 0.63426E+01 0.50000E-01 -0.17544E-04 0.70000E-09 + 0.79200E+05 0.25394E+03 0.54617E+02 0.00000E+00 -0.24326E+01 0.63096E+01 0.50000E-01 -0.17305E-04 0.70000E-09 + 0.79700E+05 0.25422E+03 0.54288E+02 0.00000E+00 -0.23576E+01 0.62765E+01 0.50000E-01 -0.17069E-04 0.70000E-09 + 0.80200E+05 0.25451E+03 0.53955E+02 0.00000E+00 -0.22826E+01 0.62435E+01 0.50000E-01 -0.17199E-04 0.70000E-09 + 0.80700E+05 0.25479E+03 0.53635E+02 0.00000E+00 -0.22076E+01 0.62105E+01 0.50000E-01 -0.17875E-04 0.70000E-09 + 0.81200E+05 0.25506E+03 0.53351E+02 0.00000E+00 -0.21326E+01 0.61774E+01 0.50000E-01 -0.18553E-04 0.70000E-09 + 0.81700E+05 0.25532E+03 0.53103E+02 0.00000E+00 -0.20576E+01 0.61444E+01 0.50000E-01 -0.19232E-04 0.70000E-09 + 0.82200E+05 0.25558E+03 0.52891E+02 0.00000E+00 -0.19477E+01 0.61033E+01 0.50000E-01 -0.19912E-04 0.70000E-09 + 0.82700E+05 0.25582E+03 0.52713E+02 0.00000E+00 -0.17577E+01 0.60434E+01 0.50000E-01 -0.20594E-04 0.70000E-09 + 0.83200E+05 0.25606E+03 0.52571E+02 0.00000E+00 -0.15677E+01 0.59836E+01 0.50000E-01 -0.21276E-04 0.70000E-09 + 0.83700E+05 0.25629E+03 0.52462E+02 0.00000E+00 -0.13776E+01 0.59238E+01 0.50000E-01 -0.21960E-04 0.70000E-09 + 0.84200E+05 0.25650E+03 0.52387E+02 0.00000E+00 -0.11876E+01 0.58639E+01 0.50000E-01 -0.22645E-04 0.70000E-09 + 0.84700E+05 0.25671E+03 0.52346E+02 0.00000E+00 -0.99753E+00 0.58041E+01 0.50000E-01 -0.23331E-04 0.70000E-09 + 0.85200E+05 0.25691E+03 0.52339E+02 0.00000E+00 -0.80748E+00 0.57442E+01 0.50000E-01 -0.24018E-04 0.70000E-09 + 0.85700E+05 0.25710E+03 0.52365E+02 0.00000E+00 -0.61744E+00 0.56844E+01 0.50000E-01 -0.24706E-04 0.70000E-09 + 0.86200E+05 0.25728E+03 0.52424E+02 0.00000E+00 -0.42739E+00 0.56245E+01 0.50000E-01 -0.25395E-04 0.70000E-09 + 0.86700E+05 0.25746E+03 0.52517E+02 0.00000E+00 -0.27869E+00 0.55662E+01 0.50000E-01 -0.26085E-04 0.70000E-09 + 0.87200E+05 0.25762E+03 0.52644E+02 0.00000E+00 -0.16950E+00 0.55091E+01 0.50000E-01 -0.26776E-04 0.70000E-09 + 0.87700E+05 0.25777E+03 0.52804E+02 0.00000E+00 -0.60310E-01 0.54521E+01 0.50000E-01 -0.27468E-04 0.70000E-09 + 0.88200E+05 0.25792E+03 0.52999E+02 0.00000E+00 0.48881E-01 0.53951E+01 0.50000E-01 -0.28162E-04 0.70000E-09 + 0.88700E+05 0.25806E+03 0.53228E+02 0.00000E+00 0.15807E+00 0.53381E+01 0.50000E-01 -0.28856E-04 0.70000E-09 + 0.89200E+05 0.25818E+03 0.53492E+02 0.00000E+00 0.26726E+00 0.52811E+01 0.50000E-01 -0.29551E-04 0.70000E-09 + 0.89700E+05 0.25830E+03 0.53791E+02 0.00000E+00 0.37645E+00 0.52241E+01 0.50000E-01 -0.30247E-04 0.70000E-09 + 0.90200E+05 0.25841E+03 0.54127E+02 0.00000E+00 0.48564E+00 0.51671E+01 0.50000E-01 -0.30943E-04 0.70000E-09 + 0.90700E+05 0.25851E+03 0.54499E+02 0.00000E+00 0.59368E+00 0.51092E+01 0.50000E-01 -0.31641E-04 0.70000E-09 + 0.91200E+05 0.25860E+03 0.54908E+02 0.00000E+00 0.69813E+00 0.50483E+01 0.50000E-01 -0.32340E-04 0.70000E-09 + 0.91700E+05 0.25868E+03 0.55356E+02 0.00000E+00 0.80257E+00 0.49874E+01 0.50000E-01 -0.33039E-04 0.70000E-09 + 0.92200E+05 0.25875E+03 0.55842E+02 0.00000E+00 0.90701E+00 0.49266E+01 0.50000E-01 -0.33740E-04 0.70000E-09 + 0.92700E+05 0.25882E+03 0.56369E+02 0.00000E+00 0.10114E+01 0.48657E+01 0.50000E-01 -0.34441E-04 0.70000E-09 + 0.93200E+05 0.25887E+03 0.56937E+02 0.00000E+00 0.11159E+01 0.48048E+01 0.50000E-01 -0.35143E-04 0.70000E-09 + 0.93700E+05 0.25892E+03 0.57547E+02 0.00000E+00 0.12203E+01 0.47440E+01 0.50000E-01 -0.35846E-04 0.70000E-09 + 0.94200E+05 0.25895E+03 0.58201E+02 0.00000E+00 0.13248E+01 0.46831E+01 0.50000E-01 -0.36549E-04 0.70000E-09 + 0.94700E+05 0.25898E+03 0.58900E+02 0.00000E+00 0.14205E+01 0.46165E+01 0.50000E-01 -0.37254E-04 0.70000E-09 + 0.95200E+05 0.25900E+03 0.59645E+02 0.00000E+00 0.15136E+01 0.45480E+01 0.50000E-01 -0.37959E-04 0.70000E-09 + 0.95700E+05 0.25288E+03 0.99946E+02 0.11849E-03 0.16066E+01 0.44796E+01 0.50000E-01 -0.37750E-04 0.70000E-09 + 0.96200E+05 0.25321E+03 0.99959E+02 0.99765E-04 0.16996E+01 0.44112E+01 0.45881E-01 0.40903E-04 0.78319E-08 + 0.96700E+05 0.25354E+03 0.99970E+02 0.80796E-04 0.17926E+01 0.43427E+01 0.41763E-01 0.25862E-04 0.80702E-08 + 0.97200E+05 0.25386E+03 0.99980E+02 0.61587E-04 0.18856E+01 0.42743E+01 0.37644E-01 0.10821E-04 0.83086E-08 + 0.97700E+05 0.25418E+03 0.99988E+02 0.42139E-04 0.19976E+01 0.42002E+01 0.33526E-01 0.14506E-05 0.85815E-08 + 0.98200E+05 0.25450E+03 0.99994E+02 0.22453E-04 0.21374E+01 0.41177E+01 0.29407E-01 0.41167E-06 0.89052E-08 + 0.98700E+05 0.25482E+03 0.99999E+02 0.25312E-05 0.22772E+01 0.40351E+01 0.25288E-01 -0.62730E-06 0.92289E-08 + 0.99200E+05 0.25518E+03 0.97742E+02 0.00000E+00 0.24170E+01 0.39526E+01 0.21170E-01 -0.16663E-05 0.95526E-08 + 0.99700E+05 0.25555E+03 0.95238E+02 0.00000E+00 0.25568E+01 0.38701E+01 0.17051E-01 -0.27052E-05 0.98763E-08 + 0.10020E+06 0.25591E+03 0.92814E+02 0.00000E+00 0.26790E+01 0.36221E+01 0.12932E-01 0.12203E-06 0.80630E-08 + 0.10070E+06 0.25628E+03 0.90469E+02 0.00000E+00 0.27895E+01 0.32622E+01 0.88138E-02 0.55661E-05 0.48031E-08 + 0.10120E+06 0.25664E+03 0.88198E+02 0.00000E+00 0.28999E+01 0.29023E+01 0.46952E-02 0.11010E-04 0.15432E-08 + 0.10170E+06 0.25700E+03 0.86000E+02 0.00000E+00 0.29160E+01 0.28497E+01 0.57661E-03 0.11805E-04 0.10673E-08 diff --git a/Simulation3d.pyx b/Simulation3d.pyx index 43e85db2..47c90228 100644 --- a/Simulation3d.pyx +++ b/Simulation3d.pyx @@ -98,7 +98,6 @@ class Simulation3d: self.MD.initialize(self.Gr,self.PV,self.DV,self.StatsIO, self.Pa) self.TS.initialize(namelist,self.PV,self.Pa) - self.Sur.initialize(self.Gr, self.Ref, self.StatsIO, self.Pa) if self.Restart.is_restart_run: self.Pa.root_print('This run is being restarted!') @@ -125,6 +124,7 @@ class Simulation3d: SetInitialConditions(namelist,self.Gr, self.PV, self.Ref, self.Th, self.StatsIO, self.Pa, self.LH) del SetInitialConditions + self.Sur.initialize(self.Gr, self.Ref, self.StatsIO, self.Pa) self.Pr.initialize(namelist, self.Gr, self.Ref, self.DV, self.Pa) self.DV.initialize(self.Gr, self.StatsIO, self.Pa) self.Fo.initialize(self.Gr, self.Ref, self.Th, self.StatsIO, self.Pa) @@ -217,6 +217,7 @@ class Simulation3d: if self.FieldsIO.last_output_time + self.FieldsIO.frequency == self.TS.t: self.Pa.root_print('Doing 3D FieldIO') self.Th.update(self.Gr, self.Ref, self.PV, self.DV) + self.Micro.micro_fields(self.Gr, self.Ref, self.PV, self.DV) #For snow depo only self.FieldsIO.last_output_time = self.TS.t self.FieldsIO.update(self.Gr, self.PV, self.DV, self.TS, self.Pa) self.FieldsIO.dump_prognostic_variables(self.Gr, self.PV) @@ -294,6 +295,7 @@ class Simulation3d: self.Pa.root_print('Doing 3D FieldIO') self.Th.update(self.Gr, self.Ref, self.PV, self.DV) + self.Micro.micro_fields(self.Gr, self.Ref, self.PV, self.DV) #For snow depo only self.FieldsIO.update(self.Gr, self.PV, self.DV, self.TS, self.Pa) self.FieldsIO.dump_prognostic_variables(self.Gr, self.PV) self.FieldsIO.dump_diagnostic_variables(self.Gr, self.DV, self.Pa) diff --git a/Surface.pxd b/Surface.pxd index 7d6f0746..49f84231 100644 --- a/Surface.pxd +++ b/Surface.pxd @@ -7,6 +7,7 @@ cimport TimeStepping from SurfaceBudget cimport SurfaceBudget from Thermodynamics cimport LatentHeat, ClausiusClapeyron from NetCDFIO cimport NetCDFIO_Stats +cimport Restart cdef class SurfaceBase: @@ -26,8 +27,8 @@ cdef class SurfaceBase: double (*Lambda_fp)(double T) nogil cpdef initialize(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) - cpdef init_from_restart(self, Restart) - cpdef restart(self, Restart) + cpdef init_from_restart(self, Restart.Restart Re) + cpdef restart(self, Restart.Restart Re) cpdef update(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV,ParallelMPI.ParallelMPI Pa, TimeStepping.TimeStepping TS) cpdef stats_io(self, Grid.Grid Gr, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) @@ -151,6 +152,7 @@ cdef class SurfaceIsdacCC(SurfaceBase): double ft cpdef initialize(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) + cpdef init_from_restart(self, Restart.Restart Re) cpdef update(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV, ParallelMPI.ParallelMPI Pa, TimeStepping.TimeStepping TS) cpdef stats_io(self, Grid.Grid Gr, NetCDFIO_Stats NS, ParallelMPI.ParallelMPI Pa) diff --git a/Surface.pyx b/Surface.pyx index cd9c9bc5..65ca1c2b 100644 --- a/Surface.pyx +++ b/Surface.pyx @@ -11,6 +11,7 @@ cimport DiagnosticVariables cimport ParallelMPI cimport TimeStepping cimport Radiation +cimport Restart from Thermodynamics cimport LatentHeat,ClausiusClapeyron from SurfaceBudget cimport SurfaceBudget from NetCDFIO cimport NetCDFIO_Stats @@ -105,12 +106,12 @@ cdef class SurfaceBase: NS.add_ts('buoyancy_flux_surface_mean', Gr, Pa) return - cpdef init_from_restart(self, Restart): - self.T_surface = Restart.restart_data['surf']['T_surf'] + cpdef init_from_restart(self, Restart.Restart Re): + self.T_surface = Re.restart_data['surf']['T_surf'] return - cpdef restart(self, Restart): - Restart.restart_data['surf'] = {} - Restart.restart_data['surf']['T_surf'] = self.T_surface + cpdef restart(self, Restart.Restart Re): + Re.restart_data['surf'] = {} + Re.restart_data['surf']['T_surf'] = self.T_surface return cpdef update(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, @@ -1076,6 +1077,9 @@ cdef class SurfaceIsdacCC(SurfaceBase): SurfaceBase.initialize(self,Gr,Ref,NS,Pa) return + cpdef init_from_restart(self, Restart.Restart Re): + SurfaceBase.init_from_restart(self, Re) + return cpdef update(self, Grid.Grid Gr, ReferenceState.ReferenceState Ref, PrognosticVariables.PrognosticVariables PV, DiagnosticVariables.DiagnosticVariables DV, ParallelMPI.ParallelMPI Pa, TimeStepping.TimeStepping TS): diff --git a/ThermodynamicsSA.pyx b/ThermodynamicsSA.pyx index 06cf3950..f808d912 100644 --- a/ThermodynamicsSA.pyx +++ b/ThermodynamicsSA.pyx @@ -111,6 +111,7 @@ cdef class ThermodynamicsSA: NS.add_profile('theta_mean3', Gr, Pa) NS.add_profile('theta_max', Gr, Pa) NS.add_profile('theta_min', Gr, Pa) + NS.add_profile('theta_flux_z', Gr, Pa) NS.add_ts('theta_max', Gr, Pa) NS.add_ts('theta_min', Gr, Pa) @@ -269,6 +270,7 @@ cdef class ThermodynamicsSA: Py_ssize_t count Py_ssize_t s_shift = PV.get_varshift(Gr, 's') Py_ssize_t qt_shift = PV.get_varshift(Gr, 'qt') + Py_ssize_t w_shift = PV.get_varshift(Gr, 'w') double[:] data = np.empty((Gr.dims.npg,), dtype=np.double, order='c') double[:] tmp @@ -350,6 +352,10 @@ cdef class ThermodynamicsSA: NS.write_profile('theta_min', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) NS.write_ts('theta_min', np.amin(tmp[Gr.dims.gw:-Gr.dims.gw]), Pa) + # Compute and write vertical flux of theta + tmp = Pa.HorizontalMeanofSquares(Gr, &PV.values[w_shift], &data[0]) + NS.write_profile('theta_flux_z', tmp[Gr.dims.gw:-Gr.dims.gw], Pa) + cdef: Py_ssize_t qv_shift = DV.get_varshift(Gr,'qv') diff --git a/generate_namelist.py b/generate_namelist.py index 7fbdc7bd..9674fa4f 100644 --- a/generate_namelist.py +++ b/generate_namelist.py @@ -984,15 +984,15 @@ def IsdacCC(): namelist['initial'] = {} namelist['initial']['SST'] = 265.0 #initial surface temperature - namelist['initial']['dTi'] = 7.0 #temperature jump at the inversion + namelist['initial']['dTi'] = 5.0 #temperature jump at the inversion namelist['initial']['rh0'] = 0.8 #Surface relative humidity namelist['initial']['gamma'] = 5.0/1000. #free tropospheric lapse rate namelist['initial']['rh'] = 0.6 #free tropospheric relative humidity namelist['initial']['z_top'] = 820.0 #top of mixed layer namelist['initial']['dzi'] = 30.0 #inversion height - namelist['initial']['dSST'] = 8.0 #SST change (climate change) + namelist['initial']['dSST'] = 0.0 #SST change (climate change) namelist['initial']['divergence'] = 5.0e-6 # LS divergence - namelist['initial']['fix_dqt'] = True + namelist['initial']['fix_dqt'] = False namelist['surface'] = {} namelist['surface']['sensible'] = 0.0 #surface sensible heat flux Wm-2 @@ -1003,7 +1003,16 @@ def IsdacCC(): namelist['radiation']['RRTM']['frequency'] = 60.0 namelist['radiation']['RRTM']['buffer_points'] = 15 namelist['radiation']['RRTM']['patch_pressure'] = 600.0*100.0 - namelist['radiation']['RRTM']['adjes'] = 0.0 + # namelist['radiation']['RRTM']['adjes'] = 0.0 + namelist['radiation']['RRTM']['latitude'] = 71.32 + namelist['radiation']['RRTM']['longitude'] = -156.61 + namelist['radiation']['RRTM']['dyofyr'] = 117 + namelist['radiation']['RRTM']['daily_mean_sw'] = True + namelist['radiation']['RRTM']['hourz'] = 18.0 + namelist['radiation']['RRTM']['adir'] = 0.85 #Spring value from Persson et al. (2002) + namelist['radiation']['RRTM']['adif'] = 0.85 # Spring value from Persson et al. (2002) + namelist['radiation']['RRTM']['coszen'] = 0.233 #Prescribe cosine of solar zenith angle + namelist['radiation']['RRTM']['solar_constant'] = 1360.0*0.233/namelist['radiation']['RRTM']['coszen'] namelist['output'] = {} namelist['output']['output_root'] = './' @@ -1022,10 +1031,10 @@ def IsdacCC(): namelist['fields_io'] = {} namelist['fields_io']['fields_dir'] = "fields" namelist['fields_io']['frequency'] = 36000.0 - namelist['fields_io']['diagnostic_fields'] = ['ql','temperature','buoyancy_frequency','viscosity'] + namelist['fields_io']['diagnostic_fields'] = ['snow_depo', 'buoyancy', 'thetali'] namelist['meta'] = {} - namelist['meta']['simname'] = 'IsdacCC' + namelist['meta']['simname'] = 'IsdacCC_SW' namelist['meta']['casename'] = 'IsdacCC' return namelist diff --git a/generate_parameters_a1m.py b/generate_parameters_a1m.py index 7e277136..42a203b0 100644 --- a/generate_parameters_a1m.py +++ b/generate_parameters_a1m.py @@ -2,6 +2,7 @@ from collections import OrderedDict from scipy.special import gamma + def main(): default_arctic() #Generate the default microphysical parameters for the Arctic Mixed-Phase scheme return diff --git a/profiles.py b/profiles.py index b17db4c9..9c50bef6 100644 --- a/profiles.py +++ b/profiles.py @@ -248,7 +248,7 @@ 4.01368389e-6, 3.99578403e-6, 3.96328429e-6, 3.93488452e-6]) profile_data['arctic']['vapor_mixing_ratio'] = profile_data['arctic']['specific_humidity'] / (1.0 - profile_data['arctic']['specific_humidity']) -profile_data['arctic']['o3_mr'] = np.array([2.29865000e-5, 2.30413000e-5, 2.31245000e-5, 2.32422000e-5, +profile_data['arctic']['o3_mmr'] = np.array([2.29865000e-5, 2.30413000e-5, 2.31245000e-5, 2.32422000e-5, 2.33976000e-5, 2.36059000e-5, 2.38659000e-5, 2.41841000e-5, 2.45592000e-5, 2.49994000e-5, 2.55411000e-5, 2.61804000e-5, 2.68984000e-5, 2.76856000e-5, 2.80097000e-5, 2.82597000e-5,