Skip to content

EigenmodeAnalysis

Run an Eigenmode simulation in HFSS and extract modal frequencies and Q-factors.

This class wraps setup configuration, simulation execution, and result parsing in a single, declarative interface. It's typically used in workflow configurations to automate eigenmode extraction.

Bases: BaseAnalysis

Runs an Eigenmode simulation using an existing HFSS setup.

This simulation extracts resonant frequencies and quality factors from the eigenmodes of a 3D electromagnetic structure in HFSS.

Attributes:

Name Type Description
type Literal[EIGENMODE]

Type of simulation. Always set to 'eigenmode'.

setup_name str

Name of the HFSS setup to run.

design_name str

Name of the HFSS design to use.

cores int

Number of CPU cores to allocate (default is 4).

gpus int

Number of GPUs to allocate (default is 0).

setup_parameters dict

Optional dictionary of parameters to override the setup configuration.

frequency_unit str

Optional string to specify the frequency unit (default is 'GHz').

analyze

analyze(hfss: Hfss) -> EigenmodeResults

Execute the Eigenmode simulation and extract results.

Parameters:

Name Type Description Default
hfss Hfss

An active HFSS project instance.

required

Returns:

Name Type Description
EigenmodeResults EigenmodeResults

Object containing frequencies and Q-factors of each eigenmode.

Raises:

Type Description
ValueError

If hfss is not a valid Hfss instance.

Source code in src/quansys/simulation/eigenmode/model.py
def analyze(self, hfss: Hfss) -> EigenmodeResults:
    """
    Execute the Eigenmode simulation and extract results.

    Args:
        hfss: An active HFSS project instance.

    Returns:
        EigenmodeResults: Object containing frequencies and Q-factors of each eigenmode.

    Raises:
        ValueError: If `hfss` is not a valid Hfss instance.
    """
    if not isinstance(hfss, Hfss):
        raise ValueError('hfss given must be a Hfss instance')

    setup = set_design_and_get_setup(hfss, self.design_name, self.setup_name)

    # check for application of setup parameters
    update_setup_parameters(setup, self.setup_parameters)

    # validate solution type
    validate_solution_type(setup, setup_type='HfssEigen')

    # Analyze
    setup.analyze(cores=self.cores, gpus=self.gpus)

    # Save
    hfss.save_project()

    # Get eigenmode results
    results = get_eigenmode_results(setup=setup)

    # Add profile information
    results.profile = self.get_profile(setup)

    return results

get_profile staticmethod

get_profile(setup: Setup) -> dict

Generate a simulation report. Currently, a placeholder.

Source code in src/quansys/simulation/eigenmode/model.py
@staticmethod
def get_profile(setup: Setup) -> dict:
    """Generate a simulation report. Currently, a placeholder."""
    # 1) get the profile (key → BinaryTreeNode)
    profile = setup.get_profile()  # {'Setup1 : Sweep1' : BinaryTreeNode, ...}

    # 2) turn every node into a plain nested dict
    serializable = {k: v.jsonalize_tree() for k, v in profile.items()}

    # 3) remove first key as it is the variation string if the number of keys is 1
    if len(list(serializable.keys())) == 1:
        serializable = serializable[list(serializable.keys())[0]]

    return serializable