Split Newton Solver
Project description
SplitNewton
Bounded, SPLIT Newton with pseudo-transient continuation and backtracking
Good for ill-conditioned problems where there are two different sets of systems
Particular applications include
- Fast-Slow Reaction-Diffusion systems
- CFD - Pressure-Velocity coupling
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?
Just run
pip install splitnewton
There is an examples folder that contains a test function and driver program
How good is this?
Consider the test problem
$\lambda_{a} = 10^{6}$, $\lambda_{b} = 10^{2}$
and the second system $\lambda_{c} = 10^{-1}$ $\lambda_{d} = 10^{-4}$
and using logspace
for variation in $\lambda_{i}$
$$ F(u) = \lambda_{a} u^{4}{1} + ... + \lambda{b} u^{4}{\lfloor N/2 \rfloor} + \lambda{c} u^{4}{\lceil N/2 \rceil} + ... + \lambda{d} u^{4}_{N}$$
$$ J(u) = 3 * \begin{bmatrix} \lambda_a & \dots & 0 & 0 & \dots & 0 \newline \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \newline 0 & \dots & \lambda_b & 0 & \dots & 0 \newline 0 & \dots & 0 & \lambda_c & \dots & 0 \newline \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \newline 0 & \dots & 0 & 0 & \dots & \lambda_d \end{bmatrix} u^{2} $$
For N=5000 (with no backtracking and pseudo-transient continuation),
Method | Time | Iterations |
---|---|---|
Split Newton | 9 seconds | 32 |
Newton | not converged > 1 min | NA |
How to test?
You can run tests with the pytest
framework
The coverage reports can be generated with pytest-cov
using pytest --cov=splitnewton
Whom to contact?
Please direct your queries to gpavanb1 for any questions.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file SplitNewton-0.2.tar.gz
.
File metadata
- Download URL: SplitNewton-0.2.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34f1d8c8aa763b68cf843be5bf12cf6f789119f798c36172b5ee0b0518d68be9 |
|
MD5 | 15994580f443a43ef2424097c2715eb8 |
|
BLAKE2b-256 | f5f2500a54e67470b733a736d8555876948dd278ebdf29d3d77442c8fddc74c9 |