Octopus
propagator_mxll_oct_m Module Reference

Data Types

type  propagator_mxll_t
 

Functions/Subroutines

subroutine, public propagator_mxll_init (gr, namespace, st, hm, tr)
 
subroutine, public mxll_propagation_step (hm, namespace, gr, space, st, tr, rs_stateb, ff_rs_inhom_t1, ff_rs_inhom_t2, time, dt)
 
subroutine, public mxll_propagate_leapfrog (hm, namespace, gr, space, st, tr, time, dt, counter)
 
subroutine, public mxll_propagate_expgauss1 (hm, namespace, gr, space, st, tr, time, dt)
 Exponential propagation scheme with Gauss collocation points, s=1. More...
 
subroutine, public mxll_propagate_expgauss2 (hm, namespace, gr, space, st, tr, time, dt)
 Exponential propagation scheme with Gauss collocation points, s=2. More...
 
subroutine, public set_medium_rs_state (st, gr, hm)
 
subroutine transform_rs_state_batch (hm, gr, st, rs_stateb, ff_rs_stateb, sign)
 
subroutine, public transform_rs_densities (hm, mesh, rs_charge_density, rs_current_density, ff_density, sign)
 
subroutine transform_rs_densities_to_6x6_rs_densities_forward (mesh, rs_charge_density, rs_current_density, rs_density_6x6)
 
subroutine transform_rs_densities_to_6x6_rs_densities_backward (mesh, rs_density_6x6, rs_charge_density, rs_current_density)
 
subroutine, public calculate_matter_longitudinal_field (gr_mxll, st_mxll, hm_mxll, gr_elec, st_elec, hm_elec, rs_state_matter)
 
subroutine, public get_vector_pot_and_transverse_field (namespace, trans_calc_method, gr_mxll, hm_mxll, st_mxll, tr_mxll, hm, st, poisson_solver, helmholtz, time, field, transverse_field, vector_potential)
 
subroutine, public calculate_vector_potential (namespace, poisson_solver, gr, st, field, vector_potential)
 
subroutine derivatives_boundary_mask (bc, mesh, hm)
 
subroutine, public energy_mxll_calc (gr, st, hm, energy_mxll, rs_field, rs_field_plane_waves)
 
subroutine, public energy_mxll_calc_batch (gr, st, hm, energy_mxll, rs_fieldb, rs_field_plane_wavesb)
 
subroutine, public mask_absorbing_boundaries (namespace, gr, hm, st, tr, time, dt, time_delay, rs_state)
 
subroutine maxwell_mask (hm, rs_state)
 
subroutine pml_propagation_stage_1_batch (hm, gr, st, tr, ff_rs_stateb, ff_rs_state_pmlb)
 
subroutine pml_propagation_stage_2_batch (hm, namespace, gr, st, tr, time, dt, time_delay, ff_rs_state_pmlb, ff_rs_stateb)
 
subroutine cpml_conv_function_update (hm, gr, ff_rs_state_pmlb)
 
subroutine cpml_conv_function_update_via_riemann_silberstein (hm, gr, ff_rs_state_pmlb)
 
subroutine td_function_mxll_init (st, namespace, hm)
 
subroutine, public spatial_constant_calculation (constant_calc, st, gr, hm, time, dt, delay, rs_state, set_initial_state)
 
subroutine, public constant_boundaries_calculation (constant_calc, bc, hm, st, rs_state)
 
subroutine, public mirror_pec_boundaries_calculation (bc, st, rs_state)
 
subroutine, public mirror_pmc_boundaries_calculation (bc, st, rs_state)
 
subroutine, public plane_waves_boundaries_calculation (hm, st, mesh, time, time_delay, rs_state)
 
subroutine plane_waves_propagation (hm, tr, namespace, st, gr, time, dt, time_delay)
 
subroutine, public plane_waves_in_box_calculation (bc, time, space, mesh, der, st, rs_state)
 
subroutine, public mxll_apply_boundaries (tr, st, hm, gr, namespace, time, dt, rs_stateb)
 

Variables

integer, parameter, public rs_trans_forward = 1
 
integer, parameter, public rs_trans_backward = 2
 
integer, parameter mxwll_etrs_full = 0
 
integer, parameter mxwll_etrs_const = 1
 

Function/Subroutine Documentation

◆ propagator_mxll_init()

subroutine, public propagator_mxll_oct_m::propagator_mxll_init ( type(grid_t), intent(in)  gr,
type(namespace_t), intent(in)  namespace,
type(states_mxll_t), intent(inout)  st,
type(hamiltonian_mxll_t), intent(inout)  hm,
type(propagator_mxll_t), intent(inout)  tr 
)

Definition at line 218 of file propagator_mxll.F90.

◆ mxll_propagation_step()

