Commit 7b3f96d4 authored by Gregor Michalicek's avatar Gregor Michalicek

Reintroduce the difcub function to fleur

It is needed for the Wannier code.
parent 014b83d5
......@@ -22,6 +22,7 @@ math/sphbes.f
math/sphpts.f
math/util.F
math/ylm4.f
math/difcub.f
)
set(fleur_F90 ${fleur_F90}
math/differentiate.f90
......
!--------------------------------------------------------------------------------
! Copyright (c) 2017 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
! This file is part of FLEUR and available as free software under the conditions
! of the MIT license as expressed in the LICENSE file in more detail.
!--------------------------------------------------------------------------------
MODULE m_difcub
CONTAINS
REAL FUNCTION difcub(x,f,xi)
c **********************************************************
c differentiate the function f, given at the
c points x0,x1,x2,x3 at the point xi by lagrange
c interpolation for polynomial of 3rd order
c r.p.
c ***********************************************************
IMPLICIT NONE
C .. Scalar Arguments ..
REAL xi
C ..
C .. Array Arguments ..
REAL f(0:3),x(0:3)
C ..
difcub = ((xi-x(1))* (xi-x(2))+ (xi-x(1))* (xi-x(3))+
+ (xi-x(2))* (xi-x(3)))*f(0)/ ((x(0)-x(1))* (x(0)-x(2))*
+ (x(0)-x(3))) + ((xi-x(0))* (xi-x(2))+
+ (xi-x(0))* (xi-x(3))+ (xi-x(2))* (xi-x(3)))*f(1)/
+ ((x(1)-x(0))* (x(1)-x(2))* (x(1)-x(3))) +
+ ((xi-x(0))* (xi-x(1))+ (xi-x(0))* (xi-x(3))+
+ (xi-x(1))* (xi-x(3)))*f(2)/ ((x(2)-x(0))* (x(2)-x(1))*
+ (x(2)-x(3))) + ((xi-x(0))* (xi-x(1))+
+ (xi-x(0))* (xi-x(2))+ (xi-x(1))* (xi-x(2)))*f(3)/
+ ((x(3)-x(0))* (x(3)-x(1))* (x(3)-x(2)))
RETURN
END FUNCTION difcub
END MODULE m_difcub
......@@ -3,10 +3,9 @@
SUBROUTINE d2fdz2(jmtd,jri,rmsh,dx,f,fac,d2f)
IMPLICIT NONE
USE m_difcub
REAL difcub
EXTERNAL difcub
IMPLICIT NONE
REAL, INTENT(INOUT) :: d2f(jmtd)
REAL, INTENT(IN) :: fac(jmtd)
......
......@@ -3,10 +3,9 @@
SUBROUTINE d2fdz2cmplx(jmtd,jri,rmsh,dx,f,fac,d2f)
IMPLICIT NONE
USE m_difcub
REAL difcub
EXTERNAL difcub
IMPLICIT NONE
COMPLEX, INTENT(INOUT) :: d2f(jmtd)
COMPLEX, INTENT(IN) :: fac(jmtd)
......
......@@ -4,10 +4,9 @@
SUBROUTINE dujdr(jmtd,jri,rmsh,dx,ub,j2,b,l,lmaxd,dub)
USE m_constants
IMPLICIT NONE
USE m_difcub
REAL difcub
EXTERNAL difcub
IMPLICIT NONE
REAL, INTENT(IN) :: rmsh(jmtd),dx
REAL, INTENT(IN) :: ub(jmtd,2) ! u(b2)
......
......@@ -5,10 +5,9 @@
USE m_intgr, ONLY : intgr3
USE m_constants
IMPLICIT NONE
USE m_difcub
REAL difcub
EXTERNAL difcub
IMPLICIT NONE
REAL, INTENT(IN) :: f(jmtd,2),g(jmtd,2)
REAL, INTENT(IN) :: vr(jmtd)
......
......@@ -9,10 +9,9 @@
USE m_intgr, ONLY : intgr3
USE m_constants
IMPLICIT NONE
USE m_difcub
REAL difcub
EXTERNAL difcub
IMPLICIT NONE
REAL, INTENT(IN) :: p(jmtd,2)
REAL, INTENT(IN) :: q(jmtd,2)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment