Release notes
What changed in each release of QTCAD®, newest first.
QTCAD® 2.2.6
Sped up the adaptive meshing procedure.
Fixed QTCAD® Builder
rename_groupanddissolve_physical_groupmethods, which could leave stale physical group names in gmsh. This fix works around a known gmsh issue (https://gitlab.onelab.info/gmsh/gmsh/-/work_items/1921).
QTCAD® 2.2.5
Fixed a bug in
Device.set_attrwhere setting an attribute (e.g. doping) on a specific region could incorrectly reset the function-defined value everywhere else on the mesh.Improved convergence of the Poisson solver on symmetric meshes by picking a better initial guess for the full-mesh solve.
Fixed a bug that caused progress bars in packaged QTCAD® installations (e.g. in the many-body, Coulomb, quantum-well, and FEM-interpolation solvers) to crash when run from an interactive terminal.
Fixed a bug in
analysis.plot_slicethat caused the colorbar to fall out of sync with the plotted colors.Added support for customizing the suffix used to name mirrored regions and boundaries in symmetric meshing; this suffix was previously hardcoded to
_mirrored.
QTCAD® 2.2.4
QTCAD® Builder:
Added new bounding-box utilities.
get_bboxretrieves the bounding box of a physical group or an entire model;wrap_in_bboxandwrap_in_bbox_surfacecreate padded bounding volumes and surfaces; andextrude_mask_bboxextrudes a mask’s bounding box and intersects it with the model.Improved the reliability of growth, fragmentation, physical-group preservation, and quick-meshing operations for complex geometries.
Added two tutorials demonstrating how to construct 3D superconducting-qubit geometries from 2D layout files: one featuring two coupled Xmons on a single chip and another featuring a flip-chip device.
Quantum Metal integration:
Added a tutorial demonstrating the design and Maxwell eigenmode simulation of a flip-chip superconducting-qubit device containing an Xmon and a
GeneralizedReadoutResFCreadout resonator.Improved support for planar and flip-chip designs in the QTCAD and Gmsh renderers.
Added
QQTCADRenderer.export_script, which exports a renderer setup as a standalone script that can be adapted to run capacitance and eigenmode simulations directly with QTCAD®.Added support for specifying the z-coordinate of field slices in
QQTCADRenderer.plot_eigenmodesandQQTCADRenderer.plot_eigenmode.Added
GeneralizedReadoutResFC, a new QComponent.
Removed the deprecated
qtcad.qubit.edsrmodule. EDSR workflows now useqtcad.device.operators, as demonstrated in the tutorials.Promoted warning indicating that a mesh entity is associated with multiple physical groups to an error.
QTCAD® 2.2.3
The energy-participation-ratio analysis module,
qtcad.device.epr, now also supports the computation of quality factors limited by surface dielectric losses viaSurfaceDielectricSpec. Specialized models for thin layers of oxide or contaminants at the interface between different regions (metal–air, metal–substrate and substrate–air) are available.Updated tutorial ‘5. Maxwell eigenmode extraction for an Xmon qubit: inductor ports and EPR analysis’ to showcase the usage of
DielectricSpecandSurfaceDielectricSpecto account for dielectric loss when computing the relaxation time T₁.Added support in
submesh.show()andsymmetric_mesh.show()for visualizing 3D meshes with the QTCAD® Visualizer.Fixed a file-writing bug that could cause capacitance and Maxwell equation solvers to crash for simulations with large run times or large meshes.
Improved the naming of arrays saved in VTU files by Maxwell solvers. This fixes a bug that could cause
plot_eigenmodesin Quantum Metal to crash for simulations involving a single Maxwell eigenmode.Made the QTCAD® Builder
growandvisualizemethods more robust for complex geometries.
QTCAD® 2.2.2
Fixed issue with
device.show_linecutswhen visualizing quantities represented over local nodes.Fixed unit labels for certain density quantities when visualizing them.
Fixed an issue that could reduce the number of processes used by Maxwell and Josephson-energy solvers on certain Linux systems when
SolverParams.max_cpuswas not set.Removed use of deprecated matplotlib functionality.
Fixed issue in the QTCAD® CLI when copying the examples and README.
QTCAD® 2.2.1
Maxwell equations solver:
Added support for RLC ports with nonzero conductance in the driven Maxwell equations solver.
Josephson-energy solver:
Improved overall stability and performance.
Added support for selecting different integration schemes:
adaptive,fast, andauto. The default integration scheme is set toauto, which compares adaptive and fast and automatically selects the optimal scheme.Fixed minor issues affecting plots of energy distributions.
QTCAD® Builder:
Significantly improved performance for devices with geometries similar to superconducting qubit chips.
Fixed a label-assignment issue that occurred when placing text objects on top of polygons with holes, which are commonly found in layout files for superconducting qubit chips.
Added new optional arguments to
quick_mesh:mesh_algorithm,mesh_algorithm_3d,threads, andshow_gmsh_output. Strongly recommend usingmesh_algorithm_3d=qtcad.builder.MeshAlgorithm3D.HXTfor geometries similar to superconducting qubit chips, as it can drastically reduce meshing time.
Improvements for visualization:
Added a new
Mesh.show()method for visualizing meshes.Fixed display issues in the region and facet display controls.
Quantum Metal update:
Following the rebranding of the ‘Qiskit Metal‘ project into ‘Quantum Metal’, we have synchronized our fork that adds QTCAD® as a renderer, now available at https://github.com/nanoacademic/quantum-metal, and updated our tutorials.
Users should refer to the new installation instructions on our website.
Importing
qiskit_metalis still possible, but users are encountraged to update their scripts and replaceqiskit_metalimports withquantum_metalimports.
QTCAD® 2.2.0
New installation instructions. Please visit https://docs.nanoacademic.com/qtcad/installation/qtcad/ for details.
New spin-qubit modeling features and improvements in the
qtcad.devicepackage:Added a new
electron_kp modulefor encoding of Hamiltonians up to quadratic order in momentum. New workflows using this module:A practical application for studying position-dependent valley splittings.
A tutorial for modeling topologically protected bound states.
Added support for setting a uniform valley splitting.
Added new features to the Schrödinger-Poisson solver:
Ability to specify a fixed degeneracy for bound-state orbitals.
Support for electron states with band indices, such as spin or valley.
Optimized Coulomb integrals evaluation. Up to 10x performance improvement in exact 3D exchange calculations!
Added a new practical application for simulating hole-based double quantum dots in germanium.
Updated the symmetric meshing process to better handle edge cases.
Fixed a bug in the Schrödinger solver that could cause a crash when using the
guessparameter for holes, also resolving related issues in lever-arm matrix calculations.Added the
toglobalMeshmethod for converting quantities from local nodes to global nodes.Introduced new materials:
Added support for quaternary alloys to the
device.materialsmodule, enabling users to implement custom quaternary alloy materials for their simulations.Added two new materials to the
device.materialsmodule: silicon nitride (Si3N4) and silicon oxycarbonitride (SiOCN), the latter being a quaternary alloy with user specified O, C, and N concentrations.Refined the Si/SiGe and Ge/SiGe band-alignment parameters stored in the
SiGe_DFT,Si_strained_on_SiGe, andGe_strained_on_SiGematerials of thedevice.materialsmodule with an expanded first-principles atomistic dataset, improving SiGe bandgap trends, capturing the known Δ-to-L crossover near high Ge concentration, and improving agreement with experimental band-offset references.
New spin-qubit modeling features and improvements in the
qtcad.atomspackage:Implemented a method to compute the effective g-factor for an arbitrary magnetic field orientation in
atoms.g_tensor.Solver.get_g_factor.Implemented a new algorithm for the atomistic tight-binding Schrödinger equation solver which uses around 40% less memory for sufficiently large systems, which may be enabled by setting the
memory_modeattribute of theqtcad.atoms.schrodinger.SolverParamsobject to"low".Implemented support for writing internal data structures of the atomistic tight-binding Schrödinger equation solver to disk, thereby enabling simulations of large systems that could otherwise not be performed with limited memory, albeit at the cost of increased runtime.
Wrote new entry in the FAQ section of the online documentation addressing memory-usage of the atomistic tight-binding Schrödinger equation solver.
New features and improvements to the
qtcad.builderpackage:Speed Optimizations: Significantly faster model fragmentation and complex layout file importing.
Sub-Volume Isolation: Added a
clip_modelmethod to export and visualize specific model sections.Geometry Controls: Added non-uniform polygon scaling,
align_z_with, andundo_rotationmethods.Layout Support: Better hole identification in GDS/OASIS files and support for native GDS paths.
Padding Update: Introduced
pad_group(which supports padding both 2D and 3D geometries) and deprecatedpad_volume(now reduced to an alias signature).Shape Growth: Removed the legacy
polygonizeargument and transitioned to a stable shape-growing method based on CGAL alpha wrapping.Removed the obsolete
finalizemethod.grow(…) Signature: Addedgrow_complexity,grow_accuracy,min_curve_nodes; removed legacy parameters.load_layout(...) Signature: Addedpath_tolerance`
New superconducting-circuit modeling features and improvements in the
qtcad.devicepackage:Josephson-junction energy solver,
qtcad.transport.josephson_junction, leveraging non-equilibrium Green’s functions (NEGF) and the Ambegaokar–Baratoff relation. This solver considers the geometry of the Josephson junction, along with a statistical model for the roughness of the Al/AlOx interfaces, and outputs the distribution of Josephson energies for an ensemble of junction samples. It also supports automated extraction of geometry parameters from 2D layout files, ensuring that the simulated geometry perfectly matches the intended device layout, bridging the gap between physical layout design (CAD) and numerical simulation. This new feature provides a unique and invaluable tool to study Josephson energy variability for realistic foundry processes.Driven Maxwell solver with adaptive meshing and microwave network analysis capabilities (S and Z matrices)
Minor bugfixes in the Maxwell eigenmode solver
get_inductor_currentmethod in Device classget_inductancemethod in theDeviceclassImprovements to
energy_e,energy_e_elems,energy_b, andenergy_b_elemsmethods in theDeviceclass.New EM post-processing module: energy-participation-ratio analysis,
qtcad.device.epr. Dressed frequencies, the qubit anharmonicity and Kerr coefficients, among others, can now be computed directly from QTCAD’s Maxwell eigenmode solver.
New features and improvements for visualization and postprocessing:
Added multiple new post-processing options
Slices
Linecuts
Isosurfaces
Supports native view, jupyter notebooks, and headless servers
Try it out with
device.show()! Please let us know how to continue developping this feature.
QTCAD® 2.1.4
Updated the boundary condition for
Device.new_inductor. The boundary condition no longer enforces a fixed direction for the surface current density and instead allows current to flow in any tangential direction. This resolves numerical issues in the Maxwell eigenmode solver that occurred for certain geometries due to the previously unphysical constraint.Improved robustness of the Maxwell eigensolver. Enhancements include updating the minimum frequency estimate after each adaptive meshing iteration to improve solver stability.
Expanded layout import capabilities in
Builder.Buildernow supports importing shapes with holes and intersecting line segments from GDS/OASIS layout files.Fixed a bug in
leverarm_matrixthat caused a crash during hole calculations.Updated Gmsh behavior in tutorials. Tutorials have been modified to ignore custom user-specified Gmsh options, preventing inconsistent mesh sizes across different machines and system configurations. Future updates will transition to QTCAD’s Builder workflow to fully eliminate these conflicts entirely.
QTCAD® 2.1.3
Fixed a bug in the Maxwell solver that caused the automatically estimated lower bound of the eigenfrequency spectrum to be too high. This affected only simulations ran on Windows machines and if
min_freqwas automatically inferred (default behaviour) and not set by the user.Extended the beta warning for RLC ports to also cover inductive ports, which are likewise in beta.
Updated the definition of electromagnetic field energy. Energy outputs are now reported as time-averaged values. The following
Devicemethods were updated accordingly:energy_e,energy_e_elems,energy_b,energy_b_elems, andem_energy_per_elem.Improved the robustness of the atomistic tight-binding Schrödinger solver.
Changed the format of the g-tensor to be an array of shape
(4, 3)(consistent with the documentation) replacing the previous(3, 4)representation.Renamed the keyword argument used to suppress warnings when invoking the
qtcad.builder.Builder.growoperation to make its purpose clearer.
QTCAD® 2.1.2
Added support in the 3D Schrödinger–Poisson solver for simulations with a fixed number of confined holes.
Resolved a bug that caused crashes in the atomistic tight-binding Schrödinger solver when using periodic boundary conditions.
Display additional information: the estimated lower bound for eigenmode frequencies in the Maxwell eigenmode solver.
QTCAD® 2.1.1
Added support to RLC rectangular lumped ports to the frequency-domain finite-element Maxwell solver. Eigenmode extraction in the presence of lossy ports is now possible.
Restored support for superconducting qubit modeling on Windows systems.
Restored support of the QTCAD–Qiskit Metal integration on MacOS systems with Intel processors.
Improvements to the tutorials on capacitance matrix and Maxwell eigenmode extraction with the Qiskit Metal workflow.
New tutorial showcasing an eigenmode simulation of a transmon qubit (Xmon) with a Josephson junction approximated by an inductive port using the Qiskit Metal workflow. It also showcases the new visualization methods of QTCAD’s renderer:
QQTCADRenderer.plot_eigenmodesandQQTCADRenderer.plot_eigenmode.New section in the FD-SOI SET practical application demonstrating how to simulate the use of an SET quantum dot as a charge sensor.
QTCAD® 2.1.0
NEW! Introduction of the QTCAD® Builder package for 3D device model construction. Built as a wrapper around Gmsh, QTCAD® Builder simplifies many common constructive operations and always produces conformal meshes. This is done by implementing the following solid modeling operations:
Extrusion
Deposition
Growth
Etching
Cutting
NEW! 3D quantum device visualizer. We have added a brand-new 3D visualizer to streamline pre- and post-processing workflows. Includes a web browser- based workflow as well as a Python Notebook Widget. It can now display full device geometry, including boundaries, regions, and materials, giving you clearer insight into your models. It has successfully been tested on fine meshes up to 500k nodes. This first release focuses on core functionality, and we would love your feedback; let us know what features you would like to see next!
Visualise 3D Devices in browser windows and python notebooks. Call the show method on your device instance. (e.g.
device.show())View 2D attributes like boundaries and facets
View 3D attributes by region or materials
Displays the meshing of the devices
New features to the Schrödinger-Poisson solver:
Added the ability to fix the number of charges localized in the quantum subdevice, enabling many-body energy calculations for a specified charge configuration.
Introduced an option to restrict the solver to quantized charges only, improving numerical stability and accelerating convergence.
Possibility to replace the non-linear Poisson solver by a linear Poisson solver in the self-consistent Schrödinger-Poisson loop. This is useful when a quantum dot is not expected to be affected by any reservoir, e.g., at a source or drain.
Implemented a new adaptive mixing strategy that further enhances convergence performance.
Developed a workflow for simulating single-electron transistor (SET) characteristics within the constant-interaction model, including charging energies and capacitance.
New materials:
Added new materials to the
device.materialsmodule,SiGe_DFT,Si_strained_on_SiGe, andGe_strained_on_SiGe, which respectively model SiGe alloys, epitaxially-strained Si films grown on SiGe buffers, and epitaxially-strained Ge films grown on SiGe buffers. The band gap and band alignment parameters for these materials were obtained via state-of-the-art density functional theory calculations based on Nanoacademic Technologies’s RESCU package. These three new materials are now covered in theband_alignment.pytutorial. These new materials enable accurate finite-element modeling of electrostatics and quantum confinement in Si/SiGe and Ge/SiGe devices.Added new material
GeSnto thedevice.materialsmodule for finite-element modeling of GeSn alloys with arbitrary Sn concentrations between 0 and 0.3 (the range over which GeSn is a semiconductor).Also added atomistic TB and Keating VFF model parameters for GeSn alloys in the
atoms.materialsmodule for atomistic modeling of GeSn.
New features and improvements in the
qtcad.atomspackage:Periodic boundary conditions (PBCs) along one, two, or three directions of space may now be imposed when creating an atomic structure (
qtcad.atoms.Atomsandqtcad.atoms.SubAtomsobjects).Generalized the Keating valence force-field (VFF) model solver to account for PBCs, thereby enabling epitaxial atomic structure relaxation, which typically better models strain in heterostructures than freestanding relaxation (i.e. relaxation without PBCs).
Generalized the atomistic tight-binding (TB) Schrödinger equation solver to account for PBCs and crystal momentum, in the absence of magnetic fields.
Significantly generalized the atomic structure builders (
qtcad.atoms.Atomsandqtcad.atoms.SubAtomsobject constructors). While atomic structures could previously only be box-like in shape and involve variations in chemical composition in layers, an atomic structure may now be instantiated via a mesh and thus take any shape. The physical volumes of this mesh may define arbitrarily shaped regions of the atomic structure in which chemical composition may be altered. Regions may also be defined via bool-valued functions of Cartesian coordinates specifying which points in space are inside the region.The concentration of chemical species in a region of an atomic structure may now be specified via a function of Cartesian coordinates, thereby enabling non-trivial alloy concentration profiles. For example, this may be used to model the diffusion of Ge atoms in Si wells interposed between SiGe barriers.
Implemented logarithmic sampling of wavevectors when generating a rough surface (
qtcad.atoms.rough_surface.RoughSurfaceobject) to properly sample modes at all relevant length scales with reduced computational cost, which is needed for practical modeling of rough surfaces with very large footprints (e.g. for electron shuttling devices).Implemented valley phase calculator in
qtcad.atoms.analysis.get_valley_phase, which may be used in tandem with valley splitting calculations to describe valley dynamics (e.g. to model valley leakage during electron shuttling).Implemented various convenience functions/methods: the
qtcad.atoms.Atoms.get_potentialto evaluate the electric potential on the atomic positions; theqtcad.atoms.Atoms.add_to_potentialto add arbitrary contributions to the electric potential, e.g. to model charge traps; theqtcad.atoms.schrodinger.Solver.get_hamiltonian_phito evaluate the contribution of this potential to a TB Hamiltonian; the saving and loading ofqtcad.atoms.rough_surface.RoughSurfaceobjects.Restricted atomic structures (
qtcad.atoms.SubAtomsobjects) may now be instantiated without removing surface atoms with fewer than two nearest neighbours, which may be useful for visualization purposes.Made cosmetic improvements to 2D and 3D plots of rough surfaces with large aspect ratios.
Changed default values of root-mean-square height, minimal sampled wavelength, maximal sampled wavelength, and number of sampled wavevectors for rough surface generator to more realistic and experimentally relevant values.
Added warning message when attempting to solve the TB Schrödinger equation on an atomic structure with electric potential uniformly equal to zero.
Fixed crash that would arise when calling the
qtcad.atoms.Atoms.print_energiesmethod prior to running the TB Schrödinger equation solver.Fixed crash that would arise when performing an atomic structure relaxation on a heterostructures of the type A-B-C with no Keating VFF model parameters for A-C bonds.
Significantly optimized (~100x) the linear interpolation of the electric potential (or any other quantity) from a finite-element mesh to the atomic positions, thereby enabling accurate treatment of gate-induced potential in large-scale multiscale simulations (e.g. for electron shuttling).
Miscellaneous optimizations, e.g. in the instantiation of a
qtcad.atoms.SubAtomsobject and in the assembly of a TB Hamiltonian.Miscellaneous clarity and cosmetic improvements to docstrings.
Miscellaneous minor bugfixes.
New features and improvements to the
qtcad.devicefor superconducting-qubit modeling:Added support to inductive rectangular lumped port to the frequency-domain finite-element Maxwell solver: extraction of transmon eigenmodes is now possible.
Added support to export fields as VTU files (new default).
Improved support for the simulation of elaborate systems and the computation of a large number of eigenmodes.
Quality-of-life improvements: control over CPUs used by the Maxwell solver and access to the files written by the capacitance and Maxwell solvers for programmatical post-processing.
Tutorial showcasing eigenmode simulation of an Xmon with a Josephson junction approximated by an inductive port.
Improved the tutorial on eigenmodes of a meandered resonator, which now features a more realistic design.
Miscellaneous features and improvements in the
qtcad.devicepackage:Made the periodic boundary condition implementation more robust, now allowing periodicity to be specified along two directions.
Improved the tutorial on periodic boundary conditions by using more realistic physical dimensions.
Region-specific index output for geometries and materials, enabling direct visualization of meshes and material layouts in ParaView without running a solver.
Clearer docstrings and documentation, along with more transparent errors and warnings.
Added a method to extract and save data from arbitrary 2D slices of 3D meshes.
Added support for compressing meshes from
.mshand.msh4into.h5/.hdf5, providing smaller file sizes and full compatibility with adaptive meshing tool.Support for multilayer boundary conditions, allowing inputs as sequences of potentials and lists.
Added an optional subsampling feature that allows saved data to be interpolated onto coarser meshes to reduce storage requirements.
Expanded
.vtusupport to include 2D meshes.Added a new Frequently Asked Questions section to the documentation website.
Added support for adaptive symmetric meshing, along with a new tutorial explaining its use.
Introduced
saveandloadmethods for solvers, enabling quick and flexible reproduction of results.
Superconducting qubit modeling not supported on Windows systems in QTCAD 2.1.0. A patch release is coming soon.
Qiskit-metal integration not supported on MacOS with Intel processors in QTCAD 2.1.0 A patch release is coming soon.
QTCAD® 2.0.3
Fixed a bug pertaining to the treatment of the Hurst exponent in the rough surface generator due to an algebraic error in the published formula on which our implementation was originally based. Our implementation now reflects the corrected theory.
Fixed bug related to calling the
set_strainmethod on aSubDeviceobject.Fixed bug related to calling the
align_bandsmethod of aDeviceobject containing regions with nomacro_diffandvlnce_band_macroattributes.
QTCAD® 2.0.2
Added support for using QTCAD® as a Qiskit Metal renderer on macOS systems.
Updated tutorial “21. Periodic boundary condition in a quantum dot in FD-SOI” to properly account for boundary conditions when leveraging the linearity of the Poisson solver.
Fixed a bug in the energy computation for electric (
qtcad.device.device.Device.energy_e) and magnetic (qtcad.device.device.Device.energy_b) fields when region ordering in the mesh file differs from that in the QTCAD® script.Minor documentation updates.
QTCAD® 2.0.1
Implemented unit cell tiling algorithm for atomic structure builder with reduced memory footprint and computational cost. This new algorithm may produce atomic structures which differ from those produced by the legacy algorithm by a global shift of atomic positions and in surface termination. For backward compatibility, the legacy algorithm may be used, optionally.
Minor documentation and tutorial updates.
QTCAD® 2.0.0
This is a major release that significantly expands the scope of QTCAD® along the directions that follow.
NEW! Introduction of the QTCAD® Atoms package for multiscale simulations of quantum dots (QDs) using the atomistic tight-binding (TB) method. QTCAD® Atoms includes:
A builder to model the atomic structure of QDs which includes realistic nonidealities such as strain, random alloying, and surface roughness using a random rough surface generator.
An electronic structure solver based on the TB model and a sparse eigensolver. This solver captures magnetic fields, spin-orbit coupling and the effect of strain at the atomic scale.
The builder and electronic structure solver support Si, Ge, and SiO2 materials, in addition to SiGe alloys with arbitrary composition.
Various analysis tools such as atomistic wavefunction visualizers, matrix-element calculators, and g-tensor calculators.
Interfaces to QTCAD®’s FEM modeling capabilities, such as the inclusion of a gate-induced confinement potential computed within the FEM into the TB Hamiltonian produced by QTCAD® Atoms, thereby enabling multiscale simulations.
Tutorials highlighting the various features of QTCAD® Atoms and their proper usage. These tutorials cover multiscale modeling of Si/SiGe and FD-SOI quantum dots, valley physics, quantum control, and g-tensor calculations.
NEW! Introduction of superconducting circuit modeling features:
A capacitance matrix solver based on an adaptive-mesh linear Poisson solver. This adaptive-mesh solver is optimized to handle numerical challenges that typically arise when modeling superconducting circuits, such as sharp corners and embedded 2D surfaces.
A frequency-domain finite-element Maxwell solver that may be used to compute the eigenmodes of superconducting resonators and cavities.
Tutorials for capacitance matrix and Maxwell eigenmode calculations.
Tutorials for usage of QTCAD® as a Qiskit Metal renderer.
Improvements to finite-element spin-qubit modeling:
Periodic boundary conditions for the linear and non-linear Poisson solvers.
A new tutorial applying periodic boundary conditions to describe shuttling in a FD-SOI quantum dot structure.
The capability to implement a mirrored mesh.
Added support to the Friesen model in the Multi-Valley Effective-Mass Theory (MVEMT) solver, which complements the previously-available Shindo-Nara model.
Updated several dependency versions (e.g., Python, MKL, NumPy, SciPy).
Added support for
.vtmfiles to enable visualization of more complex datasets in ParaView. Using.vtmfiles, it is possible to break down visualization into device regions.Added the possibility to specify the maximal characteristic length in certain regions of a device when using the adaptive-mesh linear Poisson solver.
More transparent error messages.
The following API changes were made that are not backward compatible with versions prior to 2.0:
Dropped support for brute-force Coulomb integrals calculations. This legacy method was the only supported method until version 1.5, in which Coulomb integrals filtering method were introduced. In version 1.5, the initial method became known as the
"basic"filtering method, while the new technique was called"extensive"filtering. Starting from version 2.0,"basic"filtering is not supported anymore.Dropped direct imports of
device,qubit, andtransportmodules which were deprecated but still allowed with a warning until version 1.5.2. It is now mandatory to importqtcad.device,qtcad.qubit, andqtcad.transportmodules instead.Moved the solver parameter that controlled the effective mass in the Schrödinger solver to a setter in the device.
In the adaptive non-linear Poisson solver, names of the solver parameters
dot_regionandh_dotwere changed torefined_regionandh_refined, respectively. This is because these have a meaning that differs from the dot region stored in a Device object. Indeed, the dot region in a Device object indicates a region in which classical charges are set to zero. By contrast, in the non-linear Poisson solver parameters, we refer to a region in which a maximum mesh characteristic length is set, which often coincides with the dot region, but not always.
QTCAD® 1.5.2
More robust handling of different
scipyversions
QTCAD® 1.5.1
Updated the basis convention used for holes in:
the Bir-Pikus Hamiltonian which models strain
the effective hole Zeeman Hamiltonian
spin-3/2 matrices which can be loaded from /qtcad/src/qtcad/device/pauli.py
The new convention is chosen to be consistent with that of the Luttinger-Kohn-Foreman Hamiltonian used. We expect hole calculations involving inhonomogeous in-plane strain, shear strain, and/or in-plane magnetic fields to be slightly affected.
QTCAD® 1.5.0
Accelerated Coulomb integrals using a filtering method that enables dropping terms that contribute negligibly to the many-body Hamiltonian. Until memory becomes saturated, this approach can achieve a complexity scaling of Coulomb integrals with respect to the number of single-particle basis states N of order N^2, a major improvement over the N^4 scaling of brute-force methods.
Improved multithreading in the single-particle Schrödinger solver, for both electrons and holes. This can lead to important speedups for calculations on meshes with more than 10,000 nodes.
New tutorial presenting an improved charge stability diagram calculation workflow that combines the non-equilibrium Green’s (NEGF) function and master-equation approaches to compute current flowing through a quantum dot in the Coulomb blockade regime. This new approach enables users to obtain an absolute value for the current while relaxing several assumptions required to apply the WKB method that was previously used for the same purpose.
Improved multithreading and acceleration of the multi-valley effective mass theory (MVEMT) solver, whose constructor was also standardized by moving several keyword arguments into an input SolverParams object.
Generalized the MVEMT solver to support 1D simulations in addition to the already available 3D case.
Modernized and extended the MVEMT tutorials to include:
A 1D calculation of valley splitting as a function of electric field at an interface between silicon and silicon dioxide.
A 3D calculation and analysis of a phosphorus donor in silicon including a central cell correction.
Added the possibility to define a custom charge-density profile in the point-charge feature. An example for usage of this feature is now provided in the point-charge tutorial, in which the influence of a single ionized phosphorus donor on the orbital energy levels of a quantum dot is studied.
Added an
"Exponential"distribution to the pre-defined point-charge density distributions along with"Gaussian"and"Uniform".Support for the Gmsh HXT meshing algorithm within the linear and non-linear Poisson adaptive-mesh solvers. HXT meshing can often be faster than the default Delaunay meshing algorithm.
Extended the features within the
analysismodule:New
plot_slicefunction to plot a 3D function defined at mesh nodes over an arbitrary 2D slice using PyPlot. This function complements the already-existingplot_slices(plural) function which plots orthogonal slices in 3D.New
region_statisticsfunction to compute statistics of a 3D function over a region.New
point_evalfunction to evaluate a 3D function defined at mesh nodes at a single arbitrary point in space through finite-element interpolation.The
analyze_dotfunction now supports the calculation of excited-state statistics.
Added scripts for the convergence analysis presented in the tutorial on exchange in an FD-SOI double quantum dot.
Tables describing default available materials and their properties are now available in the online documentation.
QTCAD® 1.4.5
The user may now control where temporary files for NEGF simulations are saved. Furthermore, the default save location has been changed to be the current working directory; in principle, users should always have write privileges in this directory. This should fix bugs that were reported when running QTCAD® on clusters without write access on certain directories.
QTCAD® 1.4.4
Minor documentation and tutorial updates.
QTCAD® 1.4.3
Fixed a bug that would cause QTCAD® to crash with SciPy versions 1.14.0 and above. The bug was related to a change in the argument names of a SciPy function.
QTCAD® 1.4.2
Clarified the tutorial and API reference concerning the many-body solver eigenvector outputs.
QTCAD® 1.4.1
Updated the WKBLead class to enable access to all the attributes that are described in the API reference.
Minor clarification in the nanowire charge stability diagram tutorial pertaining to the featureless approximation.
QTCAD® 1.4.0
Added support for point charges in the adaptive-mesh non-linear Poisson solver.
Introduced an adaptive-mesh feature to the linear Poisson solver, which now also supports point charges.
Added the possibility to set boundary conditions on all the surfaces that wrap around a given region (Gmsh physical volume).
Equipped the Junction class with a method (
get_tunneling_mat_elem) that allows computing the WKB tunneling matrix elements.Coded a new
analyze_dotfunction in theqtcad.device.analysismodule for convenient extraction of quantum-dot geometry parameters (average position and size).Added support for the .msh4 (.msh) mesh file format.
Added support for the .xao geometry file format, which is appropriate for CAD models produced using the OpenCASCADE geometry kernel of Gmsh.
Updated the recommended Gmsh version to 4.13 to support the .xao file format.
Updated the recommended Python version to 3.10 on Windows, thus matching the Python version for Linux and MacOS.
Added more complete information in log files including:
The total simulation time.
The time spent in each solver, and in each iteration.
A reminder of boundary conditions when an instance of the linear or non-linear Poisson solver is launched.
A splash screen containing the QTCAD® version number, a link to the documentation, citation information, and contact information for technical support and commercial inquiries.
Moved all QTCAD® simulator packages into a main overarching Python package called
qtcad. It is now recommended to import thedevice,qubit, andtransportpackages throughqtcad.device,qtcad.qubit, andqtcad.transport. This will not break scripts that used to run in earlier QTCAD® versions, but will raise a deprecation warning.Made the four-band Luttinger-Kohn-Foreman model the default k•p model when solving the single-particle Schrödinger equation for holes.
Changed the default initial guess of the numerical eigensolver employed by the single-particle Schrödinger solver from particle-in-a-box to random for more robust eigensolutions and updated tutorials to account for the minor output changes that resulted from this modified initial guess.
Removed unwarranted normalization of charge density in the NEGF-Poisson solver that led to underestimation of charge density when using coarse meshes.
Added scripts required for a convergence analysis of the exchange coupling in the double-dot FD-SOI tunnel coupling and exchange tutorials.
Stopped supporting deprecated optional arguments in the leverarm matrix Solver, many-body Solver, and Junction class constructors that duplicated parameters defined through appropriate SolverParams classes. These optional arguments are now defined exclusively through SolverParams objects. This change is consistent with deprecation warnings that were raised starting from QTCAD® 1.3.0.
QTCAD® 1.3.3
Set jupyter backend of pyvista to ‘static’ to avoid a crash when plotting in Jupyter notebooks. Since mid-January 2024, we have been unable to generate conda environments in which pyvista plots would be reliably generated within Jupyter notebooks. We fall back on this temporary solution until a pyvista update fixes the problem or until we go with an alternative solution. This affects the
plotandplot_slicesfunctions of theanalysismodule, and theshowmethod of theMeshclass in Jupyter notebooks, but has no impact on normal Python scripts.Updated the Schrödinger solver to avoid singular matrix errors arising for some coarse meshes in the presence of strain.
Strain fields can now be defined over regions.
QTCAD® 1.3.2
Updated the conda environment for MacOS to fix crash events that arose when using a recently updated version of VTK.
Made minor improvements to the API Reference for fidelity calculations.
QTCAD® 1.3.1
Updated the conda environment for Linux to fix an error that arose when plotting slices directly from the Python API when using recent versions of PyVista and VTK.
QTCAD® 1.3.0
Implemented new solver using the nonequilibrium Green’s function (NEGF) formalism and self-consistent NEGF-Poisson algorithms to compute the nonequilibrium quantum statistics, electric potential, and charge density in two-probe devices (e.g. field-effect transistors with source and drain) under nonequilibrium conditions (e.g. finite drain-source voltage), as well as to calculate electric current in both classical transport (e.g. thermionic emission above a potential barrier) and quantum transport (e.g. tunneling under a potential barrier) in the ballistic regime.
New tutorials for the calculation of tunnel coupling and exchange interaction strength in a double quantum dot in a generic fully-depleted silicon-on-insulator (FD-SOI) geometry.
Improved linecutting algorithm underpinning the WKB solver for the calculation of tunneling rates in the master equation solver for transport in the sequential tunneling regime. The new linecutting algorithm is faster, and offers better treatment of discontinuities at interfaces between materials.
Added MKL support leading up to 20% acceleration of the Poisson and Schrödinger solvers.
QTCAD® 1.2.6
Fixed a bug in the WKBLead that caused the free electron effective mass to be used when computing transition rates regardless of the effective mass input by the user.
QTCAD® 1.2.5
Fixed lever arm solver bug introduced in version 1.2.2.
QTCAD® 1.2.4
Fixed bug arising when defining the lever arm matrix of a Junction object through the SolverParams class of the many_body module.
QTCAD® 1.2.3
Fixed incompatibility between latest SciPy versions and QuTiP on Linux and MacOS.
Documentation updates.
QTCAD® 1.2.2
Introduced a
show_figureargument to theplot_slicesfunction of theanalysismodule enabling to save figures without displaying them.Fixed minor bug in lever arm solver arising when the same dot region in a given device is defined multiple times.
Fixed bug in the many-body solver arising for n_states > 12.
Improved interpolation scheme in 1D linecuts leading to more accurate charge distributions in the quantum well solver.
Added more transparent warnings and error messages.
QTCAD® 1.2.1
Patch release for:
Documentation updates
Minor bugfixes related to the Dirichlet boundary conditions and to the keyword arguments of the many-body Solver and Junction constructors.
QTCAD® 1.2.0
Extended and accelerated workflow for the calculation of the electronic structure and charge stability properties of systems containing one or a few quantum dots, including:
New lever arm matrix solver enabling to quantitatively assess the importance of cross-capacitive effects in multiple dot systems.
More flexible many-body solver enabling instantiation from single-electron energy levels, Coulomb interaction matrix, and lever arm matrix instead of a full Device object.
The possibility to neglect overlap terms in the Coulomb interactions of a quantum-dot system, leading to the Fermi-Hubbard model.
Particle addition spectrum calculator for near-equilibrium quantum-dot systems.
New method to calculate the average total number of electrons using the many-body solver.
The possibility to solve the many-body problem in a list of user-defined specific N-particle subspaces only.
Strain solver for electrons or holes enabling to calculate conduction-band edge shifts and valence-band mixing effects within the Bir-Pikus Hamiltonian or in alternative user-defined strain models.
New hybrid 3D/1D quantum-well Schrödinger-Poisson solver enabling to account for quantum confinement along a single spatial direction, leading to more accurate modeling of semiclassical charge reservoirs in two-dimensional electron or hole gases.
Full support for Schrödinger-Poisson simulations in 1D and 3D devices with holes as confined carriers.
Operators module enabling to calculate the matrix representation of arbitrary functions of spatial coordinates in the basis of the eigenstates of the single-particle Hamiltonian, which can be integrated in a straightforward manner with third-party master equation solvers like QuTiP.
Improved and generalized hole-compatible electric-dipole spin resonance (EDSR) workflow based on the new operators module.
Support for spatially varying Fermi level enabling to model source-drain biases in near-equilibrium configurations.
Added the following items to the materials module: Ge, SiGe alloy with tunable Ge concentration, AlGaAs with tunable Al concentration.
New dopant concentration setter compatible with arbitrary functions of Cartesian coordinates.
More modular and intuitive solver-parameter system with distinct SolverParams classes in module defining a Solver class.
Support for Jupyter notebooks.
An improved and streamlined installation and license activation process.
QTCAD® 1.1.4
Fixed bug occuring when the Schrödinger solver for holes was used after running the adaptive-mesh Poisson solver.
QTCAD® 1.1.3
Fixed bug in the 1D Schrodinger solver arising when the minimum of the conduction band edge is far above the Fermi level for quantized electrons, or when the maximum of the valence band edge is far below the Fermi level for quantized holes.
Optimized the 1D non-linear Poisson solver for faster numerical solution.
QTCAD® 1.1.2
Fixed bug related to memory usage when instantiating many subdevices from the same parent mesh over the same submesh.
QTCAD® 1.1.1
Fixed bug in the many-body solver which led to deviations in the position of Coulomb peaks.
QTCAD® 1.1.0
Orbital effects of uniform magnetic fields for both electrons and holes.
Support for arbitrary user-defined linear spin-orbit coupling Hamiltonians for both electrons and holes.
In addition to the Zeeman effect for electrons, QTCAD® now supports linear and cubic Zeeman splitting for holes.
Possibility to add parasitic background volume charge densities with arbitrary spatial dependence.
Possibility to add constant parasitic background surface charges at boundaries or interfaces.
Performance optimization and full parallelization of the many-body solver.
New materials:
HfO2
ZrO2
QTCAD® 1.0.5
Fixed bug arising when defining a dot region through a physical group string label in the adaptive-mesh Poisson solver.
QTCAD® 1.0.4
Fixed bug arising when creating a device containing materials with a different number of valence band DOS effective masses.
QTCAD® 1.0.3
Updated the dependencies to avoid warning related to SciPy/NumPy versions.
QTCAD® 1.0.2
Fixed bug related to numpy installation through conda arising on MacOS.
QTCAD® 1.0.1
New material: 4H polytype of silicon carbide (SiC). This includes all material parameters relevant to electrons and holes, except for the hole k.p model which will be added in a future version.
QTCAD® 1.0.0
New adaptive meshing feature for robust convergence of the non-linear Poisson solver at cryogenic temperature.
The Schrödinger solver now enables to impose translational invariance along one or two dimensions for both electrons and holes, enabling to calculate the band structure of nanowires and quantum wells.
Refactored and improved the user interface (UI).
The module structure was considerably simplified, with less package and module names to remember when writing the header of a QTCAD® script.
The UI was split into three packages corresponding to the device simulator, the transport simulator, and the qubit simulator, respectively.
Docstrings are now available for all UI classes and methods, consistent with the new online API reference.
The device class now has additional setter methods for the temperature, dopant level degeneracy, binding energy, external potential energy, etc. and a getter for the total confinement potential energy. It is also possible to shift the reference potential in specific regions to implement custom band alignment.
Added progress bars to track the status of various solvers.
Tutorials have been improved and expanded in scope with:
Examples for each key QTCAD® feature;
A practical application divided into a suite of tutorials, all addressing the same experimentally relevant gated quantum dot structure, for a complete view of QTCAD® features from geometry definition to Rabi oscillations.
Extensive documentation including installation instructions, theoretical backround, tutorials, and API reference is now available online.
Additional 6-band Luttinger-Kohn model.
k.p parameters have been added for several standard semiconductor materials.
Holes are now supported by the 3D Schrödinger-Poisson solver.
QTCAD® 0.7.0
Using the QTCAD® package now requires a valid license.
Enable settting device attributes from functions of Cartesian coordinates.
The 1D code now follows the same API as the 2D and 3D code – it uses the same device class, the same solvers, and 1D meshes can be imported from Gmsh.
A new material (vacuum) is now available in the materials module.
QTCAD® 0.5.1
Modified the EDSR module to enable defining envelope functions over a subdevice.
Added Luttinger-Kohn parameters to the SiO2 material.
QTCAD® 0.5.0
The master equation solver module (mastereq) was refactored: Junction object, Lead object, and many-body solver are now available in their own modules
The new Lead class can be used to approximate lead wavefunctions using the WKB approximation
The Junction class can be used to approximate currents through a junction via the WKB approximation
New Many-body solver which diagonalizes the many-body Schrodinger equation including Coulomb interactions for any QTCAD® device.
The many-body solver can now account for arbitrary degeneracy of the single-particle levels.
Added tutorials for:
The definition of a quantum-dot confinement potential.
Visualization of 3D data with Paraview.
Calculation of current flowing through quantum-dot systems using the WKB approximation.
Updated the nanowire quantum dot and electric-dipole spin resonance tutorials.
Coded a new feature to assign fixed potential energies to specific regions in a device object.
Fixed a minor bug in the confinement energy setter of the device class.
QTCAD® 0.1.0
Quantum transport tutorial.
Possibility to set lever arm different from 1 in charge stability diagram calculations.
Zeeman splitting module for both electrons and holes.
Convenient lever arm calculation tool.
New materials (InP and InAs).
Second order solvers (Schrödinger for electrons and holes, Schrödinger-Poisson for electrons) with demonstrated error scaling improvement for rectangular geometries (no rounded boudaries).