subroutine, public propagator_mxll_oct_m::mxll_propagation_step ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
type(batch_t), intent(inout)  rs_stateb,
complex(real64), dimension(:,:), intent(in), contiguous  ff_rs_inhom_t1,
complex(real64), dimension(:,:), intent(in), contiguous  ff_rs_inhom_t2,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)
Parameters
[in]ff_rs_inhom_t1Inhomogeneous term at t
[in]ff_rs_inhom_t2Inhomogeneous term at t+dt

Definition at line 375 of file propagator_mxll.F90.

◆ mxll_propagate_leapfrog()

subroutine, public propagator_mxll_oct_m::mxll_propagate_leapfrog ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
integer, intent(in)  counter 
)

Definition at line 613 of file propagator_mxll.F90.

◆ mxll_propagate_expgauss1()

subroutine, public propagator_mxll_oct_m::mxll_propagate_expgauss1 ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)

Exponential propagation scheme with Gauss collocation points, s=1.

The propagation step is

\[ F_{n+1} = F_n + dt * \phi_1(-i*dt*H) [-i*H F_n - J_1] \]

where \( J_1 = J(t_n + dt/2) \).

This scheme is second order in time.

see also Hochbruck, M. & Ostermann, A.: Exponential Runge–Kutta methods for parabolic problems. Applied Numerical Mathematics 53, 323–339 (2005).

Definition at line 684 of file propagator_mxll.F90.

◆ mxll_propagate_expgauss2()

subroutine, public propagator_mxll_oct_m::mxll_propagate_expgauss2 ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)

Exponential propagation scheme with Gauss collocation points, s=2.

The propagation step is

\[ F_{n+1} = F_n + dt * \phi_1(-i*dt*H) [-i*H F_n - a_1 J_1 - a_2 J_2] + dt * \phi_2(-i*dt*H) [-b_1 J_1 - b_2 J_2] \]

where \( J_1 = J(t_n + (1/2 - \sqrt(3)/6)*dt) \), \( J_2 = J(t_n + (1/2 + \sqrt(3)/6)*dt) \), \( a_1 = 1/2*(1+\sqrt(3)) \), \( a_2 = 1/2*(1-\sqrt(3)) \), \( b_1 = -\sqrt(3) \), \( b_2 = \sqrt(3) \).

This scheme is fourth order in time.

see also Hochbruck, M. & Ostermann, A.: Exponential Runge–Kutta methods for parabolic problems. Applied Numerical Mathematics 53, 323–339 (2005).

Definition at line 757 of file propagator_mxll.F90.

◆ set_medium_rs_state()

subroutine, public propagator_mxll_oct_m::set_medium_rs_state ( type(states_mxll_t), intent(inout)  st,
type(grid_t), intent(in)  gr,
type(hamiltonian_mxll_t), intent(in)  hm 
)

Definition at line 831 of file propagator_mxll.F90.

◆ transform_rs_state_batch()

subroutine propagator_mxll_oct_m::transform_rs_state_batch ( type(hamiltonian_mxll_t), intent(in)  hm,
type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(in)  st,
type(batch_t), intent(inout)  rs_stateb,
type(batch_t), intent(inout)  ff_rs_stateb,
integer, intent(in)  sign 
)
private

Definition at line 871 of file propagator_mxll.F90.

◆ transform_rs_densities()

subroutine, public propagator_mxll_oct_m::transform_rs_densities ( type(hamiltonian_mxll_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(inout)  rs_charge_density,
complex(real64), dimension(:,:), intent(inout)  rs_current_density,
complex(real64), dimension(:,:), intent(inout)  ff_density,
integer, intent(in)  sign 
)

Definition at line 927 of file propagator_mxll.F90.

◆ transform_rs_densities_to_6x6_rs_densities_forward()

subroutine propagator_mxll_oct_m::transform_rs_densities_to_6x6_rs_densities_forward ( class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:), intent(in)  rs_charge_density,
complex(real64), dimension(:,:), intent(in)  rs_current_density,
complex(real64), dimension(:,:), intent(inout)  rs_density_6x6 
)
private

Definition at line 968 of file propagator_mxll.F90.

◆ transform_rs_densities_to_6x6_rs_densities_backward()

subroutine propagator_mxll_oct_m::transform_rs_densities_to_6x6_rs_densities_backward ( class(mesh_t), intent(in)  mesh,
complex(real64), dimension(:,:), intent(in)  rs_density_6x6,
complex(real64), dimension(:), intent(inout)  rs_charge_density,
complex(real64), dimension(:,:), intent(inout)  rs_current_density 
)
private

Definition at line 988 of file propagator_mxll.F90.

◆ calculate_matter_longitudinal_field()

