Octopus
lasers_oct_m Module Reference

Data Types

type  laser_t
 
interface  lasers_t
 

Functions/Subroutines

class(lasers_t) function, pointer lasers_constructor (namespace)
 
subroutine, public lasers_parse_external_fields (this)
 
subroutine, public lasers_generate_potentials (this, mesh, space, latt)
 
subroutine, public lasers_check_symmetries (this, kpoints)
 
subroutine lasers_finalize (this)
 
subroutine lasers_deallocate (this)
 
real(real64) function, public laser_carrier_frequency (laser)
 
subroutine lasers_init_interaction_as_partner (partner, interaction)
 
subroutine lasers_update_quantity (this, label)
 
subroutine lasers_copy_quantities_to_interaction (partner, interaction)
 
integer pure elemental function, public laser_kind (laser)
 
complex(real64) function, dimension(3), public laser_polarization (laser)
 
logical function, public lasers_with_nondipole_field (lasers)
 Check if a nondipole SFA correction should be computed for the given laser. More...
 
subroutine, public lasers_set_nondipole_parameters (this, ndfield, nd_integration_time)
 Set parameters for nondipole SFA calculation. More...
 
subroutine, public laser_get_f (laser, ff)
 
subroutine, public laser_set_f (laser, ff)
 
subroutine, public laser_get_phi (laser, phi)
 
subroutine, public laser_set_phi (laser, phi)
 
subroutine, public laser_set_empty_phi (laser)
 
subroutine, public laser_set_f_value (laser, ii, xx)
 
subroutine, public laser_set_frequency (laser, omega)
 
subroutine, public laser_set_polarization (laser, pol)
 
subroutine, public laser_to_numerical_all (laser, dt, max_iter, omegamax)
 The td functions that describe the laser field are transformed to a "numerical" representation (i.e. time grid, values at this time grid). More...
 
subroutine, public laser_to_numerical (laser, dt, max_iter, omegamax)
 The td functions that describe the laser field are transformed to a "numerical" representation (i.e. time grid, values at this time grid). More...
 
subroutine, public laser_write_info (lasers, namespace, dt, max_iter, iunit)
 
subroutine, public laser_potential (laser, mesh, pot, time)
 
subroutine, public laser_vector_potential (laser, mesh, aa, time)
 
subroutine, public laser_field (laser, field, time)
 Retrieves the value of either the electric or the magnetic field. If the laser is given by a scalar potential, the field should be a function of space (the gradient of the scalar potential times the temporal dependence), but in that case the subroutine just returns the temporal function. More...
 
subroutine, public lasers_nondipole_laser_field_step (this, field, time)
 Retrieves the NDSFA vector_potential correction. The nondipole field is obtained for consecutive timesteps and adds onto field at the previous timestep (for increased speed). The algorithm finds the accumulated A^M from oldtime to time, and add to the input A^M. The Nondipole field is obtained for an electron of q=-abs(e) =-1 a.u. and m = 1 a.u from \(A^{(M)} = \frac{q}{mc} \int dt \sum_i \sum_j A^{(0)}_i \cdot E^{(0)}_j \widehat{r}_j.\) See PhysRevA.101.043408 (2020), and subsequent paper for condensed matter systems. More...
 
subroutine, public laser_electric_field (laser, field, time, dt)
 Returns a vector with the electric field, no matter whether the laser is described directly as an electric field, or with a vector potential in the velocity gauge. More...
 
subroutine, public load_lasers (partners, namespace)
 

Variables

integer, parameter, public e_field_none = 0
 
integer, parameter, public e_field_electric = 1
 
integer, parameter, public e_field_magnetic = 2
 
integer, parameter, public e_field_vector_potential = 3
 
integer, parameter, public e_field_scalar_potential = 4
 

Function/Subroutine Documentation

◆ lasers_constructor()

class(lasers_t) function, pointer lasers_oct_m::lasers_constructor ( type(namespace_t), intent(in)  namespace)
private

Definition at line 226 of file lasers.F90.

◆ lasers_parse_external_fields()

subroutine, public lasers_oct_m::lasers_parse_external_fields ( class(lasers_t), intent(inout)  this)

Definition at line 244 of file lasers.F90.

◆ lasers_generate_potentials()

subroutine, public lasers_oct_m::lasers_generate_potentials ( class(lasers_t), intent(inout)  this,
class(mesh_t), intent(in)  mesh,
class(space_t), intent(in)  space,
type(lattice_vectors_t), intent(in)  latt 
)

Definition at line 443 of file lasers.F90.

◆ lasers_check_symmetries()

