nomad-material-processing 0.0.8__tar.gz → 0.0.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/PKG-INFO +1 -1
  2. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/__init__.py +362 -3
  3. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/__init__.py +8 -0
  4. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/cvd/__init__.py +179 -36
  5. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/pvd/__init__.py +36 -10
  6. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/pvd/thermal.py +27 -11
  7. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing.egg-info/PKG-INFO +1 -1
  8. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/.github/workflows/python-publish.yml +0 -0
  9. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/.gitignore +0 -0
  10. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/.vscode/settings.json +0 -0
  11. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/LICENSE +0 -0
  12. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/README.md +0 -0
  13. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/nomad.yaml +0 -0
  14. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/pyproject.toml +0 -0
  15. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/setup.cfg +0 -0
  16. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/setup.py +0 -0
  17. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/combinatorial.py +0 -0
  18. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/crystal_growth.py +0 -0
  19. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/epitaxy.py +0 -0
  20. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/nomad_plugin.yaml +0 -0
  21. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/utils.py +0 -0
  22. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/cvd/nomad_plugin.yaml +0 -0
  23. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/nomad_plugin.yaml +0 -0
  24. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/pvd/nomad_plugin.yaml +0 -0
  25. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/pvd/pld.py +0 -0
  26. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +0 -0
  27. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing.egg-info/SOURCES.txt +0 -0
  28. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing.egg-info/dependency_links.txt +0 -0
  29. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing.egg-info/requires.txt +0 -0
  30. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/src/nomad_material_processing.egg-info/top_level.txt +0 -0
  31. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_activity_step.archive.yaml +0 -0
  32. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_crystal_growth.archive.yaml +0 -0
  33. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_czochralski_process.archive.yaml +0 -0
  34. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_epitaxy.archive.yaml +0 -0
  35. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_metal_organic_vapor_phase_epitaxy.archive.yaml +0 -0
  36. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_molecular_beam_epitaxy.archive.yaml +0 -0
  37. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_physical_vapor_deposition.archive.yaml +0 -0
  38. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_pulsed_laser_deposition.archive.yaml +0 -0
  39. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_sample_deposition.archive.yaml +0 -0
  40. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_sputter_deposition.archive.yaml +0 -0
  41. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_substrate.archive.yaml +0 -0
  42. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_thermal_evaporation.archive.yaml +0 -0
  43. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_thin_film.archive.yaml +0 -0
  44. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_thin_film_stack.archive.yaml +0 -0
  45. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/data/test_vapor_phase_epitaxy.archive.yaml +0 -0
  46. {nomad_material_processing-0.0.8 → nomad_material_processing-0.0.10}/tests/test_schema.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nomad-material-processing
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary: A plugin for NOMAD containing base sections for material processing.
5
5
  Author-email: Hampus Näsström <hampus.naesstroem@physik.hu-berlin.de>, Andrea Albino <andrea.albino@physik.hu-berlin.de>, Sebastian Brückner <sebastian.brueckner@ikz-berlin.de>
6
6
  License: Apache License
@@ -24,6 +24,8 @@ from nomad.metainfo import (
24
24
  Quantity,
25
25
  Section,
26
26
  SubSection,
27
+ Datetime,
28
+ MEnum,
27
29
  )
28
30
  from nomad.datamodel.metainfo.basesections import (
29
31
  ElementalComposition,
@@ -108,6 +110,33 @@ class Parallelepiped(Geometry):
108
110
  ),
109
111
  unit='meter',
110
112
  )
