def test_rh_spec_humidity(self): """Tests specific humidity -> RH calculation Starting from an RH, an atmospheric pressure and temperature, calculate specific humidity. Then check to see if the tested code can reproduce the RH we started with. """ rh = 25 * u.pct p = 1 * u.bar t = 25 * u.deg_C e_sat = vp.calc_vp(t) w_sat = m.mixing_ratio(e_sat, p) w = rh * w_sat # get vapor pressure from definition of RH e = p * w / (m.EPSILON + w) # mixing ratio solved for e # calculate specific humidity using eq 2.19 q = m.EPSILON * (e / (p - (1 - m.EPSILON) * e)) rh_test = m.calc_rh_spec_humidity(q, p, t) self.assertTrue(np.abs(rh - rh_test) < 0.1 * u.pct, msg="test RH: {:3.1} ; calculated RH: {:3.1}".format( rh, rh_test))
def compute_rh(self) : """Compute RH for the current utc day This calls "next()" on the internal RH object. No need to manage it.""" bufs = self.get_buffer_group() derived = self.get_derived_buffers() if "rh" in derived.group : # one day big p = bufs.get('PSurf').get_utc_day() q = bufs.get('Qair').get_utc_day() t = bufs.get('Tair').get_utc_day() rh = derived.get('rh') rh.source = met.calc_rh_spec_humidity(q,p,t) rh.next() else : # 2 days big p = bufs.get('PSurf').get_buffer() q = bufs.get('Qair').get_buffer() t = bufs.get('Tair').get_buffer() rh = derived.create_computed("rh",met.calc_rh_spec_humidity(q,p,t), u.pct) return rh
def compute_rh(self): """Compute RH for the current utc day This calls "next()" on the internal RH object. No need to manage it.""" bufs = self.get_buffer_group() derived = self.get_derived_buffers() if "rh" in derived.group: # one day big p = bufs.get('PSurf').get_utc_day() q = bufs.get('Qair').get_utc_day() t = bufs.get('Tair').get_utc_day() rh = derived.get('rh') rh.source = met.calc_rh_spec_humidity(q, p, t) rh.next() else: # 2 days big p = bufs.get('PSurf').get_buffer() q = bufs.get('Qair').get_buffer() t = bufs.get('Tair').get_buffer() rh = derived.create_computed("rh", met.calc_rh_spec_humidity(q, p, t), u.pct) return rh
def test_rh_spec_humidity(self) : """Tests specific humidity -> RH calculation Starting from an RH, an atmospheric pressure and temperature, calculate specific humidity. Then check to see if the tested code can reproduce the RH we started with. """ rh = 25 * u.pct p = 1 * u.bar t = 25 * u.deg_C e_sat = vp.calc_vp(t) w_sat = m.mixing_ratio(e_sat, p) w = rh * w_sat # get vapor pressure from definition of RH e = p*w/(m.EPSILON + w) # mixing ratio solved for e # calculate specific humidity using eq 2.19 q = m.EPSILON * (e/(p-(1-m.EPSILON)*e)) rh_test = m.calc_rh_spec_humidity(q, p, t) self.assertTrue(np.abs(rh-rh_test) < 0.1 * u.pct, msg="test RH: {:3.1} ; calculated RH: {:3.1}".format(rh, rh_test))