爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5026|回复: 2

[作图] 求教各位大神呀,湿绝热线绘制问题

[复制链接]
发表于 2017-11-17 18:49:38 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 FuXiu 于 2017-11-18 10:48 编辑

最近在绘制探空图,卡在了湿绝热线这里,也查找了很多相关资料未果,有的公式出处不明确不敢用,有的变量未说明不能用(不是本专业的看不太懂,哎),有的找到公式了,但是计算出来不知道是否准确,误差在不在允许范围内。大气物理也说了如下内容:
1511018566(1).png
个人觉得既然不能明确绘制湿绝热线,只能是根据公式迭代出t(温度)的值了,那么最关键的就是要精确算出假相当位温的值(求大神指正思路呀)
目前找到两个觉得靠谱的方法:
t代表温度(也想明确这个温度具体值什么温度呢),de代表露点温度,P代表气压。
方法一:
借鉴了 活在当下de 帖子:  http://bbs.06climate.com/forum.php?mod=viewthread&tid=32336
public static double Get_θse_Value(double t, double de, double P)  
{
            double T =t + 273.15;                 
            double es = Get_E_Value(t);
            double rhum_ave = (Math.Pow(10, (7.5 * de) / ((237.3 + de) * 1.0f))) / (Math.Pow(10, (7.5 * t) / ((237.3 + t) * 1.0f))) * 100;
            double q = rhum_ave * (0.62197 * es / (P - 0.378 * es)) / 100;
            double e = P * q / (0.62197 + q) + Math.Pow(10, -10);
            double tlcl = 55 + 2840 / (3.5 * Math.Log(T, Math.E) - Math.Log(e, Math.E) - 4.805);//55 + 2840 / (3.5 * Math.Log(T) - Math.Log(e) - 4.805);
            double theta = T * Math.Pow((1000 / P), (0.2854 * (1.0 - 0.28 * q)));
            double θse = theta * Math.Exp(((3376 / tlcl) - 2.54) * q * (1.0 + 0.81 * q));
            double tθse =θse - 273.15;           
            return tθse;
}

  public static double Get_E_Value(double t)
{
            if (t <= 0)
            {
                return 6.112 * Math.Exp((17.67 * t) / ((t + 243.5) * 1.0f));               
            }
            else
            {
                return 6.11 * Math.Pow(10, (7.5 * t) / ((237.3 + t) * 1.0f));
            }
}
QQ截图20150123132046.png
计算出来的结果,比原帖子的值误差了0.1~0.2。 1511018093(1).png


方法二:
我在万能的帖子里下载了《大气物理学》盛裴轩 版 北京大学出版社(具体谁的帖子忘记了,贡献的楼主太不好意思了,看的帖子太多了)
通过查找书籍得出了以下公式: 1511017833(1).png
public static double Get_θse_Value(double t, double de, double P)  
{
            double T =t + 273.15;   
            double es = Get_E_Value(de);
            double rs = 0.622 * es / ((P - es) * 1.0f);
            double θd = Math.Round(T * Math.Pow((1000 / (P * 1.0)), 0.286, 1);
            double Lv = 2.5 * Math.Pow(10, 6) - 2323 * t;
            double θse = θd * Math.Exp(rs * Lv / (1004 * T));
            double tθse =θse - 273.15;           
            return tθse;
}
计算结果和方法一差距更大,简直想哭呀, 1511018224(1).png
请教各位大神,我计算哪里失误了呢?小女子在这里谢过啦。这次第,怎一个愁字了得!



QQ截图20150123132046.png
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-11-20 11:24:26 | 显示全部楼层
请大神关注一下呀!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-11-27 12:19:08 | 显示全部楼层
已经解决了,完美,哈哈
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表