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 = SimpleProfile.from_setup(setup)

    return results