nomad-material-processing 0.0.2__py3-none-any.whl
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.
- nomad_material_processing/__init__.py +159 -0
- nomad_material_processing/crystal_growth.py +79 -0
- nomad_material_processing/epitaxy.py +149 -0
- nomad_material_processing/physical_vapor_deposition.py +684 -0
- nomad_material_processing/utils.py +42 -0
- nomad_material_processing-0.0.2.dist-info/LICENSE +201 -0
- nomad_material_processing-0.0.2.dist-info/METADATA +234 -0
- nomad_material_processing-0.0.2.dist-info/RECORD +10 -0
- nomad_material_processing-0.0.2.dist-info/WHEEL +5 -0
- nomad_material_processing-0.0.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
from structlog.stdlib import (
|
|
20
|
+
BoundLogger,
|
|
21
|
+
)
|
|
22
|
+
from nomad.metainfo import (
|
|
23
|
+
Package,
|
|
24
|
+
Quantity,
|
|
25
|
+
Section,
|
|
26
|
+
)
|
|
27
|
+
from nomad.datamodel.metainfo.basesections import (
|
|
28
|
+
SynthesisMethod,
|
|
29
|
+
CompositeSystem,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
m_package = Package(name='Material Processing')
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class Substrate(CompositeSystem):
|
|
36
|
+
'''
|
|
37
|
+
A thin free standing sheet of material. Not to be confused with the substrate role
|
|
38
|
+
during a deposition, which can be a `Substrate` with `ThinFilm`(s) on it.
|
|
39
|
+
'''
|
|
40
|
+
m_def = Section()
|
|
41
|
+
thickness = Quantity(
|
|
42
|
+
type=float,
|
|
43
|
+
description='''
|
|
44
|
+
The (average) thickness of the substrate.
|
|
45
|
+
''',
|
|
46
|
+
a_eln={
|
|
47
|
+
"component": "NumberEditQuantity",
|
|
48
|
+
"defaultDisplayUnit": "millimeter"
|
|
49
|
+
},
|
|
50
|
+
unit="meter",
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
54
|
+
'''
|
|
55
|
+
The normalizer for the `Substrate` class.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
59
|
+
normalized.
|
|
60
|
+
logger (BoundLogger): A structlog logger.
|
|
61
|
+
'''
|
|
62
|
+
super(Substrate, self).normalize(archive, logger)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class ThinFilm(CompositeSystem):
|
|
66
|
+
'''
|
|
67
|
+
A thin film of material which exists as part of a stack.
|
|
68
|
+
'''
|
|
69
|
+
m_def = Section()
|
|
70
|
+
thickness = Quantity(
|
|
71
|
+
type=float,
|
|
72
|
+
description='''
|
|
73
|
+
The (average) thickness of the thin film.
|
|
74
|
+
''',
|
|
75
|
+
a_eln={
|
|
76
|
+
"component": "NumberEditQuantity",
|
|
77
|
+
"defaultDisplayUnit": "nanometer"
|
|
78
|
+
},
|
|
79
|
+
unit="meter",
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
83
|
+
'''
|
|
84
|
+
The normalizer for the `ThinFilm` class.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
88
|
+
normalized.
|
|
89
|
+
logger (BoundLogger): A structlog logger.
|
|
90
|
+
'''
|
|
91
|
+
super(ThinFilm, self).normalize(archive, logger)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class ThinFilmStack(CompositeSystem):
|
|
95
|
+
'''
|
|
96
|
+
A stack of `ThinFilm`(s). Typically deposited on a `Substrate`.
|
|
97
|
+
'''
|
|
98
|
+
m_def = Section()
|
|
99
|
+
substrate = Quantity(
|
|
100
|
+
type=Substrate,
|
|
101
|
+
description='''
|
|
102
|
+
The substrate which the thin film layers of the thin film stack are deposited
|
|
103
|
+
on.
|
|
104
|
+
''',
|
|
105
|
+
a_eln={
|
|
106
|
+
"component": "ReferenceEditQuantity"
|
|
107
|
+
},
|
|
108
|
+
)
|
|
109
|
+
layers = Quantity(
|
|
110
|
+
type=ThinFilm,
|
|
111
|
+
description='''
|
|
112
|
+
An ordered list (starting at the substrate) of the thin films making up the
|
|
113
|
+
thin film stacks.
|
|
114
|
+
''',
|
|
115
|
+
a_eln={
|
|
116
|
+
"component": "ReferenceEditQuantity"
|
|
117
|
+
},
|
|
118
|
+
shape=["*"],
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
122
|
+
'''
|
|
123
|
+
The normalizer for the `ThinFilmStack` class.
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
127
|
+
normalized.
|
|
128
|
+
logger (BoundLogger): A structlog logger.
|
|
129
|
+
'''
|
|
130
|
+
super(ThinFilmStack, self).normalize(archive, logger)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class SampleDeposition(SynthesisMethod):
|
|
134
|
+
'''
|
|
135
|
+
The process of the settling of particles (atoms or molecules) from a solution,
|
|
136
|
+
suspension or vapour onto a pre-existing surface, resulting in the growth of a
|
|
137
|
+
new phase. [database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
138
|
+
|
|
139
|
+
Synonyms:
|
|
140
|
+
- deposition
|
|
141
|
+
'''
|
|
142
|
+
m_def = Section(
|
|
143
|
+
links=[
|
|
144
|
+
"http://purl.obolibrary.org/obo/CHMO_0001310"
|
|
145
|
+
],)
|
|
146
|
+
|
|
147
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
148
|
+
'''
|
|
149
|
+
The normalizer for the `SampleDeposition` class.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
153
|
+
normalized.
|
|
154
|
+
logger (BoundLogger): A structlog logger.
|
|
155
|
+
'''
|
|
156
|
+
super(SampleDeposition, self).normalize(archive, logger)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
m_package.__init_metainfo__()
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
from structlog.stdlib import (
|
|
20
|
+
BoundLogger,
|
|
21
|
+
)
|
|
22
|
+
from nomad.metainfo import (
|
|
23
|
+
Package,
|
|
24
|
+
Section,
|
|
25
|
+
)
|
|
26
|
+
from nomad_material_processing import (
|
|
27
|
+
SampleDeposition,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
m_package = Package(name='Crystal Growth')
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class CrystalGrowth(SampleDeposition):
|
|
34
|
+
'''
|
|
35
|
+
Any synthesis method used to grow crystals.
|
|
36
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
37
|
+
'''
|
|
38
|
+
m_def = Section(
|
|
39
|
+
links=[
|
|
40
|
+
"http://purl.obolibrary.org/obo/CHMO_0002224"
|
|
41
|
+
],)
|
|
42
|
+
|
|
43
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
44
|
+
'''
|
|
45
|
+
The normalizer for the `CrystalGrowth` class.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
49
|
+
normalized.
|
|
50
|
+
logger (BoundLogger): A structlog logger.
|
|
51
|
+
'''
|
|
52
|
+
super(CrystalGrowth, self).normalize(archive, logger)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class CzochralskiProcess(CrystalGrowth):
|
|
56
|
+
'''
|
|
57
|
+
A method of producing large single crystals (of semiconductors or metals) by
|
|
58
|
+
inserting a small seed crystal into a crucible filled with similar molten
|
|
59
|
+
material, then slowly pulling the seed up from the melt while rotating it.
|
|
60
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
61
|
+
'''
|
|
62
|
+
m_def = Section(
|
|
63
|
+
links=[
|
|
64
|
+
"http://purl.obolibrary.org/obo/CHMO_0002158"
|
|
65
|
+
],)
|
|
66
|
+
|
|
67
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
68
|
+
'''
|
|
69
|
+
The normalizer for the `CzochralskiProcess` class.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
73
|
+
normalized.
|
|
74
|
+
logger (BoundLogger): A structlog logger.
|
|
75
|
+
'''
|
|
76
|
+
super(CzochralskiProcess, self).normalize(archive, logger)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
m_package.__init_metainfo__()
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
from structlog.stdlib import (
|
|
20
|
+
BoundLogger,
|
|
21
|
+
)
|
|
22
|
+
from nomad.metainfo import (
|
|
23
|
+
Package,
|
|
24
|
+
Section,
|
|
25
|
+
)
|
|
26
|
+
from nomad_material_processing import (
|
|
27
|
+
SampleDeposition,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
m_package = Package(name='Epitaxy')
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Epitaxy(SampleDeposition):
|
|
34
|
+
'''
|
|
35
|
+
A synthesis method which consists of depositing a monocrystalline film (from
|
|
36
|
+
liquid or gaseous precursors) on a monocrystalline substrate.
|
|
37
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
38
|
+
'''
|
|
39
|
+
m_def = Section(
|
|
40
|
+
links=[
|
|
41
|
+
"http://purl.obolibrary.org/obo/CHMO_0001336"
|
|
42
|
+
],)
|
|
43
|
+
|
|
44
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
45
|
+
'''
|
|
46
|
+
The normalizer for the `Epitaxy` class.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
50
|
+
normalized.
|
|
51
|
+
logger (BoundLogger): A structlog logger.
|
|
52
|
+
'''
|
|
53
|
+
super(Epitaxy, self).normalize(archive, logger)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class MolecularBeamEpitaxy(Epitaxy):
|
|
57
|
+
'''
|
|
58
|
+
A synthesis method which consists of depositing a monocrystalline film (from a
|
|
59
|
+
molecular beam) on a monocrystalline substrate under high vacuum (<10^{-8} Pa).
|
|
60
|
+
Molecular beam epitaxy is very slow, with a deposition rate of <1000 nm per hour.
|
|
61
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
62
|
+
|
|
63
|
+
Synonyms:
|
|
64
|
+
- MBE
|
|
65
|
+
- molecular-beam epitaxy
|
|
66
|
+
'''
|
|
67
|
+
m_def = Section(
|
|
68
|
+
links=[
|
|
69
|
+
"http://purl.obolibrary.org/obo/CHMO_0001341"
|
|
70
|
+
],)
|
|
71
|
+
|
|
72
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
73
|
+
'''
|
|
74
|
+
The normalizer for the `MolecularBeamEpitaxy` class.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
78
|
+
normalized.
|
|
79
|
+
logger (BoundLogger): A structlog logger.
|
|
80
|
+
'''
|
|
81
|
+
super(MolecularBeamEpitaxy, self).normalize(archive, logger)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class VaporPhaseEpitaxy(Epitaxy):
|
|
85
|
+
'''
|
|
86
|
+
A synthesis method which consists of depositing a monocrystalline film (from
|
|
87
|
+
vapour-phase precursors) on a monocrystalline substrate.
|
|
88
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
89
|
+
|
|
90
|
+
Synonyms:
|
|
91
|
+
- vapour-phase epitaxial growth
|
|
92
|
+
- vapor-phase epitaxy
|
|
93
|
+
- vapor phase epitaxy
|
|
94
|
+
- VPE
|
|
95
|
+
- vapour phase epitaxy
|
|
96
|
+
'''
|
|
97
|
+
m_def = Section(
|
|
98
|
+
links=[
|
|
99
|
+
"http://purl.obolibrary.org/obo/CHMO_0001346"
|
|
100
|
+
],)
|
|
101
|
+
|
|
102
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
103
|
+
'''
|
|
104
|
+
The normalizer for the `VaporPhaseEpitaxy` class.
|
|
105
|
+
|
|
106
|
+
Args:
|
|
107
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
108
|
+
normalized.
|
|
109
|
+
logger (BoundLogger): A structlog logger.
|
|
110
|
+
'''
|
|
111
|
+
super(VaporPhaseEpitaxy, self).normalize(archive, logger)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class MetalOrganicVaporPhaseEpitaxy(VaporPhaseEpitaxy):
|
|
115
|
+
'''
|
|
116
|
+
A synthesis method which consists of depositing a monocrystalline film, from
|
|
117
|
+
organometallic vapour-phase precursors, on a monocrystalline substrate.
|
|
118
|
+
[database_cross_reference: https://orcid.org/0000-0002-0640-0422]
|
|
119
|
+
|
|
120
|
+
Synonyms:
|
|
121
|
+
- OMVPE
|
|
122
|
+
- MOVPE
|
|
123
|
+
- metalorganic vapour phase epitaxy
|
|
124
|
+
- metal organic vapour phase epitaxy
|
|
125
|
+
- metalorganic vapor phase epitaxy
|
|
126
|
+
- organometallic vapor phase epitaxy
|
|
127
|
+
- metal-organic vapor-phase epitaxy
|
|
128
|
+
- metal organic vapor phase epitaxy
|
|
129
|
+
- metal-organic vapour-phase epitaxy
|
|
130
|
+
- organometallic vapour phase epitaxy
|
|
131
|
+
'''
|
|
132
|
+
m_def = Section(
|
|
133
|
+
links=[
|
|
134
|
+
"http://purl.obolibrary.org/obo/CHMO_0001348"
|
|
135
|
+
],)
|
|
136
|
+
|
|
137
|
+
def normalize(self, archive, logger: BoundLogger) -> None:
|
|
138
|
+
'''
|
|
139
|
+
The normalizer for the `MetalOrganicVaporPhaseEpitaxy` class.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
archive (EntryArchive): The archive containing the section that is being
|
|
143
|
+
normalized.
|
|
144
|
+
logger (BoundLogger): A structlog logger.
|
|
145
|
+
'''
|
|
146
|
+
super(MetalOrganicVaporPhaseEpitaxy, self).normalize(archive, logger)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
m_package.__init_metainfo__()
|