laserfields
Fortran95 library to describe time-dependent laser pulses
Loading...
Searching...
No Matches
laserfields_module Module Reference

Data Types

type  laserfield
 Datatype describing a single laserfield, should usually be created through make_laserfield routine. More...
interface  make_laserfield
 Make a new type(laserfield), either from parameters or reading from a datafile. More...
interface  get_el
 Return the electric field E(t). if called with a type(laserfield) argument, gets E(t) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_al
 Return the vector potential A(t). if called with a type(laserfield) argument, gets A(t) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_el_posfreq
 Return the positive-frequency part of the electric field E^(+)(t). if called with a type(laserfield) argument, gets E^(+)(t) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_al_posfreq
 Return the positive-frequency part of the vector potential A^(+)(t). if called with a type(laserfield) argument, gets A^(+)(t) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_zl
 Return the free-space displacement Z(t) of an electron. if called with a type(laserfield) argument, gets Z(t) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_el_fourier_transform
 Return the fourier transform \( \tilde E(\omega) = 1/\sqrt{2\pi} \int \exp(-i\omega t) E(t) \mathrm{d}t\). if called with a type(laserfield) argument, gets \(\tilde E(\omega)\) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_al_fourier_transform
 Return the fourier transform \( \tilde A(\omega) = 1/\sqrt{2\pi} \int \exp(-i\omega t) A(t) \mathrm{d}t = i\tilde E(\omega)/\omega\). if called with a type(laserfield) argument, gets \(\tilde A(\omega)\) for just that one field, otherwise gets sum of all fields in all_laserfields. More...
interface  get_el_fourier_transform_string
 Return the fourier transform E(ω) as a string that can be used as a function in gnuplot. if called with a type(laserfield) argument, gets E(ω) for just that one field, otherwise gets sum of all fields in all_laserfields. More...

Functions/Subroutines

subroutine add_laserfield (lf)
 add a type(laserfield) to the global list all_laserfields
subroutine laserfield_set_dependent (lf)
subroutine read_laserfield_from_file (lf)
subroutine laserfield_numerical_derivation_e_from_a (lf)
subroutine laserfield_numerical_integration_a_from_e (lf)
subroutine laserfield_numerical_integration_z_from_a (lf)
subroutine lf_setup_aa_interpolation (lf)
subroutine lf_setup_zz_interpolation (lf)
subroutine lf_get_envelope (lf, zeit, env, envpr)
complex(dpc) function lf_envelope_fourier (lf, omega)
complex(dpc) function expiatbt2_intt (a, b, t)
character(1000) function lf_envelope_fourier_string (lf, omegastr)
subroutine lf_get_omega (lf, zeit, omega, env)
real(dp) function lf_get_halftotaltime (lf)
real(dp) function lf_get_starttime (lf)
real(dp) function lf_get_endtime (lf)
real(dp) function laserfields_starttime ()
real(dp) function laserfields_endtime ()
real(dp) function laserfields_smallest_tx ()
real(dp) function laserfields_largest_possible_dt (zeit, endzeit, global)
 This function gives the maximum timestep that resolves the current oscillation well. the global parameter minimum_steps_per_laser_period determines how large the timestep here is allowed to be.
subroutine write_laserfields (unit, timestep)
real(dp) function laserfield_teff (lf, n_photon)
real(dp) function laserfield_int (lf, n_photon)
real(dp) function tdcs_factor (lf, n_photon)
real(dp) function cs_factor (lf, n_photon)
logical function laserfields_can_get_fourier ()
logical function lf_can_get_fourier (lf)

Variables

real(dp), parameter gaussian_time_cutoff_fwhm = 3.5d0
integer, parameter minimum_steps_per_laser_period = 75
type(laserfield), dimension(100) all_laserfields
 Global array saving the laserfields read from parameter files and added with add_laserfield.
integer n_laserfields = 0
 Number of laserfields in the global array all_laserfields.

Function/Subroutine Documentation

◆ add_laserfield()

subroutine laserfields_module::add_laserfield ( type(laserfield), intent(in) lf)

add a type(laserfield) to the global list all_laserfields

Definition at line 150 of file laserfields_module.f90.

◆ laserfield_set_dependent()

subroutine laserfields_module::laserfield_set_dependent ( type(laserfield), intent(inout) lf)

Definition at line 192 of file laserfields_module.f90.

◆ read_laserfield_from_file()

subroutine laserfields_module::read_laserfield_from_file ( type(laserfield), intent(inout) lf)

Definition at line 256 of file laserfields_module.f90.

◆ laserfield_numerical_derivation_e_from_a()

subroutine laserfields_module::laserfield_numerical_derivation_e_from_a ( type(laserfield), intent(inout) lf)

Definition at line 366 of file laserfields_module.f90.

◆ laserfield_numerical_integration_a_from_e()

subroutine laserfields_module::laserfield_numerical_integration_a_from_e ( type(laserfield), intent(inout) lf)

Definition at line 384 of file laserfields_module.f90.

◆ laserfield_numerical_integration_z_from_a()

subroutine laserfields_module::laserfield_numerical_integration_z_from_a ( type(laserfield), intent(inout) lf)

Definition at line 429 of file laserfields_module.f90.

◆ lf_setup_aa_interpolation()