subroutine, public propagator_mxll_oct_m::calculate_matter_longitudinal_field ( type(grid_t), intent(in)  gr_mxll,
type(states_mxll_t), intent(in)  st_mxll,
type(hamiltonian_mxll_t), intent(in)  hm_mxll,
type(grid_t), intent(in)  gr_elec,
type(states_elec_t), intent(in)  st_elec,
type(hamiltonian_elec_t), intent(in)  hm_elec,
complex(real64), dimension(:,:), intent(inout)  rs_state_matter 
)

Definition at line 1008 of file propagator_mxll.F90.

◆ get_vector_pot_and_transverse_field()

subroutine, public propagator_mxll_oct_m::get_vector_pot_and_transverse_field ( type(namespace_t), intent(in)  namespace,
integer, intent(in)  trans_calc_method,
type(grid_t), intent(in)  gr_mxll,
type(hamiltonian_mxll_t), intent(in)  hm_mxll,
type(states_mxll_t), intent(in)  st_mxll,
type(propagator_mxll_t), intent(in)  tr_mxll,
type(hamiltonian_elec_t), intent(in)  hm,
type(states_elec_t), intent(in)  st,
type(poisson_t), intent(in)  poisson_solver,
type(helmholtz_decomposition_t), intent(inout)  helmholtz,
real(real64), intent(in)  time,
complex(real64), dimension(:,:), intent(inout)  field,
complex(real64), dimension(:,:), intent(inout)  transverse_field,
real(real64), dimension(:,:), intent(inout)  vector_potential 
)

Definition at line 1042 of file propagator_mxll.F90.

◆ calculate_vector_potential()

subroutine, public propagator_mxll_oct_m::calculate_vector_potential ( type(namespace_t), intent(in)  namespace,
type(poisson_t), intent(in)  poisson_solver,
type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(in)  st,
complex(real64), dimension(:,:), intent(in)  field,
real(real64), dimension(:,:), intent(inout)  vector_potential 
)

Definition at line 1105 of file propagator_mxll.F90.

◆ derivatives_boundary_mask()

subroutine propagator_mxll_oct_m::derivatives_boundary_mask ( type(bc_mxll_t), intent(inout)  bc,
class(mesh_t), intent(in)  mesh,
type(hamiltonian_mxll_t), intent(in)  hm 
)
private

Definition at line 1133 of file propagator_mxll.F90.

◆ energy_mxll_calc()

subroutine, public propagator_mxll_oct_m::energy_mxll_calc ( type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(in)  st,
type(hamiltonian_mxll_t), intent(in)  hm,
type(energy_mxll_t), intent(inout)  energy_mxll,
complex(real64), dimension(:,:), intent(in)  rs_field,
complex(real64), dimension(:,:), intent(in), optional  rs_field_plane_waves 
)

Definition at line 1227 of file propagator_mxll.F90.

◆ energy_mxll_calc_batch()

subroutine, public propagator_mxll_oct_m::energy_mxll_calc_batch ( type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(in)  st,
type(hamiltonian_mxll_t), intent(in)  hm,
type(energy_mxll_t), intent(inout)  energy_mxll,
type(batch_t), intent(in)  rs_fieldb,
type(batch_t), intent(in)  rs_field_plane_wavesb 
)

Definition at line 1274 of file propagator_mxll.F90.

◆ mask_absorbing_boundaries()

subroutine, public propagator_mxll_oct_m::mask_absorbing_boundaries ( type(namespace_t), intent(in)  namespace,
type(grid_t), intent(in)  gr,
type(hamiltonian_mxll_t), intent(inout)  hm,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
real(real64), intent(in)  time_delay,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1350 of file propagator_mxll.F90.

◆ maxwell_mask()

subroutine propagator_mxll_oct_m::maxwell_mask ( type(hamiltonian_mxll_t), intent(in)  hm,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)
private

Definition at line 1405 of file propagator_mxll.F90.

◆ pml_propagation_stage_1_batch()

subroutine propagator_mxll_oct_m::pml_propagation_stage_1_batch ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
type(batch_t), intent(in)  ff_rs_stateb,
type(batch_t), intent(inout)  ff_rs_state_pmlb 
)
private

Definition at line 1430 of file propagator_mxll.F90.

◆ pml_propagation_stage_2_batch()

subroutine propagator_mxll_oct_m::pml_propagation_stage_2_batch ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(in)  gr,
type(states_mxll_t), intent(inout)  st,
type(propagator_mxll_t), intent(inout)  tr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
real(real64), intent(in)  time_delay,
type(batch_t), intent(inout)  ff_rs_state_pmlb,
type(batch_t), intent(inout)  ff_rs_stateb 
)
private

Definition at line 1480 of file propagator_mxll.F90.

◆ cpml_conv_function_update()

subroutine propagator_mxll_oct_m::cpml_conv_function_update ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(grid_t), intent(in)  gr,
type(batch_t), intent(inout)  ff_rs_state_pmlb 
)
private

