Commit 78875071c21d0ce0d590da40cfed8795eda4cfb4
1 parent
c2b9aa35
changes since UIUC move
Showing
26 changed files
with
117 additions
and
113 deletions
Show diff stats
@@ -42,6 +42,7 @@ class GuiWindow(QtGui.QMainWindow): | @@ -42,6 +42,7 @@ class GuiWindow(QtGui.QMainWindow): | ||
42 | self.ui.spinRadius.setValue(self.params.a) | 42 | self.ui.spinRadius.setValue(self.params.a) |
43 | 43 | ||
44 | def getParams(self): | 44 | def getParams(self): |
45 | + #get the parameters from the GUI and store them in the params structure | ||
45 | self.params.minLambda = self.ui.spinStartLambda.value() | 46 | self.params.minLambda = self.ui.spinStartLambda.value() |
46 | self.params.maxLambda = self.ui.spinEndLambda.value() | 47 | self.params.maxLambda = self.ui.spinEndLambda.value() |
47 | self.params.snapshotLambda = self.ui.spinNearFieldLambda.value() | 48 | self.params.snapshotLambda = self.ui.spinNearFieldLambda.value() |
@@ -276,15 +277,11 @@ def RunSimulation(spectralSim = True): | @@ -276,15 +277,11 @@ def RunSimulation(spectralSim = True): | ||
276 | parameters['real_ref_index_scale_factor'] = n.real | 277 | parameters['real_ref_index_scale_factor'] = n.real |
277 | parameters['imag_ref_index_scale_factor'] = n.imag | 278 | parameters['imag_ref_index_scale_factor'] = n.imag |
278 | parameters['length_scale_factor'] = (2.0 * 3.14159)/l | 279 | parameters['length_scale_factor'] = (2.0 * 3.14159)/l |
280 | + #parameters['length_scale_factor'] = 1.0/l | ||
279 | parameters['scattering_plane_angle_deg'] = gamma; | 281 | parameters['scattering_plane_angle_deg'] = gamma; |
280 | parameters['near_field_output_data'] = 0 | 282 | parameters['near_field_output_data'] = 0 |
281 | #parameters['number_spheres'] = 1 | 283 | #parameters['number_spheres'] = 1 |
282 | 284 | ||
283 | - #a = parameters.a; | ||
284 | - #d = parameters.d; | ||
285 | - #parameters.clearSpheres() | ||
286 | - #parameters.addSphere(a, -(d + 2*a)/2, 0, 0) | ||
287 | - #parameters.addSphere(a, (d + 2*a)/2, 0, 0) | ||
288 | 285 | ||
289 | #save the scripted input file | 286 | #save the scripted input file |
290 | parameters.saveFile(l, 'scriptParams.inp') | 287 | parameters.saveFile(l, 'scriptParams.inp') |
@@ -303,8 +300,8 @@ def RunSimulation(spectralSim = True): | @@ -303,8 +300,8 @@ def RunSimulation(spectralSim = True): | ||
303 | if parameters['calculate_near_field']: | 300 | if parameters['calculate_near_field']: |
304 | results.parseNearField('nf-temp.dat') | 301 | results.parseNearField('nf-temp.dat') |
305 | 302 | ||
306 | - #get the scattering amplitude matrix | ||
307 | - results.calcScatteringAmp() | 303 | + #get the scattering amplitude matrix |
304 | + results.calcScatteringAmp() | ||
308 | 305 | ||
309 | 306 | ||
310 | #update the progress bar | 307 | #update the progress bar |
No preview for this file type
No preview for this file type
@@ -3,49 +3,49 @@ from pylab import * | @@ -3,49 +3,49 @@ from pylab import * | ||
3 | 3 | ||
4 | class SimParserClass: | 4 | class SimParserClass: |
5 | 5 | ||
6 | - simResults = dict() | ||
7 | - | ||
8 | - sxNearField = 0 | ||
9 | - syNearField = 0 | ||
10 | - intersectedNearField = 0 | ||
11 | - | ||
12 | - #near field data | ||
13 | - gridNearField = [] | ||
14 | - maxNearField = [] | ||
15 | - | ||
16 | - #the stokes matrix is read from the output | ||
17 | - stokesMatrix = [] | ||
18 | - scatAmpMatrix = [] | ||
19 | - | 6 | + simResults = dict() |
7 | + | ||
8 | + sxNearField = 0 | ||
9 | + syNearField = 0 | ||
10 | + intersectedNearField = 0 | ||
11 | + | ||
12 | + #near field data | ||
13 | + gridNearField = [] | ||
14 | + maxNearField = [] | ||
15 | + | ||
16 | + #the stokes matrix is read from the output | ||
17 | + stokesMatrix = [] | ||
18 | + scatAmpMatrix = [] | ||
19 | + | ||
20 | 20 | ||
21 | - def __init__(self, parameters): | ||
22 | - | ||
23 | - self.params = parameters; | ||
24 | - | ||
25 | - self.simResults['lambda'] = list() | 21 | + def __init__(self, parameters): |
22 | + | ||
23 | + self.params = parameters; | ||
24 | + | ||
25 | + self.simResults['lambda'] = list() | ||
26 | 26 | ||
27 | - self.simResults['extinction_unpolarized'] = list() | ||
28 | - self.simResults['extinction_parallel'] = list() | ||
29 | - self.simResults['extinction_perpendicular'] = list() | ||
30 | - self.simResults['extinction_total'] = list() | ||
31 | - self.simResults['detector_field'] = list() | ||
32 | - | ||
33 | - self.gridNearField = [] | ||
34 | - self.maxNearField = [] | ||
35 | - | ||
36 | - | ||
37 | - def parseSimFile(self, l, fileName): | ||
38 | - self.simResults['lambda'].append(l) | ||
39 | - inFile = open(fileName, 'r') | 27 | + self.simResults['extinction_unpolarized'] = list() |
28 | + self.simResults['extinction_parallel'] = list() | ||
29 | + self.simResults['extinction_perpendicular'] = list() | ||
30 | + self.simResults['extinction_total'] = list() | ||
31 | + self.simResults['detector_field'] = list() | ||
32 | + | ||
33 | + self.gridNearField = [] | ||
34 | + self.maxNearField = [] | ||
35 | + | ||
36 | + | ||
37 | + def parseSimFile(self, l, fileName): | ||
38 | + self.simResults['lambda'].append(l) | ||
39 | + inFile = open(fileName, 'r') | ||
40 | 40 | ||
41 | - | ||
42 | - while True: | ||
43 | - | ||
44 | - line = inFile.readline().strip() | 41 | + |
42 | + while True: | ||
43 | + | ||
44 | + line = inFile.readline().strip() | ||
45 | 45 | ||
46 | #if the simulation is for a single plane wave | 46 | #if the simulation is for a single plane wave |
47 | - if int(self.params['fixed_or_random_orientation']) == 0: | ||
48 | - if line == 'scattering matrix elements': | 47 | + if int(self.params['fixed_or_random_orientation']) == 0: |
48 | + if line == 'scattering matrix elements': | ||
49 | #empty the stokes matrix | 49 | #empty the stokes matrix |
50 | self.stokesMatrix = [] | 50 | self.stokesMatrix = [] |
51 | inFile.readline() | 51 | inFile.readline() |
@@ -53,53 +53,54 @@ class SimParserClass: | @@ -53,53 +53,54 @@ class SimParserClass: | ||
53 | values = map(float, inFile.readline().strip().split()) | 53 | values = map(float, inFile.readline().strip().split()) |
54 | self.stokesMatrix.append(values) | 54 | self.stokesMatrix.append(values) |
55 | break; | 55 | break; |
56 | - elif line == 'unpolarized total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm': | ||
57 | - values = inFile.readline().strip().split(' ') | ||
58 | - self.simResults['extinction_unpolarized'].append(values[0]) | ||
59 | - elif line == 'parallel total ext, abs, scat efficiencies': | ||
60 | - values = inFile.readline().strip().split(' ') | ||
61 | - self.simResults['extinction_parallel'].append(values[0]) | ||
62 | - elif line == 'perpendicular total ext, abs, scat efficiencies': | ||
63 | - values = inFile.readline().strip().split(' ') | ||
64 | - self.simResults['extinction_perpendicular'].append(values[0]) | ||
65 | - | ||
66 | - #if the simulation is for random orientations | ||
67 | - else: | ||
68 | - if line == 'scattering matrix elements': | ||
69 | - break | ||
70 | - elif line == 'total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm': | ||
71 | - values = inFile.readline().strip().split(' ') | ||
72 | - self.simResults['extinction_total'].append(values[0]) | ||
73 | - | ||
74 | - def parseNearField(self, fileName): | ||
75 | - | ||
76 | - inFile = open(fileName, 'r') | ||
77 | - | ||
78 | - #get the size of the near field grid | ||
79 | - line = inFile.readline().strip() | ||
80 | - self.sxNearField, self.syNearField = map(int, line.split()) | ||
81 | - | ||
82 | - #get the number of spheres that are intersected | ||
83 | - line = inFile.readline().strip() | ||
84 | - self.intersectedNearField = int(line) | ||
85 | - | ||
86 | - #process intersections here----------- | ||
87 | - | 56 | + elif line == 'unpolarized total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm': |
57 | + values = inFile.readline().strip().split(' ') | ||
58 | + self.simResults['extinction_unpolarized'].append(values[0]) | ||
59 | + elif line == 'parallel total ext, abs, scat efficiencies': | ||
60 | + values = inFile.readline().strip().split(' ') | ||
61 | + self.simResults['extinction_parallel'].append(values[0]) | ||
62 | + elif line == 'perpendicular total ext, abs, scat efficiencies': | ||
63 | + values = inFile.readline().strip().split(' ') | ||
64 | + self.simResults['extinction_perpendicular'].append(values[0]) | ||
65 | + | ||
66 | + #if the simulation is for random orientations | ||
67 | + else: | ||
68 | + if line == 'scattering matrix elements': | ||
69 | + break | ||
70 | + elif line == 'total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm': | ||
71 | + values = inFile.readline().strip().split(' ') | ||
72 | + self.simResults['extinction_total'].append(values[0]) | ||
73 | + | ||
74 | + def parseNearField(self, fileName): | ||
75 | + | ||
76 | + inFile = open(fileName, 'r') | ||
77 | + | ||
78 | + #get the size of the near field grid | ||
79 | + line = inFile.readline().strip() | ||
80 | + self.sxNearField, self.syNearField = map(int, line.split()) | ||
81 | + | ||
82 | + #get the number of spheres that are intersected | ||
83 | + line = inFile.readline().strip() | ||
84 | + self.intersectedNearField = int(line) | ||
85 | + | ||
86 | + #process intersections here----------- | ||
87 | + | ||
88 | 88 | ||
89 | - #get the field values | ||
90 | - self.gridNearField = [] | ||
91 | - for y in range(self.syNearField): | ||
92 | - self.gridNearField.append([]) | ||
93 | - for x in range(self.sxNearField): | ||
94 | - line = inFile.readline().strip() | ||
95 | - values = map(float, line.split()) | ||
96 | - self.gridNearField[y].append(values[2]) | ||
97 | - | ||
98 | - E = array(self.gridNearField) | ||
99 | - self.maxNearField.append(abs(E).max()) | ||
100 | - | ||
101 | - #calculate and return the scattering amplitude matrix | ||
102 | - def calcScatteringAmp(self): | 89 | + #get the field values |
90 | + self.gridNearField = [] | ||
91 | + for y in range(self.syNearField): | ||
92 | + self.gridNearField.append([]) | ||
93 | + for x in range(self.sxNearField): | ||
94 | + line = inFile.readline().strip() | ||
95 | + values = map(float, line.split()) | ||
96 | + self.gridNearField[y].append(values[2]) | ||
97 | + | ||
98 | + E = array(self.gridNearField) | ||
99 | + #the enhancement is E^4 (so (E^2)^2) | ||
100 | + self.maxNearField.append(pow(abs(E).max(), 2)) | ||
101 | + | ||
102 | + #calculate and return the scattering amplitude matrix | ||
103 | + def calcScatteringAmp(self): | ||
103 | #compute the number of entries in the stokes matrix | 104 | #compute the number of entries in the stokes matrix |
104 | nEntries = len(self.stokesMatrix) | 105 | nEntries = len(self.stokesMatrix) |
105 | 106 | ||
@@ -122,29 +123,35 @@ class SimParserClass: | @@ -122,29 +123,35 @@ class SimParserClass: | ||
122 | E = [S[0], S[2]] | 123 | E = [S[0], S[2]] |
123 | self.simResults['detector_field'].append(E) | 124 | self.simResults['detector_field'].append(E) |
124 | print(E) | 125 | print(E) |
125 | - | 126 | + |
126 | 127 | ||
127 | - def saveFile(self, fileName): | ||
128 | - outFile = open(fileName, 'w') | ||
129 | - outFile.write(str(self)) | ||
130 | - outFile.close() | 128 | + def saveFile(self, fileName): |
129 | + outFile = open(fileName, 'w') | ||
130 | + outFile.write(str(self)) | ||
131 | + outFile.close() | ||
131 | 132 | ||
132 | - def __getitem__(self, key): | ||
133 | - return self.simResults[key]; | 133 | + def __getitem__(self, key): |
134 | + return self.simResults[key]; | ||
134 | 135 | ||
135 | - def __str__(self): | ||
136 | - result = ''; | 136 | + def __str__(self): |
137 | + result = ''; | ||
137 | 138 | ||
138 | - for i in range(len(self.simResults['lambda'])): | ||
139 | - result += str(self.simResults['lambda'][i]) | ||
140 | - result += '\t' + str(self.simResults['extinction_unpolarized'][i]) | ||
141 | - result += '\t' + str(self.simResults['extinction_parallel'][i]) | ||
142 | - result += '\t' + str(self.simResults['extinction_perpendicular'][i]) | ||
143 | - result += '\t' + str(self.simResults['detector_field'][i][0]) + '\t' + str(self.simResults['detector_field'][i][1]) | ||
144 | - | ||
145 | - #parse the near field if it is included in the simulation | ||
146 | - #if int(parameters['calculate_near_field']) == 1: | ||
147 | - # result += '\t' + str(maxNearField) | ||
148 | - | ||
149 | - result += '\n' | ||
150 | - return result | 139 | + for i in range(len(self.simResults['lambda'])): |
140 | + result += str(self.simResults['lambda'][i]) | ||
141 | + if int(self.params['fixed_or_random_orientation']) == 0: | ||
142 | + result += '\t' + str(self.simResults['extinction_unpolarized'][i]) | ||
143 | + result += '\t' + str(self.simResults['extinction_parallel'][i]) | ||
144 | + result += '\t' + str(self.simResults['extinction_perpendicular'][i]) | ||
145 | + else: | ||
146 | + result += '\t' + str(self.simResults['extinction_total'][i]) | ||
147 | + | ||
148 | + #result += '\t' + str(self.simResults['detector_field'][i][0]) + '\t' + str(self.simResults['detector_field'][i][1]) | ||
149 | + | ||
150 | + | ||
151 | + | ||
152 | + #parse the near field if it is included in the simulation | ||
153 | + #if int(parameters['calculate_near_field']) == 1: | ||
154 | + # result += '\t' + str(maxNearField) | ||
155 | + | ||
156 | + result += '\n' | ||
157 | + return result |