模式结果和观测的对比

首先对模式的海表温度进行对比

(base) [chengxl@login02 10yearmean]$ ls sst_*.nc

sst_2000.nc sst_2002.nc sst_2004.nc sst_2006.nc sst_2008.nc

sst_2001.nc sst_2003.nc sst_2005.nc sst_2007.nc sst_2009.nc

首先将观测资料转化为年平均

 ls sst.200* |xargs -I{} cdo -b f32 yearmean {} sst.2000-2009ym.nc

 

(base) [chengxl@login02 10yearmean]$ ls sst.2000-2009ym.nc

sst.2000-2009ym.nc

 接着对分辨率进行修改

(base) [chengxl@login02 10yearmean]$ ncdump -h sst.2000-2009ym.nc 

netcdf sst.2000-2009ym {
dimensions:
        time = UNLIMITED ; // (1 currently)
        bnds = 2 ;
        longitude = 480 ;
        latitude = 241 ;

 可以看到是241x480的

我们将其转化为和模式一样的分辨率,查看一下模式的分辨率

(base) [chengxl@login02 run]$ ncdump -h MMEAN2000-2009ym.nc 

netcdf MMEAN2000-2009ym {

dimensions:

time = UNLIMITED ; // (1 currently)

bnds = 2 ;

lon = 362 ;

lat = 196 ;

lev1 = 31 ;

lev = 30 ;

可以看见模式的是196x362的

现在用cdo改下分辨率

cdo remapbil,r362x196 sst.2000-2009ym.nc  sst.2000-2009ym_remap.nc
estep [0.11s 32MB].

cdo remapbil: Bilinear weights from lonlat (480x241) to lonlat (362x196) grid, with source mask (76542)

cdo remapbil: Processed 115680 values from 1 variable over 1 timestep [0.11s 32MB].

现在我们明确一下文件的位置

obs

/data/chengxl/obs_duibiyanjiu/10yearmean/sst.2000-2009ym_remap.nc

ctrl 

/data/chengxl/CAS-ESM2.0/cas-esm/run/atmocn_hist_test/run/MMEAN2000-2009ym.nc

exp1

/data/chengxl/CAS-ESM2.0-test2/run/HIST_model_test_finial/run/MMEAN2000-2009ym.nc

现在编写一下ncl 的脚本来绘图分析

begin
f_obs = addfile("/data/chengxl/obs_duibiyanjiu/10yearmean/sst.2000-2009ym_remap.nc","r")f_ctrl  = addfile("/data/chengxl/CAS-ESM2.0/cas-esm/run/atmocn_hist_test/run/MMEAN2000-2009ym.nc","r" ) f_exp1  = addfile("/data/chengxl/CAS-ESM2.0-test2/run/HIST_model_test_finial/run/MMEAN2000-2009ym.nc","r") lat = f_ctrl->lat 
lon = f_ctrl->lon var_ctrl = f_ctrl->ts(0,0,:,:)var_ctrl@lat   = lat var_ctrl@lon   = lonvar_exp1 = f_exp1->ts(0,0,:,:)var_exp1_ctrl = var_exp1 - var_ctrl 
;copy_VarMeta(var_ctrl,var_exp1_ctrl)var_obs =short2flt( f_obs->sst(0,:,:) )- 273.15
var_obs!0 = "lat"
var_obs!1 = "lon"
var_obs@lat = f_obs->lat
var_obs@lon = f_obs->lon
copy_VarCoords(var_ctrl,var_obs)
printVarSummary(var_ctrl)
printVarSummary(var_obs)
var_ctrl_obs = var_ctrl - var_obs 
copy_VarCoords(var_ctrl,var_ctrl_obs)var_exp1_obs = var_exp1 - var_obs 
;copy_VarCoords(var_ctrl , var_exp1_obs)print(f_obs->lat)
print(f_ctrl->lat)wks = gsn_open_wks( "png","sst_ctrl_obs")plot = new(2,graphic)res                      = Trueres@cnFillOn             = True                 ; turn on colorres@cnFillMode           = "RasterFill"         ; turn on raster moderes@cnLinesOn            = False                ; turn off contour linesres@mpLandFillColor      = "white"              ; draw landmasses in whiteres@cnLevelSelectionMode = "ExplicitLevels"res@cnLevels             = (/-1.8,0,5,10,15,20,22.5,25,27.5,30/)res@mpCenterLonF         = 180res@gsnDraw             = Falseres@gsnFrame            = Falseres@mpFillOn            = False            ; no need   res@cnLevelSelectionMode= "ManualLevels"   ; manual set levelsres@cnMinLevelValF      = -3.0res@cnMaxLevelValF      = 30.0res@cnLevelSpacingF     = 1.5              ; 20 contour levels        res@cnFillOn            = True             ; color fill plotres@cnFillPalette       = "BlAqGrYeOrRe"res@cnLinesOn           = Falseres@cnLineLabelsOn      = Falseres@cnInfoLabelOn       = Falseres@lbLabelBarOn        = True            ; turn off individual label bars
;
; Formatting the labelbar strings helps make the two sets of labelbars
; match better. Even though the labelbar is turned off, it is internally
;  still generated.
;res@lbLabelStrings      = sprintf("%4.1f",ispan(-30,370,15)*0.1)res@gsnLeftString       = "SST"res@gsnRightString      = "~S~o~N~C"res@gsnCenterString     = "(a)OBS"plot(0) = gsn_csm_contour_map(wks,var_obs(:,:359),res)res@cnMinLevelValF      = -5.res@cnMaxLevelValF      =  5.res@cnLevelSpacingF     =  1.delete(res@cnFillPalette) res@cnFillPalette       ="BlueWhiteOrangeRed";"nrl_sirkes"; "BlueDarkRed18";"BlueWhiteOrangeRed"    ; select a color map with white in the middle;---Formatting the labelbar strings helps make the two sets of labelbars match betterres@lbLabelStrings      := sprintf("%4.1f",ispan(-5,5,1))res@gsnCenterString     = "(b)CTRL - OBS"res@lbLabelBarOn        = True            ; turn off individual label barsplot(1) = gsn_csm_contour_map(wks,var_ctrl_obs(:,:359),res);---Panel the two sets of plots. Note no special resources need to be set.pres = Truepres@gsnMaximize    = True                ; maximize plotsgsn_panel(wks,plot,(/2,1/),pres)end

然后我发现一个棘手的难题,观测资料的坐标系和模式的坐标系不一样,

观察发现,模式是从北纬90度到南纬78度

观测再分析师从南纬90度到北纬90度,这对于作差来说根本没那么简单。

我也找不到什么NCL 的内置函数,说实话NCL真的很不灵活,然后我决定自己写一个把纬度转换下

不出意外,一下就成功了,但是南纬还是存在一些问题

其实可以只画北半球

这样稍微看起来正常一点

 再看看插值方法能不能做。

翻出之前的一个插值的NCL代码

begin
dirfile = systemfunc("ls wrf*");
f = addfiles(dirfile,"r")
ListSetType(f,"cat")
t=f[:]->T2
lon_wrfout = f[:]->XLONG(0,0,:)
lat_wrfout = f[:]->XLAT(0,:,0)
t_mean = dim_avg_n_Wrap(t,0)
printVarSummary(t_mean)
f_demHigh = addfile("DemHiRes.nc","r")
lon_high = f_demHigh->lon
lat_high = f_demHigh->lat
qsort(lon_wrfout)
qsort(lat_wrfout)
qsort(lon_high)
qsort(lat_high)
t_high_regrid = linint2_Wrap(lon_wrfout,lat_wrfout,t_mean,False,lon_high,lat_high,0)
system("rm -f MaYubin_HiRes.nc")
fout = addfile("MaYubin_HiRes.nc","c")
fout->t_mean_wrfout_regrid = t_high_regrid
end

我现在想要把再分析的向模式的坐标转化

lon_obs = f_obs->lon
lat_obs = f_ctrl->lat
lon_ctrl = f_ctrl->lon
lat_ctrl = f_ctrl->lat
qsort(lon_obs)
qsort(lat_obs)
qsort(lon_ctrl)
qsort(lat_ctrl)var_regrid = linint2_Wrap(lon_obs,lat_obs,var_obs,False,lon_ctrl,lat_ctrl,0)fout = addfile("sst_reanalysis_regrid_20002009.nc","c")
fout->sst = var_regrid

成功了一部分,先这样吧。由于资料差异有点大,我还是只给出观测,就不给差别好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​2024年保护微服务的前10种技术

1*5rY-jEv7qlpa_swi4WMIBw.png 引言 与当前正在使用的任何其他技术或方法一样,微服务也有其自己的一套缺陷和问题。尽管如此,微服务架构的采用率不断增加,预计到2028年将达到1718.2亿美元。 然而,尽管团队使用微服务,但…

如何默认管理员开启CMD

许多朋友使用win10系统的时候经常会用到CMD命令,而且还要以管理员身份运行,那么如何设置默认打开cmd都是以管理员身份运行,设置的方法挺简单,大家跟着下面的步骤操作即可。 Win10怎么默认以管理员身份运行cmd? 1、在开…

解读 Xend Finance:向 RWA 叙事拓展,构建更具包容性的 DeFi 体系

在二十世纪后,非洲地区陆续爆发了主权运动,这也让非洲大陆逐渐摆脱“殖民地”的标签。目前,非洲大陆公有 54 个主权国家,接近 15 亿且仍在飙升的人口规模,其 GDP 已经与印度相当,且仍旧处于飞速的发展进程中…

【机器学习300问】44、P-R曲线是如何权衡精确率和召回率的?

关于精确率和召回率的基础概念我已经写了两篇文章,如果友友还不知道这两个评估指标是什么,可以先移步去看看这两篇文章: 【机器学习300问】25、常见的模型评估指标有哪些?http://t.csdnimg.cn/JtuUO 总结一下这两个概念&a…

SQL Server 文件组详解

数据文件组 SQL Server 数据库最常用的存储文件是数据文件和日志文件。 数据文件用于存储数据,由一个主要数据文件(.mdf)和若干个次要数据文件(.ndf)构成;日志文件用于存储事物日志,由.ldf文件…

Java全栈课程之Linux———基本属性

一、看懂文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在Linux中我们可以使…

2000元投影仪坚果N1 Air怎么样?对比D5X哪款更好?

投影仪市场,近年来作为家电数码领域的新星,已经引起了广泛的关注。特别是在年轻人群体中,投影仪成为了提升生活品质、享受家庭娱乐时光的重要工具。随着市场的繁荣,各种品牌和型号的投影仪如雨后春笋般涌现,其中&#…

Linux--进程(1)

目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程 3.1基本概念 3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork:创建一个子进程 为什么要创建子进程? fork的原理: 进一步了解fo…

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework PDF: https://arxiv.org/html/2403.13248v1 1 概述 为弥补Sora不开源的缺陷,本文提出多代理框架Mora,整合先进视觉AI代理,复制Sora的全能视频生成能力。Mora能利用…

2024年《期刊引证报告》解读,迎来哪些新调整?

​ 【SciencePub学术】 近日,科睿唯安官方发布了一则关于2024年《期刊引证报告》:为增强透明度和包容性,期刊影响因子学科排名迎来新调整的文章。文章中对今年新调整过的地方做出了详细的解释。 截图来源:科睿唯安公众号 动态一…

#Linux(连接档概念)

(一)发行版:Ubuntu16.04.7 (二)记录: (1)硬链接(inode,建立硬链接的文件inode号相同) (2)创建硬链接:ln 文件名1 文件名…

css设置div的2个span一个在最左边,一个在最右边

界面&#xff1a; 代码&#xff1a; <html><style>.top span {display: block;position: absolute;margin: 0 20px; /* 添加边距以避免太靠近边缘 */ }.top span:nth-child(1) {left: 5px; /* 调整左侧位置 */ }.top span:nth-child(2) {right: 5px; /* 调整右侧位…

【前端性能】前端性能优化方法总结

关于前端性能指标和测量方法可以看这篇&#xff1a;【前端性能】前端性能指标和测量方法总结 文章目录 前端性能优化网络方向HTTP缓存本地储存HTTP升级DNS预解析使用CDN 渲染方向HTMLCSSJS图片Webpack优化 前端性能优化 可以从网络请求方向和页面渲染方向进行优化&#xff1a…

鸿蒙一次开发,多端部署(六)自适应布局

针对常见的开发场景&#xff0c;方舟开发框架提炼了七种自适应布局能力&#xff0c;这些布局可以独立使用&#xff0c;也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时&#xff0c;增加或减小的空间全部分配给容…

鸿蒙一次开发,多端部署(十一)设置应用页面

本小节以“设置”应用页面为例&#xff0c;介绍如何使用自适应布局能力和响应式布局能力适配不同尺寸窗口。 页面设计 为充分利用屏幕尺寸优势&#xff0c;应用常常有在小屏设备上单栏显示&#xff0c;大屏设备上左右分两栏显示的设计&#xff0c;设置应用页面设计如下。 观察…

不要取和所用方法名字相同的类

package 练习; import java.util.*; public class StringBuilder {public static void main(String[] args){Scanner scan new Scanner(System.in);String r scan.nextLine();StringBuilder x new StringBuilder(r);System.out.println(x);}} 奉上错误代码&#xff08;上面&…

qt5-入门-标签页部件QTabWidget-1

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 目录 效果实现Qt Designer操作代码addStretch()解释 效果 首页有三个按钮和最近文件列表。 拖动窗口&#xff0c;按钮和文件列表仍然处…

【C++】1600. 请假时间计算

问题&#xff1a;1600. 请假时间计算 类型&#xff1a;基本运算、整数运算 题目描述&#xff1a; 假设小明的妈妈向公司请了 n 天的假&#xff0c;那么请问小明的妈妈总共请了多少小时的假&#xff0c;多少分钟的假&#xff1f;&#xff08;提示&#xff1a; 1 天有 24 小时&…

关于UDS刷写的一些杂谈

最近在做CAPL编写UDS刷写上位机的工作&#xff0c;后续过来更新现在这里查个眼&#xff0c;以免后面忘记了。 下面放一些可能会用到的知识点&#xff1a; 1.一般的刷写流程如下所示&#xff1a; 红色标记代表为功能寻址。 预编程&#xff1a;10 01&#xff0c;10 83&#xf…

Linux——du, df命令查看磁盘空间使用情况

一、实现原理&#xff1a; df 命令的全称是Disk Free &#xff0c;显而易见它是统计磁盘中空闲的空间&#xff0c;也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。 du 命令的全称是 Disk Used &#xff0c;统计磁盘有已经使用的空间。它是直接统计各文件各目…