Octopus
ion_dynamics_oct_m Module Reference

Data Types

type  cell_state_t
 
type  ion_dynamics_t
 
type  ion_state_t
 
type  ion_td_displacement_t
 
type  nose_hoover_t
 

Functions/Subroutines

subroutine, public ion_dynamics_init (this, namespace, ions, symmetrize, symm)
 
subroutine, public ion_dynamics_end (this)
 
subroutine, public ion_dynamics_propagate (this, ions, time, dt, namespace)
 Interface for the ion/cell dynamics. More...
 
subroutine ion_dynamics_update_temperature (this, time, namespace)
 Update the temperature of the ions in case of a thermostat. More...
 
subroutine ion_dynamics_propagate_driven_ions (this, ions, time, dt)
 Move ions following a driven motion. More...
 
subroutine ion_dynamics_propagate_ions (this, ions, dt)
 Time evolution of the ions. More...
 
subroutine ion_dynamics_propagate_cell (this, ions, dt, namespace)
 Time-evolution of the lattice vectors. More...
 
subroutine nh_chain (this, ions)
 
subroutine, public ion_dynamics_propagate_vel (this, ions, atoms_moved)
 
subroutine, public ion_dynamics_verlet_step1 (ions, q, v, fold, dt)
 A bare verlet integrator. More...
 
subroutine, public ion_dynamics_verlet_step2 (ions, v, fold, fnew, dt)
 A bare verlet integrator. More...
 
subroutine, public ion_dynamics_save_state (this, ions, state)
 
subroutine, public ion_dynamics_restore_state (this, ions, state)
 
logical pure function ion_dynamics_ions_move (this)
 
logical pure function, public ion_dynamics_drive_ions (this)
 Is the ion dynamics activated or not. More...
 
logical pure function ion_dynamics_cell_relax (this)
 Is the cell dynamics activated or not. More...
 
logical pure function ion_dynamics_is_active (this)
 Is the cell dynamics activated or not. More...
 
real(real64) function, public ion_dynamics_temperature (ions)
 This function returns the ionic temperature in energy units. More...
 
logical function, public ion_dynamics_freeze (this)
 Freezes the ionic movement. More...
 
subroutine, public ion_dynamics_unfreeze (this)
 Unfreezes the ionic movement. More...
 
subroutine, public ion_dynamics_dump (this, restart, ierr)
 
subroutine, public ion_dynamics_load (this, restart, ierr)
 
subroutine ion_dynamics_update_stress (this, space, stress, rlattice, rcell_volume)
 Updates the stress tensor for the ion dynamics. More...
 
subroutine, public ion_dynamics_box_update (namespace, gr, space, new_latt)
 
subroutine, public electrons_lattice_vectors_update (namespace, gr, space, psolver, kpoints, mc, qtot, new_latt)
 

Variables

integer, parameter thermo_none = 0
 
integer, parameter thermo_scal = 1
 
integer, parameter thermo_nh = 2
 
integer, parameter cell_mass_pr = 1
 
integer, parameter cell_mass_mtk = 2
 

Function/Subroutine Documentation

◆ ion_dynamics_init()

subroutine, public ion_dynamics_oct_m::ion_dynamics_init ( type(ion_dynamics_t), intent(out)  this,
type(namespace_t), intent(in)  namespace,
type(ions_t), intent(inout)  ions,
logical, intent(in)  symmetrize,
type(symmetrizer_t), intent(in), optional, target  symm 
)

Definition at line 258 of file ion_dynamics.F90.

◆ ion_dynamics_end()

subroutine, public ion_dynamics_oct_m::ion_dynamics_end ( type(ion_dynamics_t), intent(inout)  this)

Definition at line 779 of file ion_dynamics.F90.

◆ ion_dynamics_propagate()

subroutine, public ion_dynamics_oct_m::ion_dynamics_propagate ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt,
type(namespace_t), intent(in)  namespace 
)

Interface for the ion/cell dynamics.

