水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作

这篇具有很好参考价值的文章主要介绍了水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我之前提出了一个水汽通量廓线关系,这项工作偏理论,如果对下面说的背景不了解的话可以看下

https://agupubs.onlinelibrary.wiley.com/share/YNSG74MV8B8BAAUMCHN3?target=10.1029/2022JD036708

那会没把提出的水汽稳定度修正函数加到CAS-ESM,当时对CAS-ESM模式还没这么熟悉,也想着师兄能帮我,但是师兄太忙了。现在我对模式已经比较熟悉啦,之前又把师兄加COARE的工作重复了一下,万事俱备只欠东风了。

试验设计:

为了探究温度稳定度修正函数psit和比湿稳定度修正函数对湍流潜热通量的模拟差异,我们采用CAS-ESM2.0全耦合模式,设置了两组实验,除了湍流通量方案中稳定度修正函数以外,两组实验的其他设置都是相同的。我们将采用Psit的COARE算法的CAS-ESM耦合模式作为控制实验(CTRL),我们将采用Psiq的COARE算法的CAS-ESM耦合模式定义为实验一(EXP1)。两组实验都是初始积分(startup)开始,为了防止非平衡初值或扰动的条件下模式调整到平衡态的过程对实验结果影响,我们的两组实验均积分10年,从1995年1月1日到2004年12月31日,并选取2000年到2004年的数据进行分析。

技术细节写在这里:

我已经编写了模式的运行脚本,我也将COARE算法放入到了CAS-ESM中,现在只要在module_coare_model.f90中增加我的psiq的计算子程序再调用就可以了。

 

 real function psiq_26(zet)
!% computes specific humidity  structure function (ma,2022)
 
    real(r8) :: zet
    real(r8) :: dzet, psi, x, psik, psic, f

    dzet = min(50.,0.35*zet) !% stable
    psiq_26 = -0.6*zet
    if(zet < 0.) then !% unstable
      x = (1.-15.*zet)**0.5
      psik = 2.*log((1.+x)/2.)
      x = (1.-34.15*zet)**0.3333
      psic = 1.5*log((1.+x+x*x)/3.) - sqrt(3.)*atan((1.+2.*x)/sqrt(3.)) + &
        4.*atan(1.)/sqrt(3.)
      f = zet*zet/(1.+zet*zet)
      psiq_26 = (1.-f)*psik + f*psic
    endif
  end function psiq_26

在稳定的时候调用我们的比湿稳定度修正函数,计算潜热通量。下面是我的调试用的脚本,每次只要./tiaoshi.sh就可以自动进行模式运行试验了。我把这次试验叫HIST_coare_psiq_ri。

#case试验名称
CASE_NAME='HIST_coare_psiq_ri' 
#试验开始年月日YYYYMMDD
start_ymd='20000101'
stop_option='nyears'
stop_n='1'

#判断和删除残留文件夹

if [ -d "/data/chengxl/CAS-ESM2.0-test1/scripts/${CASE_NAME}" ]; then
    rm -r /data/chengxl/CAS-ESM2.0-test1/scripts/${CASE_NAME}
fi

if [ -d "/data/chengxl/CAS-ESM2.0-test1/run/${CASE_NAME}" ]; then
    rm -r /data/chengxl/CAS-ESM2.0-test1/run/${CASE_NAME}
fi

#创建case试验和编译
cd /data/chengxl/CAS-ESM2.0-test1/scripts

./create_newcase -case ${CASE_NAME} -compset HIST_C6_C -res fd14_licom -mach huan_default

cd /data/chengxl/CAS-ESM2.0-test1/scripts/${CASE_NAME}

./configure -case

./${CASE_NAME}.huan_default.build



#运行试验前的设置

cd /data/chengxl/CAS-ESM2.0-test1/run/${CASE_NAME}/run 

#cp /data/chengxl/CAS-ESM2.0-test1/run_demo/atm_in . 
#cp /data/chengxl/CAS-ESM2.0-test1/run_demo/drv_in . 


#输出变量管理
sed -i "12 a\\nhtfrq=0,0" atm_in
sed -i "13 a\\fincl1 = 'lhf_tbf','tau_tbf' ,'shf_tbf','n2','pbl_h','h_wave','tau_coare','hsb_coare','hlb_coare', 'LHFLX', 'SHFLX','qsss'" atm_in
sed -i "14 a\\fincl2 = 'lhf_tbf','tau_tbf','shf_tbf','tau_coare','hsb_coare','hlb_coare','h_wave' ,'h_wave_ln','pbl_h','ustar','obklen','n2','LHFLX','SHFLX','ri'"  atm_in