113
+ alpha = Quantity(
114
+ type=float,
115
+ description='The angle between y and z sides.',
116
+ a_eln=ELNAnnotation(
117
+ component=ELNComponentEnum.NumberEditQuantity,
118
+ label='Alpha (∡ y-x-z)',
119
+ ),
120
+ unit='degree',
121
+ )
122
+ beta = Quantity(
123
+ type=float,
124
+ description='The angle between x and z sides.',
125
+ a_eln=ELNAnnotation(
126
+ component=ELNComponentEnum.NumberEditQuantity,
127
+ label='Beta (∡ x-y-z)',
128
+ ),
129
+ unit='degree',
130
+ )
131
+ gamma = Quantity(
132
+ type=float,
133
+ description='The angle between x and y sides.',
134
+ a_eln=ELNAnnotation(
135
+ component=ELNComponentEnum.NumberEditQuantity,
136
+ label='Gamma (∡ x-z-y)',
137
+ ),
138
+ unit='degree',
139
+ )
111
140
  surface_area = Quantity(
112
141
  type=float,
113
142
  description="""
@@ -123,6 +152,246 @@ class Parallelepiped(Geometry):
123
152
  )
124
153
 
125
154
 
155
+ class SquareCuboid(Parallelepiped):
156
+ """
157
+ A cuboid with all sides equal in length.
158
+ """
159
+ m_def = Section()
160
+ height = Quantity(
161
+ type=float,
162
+ description='The z dimension of the parallelepiped.',
163
+ a_eln=ELNAnnotation(
164
+ component=ELNComponentEnum.NumberEditQuantity,
165
+ defaultDisplayUnit='millimeter',
166
+ label='Height (z)',
167
+ ),
168
+ unit='meter',
169
+ )
170
+ side = Quantity(
171
+ type=float,
172
+ description='The x and y dimensions of the parallelepiped.',
173
+ a_eln=ELNAnnotation(
174
+ component=ELNComponentEnum.NumberEditQuantity,
175
+ defaultDisplayUnit='millimeter',
176
+ label='Side (x = y)',
177
+ ),
178
+ unit='meter',
179
+ )
180
+ surface_area = Quantity(
181
+ type=float,
182
+ description="""
183
+ The product of length and width, representing the total exposed area of the
184
+ primary surface.
185
+ """,
186
+ a_eln=ELNAnnotation(
187
+ component=ELNComponentEnum.NumberEditQuantity,
188
+ defaultDisplayUnit='millimeter ** 2',
189
+ label='Surface Area (x*y)',
190
+ ),
191
+ unit='meter ** 2',
192
+ )
193
+
194
+
195
+ class RectangleCuboid(Parallelepiped):
196
+ """
197
+ A rectangular cuboid is a specific type of parallelepiped
198
+ where all angles between adjacent faces are right angles,
199
+ and all faces are rectangles.
200
+ """
201
+ m_def = Section()
202
+ height = Quantity(
203
+ type=float,
204
+ description='The z dimension of the parallelepiped.',
205
+ a_eln=ELNAnnotation(
206
+ component=ELNComponentEnum.NumberEditQuantity,
207
+ defaultDisplayUnit='millimeter',
208
+ label='Height (z)',
209
+ ),
210
+ unit='meter',
211
+ )
212
+ width = Quantity(
213
+ type=float,
214
+ description='The x dimension of the parallelepiped.',
215
+ a_eln=ELNAnnotation(
216
+ component=ELNComponentEnum.NumberEditQuantity,
217
+ defaultDisplayUnit='millimeter',
218
+ label='Width (x)',
219
+ ),
220
+ unit='meter',
221
+ )
222
+ length = Quantity(
223
+ type=float,
224
+ description='The y dimension of the parallelepiped.',
225
+ a_eln=ELNAnnotation(
226
+ component=ELNComponentEnum.NumberEditQuantity,
227
+ defaultDisplayUnit='millimeter',
228
+ label='Length (y)',
229
+ ),
230
+ unit='meter',
231
+ )
232
+ surface_area = Quantity(
233
+ type=float,
234
+ description="""
235
+ The product of length and width, representing the total exposed area of the
236
+ primary surface.
237
+ """,
238
+ a_eln=ELNAnnotation(
239
+ component=ELNComponentEnum.NumberEditQuantity,
240
+ defaultDisplayUnit='millimeter ** 2',
241
+ label='Surface Area (x*y)',
242
+ ),
243
+ unit='meter ** 2',
244
+ )
245
+
246
+
247
+ class TruncatedCone(Geometry):
248
+ """
249
+ A cone with the top cut off parallel to the cone bottom.
250
+ """
251
+
252
+ m_def = Section()
253
+ height = Quantity(
254
+ type=float,
255
+ description='The z dimension of the parallelepiped.',
256
+ a_eln=ELNAnnotation(
257
+ component='NumberEditQuantity',
258
+ defaultDisplayUnit='nanometer',
259
+ ),
260
+ label='Height (z)',
261
+ unit='meter',
262
+ )
263
+ lower_cap_radius = Quantity(
264
+ type=float,
265
+ description='Radius of the lower cap.',
266
+ a_eln=ELNAnnotation(
267
+ component='NumberEditQuantity',
268
+ defaultDisplayUnit='millimeter',
269
+ ),
270
+ unit='meter',
271
+ )
272
+ upper_cap_radius = Quantity(
273
+ type=float,
274
+ description='Radius of the upper cap.',
275
+ a_eln=ELNAnnotation(
276
+ component='NumberEditQuantity',
277
+ defaultDisplayUnit='millimeter',
278
+ ),
279
+ unit='meter',
280
+ )
281
+ lower_cap_surface_area = Quantity(
282
+ type=float,
283
+ description='Area of the lower cap.',
284
+ a_eln=ELNAnnotation(
285
+ component='NumberEditQuantity',
286
+ defaultDisplayUnit='millimeter ** 2',
287
+ ),
288
+ unit='meter ** 2',
289
+ )
290
+ upper_cap_surface_area = Quantity(
291
+ type=float,
292
+ description='Area of the upper cap.',
293
+ a_eln=ELNAnnotation(
294
+ component='NumberEditQuantity',
295
+ defaultDisplayUnit='millimeter ** 2',
296
+ ),
297
+ unit='meter ** 2',
298
+ )
299
+ lateral_surface_area = Quantity(
300
+ type=float,
301
+ description='Area of the lateral surface.',
302
+ a_eln=ELNAnnotation(
303
+ component='NumberEditQuantity',
304
+ defaultDisplayUnit='millimeter ** 2',
305
+ ),
306
+ unit='meter ** 2',
307
+ )
308
+
309
+
310
+ class Cylinder(Geometry):
311
+ """
312
+ A cylinder, i.e. a prism with a circular base.
313
+ """
314
+
315
+ m_def = Section()
316
+ height = Quantity(
317
+ type=float,
318
+ description='The z dimension of the parallelepiped.',
319
+ a_eln=ELNAnnotation(
320
+ component='NumberEditQuantity',
321
+ defaultDisplayUnit='nanometer',
322
+ ),
323
+ label='Height (z)',
324
+ unit='meter',
325
+ )
326
+ radius = Quantity(
327
+ type=float,
328
+ description='Radius of the cylinder.',
329
+ a_eln=ELNAnnotation(
330
+ component='NumberEditQuantity',
331
+ defaultDisplayUnit='millimeter',
332
+ ),
333
+ unit='meter',
334
+ )
335
+ lower_cap_surface_area = Quantity(
336
+ type=float,
337
+ description='Area of the lower cap.',
338
+ a_eln=ELNAnnotation(
339
+ component='NumberEditQuantity',
340
+ defaultDisplayUnit='millimeter ** 2',
341
+ ),
342
+ unit='meter ** 2',
343
+ )
344
+ cap_surface_area = Quantity(
345
+ type=float,
346
+ description='Area of the cap.',
347
+ a_eln=ELNAnnotation(
348
+ component='NumberEditQuantity',
349
+ defaultDisplayUnit='millimeter ** 2',
350
+ ),
351
+ unit='meter ** 2',
352
+ )
353
+ lateral_surface_area = Quantity(
354
+ type=float,
355
+ description='Area of the lateral surface.',
356
+ a_eln=ELNAnnotation(
357
+ component='NumberEditQuantity',
358
+ defaultDisplayUnit='millimeter ** 2',
359
+ ),
360
+ unit='meter ** 2',
361
+ )
362
+
363
+
364
+ class CylinderSector(Cylinder):
365
+ central_angle = Quantity(
366
+ type=float,
367
+ description="""The angle that defines the portion of the cylinder.
368
+ This angle is taken at the center of the base circle
369
+ and extends to the arc that defines the cylindrical sector.""",
370
+ a_eln=ELNAnnotation(
371
+ component=ELNComponentEnum.NumberEditQuantity,
372
+ ),
373
+ unit='degree',
374
+ )
375
+
376
+
377
+ class IrregularParallelSurfaces(Geometry):
378
+ """
379
+ A shape that does not fit into any of the other geometry classes.
380
+ """
381
+
382
+ m_def = Section()
383
+ height = Quantity(
384
+ type=float,
385
+ description='The z dimension of the irregular shape.',
386
+ a_eln=ELNAnnotation(
387
+ component='NumberEditQuantity',
388
+ defaultDisplayUnit='nanometer',
389
+ ),
390
+ label='Height (z)',
391
+ unit='meter',
392
+ )
393
+
394
+
126
395
  class Miscut(ArchiveSection):
127
396
  """
128
397
  The miscut in a crystalline substrate refers to
@@ -144,7 +413,7 @@ class Miscut(ArchiveSection):
144
413
  )
