From efe63b89e1c7ac1783bab3408e954341c9e2981c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ya=C3=ABl=20M=2E?= <154762804+Yael-II@users.noreply.github.com> Date: Thu, 10 Oct 2024 00:07:02 +0200 Subject: [PATCH] Add files via upload --- COSMIC/cexe.sh | 6 + COSMIC/input/default.cfg | 6 +- COSMIC/source/CEXE_v3.py | 143 ++++++++++++++++++ COSMIC/source/COSMIC_v3.py | 2 +- COSMIC/source/COSMIC_v3_emission.py | 12 +- COSMIC/source/COSMIC_v3_galaxy.py | 2 + COSMIC/source/COSMIC_v3_init.py | 4 +- .../__pycache__/COSMIC_v3.cpython-39.pyc | Bin 0 -> 534 bytes .../COSMIC_v3_config.cpython-39.pyc | Bin 0 -> 4324 bytes .../COSMIC_v3_coordinates.cpython-39.pyc | Bin 0 -> 949 bytes .../COSMIC_v3_emission.cpython-39.pyc | Bin 0 -> 1949 bytes .../COSMIC_v3_evolve.cpython-39.pyc | Bin 0 -> 1595 bytes .../COSMIC_v3_galaxy.cpython-39.pyc | Bin 0 -> 3057 bytes .../__pycache__/COSMIC_v3_init.cpython-39.pyc | Bin 0 -> 5632 bytes .../COSMIC_v3_output.cpython-39.pyc | Bin 0 -> 916 bytes 15 files changed, 165 insertions(+), 10 deletions(-) create mode 100644 COSMIC/cexe.sh create mode 100644 COSMIC/source/CEXE_v3.py create mode 100644 COSMIC/source/__pycache__/COSMIC_v3.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_config.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_coordinates.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_emission.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_evolve.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_galaxy.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_init.cpython-39.pyc create mode 100644 COSMIC/source/__pycache__/COSMIC_v3_output.cpython-39.pyc diff --git a/COSMIC/cexe.sh b/COSMIC/cexe.sh new file mode 100644 index 0000000..9551502 --- /dev/null +++ b/COSMIC/cexe.sh @@ -0,0 +1,6 @@ +if [[ "$VIRTUAL_ENV" == "/Users/yael/.venv/amuse" ]] +then + python source/CEXE_v3.py +else + echo "please activate amuse" +fi diff --git a/COSMIC/input/default.cfg b/COSMIC/input/default.cfg index a38ba77..15fedd6 100644 --- a/COSMIC/input/default.cfg +++ b/COSMIC/input/default.cfg @@ -1,4 +1,4 @@ -N_stars 10 +N_stars 128 timestep 1 output_times 1 2 5 10 20 50 100 200 500 1000 2000 5000 R0_king 1 @@ -18,6 +18,6 @@ cluster_position_z 0 out_directory ./output/ in_directory ./input/ config default.cfg -workers_stellar 1 -workers_gravity 1 +workers_stellar 1 +workers_gravity 3 format_type csv diff --git a/COSMIC/source/CEXE_v3.py b/COSMIC/source/CEXE_v3.py new file mode 100644 index 0000000..e883b94 --- /dev/null +++ b/COSMIC/source/CEXE_v3.py @@ -0,0 +1,143 @@ +""" +* CEXE: COSMIC Extension for X-ray Emission +* Version 3 +@ Yaël Moussouni +@ Unistra, P&E, MSc1-MoFP +@ Observatory of Strasbourg (Intern) +""" + +import numpy as np +import os +import subprocess as sp +from astropy import units as u + +directory = "./output/" + +# SIMPUT (sources) +val_Elow = 0.1 +val_Eup = 15 +val_NBins = 1000 +val_logEgrid = "yes" +val_Emin = 2 +val_Emax = 10 +val_nH = 0.2 +val_flux_min = 2 +val_flux_max = 10 +# SIXTE (instrument) +val_ra = 0 +val_dec = 0 +val_Exposure = 1000 +XML_file = "TODO" # TODO !! + +# * COSMIC +def open_file_terminal(): + filelist = np.sort([f for f in os.listdir(directory) if "stars" in f]) + print("\033[36m"+"Available files:"+"\033[0m") + for i in range(len(filelist)): + print("\033[36m"+"\t{}: ".format(i+1) + "\033[0m" + filelist[i]) + j = int(input("\033[32m"+"Select a file number: "+"\033[0m"))-1 + filename = filelist[j] + date = filename[filename.find("COSMIC_")+len("COSMIC_") : filename.find("_stars")] + time = filename[filename.find("stars_")+len("stars_") : filename.find("_Myr")] + print("") + file = np.loadtxt(directory+filename, delimiter=",", comments="#") + with open(directory+filename) as f: head = f.readline().strip('\n')[1:] + return file, head, date, time + +# * XSpec +def xspec_build(date, time): + with open(directory+"CEXE_XSPEC_{}_{}_Myr_0.6_0.0.sh".format(date, time), "w+") as xspec_file_0600: + xspec_file_0600.write("model phabs*TODO\n") + xspec_file_0600.write("phabs:nH>{}\n".format(val_nH)) + xspec_file_0600.write("TODO:...\n") + xspec_file_0600.write("flux {} {}\n".format(val_flux_min, val_flux_max)) + xspec_file_0600.write("save model {}XSPEC_{}_{}_Myr_0.6_0.0.xcm\n".format(directory, date, time)) + xspec_file_0600.write("quit") + with open(directory+"CEXE_XSPEC_{}_{}_Myr_0.5_0.0.sh".format(date, time), "w+") as xspec_file_0500: + xspec_file_0500.write("model phabs*TODO\n") + xspec_file_0500.write("phabs:nH>{}\n".format(val_nH)) + xspec_file_0500.write("TODO:...\n") + xspec_file_0500.write("flux {} {}\n".format(val_flux_min, val_flux_max)) + xspec_file_0500.write("save model {}XSPEC_{}_{}_Myr_0.5_0.0.xcm\n".format(directory, date, time)) + xspec_file_0500.write("quit") + with open(directory+"CEXE_XSPEC_{}_{}_Myr_0.4_1.0.sh".format(date, time), "w+") as xspec_file_0410: + xspec_file_0410.write("model phabs*TODO\n") + xspec_file_0410.write("phabs:nH>{}\n".format(val_nH)) + xspec_file_0410.write("TODO:...\n") + xspec_file_0410.write("flux {} {}\n".format(val_flux_min, val_flux_max)) + xspec_file_0410.write("save model {}XSPEC_{}_{}_Myr_0.4_1.0.xcm\n".format(directory, date, time)) + xspec_file_0410.write("quit") + with open(directory+"CEXE_XSPEC_{}_{}_Myr_0.2_0.8.sh".format(date, time), "w+") as xspec_file_0208: + xspec_file_0208.write("model phabs*TODO\n") + xspec_file_0208.write("phabs:nH>{}\n".format(val_nH)) + xspec_file_0208.write("TODO:...\n") + xspec_file_0208.write("flux {} {}\n".format(val_flux_min, val_flux_max)) + xspec_file_0208.write("save model {}XSPEC_{}_{}_Myr_0.2_0.8.xcm\n".format(directory, date, time)) + xspec_file_0208.write("quit") + return None + +def xspec_exec(date, time): + sp.run("echo \"xspec < {}CEXE_XSPEC_{}_{}_Myr_0.6_0.0.sh - TO EXECUTE\"".format(directory, date, time), shell=True) + sp.run("echo \"xspec < {}CEXE_XSPEC_{}_{}_Myr_0.5_0.0.sh - TO EXECUTE\"".format(directory, date, time), shell=True) + sp.run("echo \"xspec < {}CEXE_XSPEC_{}_{}_Myr_0.4_1.0.sh - TO EXECUTE\"".format(directory, date, time), shell=True) + sp.run("echo \"xspec < {}CEXE_XSPEC_{}_{}_Myr_0.2_0.8.sh - TO EXECUTE\"".format(directory, date, time), shell=True) + return None + +# * SIMPUT +def simput_build(file, col, date, time): + with open(directory+"CEXE_SIMPUT_{}_{}_Myr.sh".format(date, time), "w+") as simput_file: + Infiles = "" + for i in range(len(file)): + star_flux = file[i,col["X_luminosity"]] / (4*np.pi*(file[i,col["dist"]] * u.pc).to(u.cm).value**2) + star_ra = file[i,col["ra"]] + star_dec = file[i,col["dec"]] + star_T_0 = file[i,col["X_temperature_0"]] + star_T_1 = file[i,col["X_temperature_1"]] + + Infiles += "{}SIMPUT_{}_{}_Myr_{}.fits,".format(directory, date, time, i) + + simput_file.write("$SIXTE/bin/simputfile Simput={}SIMPUT_{}_{}_Myr_{}.fits ".format(directory, date, time, i)) + simput_file.write("Src_Name = star_{} ".format(i)) + simput_file.write("RA = {} Dec = {} ".format(star_ra, star_dec)) + simput_file.write("srcFlux = {} ".format(star_flux)) + simput_file.write("Elow={} Eup={} NBins={} logEgrid={} Emin={} Emax={} ".format(val_Elow, val_Eup, val_NBins, val_logEgrid, val_Emin, val_Emax)) + + simput_file.write("XSPECFile={}XSPEC_{}_{}_Myr_{:2.01f}_{:2.01f}.xcm".format(directory, date, time, star_T_0, star_T_1)) + simput_file.write("\n") + simput_file.write("$SIXTE/bin/simputmerge ") + simput_file.write("Infiles={} ".format(Infiles[:-1])) + simput_file.write("Outfile={}SIMPUT_{}_{}_Myr.fits".format(directory, date, time)) + simput_file.write("\n") + return 0 + +def simput_exec(date, time): + sp.run(["chmod", "a+x", "{}CEXE_SIMPUT_{}_{}_Myr.sh".format(directory, date, time)]) + sp.run(["echo" ,"{}CEXE_SIMPUT_{}_{}_Myr.sh - TO EXECUTE".format(directory, date, time)]) + return 0 + +def sixte_build(date, time): + with open(directory+"CEXE_SIXTE_{}_{}_Myr.sh".format(date, time), "w+") as sixte_file: + sixte_file.write("$SIXTE/bin/runsixt ") + sixte_file.write("XMLFile = {} ".format(XML_file)) + sixte_file.write("RA = {} DEC = {} ".format(val_ra, val_dec)) + # sixte_file.write("Prefix = SIXTE_ ") + sixte_file.write("Simput = {}SIMPUT_{}_{}_Myr.fits ".format(directory, date, time)) + sixte_file.write("EvtFile = {}SIXTE_Event_{}_{}_Myr.fits ".format(directory, date, time)) + sixte_file.write("Exposure = val_Exposure") + sixte_file.write("\n") + return 0 + +def sixte_exec(date, time): + sp.run(["chmod", "a+x", "{}CEXE_SIXTE_{}_{}_Myr.sh".format(directory, date, time)]) + sp.run(["echo", "{}CEXE_SIXTE_{}_{}_Myr.sh - TO EXECUTE".format(directory, date, time)]) + return 0 + +file, head, date, time = open_file_terminal() +col = {head.split(",")[i]:i for i in range(len(head.split(",")))} + +xspec_build(date, time) +xspec_exec(date, time) +simput_build(file, col, date, time) +simput_exec(date, time) +sixte_build(date, time) +sixte_exec(date, time) diff --git a/COSMIC/source/COSMIC_v3.py b/COSMIC/source/COSMIC_v3.py index e6733d4..659dfb1 100644 --- a/COSMIC/source/COSMIC_v3.py +++ b/COSMIC/source/COSMIC_v3.py @@ -1,5 +1,5 @@ """ -* COSMIC : Cluster Orbital SysteM Integration Code +* COSMIC: Cluster Orbital SysteM Integration Code * Version 3 @ Yaël Moussouni @ Unistra, P&E, MSc1-MoFP diff --git a/COSMIC/source/COSMIC_v3_emission.py b/COSMIC/source/COSMIC_v3_emission.py index 6a59ebe..ce7ca95 100644 --- a/COSMIC/source/COSMIC_v3_emission.py +++ b/COSMIC/source/COSMIC_v3_emission.py @@ -10,8 +10,9 @@ import numpy as np import amuse.units.units as u def rotation(stars, params): - N = params["N_stars"] + np.int32(np.round(params["N_stars"] * params["binary_fraction"])) - stars.X_v = np.random.uniform(0, 10, N) | u.km * u.s**(-1) + N = params["N_stars"] \ + + np.int32(np.round(params["N_stars"] * params["binary_fraction"])) + stars.X_v = np.random.uniform(0, 10, N) | u.km * u.s**(-1) # TODO ROTATION TABLES p = np.random.uniform(0, 1, N) stars.X_vsini = stars.X_v * np.sqrt(2*p-p**2) return stars @@ -19,9 +20,12 @@ def rotation(stars, params): def X_emission(stars, params): for i in range(len(stars)): if stars[i].temperature.value_in(u.K) > 7300: # O B A - stars[i].X_luminosity = params["X_coefficient_OBA"] * stars[i].luminosity.in_(u.erg * u.s**(-1)) + stars[i].X_luminosity = params["X_coefficient_OBA"] \ + * stars[i].luminosity.in_(u.erg * u.s**(-1)) elif stars[i].temperature.value_in(u.K) < 6000: # G K M - stars[i].X_luminosity = params["X_coefficient_GKM"] * (stars[i].X_vsini.value_in(u.km * u.s**(-1)))**(1.9) | u.erg * u.s**(-1) + stars[i].X_luminosity = params["X_coefficient_GKM"] \ + * (stars[i].X_vsini.value_in(u.km * u.s**(-1)))**(1.9) \ + | u.erg * u.s**(-1) else: # F stars[i].X_luminosity = 0 | u.erg * u.s**(-1) return stars diff --git a/COSMIC/source/COSMIC_v3_galaxy.py b/COSMIC/source/COSMIC_v3_galaxy.py index b646e44..fb190a3 100644 --- a/COSMIC/source/COSMIC_v3_galaxy.py +++ b/COSMIC/source/COSMIC_v3_galaxy.py @@ -9,7 +9,9 @@ import numpy as np import matplotlib.pyplot as plt import amuse.units.units as u +from amuse.ext.galactic_potentials import MWpotentialBovy2015 +MilkyWay_Bovy2015 = MWpotentialBovy2015 class MilkyWay_AMUSE(object): # THIS IS A COPY OF https://github.com/amusecode/amuse/blob/cdd21cc5cb06e40ccf5ecb86d513d211634e2689/examples/textbook/solar_cluster_in_galaxy_potential.py#L37 diff --git a/COSMIC/source/COSMIC_v3_init.py b/COSMIC/source/COSMIC_v3_init.py index 768b9c3..f699b42 100644 --- a/COSMIC/source/COSMIC_v3_init.py +++ b/COSMIC/source/COSMIC_v3_init.py @@ -139,11 +139,11 @@ def create_channels(): return channels def generate_galaxy(stars, params): - galaxy_model = galaxy.MilkyWay_AMUSE() + galaxy_model = galaxy.MilkyWay_Bovy2015() stars.x += params["cluster_position_x"] stars.y += params["cluster_position_y"] stars.z += params["cluster_position_z"] - vc = galaxy_model.vel_circ(stars.center_of_mass().length()).in_(u.km * u.s**(-1)) + vc = galaxy_model.circular_velocity(stars.center_of_mass().length()).in_(u.km * u.s**(-1)) phi = np.arctan2(stars.center_of_mass().y.value_in(u.pc), stars.center_of_mass().x.value_in(u.pc)) stars.vx += - vc * np.sin(phi) stars.vy += vc * np.cos(phi) diff --git a/COSMIC/source/__pycache__/COSMIC_v3.cpython-39.pyc b/COSMIC/source/__pycache__/COSMIC_v3.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3795d63af27c1def86eff1a1ec3562e9960d8fb2 GIT binary patch literal 534 zcmYjO&1&2*5SG1vj&~Q*H_)kMOH$K@UP=i8Hw$}kcEO~jreL&|b}Nu2qo07!eS*G0 zdMtg6zJ;zmELC2jX#lJKLyT|Ge$YdA#*3Wv6`IY z&GVacoaNQ4i%cyyP+4yc)Az(G-D0)FIk3!DIlaec-78uy;ztmLZvD_QV;6HjDNCxV zvh*YA>ZbLfZ2YsD*hVNT`1WPfb~`^l#z7;jKRt9*-d~oLk~_Zl<6}JeSMd|dcEkaD z+z?G_8Ha^zP5c7&-72erhl1qxzpJhw3YCpq$q!tLi?jaxQOJxiHs|Y3TIp`vqhCkt)i<6 zQ!4smj73O%G0ruvKT;MGJjUZF4W8fz$|O(n6v`Cu;%Ss!TwPGInOYScr%suduP@Ba zUN%poGJj?EDm34jt)Pv#Bk7Q<*QweEX3TmFY5)e+*d( z6Z)7n6|Qpak1hxyfgbZh(Q>R|?x&2vZC1-aT`8gtl{;swtwI;GGkI%V6nDt6fOz!Uedt2^`F zQIv$Wf&~e?ik_%gSiQBXU0~RS?MH5nj*^kQ)FoSh7aU8WhYb949iA1ja z2$g_hbAtuyhSpHHHmq#uLF{gPlgW1wj?JWv&SM*JZyq03+O&vX(kAz45yhlUM_Qg4 zRCqU14^o8m?%MM{>`woD{rJe+ubi#Sx!`dNA2{W*xn!HZwPJJgffFp7!Ln^ug$;qZ7z9i%nN5VTs&HKF zZsgyg>Q+OoVy%Y8idC-JdB+V|Ez~e+c=2CAm} z&rK`*IM(5Ll%ptLKzRb?H&LFHt4d$UQp=QFIbf&uNH4;24BFGvSkDHdBV`;B@^EV6 zEN`AhF}YLZBWXD*w&doMt8d9b7jmz&X)%UkO9sGJOln`0wE>w;%8bkGDKh6@Xykl_ zM$RAMAW$XM;CE{&fw4bhzdOMy=G1@tou0tj!5I(RvrRi&m{1 zj2DU}agZ8Byq#~wbrg^?XhW^wuZUsPvc1Hgp~0=dmP8b4uJ=HUN+W&E#@QUJcy6#9 zYTQ~2^<|s@VH{_54JYOc(kOD>heRK z(Vb`wU5>~-BU%nfwL5K74=hr0y4)vM^ZMNQk_;l(A+ps9q2qzbsG(|yE=ub4ja||3v6Pr zaU&aq%{C5-0R9Ac9QcPFeZ;7bINAIJHVN4LvfT!w0GXhN?*lb}e$jz~R)8)6O#=N# zJBl&HssAL|%)lmfPyK+2p?$4DN$6<^R$XLuuH6db=mO5%{{T-Deyalqi2?r-c!u!R z4m?BnXTZA&f82qC@X-D-@E*cH>%e;mUj^Pv_?I0x$Pw*t0q-OHzwJ2IB3kP{vYLcd zKde+Sx~~dafN4~L<;0HO|RIy^9WcMlXLxjKg3=WcZ zKLtKW_@~d{gTUVdK1BG_XK>KEy9|7o@V{Y+RsB3}8fPjuE#cyiV#+L7uImM6&E>e*2A0dC3yr*T%AW|+an0y{ z8r@y8Ng^z9UXFc6W;;|RE=chrvM?d+YS}8-;(16d;tG>s)I424!<4MjoyG4Yu}opv za!Yn(=)Z#YEh;mZ&W_=>Vj>-*+6mNm-xKTvp^-*fm};7dYv^Imy;hz?^86txdyEQP zjSb6O9aaYA-9{3cwywUv)C6H|uuc55-MQA(8rp^`PvNE>XbpWmqO9)(I*&KB==OVm zw4w9Fu+og7jB(`$=&>0OVmO;)jrh9ORPK-7#Q(33cU@zO+xwE@zdM0{U-{lf3gQjA zN0Yl4^SfIaGVwJt>3pWU>Hpoqvg6vFo40+9)V-?hhDl*tT$=e|%&(T6Ak^@OMO#Lz zMi;_tf=-=9Big)RIjYH@v8X0HSfs6`KExHQsJJS#j=N{3D7;Eub|V|#hJ`N=QHAxg zG~N{DDo&v^8$&Lx1IwnvL_W{GLOvhH+*+l&79E#;R;A|KrYjz=mF*dM8S>?|K{pK6&kWUw841HQ%>Mybax6pu literal 0 HcmV?d00001 diff --git a/COSMIC/source/__pycache__/COSMIC_v3_coordinates.cpython-39.pyc b/COSMIC/source/__pycache__/COSMIC_v3_coordinates.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f6b0ec33201ecfafd58ae8b35d602de892049161 GIT binary patch literal 949 zcmYjQ!EVz)5Zztdv6DC{1tj3+Q$Euy|yuI&_u*c3LX=Mo)wO&}xi8pW^ zYYT*vv%Y)0e}3qJ`dz|!N^@(swP#(1KYxs^0WCSFWuAiOB2Rh2!cFUR<8ad&c+tzP z0X;ee%gGf_*fcCCn^|;ddEmvbXvwav=V@LfEbp~`Ltu0qVab-O3A_Qvfy2K7sn7`B z;ew2mZ+MOYsrQHg((aK`G)8)b3uB}_Mip6dWx>JLjPVzBu2$+@3s4(w(<*Ibjym%O z@Gfv2_}WOB8&w11bq*kQU{?CQ+^r0mN3DNQA*dZW?x_Ob2s{(`R%k;OW=U_I$rcG? z8ji~(NOPf=L70_15o8iE1#C=}4mk1+@8is&l*OV6K2S(HnThV(a2!Sjjgq`zY2=$w zxttFv%YuRm)pgE1L0Bl1IJuT25=IP72=gcrs+4+7p#f%G;P(Pw3hcACjA{b$$=SZI z^bZ}O_FeD%J7P~j`!}*Lpj+IYg~{0N)2PfKIJX_>7q1$=R!e)-_onGD~5+&S+eYlQ(i)xx7*}4EzwA#3cU!=@k8X literal 0 HcmV?d00001 diff --git a/COSMIC/source/__pycache__/COSMIC_v3_emission.cpython-39.pyc b/COSMIC/source/__pycache__/COSMIC_v3_emission.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca93ec9aabf79ea15fe6bc80fa4ab1bb32380309 GIT binary patch literal 1949 zcmb7F&2Jk;6rb4-?`G`~nnW}~r7TrdFiLCE+z=w6X@jiFPK4DeM5>mJXKmKm59iHp zgeB+H9ys=dM8(0mQT5J0zyof(hFUV)jcfUCtU zX5(rztwG8&IiLgQV|R1AQLApc*WEj{YNJuzuA}UJ06a_+cg@*wzxIE97P+-F=RD1m z5GD7LkZ0hpxI5SGthlvCbM<;H-P%FT_C62b$j?&fxoOL7pcUUwb7;FCRg)}$r0fjw zR#I=uG){+s45mspaq{nw^eLmuBqIZgQycA&YRhDioX`_`ksNCo>F5JPrr6g`^vvuO za9YeSQS7>~>K@O0;9_n+ zOnm5hE%2Ke76T|oHk9BDU*H(3txTg_6k5_1W|(AaH-!mUB_;~sCoGMHg(YjH5DS_M z?En`p^j+^r82k`2VIj-IBrF@k9Nk*z`ryZ0(7K@ArvxtI1^;|gxrcS-m7X6&mD_1E zkAo!Rl})THuhg*mY-g*|xQQ5!s?5I)yKc2w*$Sfo%@n{DL=T$5c;_9hc|ja!-ETildz;qN?I2B;OA(N4e_Q^x~klrQ_emU0qq>o^A zw1J)(9rFa?JTTy^5rku1VPK)o#yP`u3EBt{+Xalwys9^Al3H{&BJOtl#$BVRJr i{L0BhY${6i>#;wJQv=R?1gcfxhsS?>%infAOFmlFjJ7_M! z_JjteFTl^>A$ded{0ZLp34Y~?7k)sWIQAr)YK2F0>~rzuocTPY)e0?W=ezRaU*EF+ z*2>-Hfbtw(@e%~Jh89KCPSMady_31Ng{;gSdZ_mJ!-nw$!!^@~!*v=^mwLaTVUw;= zpEh9BqV~Y*gyk3(4L`z%Cxia+A%237&Q88KI|9oY<02_?d=NgzUy(n5PjSB}g(%8A z0n4jA5t5T#eEPxBF76NFkDv65-YIxaMuPDPkp-XP;sOsKN{otFY)zNcqWA8OLL{XE3bjwVGq zVVK~ope)7TC-Mr93J{l^OcFW8B&S$NmZpSb2EnC-dhMCHs#%nBT*^o$856h7N9PBh zWbzq)bpABE-TCp^)BU~uiyPdZ^6p(lq08HMP3$1a%9Q8@aa?5Mlu1VQWR9RTopt4n zd6G-zUlcqeQUw!|mMltgg-YeXvdYfK%E`#JYU-m+SY)zLZd{C~%CAqSLP5YIB;lgt zD=&sbh4PH9g7}K$IZK7|$Apti@HT9%ko?W!4`6irP4^XiY0;e$mUdqhahb7PitZtN zYtiik5A?Lx9qa>B^>-In$rv9WcY8_7Aj|;Q1)g}!7Fskpi0aes!67#nwT%|_-h@rX z1_;Y-qCK>M0`%Ap5Pt}kIMDV*TZ8^JN`HY;xeJv3xY3`wMk!c=V^A^?OUwVD6d078 z8l@VeIl4hrga0JgXH9_0o!d7E#;rT!jpexV_^)zvwx#vz_0Af;$_FerXWNzire}p^ zWx+h>!T~saZbL#`{}Z^Yg}y@yjd%n4PMhmGa9sede=1y;fj6~iX`!pfbshN@2<68` z!KqNK>*){soKO~1xYa6PSt9h^R{<}ifp8dp87-~D_BbUXBavj;m~kRY&iJ-o)Bw^l zOpTJ9@PvuZ8h=Z>-q!mCODn&pZSO4SaIC#;4SFeAwAzZ_*CCp=TI}e!2XAl@EmwUE zUZH7N0TLn?HO=#|hUIoeU+(xhuL4L*fSTc+$Y Sed!JQZV;e0fDexyw*CWBETESF literal 0 HcmV?d00001 diff --git a/COSMIC/source/__pycache__/COSMIC_v3_galaxy.cpython-39.pyc b/COSMIC/source/__pycache__/COSMIC_v3_galaxy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7bfe6175dd373eb177ac25722d9a0b19d0e8156f GIT binary patch literal 3057 zcmcJR&2Jk;6u@V8*X#A#PU0kOg8G4>rK(FCHwjc6Xp<&wqewU{jY``+uv+hIoK4qW zcXl1cVJ#ui{s;U4l%6Ui&fGxa#ElzhPaqCa#D^kIhy&%lS=(_!uB6_>8Rcm2UbsQJL* zf$KMlvqgQr_|W?H3$Ix5TS4Hr8ZOk_Yq&wkt&7Dw=WbpsR#xrlOBMgt9kAT41`gk} zLZ7#b{#tPrS_M_V#cRd$%Z|L=G!A|T zHozeUg-w9PJMxCIK$z6cy84D@6WQnfXc?_f6NLc{mt+1EZ8`a-iNvbX%SLz97IGTVvQ(*6C_fS zoJnJ(lR9VS<3O&{o&f_|## zmq|vB^!@%5a3yd~I4=0gGPUa=$8c<%Lq1AHIj{{eEy|$>Ing84*X42+N0oY3qC1k=KT+X!C)TW}s%Ku^+fNvCHa>C%;#k_194pN;* zst0-jp}?Gm1V?%72fPk39cf2uJHtSq1hyPXpm11}QYY{>jDSrRHju)GrNmYM8{Xbr zlm&^Jhya845Pg6@amR(f(P$(pM5AjmP@Y}kIoNWZM==DV%kp1yd>E@nP+-v6`Dpyh zrJuJyo#S{+d>q7!G(Uzq#$G;wViLu{uv!`u=<*Y2I*H;Giqj}wMNvfY8VDo1=0ng- zIOeZo^%)Q`Wrm(u5NCcC4d<|Zw-zx5$hQp1YD2z#80m3Dug0xSH*EKTo(2a2PT~O2 zbW(t=(Tmba0R1g#`^*s-ANFNqoalYHkr>nk#J_>UC}4oWPGVA5llwtf=?B#kYtDXgcg8<|bVGi{gK)qR!itLul+(0c8cV4MKyB@oTJ zKj{L!Mz2T;g`f1Ff9GCL8`sJkxMjLAHFjNVy+T|e)9p;1p*|x zJ$48>w6BzOd^$9&x?`HLZklzUwLH{wrun#Kd5J~b$XKbYwi+CsvV>#M=4BL@Q6TpN zyC7zQfuGAD@Wuyt<26}>n6CY!r?pA#xK(omc>P3GIC$?^XnmKsf?P`ARS=ZBtK zg~ttQhT6^LrWeKqtKJHnDR{AlK_cUnD2Ry~rxLTX6;9y`$qrq6|KBIzxF2z$zZ<>x kX{`Fy4aW|}w2oR$ti79T&ow-a03)2DX*5SiX$}tbUqIQ5J^%m! literal 0 HcmV?d00001 diff --git a/COSMIC/source/__pycache__/COSMIC_v3_init.cpython-39.pyc b/COSMIC/source/__pycache__/COSMIC_v3_init.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1ce3ec65299f8ae5d905e6edfa78d1d748d4554 GIT binary patch literal 5632 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 UL^+kO9A51-4pti8Z7&Lb1HGl&M*si- literal 0 HcmV?d00001