Implemented the calculation of Associated Legendre polynomials using scipy, eliminating the dependency on the pyshtools package.
This commit is contained in:
parent
99bf7d752b
commit
1814b27b1a
22
README.md
22
README.md
@ -123,24 +123,26 @@ pip install pyatmos --upgrade # to upgrade a pre-existing installation
|
||||
```
|
||||
|
||||
## Change log
|
||||
- **1.2.6 — Mar 08, 2024**
|
||||
- Implemented the calculation of Associated Legendre polynomials using `scipy`, eliminating the dependency on the `pyshtools` package.
|
||||
- **1.2.5 — Jul 16, 2023**
|
||||
- Added time system for loading/updating the EOP file and Leap Second file from IERS
|
||||
- Added time system for loading/updating the EOP file and Leap Second file from IERS.
|
||||
- **1.2.4 — Feb 16, 2023**
|
||||
- Changed functions `read_sw_nrlmsise00` and `get_sw` due to the space weather file changed from 'SW-ALL.txt' to 'SW-ALL.csv'
|
||||
- Changed functions `read_sw_nrlmsise00` and `get_sw` due to the space weather file changed from 'SW-ALL.txt' to 'SW-ALL.csv'.
|
||||
- Deleted the colored-progress bar for downloading space weather file, and use `wget` instead.
|
||||
- **1.2.3 — Jun 7, 2021**
|
||||
- Added atmospheric models **JB2008**
|
||||
- Changed the output of the result to an instance
|
||||
- Improved the code structure for NRLMSISE-00, and the running speed is nearly threefold
|
||||
- Changed the output of the result to an instance.
|
||||
- Improved the code structure for NRLMSISE-00, and the running speed is nearly threefold.
|
||||
- **1.2.1 — Jan 22, 2021**
|
||||
- Added **Exponential Atmosphere** up to 1000 km
|
||||
- Added **Committee on Extension to the Standard Atmosphere(COESA)** up to 1000 km
|
||||
- Completed part of the help documentation for NRLMSISE-00
|
||||
- Improved the code structure to make it easier to read
|
||||
- Added **Exponential Atmosphere** up to 1000 km.
|
||||
- Added **Committee on Extension to the Standard Atmosphere(COESA)** up to 1000 km.
|
||||
- Completed part of the help documentation for NRLMSISE-00.
|
||||
- Improved the code structure to make it easier to read.
|
||||
- **1.1.2 — Jul 26, 2020**
|
||||
- Added colored-progress bar for downloading data
|
||||
- Added colored-progress bar for downloading data.
|
||||
- **1.1.0 — Mar 29, 2020**
|
||||
- Added the International Standard Atmosphere(ISA) Model up to 86kms
|
||||
- Added the International Standard Atmosphere(ISA) Model.
|
||||
|
||||
## Next release
|
||||
|
||||
|
BIN
pyatmos/.DS_Store
vendored
BIN
pyatmos/.DS_Store
vendored
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
import numpy as np
|
||||
from scipy.interpolate import CubicSpline
|
||||
from pyshtools.legendre import PLegendreA,PlmIndex
|
||||
from scipy.special import lpmv
|
||||
import pkg_resources
|
||||
|
||||
def nrlmsis00_data():
|
||||
@ -275,9 +275,30 @@ def sg0(ex,p,ap):
|
||||
g0(ap[6],p)*ex**12)*(1-ex**8)/(1-ex))/sumex(ex)
|
||||
|
||||
# =============== 3hr magnetic activity functions =================== #
|
||||
def PLegendreA(lmax, x):
|
||||
"""
|
||||
Calculates all unnormalized associated Legendre polynomials up to degree lmax for a given x value.
|
||||
|
||||
Inputs:
|
||||
lmax -> [int] The maximum degree of the polynomials to compute.
|
||||
x -> [float] The value at which to evaluate the polynomials.
|
||||
Outputs:
|
||||
res -> [array-like] An array of shape (lmax + 1) * (lmax + 2) // 2 containing the values of the unnormalized associated Legendre polynomials P_l^m(x) for l = 0, 1, ..., lmax and m = 0, 1, ..., l.
|
||||
Note: The Condon-Shortley phase is excluded.
|
||||
"""
|
||||
res = np.zeros((lmax + 1) * (lmax + 2) // 2)
|
||||
|
||||
# Compute P_l^m(x) for all l and m
|
||||
k = 0
|
||||
for l in range(lmax + 1):
|
||||
for m in range(l + 1):
|
||||
res_k = lpmv(m, l, x)
|
||||
if m%2: res_k *= -1
|
||||
res[k] = res_k
|
||||
k += 1
|
||||
return res
|
||||
|
||||
def lengendre(g_lat,lmax = 8):
|
||||
# Index of PLegendreA_x can be calculated by PlmIndex(l,m)
|
||||
x = np.sin(np.deg2rad(g_lat))
|
||||
PLegendreA_x = PLegendreA(lmax,x)
|
||||
return PLegendreA_x
|
||||
|
8
setup.py
8
setup.py
@ -2,7 +2,7 @@ from setuptools import setup,find_packages
|
||||
|
||||
setup(
|
||||
name = 'pyatmos',
|
||||
version = '1.2.5',
|
||||
version = '1.2.6',
|
||||
description = 'A package to estimate the vertical structure of atmosphere with various atmospheric density models',
|
||||
author = 'Chunxiao Li',
|
||||
author_email = 'lcx366@126.com',
|
||||
@ -11,13 +11,14 @@ setup(
|
||||
long_description_content_type = 'text/markdown',
|
||||
long_description = open('README.md', 'rb').read().decode('utf-8'),
|
||||
keywords = ['coesa76','nrlmsise00','jb2008'],
|
||||
python_requires = '>=3.8',
|
||||
python_requires = '>=3.10',
|
||||
classifiers = [
|
||||
'Development Status :: 4 - Beta',
|
||||
'Intended Audience :: Education',
|
||||
'Intended Audience :: Science/Research',
|
||||
'Programming Language :: Python :: 3.9',
|
||||
'Programming Language :: Python :: 3.10',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
'Programming Language :: Python :: 3.12',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
],
|
||||
packages = find_packages(),
|
||||
@ -29,7 +30,6 @@ setup(
|
||||
'numba',
|
||||
'pandas',
|
||||
'astropy',
|
||||
'pyshtools',
|
||||
'wget'
|
||||
]
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user