Fix some issues in mass importing + give warning when mass too low
This commit is contained in:
		
							parent
							
								
									4dcd43850f
								
							
						
					
					
						commit
						c8f79bbdf5
					
				| @ -143,7 +143,7 @@ public class SimulationHandler extends AbstractElementHandler { | |||||||
|         context.getOpenRocketDocument().addSimulation(sim); |         context.getOpenRocketDocument().addSimulation(sim); | ||||||
| 
 | 
 | ||||||
|         // Set the weight and CG overrides |         // Set the weight and CG overrides | ||||||
|         applyMassOverrides(); |         applyMassOverrides(warnings); | ||||||
|         applyCGOverrides(sustainerMount, booster1Mount, booster2Mount, fcid); |         applyCGOverrides(sustainerMount, booster1Mount, booster2Mount, fcid); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -217,15 +217,15 @@ public class SimulationHandler extends AbstractElementHandler { | |||||||
|         return mount; |         return mount; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void applyMassOverrides() { |     private void applyMassOverrides(WarningSet warnings) { | ||||||
|         // Don't do anything if the mass has already been overridden by a previous simulation |         // Don't do anything if the mass has already been overridden by a previous simulation | ||||||
|         if (rocket.getStage(0).isMassOverridden()) { |         if (rocket.getStage(0).isMassOverridden()) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         double sustainerMass = applySustainerMassOverride(); |         applySustainerMassOverride(); | ||||||
|         double booster1Mass = applyBooster1MassOverride(sustainerMass); |         applyBooster1MassOverride(warnings); | ||||||
|         applyBooster2MassOverride(sustainerMass, booster1Mass); |         applyBooster2MassOverride(warnings); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -256,21 +256,29 @@ public class SimulationHandler extends AbstractElementHandler { | |||||||
|     /** |     /** | ||||||
|      * Applies the mass from the RASAero simulation to booster1 as an override, and returns the final booster1 mass. |      * Applies the mass from the RASAero simulation to booster1 as an override, and returns the final booster1 mass. | ||||||
|      * Note: the sustainer mass and booster1 motor mass is subtracted from the RASAero mass to get the final mass. |      * Note: the sustainer mass and booster1 motor mass is subtracted from the RASAero mass to get the final mass. | ||||||
|      * @param sustainerMass the sustainer mass |      * @param warnings list to add import warnings to | ||||||
|      * @return the final booster1 mass |      * @return the final booster1 mass | ||||||
|      */ |      */ | ||||||
|     private double applyBooster1MassOverride(double sustainerMass) { |     private double applyBooster1MassOverride(WarningSet warnings) { | ||||||
|         if (!includeBooster1 || booster1LaunchWt == null || booster1LaunchWt == 0) { |         if (!includeBooster1 || booster1LaunchWt == null || booster1LaunchWt == 0 || sustainerLaunchWt == null) { | ||||||
|             return 0; |             return 0; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Get the booster motor weight |         // Calculate the final booster mass | ||||||
|         double boosterMotorWt = 0; |         final double boosterWt; | ||||||
|         if (booster1Engine != null) { |         if (sustainerLaunchWt > booster1LaunchWt) { | ||||||
|             boosterMotorWt = booster1Engine.getLaunchMass(); |             warnings.add("Sustainer wt is greater than total loaded wt of booster 1. Setting mass to 0."); | ||||||
|  |             boosterWt = 0; | ||||||
|  |         } else { | ||||||
|  |             // Get the booster motor weight | ||||||
|  |             double boosterMotorWt = 0; | ||||||
|  |             if (booster1Engine != null) { | ||||||
|  |                 boosterMotorWt = booster1Engine.getLaunchMass(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             boosterWt = booster1LaunchWt - boosterMotorWt - sustainerLaunchWt; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         double boosterWt = booster1LaunchWt - boosterMotorWt - sustainerMass; |  | ||||||
|         AxialStage booster = rocket.getStage(1); |         AxialStage booster = rocket.getStage(1); | ||||||
|         booster.setMassOverridden(true); |         booster.setMassOverridden(true); | ||||||
|         booster.setSubcomponentsOverriddenMass(true); |         booster.setSubcomponentsOverriddenMass(true); | ||||||
| @ -282,22 +290,29 @@ public class SimulationHandler extends AbstractElementHandler { | |||||||
|     /** |     /** | ||||||
|      * Applies the mass from the RASAero simulation to booster2 as an override, and returns the final booster2 mass. |      * Applies the mass from the RASAero simulation to booster2 as an override, and returns the final booster2 mass. | ||||||
|      * Note: the sustainer mass, booster1 mass, and booster2 motor mass is subtracted from the RASAero mass to get the final mass. |      * Note: the sustainer mass, booster1 mass, and booster2 motor mass is subtracted from the RASAero mass to get the final mass. | ||||||
|      * @param sustainerMass the sustainer mass |      * @param warnings list to add import warnings to | ||||||
|      * @param booster1Mass the booster1 mass |  | ||||||
|      * @return the final booster2 mass |      * @return the final booster2 mass | ||||||
|      */ |      */ | ||||||
|     private double applyBooster2MassOverride(double sustainerMass, double booster1Mass) { |     private double applyBooster2MassOverride(WarningSet warnings) { | ||||||
|         if (!includeBooster2 || booster2LaunchWt == null || booster2LaunchWt == 0) { |         if (!includeBooster2 || booster2LaunchWt == null || booster2LaunchWt == 0 || booster1LaunchWt == null) { | ||||||
|             return 0; |             return 0; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Get the booster motor weight |         // Calculate the final booster mass | ||||||
|         double boosterMotorWt = 0; |         final double boosterWt; | ||||||
|         if (booster2Engine != null) { |         if (booster1LaunchWt > booster2LaunchWt) { | ||||||
|             boosterMotorWt = booster2Engine.getLaunchMass(); |             warnings.add("Booster1 wt is greater than total loaded wt of booster 2. Setting mass to 0."); | ||||||
|  |             boosterWt = 0; | ||||||
|  |         } else { | ||||||
|  |             // Get the booster motor weight | ||||||
|  |             double boosterMotorWt = 0; | ||||||
|  |             if (booster2Engine != null) { | ||||||
|  |                 boosterMotorWt = booster2Engine.getLaunchMass(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             boosterWt = booster2LaunchWt - boosterMotorWt - booster1LaunchWt; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         double boosterWt = booster2LaunchWt - boosterMotorWt - sustainerMass - booster1Mass; |  | ||||||
|         AxialStage booster = rocket.getStage(2); |         AxialStage booster = rocket.getStage(2); | ||||||
|         booster.setMassOverridden(true); |         booster.setMassOverridden(true); | ||||||
|         booster.setSubcomponentsOverriddenMass(true); |         booster.setSubcomponentsOverriddenMass(true); | ||||||
| @ -459,6 +474,7 @@ public class SimulationHandler extends AbstractElementHandler { | |||||||
|             double mountLocationX = mount.getLocations()[0].x; |             double mountLocationX = mount.getLocations()[0].x; | ||||||
|             double motorLocationX = mountLocationX + motorPositionXRel; |             double motorLocationX = mountLocationX + motorPositionXRel; | ||||||
|             double motorCG = motor.getCGPoints()[0].x + motorLocationX; |             double motorCG = motor.getCGPoints()[0].x + motorLocationX; | ||||||
|  |             // TODO: RASAero assumes motor CG to be at half the motor length from the bottom of the parent | ||||||
|             return combinedCG * (1 + motorMass / stageMass) |             return combinedCG * (1 + motorMass / stageMass) | ||||||
|                     - motorCG * (motorMass / stageMass); |                     - motorCG * (motorMass / stageMass); | ||||||
|         } |         } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user