All Projects → oashour → NonlinearSchrodinger.jl

oashour / NonlinearSchrodinger.jl

Licence: MIT License
A suite of tools for solving Nonlinear Schrodinger equations via higher-order algorithms and Darboux transformations.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to NonlinearSchrodinger.jl

DelayEmbeddings.jl
Delay coordinates embedding and Dataset definitions
Stars: ✭ 21 (-12.5%)
Mutual labels:  nonlinear-dynamics
pymor
pyMOR - Model Order Reduction with Python
Stars: ✭ 198 (+725%)
Mutual labels:  nonlinear-dynamics
mxfactorial
a payment application intended for deployment by the united states treasury
Stars: ✭ 36 (+50%)
Mutual labels:  mathematical-physics
RecurrenceAnalysis.jl
Recurrence Quantification Analysis in Julia
Stars: ✭ 37 (+54.17%)
Mutual labels:  nonlinear-dynamics
ONSAS.m
An Open Nonlinear Structural Analysis Solver for GNU-Octave or Matlab
Stars: ✭ 31 (+29.17%)
Mutual labels:  nonlinear-dynamics
pressio
Model reduction for linear and nonlinear dynamical systems: core C++ library
Stars: ✭ 35 (+45.83%)
Mutual labels:  nonlinear-dynamics
NonlinearDynamicsTextbook
Nonlinear Dynamics: A concise introduction interlaced with code
Stars: ✭ 145 (+504.17%)
Mutual labels:  nonlinear-dynamics

Logo

NonlinearSchrodinger.jl

Stable Dev CI Coverage arXiv

NonlinearSchrodinger.jl is a suite of tools for studying Nonlinear Schrodinger equations. The purpose of this package is to encourage the use of open source software in studying these equations as most works in this field rely on closed-source codes. This allows for reproducability, lowers the barrier for new researchers, and alleviates the need to reinvent the wheel.

Features

  1. Solving the cubic Nonlinear Schrodinger equation using a plethora of algortithms of order up to 8 (the number of algorithms available is always increasing!). Symplectic and RKN integrators are available.

  2. Solving the Hirota and Sasa-Satsuma equations using a combined split-step-finite-difference approach using a few different integrators. This is a preliminary feature and is not yet fully supported.

  3. Computing the integrals of motion (energy, momentum, and particle number) and their errors.

  4. Computing the Darboux Transformation to study complicated analytical solutions. We currently support the breather and soliton seeds for extended nonlinear Schrodinger equations of order up to 5 (including cubic NLS, Hirota, LPD, Quintic, and arbitrary combinations thereof). We also support the cn and dn seeds for the cubic NLS.

  5. Easy visualization through Plots.jl recipes.

  6. A very simple interface that allows one to compute very complicated solutions via only a few lines of code.

  7. Many utilities for studying maximal intensity breather families on uniform and dnoidal backgrounds, pruning for Nonlinear talbot carpets, and breather to soliton conversion in extended NLSEs.

Example: 7 Soliton Collision

xᵣ = -10=>10
T = 20
seed = "0"
box = Box(xᵣ, T, Nₓ=500, Nₜ = 500)
λ = [-0.45 + 0.775im, -0.35 + 0.8im, -0.25 + 0.825im, 0.85im, 0.25 + 0.875im, 0.35 + 0.9im, 0.45 + 0.925im]
xₛ = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
tₛ = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

calc = Calc(λ, tₛ, xₛ, seed, box)

solve!(calc)
heatmap(calc)

Logo

Supporting and Citing

The paper can be found here. It is currently under review.

Logo

The logo is formed by 3 Akhmediev breathers with a = 3/8, an homage to my first paper in the field.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].