File Exchange

image thumbnail

GAFFE A toolbox for solving evolutionary nonlinear PDEs

version 1.7 (155 KB) by

This toolbox implements the well known split-step Fourier technique for solving nonlinear PDEs.



View License

The Generalised Adaptive Fast-Fourier Evolver (GAFFE) toolbox is a framework that greatly simplifies the solution of complex partial differential equations (PDEs) in an adaptive manner.

By default both the step-size and the mesh adapt to the problem at hand to optimise the speed of execution for a given nominal target accuracy.

The technique is N dimensional and can therefore be used to model diverse problems such as temporal solitons, spatial self-focusing or exotic space-time effects.

Currently the technique is limited to scalar fields.

Comments and Ratings (9)


wu (view profile)


very good


Amdad (view profile)


Edward Grace

As defined the example model for pulse propagation will work in normalised units. I strongly recommend reading the example alongside the cited section of Agrawal's "Nonlinear Fiber Optics".

It's exactly what I find toolbox. But I don't know where I should input parameters like pulse energy and duration.

Edward Grace

Mohsin. " there anything for birefringence or polarization in this toolbox?". No, not explicitly.

"can we simulate pulse propagation in a birefringent fiber by this toolbox?"

Like many things the answer is "it depends".

As long as you can approximate whatever it is that you want to do as being scalar then the answer is "yes" -- just use an effective refractive index for each (decomposed) polarisation. And model it as two separate (decoupled) problems.

If on the other hand the important effect that you want to capture is due to off-diagonal terms in the nonlinear permettivity tensor that strongly couple between polarisation states then the answer is a resounding "No!"; it's tough enough generalising to an N dimensional scalar nonlinear problems, let alone vectorial / tensorial ones!

Mohsin Shah

Hi you have done a great job. i wana know that is there anything for birefringence or polarization in this toolbox? can we simulate pulse propagation in a birefringent fiber by this toolbox?


Simply the best toolbox for PDEs

This is a very efficient toolbox. I have been using it to propagate a laser inside a dielectric material using the nonlinear schrodinger equation. It usually takes just a few tens of seconds to complete the propagation.



Fixed mesh resizing bug for spectrum, improved performance, added two new demonstrations and improved documentation.


A bug in the mesh resizing has been fixed, performance improved, documentation improved and a new demonstration has been added (gaffe_demo_soliton) depicting dynamic mesh sizing and step length for a breather soliton.


There was a file missing in version 0.0.10, it has now been included.


Minor performance improvement, minor bug fix in callbacks. Improved callback, included example default callback and new demo for linear problems.


A new demo has been added that depicts the evolution of a breather soliton and demonstrates the resizing mesh and longitudinal stepping.

A bug in the field updating has also been squashed.


Expunged GPL and licensed under BSD, added Hamming number meshes, use simpler MAT file for hamming, humble LUTs.


Now licensed under the BSD, Hamming number mesh lengths have been added, default LUT file version is now compatible with early MATLAB versions.

MATLAB Release
MATLAB 7.9 (R2009b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video