kqcircuits.simulations.export.elmer.elmer_solution

class kqcircuits.simulations.export.elmer.elmer_solution.ElmerSolution(name: str = '', p_element_order: int = 3, percent_error: float = 0.005, max_error_scale: float = 2.0, max_outlier_fraction: float = 0.001, maximum_passes: int = 1, minimum_passes: int = 1, is_axisymmetric: bool = False, mesh_levels: int = 1, mesh_size: dict = <factory>)[source]

Bases: Solution

A Base class for Elmer Solution parameters

Parameters:
  • p_element_order – polynomial order of p-elements

  • percent_error – Stopping criterion in adaptive meshing.

  • max_error_scale – Maximum element error, relative to percent_error, allowed in individual elements.

  • max_outlier_fraction – Maximum fraction of outliers from the total number of elements

  • maximum_passes – Maximum number of adaptive meshing iterations.

  • minimum_passes – Minimum number of adaptive meshing iterations.

  • is_axisymmetric – Simulate with Axi Symmetric coordinates along \(y\Big|_{x=0}\) (Default: False)

  • mesh_levels – If set larger than 1 Elmer will make the mesh finer by dividing each element into 2^(dim) elements mesh_levels times. Default 1.

  • mesh_size – Dictionary to determine mesh size where key (string) denotes material and value (double) denotes the maximal length of mesh element. Additional mesh size terms can be determined, if the value type is list. Then, term[0] is the maximal mesh element length inside at the entity and its expansion, term[1] is expansion distance in which the maximal mesh element length is constant (default=term[0]), and term[2] is the slope of the increase in the maximal mesh element length outside the entity. To refine material interface the material names by should be separated by ‘&’ in the key. Key ‘global_max’ is reserved for setting global maximal element length. For example, if the dictionary is given as {‘substrate’: 10, ‘substrate&vacuum’: [2, 5], ‘global_max’: 100}, then the maximal mesh element length is 10 inside the substrate and 2 on region which is less than 5 units away from the substrate-vacuum interface. Outside these regions, the mesh element size can increase up to 100.

tool: ClassVar[str] = ''
p_element_order: int = 3
percent_error: float = 0.005
max_error_scale: float = 2.0
max_outlier_fraction: float = 0.001
maximum_passes: int = 1
minimum_passes: int = 1
is_axisymmetric: bool = False
mesh_levels: int = 1
mesh_size: dict
get_solution_data()[source]

Return the solution data in dictionary form.

class kqcircuits.simulations.export.elmer.elmer_solution.ElmerVectorHelmholtzSolution(name: str = '', p_element_order: int = 3, percent_error: float = 0.005, max_error_scale: float = 2.0, max_outlier_fraction: float = 0.001, maximum_passes: int = 1, minimum_passes: int = 1, is_axisymmetric: bool = False, mesh_levels: int = 1, mesh_size: dict = <factory>, frequency: float | ~typing.List[float] = 5, frequency_batch: int = 3, sweep_type: str = 'explicit', max_delta_s: float = 0.01, london_penetration_depth: float = 0, quadratic_approximation: bool = False, second_kind_basis: bool = False, use_av: bool = False, conductivity: float = 0, nested_iteration: bool = False, convergence_tolerance: float = 1e-10, max_iterations: int = 2000)[source]

Bases: ElmerSolution

Class for Elmer wave-equation solution parameters

Parameters:
  • frequency – Units are in GHz. Give a list of frequencies if using interpolating sweep.

  • frequency_batch – Number of frequencies calculated between each round of fitting in interpolating sweep

  • sweep_type – Type of frequency sweep. Options “explicit” and “interpolating”.

  • max_delta_s – Convergence tolerance in interpolating sweep

  • london_penetration_depth – Allows supercurrent to flow on the metal boundaries within a layer of thickness london_penetration_depth

  • quadratic_approximation – Use edge finite elements of second degree

  • second_kind_basis – Use Nedelec finite elements of second kind

  • use_av – Use a formulation of VectorHelmHoltz equation based on potentials A-V instead of electric field E. For details see https://www.nic.funet.fi/pub/sci/physics/elmer/doc/ElmerModelsManual.pdf WARNING: This option is experimental and might lead to poor convergence.

  • conductivity – Adds a specified film conductivity on metal boundaries. Applies only when use_av=True

  • nested_iteration – Enables alternative nested iterative solver to be used. Applies only when use_av=True

  • convergence_tolerance – Convergence tolerance of the iterative solver. Applies only when use_av=True

  • max_iterations – Maximum number of iterations for the iterative solver. Applies only when use_av=True

tool: ClassVar[str] = 'wave_equation'
frequency: float | List[float] = 5
frequency_batch: int = 3
sweep_type: str = 'explicit'
max_delta_s: float = 0.01
london_penetration_depth: float = 0
quadratic_approximation: bool = False
second_kind_basis: bool = False
use_av: bool = False
conductivity: float = 0
nested_iteration: bool = False
convergence_tolerance: float = 1e-10
max_iterations: int = 2000
class kqcircuits.simulations.export.elmer.elmer_solution.ElmerCapacitanceSolution(name: str = '', p_element_order: int = 3, percent_error: float = 0.005, max_error_scale: float = 2.0, max_outlier_fraction: float = 0.001, maximum_passes: int = 1, minimum_passes: int = 1, is_axisymmetric: bool = False, mesh_levels: int = 1, mesh_size: dict = <factory>, linear_system_method: str = 'bicgstab', integrate_energies: bool = False)[source]

Bases: ElmerSolution

Class for Elmer capacitance solution parameters

Parameters:
  • linear_system_method – Available: ‘bicgstab’, ‘mg’ TODO Generalise to other tools

  • integrate_energies – Calculate energy integrals over each object. Used in EPR simulations

tool: ClassVar[str] = 'capacitance'
linear_system_method: str = 'bicgstab'
integrate_energies: bool = False
class kqcircuits.simulations.export.elmer.elmer_solution.ElmerCrossSectionSolution(name: str = '', p_element_order: int = 3, percent_error: float = 0.005, max_error_scale: float = 2.0, max_outlier_fraction: float = 0.001, maximum_passes: int = 1, minimum_passes: int = 1, is_axisymmetric: bool = False, mesh_levels: int = 1, mesh_size: dict = <factory>, linear_system_method: str = 'bicgstab', integrate_energies: bool = False, boundary_conditions: dict = <factory>)[source]

Bases: ElmerSolution

Class for Elmer cross-section solution parameters

Parameters:
  • linear_system_method – Available: ‘bicgstab’, ‘mg’

  • integrate_energies – Calculate energy integrals over each object. Used in EPR simulations

  • boundary_conditions – Parameters to determine boundary conditions for potentil on the edges of simulation box. Supported keys are xmin , xmax ,`ymin` and ymax Example: boundary_conditions = {“xmin”: {“potential”: 0}}

tool: ClassVar[str] = 'cross-section'
linear_system_method: str = 'bicgstab'
integrate_energies: bool = False
boundary_conditions: dict
kqcircuits.simulations.export.elmer.elmer_solution.get_elmer_solution(tool='capacitance', **solution_params)[source]

Returns an instance of ElmerSolution subclass.

Parameters:
  • tool – Determines the subclass of ElmerSolution.

  • solution_params – Arguments passed for ElmerSolution subclass.

../_images/kqcircuits.simulations.export.elmer.elmer_solution.png