-
Notifications
You must be signed in to change notification settings - Fork 0
/
automate-solar_schema.archive.yaml
321 lines (294 loc) · 11.8 KB
/
automate-solar_schema.archive.yaml
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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
definitions:
#impinging flux: amount of a specific material from the PVD source that impinges on the substrate per unit time
#normalise function can do e.g. applying QCM model to calc fluxes form sources
name: Automate-Solar Schema
sections:
Position: #reusable for all objects that have a position in the sputtering (or other) process
description: In BERTHA's coordinate system, x is the axis via which the substrate is loaded (increasing in the same direction), and z is vertical. x = y = z = 0 is the centre of the substrate holder upon loading in the chamber
quantities:
center_xyz:
type: float
unit: meter
shape: [3]
description:
center_normal:
type: float
shape: [3]
description: (unit) vector describing the direction of the source
rotation:
type: float
description: angle of rotation of object around its centre_normal
TimeSeriesData: #reusable for all time series data
quantities:
times: #[from MongoDB]: Time_[s]
type: float
shape: ['*']
unit: second
values:
type: float
shape: ['*']
unit: volt
mean:
type: float
unit: volt
error:
type: float
unit: volt
slope:
desciption: the slope of a simple linear regression line fitted to the time series
type: float
unit: volt / second
Sensor:
description: a general sensor that is placed in the PVD chamber
sub_sections:
position:
section: "#/Position"
sensor_data:
section: "#/TimeSeriesData"
QCMSensor:
description: a qcm sensor as a specific type of Sensor
base_section: "#/Sensor"
sub_sections:
crystal_info:
section:
quantities:
info: #[from MongoDB]: none yet, but we will need to add this info to the campaign info so it can be uploaded to NOMAD
description: e.g. contact materials, part number etc
type: str
resonant_frequency: #[from MongoDB]: none yet, but we will need to add this info to the campaign info so it can be uploaded to NOMAD
type: float
unit: hertz
sensor_data:
section:
base_section: "#/TimeSeriesData"
quantities:
values: #[from MongoDB]: QCM_1_frequency_[Hz] **OBS repeat for each sensor 1-3. Ask Hampus how to do that
shape: ['*']
type: float
unit: hertz
mean: #[from MongoDB]: NA
type: float
unit: hertz
error: #[from MongoDB]: none yet, but we will need to add this
type: float
unit: hertz
slope: #[from MongoDB]: QCM_1_rate_[df/dt] **OBS repeat for each sensor 1-3
type: float
unit: hertz / second
remaining_lifetime:
section:
quantities:
value: #[from MongoDB]: QCM_1_Q_[%] **OBS repeat for each sensor 1-3
type: float
mass_deposition_rate:
section:
quantities:
value: #[from MongoDB]: none yet, but we will need to calculate and this
type: float
unit: gram / meter**2
error: #[from MongoDB]: none yet, but we will need to calculate and this
type: float
unit: gram / meter**2
ChamberEnvironment:
base_sections:
- nomad_material_processing.vapor_deposition.ChamberEnvironment #includes gas type and flow, pressure
sub_sections:
gas_flow:
section:
base_section: "#/TimeSeriesData"
quantities:
values: #[from MongoDB]: Gas_flow_[sccm]
shape: ['*']
type: float
unit: meter**3 / second
mean: #[from MongoDB]: Gas_flow_[sccm]_Mean
type: float
unit: meter**3
error: #[from MongoDB]: Gas_flow_[sccm]_STD
type: float
unit: meter**3
sub_sections:
gas:
section: nomad.datamodel.metainfo.basesections.PureSubstanceSection
#[from MongoDB]: Sputter gas ***this is just a string though, whereas in NOMAD there are gas objects corresponding to real chemical. Ask Hampus how we go from our string "Ar" in this case, to a gas object in NOMADs parlance.
setpoints:
section:
quantities:
pressure: #[from MongoDB]: Pressure_setpoint_[mTorr]
type: float
unit: pascal
flow: #[from MongoDB]: none yet but we need to add it
type: float
unit: meter**3 / second
pressure:
section:
base_section: "#/TimeSeriesData"
quantities:
values: #[from MongoDB]: Actual_pressure_[mTorr]
shape: ['*']
type: float
unit: pascal
mean: #[from MongoDB]: Actual_pressure_[mTorr]_mean
type: float
unit: pascal
error: #[from MongoDB]: Actual_pressure_[mTorr]_STD
type: float
unit: pascal
sensors:
section: "#/QCMSensor" #Ask Hampus how this works in practice, we will add three sensors QCM1-3
repeats: true
SputterTarget: # these will be created in NOMAD as separate entities. So we would address them with a reference of some kind
base_sections:
- nomad.datamodel.metainfo.basesections.CompositeSystem
- nomad.datamodel.data.EntryData
quantities:
area:
type: float
unit: meter**2
thickness:
type: int
unit: meter
other_information:
description: e.g. manufacturer, backing plate and bonding etc.
type: str
a_eln:
component: RichTextEditQuantity
Magnetron:
base_sections:
- nomad_material_processing.physical_vapor_deposition.EvaporationSource
sub_sections:
setpoints:
section:
quantities:
set_power: #[from MongoDB]: Power_Ax1_setpoint_[W] ***OBS repeat for x magnetrons
type: float
unit: watt
set_voltage: #[from MongoDB]: NA
type: float
unit: volt
set_current: #[from MongoDB]: NA
type: float
unit: ampere
power:
section:
base_section: "#/TimeSeriesData"
quantities:
values: #[from MongoDB]: Actual_Power_Ax1_[W] ***OBS repeat for x magnetrons
shape: ['*']
type: float
unit: watt
mean:
type: float
unit: watt
error:
type: float
unit: watt
voltage:
section:
base_section: "#/TimeSeriesData"
# [from MongoDB]: Voltage_Ax1_[W] ***OBS repeat for x magnetrons
current:
section:
base_section: "#/TimeSeriesData"
quantities:
values: # [from MongoDB]: none yet but we need to add it
shape: ['*']
type: float
unit: ampere
mean: # [from MongoDB]: none yet but we need to add it
type: float
unit: ampere
error: # [from MongoDB]: none yet but we need to add it
type: float
unit: ampere
power_supply:
section:
quantities:
instrument_id: # [from MongoDB]: Power Supply Ax1 ***OBS repeat for x magnetrons
type: str
description: identifier for a specific instrument #could become a reference to an actual object (later)
supply_type: # [from MongoDB]: none yet but we need to add it
type: str
description: e.g. RF or pulsed DC
frequency: # [from MongoDB]: Power Supply Ax 1 Pulse Rate
type: int
unit: hertz
description: pulse frequency of source
SputterSource:
base_sections:
- nomad_material_processing.physical_vapor_deposition.PVDSource
sub_sections:
material: # [from MongoDB]: Material Ax1 (and 2 and 3), converting from str to the NOMAD material object
section: "#/SputterTargetReference"
vapor_source:
section: "#Magnetron"
vapor_distribution:
section:
description: information on the geometrical origin, direction and spread of the vapor plume
quantities:
shape: # [from MongoDB]: to be added to campaign/system info
type: str
description: info on e.g. what model is used
a_eln:
component: RichTextEditQuantity
n_parameter: # [from MongoDB]: not yet, but to be calculated and added
type: float
description: in the Knudsen model, the exponent defining the spread of the plume
A_parameter: # [from MongoDB]: not yet, but to be calculated and added
type: float
description: in the Knudsen model, the coefficient defining the flux intensity
sub_sections:
origin:
section: "#/Position" # [from MongoDB]: not yet, but to be calculated and added
description: the location of origin and the direction of the vapour plume
AutomateSolarSputterDeposition:
base_sections:
- nomad_material_processing.physical_vapor_deposition.SputterDeposition
- nomad.datamodel.data.EntryData
# SputterDeposition has the following quantities:
# quantity <-- [from MongoDB]:
# name <-- Run_ID
# datetime <-- we have date, not sure about time... (we have time for series start, not run start)
# lab_id <-- "Uppsala University Åutomate-Solar"
# description <-- Campaign description + campaign code + Series description
sub_sections:
preparation:
section:
quantities:
base_pressure: # [from MongoDB]: Base_pressure_(start)_[Torr]
type: float
unit: pascal
description: the base pressure of the vacuum chamber prior to initating an experiment
presputtering: # [from MongoDB]: Pre-sputter_description
type: str
steps:
section: "#/SputterDepositionStep"
repeats: true
# Previously nested definitions:
SputterTargetReference:
base_sections:
- nomad.datamodel.metainfo.basesections.CompositeSystemReference
quantities:
reference:
type: "#/SputterTarget"
m_annotations:
eln:
component: ReferenceEditQuantity
SputterDepositionStep:
base_sections:
- nomad_material_processing.physical_vapor_deposition.VaporDepositionStep
# SputterDeposition has the following quantities:
# quantity <-- [from MongoDB]:
# name <-- Run_ID + Step_number
# start_time <-- first value from time series
# comment <-- NA
# creates_new_thin_film <-- Sample_produced
# duration <-- Dwell_time[s]
sub_sections:
environment:
section: "#/ChamberEnvironment"
sources:
section: "#/SputterSource"
repeats: true
# #samples
# #instrument info