Source code for simSetPlanetEnvironment

#
#  ISC License
#
#  Copyright (c) 2016, Autonomous Vehicle Systems Lab, University of Colorado at Boulder
#
#  Permission to use, copy, modify, and/or distribute this software for any
#  purpose with or without fee is hereby granted, provided that the above
#  copyright notice and this permission notice appear in all copies.
#
#  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

import numpy as np
from Basilisk.utilities import macros


[docs]def exponentialAtmosphere(atmosModule, name): """ Sets the exponential atmosphere model parameters for a particular planet. :param atmosModule: atmospheric environment module :param name: planet name string """ if name == "earth": atmosModule.planetRadius = 6378136.6 # meters atmosModule.baseDensity = 1.217 # kg/m^3 atmosModule.scaleHeight = 8500.0 # meters atmosModule.localTemp = 293.0 else: print("ERROR: " + name + " not setup for exponential atmosphere model\n") return
[docs]def centeredDipoleMagField(magFieldModule, name): """ Sets the centered dipole magnetic field model parameters for a particular planet :param magFieldModule: magnetic field environment module :param name: planet name string """ if name == "earth": # The following parameters are from the 2020 IGRF model # (https://www.ngdc.noaa.gov/IAGA/vmod/igrf.html) magFieldModule.g10 = -30926.00/1e9 # Tesla magFieldModule.g11 = -2318.00/1e9 # Tesla magFieldModule.h11 = 5817.00/1e9 # Tesla magFieldModule.planetRadius = 6371.2*1000 # meters elif name == "mercury": # The following parameters are from NASA planetary fact sheet # (https://nssdc.gsfc.nasa.gov/planetary/planetfact.html) magFieldModule.planetRadius = 2440.0*1000 # meters convertToIgrfDipoleCoefficients(0.002/10000, # [T] dipole strength 0.0*macros.D2R, # [rad] Dipole tilt to rotational axis 0.0*macros.D2R, # [rad] Longitude of tilt magFieldModule) elif name == "jupiter": # The following parameters are from NASA planetary fact sheet # (https://nssdc.gsfc.nasa.gov/planetary/planetfact.html) magFieldModule.planetRadius = 71398.0*1000 # meters convertToIgrfDipoleCoefficients(4.30/10000, # [T] dipole strength 9.4*macros.D2R, # [rad] Dipole tilt to rotational axis 200.1*macros.D2R, # [rad] Longitude of tilt magFieldModule) elif name == "saturn": # The following parameters are from NASA planetary fact sheet # (https://nssdc.gsfc.nasa.gov/planetary/planetfact.html) magFieldModule.planetRadius = 60330.0*1000 # meters convertToIgrfDipoleCoefficients(0.215/10000, # [T] dipole strength 0.0*macros.D2R, # [rad] Dipole tilt to rotational axis 0.0*macros.D2R, # [rad] Longitude of tilt magFieldModule) elif name == "uranus": # The following parameters are from NASA planetary fact sheet # (https://nssdc.gsfc.nasa.gov/planetary/planetfact.html) magFieldModule.planetRadius = 25600.0*1000 # meters convertToIgrfDipoleCoefficients(0.228/10000, # [T] dipole strength 58.6*macros.D2R, # [rad] Dipole tilt to rotational axis 53.6*macros.D2R, # [rad] Longitude of tilt magFieldModule) elif name == "neptune": # The following parameters are from NASA planetary fact sheet # (https://nssdc.gsfc.nasa.gov/planetary/planetfact.html) magFieldModule.planetRadius = 24765.0*1000 # meters convertToIgrfDipoleCoefficients(0.142/10000, # [T] dipole strength 46.9*macros.D2R, # [rad] Dipole tilt to rotational axis 288.*macros.D2R, # [rad] Longitude of tilt magFieldModule) else: print("ERROR: " + name + " not setup for centered dipole magnetic field model. Options include mercury, earth, jupiter, saturn, uranus and neptune. \n") return
[docs]def convertToIgrfDipoleCoefficients(nominalField, tilt, longitudeOfTilt, magFieldModule): """ Converts the NASA Magnetosphere parameters from https://nssdc.gsfc.nasa.gov/planetary/planetfact.html to IGRF compatible dipole coefficients. :param nominalField: nominal magnetic field parameter given in Tesla :param tilt: Dipole tilt to rotational axis in radians :param longitudeOfTilt: Longitude of tilt in radians :param magFieldModule: magnetic field environment module """ # the following conversion is taken from Appendix D of doi:10.1007/978-1-4939-0802-8 theta_m = np.pi - tilt alpha_m = np.pi - longitudeOfTilt magFieldModule.g11 = nominalField*np.sin(theta_m)*np.cos(alpha_m) magFieldModule.h11 = nominalField*np.sin(theta_m)*np.sin(alpha_m) magFieldModule.g10 = nominalField*np.cos(theta_m) return