subroutine, public lasers_oct_m::lasers_check_symmetries ( type(lasers_t), intent(in)  this,
type(kpoints_t), intent(in)  kpoints 
)

Definition at line 555 of file lasers.F90.

◆ lasers_finalize()

subroutine lasers_oct_m::lasers_finalize ( type(lasers_t), intent(inout)  this)
private

Definition at line 580 of file lasers.F90.

◆ lasers_deallocate()

subroutine lasers_oct_m::lasers_deallocate ( class(lasers_t), intent(inout)  this)
private

Definition at line 591 of file lasers.F90.

◆ laser_carrier_frequency()

real(real64) function, public lasers_oct_m::laser_carrier_frequency ( type(laser_t), intent(in)  laser)

Definition at line 621 of file lasers.F90.

◆ lasers_init_interaction_as_partner()

subroutine lasers_oct_m::lasers_init_interaction_as_partner ( class(lasers_t), intent(in)  partner,
class(interaction_surrogate_t), intent(inout)  interaction 
)
private

Definition at line 632 of file lasers.F90.

◆ lasers_update_quantity()

subroutine lasers_oct_m::lasers_update_quantity ( class(lasers_t), intent(inout)  this,
character(len=*), intent(in)  label 
)
private

Definition at line 650 of file lasers.F90.

◆ lasers_copy_quantities_to_interaction()

subroutine lasers_oct_m::lasers_copy_quantities_to_interaction ( class(lasers_t), intent(inout)  partner,
class(interaction_surrogate_t), intent(inout)  interaction 
)
private

Definition at line 694 of file lasers.F90.

◆ laser_kind()

integer pure elemental function, public lasers_oct_m::laser_kind ( type(laser_t), intent(in)  laser)

Definition at line 717 of file lasers.F90.

◆ laser_polarization()

complex(real64) function, dimension(3), public lasers_oct_m::laser_polarization ( type(laser_t), intent(in)  laser)

Definition at line 728 of file lasers.F90.

◆ lasers_with_nondipole_field()

logical function, public lasers_oct_m::lasers_with_nondipole_field ( type(lasers_t), intent(in)  lasers)

Check if a nondipole SFA correction should be computed for the given laser.

Definition at line 741 of file lasers.F90.

◆ lasers_set_nondipole_parameters()

subroutine, public lasers_oct_m::lasers_set_nondipole_parameters ( type(lasers_t), intent(inout)  this,
real(real64), dimension(:), intent(in), contiguous  ndfield,
real(real64), intent(in)  nd_integration_time 
)

Set parameters for nondipole SFA calculation.

Definition at line 754 of file lasers.F90.

◆ laser_get_f()

subroutine, public lasers_oct_m::laser_get_f ( type(laser_t), intent(in)  laser,
type(tdf_t), intent(inout)  ff 
)

Definition at line 771 of file lasers.F90.

◆ laser_set_f()

subroutine, public lasers_oct_m::laser_set_f ( type(laser_t), intent(inout)  laser,
type(tdf_t), intent(inout)  ff 
)

Definition at line 784 of file lasers.F90.

◆ laser_get_phi()

subroutine, public lasers_oct_m::laser_get_phi ( type(laser_t), intent(in)  laser,
type(tdf_t), intent(inout)  phi 
)

Definition at line 799 of file lasers.F90.

◆ laser_set_phi()

subroutine, public lasers_oct_m::laser_set_phi ( type(laser_t), intent(inout)  laser,
type(tdf_t), intent(inout)  phi 
)

Definition at line 812 of file lasers.F90.

◆ laser_set_empty_phi()

subroutine, public lasers_oct_m::laser_set_empty_phi ( type(laser_t), intent(inout)  laser)

Definition at line 827 of file lasers.F90.

◆ laser_set_f_value()

subroutine, public lasers_oct_m::laser_set_f_value ( type(laser_t), intent(inout)  laser,
integer, intent(in)  ii,
real(real64), intent(in)  xx 
)

Definition at line 839 of file lasers.F90.

◆ laser_set_frequency()

subroutine, public lasers_oct_m::laser_set_frequency ( type(laser_t), intent(inout)  laser,
real(real64), intent(in)  omega 
)

Definition at line 853 of file lasers.F90.

◆ laser_set_polarization()

subroutine, public lasers_oct_m::laser_set_polarization ( type(laser_t), intent(inout)  laser,
complex(real64), dimension(:), intent(in), contiguous  pol 
)

Definition at line 866 of file lasers.F90.

◆ laser_to_numerical_all()

