Skip to main content

A package to handle the tectonic plate motion

Project description

Welcome to the platemotion package

PyPI version shields.io PyPI pyversions PyPI status GitHub contributors Maintenance GitHub license Documentation Status

The platemotion package is an archive of scientific routines for handling tectonic plate motion. Currently, operations on plate include:

  1. Calculate the geometrical and physical properties of plates, such as area, centroid, moment of inertia tensor
  2. Calculate velocities of points given Euler pole parameters
  3. Estimate the euler pole based on ITRF2014 velocity field

How to Install

  1. Install cartopy from conda by conda install cartopy

  2. On Linux, macOS and Windows architectures, the binary wheels can be installed using pip by executing one of the following commands:

pip install platemotion
pip install platemotion --upgrade # to upgrade a pre-existing installation

How to use

Initialize a plate

from platemotion import Plate
# define a tectonic plate from a spherical polygon file
plate_an = Plate.from_file('platemotion/data/NnrMRVL_PltBndsLatLon/an',skiprows=1) 

Set Euler pole

from astropy import units as u

#omega = np.array([-0.0914,-0.5283,0.7547])*u.mas/u.yr
#plate_an.set_omega(omega,'cartesian')

omega = [59.4*u.deg,236.5*u.deg,0.23*u.deg/u.Ma]
plate_an.set_omega(omega,'spherical')
#plate_an.set_name('Antarctica')

Calculate the area of the spherical polygon over the Earth with an averaged radius of 6371km.

from pprint import pprint
pprint(plate_an.info)
{'H_cartesian': <Quantity [-6.27283273e+26, -8.49556792e+26,  5.41130833e+26] kg km2 / Ma>,
 'H_spherical': (<Latitude 27.13117643 deg>,
                 <Longitude 233.55912584 deg>,
                 <Quantity 1.18661435e+27 kg km2 / Ma>),
 'area': <Quantity 58149691.98644825 km2>,
 'centroid': (<Quantity -83.61081032 deg>,
              <Quantity 57.80052887 deg>,
              <Quantity 880.96785844 km>),
 'compactness': 0.39900007941415533,
 'density': <Quantity 3.1 g / cm3>,
 'inertia': <Quantity [ 6.77582676e+29,  5.99961382e+29,  1.85826885e+29,
           -2.60236951e+28,  2.67935794e+28,  4.15067565e+28] kg km2>,
 'inertia_mag': <Quantity 9.27275284e+29 kg km2>,
 'inertia_tensor': <Quantity [[ 6.77582676e+29, -2.60236951e+28,  2.67935794e+28],
           [-2.60236951e+28,  5.99961382e+29,  4.15067565e+28],
           [ 2.67935794e+28,  4.15067565e+28,  1.85826885e+29]] kg km2>,
 'omega_cartesian': <Quantity [-0.06462052, -0.09763096,  0.19797067] deg / Ma>,
 'omega_spherical': (<Latitude 59.4 deg>,
                     <Longitude 236.5 deg>,
                     <Quantity 0.23 deg / Ma>),
 'perimeter': <Quantity 40281.70946992 km>,
 'polygon': instance of class Sphericalpolygon,
 'thickness': <Quantity 100. km>}
plate_an.plot()

Calculate velocities of points

location = [-60*u.deg,-90*u.deg,0*u.m]
v = plate_an.velocity_at(location,'geodetic')
pprint(v.info)
{'azimuth': <Quantity 70.63835275 deg>,
 'en': <Quantity [20.41947555,  7.17547259] mm / yr>,
 'speed': <Quantity 21.64352994 mm / yr>,
 'xyz': <Quantity [20.41947555, -6.20366278,  3.60582514] mm / yr>}
locations = [[-45,69]*u.deg,[-67,80]*u.deg,[200,500]*u.m]
v = plate_an.velocity_at(locations,'geodetic')
pprint(v.info)
{'azimuth': <Quantity [ 62.30457157, 105.22683355] deg>,
 'en': <Quantity [[20.67102344, 10.85042608],
           [19.0385182 , -5.1822267 ]] mm / yr>,
 'speed': <Quantity [23.34572673, 19.73121001] mm / yr>,
 'xyz': <Quantity [[ 22.01554216,   1.03807964,   7.6981329 ],
           [-17.90989462,   8.06639686,  -1.86803771]] mm / yr>}

