From 093c36f356d36195abf4285e67c51d703f3e7685 Mon Sep 17 00:00:00 2001 From: GarzonDiegoFEUP Date: Tue, 1 Oct 2024 14:49:33 +0200 Subject: [PATCH 1/2] Added sputtering source --- .../vapor_deposition/pvd/sputtering.py | 119 +++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py b/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py index 930f325..af0eac4 100644 --- a/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +++ b/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py @@ -39,13 +39,48 @@ from nomad.config import config +from nomad_material_processing.vapor_deposition.pvd.general import ( + SourcePower, + PhysicalVaporDeposition, + PVDEvaporationSource, + PVDSource, +) + +from nomad_material_processing.general import ( + Geometry, +) + +from nomad.datamodel.metainfo.annotations import ( + ELNAnnotation, + ELNComponentEnum, + Filter, + SectionProperties, +) + +from nomad.datamodel.data import ( + EntryData, +) + +from nomad.datamodel.metainfo.basesections import ( + CompositeSystem, + ReadableIdentifiers, + SystemComponent, +) + +from nomad.metainfo import ( + Datetime, + Quantity, + SchemaPackage, + Section, + SubSection, +) + m_package = SchemaPackage(name='Sputter Deposition') configuration = config.get_plugin_entry_point( 'nomad_material_processing.vapor_deposition.pvd:sputtering_schema', ) - class SputterDeposition(PhysicalVaporDeposition): """ A synthesis technique where a solid target is bombarded with electrons or @@ -77,5 +112,87 @@ def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None: """ super().normalize(archive, logger) +class Magnetron(PVDEvaporationSource): + """ + A representation of the magnetron device. + """ + + m_def = Section( + a_plot=dict( + x='power/time', + y='power/value', + ), + ) + + power = SourcePower() + + Description = Quantity( + type=str, + a_eln=ELNAnnotation( + component='RichTextEditQuantity', + ), + ) + +class SputteringTarget(CompositeSystem, EntryData): + """ + A representation of the target material used in sputtering. It cointains the target ID, the delivery date and the actual date where the target was installed inside the chamber. + """ + + m_def = Section(a_eln={'hide': ['datetime']}) + + target_id = SubSection( + section_def=ReadableIdentifiers, + ) + + geometry = SubSection( + section_def=Geometry, + description='Section containing the geometry of the target.', + ) + + delivery_date = Quantity( + type=Datetime, + a_eln=ELNAnnotation( + component=ELNComponentEnum.DateEditQuantity, + ), + ) + + installation_date = Quantity( + type=Datetime, + a_eln=ELNAnnotation( + component=ELNComponentEnum.DateEditQuantity, + ), + ) + +class SputteringTargetComponent(SystemComponent): + + m_def = Section(a_eln={'hide': ['mass_fraction', 'mass']}) + + lab_id = Quantity( + type=str, + a_eln=ELNAnnotation( + component=ELNComponentEnum.StringEditQuantity, + label='Target ID', + ), + ) + system = Quantity( + type=SputteringTarget, + a_eln=ELNAnnotation( + component=ELNComponentEnum.ReferenceEditQuantity, + ), + ) + +class SputteringSource(PVDSource): + """ + A representation of both the magentron and the target material, which works as a source of atoms for sputtering. + """ + + m_def = Section(a_eln=ELNAnnotation(hide=['name'], + properties=SectionProperties(visible=Filter(exclude= + ['impinging_flux', 'vapor_molar_flow_rate']))), + links=['http://purl.obolibrary.org/obo/CHMO_0002896'], ) + + vapor_source = SubSection(section_def=Magnetron, + repeats=True) + m_package.__init_metainfo__() From 775a83ac57ec2cf6494cb8cdaf12d4829400ae75 Mon Sep 17 00:00:00 2001 From: Andrea Albino Date: Tue, 1 Oct 2024 14:54:32 +0200 Subject: [PATCH 2/2] ruff linting --- .../vapor_deposition/pvd/sputtering.py | 60 ++++++++++--------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py b/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py index af0eac4..a3993ec 100644 --- a/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +++ b/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py @@ -38,49 +38,41 @@ ) from nomad.config import config - -from nomad_material_processing.vapor_deposition.pvd.general import ( - SourcePower, - PhysicalVaporDeposition, - PVDEvaporationSource, - PVDSource, -) - -from nomad_material_processing.general import ( - Geometry, +from nomad.datamodel.data import ( + EntryData, ) - from nomad.datamodel.metainfo.annotations import ( ELNAnnotation, ELNComponentEnum, Filter, SectionProperties, ) - -from nomad.datamodel.data import ( - EntryData, -) - from nomad.datamodel.metainfo.basesections import ( CompositeSystem, ReadableIdentifiers, SystemComponent, ) - from nomad.metainfo import ( Datetime, - Quantity, - SchemaPackage, - Section, SubSection, ) +from nomad_material_processing.general import ( + Geometry, +) +from nomad_material_processing.vapor_deposition.pvd.general import ( + PVDEvaporationSource, + PVDSource, + SourcePower, +) + m_package = SchemaPackage(name='Sputter Deposition') configuration = config.get_plugin_entry_point( 'nomad_material_processing.vapor_deposition.pvd:sputtering_schema', ) + class SputterDeposition(PhysicalVaporDeposition): """ A synthesis technique where a solid target is bombarded with electrons or @@ -112,6 +104,7 @@ def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None: """ super().normalize(archive, logger) + class Magnetron(PVDEvaporationSource): """ A representation of the magnetron device. @@ -133,9 +126,12 @@ class Magnetron(PVDEvaporationSource): ), ) + class SputteringTarget(CompositeSystem, EntryData): """ - A representation of the target material used in sputtering. It cointains the target ID, the delivery date and the actual date where the target was installed inside the chamber. + A representation of the target material used in sputtering. It cointains the target + ID, the delivery date and the actual date where the target was installed + inside the chamber. """ m_def = Section(a_eln={'hide': ['datetime']}) @@ -163,8 +159,8 @@ class SputteringTarget(CompositeSystem, EntryData): ), ) -class SputteringTargetComponent(SystemComponent): +class SputteringTargetComponent(SystemComponent): m_def = Section(a_eln={'hide': ['mass_fraction', 'mass']}) lab_id = Quantity( @@ -181,18 +177,24 @@ class SputteringTargetComponent(SystemComponent): ), ) + class SputteringSource(PVDSource): """ - A representation of both the magentron and the target material, which works as a source of atoms for sputtering. + A representation of both the magentron and the target material, which works as + a source of atoms for sputtering. """ - m_def = Section(a_eln=ELNAnnotation(hide=['name'], - properties=SectionProperties(visible=Filter(exclude= - ['impinging_flux', 'vapor_molar_flow_rate']))), - links=['http://purl.obolibrary.org/obo/CHMO_0002896'], ) + m_def = Section( + a_eln=ELNAnnotation( + hide=['name'], + properties=SectionProperties( + visible=Filter(exclude=['impinging_flux', 'vapor_molar_flow_rate']) + ), + ), + links=['http://purl.obolibrary.org/obo/CHMO_0002896'], + ) - vapor_source = SubSection(section_def=Magnetron, - repeats=True) + vapor_source = SubSection(section_def=Magnetron, repeats=True) m_package.__init_metainfo__()