Definition at line 809 of file ion_dynamics.F90.

◆ ion_dynamics_update_temperature()

subroutine ion_dynamics_oct_m::ion_dynamics_update_temperature ( type(ion_dynamics_t), intent(inout)  this,
real(real64), intent(in)  time,
type(namespace_t), intent(in)  namespace 
)
private

Update the temperature of the ions in case of a thermostat.

Definition at line 868 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_driven_ions()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_driven_ions ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  time,
real(real64), intent(in)  dt 
)
private

Move ions following a driven motion.

This can be a constant velocity, or a prescribed time-dependent displacement

Definition at line 897 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_ions()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_ions ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  dt 
)
private

Time evolution of the ions.

On input, the coordinates are in reduced coordinates, not in Cartesian coordinates. Coordinates are returned in reduced coordinate

Definition at line 937 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_cell()

subroutine ion_dynamics_oct_m::ion_dynamics_propagate_cell ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
real(real64), intent(in)  dt,
type(namespace_t), intent(in)  namespace 
)
private

Time-evolution of the lattice vectors.

Definition at line 981 of file ion_dynamics.F90.

◆ nh_chain()

subroutine ion_dynamics_oct_m::nh_chain ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions 
)
private

Definition at line 1033 of file ion_dynamics.F90.

◆ ion_dynamics_propagate_vel()

subroutine, public ion_dynamics_oct_m::ion_dynamics_propagate_vel ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
logical, intent(out), optional  atoms_moved 
)
Parameters
[out]atoms_movedReturns true if the atoms were moved by this function.

Definition at line 1077 of file ion_dynamics.F90.

◆ ion_dynamics_verlet_step1()

subroutine, public ion_dynamics_oct_m::ion_dynamics_verlet_step1 ( type(ions_t), intent(in)  ions,
real(real64), dimension(:, :), intent(inout)  q,
real(real64), dimension(:, :), intent(inout)  v,
real(real64), dimension(:, :), intent(in), contiguous  fold,
real(real64), intent(in)  dt 
)

A bare verlet integrator.

Note q and v are transposed compared to the rest of the code.

Definition at line 1137 of file ion_dynamics.F90.

◆ ion_dynamics_verlet_step2()

subroutine, public ion_dynamics_oct_m::ion_dynamics_verlet_step2 ( type(ions_t), intent(in)  ions,
real(real64), dimension(:, :), intent(inout)  v,
real(real64), dimension(:, :), intent(in), contiguous  fold,
real(real64), dimension(:, :), intent(in), contiguous  fnew,
real(real64), intent(in)  dt 
)

A bare verlet integrator.

Definition at line 1172 of file ion_dynamics.F90.

◆ ion_dynamics_save_state()

subroutine, public ion_dynamics_oct_m::ion_dynamics_save_state ( type(ion_dynamics_t), intent(in)  this,
type(ions_t), intent(in)  ions,
type(ion_state_t), intent(out)  state 
)

Definition at line 1205 of file ion_dynamics.F90.

◆ ion_dynamics_restore_state()

subroutine, public ion_dynamics_oct_m::ion_dynamics_restore_state ( type(ion_dynamics_t), intent(inout)  this,
type(ions_t), intent(inout)  ions,
type(ion_state_t), intent(inout)  state 
)

Definition at line 1232 of file ion_dynamics.F90.

◆ ion_dynamics_ions_move()

logical pure function ion_dynamics_oct_m::ion_dynamics_ions_move ( class(ion_dynamics_t), intent(in)  this)
private

Definition at line 1260 of file ion_dynamics.F90.

◆ ion_dynamics_drive_ions()

logical pure function, public ion_dynamics_oct_m::ion_dynamics_drive_ions ( type(ion_dynamics_t), intent(in)  this)

Is the ion dynamics activated or not.

Definition at line 1270 of file ion_dynamics.F90.

◆ ion_dynamics_cell_relax()