#运行时间控制
sed -i "1,$ s/continue/startup/g" drv_in
sed -i "1,$ s/start_ymd      =  00010101/start_ymd      =${start_ymd}/g" drv_in 
sed -i "1,$ s/ndays/${stop_option}/g" drv_in
sed -i "1,$ s/stop_n         = 5/stop_n         =${stop_n}/g" drv_in
sed -i "1,$ s/restart_n      = 5/restart_n      =${stop_n}/g" drv_in

cp /data/chengxl/CAS-ESM2.0-test1/run_demo/run.slurm .
sbatch run.slurm
sleep 2
squeue
sleep 2 

经过二十四小时左右的运行,模式结果全部都输出好了,没有错误。我们对模式的输出进行分析。

我将我的边界层模块的变量都放在了h1文件中。我们首先查看12月的都在。

(base) [chengxl@login01 run]$ ls B20TR_C35_y100.iap.h1.2000-*

B20TR_C35_y100.iap.h1.2000-01.nc B20TR_C35_y100.iap.h1.2000-05.nc B20TR_C35_y100.iap.h1.2000-09.nc

B20TR_C35_y100.iap.h1.2000-02.nc B20TR_C35_y100.iap.h1.2000-06.nc B20TR_C35_y100.iap.h1.2000-10.nc

B20TR_C35_y100.iap.h1.2000-03.nc B20TR_C35_y100.iap.h1.2000-07.nc B20TR_C35_y100.iap.h1.2000-11.nc

B20TR_C35_y100.iap.h1.2000-04.nc B20TR_C35_y100.iap.h1.2000-08.nc B20TR_C35_y100.iap.h1.2000-12.nc

 我们首先将其转化为一年平均的,因为是地球系统模式,所以分析年平均是有意义的,时间太短反而科学性有待考量。我们用一句语句来解决:

ls B20TR_C35_y100.iap.h1.2000-* | xargs -I{} cdo yearmean {} CASESM-COARE-psiq.2000ym.nc
 
 

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo).nc

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.27s 50MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.31s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.39s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.31s 50MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.30s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.44s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.37s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.19s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.32s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.49s 49MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.31s 50MB].

cdo: /public/software/apps/anaconda3/5.3.0/lib/libuuid.so.1: no version information available (required by cdo)

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable date_written!

Warning (cdfCheckVars): Unsupported data type (char/string), skipped variable time_written!

cdo yearmean: Processed 2720139 values from 29 variables over 1 timestep [0.23s 49MB].

 成功得到了我们想要的数据CASESM-COARE-psiq.2000ym.nc

因为我比较习惯于使用本地主机上的Python还有panoply来分析我的结果,所以我先用ftp把我的资料从超算上下载到本地。

水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作,地球系统模式,科研画图,linux,地球系统模式,fortran,linux,python

我们用panoply来简单看一下潜热的计算结果。

水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作,地球系统模式,科研画图,linux,地球系统模式,fortran,linux,python

先保存一下,hlb_coare_in_CASESM-COARE-psiq.2000ym.png

然后我们再看下如果是原先用psit计算出来的潜热通量

水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作,地球系统模式,科研画图,linux,地球系统模式,fortran,linux,python

我们看到计算出来的结果是合理的。比原先的潜热模拟值要大,这也是我们预料之内的。因为稳定度参数随着稳定度的增加减少量是变小的,这样的话分母变小,系数是相对变大的。

水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作,地球系统模式,科研画图,linux,地球系统模式,fortran,linux,python

哦对了,因为极地区域没有经过处理,所以也是偏大的。这一点还存在一点问题。下次修改代码的时候把极地的通量采用原先的计算结果。就是在海冰的时候不该使用COARE算法。

除了这个问题,其他没有问题了。我们开始用Python来进行一些简单的数据处理。就是和OAflux潜热,以及Psiq,Psit,之间的对比


ctrl_data = xr.open_dataset(r'H:\fluxdeepl\CAS_ESM_psi_test\CASESM-COARE-psit.2000ym.nc', engine='netcdf4')

exp1_data = xr.open_dataset(r'H:\fluxdeepl\CAS_ESM_psi_test\CASESM-COARE-psiq.2000ym.nc', engine='netcdf4')

oaflux_data = xr.open_dataset(r'H:\fluxdeepl\CAS_ESM2_flux_test\latent256X128.nc', engine='netcdf4')

lhf_ctrl = ctrl_data.hlb_coare.data
lhf_ctrl = np.squeeze(lhf_ctrl, axis = 0)

lhf_exp1 = exp1_data.hlb_coare.data
lhf_exp1 = np.squeeze(lhf_exp1, axis = 0)