subroutine, public lasers_oct_m::laser_to_numerical_all ( type(laser_t), intent(inout)  laser,
real(real64), intent(in)  dt,
integer, intent(in)  max_iter,
real(real64), intent(in)  omegamax 
)

The td functions that describe the laser field are transformed to a "numerical" representation (i.e. time grid, values at this time grid).

The possible phase and carrier frequency are evaluated and put together with the envelope, so that the envelope describes the full function (zero phase, zero carrier frequency).

Definition at line 887 of file lasers.F90.

◆ laser_to_numerical()

subroutine, public lasers_oct_m::laser_to_numerical ( type(laser_t), intent(inout)  laser,
real(real64), intent(in)  dt,
integer, intent(in)  max_iter,
real(real64), intent(in)  omegamax 
)

The td functions that describe the laser field are transformed to a "numerical" representation (i.e. time grid, values at this time grid).

Definition at line 918 of file lasers.F90.

◆ laser_write_info()

subroutine, public lasers_oct_m::laser_write_info ( type(laser_t), dimension(:), intent(in), contiguous  lasers,
type(namespace_t), intent(in)  namespace,
real(real64), intent(in), optional  dt,
integer, intent(in), optional  max_iter,
integer, intent(in), optional  iunit 
)

Definition at line 934 of file lasers.F90.

◆ laser_potential()

subroutine, public lasers_oct_m::laser_potential ( type(laser_t), intent(in)  laser,
class(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(inout), contiguous  pot,
real(real64), intent(in), optional  time 
)

Definition at line 1047 of file lasers.F90.

◆ laser_vector_potential()

subroutine, public lasers_oct_m::laser_vector_potential ( type(laser_t), intent(in)  laser,
type(mesh_t), intent(in)  mesh,
real(real64), dimension(:, :), intent(inout), contiguous  aa,
real(real64), intent(in), optional  time 
)

Definition at line 1082 of file lasers.F90.

◆ laser_field()

subroutine, public lasers_oct_m::laser_field ( type(laser_t), intent(in)  laser,
real(real64), dimension(:), intent(inout), contiguous  field,
real(real64), intent(in), optional  time 
)

Retrieves the value of either the electric or the magnetic field. If the laser is given by a scalar potential, the field should be a function of space (the gradient of the scalar potential times the temporal dependence), but in that case the subroutine just returns the temporal function.

Definition at line 1119 of file lasers.F90.

◆ lasers_nondipole_laser_field_step()

subroutine, public lasers_oct_m::lasers_nondipole_laser_field_step ( type(lasers_t), intent(in)  this,
real(real64), dimension(:), intent(out), contiguous  field,
real(real64), intent(in)  time 
)

Retrieves the NDSFA vector_potential correction. The nondipole field is obtained for consecutive timesteps and adds onto field at the previous timestep (for increased speed). The algorithm finds the accumulated A^M from oldtime to time, and add to the input A^M. The Nondipole field is obtained for an electron of q=-abs(e) =-1 a.u. and m = 1 a.u from \(A^{(M)} = \frac{q}{mc} \int dt \sum_i \sum_j A^{(0)}_i \cdot E^{(0)}_j \widehat{r}_j.\) See PhysRevA.101.043408 (2020), and subsequent paper for condensed matter systems.

Definition at line 1154 of file lasers.F90.

◆ laser_electric_field()

subroutine, public lasers_oct_m::laser_electric_field ( type(laser_t), intent(in)  laser,
real(real64), dimension(:), intent(out), contiguous  field,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)

Returns a vector with the electric field, no matter whether the laser is described directly as an electric field, or with a vector potential in the velocity gauge.

Definition at line 1195 of file lasers.F90.

◆ load_lasers()

subroutine, public lasers_oct_m::load_lasers ( class(partner_list_t), intent(inout)  partners,
type(namespace_t), intent(in)  namespace 
)

Definition at line 1232 of file lasers.F90.

Variable Documentation

◆ e_field_none

integer, parameter, public lasers_oct_m::e_field_none = 0

Definition at line 178 of file lasers.F90.

◆ e_field_electric

integer, parameter, public lasers_oct_m::e_field_electric = 1

Definition at line 178 of file lasers.F90.

◆ e_field_magnetic

integer, parameter, public lasers_oct_m::e_field_magnetic = 2

Definition at line 178 of file lasers.F90.

◆ e_field_vector_potential

integer, parameter, public lasers_oct_m::e_field_vector_potential = 3

Definition at line 178 of file lasers.F90.

◆ e_field_scalar_potential

integer, parameter, public lasers_oct_m::e_field_scalar_potential = 4

Definition at line 178 of file lasers.F90.