首页 > 其他分享 >利用GRACE球谐数据计算地表位移的基本原理与实现

利用GRACE球谐数据计算地表位移的基本原理与实现

时间:2024-03-24 13:01:14浏览次数:50  
标签:Nmax le 基本原理 lon filter lat 球谐 GRACE gmt

1.基本理论

由于地表质量发生变化导致地表的负荷变形,利用GRACE数据计算地表的垂直(2)、水平东向(3)和水平北向位移(4)方法如下:

我们之前已经利用冯伟老师提供的MATLAB工具包计算了EWH,下面我们具体看看两类计算公式的异同点:

我们可以发现,有一些部分是一致的,即

唯一不同的就是前面乘以的系数。我们看的,垂直位移的系数是

a*h/(1+k)

而等效水高形式的系数是

ap(2l+1)/3pw(k+1)

因此只要在冯伟老师的代码中修改这部分系数就可以利用GRACE球谐系数计算垂直位移。

然而对于水平位移涉及到勒让德函数的偏导数,下面的公式给出了计算勒让德偏一阶和二阶偏导数的递推公式:

2.计算勒让德函数的程序

我们先给出常用的勒让德函数的递推公式,然后再给出勒让德函数求偏导数的程序

勒让德函数递推公式:

function le=legendre_n(x,Nmax)
% 2024-3-20
le(1:Nmax+1,1:Nmax+1)=0;

% l = m =0
le(1,1)=1.0;
% l = 1,m = 0         
le(2,1)=sqrt(3.0)*x;
% l = m =1         
le(2,2)=sqrt(3.0)*sqrt(1.0-x*x);
% l = m
for i=3:Nmax+1
    le(i,i)=sqrt( (1.0-x*x) * (2*i-1) / (2*i-2) )*le(i-1,i-1);
end
% n-m = 1
for i=3:Nmax+1
    le(i,i-1)=x*sqrt(2*i-1)*le(i-1,i-1);
end
%others
for j=1:Nmax-1
    for i=j+2:Nmax+1
        le(i,j)=x*sqrt((2.0*i-3)*(2.0*i-1)/((i-j)*(i+j-2)))*le(i-1,j) ...
            -sqrt((2.0*i-1)*(i+j-3.0)*(i-j-1.0)/((2.0*i-5)*(i+j-2)*(i-j)))*le(i-2,j);
    end
end
 

勒让德函数一阶偏导:

function le_dtheta=legendre_partial_n(x,Nmax)
% 2024-3-20
rP = legendre_n(x,Nmax);

le_dtheta = zeros(Nmax+1);
for i = 0:Nmax
    for j = 0:i
        if i == j
            le_dtheta(i+1,i+1) = i*x/sqrt(1-x^2) * rP(i+1,i+1);
        else
            le_dtheta(i+1,j+1) = i*x/sqrt(1-x^2) * rP(i+1,j+1)...
                -1/sqrt(1-x^2)*sqrt( (i-j)*(i+j)*(2*i+1)/(2*i-1) ) * rP(i,j+1);
        end
    end
end
                
 

勒让德函数二阶偏导:

function le_dtheta=legendre_partial_nn(x,Nmax)
% 2024-3-20

rP = legendre_n(x,Nmax);

le_dtheta = zeros(Nmax+1);
for i = 0:Nmax
    for j = 0:i
        if i == j
            le_dtheta(i+1,i+1) = i*i-j-j*j*x/(1-x^2) * rP(i+1,i+1);
        else
            le_dtheta(i+1,j+1) = i*i-j-j*j*x/(1-x^2) * rP(i+1,j+1)...
                +x/(1-x^2)*sqrt( (i-j)*(i+j)*(2*i+1)/(2*i-1) ) * rP(i,j+1);
        end
    end
end
                
 

实际运算例子:

lon = 0.5:1:359.5;lat = -89.5:1:89.5;
[lon,lat] = meshgrid(lon,lat);

Nmax = 60; % max degree
Nlat = size(lon,1); % size of lat grid

for ilat = 1: Nlat
    rCoLat= 90.0-lat(ilat,1);
    rCoLat2= cos(deg2rad(rCoLat));
    rP = legendre_n( rCoLat2, Nmax );
    rP_d1 = legendre_partial_n( rCoLat2, Nmax );
    rP_d2 = legendre_partial_nn( rCoLat2, Nmax );
