Skip to content

FAST, Bounded, SPLIT Newton solver with pseudo-transient continuation and backtracking.

License

Notifications You must be signed in to change notification settings

gpavanb1/SplitNewtonpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SplitNewton++

Coverage Zenodo

Fast, Bounded, Split Newton with pseudo-transient continuation and backtracking

Check out its Python cousin - SplitNewton

Where is this used?

Good for ill-conditioned problems where there are two different sets of systems

Particular applications include

What does 'split' mean?

The system is divided into two and for ease of communication, let's refer to first set of variables as "outer" and the second as "inner".

  • Holding the outer variables fixed, Newton iteration is performed till convergence using the sub-Jacobian

  • One Newton step is performed for the outer variables with inner held fixed (using its sub-Jacobian)

  • This process is repeated till convergence criterion is met for the full system (same as in Newton)

How to install and execute?

This is a header-only library and can be most easily used with VSCode. The tasks.json contains the build and run commands that can be invoked directly from the IDE.

There is an example in main.cpp which can be compiled and executed

How much faster is this?

For the bounded Rosenbrock problem with N=5000, the C++ version is almost 2.5x faster (even though the sparse linear solver is in C for the Python version). The comparison is as follows

Method Time Iterations Time/Iteration
C++ ~14 seconds 21 ~0.6 seconds
Python ~23 seconds 15 ~1.5 seconds

How to test?

You can run tests with the gtest framework. There is a Bazel: Test task in .vscode/tasks.json which can be used to run the tests.

The coverage reports can be generated with llvm-cov or gcov depending on the OS being used

Whom to contact?

Please direct your queries to gpavanb1 for any questions.

Citing

If you are using SplitNewton++ in any scientific work, please make sure to cite as follows

@software{pavan_b_govindaraju_2024_14365897,
  author       = {Pavan B Govindaraju},
  title        = {gpavanb1/SplitNewtonpp: 0.1.0},
  month        = dec,
  year         = 2024,
  publisher    = {Zenodo},
  version      = {0.1.0},
  doi          = {10.5281/zenodo.14365897},
  url          = {https://doi.org/10.5281/zenodo.14365897}
}

About

FAST, Bounded, SPLIT Newton solver with pseudo-transient continuation and backtracking.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published