Definition at line 1559 of file propagator_mxll.F90.

◆ cpml_conv_function_update_via_riemann_silberstein()

subroutine propagator_mxll_oct_m::cpml_conv_function_update_via_riemann_silberstein ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(grid_t), intent(in)  gr,
type(batch_t), intent(inout)  ff_rs_state_pmlb 
)
private

Definition at line 1577 of file propagator_mxll.F90.

◆ td_function_mxll_init()

subroutine propagator_mxll_oct_m::td_function_mxll_init ( type(states_mxll_t), intent(inout)  st,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_mxll_t), intent(inout)  hm 
)
private

Definition at line 1677 of file propagator_mxll.F90.

◆ spatial_constant_calculation()

subroutine, public propagator_mxll_oct_m::spatial_constant_calculation ( logical, intent(in)  constant_calc,
type(states_mxll_t), intent(inout)  st,
type(grid_t), intent(in)  gr,
type(hamiltonian_mxll_t), intent(in)  hm,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
real(real64), intent(in)  delay,
complex(real64), dimension(:,:), intent(inout)  rs_state,
logical, intent(in), optional  set_initial_state 
)

Definition at line 1754 of file propagator_mxll.F90.

◆ constant_boundaries_calculation()

subroutine, public propagator_mxll_oct_m::constant_boundaries_calculation ( logical, intent(in)  constant_calc,
type(bc_mxll_t), intent(inout)  bc,
type(hamiltonian_mxll_t), intent(in)  hm,
type(states_mxll_t), intent(in)  st,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1802 of file propagator_mxll.F90.

◆ mirror_pec_boundaries_calculation()

subroutine, public propagator_mxll_oct_m::mirror_pec_boundaries_calculation ( type(bc_mxll_t), intent(in)  bc,
type(states_mxll_t), intent(in)  st,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1830 of file propagator_mxll.F90.

◆ mirror_pmc_boundaries_calculation()

subroutine, public propagator_mxll_oct_m::mirror_pmc_boundaries_calculation ( type(bc_mxll_t), intent(in)  bc,
type(states_mxll_t), intent(in)  st,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1855 of file propagator_mxll.F90.

◆ plane_waves_boundaries_calculation()

subroutine, public propagator_mxll_oct_m::plane_waves_boundaries_calculation ( type(hamiltonian_mxll_t), intent(in)  hm,
type(states_mxll_t), intent(in)  st,
class(mesh_t), intent(in)  mesh,
real(real64), intent(in)  time,
real(real64), intent(in)  time_delay,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1880 of file propagator_mxll.F90.

◆ plane_waves_propagation()

subroutine propagator_mxll_oct_m::plane_waves_propagation ( type(hamiltonian_mxll_t), intent(inout)  hm,
type(propagator_mxll_t), intent(inout)  tr,
type(namespace_t), intent(in)  namespace,
type(states_mxll_t), intent(inout)  st,
type(grid_t), intent(in)  gr,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
real(real64), intent(in)  time_delay 
)
private

Definition at line 1935 of file propagator_mxll.F90.

◆ plane_waves_in_box_calculation()

subroutine, public propagator_mxll_oct_m::plane_waves_in_box_calculation ( type(bc_mxll_t), intent(inout)  bc,
real(real64), intent(in)  time,
class(space_t), intent(in)  space,
class(mesh_t), intent(in)  mesh,
type(derivatives_t), intent(in)  der,
type(states_mxll_t), intent(in)  st,
complex(real64), dimension(:,:), intent(inout)  rs_state 
)

Definition at line 1974 of file propagator_mxll.F90.

◆ mxll_apply_boundaries()

subroutine, public propagator_mxll_oct_m::mxll_apply_boundaries ( type(propagator_mxll_t), intent(inout)  tr,
type(states_mxll_t), intent(inout)  st,
type(hamiltonian_mxll_t), intent(inout)  hm,
type(grid_t), intent(in)  gr,
type(namespace_t), intent(in)  namespace,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
type(batch_t), intent(inout)  rs_stateb 
)

Definition at line 2003 of file propagator_mxll.F90.

Variable Documentation

◆ rs_trans_forward

integer, parameter, public propagator_mxll_oct_m::rs_trans_forward = 1

Definition at line 207 of file propagator_mxll.F90.

◆ rs_trans_backward

integer, parameter, public propagator_mxll_oct_m::rs_trans_backward = 2

Definition at line 207 of file propagator_mxll.F90.

◆ mxwll_etrs_full

integer, parameter propagator_mxll_oct_m::mxwll_etrs_full = 0
private

Definition at line 211 of file propagator_mxll.F90.

◆ mxwll_etrs_const

integer, parameter propagator_mxll_oct_m::mxwll_etrs_const = 1
private

Definition at line 211 of file propagator_mxll.F90.