end

可以得到61×61阶的结果,这与60阶GRACE球谐数据匹配。

3.计算GRACE数据得到的地表负荷位移

这次之前,我们需要弄清楚一个事实,即大地水准面系数和质量系数之间的关系。

回到Whar et al.(1998)年的论文,下式表达了两者之间的关系,即我们处理的GRACE数据是大地水准面系数,而利用GLDAS等水文模型导出的是质量球谐系数。

下面我们利用GLDAS数据计算地表位移。利用冯伟老师的工具箱,我们可以得到球谐展开的GLDAS系数,该系数是质量系数,即上式的右边,而如果要计算地表位移,需要首先将其转成大地水准面系数(左边),然后计算负荷位移。上一篇专栏我介绍了一个修改的,可以将GLDAS水文模型球形展开的例子,感兴趣的可以阅读一下。在冯伟老师的工具箱中,具体需要修改的函数是gmt_gc2mc。这里我编写一个gmt_mc2gc的函数,结合gmt_gc2lc即可得到负荷垂直位移。

function outcoeff = gmt_mc2gc(incoeff)

% Converts geoid coefficients (gc) to mass coefficients (mc)
% FENG Wei 19/04/2015
% State Key Laboratory of Geodesy and Earth's Dynamics
% Institute of Geodesy and Geophysics, Chinese Academy of Sciences
% [email protected]
% modified 20/3/2024 Chistrong Wen
[rows,cols] = size(incoeff);
if rows == cols                    % field is in CS-format
    maxdeg  = rows - 1;
    %    incoeff = cs2sc(incoeff);
elseif cols-2*rows == -1            % field is in SC-format already
    maxdeg  = rows - 1;
    incoeff = gmt_sc2cs(incoeff);            % convert to CS-format
else
    error('Check format of field.')
end

ae        =  6378136.3;             % semi-major openaxis of ellipsoid [m]
rho_w = 1000;       % density of water kg/m^3
rho_ave = 5517;     % average density of the earth kg/m^3


%% mc2load
dens = (3.*rho_w)/(ae*rho_ave);
% Han and Wahr Love numbers
load LoveNumbers_lln.mat
% %Refer to Chamnbers deg1_coef.txt  Fengwei
k(2) = 0.021;
sc = gmt_cs2sc(incoeff);
% loop over degrees to multiply each row of coefficients in sc-format
% with the factor from equation (13) of Wahr et al. 1998
for ll = 0:1:maxdeg
    factor(ll+1)  = dens*( 1+k(ll+1) )/( 2*ll+1 );
    scnew(ll+1,:) = factor(ll+1)*sc(ll+1,:);
end

outcoeff = gmt_sc2cs(scnew);
 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CCBY Chistrong Wen
% University of Chinese Academy of Sciences
% 2024-3-20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% GLDAS INFO
O.lon = mascon_csr.lon;O.lat = mascon_csr.lat;O.rg = mascon_csr.rg(:,:,12);
figure
subplot(3,1,1),wzq_plot(O),title('surface mass'),caxis([-20,20]),colorbar
%% expand to 60 degree
grid = O.rg;
degree_max = 60;
[cs] = gmt_grid2cs(grid,degree_max);
%% applying filter method
destrip_method = 'NONE';
radius_filter = 000; 
type = 1;

gc_cs = gmt_mc2gc(cs);
load_cs = gmt_mc2load(gc_cs);

outcoeff = gmt_gc2lc(gc_cs);

[grid_filter_load]=gmt_cs2grid(outcoeff,radius_filter,type,destrip_method);
[grid_filter_mass]=gmt_cs2grid(cs,radius_filter,type,destrip_method);

lon = 0.5:1:359.5;
lat = -89.5:1:89.5;
[lon,lat] = meshgrid(lon,lat);
subplot(3,1,3)
out_soil_filter.lon = lon;
out_soil_filter.lat = lat;
out_soil_filter.rg  = grid_filter_load;
wzq_plot(out_soil_filter)
title('degree 60 mass'),colorbar

subplot(3,1,2)
figure
out_soil_filter.lon = lon;
out_soil_filter.lat = lat;
out_soil_filter.rg  = grid_filter_mass;
wzq_plot(out_soil_filter)
title('mass load'),colorbar

