Small Body Geophysical Analysis Tool (SBGAT)
|
The Small Bodies Geophysical Analysis Tool (SBGAT) implementation.
master
branch of the present repository, or by using Homebrew as described below.develop
branch features code that is undergoing active development or debugging.The SBGAT User's Wiki can be found here, and the technical documentation here
Homebrew can be used to install SBGAT's components and dependencies.
brew tap bbercovici/self brew update brew install sbgat-core brew install sbgat-gui
The SbgatGui executable will be simlinked to /usr/local/bin
.
Refer to the detailed installation instructions.
Assuming that SbgatCore was installed with Homebrew:
brew update brew upgrade sbgat-core
If installed, after updating Homebrew, SbgatGui can be also upgraded:
brew upgrade sbgat-gui
Check each of SBGAT's dependencies repository and SBGAT's repository itself for updates. Assuming that the current directory is the original Git local repository for the component you wish to update, run :
git pull cd build cmake .. make make install
to apply the update (if any).
SBGATGui
SBGATGui
before being able to open up any of the analyses/observations windows.SBGATMassPropertiesUQ
's master script has been corrected with the proper SIM_PREFIXSBGATFilter
and SBGATFilterUQ
, the latter being tailored for uncertainty quantification in the considered geophysical properties<<<<<<< HEAD
develop
SBGATMassProperties
now inherits from SBGATFilter
SBGATPolyhedronGravityModel
now inherits from SBGATMassProperties
SBGATMassPropertiesUQ
now inherits from SBGATFilterUQ
SBGATPolyhedronGravityModelUQ
now inherits from SBGATMassPropertiesUQ
SbgatGui
now results in displaying the facet center coordinates.Examples
folder with illustrative snippets for SBGATPolyhedronGravityModelUQ
and SBGATMassPropertiesUQ
. These tests should be run from a Python 3 process (run ../master_script.py
) called from their build
directory.SBGATPolyhedronGravityModelUQ
, a class dedicated to uncertainty quantification in Polyhedron Gravity potentials and accelerations arising from a stochastic shape. This class enables the evaluation of the variance in the potential and covariance in the acceleration at any point in space (excluding shape edges)SBGATMassproperties
, SBGATSphericalHarmo
, SBGATPolyhedronGravityModel
,...) will return results using meters as length unit. For instance, calling GetAcceleration
from the SBGATPolyhedronGravityModel
class will always return an acceleration in m/s^2
.SetScaleMeters
or SetScaleKiloMeters
. This way, a shape whose coordinates are expressed in kilometers can be connected to an instance of SBGATMassproperties
or any other filter and used in a completely transparent manner as long as SetScaleKiloMeters
is called on the filter before Update()
SBGATMassproperties
, SBGATSphericalHarmo
and SBGATPolyhedronGravityModel
are initialized by default for a shape whose length units are in meters (i.e the scaleFactor
member is set to 1
by default, and set to 1000
if SetScaleKiloMeters()
is called)SBGATSphericalHarmo
that could have caused the evaluation of the spherical harmonics over a non-barycentered shape to be incorrect.SHARMLib
dependency to address the same issueCMakeLists.txt
in Tests to fix issue caused by a conflicting header being sometimes included by one of VTK's dependenciesSBGATShapeUncertainty
SBGATShapeUncertainty
provides two methods to evaluate the statistical moments: a monte-carlo method ComputeInertiaStatisticsMC
, and another method ComputeInertiaStatistics
leveraging a linearized uncertainty model as proposed by Bercovici and McMahon (Inertia statistics of an uncertain small body shape, ICARUS 2019 (In Review
). Both methods take the same argument (correleation length l
and the standard deviation governing the error in the control point coordinates, directed along the average normal at these points). Both these methods assume that the shape error can be described as normally distributed and zero-mean.Tests
to illustrate the convergence of the Monte-Carlo shape uncertainty sampling to the analytical predictionSBGATMassProperties::SaveMassProperties
is now saving the average radius (r_avg = cbrt(3/4 *Volume/pi)
) to the JSON fileSBGATMassproperties::GetPrincipalAxes
could return 4 dcms, all representative of the same inertia ellipsoid. To enforce stability in the principal axes extractions, SBGATMassproperties::GetPrincipalAxes
now returns the dcm that has the smallest-norm corresponding MRP.SBGAT
will try to link against OpenMP
by default. This behaviour can now be disabled by passing the --without-libomp
flag to Homebrew or by passing the -DNO_OMP:BOOL=TRUE
flag to CMakeSBGATPolyhedronGravityModel
involving a parallel computing block where a variable with no viable reduction clause was being operated onSBGATMassproperties::GetPrincipalAxes
is now returning the DCM [PB]
converting from the body coordinate frame to the body principal frame. It was previously returning [BP]
Note that ShapeUQLib is now a dependency of SBGAT and should be installed prior to compiling the newest SBGATCore and SBGATGui. Instructions are provided on the corresponding wiki page.
SBGATMassProperties
now offers a method to save the computed mass properties to a JSON file (SBGATMassProperties::SaveMassProperties
)SBGATMassProperties::ComputeAndSaveMassProperties
)Measures
menu in SbgatGUI
has been augmented with a Save geometric measures
actionI_norm = I / (mass * r_avg ^ 2)
where r_avg = cbrt(3/4 *Volume/pi)
. r_avg
is now computed along with the other properties within SBGATMassProperties
.SbgatGui
by clicking on them. If the surface PGM of the selected shape is available, the results for the selected facet will be shown in the consoleSet Shape Mapper
option was renamed to Set Results Overlay
SbgatCore
that was due to an unecessary rescaling of the computed potentials and accelerations within SbgatCore::ComputeSurfacePGM
. This bug was manifesting itself when calling SbgatCore::ComputeSurfacePGM
with a shape model whose coordinates were expressed in kilometers. This bug was not affecting SbgatGui
since it automatically rescales input shapes to meters upon loading.SBGATPolyhedronGravityModel::LoadSurfacePGM
SbgatGui
can now overlay previously computed surface PGM results over a corresponding shape model (aka featuring the same number of facets as the one used to generate the surface PGM)SBGATPolyhedronGravityModel::SaveSurfacePGM
SbgatGUI
as the evaluation of the PGM will now require the specification of an output fileSBGATPolyhedronGravityModel
SbgatGui
will now ask users whethers a loaded shape should be barycentered/principal-axis aligned, and apply the corresponding transform if answered yes
SBGATPolyhedronGravityModel::ComputeSurfacePGM
has been added to SbgatCore
to facilitate the evaluation of the polyhedron gravity model at the surface of a small body shape.SbgatGui
if the surface polyhedron gravity model is evaluated with a zero rotation period.SBGATPolyhedronGravityModel
and SBGATSphericalHarmo
are now returning potentials and accelerations evaluated with the same unit of length as the shape model they were associated with.SbgatGui
that was due to a vtkPolydataMapper
not being properly assigned to the correct ModelDataWrapper
after aligning the shapeSbgatGui
sSBGATPolyhedronGravityModel
and updated corresponding testsSBGATPolyhedronGravityModel
inputsSBGATObs
base-class from which SBGATObsLightcurve
and SBGATObsRadar
deriveOrbitConversions
to generate Keplerian trajectories or convert 6 dof states between Cartesians and Keplerian representations.SBGATObsLightcurve
and SBGATObsRadar
now handle primary/secondary asteroid systems, allowing generation of lightcurves and radar observations of binary asteroid systems. Relative trajectories can be computed under the assumption that the secondary is undergoing a keplerian orbit about the primary, or be loaded from an external file.SBGATSphericalHarmo
to density and mass of the considered shape modelSBGATPolyhedronGravityModel.cpp
where the edge extraction would sometimes fail. Fix consisted in filtering the input through a vtkPolyDataCleaner
before handing it to vtkExtractEdges
.SBGATObsLightcurve
to SbgatCore , a module enabling the generation of instantaneous-exposure lightcurves in a fixed-spin scenario. This module assumes constant small-body spin and phase angle between the sun, the small body and the observer.SBGATObsRadar
now throws an instance of std::runtime_error
if the specified bin sizes are incompatible with the collected data that may yield an empty histogram dimensionSBGATObsRadar
and SBGATObsLightcurve
can be penalized by incidence so as to diminish the weight of a given measurement. SBGATObsRadar
weighs by the cos
of the angle between the observer and the surface normal, while SBGATObsLightcurve
weighs by the product of the cos
of the angle between the observer and the surface normal and the cos
of the angle between the sun and the surface normalN * surface_area/max_surface_area
points are sampled for each facet, where max_surface_area
is the surface area of the largest facet in the shape and surface_area
that of the considered facetSBGATObsRadar
to SbgatCore, a class emulating range/range-rate radar measurements. The corresponding menu and action are also available in SbgatGuigcc
exists in Homebrew's Cellar, SBGAT and its dependencies will be compiled using this OpenMP compliant compiler, giving better performance on multithreaded platforms. This functionality had to be postponed due to Qt 5.10 incompability with recent gcc versions on MacOS.This new release of SBGAT allows import/export of gravity spherical harmonics from/into SBGAT by means of Niels Lohmann's Modern C++ JSON library. This functionality is available from SbgatCore's classes and SbgatGui as well.
SBGAT 1.04.2 enables the computation of the spherical harmonics expansion directly from SbgatGUI
Users must update their versions of RigidBodyKinematics to reflect the latest changes
SBGAT 1.04.0 can now be used to compute the spherical harmonics expansion of the exterior gravity field about a constant-density polyhedron
vtkPolydata
. This class effectively provides a wrapper around SHARMLib, a library developed by Benjamin Bercovici from the original works of Yu Takahashi and Siamak Hesar at the University of Colorado Boulder. For more details, see Spherical harmonic coefficients for the potential of a constant-density polyhedron by Werner, R. a. (1997).Note that SHARMLib is now a dependency of SBGAT and should be installed prior to compiling the newest SBGATCore and SBGATGui. Instructions are provided on the corresponding wiki page.
SBGAT 1.03.0 sees the introduction of YORP coefficients computation
Note that YORPLib is now a dependency of SBGAT and should be installed prior to compiling the latest SBGATCore and SBGATGui. Instructions are provided on the corresponding wiki page.
.obj
files.obj
filesThe SBGAT code documentation can be found here. It was generated with Doxygen and hosted on GitHub using the method described here
This software is distributed under the MIT License
Created by Benjamin Bercovici