-
Notifications
You must be signed in to change notification settings - Fork 2
/
simanneal.physeng
202 lines (199 loc) · 8.5 KB
/
simanneal.physeng
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
202
<?xml version="1.0" encoding="UTF-8"?>
<!--
Available path/command replacements:
@INTERP@ : Interpreter command/path (cannot be used in the interpreter field).
@PYTHON@ : Use a Python interpreter command/path provided by SiQAD (either from the default settings or the user's overriden choice).
@BINPATH@ : Path to the binary or script path to the engine (cannot be used in the bin_path field).
@PHYSENGPATH@ : Path to the directory containing this *.physeng file.
@PROBLEMPATH@ : Path to the problem file describing the simulation problem and parameters.
@RESULTPATH@ : Path to the result file that will be read by SiQAD after the simulation is complete.
@JOBTMP@ : Temporary path for this simulation job to store generated files.
These replacements are done on the following fields:
interpreter, bin_path, command
-->
<physeng>
<name>SimAnneal</name>
<version>0.2.1</version>
<description></description>
<!-- Plugin info -->
<plugin_info>
<plugin_logo>ubc_logo.png</plugin_logo>
<authors>
<name>Samuel Ng</name>
<name>Jacob Retallick</name>
<name>Robert Lupoiu</name>
<name>Konrad Walus</name>
</authors>
<institutions>
<institution>
<content>
<line>Walus Lab</line>
<line>Department of Electrical and Computer Engineering</line>
<line>University of British Columbia</line>
</content>
<website href="https://waluslab.ece.ubc.ca">Walus Lab Website</website>
</institution>
</institutions>
<links>
<website href="https://github.com/siqad/simanneal-sidb">GitHub</website>
<website href="https://ieeexplore.ieee.org/document/8963859">TNANO Paper</website>
</links>
</plugin_info>
<!-- Services this plugin provides, used by SimManager and DesignAssistant classes to identify the type of simulation or assistance this plugin can provide. Comma separated, spaces are neither ignored nor truncated. -->
<services>ElectronGroundState</services>
<!-- Path to the engine script or compiled binary. -->
<!--<bin_path>@PHYSENGPATH@/simanneal</bin_path> TODO switch to this form later-->
<bin_path>simanneal</bin_path> <!-- path to binary or script, relative to the folder containing engine_description.xml -->
<!-- Selection of invocation commands to call this engine. The first one is the one that is shown in SiQAD by default. TODO tie this to presets in some ways. -->
<commands>
<!-- Default command. -->
<command label="Default">
<program>@BINPATH@</program>
<arg>@PROBLEMPATH@</arg>
<arg>@RESULTPATH@</arg>
</command>
<!-- Import potentials from PoisSolver. -->
<command label="Import Potentials">
<program>@BINPATH@</program>
<arg>@PROBLEMPATH@</arg>
<arg>@RESULTPATH@</arg>
<arg>--ext-pots</arg>
<arg>@JOBTMP@/db_pots.json</arg>
</command>
</commands>
<!-- Python dependencies file path, relative to the directory containing this physeng file. -->
<dep_path></dep_path>
<!-- Simulation parameters, read into SiQAD as a property map. -->
<sim_params preserve_order="true">
<anneal_cycles>
<T>int</T>
<val>10000</val>
<label>Anneal cycles</label>
<tip>The number of simulated annealing cycles.</tip>
</anneal_cycles>
<num_instances>
<T>int</T>
<val>-1</val>
<label>Instance count</label>
<tip>The number of SimAnneal instances used in multithreading. If left at -1, a number is automatically selected based on the DB layout.</tip>
</num_instances>
<eps_r>
<T>float</T>
<val>5.6</val>
<dp>2</dp>
<label>Relative permittivity</label>
<tip>Surface relative permittivity.</tip>
</eps_r>
<muzm>
<T>float</T>
<val>-0.25</val>
<dp>2</dp>
<label>mu (Isolated E_{(0/-)} - E_{Fermi})</label>
<tip>The global Fermi level on the surface, lower value brings more electrons to the surface.</tip>
</muzm>
<debye_length>
<T>float</T>
<val>5</val>
<label>Screening distance (nm)</label>
<tip>Thomas-Fermi screening distance.</tip>
</debye_length>
<hop_attempt_factor>
<T>int</T>
<val>5</val>
<label>Hop attempt factor</label>
<tip></tip>
</hop_attempt_factor>
<T_init>
<T>float</T>
<val>500</val>
<label>Initial temperature (K)</label>
<tip>Initial annealing temperature (K)</tip>
</T_init>
<T_min>
<T>float</T>
<val>2</val>
<label>Minimum temperature (K)</label>
<tip>The minimum temperature at the end of the annealing schedule.</tip>
</T_min>
<T_e_inv_point>
<T>float</T>
<val>0.09995</val>
<dp>5</dp>
<label>Temperature 1/e point</label>
<tip>The point in the annealing schedule where temperature is reduced to 1/e * T_0.</tip>
</T_e_inv_point>
<T_schedule>
<T>string</T>
<val>exponential</val>
<label>Temperature schedule</label>
<tip>Annealing temperature schedule.</tip>
<value_selection type="ComboBox">
<exponential>Exponential</exponential>
<!--<linear>Linear</linear>-->
</value_selection>
</T_schedule>
<v_freeze_init>
<T>float</T>
<val>-1</val>
<dp>1</dp>
<label>Initial V_freeze (eV)</label>
<tip>The initial freeze-out voltage for population update, set to -1 for auto (mu/2).</tip>
</v_freeze_init>
<v_freeze_threshold>
<T>float</T>
<val>4</val>
<dp>1</dp>
<label>Maximum V_freeze (eV)</label>
<tip>The maximum freeze-out voltage. Dependent on mu but by V_freeze=0.5 the chance of population update is already neglegibly small.</tip>
</v_freeze_threshold>
<v_freeze_reset>
<T>float</T>
<val>-1</val>
<dp>1</dp>
<label>Reset V_freeze</label>
<tip>The freeze-out voltage to reset to if strategic reset occurs.</tip>
</v_freeze_reset>
<v_freeze_end_point>
<T>float</T>
<val>0.4</val>
<dp>2</dp>
<label>V_freeze cycles</label>
<tip>Number of cycles in a period of V_freeze.</tip>
</v_freeze_end_point>
<phys_validity_check_cycles>
<T>int</T>
<val>10</val>
<label>Physical validity check cycles</label>
<tip>Number of cycles for physical validity check after each V_freeze cycle.</tip>
</phys_validity_check_cycles>
<strategic_v_freeze_reset>
<T>bool</T>
<val>0</val>
<label>Strategically reset V_freeze</label>
<tip>Strategically reset V_freeze if a majority of the results at the end of V_freeze cycle are invalid.</tip>
<value_selection type="CheckBox"></value_selection>
</strategic_v_freeze_reset>
<reset_T_during_v_freeze_reset>
<T>bool</T>
<val>0</val>
<label>Reset temperature as well</label>
<tip>Reset temperature as well when strategically resetting V_freeze.</tip>
<value_selection type="CheckBox"></value_selection>
</reset_T_during_v_freeze_reset>
<result_queue_size>
<T>float</T>
<val>0.1</val>
<dp>1</dp>
<label>Result queue size</label>
<tip>The number of results to retrieve from SimAnneal (anneal_cycles * result_queue_size).</tip>
</result_queue_size>
<!--
<preanneal_cycles>
<T>int</T>
<val>0</val>
<label>Preanneal cycles</label>
<tip>Number of cycles in the beginning when the temperature doesn't change.</tip>
</preanneal_cycles>
-->
</sim_params>
</physeng>