Plate Motion Model

Currently, only NNR-MORVEL56 and GSRMv2.1 are avaliable.

NNR-MORVEL56

from platemotion import PlateMotion

nnr_model = PlateMotion.loadmodel('NNR-MORVEL56') # GSRMv2.1
nnr_model_summmary = nnr_model.summary
Loading plates from NNR-MORVEL56: 100%|##########| 56/56 [03:04<00:00,  3.30s/it]
nnr_model_summmary
Plate Ab ωx ωy ωz Lat.(°N) Lon.(°E) ω(°/Ma) Hx Hy ... Q12 Q13 Q23 ‖Q‖F(10^27 km^2 kg) Area(km^2) Perimeter(km) Compactness Lat.(°N).2 Lon.(°E).2 Depth(km)
0 Amur am -0.073 -0.113 0.265 63.17 237.18 0.297 -13.153 -229.643 ... 14.674 18.550 -26.198 93.227 5.303403e+06 10623.85 0.58 46.14 125.62 79.07
1 Antarctica an -0.049 -0.092 0.227 65.42 241.89 0.250 -431.464 -773.526 ... -26.024 26.794 41.507 927.275 5.814969e+07 40281.71 0.40 -83.61 57.80 880.97
2 Arabia ar 0.364 -0.054 0.421 48.88 351.51 0.559 153.309 -306.945 ... -24.914 -15.093 -15.853 86.263 4.904200e+06 10634.77 0.54 23.68 47.06 75.05
3 Australia au 0.414 0.323 0.352 33.86 37.94 0.632 2167.411 3190.055 ... 114.401 -110.930 123.123 615.306 3.739861e+07 29918.84 0.49 -31.50 132.34 577.37
4 Capricorn cp 0.399 0.170 0.426 44.44 23.09 0.608 694.008 129.685 ... -11.050 3.668 23.291 144.348 8.265942e+06 13287.27 0.58 -14.30 82.93 123.16
5 Caribbean ca -0.011 -0.233 0.165 35.20 267.38 0.286 -51.417 -1.557 ... 9.196 -2.662 8.713 52.144 2.964782e+06 8998.46 0.46 15.03 286.85 76.10
6 Cocos co -0.602 -0.882 0.543 26.93 235.69 1.198 -332.681 55.068 ... -2.831 0.543 5.180 51.788 2.931807e+06 8083.46 0.56 8.37 265.35 47.43
7 Eurasia eu -0.042 -0.141 0.168 48.85 253.50 0.223 -648.252 -1573.417 ... -18.161 -108.899 -158.461 781.347 4.855785e+07 41567.75 0.32 59.05 58.30 789.50
8 India in 0.346 -0.020 0.419 50.37 356.71 0.544 845.422 -409.581 ... -29.136 -6.688 -30.894 215.867 1.243504e+07 17113.95 0.52 12.98 77.49 162.86
9 Juan de Fuca jf 0.373 0.647 -0.590 -38.31 60.04 0.951 -1.570 7.031 ... -0.767 0.978 1.272 4.556 2.563227e+05 3312.65 0.29 45.43 232.47 7.96
10 Lwandle lw 0.062 -0.165 0.225 51.89 290.48 0.286 170.963 -83.923 ... -22.135 18.412 15.150 83.574 4.753637e+06 11706.88 0.43 -28.19 39.21 78.38
11 Macquarie mq 0.734 0.143 0.866 49.19 11.05 1.144 16.662 26.215 ... 0.415 -1.620 0.748 5.694 3.202684e+05 2816.44 0.51 -58.68 155.19 5.42
12 Nazca nz -0.092 -0.473 0.503 46.23 258.94 0.696 -277.314 -785.905 ... -6.458 -1.516 -57.931 277.199 1.610124e+07 20148.02 0.48 -19.92 267.84 220.52
13 North America na 0.034 -0.205 -0.018 -4.85 279.36 0.209 250.269 -1767.046 ... 33.802 -1.855 202.376 889.564 5.543143e+07 34361.85 0.53 57.92 273.92 798.28
14 Nubia nb 0.072 -0.183 0.216 47.68 291.56 0.292 -5.864 -8.229 ... 2.150 -0.184 0.108 6.893 3.881402e+05 3835.33 0.33 -2.52 148.63 13.03
15 Pacific pa -0.121 0.263 -0.583 -63.58 114.70 0.651 -2678.327 5362.521 ... -219.343 39.545 -29.332 1589.318 1.045938e+08 48335.51 0.45 1.57 202.75 1452.00
16 Philippine Sea ps 0.540 -0.329 -0.655 -46.02 328.64 0.910 47.495 232.842 ... 29.776 13.610 -14.116 95.663 5.443797e+06 11279.45 0.53 18.34 133.46 81.35
17 Rivera ri -1.265 -4.063 1.570 20.25 252.71 4.536 0.189 0.019 ... -0.319 0.122 0.390 1.795 1.008984e+05 1481.84 0.58 20.04 252.60 1.67
18 Sandwich SW 0.944 -0.708 -0.680 -29.94 323.13 1.362 15.337 -16.817 ... 0.269 0.928 -0.480 3.280 1.844105e+05 1822.73 0.70 -57.80 332.63 2.73
19 Scotia SC -0.038 -0.130 0.056 22.52 253.85 0.146 -12.880 -48.905 ... 2.908 6.123 -7.381 30.066 1.700716e+06 7724.24 0.36 -57.29 309.58 42.37
20 Somalia sm 0.021 -0.217 0.259 49.95 275.48 0.339 398.115 -243.385 ... -79.112 12.643 18.315 248.311 1.440102e+07 19256.05 0.47 -7.98 51.20 210.07
21 South America sa -0.039 -0.093 -0.042 -22.62 247.17 0.109 -557.774 -536.392 ... 172.790 91.516 -86.113 670.920 4.072691e+07 33048.47 0.43 -20.60 314.20 553.87
22 Sunda su -0.019 -0.216 0.258 50.06 264.98 0.337 -149.553 -120.216 ... 35.293 3.342 -8.597 155.795 8.916227e+06 14027.20 0.56 5.01 111.10 118.89
23 Sur sr -0.033 -0.084 -0.057 -32.50 248.68 0.107 -13.203 -18.912 ... 0.998 6.254 -1.510 19.487 1.098150e+06 5189.20 0.51 -55.12 346.52 17.86
24 Yangtze yz -0.068 -0.135 0.298 63.03 243.38 0.334 -22.130 -85.981 ... 8.500 4.928 -9.974 38.979 2.201941e+06 7134.39 0.54 27.26 116.18 33.46
25 Aegean Sea AS -0.063 0.098 0.041 19.43 122.87 0.124 -5.102 6.648 ... -0.990 -1.760 -0.822 5.724 3.218650e+05 2356.17 0.73 36.97 25.06 4.38
26 Altiplano AP 0.051 -0.482 -0.056 -6.58 276.02 0.488 -18.993 -12.488 ... 3.114 1.050 -2.768 14.777 8.321276e+05 3858.38 0.70 -17.34 290.56 13.05
27 Anatolia AT 0.827 0.415 0.780 40.11 26.66 1.210 4.371 -12.327 ... -2.028 -2.945 -1.907 10.229 5.756255e+05 3345.52 0.65 38.24 32.92 8.66
28 Balmoral Reef BR -0.171 0.133 -0.439 -63.74 142.06 0.490 4.558 4.858 ... 0.164 -0.615 0.044 3.475 1.953799e+05 2131.61 0.54 -15.06 175.87 3.28
29 Banda Sea BS -1.298 2.106 -0.064 -1.49 121.64 2.475 19.274 18.959 ... 4.074 -0.434 0.599 12.347 6.959325e+05 4968.34 0.35 -4.90 125.71 18.99
30 Birds Head BH -0.112 0.602 -0.514 -40.00 100.50 0.799 28.056 23.877 ... 3.264 -0.099 0.103 9.336 5.256390e+05 3577.94 0.52 -1.24 131.99 12.28
31 Burma BU 0.457 -2.169 -0.238 -6.13 281.90 2.229 34.713 -0.845 ... 0.435 0.066 -0.989 9.146 5.153850e+05 4033.03 0.40 9.00 93.98 17.43
32 Caroline CL 0.055 0.171 -0.580 -72.78 72.05 0.607 27.128 50.084 ... 9.291 0.807 -0.676 27.099 1.528196e+06 5301.21 0.68 3.17 140.55 22.45
33 Conway Reef CR -3.627 0.605 -1.367 -20.40 170.53 3.923 1.573 8.483 ... 0.147 -0.562 0.052 2.570 1.444575e+05 1859.82 0.52 -19.21 174.75 2.55
34 Easter EA 3.927 9.495 4.785 24.97 67.53 11.334 -9.163 3.009 ... -0.644 -0.322 -0.725 2.970 1.669842e+05 1783.03 0.66 -24.57 246.07 2.25
35 Futuna FT -4.892 0.165 -1.434 -16.33 178.07 5.101 0.127 2.444 ... -0.014 -0.100 -0.004 0.570 3.201157e+04 919.36 0.48 -14.97 182.13 0.74
36 Galapagos GP 0.841 5.417 0.242 2.53 81.18 5.487 -0.852 0.222 ... -0.036 0.001 0.006 0.260 1.462437e+04 576.37 0.55 1.87 258.32 0.22
37 Juan Fernandez JZ 6.099 17.454 12.589 34.25 70.74 22.368 -12.130 0.294 ... -0.286 -0.201 -0.527 1.738 9.767412e+04 1239.13 0.80 -33.34 249.09 1.27
38 Kermadec KE 1.787 0.202 1.508 39.99 6.46 2.347 -15.633 20.010 ... -0.063 -2.855 -0.017 8.951 5.053495e+05 4775.62 0.28 -33.02 180.67 29.97
39 Manus MN -44.689 25.521 -3.301 -3.67 150.27 51.569 0.192 0.318 ... 0.044 -0.006 0.003 0.146 8.220170e+03 413.71 0.60 -3.53 150.50 0.13
40 Maoke MO -0.035 0.749 0.191 14.25 92.67 0.774 8.776 10.312 ... 0.718 -0.064 0.058 2.051 1.153029e+05 1647.84 0.53 -3.42 138.15 2.07
41 Mariana MA -0.950 0.860 0.250 11.05 137.84 1.306 5.003 15.579 ... 2.232 1.264 -0.872 7.474 4.207784e+05 3548.51 0.42 17.88 145.44 11.97
42 Molucca Sea MS 1.988 -2.957 0.134 2.15 303.91 3.566 2.414 0.796 ... 2.410 -0.060 0.084 7.431 4.181131e+05 3268.02 0.49 -1.13 123.48 7.63
43 New Hebrides NH 2.453 -0.284 0.025 0.57 353.40 2.469 35.290 12.374 ... 1.198 -2.322 0.387 11.433 6.434675e+05 3514.29 0.65 -17.88 170.44 9.71
44 Niuafo'ou NI -3.293 -0.318 -0.190 -3.29 185.51 3.314 -5.920 -2.304 ... -0.108 -0.428 -0.032 2.211 1.242883e+05 1768.19 0.50 -16.69 184.34 2.28
45 North Andes ND -0.060 -0.093 0.035 17.73 237.32 0.116 -16.894 -3.936 ... 2.939 -0.376 1.269 17.222 9.718156e+05 5368.42 0.42 6.33 284.76 26.51
46 North Bismarck NB -0.369 0.479 -0.606 -45.04 127.64 0.856 11.278 14.723 ... 2.150 -0.184 0.108 6.893 3.881402e+05 3835.33 0.33 -2.52 148.63 13.03
47 Okhotsk OK -0.008 -0.198 0.116 30.30 267.72 0.229 4.668 -136.269 ... 6.616 15.485 -9.127 53.486 3.037119e+06 9459.60 0.42 51.24 148.99 67.44
48 Okinawa ON -1.522 1.374 1.497 36.12 137.92 2.539 -12.180 -25.417 ... 1.555 1.024 -1.303 5.768 3.247068e+05 3384.93 0.36 27.33 127.95 11.58
49 Panama PM -0.110 -0.248 0.165 31.35 246.10 0.317 -8.867 -0.210 ... 0.511 -0.081 0.521 4.866 2.737256e+05 2593.99 0.51 8.94 278.88 6.54
50 Shetland SL -0.136 -0.101 0.207 50.71 216.53 0.268 -1.489 -2.725 ... 0.089 0.194 -0.324 1.286 7.226161e+04 1235.12 0.60 -61.90 301.00 1.57
51 Solomon Sea SS -1.107 1.291 -0.085 -2.87 130.62 1.703 7.874 16.113 ... 0.651 -0.180 0.093 2.289 1.286602e+05 1775.52 0.51 -7.26 152.54 2.43
52 South Bismarck SB 6.837 -4.254 0.972 6.88 328.11 8.111 -3.581 -4.769 ... 1.707 -0.292 0.177 5.495 3.090909e+05 2784.42 0.50 -5.06 148.73 5.57
53 Timor TI -0.741 1.704 -0.144 -4.44 113.50 1.864 23.658 19.560 ... 2.047 -0.383 0.537 6.276 3.532757e+05 3246.87 0.42 -8.67 125.80 11.15
54 Tonga TO 8.021 0.628 3.902 25.87 4.48 8.942 -16.446 -10.117 ... -0.274 -0.994 -0.095 4.508 2.536195e+05 2747.12 0.42 -19.48 185.57 7.53
55 Woodlark WL -1.086 1.364 0.003 0.10 128.52 1.744 26.558 47.235 ... 2.536 -0.548 0.337 8.027 4.530879e+05 5058.21 0.22 -6.59 146.83 28.15

