FUNCTION f_lammps_with_args() BIND(C, name="f_lammps_with_args") USE ISO_C_BINDING, ONLY: c_ptr USE liblammps USE keepstuff, 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 keepstuff, 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 keepstuff, ONLY : lmp, big_input, cont_input, pair_input IMPLICIT NONE CALL lmp%commands_list(big_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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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 keepstuff, 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