Add Rosenbrock integrators#479
Conversation
3d9d33b to
e8405a0
Compare
ca6fca6 to
b0ec169
Compare
|
@pelesh I've updated the PR to make use of GridKit's own |
Using a linear solver from Re::Solve is a good thing :). We can add bare KLU interface in a separate PR, if needed. |
5075077 to
cd9e7b8
Compare
shakedregev
left a comment
There was a problem hiding this comment.
Fix the minor issues and good to merge. I tested it.
3155142 to
7c16628
Compare
pelesh
left a comment
There was a problem hiding this comment.
This is very nice work and we can merge it to the feature branch provided the comments below are addressed:
Rosenbrockclass needs to inherit fromDynamicSolverclass so it can be called interchangeably with IDA (and I understand there will be some additional work there but we need to open that door now).- Files
Rosenbrock.*ppshould stay inGridKit/Solver/Dynamicdirectory. For all other files, I suggest moving them to a new directoryGridKit/Solver/Dynamic/Rosenbrock. Rosenbrockand related classes should be inAnalysisManagernamespace, and theIntegratornamespace should be within that to make it consistent with IDA interface.- Consider renaming
Integratornamespace with something likeNativeDynamicSolveror something similar to describe these are solvers native to GridKit, not third party ones (such as SUNDIALS). - File
ResolveMemoryUtils.hppshould not be needed if the linear solver interface is implemented correctly but we can handle that in #489. - A few minor comments below.
|
I'm not sure what to do about implementing |
This was an unused artifact - everything has been moved to the ResolveSystemSolver.
Description
Add Rosenbrock integrators, which are lighter-weight alternatives to IDA that work well with co-simulation.
Proposed changes
The current version depends on ReSolve and needs porting work to be used with GridKit vectors. The operations used by the Rosenbrock integrators are:
This PR also need's ReSolve's
SystemSolverto be ported.As well, I think some more testing wouldn't go amiss... An integration test on an example power grid would work nicely.
Checklist
-Wall -Wpedantic -Wconversion -Wextra.Further comments