56 rows × 27 columns

Build a Plate Motion Model based on ITRF2014 velocity field

from platemotion import ITRF_PlateMotion
# use NNR-MORVEL56 plate boundaries
platemodel = ITRF_PlateMotion('NNR-MORVEL56')
Screen out sites with an observation time of more than 3 years ... Finished
Eliminate sites with velocity uncertainty greater than 1mm/yr ... Finished
Eliminate sites affected by the post-earthquake deformation ... Finished
Exclude sites with the second invariant strain rate greater than 1e-10 based on gsrmv2.1 ... Finished
Exclude sites with the vertical displacement rate greater than 0.75mm/yr based on ICE-6G_D(VM5a) ... Finished
Assign sites to plates ... Finished
Estimating Euler Pole ... Finished
pprint(platemodel.eu.epr)
{'num_sites': 136,
 'omega_cartesian': <Quantity [-0.02592416, -0.14672679,  0.20901511] deg / Ma>,
 'omega_cartesian_std': <Quantity [8.49222294e-05, 3.32043179e-05, 1.05751362e-04] deg / Ma>,
 'omega_spherical': (<Latitude 54.51629211 deg>,
                     <Longitude 259.98020722 deg>,
                     <Quantity 0.25668683 deg / Myr>),
 'omega_spherical_std': (<Quantity 0.01517495 deg>,
                         <Quantity 0.03223431 deg>,
                         <Quantity 8.85943626e-05 deg / Myr>),
 'rms': <Quantity [0.33554098, 0.32477936] mm / yr>}
