-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinputs.py
131 lines (118 loc) · 4.13 KB
/
inputs.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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import numpy as np
import matplotlib.pyplot as plt
def speciesTag(species):
# returns species name for species index
dictionary = {
0: "Time",
1: "electrons",
2: "U",
3: "UO",
4: "UO2",
5: "UO3",
6: "U2O2",
7: "U2O3",
8: "U^+",
9: "UO^+",
10: "UO2^+",
11: "UO2^-",
12: "UO3^-",
13: "O",
14: "O(1D)",
15: "O(1S)",
16: "O2(V1)",
17: "O2(V2)",
18: "O2(V3)",
19: "O2(V4)",
20: "O2(A1)",
21: "O2(B1)",
22: "O2(4.5EV)",
23: "O3",
24: "O^+",
25: "O2^+",
26: "O4^+",
27: "O^-",
28: "O2^-",
29: "O3^-",
30: "O4^-",
31: "O2"
}
return dictionary.get(species)
class inputs:
def __init__(self):
# variable initialization
self.data = 0
self.bulkdata = 0
self.time = 0
self.power = 0
self.rawrates = 0
self.qtmatrix = 0
self.rates = 0
self.bulkrates = 0
self.data_rand = 0
self.rates_rand = 0
def read_dens_file(self, dirname):
# reads a qt_densities file and retrieves the raw data
filename = dirname+"/qt_densities.txt"
print("reading: "+filename)
values = np.genfromtxt(filename, delimiter='')
#header = values[0]
self.time = values[1::,0]
self.data = values[1::,1::]
#conditions = self.read_conditions_file(dirname)
# append if necessary
if type(self.bulkdata) == type(self.data):
self.bulkdata = np.append(self.bulkdata, self.data[1600:,:], 0)
if type(self.bulkdata) != type(self.data):
self.bulkdata = self.data[1600:,:]
def read_rates_file(self,dirname):
# reads a qt_rates file and retrieves the raw data
filename = dirname+"/qt_rates.txt"
print("reading: "+filename)
values = np.genfromtxt(filename, delimiter='')
#header = values[0]
self.time = values[1::,0]
self.rawrates = values[1::,1::]
# process rates
self.read_qtmat_file(dirname)
self.find_source_terms()
# append if necessary
if type(self.bulkrates) == type(self.rates):
#print(type(self.bulkrates), type(self.rates))
self.bulkrates = np.append(self.bulkrates, self.rates[1600:,:], 0)
if type(self.bulkrates) != type(self.rates):
self.bulkrates = self.rates[1600:,:]
def read_qtmat_file(self,dirname):
# reads a qt_matrix file, which is a species <-> reactions
# rate convertor
filename = dirname+"/qt_matrix.txt"
print("reading: "+filename)
values = np.genfromtxt(filename, delimiter='')
self.qtmatrix = values
def read_conditions_file(self,dirname):
filename = dirname+"/qt_conditions.txt"
print("reading: ",filename)
values = np.genfromtxt(filename, delimiter='')
self.time = values[1::,0]
self.power = values[1::,1]
#plt.figure(1)
#plt.plot(self.power)
#plt.show()
def find_source_terms(self):
#assemble the per-species rates matrix
self.rates = np.zeros(self.data.shape)
for i in range(self.rates.shape[0]):
for j in range(self.rates.shape[1]):
for k in range(self.rawrates.shape[1]):
self.rates[i,j]+=self.rawrates[i,k]*self.qtmatrix[j,k]
def permute_data_in_time(self):
### randomly choose observations from time, voltage, and pressure spaces
#np.random.seed(43)
shuffler = np.random.permutation(self.bulkrates.shape[0])
self.data_rand = self.bulkdata[shuffler]
self.rates_rand = self.bulkrates[shuffler]
def salt_arrays_for_log(self):
# this adds a very small value to densities to allow for easy usage of np.log()
for i in range(self.bulkdata.shape[0]):
for j in range(self.bulkdata.shape[1]):
if self.bulkdata[i,j] <= 0.:
self.bulkdata[i,j] = 1e-10