|
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).
SBGATGuiSBGATGui 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 SBGATFilterSBGATPolyhedronGravityModel now inherits from SBGATMassPropertiesSBGATMassPropertiesUQ now inherits from SBGATFilterUQSBGATPolyhedronGravityModelUQ now inherits from SBGATMassPropertiesUQSbgatGui 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 dependenciesSBGATShapeUncertaintySBGATShapeUncertainty 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 OverlaySbgatCore 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::LoadSurfacePGMSbgatGui 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::SaveSurfacePGMSbgatGUI as the evaluation of the PGM will now require the specification of an output fileSBGATPolyhedronGravityModelSbgatGui will now ask users whethers a loaded shape should be barycentered/principal-axis aligned, and apply the corresponding transform if answered yesSBGATPolyhedronGravityModel::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 shapeSbgatGuisSBGATPolyhedronGravityModel 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 files
The 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
1.8.15