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, time, dt)
 Time evolution of the ions. More...
 
subroutine ion_dynamics_propagate_cell (this, ions, time, 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 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
 

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 251 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 708 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 738 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 797 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 826 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)  time,
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 866 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)  time,
real(real64), intent(in)  dt,
type(namespace_t), intent(in)  namespace 
)
private

Time-evolution of the lattice vectors.

Definition at line 911 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 964 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 1008 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.

Definition at line 1062 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 1097 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 1130 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 1157 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 1185 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 1195 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 1204 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 1213 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 1223 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 1241 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 1254 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 1260 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 1281 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 1303 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 1347 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.