logical pure function ion_dynamics_oct_m::ion_dynamics_cell_relax ( class(ion_dynamics_t), intent(in)  this)
private

Is the cell dynamics activated or not.

Definition at line 1279 of file ion_dynamics.F90.

◆ ion_dynamics_is_active()

logical pure function ion_dynamics_oct_m::ion_dynamics_is_active ( class(ion_dynamics_t), intent(in)  this)
private

Is the cell dynamics activated or not.

Definition at line 1288 of file ion_dynamics.F90.

◆ ion_dynamics_temperature()

real(real64) function, public ion_dynamics_oct_m::ion_dynamics_temperature ( type(ions_t), intent(in)  ions)

This function returns the ionic temperature in energy units.

Definition at line 1298 of file ion_dynamics.F90.

◆ ion_dynamics_freeze()

logical function, public ion_dynamics_oct_m::ion_dynamics_freeze ( type(ion_dynamics_t), intent(inout)  this)

Freezes the ionic movement.

Definition at line 1316 of file ion_dynamics.F90.

◆ ion_dynamics_unfreeze()

subroutine, public ion_dynamics_oct_m::ion_dynamics_unfreeze ( type(ion_dynamics_t), intent(inout)  this)

Unfreezes the ionic movement.

Definition at line 1329 of file ion_dynamics.F90.

◆ ion_dynamics_dump()

subroutine, public ion_dynamics_oct_m::ion_dynamics_dump ( type(ion_dynamics_t), intent(in)  this,
type(restart_t), intent(in)  restart,
integer, intent(out)  ierr 
)

Definition at line 1335 of file ion_dynamics.F90.

◆ ion_dynamics_load()

subroutine, public ion_dynamics_oct_m::ion_dynamics_load ( type(ion_dynamics_t), intent(inout)  this,
type(restart_t), intent(in)  restart,
integer, intent(out)  ierr 
)

Definition at line 1356 of file ion_dynamics.F90.

◆ ion_dynamics_update_stress()

subroutine ion_dynamics_oct_m::ion_dynamics_update_stress ( class(ion_dynamics_t), intent(inout)  this,
class(space_t), intent(in)  space,
real(real64), dimension(3,3), intent(in)  stress,
real(real64), dimension(:,:), intent(in)  rlattice,
real(real64), intent(in)  rcell_volume 
)
private

Updates the stress tensor for the ion dynamics.

Definition at line 1378 of file ion_dynamics.F90.

◆ ion_dynamics_box_update()

subroutine, public ion_dynamics_oct_m::ion_dynamics_box_update ( type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(lattice_vectors_t), intent(in)  new_latt 
)

Definition at line 1424 of file ion_dynamics.F90.

◆ electrons_lattice_vectors_update()

subroutine, public ion_dynamics_oct_m::electrons_lattice_vectors_update ( type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
class(space_t), intent(in)  space,
type(poisson_t), intent(inout)  psolver,
type(kpoints_t), intent(inout)  kpoints,
type(multicomm_t), intent(in)  mc,
real(real64), intent(in)  qtot,
type(lattice_vectors_t), intent(in)  new_latt 
)

Definition at line 1450 of file ion_dynamics.F90.

Variable Documentation

◆ thermo_none

integer, parameter ion_dynamics_oct_m::thermo_none = 0
private

Definition at line 169 of file ion_dynamics.F90.

◆ thermo_scal

integer, parameter ion_dynamics_oct_m::thermo_scal = 1
private

Definition at line 169 of file ion_dynamics.F90.

◆ thermo_nh

integer, parameter ion_dynamics_oct_m::thermo_nh = 2
private

Definition at line 169 of file ion_dynamics.F90.

◆ cell_mass_pr

integer, parameter ion_dynamics_oct_m::cell_mass_pr = 1
private

Definition at line 174 of file ion_dynamics.F90.

◆ cell_mass_mtk

integer, parameter ion_dynamics_oct_m::cell_mass_mtk = 2
private

Definition at line 174 of file ion_dynamics.F90.