requirements. Other test runs, performed to acquire spin balance data at 28 rpm and 33 rpm, were also  successful in showing that GMI successfully meets the balancing requirement. The balancing of GMI takes place in two steps. In the first step, GMI is brought to a pseudo-balanced  state, prior to assembling the RDA, MR, and final MLI layers in air in a cleanroom environment. In this  configuration, analytical estimates of the RDA, MR, and MLI inertial properties are adopted while computing the balance masses, thus accounting for the future installation of these components. In the second step, the final balancing task is carried out while the fully assembled GMI in its final configuration in a vacuum chamber.  The MATLAB script reads the raw data file and pulls out the relevant ranges for the forces and resolver  data. The resolver reading is first converted from the voltage pulse ‘zero-crossing’ point that, signals a full  rotation, into useable angle data with respect to time. A correction value of 94.35 degrees (sensor location) is then added to the angular position to synchronize the zero position on the x–axis of the GICS  coordinate system with the SMA resolver readings. This makes it possible to pinpoint the direction of the imbalance, as well as, to properly place balance masses in locations given in a single reference  coordinate system. A total of nine forces are read as a function of time once every millisecond, one in each coordinate axis from each one of the three force transducers of the dynamometer. The data collected prior to the first resolver zero-crossing and after the last resolver zero-crossing time is disregarded. The force and moment resultants are then computed, and subjected to a low-pass Butterworth filter at 3 Hz. For each time station, the magnitude of the radial force and radial moment due to imbalance are computed, and plotted together with the static and dynamic imbalance magnitudes and directions as shown in Figure 9.  The mean radial force and mean radial moment are then computed and a linear programming solver is  used to find the minimum set of masses that would simultaneously bring the static and dynamic imbalances back to a balanced state. The script has a set of 21 hard-coded mass locations with lower and upper bounds. The optimization is carried to satisfy the four constraint equations with an objective function equal to the sum of all masses as explained in the analytical section. As a default, each mass is equally favored. The user may elect to eliminate contributions from individual masses by bounding their individual lower and upper bounds to zero. Furthermore, the relevance of some weights can be affected through modifying their weights in the objective function. Once the optimization is carried successfully, the command window displays the statement “Optimization terminated.” The solution is captured and displayed in three tables. The first table documents the magnitudes of the 21 masses, their locations and their first and second cross moment magnitudes. The resultant forces and moments due to the balancing  masses are displayed in the second table. And finally the resultant static and dynamic inertial contributions from the balancing masses are shown in the third table. The initial properties of the imbalance are shown and compared to the solution. The magnitudes of the 21 balancing masses are also displayed in a bar graph for quick visualization. The balancing masses are displayed in their 3D locations as weighted, colored spheres together with the resultant mass. Also displayed are the resultant centrifugal force and moment produced by the balancing masses along with the imbalance radial force  and moment. This gives a visual representation that a solution is found in which the balancing radial force  and radial moment are equal in magnitude and directly opposite to the force and moment generated by  the imbalances (see Figure 9). The effect of the missing RDA/MR hardware on the static imbalance is based solely on its total mass and  CG location. Because of this, it can be treated simply as the 22 ndbalancing mass during the initial  optimization process. This 22ndpresumed unknown mass will have the coordinates of the net CG of the  missing RDA/MR assembly and its upper and lower mass bounds are set to the known total mass and inertial properties of the RDA/MR, so that when a solution is found, the 22ndmass will be constrained to  be equal to its known value.   314