在namelist.input中,有个高度的分层。在一般的研究中,我们常以海拔高度,位势高度作为分层的标准。但是在模式中,由于每个地区的下垫面都不一样,有的平原有的高原,有的湖泊有的高山,即使在一个很小的区域,地面的海拔高度也不一样,所以按照位势高度来分层,就显得十分不合适。于是就有了eta坐标。
先来看看namelist.input中的设置:
e_vert = 27, 27, 27, 27,
eta_levels = 1.000, 0.999, 0.998, 0.996,
0.995, 0.993, 0.9922, 0.991,
0.989, 0.985,
0.978, 0.965,
0.945, 0.924,
0.904, 0.848,
0.747, 0.646,
0.545, 0.444,
0.343, 0.242,
0.141, 0.091, 0.061,
0.020, 0.000,
这个例子是垂直方向分为27层。从数值上看,分层都在0---1内。先来看看eta坐标,
eta=(P-Ptop)/(Pbot-Ptop)
P代表某一层的气压,也就是你需要研究的那一层,Ptop代表模式顶层气压,Pbot代表地面气压。(WRF中好像是10hpa,不太确定)。从表达式可以看出,地面的eta值就是1,顶层就是0。这样一来,无论某个地区的下垫面的海拔高度是多少,它的eta坐标值都统一成1。
当然,在模式的结果分析中,我们更想知道的是某个eta坐标对应的位势高度,比如说我们要研究离地60m高度的风速,就有必要进行二者转换。
常见的转换式是 gmp=(PH+PHB)/9.81-HGT
结果就是离地位势高度值,PH和PHB以及HGT都是模式结果中已有的变量。HGT是当地地面海拔高度。
在3.2的版本中已经有了height这个变量,可以直接对应海拔高度。经计算,发现其值和上式计算结果几乎一致,注意单位换算。
如果需要更精确的结果,则
gmp=(((PH(k)+PH(k+1)) / 2) + ((PHB(k)+(PHB(k+1)) / 2) / 9.81 – HGT
这个动力论坛上对于上面两个表达式的对比回答:
Firstly, the result of (PH+PHB)/9.8 is the height above sea level that is not what you need to check. For horizontal winds, some prognostic variables, and diagnostic variables, the center of the cell should be used. The center height above surface, absolute altitude should be calculated by running average from the top and bottom:
(((PH(k)+PH(k+1)) / 2) + ((PHB(k)+(PHB(k+1)) / 2) / 9.81 – HGT,
where PH and PHB are staggered in the vertical direction, meaning that they are at the tops and bottoms of grid cells. HGT is terrain height. This center height of grid cell is changing from model time to time based on definition of eta vertical coordinate system. You never get it fixed. So you cannot get the answer to your question by re-setting eta levels.
Secondly, for scalar properties such as temperature, tracer concentration, the modeled result spatially represents at the center of grid cell and shows a homogeneous value within entire grid box. That means the modeled value is constant from bottom to top of the grid cell. What you think about is the sub-scaled. You may use Monin-Obukov similarity theory to derive the modeled value at the height of 4.4m at which your monitor is set. For doing this you may copy the way to calculate those diagnostic variables like T2, Q2 in the model. (But U10 and V10 are different). Due to limitation of M-O theory and model as well as observation technology I am not sure you can get your results much improved even at such a small different height of 0.3 m (4.7m – 4.4m). Normally we can directly compare the modeled result and observed one obtained at surface layer. However it highly depends on what kind of parameter you are dealing with and what accuracy requirements for this measurement are. I do not know what observation you made.
到这里,依然没有说完,因为上面的表达式涉及到的都是气压值,我们在实际研究中,气压值并不是那么容易得到的。那么,有什么好方法可以直接从eta值就能对应上位势高度呢???
对于这个问题,至今好像还没有十分完美的方法可以解决,至少我还没看到。
但是,也可以尝试性的探索,下面说说我的做法。
以上面贴出来的namelist.input中的eta值的设置为例,比如说我们要得到离地高度60m的某变量。
先按照上面默认的eta值运行下去(在跑wrf时,可以先只算一个小时的数据,因为现在还属于试验阶段),得到模式结果后,你就可以画出每个eta值对应的height的等值线图了,这样你就可以看出每个eta对应的离地高度值。这样,得到的结果,可能是eta=0.993对应的位势高度是57m, eta=0.9922对应的是66m,这样一来,你就知道eta值对应的60m的范围了(0.993-0.9922)。第一次试验结束,现在你就把0.993改为0.9928,大概差不多,下次你的结果就基本是60m了,当然你也可能第二次试验。由于eta坐标是等气压值坐标,所以每个eta面上的位势高度都不可能相等。也就是说等气压面并不是一个平面,所以无论你怎么调节都不可能全部等于60m。 所以在60m左右就可以了,一般会在59-61m。相当不大。
好了,说了这么多,有可能有些错误,更有可能有更好的方法,望大家都不吝赐教。
转自气象家园:http://bbs.06climate.com/forum.php?mod=viewthread&tid=1860&extra=page%3D2&page=1