07_Geoist的magmod模块模型更新

2020-03-23  本文已影响0人  地学小哥

内容摘要:Geoist的地磁模型模块支持多种地磁场模型的球谐系数解算,magmod模块目前支持8种全球地磁模型场模型,本次更新支持了最新的WMM2020和IGRF13版本模型服务。

1、地磁场模型

球磁场跟地球引力场一样,是一个地球物理场,它是由基本磁场与变化磁场两部分组成的。基本磁场是地磁场的主要部分,起源于地球内部,比较稳定,变化非常缓慢。变化磁场包括地磁场的各种短期变化,与电离层的变化和太阳活动等有关,并且很微弱。

IGRF(International Geomagnetic Reference Field,国际地磁参考场)是有关地球主磁场与长期变化的模型,IGRF的误差主要来源于:忽略外源场、球谐级数的截断、台站分布的不均匀、测量、忽略地壳磁异常场等。IAGA的有关小组每5年给出一个世界地磁参考场(IGRF)。

WMM模型与IGRF类似,也是描述地球主磁场的模型。一般用于海洋磁力测量地磁正常场校正。该模型也是5年更新一次,最新模型为WMM2020。

最新版本的国际地磁参考场模型的发布,一般能更好的反映地磁场的空间和时间变化规律。

为了尽快将新的模型应用到实际测量正常场校正数据处理及其它应用领域中,GEOIST集成的magmod模块针对最新发布的上述两个模型系数进行了更新。

2、magmod模块

3、Geoist示例代码

安装完Geoist工具包后,可以运行以下代码:

import datetime as dt

from geoist.magmod.magnetic_model.loader_igrf import load_model_igrf
from geoist.magmod.magnetic_model.loader_wmm import load_model_wmm
from geoist.magmod.magnetic_model.loader_emm import load_model_emm
from geoist.magmod.magnetic_model.loader_shc import (
    load_model_shc, load_model_shc_combined,
)
from geoist.magmod.magnetic_model.loader_mio import (
    load_model_swarm_mio_internal,
    load_model_swarm_mio_external,
)

from geoist.magmod.data import (
    EMM_2010_STATIC, EMM_2010_SECVAR, WMM_2015, WMM_2020, IGRF13, 
    CHAOS6_CORE_LATEST, CHAOS6_STATIC,
    IGRF11, IGRF12, SIFM,
)
from geoist.magmod.time_util import (
    decimal_year_to_mjd2000, decimal_year_to_mjd2000_simple,mjd2000_to_decimal_year,mjd2000_to_year_fraction
)
from geoist.magmod.util import datetime_to_decimal_year, vnorm

from geoist.magmod.magnetic_model.parser_mio import parse_swarm_mio_file
from geoist.magmod.magnetic_model.tests.data import SWARM_MIO_SHA_2_TEST_DATA
import geoist.magmod._pymm as pymm

print(SWARM_MIO_SHA_2_TEST_DATA) #DIFI4 is a type of MIO SHA model
print(mjd2000_to_decimal_year(7305))
print(mjd2000_to_decimal_year([5479., 7305., 6392.0]))
d1 = dt.datetime(2015,1,1)   # import time , location(lat, lon)
d11 = datetime_to_decimal_year(d1) # datetime to decimal year
loc = (30.0, 40.0, 1000.0)
wmm2015 = load_model_wmm(WMM_2015)  #load wmm2015 model
igrf11 = load_model_igrf(IGRF11)    #load igrf11 model
igrf12 = load_model_shc(IGRF12, interpolate_in_decimal_years=True)    #load igrf12 model

igrf13 = load_model_igrf(IGRF13)
wmm2020 = load_model_wmm(WMM_2020)

emm = load_model_emm(EMM_2010_STATIC, EMM_2010_SECVAR)  #load emm model
options = {"scale": [1, 1, -1]}   #-1 is Z direction

## renew for the IGRF13 and WMM2020 models on 2020-03-22
d2 = 2022.5
loc1 = (80.0, 0.0, 100.0)
wmm2020.eval(decimal_year_to_mjd2000(d2), loc1, 0, 0, **options) 
igrf13.eval(decimal_year_to_mjd2000(d2), loc1, 0, 0, **options)
## the result has been checked with WMM2020testvalues.pdf 

如果需要验证结果的准确性,可以参考下图表格信息。

图1 WMM2020版本模型系数

小结:上面代码有点复杂,但是有用的就是后面4行,如果不需要其他模型,可以忽略前面的内容。最新版的geoist可以在github上面获得,有问题欢迎大家给小哥留言。

上一篇 下一篇

猜你喜欢

热点阅读