Skip to content

Do we need BusInfinite to inherit from BusBase? #462

Description

@pelesh

Summary

I suggest to make BusInfinite a standalone class, not inheriting from BusBase. In that case, the system composer would have separate loops for buses and infinite buses. The latter might be needed only for component instantiation and not for allocation, residual evaluation or Jacobian evaluation.

In GridKit phasor dynamics module, similar example is SignalNode, which is also a standalone class.

CC @lukelowry @PhilipFackler @nkoukpaizan @abirchfield

Rationale

Inheritance is "is a" relationship and despite its name infinite bus is not really a bus. Rather it stands in for a connection to a grid that is much larger than the grid being modeled.

The infinite bus does not have internal variables or equations and can be skipped in SystemSolver when allocating workspace, evaluating residual or Jacobian, etc. Without the inheritance, the BusInfinite class could be simplified and BusBase could be merged with Bus class to further simplify the code.

Description

I suggest implementing BusInfinite as a standalone class that is treated separately from the Bus instances. We needed inheritance because component constructors needed pointers to buses. Since ComponentData instance has all the connectivity information for each component, pointers to the buses will be eventually removed.

Additional information

No response

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions