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 260 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 781 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 811 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 870 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 899 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 939 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 983 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 1035 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 1079 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)  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 1139 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)  fold,
real(real64), dimension(:, :), intent(in)  fnew,
real(real64), intent(in)  dt 
)

A bare verlet integrator.

Definition at line 1174 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 1207 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 1234 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 1262 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 1272 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 1281 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 1290 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 1300 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 1318 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 1331 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 1337 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 1358 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 1380 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 1426 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 1452 of file ion_dynamics.F90.

Variable Documentation

◆ thermo_none

integer, parameter ion_dynamics_oct_m::thermo_none = 0
private

Definition at line 171 of file ion_dynamics.F90.

◆ thermo_scal

integer, parameter ion_dynamics_oct_m::thermo_scal = 1
private

Definition at line 171 of file ion_dynamics.F90.

◆ thermo_nh

integer, parameter ion_dynamics_oct_m::thermo_nh = 2
private

Definition at line 171 of file ion_dynamics.F90.

◆ cell_mass_pr

integer, parameter ion_dynamics_oct_m::cell_mass_pr = 1
private

Definition at line 176 of file ion_dynamics.F90.

◆ cell_mass_mtk

integer, parameter ion_dynamics_oct_m::cell_mass_mtk = 2
private

Definition at line 176 of file ion_dynamics.F90.