计算由于海洋温度和盐度变化产生的比容海平面变化

近些年由于全球气候变暖,全球的海平面不断上升。目前的研究显示,造成海平面变化的原因主要有两个:一个是由于陆地质量的流入(比如两级冰川的融化,冰雪以径流的形式汇入海洋,总体上使得海洋的总质量产生变化),另一个是由于海洋面积巨大,会吸收全球范围内大量的热量,使得海水的温度和研究发生变化,进一步产生了比容海平面的变化。

计算比容海平面变化的基本原理见以下的专栏:

温盐海平面计算专题--01 - 哔哩哔哩 (bilibili.com)

温盐海平面计算专题--02 - 哔哩哔哩 (bilibili.com)

本专栏将进一步用matlab实现对比容海平面的计算,具体的程序代码如下:

% % % % % % % % % % read data
for i = 1:258SA(:,:,:,i) = salt{i,1};CT(:,:,:,i) = temp{i,1};disp(i)end% % % % % % % % %% cal sterictime_step = length(squeeze(CT(1,1,1,:)));[steric_height] = steric_height_calculation(CT,SA,dep,lat,lon,time_step);% % % % % % % % % % save dataload lon_lat_dep.mat[lon,lat] = meshgrid(lon,lat);ocean_height.lon = lon;ocean_height.lat = lat;ocean_height.rg  = steric_height;ocean_height.tt  = tt;% % % % % % % % % % % time series
tp_gind=load('BS.txt');  
Tibet_ind=inpolygon(interpn(ocean_height.lon,1),interpn(ocean_height.lat,1),tp_gind(:,1),tp_gind(:,2));
area_scale=cal_grid_region(ocean_height);
for ii=1:size(ocean_height.rg,3)A = ocean_height.rg(:,:,ii);A(isnan(A))=0;CSR_rg(ii)=sum(sum(interpn(A',1).*Tibet_ind.*interpn(area_scale,1)))/sum(sum(Tibet_ind.*interpn(area_scale,1)));jgc_tt(ii)=ocean_height.tt(ii);
end
plot(jgc_tt,CSR_rg*1000) %% mm

其中使用到的函数 steric_height_calculation.m,需要注意的是,一般数据读取的温度是以开尔文为单位,而程序计算的是以摄氏度为单位,因此需要进行转换。本专栏使用的温度和盐度数据是MetOffice提供的再分析数据,需要自己提前读取。

function [steric_height] = steric_height_calculation(temperature,salinity,depth,lat,lon,time_step)
%--------------------------------------------------------------
% [steric_height] = steric_height_calculation(temperature,salinity,depth,lat,lon,time_step)
% This function is used to calculate the steric height.
% Note that the SEAWATER linrary version 3.2 by Lindsay Pender is 
% used in the code. 
%--------------------------------------------------------------
% input:
%  temperature(lon,lat,depth,time): temperature, unit: degree C
%  salinity(lon,lat,depth,time): salinity, unit: psu (PSS-78)
%  depth: depth of the ocean layer, unit: m
%  lat: latitude
%  lon: longitude
%  time_step: the number of time step of temperature/salinity 
%             ***  time_step = length(squeeze(temperature(1,1,1,:)))
%--------------------------------------------------------------
% output:
%  steric_height(lon,lat,time): steric height
%--------------------------------------------------------------
% calculate pressure from depth
pressure = zeros(length(depth),length(lat));
for k=1:length(depth)for j=1:length(lat)pressure(k,j)=sw_pres(depth(k),lat(j));%[db]end
end
pressure=pressure';
clear k j
rho = zeros(length(lon),length(lat),length(depth),time_step);
for t = 1:time_stepfor k = 1:length(depth)for j=1:length(lat)rho(:,j,k,t)=sw_dens(salinity(:,j,k,t),temperature(:,j,k,t)-273.15,pressure(j,k)); %[kg/m^3]endend
endDEPTH = repmat(depth',length(lat),1);
steric_height = NaN(length(lon),length(lat),time_step);rhobar = mean(rho,4,'omitnan'); % time-meaned rho
rho0_dep = squeeze(mean(mean(rhobar,1,'omitnan'),2,'omitnan')); % rho0 of each depth
dz =NaN(length(depth),1); 
dz(1) = abs(DEPTH(1,1)-0); 
dz(2:length(depth)) = abs(DEPTH(1,2:length(depth))-DEPTH(1,1:length(depth)-1));
DZ = NaN(length(lon),length(lat),length(depth)); rho0 = DZ;
for i = 1:length(lon)for j = 1:length(lat)DZ(i,j,:) = dz; %create DZ(lon,lat,depth) from dz(depth)rho0(i,j,:) = rho0_dep; % create rho0(lon,lat,depth) from rho0_dep(depth) end
endfor t = 1:time_stepsteric_height(:,:,t) = -sum(DZ.*((squeeze(rho(:,:,1:length(depth),t))-rhobar)./rho0),3,'omitnan');disp(t)
end

需要注意的是,需要下载一个计算seawater各种物理量的库,下载链接如下:

https://github.com/ashao/matlab/tree/master/external/seawater

程序运行的结果:credit:Yuan et al., 2017.

全球某个月的比容海平面的空间分布,单位:m

渤海湾12个月的比容海平面空间分布:[-0.1,0.1],单位:m

渤海比容海平面的时间变化:单位:mm

参考资料:

https://github.com/ashao/matlab/tree/master/external/seawater

Kuo, Y.-N., Lo, M.-H., Liang, Y.-C.,Tseng, Y.-H., & Hsu, C.-W. (2021). Terrestrial water storage anomalies emphasize interannual variations in global mean sea level during 1997–1998 and 2015–2016 El Niño events. Geophysical Research Letters, 48, e2021GL094104. https://doi.org/10.1029/2021GL094104

欢迎交流学习!

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

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

相关文章

数据结构——排序算法——插入排序

交换法插入排序 void swap(vector<int> arr, int i, int j) {int temp arr[i];arr[i] arr[j];arr[j] temp;}void insertSort(vector<int> arr) {// 从第二个数开始&#xff0c;往前插入数字for (int i 1; i < arr.size(); i) {// j 记录当前数字下标int j …

图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

1. 什么是图像 & 图像在计算机中如何存储&#xff1f;2. 图像可分为哪些类型&#xff1f; 2.1. 二值(黑白)图像2.2. 灰度图像2.3. RGB彩色图像2.4. RGBA图像 3. 什么是图像通道&#xff1f;4. 图像处理 4.1. 什么是图像处理&#xff1f;4.2. 图像处理流程4.3. 图像处理技术…

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。然而&#xff0c;作为一个单点服务&#xff0c;Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题&#xff0c;Redis 提供了哨兵模式&#xff0c;一个…

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化 目录 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于自组织特征映射聚类算法(SOM)的数据聚类可视化 可直接运行 注释清晰 Matlab语言 1.多特征输入&…

MATLAB科学计算从入门到精通

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 MATLAB&#xff08;Matr…

安科瑞ADL400产品功能及参数说明,适用于5G基站计量使用

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 “十四五”以来&#xff0c;重庆新型数字基础设施建设取得明显成效&#xff0c;截至今年6月底&#xff0c;每万人拥有5G基站数24个&#xff0c;5G发展保持在全国第一梯队。 新型数字基础设施包括5G网络、千兆光网、数据中心、工业互联网、…

pc端测试手机浏览器运行情况,主要是测试硬件功能

测试h5震动摇晃等功能时不方便测试&#xff0c;需要连电脑显示调试数据 方法&#xff1a; 1.需要手机下载谷歌浏览器&#xff0c;pc端用edge或这谷歌浏览器 2.手机打开USB调试&#xff0c;打开要测试的网页 3.pc端地址栏输入edge://inspect/#devices&#xff08;这里用的edge浏…

解决微信小程序报错:“SyntaxError:Unexpected end of JSON input”

1. 报错原因&#xff1a; 如果对象的参数或数组的元素中遇到地址&#xff0c;地址中包括?、&这些特殊符号时&#xff0c;对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码&#xff1b;接收时&#xff0c;先通过decodeURIComponent解码再通过JSON…

2023年会展行业研究报告

第一章 行业概况 1.1 定义 会展行业是一个多元化和复杂的领域&#xff0c;涵盖了许多不同的活动和功能。一般来说&#xff0c;会展业是指在一定的区域空间内&#xff0c;许多人聚集在一起形成的定期或者不定期&#xff0c;制度或者非制度&#xff0c;传递和交流信息的群众性的…

MYBATIS-PLUS入门使用、踩坑记录

转载&#xff1a; mybatis-plus入门使用、踩坑记录 - 灰信网&#xff08;软件开发博客聚合&#xff09; 首先引入MYBATIS-PLUS依赖&#xff1a; SPRING BOOT项目&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus…

Excel学习 WPS版

Excel学习 1.界面基础1.1 方格移动快捷键1.2 自动适配文字长度1.3 跨栏置中1.4 多个单元格同宽度&#xff1a;1.5 下拉框选择1.6 打印预览1.7 绘制边框1.8 冻结一行多行表头1.9 分割视图 2.日期相关2.1 今日日期快捷键2.2 月份提取 3.数学公式3.1 自动增长3.2 排序3.3 筛选3.4 …