Source code for TidalPy.tides.inclination_funcs.orderl4

""" Inclination functions (squared) for tidal order-l = 4. These are exact (no truncation on I)
"""

from typing import TYPE_CHECKING

import numpy as np

from ...utilities.performance.numba import njit

if TYPE_CHECKING:
    from . import InclinOutput
    from ...utilities.types import FloatArray


[docs] @njit(cacheable=True) def calc_inclination_off(inclination: 'FloatArray') -> 'InclinOutput': """Calculate F^2_lmp (assuming I=0) for l = 4""" # Inclination Functions Calculated for l = 4, Inclination == off. ones_ = np.ones_like(inclination) inclination_results = { (0, 2): 0.140625 * ones_, (2, 1): 56.25 * ones_, (4, 0): 11025. * ones_, } return inclination_results
[docs] @njit(cacheable=True) def calc_inclination(inclination: 'FloatArray') -> 'InclinOutput': """Calculate F^2_lmp for l = 4""" # Inclination Functions Calculated for l = 4. # Optimizations i = inclination i_half = i / 2. i_double = 2. * i sin_i = np.sin(i) cos_i = np.cos(i) sin_i_half = np.sin(i_half) cos_i_half = np.cos(i_half) sin_i_double = np.sin(i_double) inclination_results = { (0, 0) : 19.140625*sin_i_half**8*cos_i_half**8, (0, 1) : 4.78515625*(sin_i**2 - 0.8571428571428571428571429)**2*(cos_i + 1.0)**2*sin_i_half**4, (0, 2) : 1089.0*(0.6022727272727272727272727*sin_i_half**8 - sin_i_half**6 + 0.4090909090909090909090909*sin_i_half**4 + 0.1931818181818181818181818*cos_i_half**8 - 0.1818181818181818181818182*cos_i_half**6)**2, (0, 3) : 4.78515625*(sin_i**2 - 0.8571428571428571428571429)**2*(cos_i + 1.0)**2*sin_i_half**4, (0, 4) : 19.140625*sin_i_half**8*cos_i_half**8, (1, 0) : 306.25*sin_i_half**6*cos_i_half**10, (1, 1) : 1406.25*(-0.0125*(cos_i + 1.0)**3*sin_i - 0.6666666666666666666666667*sin_i_half**5*cos_i_half**3 + sin_i_half**3*cos_i_half**5)**2, (1, 2) : 2025.0*(0.01041666666666666666666667*(cos_i + 1.0)**3*sin_i - 0.1666666666666666666666667*sin_i_half**7*cos_i_half + sin_i_half**5*cos_i_half**3 - sin_i_half**3*cos_i_half**5)**2, (1, 3) : 306.25*(-sin_i**2 + 0.5*cos_i + 0.9285714285714285714285714)**2*sin_i_half**6*cos_i_half**2, (1, 4) : 306.25*sin_i_half**10*cos_i_half**6, (2, 0) : 2756.25*sin_i_half**4*cos_i_half**12, (2, 1) : 225.0*(cos_i + 1.0)**4*(0.875*sin_i**2 + 0.875*cos_i - 1)**2, (2, 2) : 1550.390625*(sin_i**2 - 0.8571428571428571428571429)**2*(cos_i + 1.0)**2*sin_i_half**4, (2, 3) : 3600.0*(0.875*sin_i**2 - 0.875*cos_i - 1)**2*sin_i_half**8, (2, 4) : 2756.25*sin_i_half**12*cos_i_half**4, (3, 0) : 43.06640625*(cos_i + 1.0)**6*sin_i**2, (3, 1) : 99225.0*(-0.02083333333333333333333333*(cos_i + 1.0)**3*sin_i + sin_i_half**3*cos_i_half**5)**2, (3, 2) : 99225.0*sin_i_half**6*cos_i_half**6*cos_i**2, (3, 3) : 172.265625*(sin_i + sin_i_double)**2*(cos_i - 1.0)**4, (3, 4) : 11025.0*sin_i_half**14*cos_i_half**2, (4, 0) : 11025.0*cos_i_half**16, (4, 1) : 176400.0*sin_i_half**4*cos_i_half**12, (4, 2) : 396900.0*sin_i_half**8*cos_i_half**8, (4, 3) : 176400.0*sin_i_half**12*cos_i_half**4, (4, 4) : 11025.0*sin_i_half**16 } return inclination_results