Newer
Older
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
},
"source": [
"# Binary_c and python example notebook\n",
"The following notebook servers as an example of how the binary_c python wrapper works and how it could be used.\n",
"\n",
"By: David Hendriks 30 nov 2019"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
},
"outputs": [],
"source": [
"import binarycpython\n",
"import binary_c_python_api"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"## Core api wrapper functions:"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"### run_binary()\n"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Binary_c output:\n",
"\n",
"\n",
"example_header_1 time=0 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 0 15 14 1 1 3540.3 0\n",
"INITIAL_GRID 15 14 4530 0.02 1 0\n",
"example_header_1 time=0 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 0 15 14 1 1 3540.3 0\n",
"INITIAL_GRID 15 14 4530 0.02 1 0\n",
"example_header_1 time=1e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 1e-07 15 14 1 1 3540.3 0\n",
"example_header_1 time=2e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 2e-07 15 14 1 1 3540.3 0\n"
]
}
],
"source": [
"m1 = 15.0 # Msun\n",
"m2 = 14.0 # Msun\n",
"separation = 0 # 0 = ignored, use period\n",
"orbital_period = 4530.0 # days\n",
"eccentricity = 0.0\n",
"metallicity = 0.02\n",
"max_evolution_time = 15000 # You need to set this!\n",
"\n",
"argstring = \"binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} \".format(\n",
" m1,\n",
" m2,\n",
" separation,\n",
" orbital_period,\n",
" eccentricity,\n",
" metallicity,\n",
" max_evolution_time,\n",
")\n",
"\n",
"output = binary_c_python_api.run_binary(argstring)\n",
"\n",
"print(\"\\n\\nBinary_c output:\\n\\n\")\n",
"print('\\n'.join(output.split('\\n')[:10]))"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"### run_binary_with_log"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
" TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=7106 RANDOM_COUNT=0\n",
" 0.0000 15.000 14.000 1 1 2.786e+08 0.00 0.000 0.000 INITIAL \n",
" 12.7509 14.645 13.776 2 1 2.8427e+08 0.00 0.000 0.000 TYPE_CHNGE\n",
" 12.7773 14.639 13.775 4 1 2.8435e+08 0.00 0.000 0.000 TYPE_CHNGE\n",
" 13.1380 13.748 13.758 4 1 2.9373e+08 0.00 0.000 0.000 q-inv\n",
" 14.0900 10.830 13.705 4 2 3.2934e+08 0.00 0.000 0.000 OFF_MS\n",
" 14.0900 10.830 13.705 4 2 3.2934e+08 0.00 0.000 0.000 TYPE_CHNGE\n",
" 14.1204 10.726 13.700 4 4 3.3081e+08 0.00 0.000 0.000 TYPE_CHNGE\n",
" 14.2118 10.410 13.566 5 4 3.3702e+08 0.00 0.000 0.000 TYPE_CHNGE\n",
" 14.2646 1.472 13.462 13 4 -31.236 -1.00 0.000 0.000 Randbuf=34421 - d48r(0)=0.0570946 - d48r(1)=0.458272 - d48r(2)=0.13108 - d48r(3)=0.562029 - d48r(4)=0.924056 \n",
" 14.2646 1.472 13.462 13 4 -31.236 -1.00 0.000 0.000 SN kick II (SN type 12 12, pre-explosion M=9.89211 Mc=4.78817 type=5) -> kick 1(190) vk=302.148 vr=0.113492 omega=5.80602 phi=0.124379 -> vn=302.048 ; final sep -31.2365 ecc -1 (random count 0) - Runaway v=(0,0,0) |v|=0 : companion v=(0,0,0), |v|=0 ; \n",
" 14.2646 1.472 13.462 13 4 -31.236 -1.00 0.000 0.000 TYPE_CHNGE\n",
" 14.2646 1.472 13.462 13 4 -31.236 -1.00 0.000 0.000 DISRUPT \n",
" 14.2646 1.472 13.462 13 4 -31.236 -1.00 0.000 0.000 SN\n",
" 15.7087 1.472 10.210 13 5 -31.236 -1.00 0.000 0.000 TYPE_CHNGE\n",
" 15.7695 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 d48r(5)=0.608402 - d48r(6)=0.696003 - d48r(7)=0.796455 - d48r(8)=0.0834973 \n",
" 15.7695 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 SN kick II (SN type 12 12, pre-explosion M=9.85661 Mc=4.3914 type=5) -> kick 1(190) vk=392.156 vr=0 omega=0.524629 phi=0.634667 -> vn=392.156 ; final sep -31.2365 ecc -1 (random count 5) - Runaway v=(0,0,0) |v|=0 : companion v=(0,0,0), |v|=0 ; \n",
" 15.7695 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 TYPE_CHNGE\n",
" 15.7695 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 q-inv\n",
" 15.7695 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 SN\n",
" 15000.0000 1.472 1.444 13 13 -31.236 -1.00 0.000 0.000 MAX_TIME\n",
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
"Probability : 1\n",
"\n"
]
}
],
"source": [
"import tempfile\n",
"import os\n",
"\n",
"m1 = 15.0 # Msun\n",
"m2 = 14.0 # Msun\n",
"separation = 0 # 0 = ignored, use period\n",
"orbital_period = 4530.0 # days\n",
"eccentricity = 0.0\n",
"metallicity = 0.02\n",
"max_evolution_time = 15000 # You need to set this!\n",
"log_filename=tempfile.gettempdir() + \"/test_log.txt\"\n",
"\n",
"argstring = \"binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} log_filename {7} \".format(\n",
" m1,\n",
" m2,\n",
" separation,\n",
" orbital_period,\n",
" eccentricity,\n",
" metallicity,\n",
" max_evolution_time,\n",
" log_filename,\n",
")\n",
"\n",
"output = binary_c_python_api.run_binary(argstring)\n",
"\n",
"print(os.path.exists(log_filename))\n",
"\n",
"with open(log_filename, 'r') as f:\n",
" print(f.read())\n",
"\n",
"\n",
"# print(\"\\n\\nBinary_c output:\\n\\n\")\n",
"# print(output)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"### run binary with custom logging line"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"example_header_1 time=0 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 0 15 14 1 1 3540.3 0\n",
"INITIAL_GRID 15 14 4530 0.02 1 0\n",
"MY_STELLAR_DATA time=0 mass=15\n",
"example_header_1 time=0 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 0 15 14 1 1 3540.3 0\n",
"INITIAL_GRID 15 14 4530 0.02 1 0\n",
"MY_STELLAR_DATA time=0 mass=15\n",
"example_header_1 time=1e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 1e-07 15 14 1 1 3540.3 0\n",
"MY_STELLAR_DATA time=1e-07 mass=15\n",
"example_header_1 time=2e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 2e-07 15 14 1 1 3540.3 0\n",
"MY_STELLAR_DATA time=2e-07 mass=15\n",
"example_header_1 time=3e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 3e-07 15 14 1 1 3540.3 0\n",
"MY_STELLAR_DATA time=3e-07 mass=15\n",
"example_header_1 time=4e-07 mass_1=15 mass_2=14 st1=1 st2=1 sep=3540.3 ecc=0\n",
"example_header_2 4e-07 15 14 1 1 3540.3 0\n",
"MY_STELLAR_DATA time=4e-07 mass=15\n"
]
}
],
"source": [
"from binarycpython.utils import custom_logging_functions\n",
"# generate logging lines. Here you can choose whatever you want to have logged, and with what header\n",
"# this generates working print statements\n",
"logging_line = custom_logging_functions.autogen_C_logging_code(\n",
" {\"MY_STELLAR_DATA\": [\"model.time\", \"star[0].mass\"],}\n",
")\n",
"# OR\n",
"# You can also decide to `write` your own logging_line, which allows you to write a more complex logging statement with conditionals.\n",
"logging_line = 'Printf(\"MY_STELLAR_DATA time=%g mass=%g\\\\n\", stardata->model.time, stardata->star[0].mass)'\n",
"\n",
"# Generate entire shared lib code around logging lines\n",
"custom_logging_code = custom_logging_functions.binary_c_log_code(logging_line)\n",
"# print(custom_logging_code)\n",
"\n",
"# Make this code into a shared library and the function into memory\n",
"func_memaddr = custom_logging_functions.create_and_load_logging_function(custom_logging_code)\n",
"\n",
"# Run system with custom logging code\n",
"m1 = 15.0 # Msun\n",
"m2 = 14.0 # Msun\n",
"separation = 0 # 0 = ignored, use period\n",
"orbital_period = 4530.0 # days\n",
"eccentricity = 0.0\n",
"metallicity = 0.02\n",
"max_evolution_time = 15000 # You need to set this!\n",
"\n",
"argstring = \"binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} \".format(\n",
" m1,\n",
" m2,\n",
" separation,\n",
" orbital_period,\n",
" eccentricity,\n",
" metallicity,\n",
" max_evolution_time,\n",
")\n",
"\n",
"output = binary_c_python_api.run_binary_custom_logging(argstring, func_memaddr)\n",
"print('\\n'.join(output.split('\\n')[:20]))"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"## Using utils functions\n",
"In the utils.functions there are some functions that make it easier to interact with the core api functions. "
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"### run_system()\n",
"This function serves as an example on the function run_system and parse_output. \n",
"There is more functionality with this method and several tasks are done behind the scene.\n",
"\n",
"Requires pandas, numpy to run.\n",
"\n",
"run_system: mostly just makes passing arguments to the function easier. It also loads all the necessary defaults in the background\n",
"parse_output: Takes the raw output of binary_c and selects those lines that start with the given header. \n",
"Note, if you dont use the custom_logging functionality binary_c should be configured to have output that starts with that given header\n",
"\n",
"The parsing of the output only works correctly if either all of the values are described inline like `mass=<number>' or none of them are. "
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"example_header_1 time=0 mass_1=10 mass_2=20 st1=1 st2=1 sep=2.81762e+08 ecc=0\n",
"example_header_2 0 10 20 1 1 2.81762e+08 0\n",
"INITIAL_GRID 10 20 1e+11 0.02 1 0\n",
"example_header_1 time=0 mass_1=10 mass_2=20 st1=1 st2=1 sep=2.81762e+08 ecc=0\n",
"example_header_2 0 10 20 1 1 2.81762e+08 0\n",
"INITIAL_GRID 10 20 1e+11 0.02 1 0\n",
"example_header_1 time=1e-07 mass_1=10 mass_2=20 st1=1 st2=1 sep=2.81762e+08 ecc=0\n",
"example_header_2 1e-07 10 20 1 1 2.81762e+08 0\n",
"example_header_1 time=2e-07 mass_1=10 mass_2=20 st1=1 st2=1 sep=2.81762e+08 ecc=0\n",
"example_header_2 2e-07 10 20 1 1 2.81762e+08 0\n",
"\n",
"\n",
"\n",
" time mass_1 mass_2 st1 st2 sep ecc\n",
"0 0.000000e+00 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"1 0.000000e+00 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"2 1.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"3 2.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"4 3.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"... ... ... ... ... ... ... ...\n",
"3927 1.102750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3928 1.202750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3929 1.302750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3930 1.402750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3931 1.500000e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"\n",
"[3932 rows x 7 columns]\n",
" time mass_1 mass_2 st1 st2 sep ecc\n",
"0 0.000000e+00 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"1 0.000000e+00 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"2 1.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"3 2.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"4 3.000000e-07 10.00000 20.00000 1.0 1.0 2.817620e+08 0.0\n",
"... ... ... ... ... ... ... ...\n",
"3927 1.102750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3928 1.202750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3929 1.302750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3930 1.402750e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
"3931 1.500000e+04 1.33817 1.62124 13.0 13.0 -4.896110e+01 -1.0\n",
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
"\n",
"[3932 rows x 7 columns]\n"
]
}
],
"source": [
"from binarycpython.utils.functions import run_system, parse_output\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# Run system. all arguments can be given as optional arguments.\n",
"output = run_system(M_1=10, M_2=20, separation=0, orbital_period=100000000000)\n",
"\n",
"print('\\n'.join(output.split('\\n')[:10]))\n",
"\n",
"# Catch results that start with a given header. (Mind that binary_c has to be configured to print them if your not using a custom logging function)\n",
"result_example_header_1 = parse_output(output, selected_header=\"example_header_1\")\n",
"result_example_header_2 = parse_output(output, selected_header=\"example_header_2\")\n",
"\n",
"# print(result_example_header_1)\n",
"\n",
"#### Now do whatever you want with it:\n",
"# Or put them into a pandas array\n",
"\n",
"# Cast the data into a dataframe.\n",
"# This example automatically catches the column names because the binary_c output line is constructed as 'example_header_1 time=<number>..'\n",
"print('\\n\\n')\n",
"\n",
"df = pd.DataFrame.from_dict(result_example_header_1, dtype=np.float64)\n",
"print(df)\n",
"\n",
"# This example has column headers which are numbered, but we can override that with custom headers.\n",
"df2 = pd.DataFrame.from_dict(result_example_header_2, dtype=np.float64)\n",
"df2.columns=['time', 'mass_1', 'mass_2', 'st1', 'st2', 'sep', 'ecc']\n",
"print(df2)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"### run_system() and custom logging\n",
"Function that will use a automatically generated piece of logging code. Compile it, load it \n",
"into memory and run a binary system. See run_system on how several things are done in the background here.\n"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" time mass\n",
"0 0.000000e+00 1.000000\n",
"1 0.000000e+00 1.000000\n",
"2 1.000000e-07 1.000000\n",
"3 2.000000e-07 1.000000\n",
"4 3.000000e-07 1.000000\n",
"... ... ...\n",
"3630 1.131680e+04 0.627748\n",
"3631 1.231680e+04 0.627748\n",
"3632 1.331680e+04 0.627748\n",
"3633 1.431680e+04 0.627748\n",
"3634 1.500000e+04 0.627748\n",
"\n",
"[3635 rows x 2 columns]\n"
]
}
],
"source": [
"from binarycpython.utils.custom_logging_functions import (\n",
" autogen_C_logging_code,\n",
" binary_c_log_code,\n",
")\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# generate logging lines. Here you can choose whatever you want to have logged, and with what header\n",
"# this generates working print statements\n",
"logging_line = autogen_C_logging_code(\n",
" {\"MY_STELLAR_DATA\": [\"model.time\", \"star[0].mass\"],}\n",
")\n",
"# OR\n",
"# You can also decide to `write` your own logging_line, which allows you to write a more complex logging statement with conditionals.\n",
"logging_line = 'Printf(\"MY_STELLAR_DATA time=%g mass=%g\\\\n\", stardata->model.time, stardata->star[0].mass)'\n",
"\n",
"# Generate entire shared lib code around logging lines\n",
"custom_logging_code = binary_c_log_code(logging_line)\n",
"\n",
"# Run system. all arguments can be given as optional arguments. the custom_logging_code is one of them and will be processed automatically.\n",
"output = run_system(\n",
" M_1=1,\n",
" metallicity=0.002,\n",
" M_2=0.1,\n",
" separation=0,\n",
" orbital_period=100000000000,\n",
" custom_logging_code=custom_logging_code,\n",
")\n",
"\n",
"# Catch results that start with a given header. (Mind that binary_c has to be configured to print them if your not using a custom logging function)\n",
"# DOESNT WORK YET if you have the line autogenerated.\n",
"result_example_header = parse_output(output, \"MY_STELLAR_DATA\")\n",
"\n",
"# Cast the data into a dataframe.\n",
"df = pd.DataFrame.from_dict(result_example_header, dtype=np.float64)\n",
"\n",
"# Do whatever you like with the dataframe.\n",
"print(df)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": "false"
},
"source": [
"## Other example\n",
"Checking how much mass stars lose on the main sequence."
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
},
"outputs": [],
"source": [
"def run_and_calc_mass(**kwargs):\n",
" \"\"\"\n",
" Function to run a given system and look at the mass lost in the main sequence of the star\n",
" \"\"\"\n",
" # start = time.time()\n",
" output = run_system(**kwargs)\n",
" result = parse_output(output, 'example_header_1')\n",
" # stop = time.time()\n",
" # print(\"Took {:.2f}s to run single system\".format(stop-start))\n",
" # print(\"The following keys are present in the results:\\n{}\".format(result.keys()))\n",
" # print(len(result))\n",
"\n",
" #### Now do whatever you want with it: \n",
"\n",
" # Cast the data into a dataframe. \n",
" df = pd.DataFrame.from_dict(result, dtype=np.float64)\n",
"\n",
" # Get last change moment\n",
" last_st = df['st1'].unique()[-1]\n",
" last_stellar_type_change_time_1 = df[df.st1==last_st]['time'].iloc[0]\n",
"\n",
" # slice to get that last time\n",
" sliced_df = df[df.time < last_stellar_type_change_time_1] # Cut off late parts of evolution\n",
"\n",
" main_sequence = sliced_df[sliced_df.st1==1]\n",
" \n",
" initial_mass = main_sequence.iloc[0].mass_1\n",
" final_mass = main_sequence.iloc[-1].mass_1\n",
" \n",
" initial_time = main_sequence.iloc[0].time\n",
" final_time = main_sequence.iloc[-1].time\n",
" \n",
" mass_lost = initial_mass - final_mass\n",
" fraction = mass_lost/initial_mass\n",
"\n",
" # Return the mass fraction (wrt initial mass)\n",
" return fraction\n"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
]
}
],
"source": [
"import time\n",
"\n",
"metallicity_002 = 0.02\n",
"metallicity_001 = 0.01\n",
"metallicity_0002 = 0.002\n",
"\n",
"mass_range = np.arange(1, 25, .5)\n",
"\n",
"start = time.time()\n",
"fractions_z002 = [run_and_calc_mass(M_1=mass, \n",
" M_2=10, \n",
" separation=0, \n",
" orbital_period=100000000000, \n",
" metallicity=metallicity_002, \n",
" effective_metallicity=metallicity_002) \n",
" for mass in mass_range]\n",
"\n",
"fractions_z001 = [run_and_calc_mass(M_1=mass, \n",
" M_2=10, \n",
" separation=0, \n",
" orbital_period=100000000000, \n",
" metallicity=metallicity_001, \n",
" effective_metallicity=metallicity_001) \n",
" for mass in mass_range]\n",
"\n",
"fractions_z0002 = [run_and_calc_mass(M_1=mass, \n",
" M_2=10, \n",
" separation=0, \n",
" orbital_period=100000000000, \n",
" metallicity=metallicity_0002, \n",
" effective_metallicity=metallicity_0002) \n",
" for mass in mass_range]\n",
"stop = time.time()\n",
"print(\"Took {}s\".format(stop-start))"
]
},
{
"cell_type": "code",
"heading_collapsed": "false"
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(12,8))\n",
"\n",
"ax.plot(mass_range, fractions_z002, '--', label='Z=0.02')\n",
"ax.plot(mass_range, fractions_z001, '-.', label='Z=0.01')\n",
"ax.plot(mass_range, fractions_z0002, '-', label='Z=0.002')\n",
"\n",
"ax.set_xlabel(r'Initial Mass ($M_{\\odot}$)', fontsize=18)\n",
"ax.set_ylabel(r'Fraction of total initial mass lost on main sequence', fontsize=18)\n",
"ax.set_title('Fraction of total initial mass lost during main sequence for different metallicities', fontsize=18)\n",
"ax.legend()\n",
"ax.set_yscale('log')\n",
"#save_loop(name='plots/mass_loss_MS.{format}', formats=['pdf', 'png', 'eps'], bbox_inches='tight')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"heading_collapsed": "false"
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}