pyTMD 2.2.7__tar.gz → 2.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. {pytmd-2.2.7 → pytmd-2.2.8}/MANIFEST.in +1 -0
  2. pytmd-2.2.8/PKG-INFO +224 -0
  3. pytmd-2.2.8/README.md +130 -0
  4. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/arguments.py +59 -24
  5. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/astro.py +53 -1
  6. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/compute.py +213 -31
  7. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/crs.py +52 -24
  8. pytmd-2.2.8/pyTMD/data/ct1971_tab6.txt +31 -0
  9. pytmd-2.2.8/pyTMD/data/cte1973_tab.txt +485 -0
  10. pytmd-2.2.8/pyTMD/data/d1921_tab.txt +21 -0
  11. pytmd-2.2.8/pyTMD/data/hw1995_tab.txt +12584 -0
  12. pytmd-2.2.8/pyTMD/data/t1987_tab.txt +1201 -0
  13. pytmd-2.2.8/pyTMD/data/w1990_tab.txt +487 -0
  14. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/interpolate.py +280 -136
  15. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/ATLAS.py +8 -1
  16. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/FES.py +7 -0
  17. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/GOT.py +7 -0
  18. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/OTIS.py +7 -0
  19. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/__init__.py +6 -0
  20. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/constituents.py +96 -1
  21. pytmd-2.2.8/pyTMD/io/dataset.py +67 -0
  22. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/model.py +49 -1
  23. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/math.py +18 -7
  24. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/predict.py +149 -100
  25. pytmd-2.2.8/pyTMD.egg-info/PKG-INFO +224 -0
  26. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD.egg-info/SOURCES.txt +6 -3
  27. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD.egg-info/requires.txt +11 -0
  28. {pytmd-2.2.7 → pytmd-2.2.8}/pyproject.toml +23 -3
  29. pytmd-2.2.7/PKG-INFO +0 -242
  30. pytmd-2.2.7/README.rst +0 -158
  31. pytmd-2.2.7/pyTMD/data/ce1973_tab1.txt +0 -385
  32. pytmd-2.2.7/pyTMD/data/ct1971_tab5.txt +0 -99
  33. pytmd-2.2.7/pyTMD/data/ct1971_tab6.txt +0 -31
  34. pytmd-2.2.7/pyTMD/data/d1921_tab.txt +0 -21
  35. pytmd-2.2.7/pyTMD.egg-info/PKG-INFO +0 -242
  36. {pytmd-2.2.7 → pytmd-2.2.8}/LICENSE +0 -0
  37. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/__init__.py +0 -0
  38. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/compute_tide_corrections.py +0 -0
  39. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/database.json +0 -0
  40. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/doodson.json +0 -0
  41. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/opoleloadcoefcmcor.txt.gz +0 -0
  42. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/tab5.2e.txt +0 -0
  43. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/tab5.3a.txt +0 -0
  44. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/data/tab5.3b.txt +0 -0
  45. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/ellipse.py +0 -0
  46. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/IERS.py +0 -0
  47. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/io/NOAA.py +0 -0
  48. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/scripts/arcticdata_tides.py +0 -0
  49. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/scripts/aviso_fes_tides.py +0 -0
  50. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/scripts/gsfc_got_tides.py +0 -0
  51. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/scripts/reduce_OTIS_files.py +0 -0
  52. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/scripts/verify_box_tpxo.py +0 -0
  53. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/solve/__init__.py +0 -0
  54. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/solve/constants.py +0 -0
  55. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/spatial.py +0 -0
  56. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/tools.py +0 -0
  57. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/utilities.py +0 -0
  58. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD/version.py +0 -0
  59. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD.egg-info/dependency_links.txt +0 -0
  60. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD.egg-info/entry_points.txt +0 -0
  61. {pytmd-2.2.7 → pytmd-2.2.8}/pyTMD.egg-info/top_level.txt +0 -0
  62. {pytmd-2.2.7 → pytmd-2.2.8}/setup.cfg +0 -0
@@ -2,6 +2,7 @@ graft pyTMD/data
2
2
  prune .github*
3
3
  prune doc*
4
4
  prune notebooks*
5
+ prune providers*
5
6
  prune run*
6
7
  prune test*
7
8
  exclude *.cfg
