-
Notifications
You must be signed in to change notification settings - Fork 0
/
materials_prepare.py
75 lines (56 loc) · 2.04 KB
/
materials_prepare.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os
import json
# Название файла свойств
mat_name = 'X70'
path = os.path.join(os.path.dirname(os.path.realpath(__file__)), f'materials\\{mat_name}')
# Файлы со свойствами из JmatPro
# Формат файлов .dat (первые 2 строчки с названиями обязательны)
# Specific heat (J/(g K))
# 'T (C)' 'CP'
# 1200.0 0.66166
# ...
# !!! .dat файлы должны находится в директории \materials относительно исполняемого скрипта !!!
link_1_cond = f'{path}_cond.dat'
link_2_cp = f'{path}_sh.dat'
link_3_dens = f'{path}_dens.dat'
data1_cond, data2_cp, data3_dens = [], [], []
def prepare_data(link, data):
with open(link, 'r') as file:
file.readline()
file.readline()
for row in file:
current_data = row.splitlines()[0].split('\t')
if current_data[0] != '':
[*float_data] = map(float, current_data)
data.append(float_data)
def write_data(path):
with open(f'{path}.py', 'a') as file_w:
file_w.write(f'density = ')
json.dump(data3_dens, file_w)
file_w.write('\n')
file_w.write(f'conductivity = ')
json.dump(data1_cond, file_w)
file_w.write('\n')
file_w.write(f'specific_heat = ')
json.dump(data2_cp, file_w)
file_w.write('\n')
prepare_data(link_1_cond, data1_cond)
prepare_data(link_2_cp, data2_cp)
prepare_data(link_3_dens, data3_dens)
for row in range(len(data3_dens)):
data3_dens[row][1] = data3_dens[row][1] * 1000
for row in range(len(data2_cp)):
data2_cp[row][1] = data2_cp[row][1] * 1000
if os.path.exists(f'{path}.py'):
print(f'Вы перезаписали файл {path}')
os.remove(f'{path}.py')
write_data(path)
os.remove(link_1_cond)
os.remove(link_2_cp)
os.remove(link_3_dens)
else:
print(f'Создан новый файл {path}')
write_data(path)
os.remove(link_1_cond)
os.remove(link_2_cp)
os.remove(link_3_dens)