コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="StellarBody"/> class.
        /// </summary>
        /// <param name="phy">The Science interface to use.</param>
        /// <param name="mass">The mass.</param>
        /// <param name="lum">The lumuminosity.</param>
        /// <param name="age">The age of the Body.</param>
        public StellarBody(IScienceAstrophysics phy, Mass mass, Luminosity lum, Duration age)
        {
            Science = phy;
            Parent  = null;

            if (mass.SolarMasses < 0.2 || mass.SolarMasses > 1.5)
            {
                mass = Mass.FromSolarMasses(Extensions.RandomNumber(0.7, 1.4));
            }

            if (lum.SolarLuminosities == 0.0)
            {
                lum = Science.Astronomy.GetLuminosityFromMass(mass);
            }

            StellarType = StellarType.FromLuminosityAndRadius(lum, Length.FromSolarRadiuses(1.0));

            //EcosphereRadiusAU = Math.Sqrt(lum);
            Life = Duration.FromYears365(1.0E10 * (mass.SolarMasses / lum.SolarLuminosities));

            if (age.Years365 == double.MaxValue)
            {
                Age = Duration.FromYears365(Extensions.RandomNumber(MinSunAge.Years365, Life < MaxSunAge ? Life.Years365 : MaxSunAge.Years365));
            }
            else
            {
                Age = age;
            }

            Mass           = StellarType.Mass;
            Radius         = StellarType.Radius;
            Luminosity     = StellarType.Luminosity;
            Temperature    = StellarType.Temperature;
            EscapeVelocity = Science.Dynamics.GetEscapeVelocity(Mass, Radius);
        }
コード例 #2
0
            public void TestLuminosityToSpectral()
            {
                var st1 = StellarType.FromLuminosityAndRadius(Luminosity.FromSolarLuminosities(0.16378798), Length.FromSolarRadiuses(0.72014487));

                Console.WriteLine(st1.ToString());
                Console.WriteLine("Mass = " + st1.Mass);
                Console.WriteLine("Temperature = " + st1.Temperature);
                Console.WriteLine("Luminosity = " + st1.Luminosity);
                Console.WriteLine("Radius = " + st1.Radius);

                var st2 = StellarType.FromString(st1.ToString());

                Console.WriteLine(st2.SpectralClass);
                Console.WriteLine(st2.LuminosityClass);
                Console.WriteLine(st2.SubType);
                Console.WriteLine("Mass = " + st2.Mass);
                Console.WriteLine("Temperature = " + st2.Temperature);
                Console.WriteLine("Luminosity = " + st2.Luminosity);
                Console.WriteLine("Radius = " + st2.Radius);

                Assert.IsTrue(Math.Abs(st2.Temperature.Kelvins - 4327.0) <= 150.0);
            }