Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
            /// <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;
            }
Exemplo n.º 3
0
            /// <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;
            }