subroutine laserfields_module::lf_setup_aa_interpolation ( type(laserfield), intent(inout) lf)

Definition at line 474 of file laserfields_module.f90.

◆ lf_setup_zz_interpolation()

subroutine laserfields_module::lf_setup_zz_interpolation ( type(laserfield), intent(inout) lf)

Definition at line 505 of file laserfields_module.f90.

◆ lf_get_envelope()

subroutine laserfields_module::lf_get_envelope ( type(laserfield), intent(in) lf,
real(dp), intent(in) zeit,
real(dp), intent(out) env,
real(dp), intent(out) envpr )

Definition at line 546 of file laserfields_module.f90.

◆ lf_envelope_fourier()

complex(dpc) function laserfields_module::lf_envelope_fourier ( type(laserfield), intent(in) lf,
real(dp), intent(in) omega )

Definition at line 614 of file laserfields_module.f90.

◆ expiatbt2_intt()

complex(dpc) function laserfields_module::expiatbt2_intt ( real(dp), intent(in) a,
real(dp), intent(in) b,
real(dp), intent(in) t )

Definition at line 676 of file laserfields_module.f90.

◆ lf_envelope_fourier_string()

character(1000) function laserfields_module::lf_envelope_fourier_string ( type(laserfield), intent(in) lf,
character(*), intent(in) omegastr )

Definition at line 698 of file laserfields_module.f90.

◆ lf_get_omega()

subroutine laserfields_module::lf_get_omega ( type(laserfield), intent(in) lf,
real(dp), intent(in) zeit,
real(dp), intent(out) omega,
real(dp), intent(inout), optional env )

Definition at line 768 of file laserfields_module.f90.

◆ lf_get_halftotaltime()

real(dp) function laserfields_module::lf_get_halftotaltime ( type(laserfield), intent(in) lf)

Definition at line 1031 of file laserfields_module.f90.

◆ lf_get_starttime()

real(dp) function laserfields_module::lf_get_starttime ( type(laserfield), intent(in) lf)

Definition at line 1050 of file laserfields_module.f90.

◆ lf_get_endtime()

real(dp) function laserfields_module::lf_get_endtime ( type(laserfield), intent(in) lf)

Definition at line 1059 of file laserfields_module.f90.

◆ laserfields_starttime()

real(dp) function laserfields_module::laserfields_starttime

Definition at line 1068 of file laserfields_module.f90.

◆ laserfields_endtime()

real(dp) function laserfields_module::laserfields_endtime

Definition at line 1076 of file laserfields_module.f90.

◆ laserfields_smallest_tx()

real(dp) function laserfields_module::laserfields_smallest_tx

Definition at line 1084 of file laserfields_module.f90.

◆ laserfields_largest_possible_dt()

real(dp) function laserfields_module::laserfields_largest_possible_dt ( real(dp), intent(in) zeit,
real(dp), intent(in), optional endzeit,
logical, intent(in), optional global )

This function gives the maximum timestep that resolves the current oscillation well. the global parameter minimum_steps_per_laser_period determines how large the timestep here is allowed to be.

Definition at line 1095 of file laserfields_module.f90.

◆ write_laserfields()

subroutine laserfields_module::write_laserfields ( integer, intent(in) unit,
real(dp), intent(in), optional timestep )

Definition at line 1151 of file laserfields_module.f90.

◆ laserfield_teff()

real(dp) function laserfields_module::laserfield_teff ( type(laserfield), intent(in) lf,
integer, intent(in) n_photon )

Definition at line 1178 of file laserfields_module.f90.

◆ laserfield_int()

real(dp) function laserfields_module::laserfield_int ( type(laserfield), intent(in) lf,
integer, intent(in) n_photon )

Definition at line 1208 of file laserfields_module.f90.

◆ tdcs_factor()

real(dp) function laserfields_module::tdcs_factor ( type(laserfield), intent(in) lf,
integer, intent(in) n_photon )

Definition at line 1215 of file laserfields_module.f90.

◆ cs_factor()

real(dp) function laserfields_module::cs_factor ( type(laserfield), intent(in) lf,
integer, intent(in) n_photon )

Definition at line 1224 of file laserfields_module.f90.

◆ laserfields_can_get_fourier()

logical function laserfields_module::laserfields_can_get_fourier

Definition at line 1233 of file laserfields_module.f90.

◆ lf_can_get_fourier()

logical function laserfields_module::lf_can_get_fourier ( type(laserfield), intent(in) lf)

Definition at line 1241 of file laserfields_module.f90.

Variable Documentation

◆ gaussian_time_cutoff_fwhm

real(dp), parameter laserfields_module::gaussian_time_cutoff_fwhm = 3.5d0

Definition at line 9 of file laserfields_module.f90.

◆ minimum_steps_per_laser_period

integer, parameter laserfields_module::minimum_steps_per_laser_period = 75

Definition at line 10 of file laserfields_module.f90.

◆ all_laserfields

type(laserfield), dimension(100) laserfields_module::all_laserfields

Global array saving the laserfields read from parameter files and added with add_laserfield.

Definition at line 77 of file laserfields_module.f90.

◆ n_laserfields

integer laserfields_module::n_laserfields = 0

Number of laserfields in the global array all_laserfields.

Definition at line 79 of file laserfields_module.f90.