platemodel.eu.sites
CODE PT DOMES STATION DESCRIPTION Geod. Lat. °N Lat. °N Lon. °E H SOLN REF_EPOCH ... STAX_STD STAY_STD STAZ_STD VELX_STD VELY_STD VELZ_STD ve vn ve_res vn_res
0 AJAC A 10077M005 Ajaccio, France 41.927444 41.736196 8.762611 98.8 2 10:001:00000 ... 0.59986E-03 0.58068E-03 0.53876E-03 0.34092E-04 0.37461E-04 0.34696E-04 0.021088 0.016058 1.936000e-04 0.000373
1 AMBL A 19967M001 Ambrumesnil, FR 49.859361 49.669592 0.994306 129.9 1 10:001:00000 ... 0.58646E-03 0.56964E-03 0.55445E-03 0.63379E-04 0.41625E-04 0.68454E-04 0.017454 0.015939 -1.016939e-06 -0.000324
2 ARGI A 10117M002 Argir, Tórshavn, Faro 61.997361 61.837525 353.216472 110.2 1 10:001:00000 ... 0.56975E-03 0.55433E-03 0.61036E-03 0.67557E-04 0.47148E-04 0.10893E-03 0.011754 0.017084 -4.035166e-05 0.000543
3 ARTU A 12362M001 ARTU 12362M001 56.429806 56.252264 58.560444 247.6 1 10:001:00000 ... 0.56576E-03 0.58116E-03 0.54879E-03 0.32262E-04 0.34318E-04 0.32609E-04 0.025272 0.006188 -4.640728e-04 0.000138
4 BEA2 A 10079S001 Port-Vendres, France 42.515306 42.323661 3.136694 108.2 1 10:001:00000 ... 0.65645E-03 0.58472E-03 0.58795E-03 0.15452E-03 0.63419E-04 0.13409E-03 0.020631 0.015778 9.087333e-04 -0.000355
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
131 WTZZ A 14201M014 WTZZ 14201M014 49.144194 48.953689 12.878889 665.9 3 10:001:00000 ... 0.58338E-03 0.57389E-03 0.54538E-03 0.30691E-04 0.36384E-04 0.32602E-04 0.020297 0.015552 1.736272e-04 0.000290
132 YEBE A 13420M001 YEBE 13420M001 40.524889 40.334908 356.911361 972.8 1 10:001:00000 ... 0.59871E-03 0.57837E-03 0.53645E-03 0.31429E-04 0.37409E-04 0.33017E-04 0.018894 0.016412 -1.166159e-04 -0.000035
133 ZEEB A 13174M001 Zeebrugge, Belgium 51.335833 51.147958 3.208222 60.3 2 10:001:00000 ... 0.58028E-03 0.56775E-03 0.55188E-03 0.35170E-04 0.36910E-04 0.38767E-04 0.017532 0.015357 -4.851948e-07 -0.000772
134 ZWE2 A 12330M003 ZWE2 12330M003 55.699278 55.519899 36.758389 208.2 2 10:001:00000 ... 0.56790E-03 0.57494E-03 0.55162E-03 0.33546E-04 0.36547E-04 0.39024E-04 0.022651 0.011871 -4.586815e-04 0.000525
135 ZWEN A 12330M001 Zwenigorod, Russia 55.699278 55.519899 36.758611 205.0 4 10:001:00000 ... 0.57802E-03 0.58197E-03 0.58189E-03 0.33618E-04 0.36611E-04 0.39084E-04 0.022659 0.011874 -4.503503e-04 0.000527

