+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGMassBalance::GetMassPropertiesReport(void) const
+{
+ cout << endl << fgblue << highint
+ << " Mass Properties Report (English units: lbf, in, slug-ft^2)"
+ << reset << endl;
+ cout << " " << underon << " Weight CG-X CG-Y"
+ << " CG-Z Ixx Iyy Izz" << underoff << endl;
+ cout.precision(1);
+ cout << highint << setw(34) << left << " Base Vehicle " << normint
+ << right << setw(10) << EmptyWeight << setw(8) << vbaseXYZcg(eX) << setw(8)
+ << vbaseXYZcg(eY) << setw(8) << vbaseXYZcg(eZ) << setw(12) << baseJ(1,1)
+ << setw(12) << baseJ(2,2) << setw(12) << baseJ(3,3) << endl;
+
+ for (unsigned int i=0;i<PointMasses.size();i++) {
+ PointMass* pm = PointMasses[i];
+ double pmweight = pm->GetPointMassWeight();
+ cout << highint << left << setw(4) << i << setw(30) << pm->GetName() << normint
+ << right << setw(10) << pmweight << setw(8) << pm->GetLocation()(eX)
+ << setw(8) << pm->GetLocation()(eY) << setw(8) << pm->GetLocation()(eZ)
+ << setw(12) << pm->GetPointMassMoI(1,1) << setw(12) << pm->GetPointMassMoI(2,2)
+ << setw(12) << pm->GetPointMassMoI(3,3) << endl;
+ }
+
+ for (unsigned int i=0;i<FDMExec->GetPropulsion()->GetNumTanks() ;i++) {
+ FGTank* tank = FDMExec->GetPropulsion()->GetTank(i);
+ string tankname="";
+ if (tank->GetType() == FGTank::ttFUEL && tank->GetGrainType() != FGTank::gtUNKNOWN) {
+ tankname = "Solid Fuel";
+ } else if (tank->GetType() == FGTank::ttFUEL) {
+ tankname = "Fuel";
+ } else if (tank->GetType() == FGTank::ttOXIDIZER) {
+ tankname = "Oxidizer";
+ } else {
+ tankname = "(Unknown tank type)";
+ }
+ cout << highint << left << setw(4) << i << setw(30) << tankname << normint
+ << right << setw(10) << tank->GetContents() << setw(8) << tank->GetXYZ(eX)
+ << setw(8) << tank->GetXYZ(eY) << setw(8) << tank->GetXYZ(eZ)
+ << setw(12) << "*" << setw(12) << "*"
+ << setw(12) << "*" << endl;
+ }
+
+ cout << underon << setw(104) << " " << underoff << endl;
+ cout << highint << left << setw(30) << " Total: " << right << setw(14) << Weight
+ << setw(8) << vXYZcg(eX)
+ << setw(8) << vXYZcg(eY)
+ << setw(8) << vXYZcg(eZ)
+ << setw(12) << mJ(1,1)
+ << setw(12) << mJ(2,2)
+ << setw(12) << mJ(3,3)
+ << normint << endl;
+
+ cout.setf(ios_base::fixed);
+}
+