58 subroutine exponential_midpoint(hm, namespace, space, gr, st, tr, time, dt, ions_dyn, ions, ext_partners, mc)
59 type(hamiltonian_elec_t),
target,
intent(inout) :: hm
60 type(namespace_t),
intent(in) :: namespace
61 type(electron_space_t),
intent(in) :: space
62 type(grid_t),
target,
intent(inout) :: gr
63 type(states_elec_t),
target,
intent(inout) :: st
64 type(propagator_base_t),
target,
intent(inout) :: tr
65 real(real64),
intent(in) :: time
66 real(real64),
intent(in) :: dt
67 type(ion_dynamics_t),
intent(inout) :: ions_dyn
68 type(ions_t),
intent(inout) :: ions
69 type(partner_list_t),
intent(in) :: ext_partners
70 type(multicomm_t),
intent(inout) :: mc
72 type(gauge_field_t),
pointer :: gfield
76 call hm%ks_pot%interpolate_potentials(tr%vks_old, 3, time, dt, time - dt/
m_two)
83 if(
associated(gfield))
then
95 if(
associated(gfield))
then
107 subroutine exponential_midpoint_predictor(hm, ks, namespace, space, gr, st, tr, time, dt, ions_dyn, ions, ext_partners, mc)
108 type(hamiltonian_elec_t),
target,
intent(inout) :: hm
109 type(v_ks_t),
intent(inout) :: ks
110 type(namespace_t),
intent(in) :: namespace
111 type(electron_space_t),
intent(in) :: space
112 type(grid_t),
target,
intent(inout) :: gr
113 type(states_elec_t),
target,
intent(inout) :: st
114 type(propagator_base_t),
target,
intent(inout) :: tr
115 real(real64),
intent(in) :: time
116 real(real64),
intent(in) :: dt
117 type(ion_dynamics_t),
intent(inout) :: ions_dyn
118 type(ions_t),
intent(inout) :: ions
119 type(partner_list_t),
intent(in) :: ext_partners
120 type(multicomm_t),
intent(inout) :: mc
122 type(gauge_field_t),
pointer :: gfield
123 type(states_elec_t) :: st0
136 call v_ks_calc(ks, namespace, space, hm, st, ions, ext_partners, &
137 calc_current = .false., calc_energy = .false., calc_eigenval = .false.)
149 if(
associated(gfield))
then
162 if(
associated(gfield))
then
type(gauge_field_t) function, pointer, public list_get_gauge_field(partners)
real(real64), parameter, public m_two
integer, parameter, public independent_particles
Theory level.
real(real64), parameter, public m_half
This module implements the underlying real-space grid.
This module defines classes and functions for interaction partners.
A module to handle KS potential, without the external potential.
This module handles the communicators for the various parallelization strategies.
subroutine, public propagation_ops_elec_restore_ions(wo, ions_dyn, ions)
subroutine, public propagation_ops_elec_propagate_gauge_field(wo, gfield, dt, time, save_gf)
subroutine, public propagation_ops_elec_update_hamiltonian(namespace, space, st, mesh, hm, ext_partners, time)
subroutine, public propagation_ops_elec_fuse_density_exp_apply(te, namespace, st, gr, hm, dt, dt2, op)
subroutine, public propagation_ops_elec_restore_gauge_field(wo, namespace, space, hm, mesh, ext_partners)
subroutine, public propagation_ops_elec_move_ions(wo, gr, hm, st, namespace, space, ions_dyn, ions, ext_partners, mc, time, dt, save_pos)
subroutine, public exponential_midpoint_predictor(hm, ks, namespace, space, gr, st, tr, time, dt, ions_dyn, ions, ext_partners, mc)
Exponential midpoint with prediction of the half time step This is equivalent to an explicit Magnus i...
subroutine, public exponential_midpoint(hm, namespace, space, gr, st, tr, time, dt, ions_dyn, ions, ext_partners, mc)
Exponential midpoint.
This module handles groups of electronic batches and their parallel distribution.
subroutine, public states_elec_group_copy(d, group_in, group_out, copy_data, special)
make a copy of a group
subroutine, public states_elec_end(st)
finalize the states_elec_t object
subroutine, public states_elec_copy(stout, stin, exclude_wfns, exclude_eigenval, special)
make a (selective) copy of a states_elec_t object
subroutine, public v_ks_calc(ks, namespace, space, hm, st, ions, ext_partners, calc_eigenval, time, calc_energy, calc_current, force_semilocal)