Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gpavanb1/fcontin
Numerical Continuation using just the residual. 8k+ downloads
https://github.com/gpavanb1/fcontin
arc-length automatic-differentiation jax nonlinear-equations numerical-continuation numerical-methods python
Last synced: about 2 months ago
JSON representation
Numerical Continuation using just the residual. 8k+ downloads
- Host: GitHub
- URL: https://github.com/gpavanb1/fcontin
- Owner: gpavanb1
- License: mit
- Created: 2020-06-06T14:07:02.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-07-06T22:00:42.000Z (over 1 year ago)
- Last Synced: 2024-10-12T00:54:26.949Z (3 months ago)
- Topics: arc-length, automatic-differentiation, jax, nonlinear-equations, numerical-continuation, numerical-methods, python
- Language: Python
- Homepage: https://pypi.org/project/FContin/0.1/
- Size: 9.77 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# FContin
![Made with Love in India](https://madewithlove.org.in/badge.svg) [![Downloads](https://pepy.tech/badge/fcontin)](https://pepy.tech/project/fcontin)
Solve F(**u**, λ) = 0 over λ with just F!
This repository contains [natural](https://en.wikipedia.org/wiki/Numerical_continuation#Natural_parameter_continuation) and [pseudo-arclength/Euler-Newton](https://en.wikipedia.org/wiki/Numerical_continuation#Pseudo-arclength_continuation) continuation library using [JAX](https://github.com/google/jax) for automatic differentiation, [numdifftools](https://pypi.org/project/numdifftools/) for numerical differentiation using real or complex derivatives, and [Pacopy](https://github.com/nschloe/pacopy)
This enables automatic/numerical differentiation to obtain the Jacobian and derivative with respect to the parameter. GPU/TPU support is packaged as part of JAX.
# How to install and execute?
Tested on Python 3.6.2 and [pacopy 0.1.0](https://github.com/sigma-py/pacopy/tree/branch-switching)
Just run
```
pip install fcontin
```The following program illustrates a basic example
```python
from fcontin.ContProblem import ContProblem###
# Output record
###
lmbda_list = []
values_list = []def callback(k, lmbda, sol):
# Use the callback for plotting, writing data to files etc.
lmbda_list.append(lmbda)
values_list.append(sol)###
# Define problem
###def f(u, lmbda):
"""The evaluation of the function to be solved
"""
return [
u[0] + u[1] - (lmbda + 1.), u[0] - u[1] - lmbda
]###
# Solving and Plotting
#### Initial guess
u0 = [0., 0.]
# Initial parameter value
lmbda0 = 1.0# Creating the problem
# Natural or Euler-Newton for cont_method
# Forward, Reverse, Numerical, Complex for jac_mode
problem = ContProblem(f, u0, lmbda0,
cont_method='Euler-Newton',
jac_mode='Forward',
max_steps=10,
newton_tol=1e-10,
callback=callback
)problem.solve()
```## Whom to contact?
Please direct your queries to [gpavanb1](http://github.com/gpavanb1)
for any questions.