예제 #1
0
파일: pyglow.py 프로젝트: Keminrin/pyglow
    def __init__(self, dn, lat, lon, alt, user_ind=False):
        import numpy as np
        from get_apmsis import get_apmsis

        nan = float('nan')
        
        # record input:
        self.dn = dn
        self.lat = lat
        self.lon = lon
        self.alt = alt

        self.doy = self.dn.timetuple().tm_yday
        self.utc_sec = self.dn.hour*3600. + self.dn.minute*60.
        self.utc_hour = self.dn.hour
        self.slt_hour = np.mod(self.utc_sec/3600. + self.lon/15., 24)
        self.iyd = np.mod(self.dn.year,100)*1000 + self.doy

        # initialize variables:
        # ---------------------

        # for kp, ap function
        self.kp       = nan
        self.ap       = nan
        self.f107     = nan
        self.f107a    = nan
        self.kp_daily = nan
        self.ap_daily = nan
        self.apmsis   = [nan,]*7
        self.dst      = nan

        # for iri:
        self.ne = nan
        ions = ['O+', 'H+', 'HE+', 'O2+', 'NO+']
        self.ni={}
        for ion in ions:
            self.ni[ion] = nan
        
        self.Ti = nan
        self.Te = nan
        self.Tn_iri = nan

        # for msis:
        self.Tn_msis = nan
        self.nn = {}
        for neutral in ['HE','O','N2','O2','AR','H','N','O_anomalous']:
            self.nn[neutral] = nan
        self.rho = nan

        # for hwm 93/07:
        self.u = nan
        self.v = nan
        self.hwm_version = nan

        # for igrf:
        self.Bx  = nan
        self.By  = nan
        self.Bz  = nan
        self.B   = nan
        self.dip = nan
        self.dec = nan

        # for run_airglow:
        self.ag6300 = nan

        if not user_ind: 
            # call the indice models:
            self.get_indices()
            self.apmsis = get_apmsis(self.dn)
예제 #2
0
    def __init__(
        self,
        dn,
        lat,
        lon,
        alt,
        user_ind=False,
    ):
        """
        An instance of Point is the fundamental data object
        for running each climatological model.

        Instantation of a Point initializes member variables,
        and also grabs the corresponding geophysical indices.

        :param dn: datetime.datetime object
        :param lat: Latitude [degrees]
        :param lon: Longitude [degrees]
        :param alt: Altitude [km]
        :param user_ind: (optional) Boolean switch to calculate
                         geophysical indices. If True, then it
                         is up to the user to assign geophysical
                         indices to the Point
        """

        nan = float('nan')

        # Record input:
        self.dn = dn
        self.lat = lat
        self.lon = lon
        self.alt = alt

        # Error if date is too early
        if self.dn.year < 1932:
            raise ValueError('Date cannot be before 1932!')

        # Time variables:
        self.doy = self.dn.timetuple().tm_yday
        self.utc_sec = self.dn.hour * 3600. + self.dn.minute * 60.
        self.utc_hour = self.dn.hour
        self.slt_hour = np.mod(self.utc_sec / 3600. + self.lon / 15., 24)
        self.iyd = np.mod(self.dn.year, 100) * 1000 + self.doy

        # For kp, ap function
        self.kp = nan
        self.ap = nan
        self.f107 = nan
        self.f107a = nan
        self.f107p = nan  # previous day's F10.7
        self.kp_daily = nan
        self.ap_daily = nan
        self.apmsis = [
            nan,
        ] * 7
        self.dst = nan
        self.ae = nan

        # For iri:
        self.ne = nan
        ions = ['O+', 'H+', 'HE+', 'O2+', 'NO+']
        self.ni = {}
        for ion in ions:
            self.ni[ion] = nan

        self.Ti = nan
        self.Te = nan
        self.Tn_iri = nan

        self.NmF2 = nan
        self.hmF2 = nan

        # For msis:
        self.Tn_msis = nan
        self.nn = {}
        for neutral in ['HE', 'O', 'N2', 'O2', 'AR', 'H', 'N', 'O_anomalous']:
            self.nn[neutral] = nan
        self.rho = nan

        # For hwm 93/07:
        self.u = nan
        self.v = nan
        self.hwm_version = nan

        # For igrf:
        self.Bx = nan
        self.By = nan
        self.Bz = nan
        self.B = nan
        self.dip = nan
        self.dec = nan

        # For run_airglow:
        self.ag6300 = nan
        self.ag7774 = nan

        # Flag for user indices:
        self.user_ind = user_ind

        if not self.user_ind:
            # Call the indice models:
            self.get_indices()
            self.apmsis = get_apmsis(self.dn)
예제 #3
0
파일: pyglow.py 프로젝트: Keminrin/pyglow
    def __init__(self, dn, lat, lon, alt, user_ind=False):
        import numpy as np
        from get_apmsis import get_apmsis

        nan = float('nan')

        # record input:
        self.dn = dn
        self.lat = lat
        self.lon = lon
        self.alt = alt

        self.doy = self.dn.timetuple().tm_yday
        self.utc_sec = self.dn.hour * 3600. + self.dn.minute * 60.
        self.utc_hour = self.dn.hour
        self.slt_hour = np.mod(self.utc_sec / 3600. + self.lon / 15., 24)
        self.iyd = np.mod(self.dn.year, 100) * 1000 + self.doy

        # initialize variables:
        # ---------------------

        # for kp, ap function
        self.kp = nan
        self.ap = nan
        self.f107 = nan
        self.f107a = nan
        self.kp_daily = nan
        self.ap_daily = nan
        self.apmsis = [
            nan,
        ] * 7
        self.dst = nan

        # for iri:
        self.ne = nan
        ions = ['O+', 'H+', 'HE+', 'O2+', 'NO+']
        self.ni = {}
        for ion in ions:
            self.ni[ion] = nan

        self.Ti = nan
        self.Te = nan
        self.Tn_iri = nan

        # for msis:
        self.Tn_msis = nan
        self.nn = {}
        for neutral in ['HE', 'O', 'N2', 'O2', 'AR', 'H', 'N', 'O_anomalous']:
            self.nn[neutral] = nan
        self.rho = nan

        # for hwm 93/07:
        self.u = nan
        self.v = nan
        self.hwm_version = nan

        # for igrf:
        self.Bx = nan
        self.By = nan
        self.Bz = nan
        self.B = nan
        self.dip = nan
        self.dec = nan

        # for run_airglow:
        self.ag6300 = nan

        if not user_ind:
            # call the indice models:
            self.get_indices()
            self.apmsis = get_apmsis(self.dn)