d_artn_data
-
namespace d_artn_data
Functions
-
subroutine destroy_data()
Deallocate the array of the module d_artn_data.
Variables
- integer, parameter, private maxlen_fname =128
-
integer natoms = -10
Number of atoms, to test coherence in structure between steps.
-
logical has_error =
.false.
-
integer nevalf
- integer, dimension(:), allocatable typ_step
atomic types
- real(dp), dimension(:,:), allocatable tau_step
current coordinates (restart)
- real(dp), dimension(:,:), allocatable force_step
current force (restart)
- real(dp), dimension(:,:), allocatable eigen_step
eigenvector value at current step (updated every step)
- real(dp) etot_step = NAN_REAL
@brief total energy of the current step
- real(dp) delr_step = NAN_REAL
@brief delr of current step
- real(dp) eigval_step = NAN_REAL
- integer, dimension(:), allocatable typ_init
- real(dp), dimension(:,:), allocatable tau_init
initial coordinates
- real(dp), dimension(:,:), allocatable push_init
initial push vector
- real(dp) etot_init = NAN_REAL
- real(dp) delr_init = NAN_REAL
-
logical has_sad =
.false.
- real(dp) etot_sad = NAN_REAL
- real(dp) delr_sad = NAN_REAL
- real(dp) eigval_sad = NAN_REAL
-
integer nevalf_sad = -NAN_INT
number of force evaluations to reach saddle
- integer, dimension(:), allocatable typ_sad
- real(dp), dimension(:,:), allocatable tau_sad
coordinates of saddle point
- real(dp), dimension(:,:), allocatable eigen_sad
saddle point eigenvector
- character(len=maxlen_fname) fname_sad
filename with saddle point (if saved)
-
logical has_min1 =
.false.
- real(dp) etot_min1 = NAN_REAL
- real(dp) delr_min1 = NAN_REAL
- real(dp) eigval_min1 = NAN_REAL
-
integer nevalf_min1 = -NAN_INT
- integer, dimension(:), allocatable typ_min1
- real(dp), dimension(:,:), allocatable tau_min1
- character(len=maxlen_fname) fname_min1
-
logical has_min2 =
.false.
- real(dp) etot_min2 = NAN_REAL
- real(dp) delr_min2 = NAN_REAL
- real(dp) eigval_min2 = NAN_REAL
-
integer nevalf_min2 = -NAN_INT
- integer, dimension(:), allocatable typ_min2
- real(dp), dimension(:,:), allocatable tau_min2
- character(len=maxlen_fname) fname_min2
- real(dp), dimension(:,:), allocatable tau_nextmin
coordinates of the new minimum
- real(dp) etot_final
the total energy of the next minimum along eigenvector
- real(dp) de_saddle
change in E from starting point
- real(dp) de_back
backward barrier
- real(dp) de_fwd
forward barrier
-
interface artn_list_extract
-
interface get_data
Generic routine for getting the
datagroup variables. Actual implementation in file: get_data.f90.Fortran:
! signature: ! subroutine get_data( name, val, ierr ) ! ! description: ! name : character(*), name of variable ! val : the obtained value ! ierr : integer, negative on error, zero otherwise use d_artn_data, only: get_data use h_artn_precision, only: dp integer :: ierr real(DP), allocatable :: pos_sad(:,:) call get_data( "tau_sad", pos_sad, ierr )
The C-wrapper:
// signature: // int get_data( const char *name, void* val ); // // description: // name : string of variable name // val : void ptr to obtained data #include artn.h void *c_val; int ierr = get_data( "eigval_sad", &c_val ); // read the double value from void * double eval_sad = *(double *) c_val;
-
interface save_step_data
-
interface set_data
Generic function for setting values to the
datagroup of variables. Actual implementation in file: set_data.f90. The returned valueierrhas value zero on normal execution, and negative on error.Fortran:
! signature: ! function set_data( name, val ) result( ierr ) ! ! description: ! name : character(*), name of variable ! val : the value to set ! ierr : integer, negative on error, zero otherwise use d_artn_data, only: set_data integer :: ierr ierr = set_data( "natoms", 123 )
The C-wrapper has some additional arguments:
// signature: // int set_data( const char * const name, const int rank, const int* size, const void *val ); // // description: // name : string of variable name // rank : rank of data in `val` // size : array of size `rank`, each element is size of `val` on each dimension // val : ptr to data #include artn.h double eval2 = 0.8; int ierr = set_data( "eigval_min2", 0, 0, &eval2 );
-
subroutine destroy_data()