145
414
  angle_deviation = Quantity(
146
415
  type=float,
147
- description='The ± uncertainty in the angular displacement.',
416
+ description='The ± deviation in the angular displacement.',
148
417
  a_eln=ELNAnnotation(
149
418
  component=ELNComponentEnum.NumberEditQuantity,
150
419
  defaultDisplayUnit='deg',
@@ -177,6 +446,15 @@ class Dopant(ElementalComposition):
177
446
  ),
178
447
  unit='1 / m ** 3',
179
448
  )
449
+ doping_deviation = Quantity(
450
+ type=float,
451
+ description='The ± deviation in the doping level.',
452
+ a_eln=ELNAnnotation(
453
+ component=ELNComponentEnum.NumberEditQuantity,
454
+ defaultDisplayUnit='1 / cm ** 3',
455
+ ),
456
+ unit='1 / m ** 3',
457
+ )
180
458
 
181
459
 
182
460
  class CrystalProperties(ArchiveSection):
@@ -191,7 +469,28 @@ class SubstrateCrystalProperties(CrystalProperties):
191
469
  """
192
470
  Crystallographic parameters such as orientation, miscut, and surface structure.
193
471
  """
194
-
472
+ bravais_lattices = Quantity(
473
+ type=MEnum(
474
+ 'Triclinic',
475
+ 'Monoclinic Simple',
476
+ 'Monoclinic Base Centered',
477
+ 'Orthorhombic Simple',
478
+ 'Orthorhombic Base Centered',
479
+ 'Orthorhombic Body Centered',
480
+ 'Orthorhombic Face Centered',
481
+ 'Tetragonal Simple',
482
+ 'Tetragonal Body Centered',
483
+ 'Cubic Simple',
484
+ 'Cubic Body Centered',
485
+ 'Cubic Face Centered',
486
+ 'Trigonal',
487
+ 'Hexagonal',
488
+ ),
489
+ description='The crystal system of the substrate.',
490
+ a_eln=ELNAnnotation(
491
+ component=ELNComponentEnum.EnumEditQuantity,
492
+ ),
493
+ )
195
494
  orientation = Quantity(
196
495
  type=str,
197
496
  description="""
@@ -209,6 +508,44 @@ class SubstrateCrystalProperties(CrystalProperties):
209
508
  Section describing any miscut of the substrate with respect to the substrate
210
509
  orientation.
211
510
  """,
511
+ repeats=True,
512
+ )
513
+
514
+
515
+ class ElectronicProperties(ArchiveSection):
516
+ """
517
+ The electronic properties of a material.
518
+ """
519
+
520
+ m_def = Section()
521
+
522
+ conductivity_type = Quantity(
523
+ type=MEnum(
524
+ 'P-type',
525
+ 'N-type',
526
+ ),
527
+ description='The type of semiconductor, N-type being electrons the majority carriers and P-type being holes the majority carriers.',
528
+ a_eln=ELNAnnotation(
529
+ component=ELNComponentEnum.EnumEditQuantity,
530
+ ),
531
+ )
532
+ carrier_density = Quantity(
533
+ type=np.dtype(float),
534
+ unit='1 / cm**3',
535
+ a_eln=ELNAnnotation(
536
+ component=ELNComponentEnum.NumberEditQuantity,
537
+ ),
538
+ description='Concentration of free charge carriers, electrons in the conduction band and holes in the valence band.',
539
+ )
540
+ electrical_resistivity = Quantity(
541
+ type=float,
542
+ links=['http://fairmat-nfdi.eu/taxonomy/ElectricalResistivity'],
543
+ description='Resistance of the charges to move in the presence of an electric current.',
544
+ a_eln=ELNAnnotation(
545
+ component=ELNComponentEnum.NumberEditQuantity,
546
+ defaultDisplayUnit='ohm cm',
547
+ ),
548
+ unit='ohm m',
212
549
  )
