Add more beef_interface uses

This commit is contained in:
Sasha Fonari 2020-07-08 08:56:27 -04:00
parent e16a52768c
commit 7fc205939b
3 changed files with 32 additions and 7 deletions

View File

@ -17,13 +17,13 @@ MODULE beef_interface
#if defined(use_beef)
!
PUBLIC :: beefx, beeflocalcorr, beeflocalcorrspin, beefsetmode, &
beefrandinit, beefrandinitdef, beefensemble
beefrandinit, beefrandinitdef, beefensemble, beef_set_type
!
INTERFACE
!
SUBROUTINE beefx( r, g, e, dr, dg, addlda ) BIND(C, NAME="beefx_")
USE iso_c_binding
REAL (C_DOUBLE), INTENT(INOUT) :: r, g, e, dr, dg
REAL (C_DOUBLE) :: r, g, e, dr, dg
INTEGER(C_INT), INTENT(IN) :: addlda
END SUBROUTINE beefx
!
@ -59,14 +59,35 @@ MODULE beef_interface
REAL (C_DOUBLE), INTENT(INOUT) :: beefxc(*), ensemble(*)
END SUBROUTINE beefensemble
!
FUNCTION beef_set_type(tbeef, ionode) BIND(C,name="beef_set_type_") RESULT(r)
USE iso_c_binding
INTEGER(C_INT), INTENT(IN) :: tbeef, ionode
LOGICAL(C_INT) :: r
END FUNCTION beef_set_type
FUNCTION beef_set_type_interface(tbeef, ionode) &
BIND(C,name="beef_set_type_") RESULT(r)
USE iso_c_binding
INTEGER(C_INT), INTENT(IN) :: tbeef, ionode
INTEGER(C_INT) :: r
END FUNCTION beef_set_type_interface
!
END INTERFACE
!
CONTAINS
! ====================================================================
!
FUNCTION beef_set_type(tbeef, ionode) RESULT(r)
INTEGER, INTENT(IN) :: tbeef
LOGICAL, INTENT(IN) :: ionode
LOGICAL :: r
! ... local variables ...
INTEGER :: ionode_, r_
!
ionode_ = 0
IF ( ionode ) ionode_ = 1
!
r_ = beef_set_type_interface(tbeef, ionode_)
!
r = .FALSE.
IF ( r_ ) r = .TRUE.
!
END FUNCTION beef_set_type
!
#endif
!
END MODULE beef_interface

View File

@ -39,6 +39,7 @@ MODULE funct
USE xc_f90_types_m
USE xc_f90_lib_m
#endif
!
#if defined(use_beef)
USE beef_interface, ONLY: beef_set_type
#endif

View File

@ -763,6 +763,9 @@ SUBROUTINE gcx_spin( length, rho_in, grho2_in, sx_tot, v1x_out, v2x_out )
!! Gradient corrections for exchange - Hartree a.u.
!
USE exch_gga
#if defined(use_beef)
USE beef_interface, ONLY: beefx
#endif
!
IMPLICIT NONE
!