add lammps_expand() to Fortran wrapper

This commit is contained in:
Axel Kohlmeyer
2024-09-20 03:46:36 -04:00
parent 3905cfd0a6
commit 95afe40f55

View File

@ -100,6 +100,7 @@ MODULE LIBLAMMPS
CONTAINS
PROCEDURE :: close => lmp_close
PROCEDURE :: error => lmp_error
PROCEDURE :: expand => lmp_expand
PROCEDURE :: file => lmp_file
PROCEDURE :: command => lmp_command
PROCEDURE :: commands_list => lmp_commands_list
@ -410,6 +411,14 @@ MODULE LIBLAMMPS
TYPE(c_ptr), VALUE :: error_text
END SUBROUTINE lammps_error
FUNCTION lammps_expand(handle, line) BIND(C)
IMPORT :: c_ptr
IMPLICIT NONE
TYPE(c_ptr), INTENT(IN), VALUE :: handle
TYPE(c_ptr), INTENT(IN), VALUE :: line
TYPE(c_ptr) :: lammps_expand
END FUNCTION lammps_expand
SUBROUTINE lammps_file(handle, filename) BIND(C)
IMPORT :: c_ptr
IMPLICIT NONE
@ -1107,10 +1116,24 @@ CONTAINS
CALL lammps_free(str)
END SUBROUTINE lmp_error
! equivalent function to lammps_expand()
FUNCTION lmp_expand(self, line)
CLASS(lammps), INTENT(IN) :: self
CHARACTER(len=*), INTENT(IN) :: line
TYPE(c_ptr) :: str, res
CHARACTER(len=:), ALLOCATABLE :: lmp_expand
str = f2c_string(line)
res = lammps_expand(self%handle, str)
CALL lammps_free(str)
lmp_expand = c2f_string(res)
CALL lammps_free(res)
END FUNCTION lmp_expand
! equivalent function to lammps_file()
SUBROUTINE lmp_file(self, filename)
CLASS(lammps), INTENT(IN) :: self
CHARACTER(len=*) :: filename
CHARACTER(len=*), INTENT(IN) :: filename
TYPE(c_ptr) :: str
str = f2c_string(filename)
@ -1121,7 +1144,7 @@ CONTAINS
! equivalent function to lammps_command()
SUBROUTINE lmp_command(self, cmd)
CLASS(lammps), INTENT(IN) :: self
CHARACTER(len=*) :: cmd
CHARACTER(len=*), INTENT(IN) :: cmd
TYPE(c_ptr) :: str
str = f2c_string(cmd)
@ -1155,7 +1178,7 @@ CONTAINS
! equivalent function to lammps_commands_string()
SUBROUTINE lmp_commands_string(self, str)
CLASS(lammps), INTENT(IN) :: self
CHARACTER(len=*) :: str
CHARACTER(len=*), INTENT(IN) :: str
TYPE(c_ptr) :: tmp
tmp = f2c_string(str)
@ -1173,7 +1196,7 @@ CONTAINS
! equivalent function to lammps_get_thermo
REAL(c_double) FUNCTION lmp_get_thermo(self,name)
CLASS(lammps), INTENT(IN) :: self
CHARACTER(LEN=*) :: name
CHARACTER(LEN=*), INTENT(IN) :: name
TYPE(c_ptr) :: Cname
Cname = f2c_string(name)
@ -1185,7 +1208,7 @@ CONTAINS
FUNCTION lmp_last_thermo(self,what,index) RESULT(thermo_data)
CLASS(lammps), INTENT(IN), TARGET :: self
CHARACTER(LEN=*), INTENT(IN) :: what
INTEGER :: index
INTEGER, INTENT(IN) :: index
INTEGER(c_int) :: idx
TYPE(lammps_data) :: thermo_data, type_data
INTEGER(c_int) :: datatype