finesse.simulations.basesolver.BaseSolver

Overview

class finesse.simulations.basesolver.BaseSolver(unicode name, list nodes, FrequencyContainer optical_frequencies, dict signal_frequencies, bool is_signal_matrix, bool forced_refill, dict node_aliases)

Bases: object

A linear set of systems can be represented as a matrix, each equation in this system is a particular state which we want to compute. The system is solved by applying some inputs into various states, or the right hand side (RHS) vector, and solving the system.

The underlying matrix can be either a sparse or dense matrix. This class should not assume either, but merely call upon a standard matrix interface. Therefore the algorithm used for solving can vary significantly. The overall matrix is sectioned into submatricies which connect various states together.

Nodes represent a physical location in the model in which some state of the system must be computed. Some nodes can have multiple states, such as multiple optical modes.

Methods

BaseSolver.__init__(*args, **kwargs)

BaseSolver.add_rhs(self, unicode key)

BaseSolver.assign_noise_operators(self, ...)

BaseSolver.assign_operators(self, ...)

An important function.

BaseSolver.clear_rhs(self)

BaseSolver.construct(self)

This is called when workspaces and submatrices have been setup.

BaseSolver.destruct(self)

This is called when finishing and unbuilding the simulation.

BaseSolver.factor(self)

BaseSolver.fill_noise_inputs(self)

BaseSolver.fill_rhs(self)

BaseSolver.findex(self, node, Py_ssize_t freq)

Returns simulation unique index for a given frequency at this node.

BaseSolver.get_frequency_object(self, ...)

Get a Frequency object corresponding to a numerical or symbolic value.

BaseSolver.get_node_frequencies(self, node)

BaseSolver.get_node_info(self, node)

For a given node (object or name) the key parameters for where this node is represented in the matrix of linear equations.

BaseSolver.initial_fill(self)

BaseSolver.initial_run(self)

Once a solver has been constructed it will most likely need to be initially filled and ran.

BaseSolver.initialise(self, sim)

BaseSolver.input_components(self)

Components that are injecting something into the simulation

BaseSolver.node_id(self, node)

BaseSolver.print_matrix(self)

BaseSolver.refactor(self)

BaseSolver.refill(self)

BaseSolver.refill_rhs(self)

BaseSolver.run(self)

Executes the simulation for model in its current state.

BaseSolver.setup_nodes(self, list all_nodes, ...)

BaseSolver.solve(self)

BaseSolver.solve_noises(self)

BaseSolver.update_frequency_info(self)