💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
本文根据IGRF-13模型在空间中的点计算地球的磁场。国际地磁参考场(IGRF)模型是地球磁场的经验表示,由国际地磁和大气学协会(IAGA)的特别工作组推荐供科学使用。IGRF模型代表没有外部来源的主要(主要是核心)场。该模型在地心坐标系中采用标准的球谐展开标量电势。IGRF模型系数基于包括地磁测量站、船只、飞机和卫星在内的所有可用数据来源。
IGRF模型由系数集合组成,用于全球范围内代表地球磁场的年份为1945年、1950年、1955年等。有确定性系数集(DGRF####.DAT; #### = 年份),预计不会有进一步的修订,并且有预计将来会有更新的IGRF####.DAT和IGRF####S.DAT。IGRF####S.DAT提供系数的第一时间导数,用于对未来进行外推。IGRF模型的第13代(IGRF-13)包括了1900年至2015年的确定性系数集(DGRF1945至DGRF2015),以及1900年至1940年和2020年的初步系数集(IGRF2020),以及从2020年到2025年的外推(IGRF2020s.DAT)。
概述
此程序是将进行计算的FORTRAN子例程转换为MATLAB的过程。它不使用编译的FORTRAN mex文件,这可能使其速度较慢,但更易于使用(因为不需要编译)。实际上,我撰写该程序的动机是在MATLAB中提供一个具有最小"麻烦"的IGRF实现。另一个动机是矢量化的IGRF函数,这个函数就是(另外从FORTRAN代码直接调整的快速针对标量的例程也已实施)。
运行IGRF函数或IGRFLINE函数的唯一先决条件是将文件igrfcoefs.mat放在MATLAB的搜索路径中。该程序设计具有时间可扩展性:随着新的IGRF生成版本的发布,只需在与getigrfcoefs.m函数所在目录相同的名为'datfiles'的子文件夹中用新版本替换旧的.dat文件,并运行getigrfcoefs,然后用其生成的文件(igrfcoefs.mat)替换旧的.mat文件。
在空间中计算地球的磁场通常涉及使用国际地磁参考场(International Geomagnetic Reference Field, IGRF)模型。IGRF模型是由国际地磁联合会(International Association of Geomagnetism and Aeronomy, IAGA)制定的,用于描述地球的主要磁场及其变化。
1. **IGRF模型简介**:
- IGRF模型是基于地球内部的磁场产生机制以及地球表面和太阳风等因素的影响,通过数学模型来预测地球磁场的分布。
- 该模型考虑了地球的核外(外核)和核内(内核)的运动以及地球自转等因素对磁场的影响。
2. **使用IGRF模型计算**:
- 若要在空间中的特定点计算地球的磁场,可以使用IGRF模型提供的数学表达式和系数。
- 通常,IGRF模型提供了一系列时间点的系数,以允许对不同时间的地球磁场进行准确计算。
- 计算过程可能涉及插值方法,以获得非标准时间点或位置的磁场值。
3. **数据获取与应用**:
- IGRF模型的系数和计算方法可以通过国际地磁联合会的官方网站或相关文献获取。
- 研究文档中应包括对所选择时间点和空间点的具体说明,以及计算所用的IGRF版本和参数设置。
4. **应用与意义**:
- 地球磁场在航空、航天、地质勘探等领域中具有重要应用,理解和预测地球磁场的变化对于这些应用至关重要。
- IGRF模型提供了一个标准化和广泛接受的工具,用于研究和应用地球磁场的各种问题。
综上所述,利用IGRF-13模型可以有效地在空间中的任意点计算和研究地球的磁场,为相关领域的科学研究和应用提供重要支持。
📚2 运行结果
部分代码:
font = 'Times New Roman';
axis_font = 12;
title_font = 12;
time = datenum([2007 7 17 6 30 0]);
lat_start = 30:15:60; % Geodetic latitudes in degrees.
lon_start = 0:30:330; % Geodetic longitudes in degrees.
alt_start = 0; % Altitude in km.
distance = -sign(lat_start).*[30e3 70e3 150e3]; % km.
nsteps = abs(distance)/10;
spin = false;
% Get the magnetic field line points.
lat = zeros(max(nsteps(:))+1, numel(lat_start)*numel(lon_start));
lon = zeros(max(nsteps(:))+1, numel(lat_start)*numel(lon_start));
alt = zeros(max(nsteps(:))+1, numel(lat_start)*numel(lon_start));
for index1 = 1:numel(lat_start)
for index2 = 1:numel(lon_start)
[lat(1:nsteps(index1)+1, ...
index1*(numel(lon_start)-1)+index2) lon(1:nsteps(index1)+1, ...
index1*(numel(lon_start)-1)+index2) alt(1:nsteps(index1)+1, ...
index1*(numel(lon_start)-1)+index2)] = ...
igrfline(time, lat_start(index1), lon_start(index2), ...
alt_start, 'geod', distance(index1), nsteps(index1));
end
end
% Plot the magnetic field lines.
figure;
hold on;
% If the mapping toolbox is not available, use non-mapping toolbox
% functions to plot the globe and lines.
if ~license('test', 'MAP_Toolbox')
% WGS84 parameters.
a = 6378.137; f = 1/298.257223563;
b = a*(1 - f); e2 = 1 - (b/a)^2; ep2 = (a/b)^2 - 1;
% Plot a globe.
load('topo.mat', 'topo', 'topomap1');
[xe, ye, ze] = ellipsoid(0, 0, 0, a, a, b, 100);
surface(-xe, -ye, ze, 'FaceColor', 'texture', ...
'EdgeColor', 'none', 'CData', topo);
colormap(topomap1);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]潘莹,高国明,王树琴,等.太平洋地区地球主磁场长期变化特征的研究[J].云南大学学报:自然科学版, 2023, 45(1):91-100.
[2]陈斌,顾左文,狄传芝,等.第11代国际地磁参考场[J].国际地震动态, 2012(2):10.DOI:10.3969/j.issn.0235-4975.2012.02.006.
[3]张秀玲,赵旭东.基于第十三代国际地磁参考场模型在中国区域特征分析与研究[J].地震学报, 2024, 46(1):120.DOI:10.11939/jass.20220137.
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取