lhf_oa   = oaflux_data.lhtfl.data[192:204,:,:]
lhf_oa = np.nanmean(lhf_oa,axis = 0)

exp1_oa = lhf_exp1 - lhf_oa
ctrl_oa = lhf_ctrl - lhf_oa 
exp1_ctrl = lhf_exp1 - lhf_ctrl
write_to_nc_1(lhf_oa,'oa.nc')
write_to_nc_1(lhf_exp1,'psiq.nc')
write_to_nc_1(lhf_ctrl,'psit.nc')
write_to_nc_1(exp1_oa,'psiq_oa.nc')
write_to_nc_1(ctrl_oa,'psit_oa.nc')
write_to_nc_1(exp1_ctrl,'psiq_psit.nc')

 然后我们就用panpoly来画图了,懒得用NCL或者python画了。

水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作,地球系统模式,科研画图,linux,地球系统模式,fortran,linux,python

我们可以看见:

1.潜热通量对水汽稳定度修正函数响应较大。

2.热带海气边界层湍流潜热通量的模拟有所改进。文章来源地址https://www.toymoban.com/news/detail-785397.html

到了这里,关于水汽稳定度修正函数\Psi_q对潜热通量影响--模式验证工作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 出现身份验证错误,要求的函数不受支持,这可能是由于CredSSP加默Oracle修正

    windows 11 远程桌面提示:出现身份验证错误,要求的函数不受支持,这可能是由于CredSSP加默Oracle修正 处理办法: 首先,在控制台(或win + R)中输入regedit,打开注册表; 接着按照以下目录依次展开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystem,接着在System目录下

    2024年01月21日
    浏览(50)
  • windows远程连接出现身份验证错误,要求的函数不受支持,这可能是由于credssp加密数据库修正解决办法

    第一种解决办法 WIN+R 运行 gpedit.msc: 本地组策略: 计算机配置管理模板系统凭据分配加密数据库修正 选择启用并选择易受攻击。 第二种解决办法 WIN+R,运行gpedit.msc 打开注册表,进入下面路径 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters 右击Sy

    2024年02月16日
    浏览(50)
  • 索引和PSI存根 (Indexing and PSI Stubs)

    通过索引可以快速查找元素,例如:在代码库中,查找包含某个单词或某个方法的文件。插件开发者可以使用IDE已有的索引来构建和使用自己的索引。 有以下2种索引: 文件索引 :基于文件内容构建的索引。通过该索引可以直接搜索到符合指定条件的文件 Stud索引 :基于序列

    2024年02月03日
    浏览(25)
  • 使用 c++ 在 windows 上稳定定时执行一个函数

    这里主要用到的几个 win32api 为 MMRESULT timeBeginPeriod 使用该 api 需要链接 Winmm , 所以我们在文件顶部加入 #pragma comment( lib, \\\"Winmm\\\" ) . 它的作用是请求提高一些计时器的精度比如这里的 Sleep , 默认 windows 似乎只会给我们提供 10ms 左右很粗糙的精度, 所以这里我们直接请求尽可能的高

    2024年02月16日
    浏览(46)
  • PSI算法经典论文算法概述

    隐私求交是多方安全计算中的密码学技术,它允许数据持有方通过比较加密集合计算得到交集,且任何一方都不会获得其他信息。PSI还存在一种变体,即CS场景。客户端可以获取其与服务器的交集但是服务器无法学习到该集合。如果在一个小的可以预测的域上通过密码哈希比

    2024年02月12日
    浏览(45)
  • Lyapunov稳定性分析1(正定函数、二次型正定判定)

    1.1 定义: 令 V ( x )是向量 x 的 标量函数 , S 是x空间包含原点的封闭有限区域。如果对于 S 中的所有 x ,都有: 则 V ( x )是 正定的 (半正定)。正定函数更直观的描述如下图所示: 如果条件(3)中不等式的符号 反向 ,则称V(x)是 负定的 (负半定的)。 如果在S域内,不论

    2024年02月16日
    浏览(45)
  • 使用PySpark计算AUC,KS与PSI

    当特征数量或者模型数量很多的时候,使用 PySpark 去计算相关风控指标会节省很多的时间。网上关于使用 PySpark 计算相关风控指标的资料较少,尤其是PSI计算不管是国内还是国外相关的代码都没有正确的,这里抛砖引玉,写了三个风控常用的指标AUC,KS和PSI相关的计算方法,

    2024年02月12日
    浏览(38)
  • 如何使用MATLAB处理涡度通量数据

    MATLAB MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 MATLAB是matrixlaboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化

    2024年02月09日
    浏览(36)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包