public void TestAtmosphereDefaultChemTable() { var expected = new Dictionary <string, double>() { { "Ar", 87534.0399 }, { "CO2", 2702.8010 }, { "H2O", 1316.9480 }, { "Kr", 339.5423 }, { "Ne", 65.7954 }, { "Xe", 40.8734 }, { "NH3", 0.0000 }, { "CH4", 0.0000 }, { "O3", 0.0000 }, { "O", 0.0000 } }; var planet = GetTestPlanetAtmosphere(); var star = planet.Star; Generator.CalculateGases(planet, ChemType.GetDefaultTable()); Assert.AreEqual(expected.Count, planet.Atmosphere.Composition.Count); foreach (var gas in planet.Atmosphere.Composition) { Assert.AreEqual(expected[gas.GasType.symbol], gas.surf_pressure, DELTA); } }
public void TestNoAtmosphereDefaultChemTable() { var planet = GetTestPlanetNoAtmosphere(); var star = planet.Star; Generator.CalculateGases(planet, ChemType.GetDefaultTable()); Assert.AreEqual(0, planet.Atmosphere.Composition.Count); }
public MainGenerator() { AutoSize = true; AutoScaleMode = AutoScaleMode.Font; InitializeComponent(); _systemMap.PlanetClicked += _systemMap_Click; var spriteFile = Path.Combine(Directory.GetCurrentDirectory(), ArtFolder, PlanetsFile); _planetSprites = new PlanetSpriteSheet(Image.FromFile(spriteFile), new Point(77, 71), new Size(32, 32), 5, 5, 6); _systemMap.SpriteSheet = _planetSprites; _systemMap.PlanetPadding = 10; _gases = ChemType.LoadFromFile(Path.Combine(Directory.GetCurrentDirectory(), "elements.dat")); _seedSelector.Value = 0; _eccentricitySelector.Value = 0.25M; _gasRatioSelector.Value = 50; _dustDensitySelector.Value = 0.002M; _countSelector.Value = 100; GenerateGroup(); }
private static void CheckForSpecialRules(out double abund, out double react, double pressure, Planet planet, ChemType gas) { var sun = planet.Star; var pres2 = 1.0; abund = gas.abunds; if (gas.symbol == "Ar") { react = .15 * sun.AgeYears / 4e9; } else if (gas.symbol == "He") { abund = abund * (0.001 + (planet.GasMassSM / planet.MassSM)); pres2 = (0.75 + pressure); react = Math.Pow(1 / (1 + gas.reactivity), sun.AgeYears / 2e9 * pres2); } else if ((gas.symbol == "O" || gas.symbol == "O2") && sun.AgeYears > 2e9 && planet.SurfaceTempKelvin > 270 && planet.SurfaceTempKelvin < 400) { // pres2 = (0.65 + pressure/2); // Breathable - M: .55-1.4 pres2 = (0.89 + pressure / 4); // Breathable - M: .6 -1.8 react = Math.Pow(1 / (1 + gas.reactivity), Math.Pow(sun.AgeYears / 2e9, 0.25) * pres2); } else if (gas.symbol == "CO2" && sun.AgeYears > 2e9 && planet.SurfaceTempKelvin > 270 && planet.SurfaceTempKelvin < 400) { pres2 = (0.75 + pressure); react = Math.Pow(1 / (1 + gas.reactivity), Math.Pow(sun.AgeYears / 2e9, 0.5) * pres2); react *= 1.5; } else { pres2 = (0.75 + pressure); react = Math.Pow(1 / (1 + gas.reactivity), sun.AgeYears / 2e9 * pres2); } }