using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using UnitsNet; using static ManyWorldsTheory.Form2; namespace ManyWorldsTheory { class Galaxy { public double GetRandomeNumber(double minimum, double maximum) { Random random = new Random(); return random.NextDouble() * (maximum - minimum); } Atome Periodensys2; public async Task CreateGalaxies(Teilsys2 t2, Boolean gravitation, Boolean Carbonoxide, Boolean coalorsilicium, Boolean hasGalxyStartAtoms) { double anzahlagalaxien = 0; double mass2 = t2.mass; bool allatomsused = false; double Druck = 0; double massallatomsinGas = 0; double speedofatoms = 0; Atombau.Elementarteilchen.Quarks.Fermions.UP Up = new Atombau.Elementarteilchen.Quarks.Fermions.UP(); Atombau.Elementarteilchen.Quarks.Fermions.Down Down = new Atombau.Elementarteilchen.Quarks.Fermions.Down(); Atombau.Elementarteilchen.Quarks.Fermions.Charm Charm = new Atombau.Elementarteilchen.Quarks.Fermions.Charm(); Atombau.Elementarteilchen.Quarks.Fermions.Top Top = new Atombau.Elementarteilchen.Quarks.Fermions.Top(); Atombau.Elementarteilchen.Quarks.Fermions.Strange Strange = new Atombau.Elementarteilchen.Quarks.Fermions.Strange(); Atombau.Elementarteilchen.Quarks.Leptionen.Electron e = new Atombau.Elementarteilchen.Quarks.Leptionen.Electron(); Atombau.Hadrons.Meson.Proton prot = new Atombau.Hadrons.Meson.Proton(); Teilchen hydogen; Teilchen Magnesium; Teilchen Silicium; Teilchen Sulfur; Teilchen Calcium; Teilchen Titatnium; Teilchen Carbon; Teilchen Oxygen; Teilchen Ferrum; Teilchen Helium; Teilchen[] hydrogenarr = new Teilchen[380000]; Teilchen[] Carbonarr = new Teilchen[380000]; Teilchen[] magnesarr = new Teilchen[380000]; Teilchen[] Oxygenarr = new Teilchen[380000]; Teilchen[] Heliumarr = new Teilchen[380000]; double getratio2 = 0.00; double getvalue2 = 0.00; Form2 f2 = new Form2(); Teilchen[] water = new Teilchen[380000]; Teilchen[] watermagnes = new Teilchen[380000]; Teilchen[] Siliciumarr = new Teilchen[380000]; Teilchen[] CarbonOxide = new Teilchen[380000]; Teilchen[] TitatniumArr = new Teilchen[380000]; Teilchen[] FerrumArr = new Teilchen[380000]; double Boltzmannconstant = 1.380649 * Math.Pow(10,-23); Periodensys2 = new Atome(); //index number -1 due to begin an array at 0 and the PSE at 1 hydogen = Periodensys2.getSearch(0); Helium = Periodensys2.getSearch(1); Carbon = Periodensys2.getSearch(5); Oxygen = Periodensys2.getSearch(7); Magnesium = Periodensys2.getSearch(11); Silicium = Periodensys2.getSearch(13); Sulfur = Periodensys2.getSearch(15); Calcium = Periodensys2.getSearch(19); Titatnium = Periodensys2.getSearch(21); Ferrum = Periodensys2.getSearch(25); do { for(double age = 0; age < 3.1709791983765 * Math.Pow(10, -7); age++) { Heliumarr= new Teilchen[(int)age]; hydrogenarr[(int)age] = Periodensys2.getSearch(0); setspeedofTeilchen(hydrogenarr[(int)age]); speedofatoms += hydrogenarr[(int)age].getspeed(); getvalue2 += hydrogenarr[(int)age].getmass(); } for (double age = 0; age >= 380000; age++) { hydrogenarr = new Teilchen[(int)age]; hydrogenarr[(int)age] = Periodensys2.getSearch(0); setspeedofTeilchen(hydrogenarr[(int)age]); speedofatoms += hydrogenarr[(int)age].getspeed(); getvalue2 += hydrogenarr[(int)age].getmass(); mass2 += getvalue2; magnesarr = new Teilchen[(int)age]; magnesarr[(int)age] = Periodensys2.getSearch(11); setspeedofTeilchen(magnesarr[(int)age]); speedofatoms += magnesarr[(int)age].getspeed(); mass2 += magnesarr[(int)age].getmass(); Carbonarr = new Teilchen[(int)age]; Carbonarr[(int)age] = Periodensys2.getSearch(5); setspeedofTeilchen(Carbonarr[(int)age]); speedofatoms += Carbonarr[(int)age].getspeed(); mass2 += Carbonarr[(int)age].getmass(); Oxygenarr = new Teilchen[(int)age]; Oxygenarr[(int)age] = Periodensys2.getSearch(11); setspeedofTeilchen(Oxygenarr[(int)age]); speedofatoms += Oxygenarr[(int)age].getspeed(); mass2 += Oxygenarr[(int)age].getmass(); CarbonOxide = new Teilchen[(int)age]; CarbonOxide[(int)age] = Periodensys2.getSearch(5) + Periodensys2.getSearch(7); setspeedofTeilchen(CarbonOxide[(int)age]); speedofatoms += CarbonOxide[(int)age].getspeed(); mass2 += CarbonOxide[(int)age].getmass(); Siliciumarr = new Teilchen[(int)age]; Siliciumarr[(int)age] = Periodensys2.getSearch(13); setspeedofTeilchen(Siliciumarr[(int)age]); speedofatoms += Siliciumarr[(int)age].getspeed(); mass2 += Siliciumarr[(int)age].getmass(); TitatniumArr = new Teilchen[(int)age]; TitatniumArr[(int)age] = Periodensys2.getSearch(21); setspeedofTeilchen(TitatniumArr[(int)age]); speedofatoms += TitatniumArr[(int)age].getspeed(); mass2 += TitatniumArr[(int)age].getmass(); FerrumArr = new Teilchen[(int)age]; FerrumArr[(int)age] = Periodensys2.getSearch(0); setspeedofTeilchen(FerrumArr[(int)age]); speedofatoms += FerrumArr[(int)age].getspeed(); mass2 += getvalue2; Heliumarr = new Teilchen[(int)age]; Heliumarr[(int)age] = Periodensys2.getSearch(1); setspeedofTeilchen(Heliumarr[(int)age]); speedofatoms += Heliumarr[(int)age].getspeed(); massallatomsinGas = Heliumarr[(int)age].getmass(); mass2 += getvalue2; } getratio2 = getvalue2 / mass2; } while (t2.age < 1.5 * Math.Pow(10, 9) && getratio2 <= 0.92); if (CarbonOxide.Length != 0 & Carbon != null & Oxygen != null) Carbonoxide = true; if (Siliciumarr.Length != 0) coalorsilicium = true; if (Carbonoxide == true && coalorsilicium == true) gravitation = true; if (gravitation == true) hasGalxyStartAtoms = true; if (f2.getMasseverhältnisProtonzuEminus(e, prot) && getratio2 == 0.92) { if (t2.age >= 1.5 * Math.Pow(10, 9) & t2.getVolumeofUniverse2() != 0) hasGalxyStartAtoms = true; else hasGalxyStartAtoms = false; while (t2.age > 1.5 * Math.Pow(10, 9) && getratio2 <= 0.92) { water = new Teilchen[hydrogenarr.Length + (Oxygenarr.Length / 2)]; watermagnes = new Teilchen[magnesarr.Length + water.Length]; for (int anzhyd = hydrogenarr.Length; anzhyd > 0; anzhyd--) { for (int anzoxygen = Oxygenarr.Length; anzoxygen > 0; anzoxygen--) { water[anzhyd] = hydogen + (Oxygen + Oxygen); setspeedofTeilchen(water[anzhyd]); speedofatoms += water[anzhyd].getspeed(); massallatomsinGas += water[anzhyd].getmass(); anzoxygen--; anzoxygen--; CarbonOxide[anzoxygen] = Carbonarr[anzoxygen] + Oxygenarr[anzoxygen]; setspeedofTeilchen(CarbonOxide[anzoxygen]); speedofatoms += CarbonOxide[anzoxygen].getspeed(); massallatomsinGas += CarbonOxide[anzoxygen].getmass(); anzoxygen--; } } for (int anzmagn = magnesarr.Length; anzmagn > 0; anzmagn--) { watermagnes[anzmagn] = water[anzmagn] + magnesarr[anzmagn]; setspeedofTeilchen(watermagnes[anzmagn]); speedofatoms += watermagnes[anzmagn].getspeed(); } allatomsused = true; if (allatomsused == true) { Teilchen[] anzahlatoms = new Teilchen [Carbonarr.Length + CarbonOxide.Length + Siliciumarr.Length + water.Length + watermagnes.Length + Oxygenarr.Length]; int anzatms = Carbonarr.Length + CarbonOxide.Length + Siliciumarr.Length + water.Length + watermagnes.Length + Oxygenarr.Length; for (int i = 0; i< anzatms;i++) { anzahlatoms[i] = Carbonarr[i]; } double[] MikroEnergyofT = new double[anzatms]; double ImpulsofT = 0; double EntropyofSystem = 0; for (int i = 0; i < anzatms; i++) { for (int j = 0; j < anzatms-i; j++) { ImpulsofT = Math.Pow(anzahlatoms[anzatms].getImpuls().X,2)+Math.Pow(anzahlatoms[anzatms].getImpuls().Y,2)+ Math.Pow(anzahlatoms[anzatms].getImpuls().Z, 2); } MikroEnergyofT[i] = Entropy.FromJoulesPerKelvin(1 / anzatms * ((1/2)* Math.Pow(anzahlatoms[i].getspeed(),2))).JoulesPerKelvin; } for (int i = 0; i < MikroEnergyofT.Length; i++) { double Energyofatms = 0; for (int j = 0; j < anzatms; j++) { Energyofatms = MikroEnergyofT[j]; EntropyofSystem = - Boltzmannconstant * Energyofatms * Math.Log(MikroEnergyofT[i]); } } double anzahlallatomsinGas = Mass.FromKilograms(Carbonarr.Length + CarbonOxide.Length + Siliciumarr.Length + water.Length + watermagnes.Length + Oxygenarr.Length).Kilograms / Mass.FromKilograms(t2.getmassofUniverse2()).Kilograms; double Molmass = MolarMass.FromKilogramsPerMole(anzahlallatomsinGas * massallatomsinGas).KilogramsPerMole; double mittelofspeedsquared = Speed.FromMetersPerSecond(Math.Pow((speedofatoms/ anzatms), 2)).MetersPerSecond; double Energyofallatoms = 0; for(int i = 0; i < MikroEnergyofT.Length; i++) { Energyofallatoms += MikroEnergyofT[i]; } Func f3 = x => (x / EntropyofSystem); //x = Energyofallatoms double TempofDust = Temperature.FromDegreesCelsius(1/Boltzmannconstant *Math.Pow(MathNet.Numerics.Integrate.DoubleExponential(f3,0,t2.getageofUniversev1()),-1)).Kelvins; if (anzahlallatomsinGas <= GetRandomeNumber(100, 300)) { Druck = (anzahlallatomsinGas * Molmass * mittelofspeedsquared) / 3 * t2.getVolumeofUniverse2(); for (double temp = anzahlallatomsinGas; temp <= 0; temp--) { if (Druck != 0) anzahlagalaxien += 1; } } else Druck = 0; //Starcreation //if (anzahlagalaxien != 0) //{ //} //await } } } double TempfromCelsiustoKelvin( double CelsiusTmp) { return CelsiusTmp + 273.15; } void setspeedofTeilchen(Teilchen t) { if (t2.g == 0) { t.setspeed(0); } else { t.setspeed(t2.g); } } double temp2 = 0; temp2 = await anzahlagalaxien; } } }