private void checkNaN() throws SimulationException { double d = 0; boolean b = false; d += currentStatus.getSimulationTime(); d += currentStatus.getPreviousTimeStep(); b |= currentStatus.getRocketPosition().isNaN(); b |= currentStatus.getRocketVelocity().isNaN(); b |= currentStatus.getRocketOrientationQuaternion().isNaN(); b |= currentStatus.getRocketRotationVelocity().isNaN(); d += currentStatus.getEffectiveLaunchRodLength(); if (Double.isNaN(d) || b) { log.error( "Simulation resulted in NaN value:" + " simulationTime=" + currentStatus.getSimulationTime() + " previousTimeStep=" + currentStatus.getPreviousTimeStep() + " rocketPosition=" + currentStatus.getRocketPosition() + " rocketVelocity=" + currentStatus.getRocketVelocity() + " rocketOrientationQuaternion=" + currentStatus.getRocketOrientationQuaternion() + " rocketRotationVelocity=" + currentStatus.getRocketRotationVelocity() + " effectiveLaunchRodLength=" + currentStatus.getEffectiveLaunchRodLength()); throw new SimulationException(trans.get("BasicEventSimulationEngine.error.NaNResult")); } }
private void checkNaN() throws SimulationException { double d = 0; boolean b = false; d += status.getSimulationTime(); d += status.getPreviousTimeStep(); b |= status.getRocketPosition().isNaN(); b |= status.getRocketVelocity().isNaN(); b |= status.getRocketOrientationQuaternion().isNaN(); b |= status.getRocketRotationVelocity().isNaN(); d += status.getEffectiveLaunchRodLength(); if (Double.isNaN(d) || b) { log.error( "Simulation resulted in NaN value:" + " simulationTime=" + status.getSimulationTime() + " previousTimeStep=" + status.getPreviousTimeStep() + " rocketPosition=" + status.getRocketPosition() + " rocketVelocity=" + status.getRocketVelocity() + " rocketOrientationQuaternion=" + status.getRocketOrientationQuaternion() + " rocketRotationVelocity=" + status.getRocketRotationVelocity() + " effectiveLaunchRodLength=" + status.getEffectiveLaunchRodLength()); throw new SimulationException( "Simulation resulted in not-a-number (NaN) value, please report a bug."); } }