This repository has been archived by the owner on Jan 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.txt
201 lines (168 loc) · 10.1 KB
/
changelog.txt
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
132
133
134
135
136
137
138
139
140
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
0.4.0, 21.10.20:
- General:
- Updated planning structures (project boards, milestones) to better reflect current perspective
- renamed overview track preset to default, assuming potential tweaking by relevant routines; default max Runge-Kutta step set to 0.1 ps
- Added trace strings to modules' messages
- renamed units.py to aux.py, added replacement ceil() and floor() functions that allow "decimal spacing", adapted to the needs here
- Ditched ASTRA's field smoothing in favor of a "rough" solution - just cut off "background" field at definition region's range.
- ASTRA interface:
- set default ASTRA verbosity to false
- removed the concept of beam presets
- .clean() no longer resets the beam
- renamed field storage file from solenoid.dat to field.dat
- Track presets:
- Generator presets - left only uniform (ex line) and gauss (now flattened, max. 2D). Ring, b/c ne meshayet.
- Run configuration - disabled ASTRA's field smoothing
- Track module:
- on the frontend:
- finalized the felddurchgang plot
- adapted the plots to new module structure
- added fixed axes to focal fit check plot, swapped draw order around to have data in foreground
- overhauled previous code towards modularity using run data storage & labeling
- **to consider:** how to handle external parameters? Number and energy of particles, e.g.?
- Works for now, will figure out later, when it will be time to integrate everything.
- A shared settings object??
- implemented focal trajectory fitting to off-axis "focusing" - seems rarely applicable now, however
- improved focal region detection
- disabled min/max + std calculation in headers, takes extra time & is unneeded.
- implemented Cs calculation via power series \Delta f expansion, to flexible orders;
- three weighing options:
- against r0
- against r_offset (relevant only for off-axis focusing)
- against r0^2 (default)
- the f produced is above max observed f, so that "reality" criterion is fulfilled.
- moved particle trajectory models to a separate class.
- added normalization hook to field selection
- Core module:
- did a little decluttering/decomplexifying in the code, added more verbosity
- disabled extrapolation in field sampling, default fill value for Bz outside of sampled range is now 0 - leads to higher accuracy
- dropped the "fit to model" wrapper for being useless
- added a method to calculate normalization/scaling factor for bringing a field to a set f at a set E
- Wrapper:
- added result storage and (auto)labeling tricks to track wrapper, inted to use it further;
concept - one field, one "DB" entry
- Documentation:
- totally missing from anything pre-track lol.
0.4.0a1, 06.10.20:
- Tracking presets:
- renamed stuff around to better reflect on their purpose; generator presets are now mostly for beam shapes,
with the intention that they will be modified for specific uses;
also made beam presets somewhat more descriptive, I guess.
- dropped the cross, box, square shapes
- turned off trajectory mapping, redundant / unhelpful
- reclassified gen/beam "default" presets as "gauss", since they haven't been even close to "default" so far
- reclassified default track preset to "overview", disabled field smoothing
- Decided that using 1-D lines is better than 2-D carpets, in terms of header info accuracy
- frontend:
- updated ASTRA interface's helptext, default presets
- ASTRA handle cleans workspace upon initiation
- ASTRA interface:
- added file option to read/write field, defaulting to solenoid.dat
- wrapper:
- added rudimentary feedback ("logging") via track/core.msg("msg") + verbosity settings
- added DF and auto-numbering label -based expandable result storage to track.
Plan to use it to incrementally add data via subroutines.
- track module:
- added access to astra's read/write field methods (w/ "logging")
- implemented an overview routine which, for a given energy / generator preset, runs astra,
loads and pre-processes state data, estimates focus location, gives maximum larmor angle,
and neatly saves everything with a label of choice (or counter).
- a focal run - sweeps the focal region obtained in overview, fits particle trajectories to model and obtains the focal point of each
- on the frontend:
- plot routine to check fitting success & see a zoom-in of the focal region
- plot routine to visualize felddurchgang
- core module:
- renamed .Model.impuls() to .Model.impuls_SI() to clarify output units
- added a method for fetching the z vector used elsewhere in core
- .fit_to_model() can now also take a sigma parameter to be passed to curve_fit()
- general:
- Astra interface's helptext no longer greets the user upon running the main file
0.3.4, 04.10.20:
- ASTRA plugin:
- rewrote .read_states() to accomodate for any zphase (simple trick) and zstart/zstop
- added warning to helptext about .clean() possibly overwriting unsaved runfiles
- Tracking presets:
- default now takes beam states every 0.01 m, assuming field 2 m wide @ z = 1m (particles immediately fly into the field);
track 1 m afterwards, i.e. focal length of up to 2 m
- re-added tracking flag to default
- added "mono" beam preset - a smaller (100) line with spread in z-direction (i.e. flying carpet);
the additional spread provides for somewhat better spatial resolution in z; probe flag set to true
- track module:
- rewrote .process_states() to be slightly faster
- switched from own contraption to np.arctan2() for phase calculation; changed the whole phase business around a bit in general
- .process_states() now adds dphi information (relative to starting beam state ("turn") and to the previous state ("dphi")) to each state
- .process_states() now adds z, pz and t from reference particles to the rest, eliminating the need for a separate "refs" object
- added make_heads() that gets some general statistics for individual states
- core module:
- Can now feed field samples and describe them (approximately) with interpolation; runs seamlessly.
- Renamed calc.py into core.py, for less confusion
- added a thin wrapper for scipy.curve_fit
- General:
- Added some code to wrapper to streamline binding various modules to each other; since nothing will invoke the backend going around the interfaces (wrapper, at least),
it is safe to not declare these connections explicitly and use "undefined" objects in backend code.
- import pandas by default, it's as useful as plt or np
0.3.3, 15.09.20:
- General:
- separated demos and BA-relevant routines; I want to make a clear distinction between solensim and my thesis work.
- ASTRA plugin:
- renamed .get_field() to .read_field()
- introduced .field field - .read_field() now also stores the field aside from returning z, Bz,
and write_field analogously writes it to astra.field
- expanded helptext to describe the handle's data fields
- fixed read_zemit and trajectories not working (kek blunder)
- temporarily disabled read_zemit, because no clue what the numbers mean, yet
- .read_screens rewritten as .read_states - not dependent on runfile, flexible (regex & dataframes), and with initial beam state as well
- added .read_last to only grab the first and last beam states only
- .workspace() now sorts its output
- won't say final (again), but looks like it (kek)
- Tracking presets:
- ring preset: change default radius from 3mm to 1 mm; - 3 MeV Ekin, 10% sigma, uniform E distribution
- added line preset: uniform line from -10 to 10 mm (sigmas); monochromatic
- default beam + gen: gaussian bundle, 1x1x3mm (x,y,z); 3 MeV Ekin 1 % sigma; nemit_x,y 1
- default runfile: disabled ref output; track from 0 to 4 m, state image every 10 cm
- Track module:
- can do state trafo to polar
- correct phi and delta phi calculations
- Demos:
- Rotation from radius demo (via line, no correlation)
- Rotation from energy demo (via ring)
- Field scaling sweep demo - need to use ASTRA's loop controls.
0.3.2, 12.09.20:
- ASTRA plugin:
- wrote a helptext documenting the ASTRA plugin
- changing track preset no longer tries to load the corresponding beam
- changed interface formatting a bit
- added ability to write beam.ini from beam dataframe
- added verbosity control to frontend
- .clean() now does not mop the field file and reloads the presets
- caught a mistake that made saved presets unusable
- have .generate() load the generated beam
- is pretty much done for now, aside from, eventually, loading other output files
- Tracking presets:
- added cross (5mm), square box (5mm), non-monochromatic (10% sigma) 3 mm 3 MeV ring
- turned off field scaling in default runfile
- General:
- main script is "production-ready", for what it can do now;
- changelog should be more structured
- changed sscode package to solensim; having a solensim folder inside a solensim folder is not too bad, but looks better in the code.
- expanded the readme.txt
0.3.1, 11.09.20:
- implemented preset management in ASTRA plugin
- finished default ASTRA plugin setups
0.3.0, 10.09.20:
- start a changelog
- add concept flowchart to docs
- fix get_astra to add executable flag to the downloaded binaries
- restructuring again, this time final - placeholder classes everywhere
- closed #29 (wontfix, getting over my head with all the pointless "cool developer" shenanigans)
- remove old code (I still have it, just to declutter)
- added a placeholder .ini file for the future
- Worked up an ASTRA plugin/interface, see associated v0.3 issues
- Reogranized the docs a bit
- Realized the grave need for documentation.
0.2.1, 25.08.20:
- restructure code for future feature expansion
- lay "structure" for MATLAB, Astra plugins
- update build script to accomodate new changes
- remove circular dependency of wrapper/frontend (FE calls method of W which calls methods added in FE)
0.2.0, Foundation: start of change logging