pytmd-2.2.8/PKG-INFO ADDED
@@ -0,0 +1,224 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyTMD
3
+ Version: 2.2.8
4
+ Summary: Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
5
+ Author: Tyler Sutterley
6
+ Author-email: tsutterl@uw.edu
7
+ Maintainer: pyTMD contributors
8
+ License: MIT License
9
+
10
+ Copyright (c) 2017 Tyler C Sutterley
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+
30
+ Project-URL: Homepage, https://pytmd.readthedocs.io
31
+ Project-URL: Documentation, https://pytmd.readthedocs.io
32
+ Project-URL: Repository, https://github.com/pyTMD/pyTMD
33
+ Project-URL: Issues, https://github.com/pyTMD/pyTMD/issues
34
+ Keywords: Ocean Tides,Load Tides,Pole Tides,Solid Earth Tides,Tidal Prediction
35
+ Classifier: Development Status :: 3 - Alpha
36
+ Classifier: Intended Audience :: Science/Research
37
+ Classifier: License :: OSI Approved :: MIT License
38
+ Classifier: Operating System :: OS Independent
39
+ Classifier: Programming Language :: Python :: 3
40
+ Classifier: Programming Language :: Python :: 3.6
41
+ Classifier: Programming Language :: Python :: 3.7
42
+ Classifier: Programming Language :: Python :: 3.8
43
+ Classifier: Programming Language :: Python :: 3.9
44
+ Classifier: Programming Language :: Python :: 3.10
45
+ Classifier: Programming Language :: Python :: 3.11
46
+ Classifier: Programming Language :: Python :: 3.12
47
+ Classifier: Topic :: Scientific/Engineering :: Physics
48
+ Classifier: Topic :: Scientific/Engineering :: Oceanography
49
+ Requires-Python: ~=3.6
50
+ Description-Content-Type: text/markdown
51
+ License-File: LICENSE
52
+ Requires-Dist: lxml
53
+ Requires-Dist: netCDF4
54
+ Requires-Dist: numpy
55
+ Requires-Dist: pyproj
56
+ Requires-Dist: python-dateutil
57
+ Requires-Dist: scipy>=1.10.1
58
+ Requires-Dist: timescale>=0.0.8
59
+ Provides-Extra: doc
60
+ Requires-Dist: docutils; extra == "doc"
61
+ Requires-Dist: graphviz; extra == "doc"
62
+ Requires-Dist: myst-nb; extra == "doc"
63
+ Requires-Dist: numpydoc; extra == "doc"
64
+ Requires-Dist: sphinx; extra == "doc"
65
+ Requires-Dist: sphinx-argparse>=0.4; extra == "doc"
66
+ Requires-Dist: sphinxcontrib-bibtex; extra == "doc"
67
+ Requires-Dist: sphinx-design; extra == "doc"
68
+ Requires-Dist: sphinx_rtd_theme; extra == "doc"
69
+ Provides-Extra: all
70
+ Requires-Dist: cartopy; extra == "all"
71
+ Requires-Dist: ipyleaflet; extra == "all"
72
+ Requires-Dist: ipywidgets; extra == "all"
73
+ Requires-Dist: jplephem; extra == "all"
74
+ Requires-Dist: matplotlib; extra == "all"
75
+ Requires-Dist: notebook; extra == "all"
76
+ Requires-Dist: pandas; extra == "all"
77
+ Provides-Extra: aws
78
+ Requires-Dist: xarray; extra == "aws"
79
+ Requires-Dist: dask; extra == "aws"
80
+ Requires-Dist: zarr>=3; extra == "aws"
81
+ Requires-Dist: h5netcdf; extra == "aws"
82
+ Requires-Dist: geopandas; extra == "aws"
83
+ Requires-Dist: pyarrow; extra == "aws"
84
+ Requires-Dist: obstore; extra == "aws"
85
+ Requires-Dist: s3fs; extra == "aws"
86
+ Provides-Extra: dev
87
+ Requires-Dist: flake8; extra == "dev"
88
+ Requires-Dist: pytest>=4.6; extra == "dev"
89
+ Requires-Dist: pytest-cov; extra == "dev"
90
+ Requires-Dist: pytest-xdist; extra == "dev"
91
+ Requires-Dist: oct2py; extra == "dev"
92
+ Requires-Dist: boto3; extra == "dev"
93
+ Dynamic: license-file
94
+
95
+ # pyTMD
96
+
97
+ [![License](https://img.shields.io/github/license/pyTMD/pyTMD)](https://github.com/pyTMD/pyTMD/blob/main/LICENSE)
98
+ [![Documentation Status](https://readthedocs.org/projects/pytmd/badge/?version=latest)](https://pytmd.readthedocs.io/en/latest/?badge=latest)
99
+ [![PyPI](https://img.shields.io/pypi/v/pyTMD.svg)](https://pypi.python.org/pypi/pyTMD/)
100
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/pytmd)](https://anaconda.org/conda-forge/pytmd)
101
+ [![commits-since](https://img.shields.io/github/commits-since/pyTMD/pyTMD/latest)](https://github.com/pyTMD/pyTMD/releases/latest)
102
+ [![zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.5555395.svg)](https://doi.org/10.5281/zenodo.5555395)
103
+
104
+ Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
105
+
106
+ For more information: see the documentation at [pytmd.readthedocs.io](https://pytmd.readthedocs.io/)
107
+
108
+ ## Installation
109
+
110
+ From PyPI:
111
+
112
+ ```bash
113
+ python3 -m pip install pyTMD
114
+ ```
115
+
116
+ To include all optional dependencies:
117
+
118
+ ```bash
119
+ python3 -m pip install pyTMD[all]
120
+ ```
121
+
122
+ Using `conda` or `mamba` from conda-forge:
123
+
124
+ ```bash
125
+ conda install -c conda-forge pytmd
126
+ ```
127
+
128
+ ```bash
129
+ mamba install -c conda-forge pytmd
130
+ ```
131
+
132
+ Development version from GitHub:
133
+
134
+ ```bash
135
+ python3 -m pip install git+https://github.com/pyTMD/pyTMD.git
136
+ ```
137
+
138
+ ### Running with Pixi
139
+
140
+ Alternatively, you can use [Pixi](https://pixi.sh/) for a streamlined workspace environment:
141
+
142
+ 1. Install Pixi following the [installation instructions](https://pixi.sh/latest/#installation)
143
+ 2. Clone the project repository:
144
+
145
+ ```bash
146
+ git clone https://github.com/pyTMD/pyTMD.git
147
+ ```
148
+
149
+ 3. Move into the `pyTMD` directory
150
+
151
+ ```bash
152
+ cd pyTMD
153
+ ```
154
+
155
+ 4. Install dependencies and start JupyterLab:
156
+
157
+ ```bash
158
+ pixi run start
159
+ ```
160
+
161
+ This will automatically create the environment, install all dependencies, and launch JupyterLab in the [notebooks](./doc/source/notebooks/) directory.
162
+
163
+ ## Dependencies
164
+
165
+ - [dateutil: powerful extensions to datetime](https://dateutil.readthedocs.io/en/stable/)
166
+ - [lxml: processing XML and HTML in Python](https://pypi.python.org/pypi/lxml)
167
+ - [netCDF4: Python interface to the netCDF C library](https://unidata.github.io/netcdf4-python/)
168
+ - [numpy: Scientific Computing Tools For Python](https://www.numpy.org)
169
+ - [pyproj: Python interface to PROJ library](https://pypi.org/project/pyproj/)
170
+ - [scipy: Scientific Tools for Python](https://www.scipy.org/)
171
+ - [timescale: Python tools for time and astronomical calculations](https://pypi.org/project/timescale/)
172
+
173
+ ## References
174
+
175
+ > T. C. Sutterley, T. Markus, T. A. Neumann, M. R. van den Broeke, J. M. van Wessem, and S. R. M. Ligtenberg,
176
+ > "Antarctic ice shelf thickness change from multimission lidar mapping", *The Cryosphere*,
177
+ > 13, 1801-1817, (2019). [doi: 10.5194/tc-13-1801-2019](https://doi.org/10.5194/tc-13-1801-2019)
178
+ >
179
+ > L. Padman, M. R. Siegfried, H. A. Fricker,
180
+ > "Ocean Tide Influences on the Antarctic and Greenland Ice Sheets", *Reviews of Geophysics*,
181
+ > 56, 142-184, (2018). [doi: 10.1002/2016RG000546](https://doi.org/10.1002/2016RG000546)
182
+
183
+ ## Download
184
+
185
+ The program homepage is:
186
+ <https://github.com/pyTMD/pyTMD>
187
+
188
+ A zip archive of the latest version is available directly at:
189
+ <https://github.com/pyTMD/pyTMD/archive/main.zip>
190
+
191
+ ## Alternative Software
192
+
193
+ perth5 from NASA Goddard Space Flight Center:
194
+ <https://codeberg.org/rray/perth5>
195
+
196
+ Matlab Tide Model Driver from Earth & Space Research:
197
+ <https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5>
198
+
199
+ Fortran OSU Tidal Prediction Software:
200
+ <https://www.tpxo.net/otps>
201
+
202
+ ## Disclaimer
203
+
204
+ This package includes software developed at NASA Goddard Space Flight Center (GSFC) and the University of Washington Applied Physics Laboratory (UW-APL).
205
+ It is not sponsored or maintained by the Universities Space Research Association (USRA), AVISO or NASA.
206
+ The software is provided here for your convenience but *with no guarantees whatsoever*.
207
+ It should not be used for coastal navigation or any application that may risk life or property.
208
+
209
+ ## Contributing
210
+
211
+ This project contains work and contributions from the [scientific community](./CONTRIBUTORS.rst).
212
+ If you would like to contribute to the project, please have a look at the [contribution guidelines](./doc/source/getting_started/Contributing.rst), [open issues](https://github.com/pyTMD/pyTMD/issues) and [discussions board](https://github.com/pyTMD/pyTMD/discussions).
213
+
214
+ ## Credits
215
+
216
+ The Tidal Model Driver ([TMD](https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5)) Matlab Toolbox was developed by Laurie Padman, Lana Erofeeva and Susan Howard.
217
+ An updated version of the TMD Matlab Toolbox ([TMD3](https://github.com/chadagreene/Tide-Model-Driver)) was developed by Chad Greene.
218
+ The OSU Tidal Inversion Software (OTIS) and OSU Tidal Prediction Software ([OTPS](https://www.tpxo.net/otps)) were developed by Lana Erofeeva and Gary Egbert ([copyright OSU](https://www.tpxo.net/tpxo-products-and-registration), licensed for non-commercial use).
219
+ The NASA Goddard Space Flight Center (GSFC) PREdict Tidal Heights (PERTH3) software was developed by Richard Ray and Remko Scharroo.
220
+ An updated and more versatile version of the NASA GSFC tidal prediction software ([PERTH5](https://codeberg.org/rray/perth5)) was developed by Richard Ray.
221
+
222
+ ## License
223
+
224
+ The content of this project is licensed under the [Creative Commons Attribution 4.0 Attribution license](https://creativecommons.org/licenses/by/4.0/) and the source code is licensed under the [MIT license](LICENSE).
pytmd-2.2.8/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # pyTMD
2
+
3
+ [![License](https://img.shields.io/github/license/pyTMD/pyTMD)](https://github.com/pyTMD/pyTMD/blob/main/LICENSE)
4
+ [![Documentation Status](https://readthedocs.org/projects/pytmd/badge/?version=latest)](https://pytmd.readthedocs.io/en/latest/?badge=latest)
5
+ [![PyPI](https://img.shields.io/pypi/v/pyTMD.svg)](https://pypi.python.org/pypi/pyTMD/)
6
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/pytmd)](https://anaconda.org/conda-forge/pytmd)
7
+ [![commits-since](https://img.shields.io/github/commits-since/pyTMD/pyTMD/latest)](https://github.com/pyTMD/pyTMD/releases/latest)
8
+ [![zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.5555395.svg)](https://doi.org/10.5281/zenodo.5555395)
9
+
10
+ Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
11
+
12
+ For more information: see the documentation at [pytmd.readthedocs.io](https://pytmd.readthedocs.io/)
13
+
14
+ ## Installation
15
+
16
+ From PyPI:
17
+
18
+ ```bash
19
+ python3 -m pip install pyTMD
20
+ ```
21
+
22
+ To include all optional dependencies:
23
+
24
+ ```bash
25
+ python3 -m pip install pyTMD[all]
26
+ ```
27
+
28
+ Using `conda` or `mamba` from conda-forge:
29
+
30
+ ```bash
31
+ conda install -c conda-forge pytmd
32
+ ```
33
+
34
+ ```bash
35
+ mamba install -c conda-forge pytmd
36
+ ```
37
+
38
+ Development version from GitHub:
39
+
40
+ ```bash
41
+ python3 -m pip install git+https://github.com/pyTMD/pyTMD.git
42
+ ```
43
+
44
+ ### Running with Pixi
45
+
46
+ Alternatively, you can use [Pixi](https://pixi.sh/) for a streamlined workspace environment:
47
+
48
+ 1. Install Pixi following the [installation instructions](https://pixi.sh/latest/#installation)
49
+ 2. Clone the project repository:
50
+
51
+ ```bash
52
+ git clone https://github.com/pyTMD/pyTMD.git
53
+ ```
54
+
55
+ 3. Move into the `pyTMD` directory
56
+
57
+ ```bash
58
+ cd pyTMD
59
+ ```
60
+
61
+ 4. Install dependencies and start JupyterLab:
62
+
63
+ ```bash
64
+ pixi run start
65
+ ```
66
+
67
+ This will automatically create the environment, install all dependencies, and launch JupyterLab in the [notebooks](./doc/source/notebooks/) directory.
68
+
69
+ ## Dependencies
70
+
71
+ - [dateutil: powerful extensions to datetime](https://dateutil.readthedocs.io/en/stable/)
72
+ - [lxml: processing XML and HTML in Python](https://pypi.python.org/pypi/lxml)
73
+ - [netCDF4: Python interface to the netCDF C library](https://unidata.github.io/netcdf4-python/)
74
+ - [numpy: Scientific Computing Tools For Python](https://www.numpy.org)
75
+ - [pyproj: Python interface to PROJ library](https://pypi.org/project/pyproj/)
76
+ - [scipy: Scientific Tools for Python](https://www.scipy.org/)
77
+ - [timescale: Python tools for time and astronomical calculations](https://pypi.org/project/timescale/)
78
+
79
+ ## References
80
+
81
+ > T. C. Sutterley, T. Markus, T. A. Neumann, M. R. van den Broeke, J. M. van Wessem, and S. R. M. Ligtenberg,
82
+ > "Antarctic ice shelf thickness change from multimission lidar mapping", *The Cryosphere*,
83
+ > 13, 1801-1817, (2019). [doi: 10.5194/tc-13-1801-2019](https://doi.org/10.5194/tc-13-1801-2019)
84
+ >
85
+ > L. Padman, M. R. Siegfried, H. A. Fricker,
86
+ > "Ocean Tide Influences on the Antarctic and Greenland Ice Sheets", *Reviews of Geophysics*,
87
+ > 56, 142-184, (2018). [doi: 10.1002/2016RG000546](https://doi.org/10.1002/2016RG000546)
88
+
89
+ ## Download
90
+
91
+ The program homepage is:
92
+ <https://github.com/pyTMD/pyTMD>
93
+
94
+ A zip archive of the latest version is available directly at:
95
+ <https://github.com/pyTMD/pyTMD/archive/main.zip>
96
+
97
+ ## Alternative Software
98
+
99
+ perth5 from NASA Goddard Space Flight Center:
100
+ <https://codeberg.org/rray/perth5>
101
+
102
+ Matlab Tide Model Driver from Earth & Space Research:
103
+ <https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5>
104
+
105
+ Fortran OSU Tidal Prediction Software:
106
+ <https://www.tpxo.net/otps>
107
+
108
+ ## Disclaimer
109
+
110
+ This package includes software developed at NASA Goddard Space Flight Center (GSFC) and the University of Washington Applied Physics Laboratory (UW-APL).
111
+ It is not sponsored or maintained by the Universities Space Research Association (USRA), AVISO or NASA.
112
+ The software is provided here for your convenience but *with no guarantees whatsoever*.
113
+ It should not be used for coastal navigation or any application that may risk life or property.
114
+
115
+ ## Contributing
116
+
117
+ This project contains work and contributions from the [scientific community](./CONTRIBUTORS.rst).
118
+ If you would like to contribute to the project, please have a look at the [contribution guidelines](./doc/source/getting_started/Contributing.rst), [open issues](https://github.com/pyTMD/pyTMD/issues) and [discussions board](https://github.com/pyTMD/pyTMD/discussions).
119
+
120
+ ## Credits
121
+
122
+ The Tidal Model Driver ([TMD](https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5)) Matlab Toolbox was developed by Laurie Padman, Lana Erofeeva and Susan Howard.
123
+ An updated version of the TMD Matlab Toolbox ([TMD3](https://github.com/chadagreene/Tide-Model-Driver)) was developed by Chad Greene.
124
+ The OSU Tidal Inversion Software (OTIS) and OSU Tidal Prediction Software ([OTPS](https://www.tpxo.net/otps)) were developed by Lana Erofeeva and Gary Egbert ([copyright OSU](https://www.tpxo.net/tpxo-products-and-registration), licensed for non-commercial use).
125
+ The NASA Goddard Space Flight Center (GSFC) PREdict Tidal Heights (PERTH3) software was developed by Richard Ray and Remko Scharroo.
126
+ An updated and more versatile version of the NASA GSFC tidal prediction software ([PERTH5](https://codeberg.org/rray/perth5)) was developed by Richard Ray.
127
+
128
+ ## License
129
+
130
+ The content of this project is licensed under the [Creative Commons Attribution 4.0 Attribution license](https://creativecommons.org/licenses/by/4.0/) and the source code is licensed under the [MIT license](LICENSE).
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  u"""
3
3
  arguments.py
4
- Written by Tyler Sutterley (08/2025)
4
+ Written by Tyler Sutterley (09/2025)
5
5
  Calculates the nodal corrections for tidal constituents
6
6
  Modification of ARGUMENTS fortran subroutine by Richard Ray 03/1999
7
7
 
@@ -39,6 +39,7 @@ REFERENCES:
39
39
  Ocean Tides", Journal of Atmospheric and Oceanic Technology, (2002).
40
40
 
41
41
  UPDATE HISTORY:
42
+ Updated 09/2025: added spherical harmonic degree to tide potential tables
42
43
  Updated 08/2025: add Cartwright and Tayler table with radiational tides
43
44
  make frequency function a wrapper around one that calculates using
44
45
  Doodson coefficients (Cartwright numbers)
@@ -1773,6 +1774,8 @@ def _frequency(
1773
1774
  - ``'Meeus'``
1774
1775
  - ``'ASTRO5'``
1775
1776
  - ``'IERS'``
1777
+ include_planets: bool, default False
1778
+ Include planetary terms in the frequency calculation
1776
1779
 
1777
1780
  Returns
1778
1781
  -------
@@ -1781,6 +1784,7 @@ def _frequency(
1781
1784
  """
1782
1785
  # set default keyword arguments
1783
1786
  kwargs.setdefault('method', 'Cartwright')
1787
+ kwargs.setdefault('include_planets', False)
1784
1788
  # Modified Julian Dates at J2000
1785
1789
  MJD = np.array([51544.5, 51544.55])
1786
1790
  # time interval in seconds
@@ -1799,7 +1803,13 @@ def _frequency(
1799
1803
  k = 90.0 + np.zeros((nt))
1800
1804
 
1801
1805
  # determine equilibrium arguments
1802
- fargs = np.c_[tau, s, h, p, n, pp, k]
1806
+ if kwargs['include_planets']:
1807
+ lm, lv, la, lj, ls = pyTMD.astro.planetary_longitudes(MJD)
1808
+ fargs = np.c_[tau, s, h, p, n, pp, k, lm, lv, la, lj, ls]
1809
+ else:
1810
+ fargs = np.c_[tau, s, h, p, n, pp, k]
1811
+
1812
+ # calculate the rates of change of the fundamental arguments
1803
1813
  rates = (fargs[1,:] - fargs[0,:])/deltat
1804
1814
  fd = np.dot(rates, coef)
1805
1815
  # convert to radians per second
@@ -1986,8 +1996,8 @@ def _complex_love_numbers(
1986
1996
  # frequency dependence of Love number l2
1987
1997
  L2 = np.zeros((4), dtype=np.complex128)
1988
1998
  L2[0] = 0.84963e-1 - 0.7395e-3j
1989
- L2[1] = -0.22107e-3 - 0.9446e-5j
1990
- L2[2] = 0.54710e-5 - 0.2990e-6j
1999
+ L2[1] = -0.22107e-3 - 0.9646e-5j
2000
+ L2[2] = -0.54710e-5 - 0.2990e-6j
1991
2001
  L2[3] = -0.29904e-7 - 0.7717e-8j
1992
2002
  # estimate the complex Love number fors diurnal tides
1993
2003
  # equation 6.9 of IERS conventions 2010
@@ -2002,19 +2012,23 @@ def _complex_love_numbers(
2002
2012
  # Hs1: amplitude for epoch span 1 (1900 epoch)
2003
2013
  _d1921_table = get_data_path(['data','d1921_tab.txt'])
2004
2014
  # Cartwright and Tayler (1971) table with 3rd-degree values
2005
- # Hs1: amplitude for epoch span 1 (1861-09-21 to 1879-09-22)
2006
- # Hs2: amplitude for epoch span 2 (1915-05-16 to 1933-05-22)
2007
- # Hs3: amplitude for epoch span 2 (1951-05-23 to 1969-05-22)
2008
- _ct1971_table_5 = get_data_path(['data','ct1971_tab5.txt'])
2009
2015
  # Cartwright and Edden (1973) table with updated values
2010
- _ce1973_table_1 = get_data_path(['data','ce1973_tab1.txt'])
2016
+ _cte1973_table = get_data_path(['data','cte1973_tab.txt'])
2011
2017
  # Cartwright and Tayler (1971) table with radiational tides
2012
- # Hs1: amplitude for epoch span 1 (1900 epoch)
2013
2018
  _ct1971_table_6 = get_data_path(['data','ct1971_tab6.txt'])
2019
+ # Hartmann and Wenzel (1995) tidal potential catalog
2020
+ _hw1995_table = get_data_path(['data','hw1995_tab.txt'])
2021
+ # Tamura (1987) tidal potential catalog
2022
+ _t1987_table = get_data_path(['data','t1987_tab.txt'])
2023
+ # Woodworth (1990) tables with updated and 3rd-degree values
2024
+ _w1990_table = get_data_path(['data','w1990_tab.txt'])
2014
2025
 
2015
2026
  def _parse_tide_potential_table(
2016
2027
  table: str | pathlib.Path,
2017
- columns: int = 3,
2028
+ skiprows: int = 1,
2029
+ columns: int = 1,
2030
+ include_degree: bool = True,
2031
+ include_planets: bool = False
2018
2032
  ):
2019
2033
  """Parse tables of tide-generating potential
2020
2034
 
@@ -2022,12 +2036,18 @@ def _parse_tide_potential_table(
2022
2036
  ----------
2023
2037
  table: str or pathlib.Path
2024
2038
  table of tide-generating potentials
2025
- columns: int, default 3
2039
+ skiprows: int, default 1
2040
+ number of header rows to skip in the table
2041
+ columns: int, default 1
2026
2042
  number of amplitude columns in the table
2043
+ include_degree: bool, default True
2044
+ table includes spherical harmonic degree
2045
+ include_planets: bool, default False
2046
+ table includes coefficients for mean longitudes of planets
2027
2047
 
2028
2048
  Returns
2029
2049
  -------
2030
- CTE: float
2050
+ CTE: np.ndarray
2031
2051
  Cartwright-Tayler-Edden table values
2032
2052
  """
2033
2053
  # verify table path
@@ -2035,15 +2055,32 @@ def _parse_tide_potential_table(
2035
2055
  with table.open(mode='r', encoding='utf8') as f:
2036
2056
  file_contents = f.readlines()
2037
2057
  # number of lines in the file
2038
- file_lines = len(file_contents)
2039
- # tau: coefficient for mean lunar time
2058
+ file_lines = len(file_contents) - int(skiprows)
2059
+ # names: names of the columns in the table
2060
+ # formats: data types for each column in the table
2061
+ names = []
2062
+ formats = []
2063
+ # l: spherical harmonic degree
2064
+ if include_degree:
2065
+ names.append('l')
2066
+ formats.append('i')
2067
+ # tau: spherical harmonic dependence (order)
2040
2068
  # s: coefficient for mean longitude of moon
2041
2069
  # h: coefficient for mean longitude of sun
2042
2070
  # p: coefficient for mean longitude of lunar perigee
2043
2071
  # n: coefficient for mean longitude of ascending lunar node
2044
2072
  # pp: coefficient for mean longitude of solar perigee
2045
- names = ['tau','s','h','p','n','pp']
2046
- formats = ['i','i','i','i','i','i']
2073
+ names.extend(['tau','s','h','p','n','pp'])
2074
+ formats.extend(['i','i','i','i','i','i'])
2075
+ # lme: coefficient for mean longitude of Mercury
2076
+ # lve: coefficient for mean longitude of Venus
2077
+ # lma: coefficient for mean longitude of Mars
2078
+ # lju: coefficient for mean longitude of Jupiter
2079
+ # lsa: coefficient for mean longitude of Saturn
2080
+ if include_planets:
2081
+ names.extend(['lme','lve','lma','lju','lsa'])
2082
+ formats.extend(['i','i','i','i','i'])
2083
+ # tide potential amplitudes (Cartwright and Tayler norm)
2047
2084
  for c in range(columns):
2048
2085
  # add amplitude columns to names and formats
2049
2086
  names.append(f'Hs{c+1}')
@@ -2052,16 +2089,14 @@ def _parse_tide_potential_table(
2052
2089
  names.append('DO')
2053
2090
  formats.append('U7')
2054
2091
  # create a structured numpy dtype for the table
2055
- # names: names of the columns in the table
2056
- # formats: data types for each column in the table
2057
2092
  dtype = np.dtype({'names':names, 'formats':formats})
2058
2093
  CTE = np.zeros((file_lines), dtype=dtype)
2059
- # number of output columns
2060
- columns = len(names)
2094
+ # total number of output columns
2095
+ total_columns = len(names)
2061
2096
  # iterate over each line in the file
2062
- for i,line in enumerate(file_contents):
2063
- # drop last column with values from Doodson (1921)
2064
- CTE[i] = np.array(tuple(line.split()[:columns]), dtype=dtype)
2097
+ for i,line in enumerate(file_contents[skiprows:]):
2098
+ # drop last column(s) with values from Doodson (1921)
2099
+ CTE[i] = np.array(tuple(line.split()[:total_columns]), dtype=dtype)
2065
2100
  # return the table values
2066
2101
  return CTE
2067
2102
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  u"""
3
3
  astro.py
4
- Written by Tyler Sutterley (08/2025)
4
+ Written by Tyler Sutterley (09/2025)
5
5
  Astronomical and nutation routines
6
6
 
7
7
  PYTHON DEPENDENCIES:
@@ -18,6 +18,7 @@ REFERENCES:
18
18
  Oliver Montenbruck, Practical Ephemeris Calculations, 1989.
19
19
 
20
20
  UPDATE HISTORY:
21
+ Updated 09/2025: added function to compute the planetary mean longitudes
21
22
  Updated 08/2025: convert angles with numpy radians and degrees functions
22
23
  convert arcseconds to radians with asec2rad function in math.py
23
24
  convert microarcseconds to radians with masec2rad function in math.py
@@ -86,6 +87,7 @@ jplephem.spk = import_dependency('jplephem.spk')
86
87
 
87
88
  __all__ = [
88
89
  "mean_longitudes",
90
+ "planetary_longitudes",
89
91
  "phase_angles",
90
92
  "doodson_arguments",
91
93
  "delaunay_arguments",
@@ -250,6 +252,56 @@ def mean_longitudes(
250
252
  # return as tuple
251
253
  return (S, H, P, N, Ps)
252
254
 
255
+ # PURPOSE: compute the mean longitudes of the 5 closest planets
256
+ def planetary_longitudes(MJD: np.ndarray):
257
+ r"""
258
+ Computes the astronomical mean longitudes of the 5 closest planets
259
+ :cite:p:`Meeus:1991vh,Simon:1994vo`
260
+
261
+ Parameters
262
+ ----------
263
+ MJD: np.ndarray
264
+ Modified Julian Day (MJD) of input date
265
+
266
+ Returns
267
+ -------
268
+ LMe: np.ndarray
269
+ mean longitude of Mercury (degrees)
270
+ LVe: np.ndarray
271
+ mean longitude of Venus (degrees)
272
+ LMa: np.ndarray
273
+ mean longitude of Mars (degrees)
274
+ LJu: np.ndarray
275
+ mean longitude of Jupiter (degrees)
276
+ LSa: np.ndarray
277
+ mean longitude of Saturn (degrees)
278
+ """
279
+ # convert from MJD to centuries relative to 2000-01-01T12:00:00
280
+ T = (MJD - _mjd_j2000)/_century
281
+ # mean longitudes of Mercury
282
+ mercury_longitude = np.array([252.250906, 149474.0722491, 3.035e-4, 1.8e-8])
283
+ LMe = polynomial_sum(mercury_longitude, T)
284
+ # mean longitudes of Venus
285
+ venus_longitude = np.array([181.9798001, 58519.2130302, 3.1014e-4, 1.5e-8])
286
+ LVe = polynomial_sum(venus_longitude, T)
287
+ # mean longitudes of Mars
288
+ mars_longitude = np.array([355.433, 19141.6964471, 3.1052e-4, 1.e-8])
289
+ LMa = polynomial_sum(mars_longitude, T)
290
+ # mean longitudes of Jupiter
291
+ jupiter_longitude = np.array([34.351519, 3036.3027748, 2.233e-4, 3.7e-8])
292
+ LJu = polynomial_sum(jupiter_longitude, T)
293
+ # mean longitudes of Saturn
294
+ saturn_longitude = np.array([50.077444, 1223.5110686, 5.1908-4, -3.0e-8])
295
+ LSa = polynomial_sum(saturn_longitude, T)
296
+ # take the modulus of each
297
+ LMe = normalize_angle(LMe)
298
+ LVe = normalize_angle(LVe)
299
+ LMa = normalize_angle(LMa)
300
+ LJu = normalize_angle(LJu)
301
+ LSa = normalize_angle(LSa)
302
+ # return as tuple
303
+ return (LMe, LVe, LMa, LJu, LSa)
304
+
253
305
  # PURPOSE: computes the phase angles of astronomical means
254
306
  def phase_angles(MJD: np.ndarray):
255
307
  # raise warning for deprecated function call