diff options
author | hanemile <emile.hansmaennel@gmail.com> | 2017-12-03 13:24:08 +0100 |
---|---|---|
committer | hanemile <emile.hansmaennel@gmail.com> | 2017-12-03 13:24:08 +0100 |
commit | cc5da556b93f5105faa7243cd0b3b509c9ac98e3 (patch) | |
tree | 87ca2d3b88f42f13587829de71f7166d52c02ea1 /src/gen.py | |
parent | f19be9213764744304f1124d2f18bc4876f790ec (diff) |
added src folder containing the source-code
Diffstat (limited to 'src/gen.py')
-rw-r--r-- | src/gen.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/gen.py b/src/gen.py new file mode 100644 index 0000000..837e5b3 --- /dev/null +++ b/src/gen.py @@ -0,0 +1,85 @@ +from numpy import genfromtxt +import numpy as np +import math +import os +import socket +host = socket.gethostname() + +# variables +sigma = 200 +f_0 = 0.1 +R_s = 1e4 + +# M.. +Mxx = 0 +Mxy = 8e-6 +Myy = 0 + +# constants +pi = math.pi +e = math.e +G = 4.302e-3 + +# rho function +def rho(x, y, z): + r = math.sqrt(x**2 + y**2 + z**2) + a = (1) / (math.sqrt( 2 * pi ) * sigma ) + b = math.exp( - (phi(r) / sigma ** 2 ) ) + c = a * b + return c + +def rho_new(x, y, z): + a = (1 - ((1) / (2 * (sigma ** 2))) * ( Mxx * x**2 + 2 * Mxy * x * y + Myy * y**2 ) ) + return rho(x, y, z) * a + +# phi function +def phi(x): + if x == 0: + return -4 * pi * f_0 * G * R_s**2 + + a = - ( 4 * pi * G * f_0 * R_s ** 3 ) / x + b = np.log(1. + (x / R_s) ) + c = a * b + return c + +def gen_stars(stars): + stars = int(stars) + + time_start = time.time() + + # lists + listrho = [] + + # create new file for every calculation + path = "data/" + str(host) + "_" + str(os.getpid()) + ".csv" + print("path: " + str(path)) + + # define the size of the galaxy + length = 1.5e6 + + # define the borders + range_min = -int(length) + range_max = int(length) + + # define the rho range + rand_min = rho_new(0, 0, 0) + rand_max = rho_new(length, 0, 0) + + # create random stars + for r in range(0, stars): + x = np.random.uniform(range_min, range_max, size=1) + y = np.random.uniform(range_min, range_max, size=1) + z = np.random.uniform(range_min, range_max, size=1) + rand_val = np.random.uniform(rand_min, rand_max, size=1) + + # if the random value is smaller than the rho value, generate a star + if rand_val < rho(x, y, z): + + # open a file to write to + with open(path, "a") as data: + + # write the data to the file + data.write(str(x).strip("[]") + "," + str(y).strip("[]") + "," + str(z).strip("[]") + "\n") + +# generate n stars +gen_stars(5e7) |