136 rows × 26 columns

### Relative motion of plates
pa_plate = platemodel.pa
na_plate = platemodel.na
# euler pole of North America w.r.t. Pacific
pa_na = na_plate.fixed_ref(pa_plate)
pprint(pa_na)
{'omega_cartesian': <Quantity [ 0.11831538, -0.48878796,  0.58888957] deg / Ma>,
 'omega_cartesian_std': <Quantity [0.00016247, 0.00016937, 0.0001375 ] deg / Ma>,
 'omega_spherical': (<Latitude 49.50311891 deg>,
                     <Longitude 283.60721239 deg>,
                     <Quantity 0.77440502 deg / Ma>),
 'omega_spherical_std': (<Quantity 0.01157821 deg>,
                         <Quantity 0.01855507 deg>,
                         <Quantity 0.00015158 deg / Ma>)}

Change log

  • 0.1.7 — Mar 9, 2021
    • Added calculation of relative motion of plates
  • 0.1.6 — Mar 8, 2021
    • The first release

Reference

Argus, Donald F., Richard G. Gordon, and Charles DeMets. "Geologically current motion of 56 plates relative to the no‐net‐rotation reference frame." Geochemistry, Geophysics, Geosystems 12.11 (2011).

Kreemer, Corné, Geoffrey Blewitt, and Elliot C. Klein. "A geodetic plate motion and Global Strain Rate Model." Geochemistry, Geophysics, Geosystems 15.10 (2014): 3849-3889.

Altamimi, Zuheir, et al. "ITRF2014: A new release of the International Terrestrial Reference Frame modeling nonlinear station motions." Journal of Geophysical Research: Solid Earth 121.8 (2016): 6109-6131.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

platemotion-0.1.7-py3-none-any.whl (355.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page