laserfields is a library to describe the time-dependent electric fields of a laser pulse. It is written in Fortran 95 and licensed under the MIT License (see LICENSE file). The main author is Johannes Feist (johannes.feist@gmail.com), with some contributions by Stefan Nagele and Renate Pazourek. If you publish work using it, please reference the web page, https://github.com/jfeist/laserfields.
laserfields also includes a Fortran interface (using Fortran C bindings) to the Faddeeva Package by Steven G. Johnson, available from http://jdj.mit.edu/wiki/index.php/Faddeeva_Package.
To compile the library, simply run make
from the main directory. If your compiler is not gfortran, edit the Makefile.
You should only have to modify FC, FCFLAGS, and MODLOCFLAG. For Intel fortran (ifort), you can compile with
make USEIFORT=yes
.
After the compilation has finished, the lib folder should contain two files: liblaserfields.a and laserfields.mod.
To use the library in your program, add the flag -I${LASERFIELDS_DIRECTORY}/lib
to your compilation step,
and -L${LASERFIELDS_DIRECTORY}/lib -llaserfields
to the linking.
To also compile the provided programs, do make progs
.
make test
(requires a recent version of gnuplot) produces test/laserfields_tests.pdf, which shows some sample fields
and their Fourier transform.
Sample input files are in test, while programs contains small programs using the library. For new users, programs/test_laserfields.f90 is probably a good starting point to see how to use the library.
Two short notes are provided: one discusses the units of the Fourier transformed fields, while the other discusses the analytical Fourier transforms of chirped pulses.
In addition, documentation of the source code (autogenerated with doxygen) can be found at https://jfeist.github.io/laserfields. Rewriting the comments in the source code to make this more useful is an ongoing task.