How to Configure Ansys Eigenmode Simulation Settings for Superconducting Qubit Designs in SQuADDS
The AnsysSimulator class in SQuADDS provides three flexible methods to configure Ansys eigenmode simulations: modifying the default_eigenmode_options dictionary, passing custom emode_setup parameters to sweep methods, or calling update_simulation_setup() for persistent configuration changes.
SQuADDS (Superconducting Qubit Automated Design and Documentation System) streamlines quantum hardware development through automated electromagnetic analysis. The AnsysSimulator class defined in squadds/simulations/ansys_simulator.py serves as the primary Python interface for driving Ansys HFSS eigenmode simulations, enabling precise extraction of resonant frequencies and electromagnetic field distributions for transmon and fluxonium designs.
Understanding the Default Eigenmode Configuration
The AnsysSimulator initializes with a comprehensive set of convergence and mesh parameters stored in self.default_eigenmode_options. These defaults control adaptive mesh refinement, basis function order, and Josephson junction variables.
According to the source code in squadds/simulations/ansys_simulator.py, the default eigenmode configuration dictionary structure is:
self.default_eigenmode_options = {
"setup": {
"basis_order": 1,
"max_delta_f": 0.02,
"max_passes": 30,
"min_converged": 3,
"min_converged_passes": 3,
"min_freq_ghz": 1,
"min_passes": 1,
"n_modes": 1,
"name": "default_eigenmode_setup",
"pct_refinement": 30,
"reuse_selected_design": True,
"reuse_setup": True,
"vars": {"Cj": "0fF", "Lj": "0nH"},
}
}
Three Methods to Configure Ansys Eigenmode Simulations
SQuADDS offers three distinct approaches to customize eigenmode analysis parameters, each suited to different workflow requirements and persistence needs.
Modifying Default Options Directly
For permanent project-wide changes, edit the self.default_eigenmode_options dictionary inside the AnsysSimulator.__init__ method in squadds/simulations/ansys_simulator.py. This approach affects all subsequent simulator instances created from that modified class, making it suitable for institutional standards or repeated design templates.
Passing Custom emode_setup Dictionaries
For one-off simulations requiring unique configurations without altering the class defaults, pass a custom dictionary to the emode_setup argument of sweep() or sweep_qubit_cavity(). When emode_setup is provided, the simulator uses these values exclusively for that execution and falls back to default_eigenmode_options only when the parameter is None.
Using update_simulation_setup()
Call sim.update_simulation_setup() to modify the stored device dictionary in-place for the lifetime of the simulator instance. Specify target="generic" for single-system simulations or target="qubit" for coupled qubit-cavity systems to update the respective configuration blocks (setup_qubit, setup_cavity_claw, etc.).
Key Parameters for Superconducting Qubit Designs
When you configure Ansys eigenmode simulation settings for superconducting qubit designs in SQuADDS, these parameters require careful tuning to balance accuracy and computational efficiency:
- basis_order: Controls finite element basis function order. Increase to
2or3for higher accuracy in regions with high electric field gradients, though this significantly increases memory usage and solve time. - max_passes: Maximum adaptive mesh refinement iterations. Increase to
50or60for complex geometries with tight coupling between qubit and resonator elements. - min_freq_ghz: Lower frequency bound for mode searching. Set to
4or5to exclude irrelevant low-frequency modes and accelerate convergence for typical transmon frequencies (4–8 GHz). - n_modes: Number of eigenmodes to extract. Use
3to5to capture the fundamental qubit mode and higher harmonics necessary for multi-mode Hamiltonian analysis. - vars: Dictionary defining Josephson junction parameters. Override
Cj(junction capacitance) andLj(junction inductance) to match your specific qubit design values, such as{"Cj": "1fF", "Lj": "10nH"}.
Practical Configuration Examples
The following examples demonstrate how to implement each configuration method using the SQuADDS API with actual code patterns from the repository.
Example 1: Custom Eigenmode Setup for Parameter Sweeps
Override default settings for a specific sweep by passing a custom emode_setup dictionary to the sweep() method:
from squadds.simulations.ansys_simulator import AnsysSimulator
# Initialize simulator with existing analyzer and design options
sim = AnsysSimulator(analyzer, design_options)
# Define custom eigenmode configuration for high-accuracy single-mode analysis
custom_emode = {
"setup": {
"basis_order": 2,
"max_passes": 45,
"n_modes": 3,
"min_freq_ghz": 4.0,
"vars": {"Cj": "1fF", "Lj": "10nH"},
}
}
# Execute parameter sweep with custom eigenmode settings
sim.sweep(
sweep_dict={"gap": [0.2, 0.3, 0.4]},
emode_setup=custom_emode
)
Example 2: Persistent Configuration with update_simulation_setup()
Update the simulator's stored configuration to affect all subsequent operations without modifying the class source code:
# Modify the generic setup for single-system simulations
sim.update_simulation_setup(
target="generic",
max_passes=60,
n_modes=5,
min_freq_ghz=3.5,
vars={"Cj": "0.8fF", "Lj": "12nH"}
)
# Subsequent sweeps automatically use updated parameters
sim.sweep(sweep_dict={"pad_width": [10, 12, 14]})
Example 3: Configuring Coupled Qubit-Cavity Systems
For QubitCavity systems containing both qubit and resonator components, configure specific sub-setups using sweep_qubit_cavity():
# Device dictionary containing separate setups for qubit and cavity
device = {
"setup_qubit": {...},
"setup_cavity_claw": {...}
}
# High-accuracy eigenmode settings for coupled system analysis
my_eigenmode = {
"setup": {
"basis_order": 3,
"max_passes": 70,
"n_modes": 4,
"min_freq_ghz": 5.0,
}
}
# Execute coupled simulation with custom settings
sim.sweep_qubit_cavity(
device_dict=device,
emode_setup=my_eigenmode,
lom_setup=None # Use default lumped oscillator model settings
)
Summary
- The
AnsysSimulatorclass insquadds/simulations/ansys_simulator.pymanages all Ansys eigenmode configurations through thedefault_eigenmode_optionsdictionary. - Custom
emode_setupdictionaries passed tosweep()orsweep_qubit_cavity()provide temporary configuration overrides for individual simulations without affecting global defaults. - The
update_simulation_setup()method enables persistent configuration changes for the simulator instance lifetime, supporting bothtarget="generic"for single systems andtarget="qubit"for coupled architectures. - Critical parameters for superconducting qubit accuracy include
basis_order(finite element order),max_passes(mesh refinement depth), andvars(Josephson junction capacitance and inductance).
Frequently Asked Questions
What is the default eigenmode setup in SQuADDS?
The default configuration resides in self.default_eigenmode_options within the AnsysSimulator.__init__ method, specifying conservative values including basis_order: 1, max_passes: 30, n_modes: 1, and zeroed Josephson junction variables (Cj: "0fF", Lj: "0nH"). These defaults prioritize fast execution over accuracy and should be customized for precise quantum device simulation.
How do I change the number of eigenmodes extracted in Ansys HFSS?
Modify the n_modes parameter in your eigenmode setup dictionary. Set "n_modes": 5 to extract the fundamental mode and four higher harmonics for multi-mode analysis. Pass this configuration via the emode_setup parameter to sweep(), or update it permanently using update_simulation_setup(target="generic", n_modes=5).
Can I configure different settings for qubit and cavity simulations?
Yes. When working with coupled systems, use update_simulation_setup() with target="qubit" or target="cavity_claw" to modify the respective sub-setup dictionaries (setup_qubit or setup_cavity_claw). This allows independent configuration of mesh density and convergence criteria for each component in a QubitCavity system.
Where are the Ansys simulator configurations stored in the codebase?
All eigenmode simulation logic, default parameters, and configuration methods are defined in squadds/simulations/ansys_simulator.py. The AnsysSimulator class contains the default_eigenmode_options dictionary and the primary interface methods including sweep(), sweep_qubit_cavity(), and update_simulation_setup().
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →