492 lines
16 KiB
Fortran
492 lines
16 KiB
Fortran
MODULE keepglobal
|
|
USE liblammps
|
|
TYPE(LAMMPS) :: lmp
|
|
CHARACTER(LEN=40), DIMENSION(3), PARAMETER :: demo_input = &
|
|
[ CHARACTER(len=40) :: &
|
|
'region box block 0 $x 0 3 0 4', &
|
|
'create_box 1 box', &
|
|
'create_atoms 1 single 1.0 1.0 ${zpos}' ]
|
|
CHARACTER(LEN=40), DIMENSION(2), PARAMETER :: cont_input = &
|
|
[ CHARACTER(len=40) :: &
|
|
'create_atoms 1 single &', &
|
|
' 0.2 0.1 0.1' ]
|
|
CHARACTER(LEN=40), DIMENSION(3), PARAMETER :: pair_input = &
|
|
[ CHARACTER(LEN=40) :: &
|
|
'pair_style lj/cut 2.5', &
|
|
'pair_coeff 1 1 1.0 1.0', &
|
|
'mass 1 1.0' ]
|
|
END MODULE keepglobal
|
|
|
|
FUNCTION f_lammps_with_args() BIND(C, name="f_lammps_with_args")
|
|
USE ISO_C_BINDING, ONLY: c_ptr
|
|
USE liblammps
|
|
USE keepglobal, ONLY: lmp
|
|
IMPLICIT NONE
|
|
TYPE(c_ptr) :: f_lammps_with_args
|
|
CHARACTER(len=12), DIMENSION(12), PARAMETER :: args = &
|
|
[ CHARACTER(len=12) :: 'liblammps', '-log', 'none', &
|
|
'-echo','screen','-nocite','-var','zpos','1.5','-var','x','2']
|
|
|
|
lmp = lammps(args)
|
|
f_lammps_with_args = lmp%handle
|
|
END FUNCTION f_lammps_with_args
|
|
|
|
SUBROUTINE f_lammps_close() BIND(C, name="f_lammps_close")
|
|
USE ISO_C_BINDING, ONLY: c_null_ptr
|
|
USE liblammps
|
|
USE keepglobal, ONLY: lmp
|
|
IMPLICIT NONE
|
|
|
|
CALL lmp%close()
|
|
lmp%handle = c_null_ptr
|
|
END SUBROUTINE f_lammps_close
|
|
|
|
SUBROUTINE f_lammps_setup_extract_global () BIND(C)
|
|
USE LIBLAMMPS
|
|
USE keepglobal, ONLY : lmp, demo_input, cont_input, pair_input
|
|
IMPLICIT NONE
|
|
|
|
CALL lmp%commands_list(demo_input)
|
|
CALL lmp%commands_list(cont_input)
|
|
CALL lmp%commands_list(pair_input)
|
|
CALL lmp%command('run 0')
|
|
END SUBROUTINE f_lammps_setup_extract_global
|
|
|
|
SUBROUTINE f_lammps_setup_full_extract_global () BIND(C)
|
|
USE LIBLAMMPS
|
|
USE keepglobal, ONLY : lmp
|
|
IMPLICIT NONE
|
|
INTERFACE
|
|
SUBROUTINE f_lammps_setup_extract_global () BIND(C)
|
|
END SUBROUTINE f_lammps_setup_extract_global
|
|
END INTERFACE
|
|
|
|
CALL lmp%command('atom_style full')
|
|
CALL f_lammps_setup_extract_global
|
|
CALL lmp%command('bond_style zero')
|
|
CALL lmp%command('angle_style zero')
|
|
CALL lmp%command('dihedral_style zero')
|
|
CALL lmp%command('run 0')
|
|
END SUBROUTINE f_lammps_setup_full_extract_global
|
|
|
|
FUNCTION f_lammps_extract_global_units () BIND(C) RESULT(success)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE LIBLAMMPS
|
|
USE keepglobal, ONLY : lmp
|
|
IMPLICIT NONE
|
|
INTEGER (C_int) :: success
|
|
CHARACTER (LEN=16) :: units
|
|
|
|
! passing strings from Fortran to C is icky, so we do the test here and
|
|
! report the result instead
|
|
units = lmp%extract_global('units')
|
|
IF ( TRIM(units) == 'lj' ) THEN
|
|
success = 1_C_int
|
|
ELSE
|
|
success = 0_C_int
|
|
END IF
|
|
END FUNCTION f_lammps_extract_global_units
|
|
|
|
FUNCTION f_lammps_extract_global_ntimestep () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: ntimestep
|
|
INTEGER (C_int) :: f_lammps_extract_global_ntimestep
|
|
|
|
ntimestep = lmp%extract_global("ntimestep")
|
|
f_lammps_extract_global_ntimestep = ntimestep
|
|
END FUNCTION f_lammps_extract_global_ntimestep
|
|
FUNCTION f_lammps_extract_global_ntimestep_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: ntimestep
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_ntimestep_big
|
|
|
|
ntimestep = lmp%extract_global("ntimestep")
|
|
f_lammps_extract_global_ntimestep_big = ntimestep
|
|
END FUNCTION f_lammps_extract_global_ntimestep_big
|
|
|
|
FUNCTION f_lammps_extract_global_dt () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double), POINTER :: dt
|
|
REAL (C_double) :: f_lammps_extract_global_dt
|
|
|
|
dt = lmp%extract_global("dt")
|
|
f_lammps_extract_global_dt = dt
|
|
END FUNCTION f_lammps_extract_global_dt
|
|
|
|
SUBROUTINE f_lammps_extract_global_boxlo (C_boxlo) BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double), DIMENSION(3) :: C_boxlo
|
|
REAL (C_double), DIMENSION(:), POINTER :: boxlo
|
|
|
|
boxlo = lmp%extract_global("boxlo")
|
|
C_boxlo = boxlo
|
|
END SUBROUTINE f_lammps_extract_global_boxlo
|
|
|
|
SUBROUTINE f_lammps_extract_global_boxhi (C_boxhi) BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double), DIMENSION(3) :: C_boxhi
|
|
REAL (C_double), DIMENSION(:), POINTER :: boxhi
|
|
|
|
boxhi = lmp%extract_global("boxhi")
|
|
C_boxhi = boxhi
|
|
END SUBROUTINE f_lammps_extract_global_boxhi
|
|
|
|
FUNCTION f_lammps_extract_global_boxxlo () BIND(C) RESULT(C_boxxlo)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxxlo
|
|
REAL (C_double), POINTER :: boxxlo
|
|
|
|
boxxlo = lmp%extract_global("boxxlo")
|
|
C_boxxlo = boxxlo
|
|
END FUNCTION f_lammps_extract_global_boxxlo
|
|
|
|
FUNCTION f_lammps_extract_global_boxxhi () BIND(C) RESULT(C_boxxhi)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxxhi
|
|
REAL (C_double), POINTER :: boxxhi
|
|
|
|
boxxhi = lmp%extract_global("boxxhi")
|
|
C_boxxhi = boxxhi
|
|
END FUNCTION f_lammps_extract_global_boxxhi
|
|
|
|
FUNCTION f_lammps_extract_global_boxylo () BIND(C) RESULT(C_boxylo)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxylo
|
|
REAL (C_double), POINTER :: boxylo
|
|
|
|
boxylo = lmp%extract_global("boxylo")
|
|
C_boxylo = boxylo
|
|
END FUNCTION f_lammps_extract_global_boxylo
|
|
|
|
FUNCTION f_lammps_extract_global_boxyhi () BIND(C) RESULT(C_boxyhi)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxyhi
|
|
REAL (C_double), POINTER :: boxyhi
|
|
|
|
boxyhi = lmp%extract_global("boxyhi")
|
|
C_boxyhi = boxyhi
|
|
END FUNCTION f_lammps_extract_global_boxyhi
|
|
|
|
FUNCTION f_lammps_extract_global_boxzlo () BIND(C) RESULT(C_boxzlo)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxzlo
|
|
REAL (C_double), POINTER :: boxzlo
|
|
|
|
boxzlo = lmp%extract_global("boxzlo")
|
|
C_boxzlo = boxzlo
|
|
END FUNCTION f_lammps_extract_global_boxzlo
|
|
|
|
FUNCTION f_lammps_extract_global_boxzhi () BIND(C) RESULT(C_boxzhi)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_boxzhi
|
|
REAL (C_double), POINTER :: boxzhi
|
|
|
|
boxzhi = lmp%extract_global("boxzhi")
|
|
C_boxzhi = boxzhi
|
|
END FUNCTION f_lammps_extract_global_boxzhi
|
|
|
|
SUBROUTINE f_lammps_extract_global_periodicity (C_periodicity) BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), DIMENSION(3) :: C_periodicity
|
|
INTEGER (C_int), DIMENSION(:), POINTER :: periodicity
|
|
|
|
periodicity = lmp%extract_global("periodicity")
|
|
C_periodicity = periodicity
|
|
END SUBROUTINE f_lammps_extract_global_periodicity
|
|
|
|
FUNCTION f_lammps_extract_global_triclinic () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: triclinic
|
|
INTEGER (C_int) :: f_lammps_extract_global_triclinic
|
|
|
|
triclinic = lmp%extract_global("triclinic")
|
|
f_lammps_extract_global_triclinic = triclinic
|
|
END FUNCTION f_lammps_extract_global_triclinic
|
|
|
|
FUNCTION f_lammps_extract_global_xy () BIND(C) RESULT(C_xy)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_xy
|
|
REAL (C_double), POINTER :: xy
|
|
|
|
xy = lmp%extract_global("xy")
|
|
C_xy = xy
|
|
END FUNCTION f_lammps_extract_global_xy
|
|
|
|
FUNCTION f_lammps_extract_global_xz () BIND(C) RESULT(C_xz)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_xz
|
|
REAL (C_double), POINTER :: xz
|
|
|
|
xz = lmp%extract_global("xz")
|
|
C_xz = xz
|
|
END FUNCTION f_lammps_extract_global_xz
|
|
|
|
FUNCTION f_lammps_extract_global_yz () BIND(C) RESULT(C_yz)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_yz
|
|
REAL (C_double), POINTER :: yz
|
|
|
|
yz = lmp%extract_global("yz")
|
|
C_yz = yz
|
|
END FUNCTION f_lammps_extract_global_yz
|
|
|
|
FUNCTION f_lammps_extract_global_natoms () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: natoms
|
|
INTEGER (C_int) :: f_lammps_extract_global_natoms
|
|
|
|
natoms = lmp%extract_global("natoms")
|
|
f_lammps_extract_global_natoms = natoms
|
|
END FUNCTION f_lammps_extract_global_natoms
|
|
FUNCTION f_lammps_extract_global_natoms_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: natoms
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_natoms_big
|
|
|
|
natoms = lmp%extract_global("natoms")
|
|
f_lammps_extract_global_natoms_big = natoms
|
|
END FUNCTION f_lammps_extract_global_natoms_big
|
|
|
|
FUNCTION f_lammps_extract_global_nbonds () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nbonds
|
|
INTEGER (C_int) :: f_lammps_extract_global_nbonds
|
|
|
|
nbonds = lmp%extract_global("nbonds")
|
|
f_lammps_extract_global_nbonds = nbonds
|
|
END FUNCTION f_lammps_extract_global_nbonds
|
|
FUNCTION f_lammps_extract_global_nbonds_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: nbonds
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_nbonds_big
|
|
|
|
nbonds = lmp%extract_global("nbonds")
|
|
f_lammps_extract_global_nbonds_big = nbonds
|
|
END FUNCTION f_lammps_extract_global_nbonds_big
|
|
|
|
FUNCTION f_lammps_extract_global_nangles () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nangles
|
|
INTEGER (C_int) :: f_lammps_extract_global_nangles
|
|
|
|
nangles = lmp%extract_global("nangles")
|
|
f_lammps_extract_global_nangles = nangles
|
|
END FUNCTION f_lammps_extract_global_nangles
|
|
FUNCTION f_lammps_extract_global_nangles_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: nangles
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_nangles_big
|
|
|
|
nangles = lmp%extract_global("nangles")
|
|
f_lammps_extract_global_nangles_big = nangles
|
|
END FUNCTION f_lammps_extract_global_nangles_big
|
|
|
|
FUNCTION f_lammps_extract_global_ndihedrals () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: ndihedrals
|
|
INTEGER (C_int) :: f_lammps_extract_global_ndihedrals
|
|
|
|
ndihedrals = lmp%extract_global("ndihedrals")
|
|
f_lammps_extract_global_ndihedrals = ndihedrals
|
|
END FUNCTION f_lammps_extract_global_ndihedrals
|
|
FUNCTION f_lammps_extract_global_ndihedrals_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: ndihedrals
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_ndihedrals_big
|
|
|
|
ndihedrals = lmp%extract_global("ndihedrals")
|
|
f_lammps_extract_global_ndihedrals_big = ndihedrals
|
|
END FUNCTION f_lammps_extract_global_ndihedrals_big
|
|
|
|
FUNCTION f_lammps_extract_global_nimpropers () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nimpropers
|
|
INTEGER (C_int) :: f_lammps_extract_global_nimpropers
|
|
|
|
nimpropers = lmp%extract_global("nimpropers")
|
|
f_lammps_extract_global_nimpropers = nimpropers
|
|
END FUNCTION f_lammps_extract_global_nimpropers
|
|
FUNCTION f_lammps_extract_global_nimpropers_big () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int64_t
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int64_t), POINTER :: nimpropers
|
|
INTEGER (C_int64_t) :: f_lammps_extract_global_nimpropers_big
|
|
|
|
nimpropers = lmp%extract_global("nimpropers")
|
|
f_lammps_extract_global_nimpropers_big = nimpropers
|
|
END FUNCTION f_lammps_extract_global_nimpropers_big
|
|
|
|
|
|
FUNCTION f_lammps_extract_global_ntypes () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: ntypes
|
|
INTEGER (C_int) :: f_lammps_extract_global_ntypes
|
|
|
|
ntypes = lmp%extract_global("ntypes")
|
|
f_lammps_extract_global_ntypes = ntypes
|
|
END FUNCTION f_lammps_extract_global_ntypes
|
|
|
|
FUNCTION f_lammps_extract_global_nlocal () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nlocal
|
|
INTEGER (C_int) :: f_lammps_extract_global_nlocal
|
|
|
|
nlocal = lmp%extract_global("nlocal")
|
|
f_lammps_extract_global_nlocal = nlocal
|
|
END FUNCTION f_lammps_extract_global_nlocal
|
|
|
|
FUNCTION f_lammps_extract_global_nghost () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nghost
|
|
INTEGER (C_int) :: f_lammps_extract_global_nghost
|
|
|
|
nghost = lmp%extract_global("nghost")
|
|
f_lammps_extract_global_nghost = nghost
|
|
END FUNCTION f_lammps_extract_global_nghost
|
|
|
|
FUNCTION f_lammps_extract_global_nmax () BIND(C)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_int
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
INTEGER (C_int), POINTER :: nmax
|
|
INTEGER (C_int) :: f_lammps_extract_global_nmax
|
|
|
|
nmax = lmp%extract_global("nmax")
|
|
f_lammps_extract_global_nmax = nmax
|
|
END FUNCTION f_lammps_extract_global_nmax
|
|
|
|
FUNCTION f_lammps_extract_global_boltz () BIND(C) RESULT(C_k_B)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_k_B
|
|
REAL (C_double), POINTER :: k_B
|
|
|
|
k_B = lmp%extract_global("boltz")
|
|
C_k_B = k_B
|
|
END FUNCTION f_lammps_extract_global_boltz
|
|
|
|
FUNCTION f_lammps_extract_global_hplanck () BIND(C) RESULT(C_h)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: C_h
|
|
REAL (C_double), POINTER :: h
|
|
|
|
h = lmp%extract_global("boltz")
|
|
C_h = h
|
|
END FUNCTION f_lammps_extract_global_hplanck
|
|
|
|
FUNCTION f_lammps_extract_global_angstrom () BIND(C) RESULT(Angstrom)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: Angstrom
|
|
REAL (C_double), POINTER :: A
|
|
|
|
A = lmp%extract_global("angstrom")
|
|
Angstrom = A
|
|
END FUNCTION f_lammps_extract_global_angstrom
|
|
|
|
FUNCTION f_lammps_extract_global_femtosecond () BIND(C) RESULT(fs)
|
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_double
|
|
USE keepglobal, ONLY : lmp
|
|
USE LIBLAMMPS
|
|
IMPLICIT NONE
|
|
REAL (C_double) :: fs
|
|
REAL (C_double), POINTER :: femtosecond
|
|
|
|
femtosecond = lmp%extract_global("femtosecond")
|
|
fs = femtosecond
|
|
END FUNCTION f_lammps_extract_global_femtosecond
|