213
550
 
214
551
 
@@ -219,12 +556,12 @@ class Substrate(CompositeSystem):
219
556
  """
220
557
 
221
558
  m_def = Section()
559
+
222
560
  supplier = Quantity(
223
561
  type=str,
224
562
  description='The supplier of the current substrate specimen.',
225
563
  a_eln=ELNAnnotation(
226
564
  component=ELNComponentEnum.StringEditQuantity,
227
- label='Name of Supplier',
228
565
  ),
229
566
  )
230
567
  supplier_id = Quantity(
@@ -242,6 +579,22 @@ class Substrate(CompositeSystem):
242
579
  label='Substrate ID',
243
580
  ),
244
581
  )
582
+ image = Quantity(
583
+ type=str,
584
+ description='A photograph or image of the substrate.',
585
+ a_browser={'adaptor': 'RawFileAdaptor'},
586
+ a_eln=ELNAnnotation(
587
+ component=ELNComponentEnum.FileEditQuantity,
588
+ ),
589
+ )
590
+ information_sheet = Quantity(
591
+ type=str,
592
+ description='Pdf files containing certificate and other documentation.',
593
+ a_browser={'adaptor': 'RawFileAdaptor'},
594
+ a_eln=ELNAnnotation(
595
+ component='FileEditQuantity',
596
+ ),
597
+ )
245
598
 
246
599
 
247
600
  class CrystallineSubstrate(Substrate):
@@ -251,6 +604,8 @@ class CrystallineSubstrate(Substrate):
251
604
  """
252
605
 
253
606
  m_def = Section()
607
+
608
+
254
609
  geometry = SubSection(
255
610
  section_def=Geometry,
256
611
  description='Section containing the geometry of the substrate.',
@@ -259,6 +614,10 @@ class CrystallineSubstrate(Substrate):
259
614
  section_def=SubstrateCrystalProperties,
260
615
  description='Section containing the crystal properties of the substrate.',
261
616
  )
