FET2DAtomisticParameterExtraction¶
- class FET2DAtomisticParameterExtraction(filename, object_id, channel_material_name, contact_material_name, channel_thickness, maxE, contact_orientation, channel_configuration, contact_configuration, run_pe=True, run_sb=True, number_of_processes_per_task=None, log_filename_prefix='')¶
Check configuration input.
- Parameters:
filename (str) – The full or relative filename path the study object should be saved to.
object_id (str) – The name of the study that the study object should be saved to within the file. This needs to be a unique name in this file.
channel_material_name (str) – The name of the channel material.
contact_material_name (str) – The name of the contact material.
channel_thickness (int) – The thickness of the channel in monolayers.
maxE (PhysicalQuantity of type energy) – The upper energy limit for valley detection. Determines the number of LocalBandstructures (NBands) that will be used for band parameter extraction. The algorithm will try to find at least one set of band parameters before this limit is used to break off the search.
contact_orientation (sequence of int) – The Miller indices for the contact surface towards the channel.
channel_configuration (
BulkConfiguration
) – The bulk configuration for the channel material.contact_configuration (
BulkConfiguration
) – The bulk configuration for the contact/metal material.run_pe (bool) – If True, the parameter extraction task will be performed. Default: True
run_sb (bool) – If True, the Schottky barrier extraction task will be performed. Default: True
number_of_processes_per_task (int | None |
ProcessesPerNode
) – The number of processes that will be used to execute each task. If the total number of process does not divide evenly into the tasks, some tasks may have less than this number of processes. If None, all available processes execute each task collaboratively.log_filename_prefix (str |
LogToStdOut
) – Filename prefix for the logging output of the study. IfLogToStdOut
, all logging will instead be sent to standard output.
- bandGap()¶
- Returns:
Calculated bandgap.
- Return type:
PhysicalQuantity of type energy
- channelMaterialName()¶
- Returns:
The name of the channel material.
- Return type:
str
- channelThickness()¶
- Returns:
The thickness of the channel in monolayers.
- Return type:
int
- contactMaterialName()¶
- Returns:
The name of the contact material.
- Return type:
str
- contactOrientation()¶
- Returns:
The Miller indices for the contact surface towards the channel.
- Return type:
sequence of int
- dependentStudies()¶
- Returns:
The list of dependent studies.
- Return type:
list of
Study
- electronAffinity()¶
- Returns:
Calculated electron affinity.
- Return type:
PhysicalQuantity of type energy
- extractionResults(heavyweight=False)¶
Returns all results for finished tasks.
- Parameters:
heavyweight (bool) – If True, reads heavyweight data from workflow tasks.
- Returns:
Results of finished tasks.
- Return type:
dict
- filename()¶
- Returns:
The filename where the study object is stored.
- Return type:
str
- logFilenamePrefix()¶
- Returns:
The filename prefix for the logging output of the study.
- Return type:
str |
LogToStdOut
- maxE()¶
- Returns:
The upper energy limit for valley detection.
- Return type:
PhysicalQuantity of type energy
- metatext()¶
- Returns:
The metatext of the object or None if no metatext is present.
- Return type:
str | None
- nlinfo()¶
Get only the printable results from the extraction results - plain text.
- Returns:
The study information.
- Return type:
dict
- nlinfoHtml()¶
Get only the printable results from the extraction results - rich text.
- Returns:
The study information.
- Return type:
dict
- nlprint(stream=None)¶
Print a string containing an ASCII table useful for plotting the Study object.
- Parameters:
stream (python stream) – The stream the table should be written to. Default:
NLPrintLogger()
- numberOfBands()¶
- Returns:
Calculated number of bands.
- Return type:
int
- numberOfProcessesPerTask()¶
- Returns:
The number of processes to be used to execute each task. If None, all available processes execute each task collaboratively.
- Return type:
int | None |
ProcessesPerNode
- numberOfProcessesPerTaskResolved()¶
- Returns:
The number of processes to be used to execute each task. Default values are resolved based on the current execution settings.
- Return type:
int
- objectId()¶
- Returns:
The name of the study object in the file.
- Return type:
str
- permittivity()¶
- Returns:
Calculated dielectric constant / permittivity.
- Return type:
float
- qatkBands()¶
- Returns:
Calculated QATK bands - input for SWB.
- Return type:
str
- saveToFileAfterUpdate()¶
- Returns:
Whether the study is automatically saved after it is updated.
- Return type:
bool
- schottkyBarrier()¶
- Returns:
Calculated Schottky barrier.
- Return type:
PhysicalQuantity of type energy
- setMetatext(metatext)¶
Set a given metatext string on the object.
- Parameters:
metatext (str | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.
- tasknameForResult(name)¶
Check for a particular result from this object, including anything in the workflow tasks.
- Parameters:
name (str) – The name of the result to get.
- Returns:
The name of the task that contains the result for the given name.
- Return type:
str
- thickness()¶
- Returns:
Calculated layer thickness in micrometers.
- Return type:
PhysicalQuantity of type length
- uniqueString()¶
Return a unique string representing the state of the object.
- update()¶
Run the calculations for the study object.
Note
Study objects behave differently from analysis objects. See the Study object overview for more details.
Usage Examples¶
Example 1. Perform an extraction of parameters and material properties in QuantumATK needed to run the Sentaurus Workbench model calibration and device characterization. The materials used are MoS2 for the 2D channel and gold for the contacts. The channel width is 1 ML.
from QuantumATK import *
from AddOns.FET2D.Study.FET2DAtomisticParameterExtraction import FET2DAtomisticParameterExtraction
# Channel configuration
# Set up lattice
lattice = Hexagonal(3.1881795204035988*Angstrom, 11.057859406824896*Angstrom)
# Define elements
elements = [Sulfur, Molybdenum, Sulfur, Sulfur, Molybdenum, Sulfur]
# Define coordinates
fractional_coordinates = [[ 0.333333333333, 0.666666666667, 0.609057255744],
[ 0.666666666667, 0.333333333333, 0.75 ],
[ 0.333333333333, 0.666666666667, 0.890942744256],
[ 0.666666666667, 0.333333333333, 0.109057255744],
[ 0.333333333333, 0.666666666667, 0.25 ],
[ 0.666666666667, 0.333333333333, 0.390942744256]]
# Set up configuration
channel_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# Contact configuration
# Set up lattice
lattice = FaceCenteredCubic(4.07825*Angstrom)
# Define elements
elements = [Gold]
# Define coordinates
fractional_coordinates = [[ 0., 0., 0.]]
# Set up configuration
contact_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# Define the Parameter Extraction Study Object.
parameter_extraction = FET2DAtomisticParameterExtraction(
filename='fet2d_parameter_extraction_1642514327.22.hdf5',
object_id='FET2DAtomisticParameterExtraction_0',
channel_material_name='MoS2',
contact_material_name='Gold',
channel_thickness=1,
maxE=1.1 * eV,
contact_orientation=(0, 0, 1),
channel_configuration=channel_configuration,
contact_configuration=contact_configuration,
log_filename_prefix_default='fet2d_parameter_extraction_',
)
# Start the calculations.
parameter_extraction.update()
# Extract the results.
parameter_extraction_results = parameter_extraction.extractionResults()
Starting configurations¶
In principle, any BulkConfiguration
can be used as the channel_configuration
and contact_configuration
, but care should be taken that the channel configuration can be meaningfully repeated in the C-direction and periodic in the A-B plane. Ideally, both the channel and contact configurations should also be kept to a minimal size for maximum computational efficiency.
Extended results¶
In addition to numerical material properties and model calibration parameters, FET2DAtomisticParameterExtraction
also contains extended results in the form of NLObjects. These can be queried from the FET2DAtomisticParameterExtraction
object using the extractionResults() method, which returns a dictionary:
mos2_band_structure = parameter_extraction.extractionResults()['bandstructure']
These can also be unpacked in Nanolab via the right-click context menu when a FET2DAtomisticParameterExtraction
is selected, and can be sent for further analysis in, e.g., the Builder, Viewer or a dedicated analyzer plugin.
Available NLObjects:
PE_bulk_configuration [
BulkConfiguration
] - The configuration of the 2D channel with an LCAO calculator, used for extracting most of the channel material parameters.bandstructure [
Bandstructure
] - The band structure of the PE_bulk_configuration.eigenvalues [
Eigenvalues
] - The eigenvalues of the PE_bulk_configuration.electron_density [
ElectronDensity
] - The electron density of PE_bulk_configuration, used to estimate the real channel thickness.hartree_difference_potential [
HartreeDifferencePotential
] - The potential used to calculate the dielectric constant of the 2D channel.PW_bulk_configuration [
BulkConfiguration
] - The configuration used to calculate the electron affinity of the 2D channel, with a plane-wave calculator.PW_DOS [
DensityOfStates
] - The density of states used to calculate the electron affinity.Ch_Ct_initial [
BulkConfiguration
] - The initial channel-contact interface configuration used calculate the Schottky barrier.Ch_Ct_interface [
BulkConfiguration
] - The geometry-optimized version of Ch_Ct_initial.fat_bandstructure [
FatBandstructure
] - The band structure used to calculate the Schottky barrier.
See also General on FET2D.