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
 

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 254 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 711 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 741 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 800 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 829 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 869 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 913 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 965 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 1009 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 1063 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 1098 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 1131 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 1158 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 1186 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 1196 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 1205 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 1214 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 1224 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 1242 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 1255 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 1261 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 1282 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 1304 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 1348 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 1374 of file ion_dynamics.F90.

Variable Documentation

◆ thermo_none

integer, parameter ion_dynamics_oct_m::thermo_none = 0
private

Definition at line 172 of file ion_dynamics.F90.

◆ thermo_scal

integer, parameter ion_dynamics_oct_m::thermo_scal = 1
private

Definition at line 172 of file ion_dynamics.F90.

◆ thermo_nh

integer, parameter ion_dynamics_oct_m::thermo_nh = 2
private

Definition at line 172 of file ion_dynamics.F90.