617
+ electronic_properties = SubSection(
618
+ section_def=ElectronicProperties,
619
+ description='Section containing the electronic properties of the substrate.',
620
+ )
262
621
  dopants = SubSection(
263
622
  section_def=Dopant,
264
623
  repeats=True,
@@ -314,11 +314,19 @@ class Pressure(TimeSeries):
314
314
  type=float,
315
315
  unit='pascal',
316
316
  shape=['*'],
317
+ a_eln=ELNAnnotation(
318
+ component=ELNComponentEnum.NumberEditQuantity,
319
+ label='Set value',
320
+ ),
317
321
  )
318
322
  set_time = Quantity(
319
323
  type=float,
320
324
  unit='second',
321
325
  shape=['*'],
326
+ a_eln=ELNAnnotation(
327
+ component=ELNComponentEnum.NumberEditQuantity,
328
+ label='Set time',
329
+ ),
322
330
  )
323
331
 
324
332
 
@@ -38,6 +38,7 @@ from nomad.datamodel.metainfo.plot import PlotSection, PlotlyFigure
38
38
 
39
39
  from nomad.datamodel.metainfo.basesections import (
40
40
  PubChemPureSubstanceSection,
41
+ PureSubstanceComponent,
41
42
  )
42
43
  from nomad_material_processing import (
43
44
  TimeSeries,
@@ -49,7 +50,7 @@ from nomad_material_processing.vapor_deposition import (
49
50
  VolumetricFlowRate,
50
51
  Pressure,
51
52
  Temperature,
52
-
53
+ GasFlow,
53
54
  )
54
55
 
55
56
 
@@ -64,6 +65,59 @@ if TYPE_CHECKING:
64
65
  m_package = Package(name="Chemical Vapor Deposition")
65
66
 
66
67
 
68
+ class ComponentConcentration(PureSubstanceComponent):
69
+ """
70
+ The concentration of a component in a mixed material.
71
+ """
72
+
73
+ theoretical_concentration = Quantity(
74
+ type=float,
75
+ description='The concentration planned for the component.',
76
+ a_eln=ELNAnnotation(
77
+ component='NumberEditQuantity',
78
+ defaultDisplayUnit='mol / liter',
79
+ minValue=0,
80
+ ),
81
+ unit='mol / liter',
82
+ )
83
+ effective_concentration = Quantity(
84
+ type=float,
85
+ description='The concentration calculated from the component moles and total volume.',
86
+ a_eln=ELNAnnotation(
87
+ component='NumberEditQuantity',
88
+ defaultDisplayUnit='mol / liter',
89
+ minValue=0,
90
+ ),
91
+ unit='mol / liter',
92
+ )
93
+
94
+ class PushPurgeGasFlow(GasFlow):
95
+ """
96
+ Section describing the flow of a gas.
97
+ """
98
+
99
+ m_def = Section(
100
+ a_plot=[dict(
101
+ # x=['flow_rate/time', 'flow_rate/set_time'],
102
+ # y=['flow_rate/value', 'flow_rate/set_value'],
103
+ x='flow_rate/time',
104
+ y='flow_rate/value',
105
+ ),
106
+ dict(
107
+ x='purge_flow_rate/time',
108
+ y='purge_flow_rate/value',
109
+ ),
110
+ ],
111
+ )
112
+ flow_rate = SubSection(
113
+ section_def=VolumetricFlowRate,
114
+ label="push_flow_rate",
115
+ )
116
+ purge_flow_rate = SubSection(
117
+ section_def=VolumetricFlowRate,
118
+ )
119
+
120
+
67
121
  class Rotation(TimeSeries):
68
122
  """
69
123
  Rotation
@@ -82,33 +136,34 @@ class Rotation(TimeSeries):
82
136
  )
83
137
  value = Quantity(
84
138
  type=float,
85
- description="FILL THE DESCRIPTION",
86
- a_eln=ELNAnnotation(
87
- component="NumberEditQuantity",
88
- defaultDisplayUnit="rpm",
89
- ),
139
+ description="The rotation of the sample holder, or susceptor.",
140
+ # a_eln=ELNAnnotation(
141
+ # component="NumberEditQuantity",
142
+ # defaultDisplayUnit="rpm",
143
+ # ),
90
144
  unit="rpm",
91
145
  )
92
146
 
93
147
 
94
148
  class PartialVaporPressure(Pressure):
95
149
  """
96
- The Partial Vapor Pressure (or Equilibrium Vapor Pressure), p, is the pressure exerted
97
- by a vapor in thermodynamic equilibrium with its condensed phases (solid or liquid)
98
- at a given temperature in a closed system.
99
-
150
+ The Partial Vapor Pressure (or Equilibrium Vapor Pressure), p, is the pressure exerted
151
+ by a vapor in thermodynamic equilibrium with its condensed phases (solid or liquid)
152
+ at a given temperature in a closed system.
153
+
100
154
  It can be approximately calculated by the semiempirical Antoine equation.
101
155
  It is a relation between the vapor pressure and temperature of pure substances.
102
156
  log10(p) = A - [B / (T + C)]
103
157
  https://en.wikipedia.org/wiki/Vapor_pressure
104
158
  The August-Antoine equation is a simplified version of the Antoine equation,
105
- sometimes used to calculate Partial Vapor Pressure.
106
- This assumes a temperature-independent heat of vaporization, i.e., C = 0.
159
+ sometimes used to calculate Partial Vapor Pressure.
160
+ This assumes a temperature-independent heat of vaporization, i.e., C = 0.
107
161
  https://en.wikipedia.org/wiki/Antoine_equation
108
162
  """
163
+
109
164
  set_value = Quantity(
110
165
  type=float,
111
- description="FILL THE DESCRIPTION",
166
+ description="The value scalar set for this parameter.",
112
167
  a_eln={"component": "NumberEditQuantity", "defaultDisplayUnit": "mbar"},
113
168
  unit="pascal",
114
169
  )
@@ -143,6 +198,7 @@ class BubblerMolarFlowRate(MolarFlowRate):
143
198
  Journal of Vacuum Science & Technology A 8, 800 (1990); doi: 10.1116/1.576921
144
199
 
145
200
  """
201
+
146
202
  value = MolarFlowRate.value.m_copy()
147
203
  set_value = MolarFlowRate.set_value.m_copy()
148
204
  set_value.a_eln.defaultDisplayUnit = "mol/minute"
@@ -152,14 +208,17 @@ class CVDEvaporationSource(EvaporationSource):
152
208
  pressure = SubSection(
153
209
  section_def=Pressure,
154
210
  )
211
+ precursor_partial_pressure = SubSection(
212
+ section_def=PartialVaporPressure,
213
+ )
155
214
  temperature = SubSection(
156
215
  section_def=Temperature,
157
216
  )
158
217
  total_flow_rate = SubSection(
159
218
  section_def=VolumetricFlowRate,
160
219
  description="""
161
- The total flow rate exiting the source.
162
- It can be the sum of precursor and carrier gas or only a gas,
220
+ The total flow rate exiting the source.
221
+ It can be the sum of precursor and carrier gas or only a gas,
163
222
  depending on the nature of the source.
164
223
  """,
165
224
  )
@@ -186,9 +245,6 @@ class BubblerEvaporator(CVDEvaporationSource):
186
245
  leading to thin film growth.
187
246
  """
188
247
 
189
- precursor_partial_pressure = SubSection(
190
- section_def=PartialVaporPressure,
191
- )
192
248
  carrier_gas = SubSection(
193
249
  section_def=PubChemPureSubstanceSection,
194
250
  )
@@ -252,6 +308,7 @@ class FlashEvaporator(CVDEvaporationSource):
252
308
  - Transport to Reaction Chamber.
253
309
  - Temperature Regulation.
254
310
  """
311
+
255
312
  carrier_gas = SubSection(
256
313
  section_def=PubChemPureSubstanceSection,
257
314
  )
@@ -270,40 +327,66 @@ class FlashEvaporator(CVDEvaporationSource):
270
327
  pass
271
328
 
272
329
 
273
- class GasSupply(CVDEvaporationSource):
330
+ class MistEvaporator(CVDEvaporationSource):
274
331
  """
275
- In chemical vapor deposition (CVD), the gas supply plays a critical role
276
- in providing the necessary precursor molecules for the deposition process.
277
- These precursor gases are typically delivered to the reaction chamber
278
- through various methods depending on the specific setup and requirements
279
- of the CVD process.
332
+ MIST-CVD source is a novel method for the deposition of thin films.
280
333
  """
281
- pass
282
334
 
283
335
 
284
- class GasLine(GasSupply):
336
+ class GasLineEvaporator(CVDEvaporationSource):
285
337
  """
286
- Gas lines are used to transport the precursor gases from their source to the reaction chamber.
287
- These lines are often made of materials that are compatible with the precursor gases
288
- and can withstand the process conditions.
289
- They may also be heated or insulated to maintain the gases at the desired temperature
338
+ In chemical vapor deposition (CVD), the gas supply plays a critical role
339
+ in providing the necessary precursor molecules for the deposition process.
340
+
341
+ Gas lines are used to transport the precursor gases from their source to the reaction chamber.
342
+ These lines are often made of materials that are compatible with the precursor gases
343
+ and can withstand the process conditions.
344
+ They may also be heated or insulated to maintain the gases at the desired temperature
290
345
  and prevent condensation or undesired reactions within the lines.
291
346
  """
347
+
292
348
  pass
293
349
 
294
350
 
295
- class GasCylinder(GasSupply):
351
+ class GasCylinderEvaporator(CVDEvaporationSource):
296
352
  """
297
- Contains the precursor gases under pressure.
298
- These cylinders are connected to the CVD chamber through a system of valves,
299
- regulators, and tubing.
300
- The flow rate of each gas can be controlled precisely using flow meters
353
+ In chemical vapor deposition (CVD), the gas supply plays a critical role
354
+ in providing the necessary precursor molecules for the deposition process.
355
+
356
+ Contains the precursor gases under pressure.
357
+ These cylinders are connected to the CVD chamber through a system of valves,
358
+ regulators, and tubing.
359
+ The flow rate of each gas can be controlled precisely using flow meters
301
360
  or mass flow controllers to achieve the desired deposition conditions.
302
361
  """
303
- pass
362
+
363
+ dilution_in_cylinder = Quantity(
364
+ type=float,
365
+ description='The gas dilution in the cylinder.',
366
+ a_eln=ELNAnnotation(
367
+ component='NumberEditQuantity',
368
+ ),
369
+ )
370
+
371
+ effective_flow_rate = SubSection(
372
+ section_def=VolumetricFlowRate,
373
+ description="""
374
+ Effective flow rate, to be defined better.
375
+ """,
376
+ )
304
377
 
305
378
 
306
379
  class CVDSource(VaporDepositionSource):
380
+ """
381
+ A source of vapor for chemical vapor deposition (CVD) processes.
382
+ """
383
+ valve = Quantity(
384
+ type=bool,
385
+ description='is the valve open?',
386
+ a_eln=ELNAnnotation(
387
+ component='BoolEditQuantity',
388
+ ),
389
+ )
307
390
  vapor_source = SubSection(
308
391
  section_def=CVDEvaporationSource,
309
392
  description="""
@@ -312,4 +395,64 @@ class CVDSource(VaporDepositionSource):
312
395
  )
313
396
 
314
397
 
398
+ class BubblerSource(CVDSource):
399
+ vapor_source = SubSection(
400
+ section_def=BubblerEvaporator,
401
+ )
402
+
403
+
404
+ class GasLineSource(CVDSource):
405
+ vapor_source = SubSection(
406
+ section_def=GasLineEvaporator,
407
+ )
408
+
409
+
410
+ class GasCylinderSource(CVDSource):
411
+ vapor_source = SubSection(
412
+ section_def=GasCylinderEvaporator,
413
+ )
414
+
415
+
416
+ class FlashSource(CVDSource):
417
+ vapor_source = SubSection(
418
+ section_def=FlashEvaporator,
419
+ description="""
420
+ Example: A heater, a filament, a laser, a bubbler, etc.
421
+ """,
422
+ )
423
+
424
+
425
+ class MistSource(CVDSource):
426
+ """
427
+ Mist-CVD source is a novel method for the deposition of thin films.
428
+ """
429
+ item = Quantity(
430
+ type=str,
431
+ description='An ID used to identify the solution.',
432
+ a_eln=ELNAnnotation(
433
+ component='StringEditQuantity',
434
+ ),
435
+ )
436
+ stirring_time = Quantity(
437
+ type=float,
438
+ description='Solution stirring time.',
439
+ a_eln=ELNAnnotation(
440
+ component='NumberEditQuantity',
441
+ defaultDisplayUnit='minute',
442
+ ),
443
+ unit='second',
444
+ )
445
+ description = Quantity(
446
+ type=str,
447
+ description='Some notes.',
448
+ a_eln=ELNAnnotation(
449
+ component='StringEditQuantity',
450
+ ),
451
+ )
452
+ vapor_source = SubSection(
453
+ section_def=MistEvaporator,
454
+ )
455
+ material = SubSection(section_def=ComponentConcentration, repeats=True)
456
+
457
+
315
458
  m_package.__init_metainfo__()
@@ -65,10 +65,23 @@ class SourcePower(TimeSeries):
65
65
  y='value',
66
66
  ),
67
67
  )
68
- value = TimeSeries.value.m_copy()
69
- value.unit = 'watt'
70
- set_value = TimeSeries.set_value.m_copy()
71
- set_value.unit = 'watt'
68
+
69
+ value = Quantity(
70
+ type=float,
71
+ unit='watt',
72
+ shape=['*'],
73
+ )
74
+ set_value = Quantity(
75
+ type=float,
76
+ description='The set value(s) (i.e. the intended values) set.',
77
+ shape=['*'],
78
+ unit='watt',
79
+ a_eln=ELNAnnotation(
80
+ component=ELNComponentEnum.NumberEditQuantity,
81
+ label='Set value',
82
+ defaultDisplayUnit='watt',
83
+ ),
84
+ )
72
85
 
73
86
 
74
87
  class PVDEvaporationSource(EvaporationSource):
@@ -105,10 +118,23 @@ class ImpingingFlux(TimeSeries):
105
118
  component=ELNComponentEnum.EnumEditQuantity,
106
119
  ),
107
120
  )
108
- value = TimeSeries.value.m_copy()
109
- value.unit = 'mol/meter ** 2/second'
110
- set_value = TimeSeries.set_value.m_copy()
111
- set_value.unit = 'mol/meter ** 2/second'
121
+
122
+ value = Quantity(
123
+ type=float,
124
+ unit='mol/meter ** 2/second',
125
+ shape=['*'],
126
+ )
127
+ set_value = Quantity(
128
+ type=float,
129
+ description='The set value(s) (i.e. the intended values) set.',
130
+ shape=['*'],
131
+ unit='mol/meter ** 2/second',
132
+ a_eln=ELNAnnotation(
133
+ component=ELNComponentEnum.NumberEditQuantity,
134
+ label='Set value',
135
+ defaultDisplayUnit='mol/meter ** 2/second',
136
+ ),
137
+ )
112
138
 
113
139
 
114
140
  class PVDSource(VaporDepositionSource):
@@ -117,11 +143,11 @@ class PVDSource(VaporDepositionSource):
117
143
  dict(
118
144
  x=[
119
145
  'vapor_source/power/time',
120
- 'impinging_flux/time',
146
+ 'impinging_flux/:/time',
121
147
  ],
122
148
  y=[
123
149
  'vapor_source/power/value',
124
- 'impinging_flux/value',
150
+ 'impinging_flux/:/value',
125
151
  ],
126
152
  ),
127
153
  ],
@@ -35,6 +35,11 @@ from nomad_material_processing.vapor_deposition.pvd import (
35
35
  PhysicalVaporDeposition,
36
36
  )
37
37
 
38
+ from nomad.datamodel.metainfo.annotations import (
39
+ ELNAnnotation,
40
+ ELNComponentEnum,
41
+ )
42
+
38
43
  if TYPE_CHECKING:
39
44
  from nomad.datamodel.datamodel import (
40
45
  EntryArchive,
@@ -59,11 +64,22 @@ class ThermalEvaporationHeaterTemperature(TimeSeries):
59
64
  y='value',
60
65
  ),
61
66
  )
62
- value = TimeSeries.value.m_copy()
63
- value.unit = 'kelvin'
64
- set_value = TimeSeries.set_value.m_copy()
65
- set_value.unit = 'kelvin'
66
- set_value.a_eln.defaultDisplayUnit = 'celsius'
67
+ value = Quantity(
68
+ type=float,
69
+ unit='kelvin',
70
+ shape=['*'],
71
+ )
72
+ set_value = Quantity(
73
+ type=float,
74
+ description='The set value(s) (i.e. the intended values) set.',
75
+ shape=['*'],
76
+ unit='kelvin',
77
+ a_eln=ELNAnnotation(
78
+ component=ELNComponentEnum.NumberEditQuantity,
79
+ label='Set value',
80
+ defaultDisplayUnit='celsius',
81
+ ),
82
+ )
67
83
 
68
84
 
69
85
  class ThermalEvaporationHeater(PVDEvaporationSource):
@@ -102,11 +118,11 @@ class ThermalEvaporationSource(PVDSource):
102
118
  m_def = Section(
103
119
  a_plot=dict(
104
120
  x=[
105
- 'impinging_flux/time',
121
+ 'impinging_flux/:/time',
106
122
  'vapor_source/temperature/time',
107
123
  ],
108
124
  y=[
109
- 'impinging_flux/value',
125
+ 'impinging_flux/:/value',
110
126
  'vapor_source/temperature/value',
111
127
  ],
112
128
  lines=[
@@ -134,8 +150,8 @@ class ThermalEvaporationStep(PVDStep):
134
150
  m_def = Section(
135
151
  a_plot=[
136
152
  dict(
137
- x='sources/:/impinging_flux/time',
138
- y='sources/:/impinging_flux/value',
153
+ x='sources/:/impinging_flux/:/time',
154
+ y='sources/:/impinging_flux/:/value',
139
155
  ),
140
156
  dict(
141
157
  x='sources/:/vapor_source/temperature/time',
@@ -173,8 +189,8 @@ class ThermalEvaporation(PhysicalVaporDeposition):
173
189
  links=['http://purl.obolibrary.org/obo/CHMO_0001360'],
174
190
  a_plot=[
175
191
  dict(
176
- x='steps/:/sources/:/impinging_flux/time',
177
- y='steps/:/sources/:/impinging_flux/value',
192
+ x='steps/:/sources/:/impinging_flux/:/time',
193
+ y='steps/:/sources/:/impinging_flux/:/value',
178
194
  ),
179
195
  dict(
180
196
  x='steps/:/sources/:/vapor_source/temperature/time',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nomad-material-processing
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary: A plugin for NOMAD containing base sections for material processing.
5
5
  Author-email: Hampus Näsström <hampus.naesstroem@physik.hu-berlin.de>, Andrea Albino <andrea.albino@physik.hu-berlin.de>, Sebastian Brückner <sebastian.brueckner@ikz-berlin.de>
6
6
  License: Apache License