Commit c3644f3e authored by Zhang Xin's avatar Zhang Xin
Browse files

load ephemeris bug in every loop -> load once

parent 23b8bb86
Loading
Loading
Loading
Loading
+6 −21
Original line number Diff line number Diff line
import ctypes
import numpy as np
from survey_sim.ephemeris._utils import importEphemerisLib

# import importlib.resources as pkg_resources
import importlib_resources as pkg_resources
import platform


def locate_moon(jdTime=2459766.0):

    jplDataFn = str(
        pkg_resources.files("survey_sim.ephemeris.data").joinpath("jpl.405")
    )
    libFn = str(
        pkg_resources.files("survey_sim.ephemeris.data").joinpath("ephJPLDE405.dylib")
    )
    if platform.system() == "Linux":
        libFn = str(
            pkg_resources.files("survey_sim.ephemeris.data").joinpath("ephJPLDE405.so")
        )

    d = ctypes.CDLL(libFn)
    # d.locateSun.argtypes=[ctypes.c_void_p, ctypes.c_double]
    d.loadEphFile.argtypes = [ctypes.c_char_p]
    d.locateMoon.argtypes = [ctypes.c_double, ctypes.POINTER(ctypes.c_double)]
def locate_moon(jdTime=2459766.0, ephLib=None):

    if ephLib is None:
        ephLib = importEphemerisLib()
    ephLib.locateMoon.argtypes = [ctypes.c_double, ctypes.POINTER(ctypes.c_double)]
    mLoc = (ctypes.c_double * 3)()
    t = ctypes.c_double(jdTime)
    d.loadEphFile(str.encode(jplDataFn))
    d.locateMoon(t, mLoc)
    ephLib.locateMoon(t, mLoc)
    mLoc_ = np.array(mLoc[:])
    return mLoc_
+10 −25
Original line number Diff line number Diff line
import ctypes
import numpy as np

# import importlib.resources as pkg_resources
import importlib_resources as pkg_resources
import platform

from survey_sim.ephemeris._utils import importEphemerisLib

def locate_sun(jdTime=2459766.0):
# import importlib.resources as pkg_resources

    jplDataFn = "data/jpl.405"
    jplDataFn = str(
        pkg_resources.files("survey_sim.ephemeris.data").joinpath("jpl.405")
    )
    libFn = str(
        pkg_resources.files("survey_sim.ephemeris.data").joinpath("ephJPLDE405.dylib")
    )
    if platform.system() == "Linux":
        libFn = str(
            pkg_resources.files("survey_sim.ephemeris.data").joinpath("ephJPLDE405.so")
        )

    d = ctypes.CDLL(libFn)
    # d.locateSun.argtypes=[ctypes.c_void_p, ctypes.c_double]
    d.loadEphFile.argtypes = [ctypes.c_char_p]
    d.locateSun.argtypes = [ctypes.c_double, ctypes.POINTER(ctypes.c_double)]
def locate_sun(jdTime=2459766.0, ephLib=None):

    sunLoc = (ctypes.c_double * 3)()
    if ephLib is None:
        ephLib = importEphemerisLib()
    ephLib.locateSun.argtypes = [ctypes.c_double, ctypes.POINTER(ctypes.c_double)]
    mLoc = (ctypes.c_double * 3)()
    t = ctypes.c_double(jdTime)
    d.loadEphFile(str.encode(jplDataFn))
    d.locateSun(t, sunLoc)
    sunLoc_ = np.array(sunLoc[:])
    return sunLoc_
    ephLib.locateSun(t, mLoc)
    mLoc_ = np.array(mLoc[:])
    return mLoc_


# clib = ctypes.CDLL('libc.dylib')
+4 −2
Original line number Diff line number Diff line
from survey_sim.ephemeris import locate_sun, locate_moon
import numpy as np
from survey_sim.satOrbit import locateSat, loadSatOrbitDat
from survey_sim.ephemeris._utils import importEphemerisLib

import math

@@ -40,10 +41,11 @@ def aquireTargeObsTime(
    sed_end = -1

    timeSegList = []
    ephLib = importEphemerisLib()
    for t in np.arange(stTime, endTime + deltTime, deltTime):
        rdTime = t
        sunPos = locate_sun(rdTime)
        mPos = locate_moon(rdTime)
        sunPos = locate_sun(jdTime=rdTime, ephLib=ephLib)
        mPos = locate_moon(jdTime=rdTime, ephLib=ephLib)
        satPos, satVel, _ = locateSat(time=rdTime, OrbitData=orbitDat)

        sunCons = obscure_constraint.isObscureBySun(