Octopus
|
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 |
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.
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 | ||
) |
[in] | ff_rs_inhom_t1 | Inhomogeneous term at t |
[in] | ff_rs_inhom_t2 | Inhomogeneous term at t+dt |
Definition at line 375 of file propagator_mxll.F90.
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.
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.
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.
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.
|
private |
Definition at line 871 of file propagator_mxll.F90.
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.
|
private |
Definition at line 968 of file propagator_mxll.F90.
|
private |
Definition at line 988 of file propagator_mxll.F90.
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.
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.
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.
|
private |
Definition at line 1133 of file propagator_mxll.F90.
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.
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.
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.
|
private |
Definition at line 1405 of file propagator_mxll.F90.
|
private |
Definition at line 1430 of file propagator_mxll.F90.
|
private |
Definition at line 1480 of file propagator_mxll.F90.
|
private |
Definition at line 1559 of file propagator_mxll.F90.
|
private |
Definition at line 1577 of file propagator_mxll.F90.
|
private |
Definition at line 1677 of file propagator_mxll.F90.
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.
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.
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.
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.
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.
|
private |
Definition at line 1935 of file propagator_mxll.F90.
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.
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.
integer, parameter, public propagator_mxll_oct_m::rs_trans_forward = 1 |
Definition at line 207 of file propagator_mxll.F90.
integer, parameter, public propagator_mxll_oct_m::rs_trans_backward = 2 |
Definition at line 207 of file propagator_mxll.F90.
|
private |
Definition at line 211 of file propagator_mxll.F90.
|
private |
Definition at line 211 of file propagator_mxll.F90.