/// <summary> /// Override for <see cref="FlightIntegrator.CalculateSunBodyFlux"/> /// </summary> public static void SunBodyFlux(ModularFlightIntegrator flightIntegrator) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = Current.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = Current.shifter.solarInsolation; CalculatePhysics(); // Get "Correct" values flightIntegrator.BaseFICalculateSunBodyFlux(); // FI Values Boolean directSunlight = flightIntegrator.Vessel.directSunlight; Double solarFlux = flightIntegrator.solarFlux; if (!SolarFlux.ContainsKey(Current.name)) { SolarFlux.Add(Current.name, solarFlux); } else { SolarFlux[Current.name] = solarFlux; } // Calculate the values for all bodies foreach (KopernicusStar star in Stars.Where(s => s.sun != FlightIntegrator.sunBody)) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = star.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = star.shifter.solarInsolation; CalculatePhysics(); // Calculate Flux Double flux = Flux(flightIntegrator, star); // And save them if (flux > 0) { directSunlight = true; } solarFlux += flux; if (!SolarFlux.ContainsKey(star.name)) { SolarFlux.Add(star.name, flux); } else { SolarFlux[star.name] = flux; } } // Reapply flightIntegrator.Vessel.directSunlight = directSunlight; flightIntegrator.solarFlux = solarFlux; // Set Physics PhysicsGlobals.SolarLuminosityAtHome = Current.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = Current.shifter.solarInsolation; CalculatePhysics(); }
/// <summary> /// Override for <see cref="FlightIntegrator.CalculateSunBodyFlux"/> /// </summary> public static void SunBodyFlux(ModularFlightIntegrator flightIntegrator) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = Current.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = Current.shifter.solarInsolation; CalculatePhysics(); // Get "Correct" values flightIntegrator.BaseFICalculateSunBodyFlux(); // FI Values bool directSunlight = flightIntegrator.Vessel.directSunlight; double solarFlux = flightIntegrator.solarFlux; double bodyEmissiveFlux = flightIntegrator.bodyEmissiveFlux; double bodyAlbedoFlux = flightIntegrator.bodyAlbedoFlux; // Calculate the values for all bodies foreach (KopernicusStar star in Stars.Where(s => s.sun != FlightIntegrator.sunBody)) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = star.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = star.shifter.solarInsolation; CalculatePhysics(); // Calculate Flux Flux(flightIntegrator, star); // And save them if (flightIntegrator.Vessel.directSunlight) { directSunlight = true; } solarFlux += flightIntegrator.solarFlux; bodyEmissiveFlux += flightIntegrator.bodyEmissiveFlux; bodyAlbedoFlux += flightIntegrator.bodyAlbedoFlux; } // Reapply flightIntegrator.Vessel.directSunlight = directSunlight; flightIntegrator.solarFlux = solarFlux; flightIntegrator.bodyEmissiveFlux = bodyEmissiveFlux; flightIntegrator.bodyAlbedoFlux = bodyAlbedoFlux; }
/// <summary> /// Override for <see cref="FlightIntegrator.CalculateSunBodyFlux"/> /// </summary> public static void SunBodyFlux(ModularFlightIntegrator flightIntegrator) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = Current.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = Current.shifter.solarInsolation; CalculatePhysics(); // Get "Correct" values flightIntegrator.BaseFICalculateSunBodyFlux(); // FI Values bool directSunlight = flightIntegrator.Vessel.directSunlight; double solarFlux = flightIntegrator.solarFlux; double bodyEmissiveFlux = flightIntegrator.bodyEmissiveFlux; double bodyAlbedoFlux = flightIntegrator.bodyAlbedoFlux; // Calculate the values for all bodies foreach (KopernicusStar star in Stars.Where(s => s.sun != FlightIntegrator.sunBody)) { // Set Physics PhysicsGlobals.SolarLuminosityAtHome = star.shifter.solarLuminosity; PhysicsGlobals.SolarInsolationAtHome = star.shifter.solarInsolation; CalculatePhysics(); // Calculate Flux Flux(flightIntegrator, star); // And save them if (flightIntegrator.Vessel.directSunlight) directSunlight = true; solarFlux += flightIntegrator.solarFlux; bodyEmissiveFlux += flightIntegrator.bodyEmissiveFlux; bodyAlbedoFlux += flightIntegrator.bodyAlbedoFlux; } // Reapply flightIntegrator.Vessel.directSunlight = directSunlight; flightIntegrator.solarFlux = solarFlux; flightIntegrator.bodyEmissiveFlux = bodyEmissiveFlux; flightIntegrator.bodyAlbedoFlux = bodyAlbedoFlux; }