结果图:

代码包见资源。

♥欢迎点赞收藏♥

标签:Nmax,le,基本原理,lon,filter,lat,球谐,GRACE,gmt
From: https://blog.csdn.net/weixin_43047707/article/details/136820666

相关文章

  • Python编程异步爬虫——协程的基本原理
    Python编程之异步爬虫协程的基本原理要实现异步机制的爬虫,自然和协程脱不了关系。案例引入先看一个案例网站,地址为https://www.httpbin.org/delay/5,访问这个链接需要先等5秒钟才能得到结果,这是因为服务器强制等待5秒时间才返回响应。下面来测试一下,用requests写一个遍历......
  • Kubernetes之Pod基本原理与实践
    一、Pod的定义与基本用法1.Pod是什么Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod不是进程,而是容器运行的环境。Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器。当Pod包含多个应用容器时,这些容器的应用之间应该是......
  • GNSS载波相位平滑伪距基本原理
    相位平滑技术:削弱伪距欢测值的随机误差影响差分技术:削弱欢测方程中的系统误差影响相位平滑伪距原理:GPS接收机除了提供伪距测量外,可同时提供载波相位测量,由于载波相位测量的精度比码相位的测量精度高2个数量级,因此,如果能获得载波整周数,就可以获得近乎无噪声的伪距测量。一般......
  • s2fft库介绍:可微分和加速球谐变换
    一、说明        科学和工程的许多领域都会遇到在球体上定义的数据。对此类数据进行建模和分析通常需要傅里叶变换的球面对应物,即球面谐波变换。我们简要概述了球谐变换,并提出了一种新的可微分算法,该算法专为GPU上的加速而定制[1]。该算法在最近......
  • 【机器学习】贝叶斯分类器 | 分类器基本原理,朴素贝叶斯,半朴素贝叶斯,贝叶斯网
    在学习贝叶斯分类器的过程中我逐渐理解了不同视角下的机器学习过程​我们的学习本质上是对于众多的属性,x1,x2,x3到一个结果分类y,线性分类器什么的是训练集拟合一个函数从众多属性x到y,SVM是学习一个分界线划分不同的y对应的x,而贝叶斯分类器本质上是对数据集观测做统计结......
  • SimGRACE论文阅读笔记
    Abstract​ 图对比学习(GCL)已经成为图表示学习的一种主导技术,它最大限度地提高了共享相同语义的成对图增强之间的互信息。不幸的是,由于图数据的多样性,在扩充过程中很难很好地保存语义。目前,GCL的数据扩充大致可分为三种不令人满意的方式。第一,可以通过试错法手动选择每个数据集的......
  • Coderforces 1699E Three Days Grace
    考虑到这个是\(\max-\min\)的形式,可以先固定下一维。考率固定下\(\min\),这样就只需要使\(\max\)尽量小即可。考虑对于\(x\),可以拆为\(i\)和\(x/i\),然后又分成子问题去考虑。于是可以\(\text{DP}\),令\(f_{i,j}\)为\(\min\gei\),拆\(j\)的最小的\(\max\)。......
  • GRE基本原理
    GRE概述如图所示,通过在IPv4网络上建立GRE隧道,解决了两个IPv6网络的通信问题。GRE还具备封装组播报文的能力。由于动态路由协议中会使用组播报文,因此更多时候GRE会在需要传递组播路由数据的场景中被用到,这也是GRE被称为通用路由封装协议的原因。如图所示,乘客协议为IPv6,封装协......
  • 【译】IEEE白皮书 6G 太赫兹技术的基本原理 2023版
    第一章简介太赫兹波是介于微波和光波之间的光谱区域,频率从0.1THz~10THz之间,波长在3mm~30μm之间。提供大块连续的频带范围以满足对Tbit/s内极高数据传输速率的需求,使该区域成为下一代无线通信(6G)的重点研究领域。预计在2030年左右实现商业部署,太赫兹区域在成像、光......
  • Docker基本原理与常用命令
    1docker架构K8S:CRI(ContainerRuntimeInterface)Client:客户端;操作docker服务器的客户端(命令行或者界面)Docker_Host:Docker主机;安装Docker服务的主机Docker_Daemon:后台进程;运行在Docker服务器的后台进程Containers:容器;从镜像创建的运行实例.可以被启动,开始,停止,删除.每......