Line data Source code
1 : MODULE m_diff 2 : C ****************************************************************** WAB07620 3 : C * * WAB07630 4 : C * <SUBROUTINE DIFF> DIFFERENTIATES THE POTENTIAL <V> IN THE * WAB07640 5 : C * FIRST <N> NET POINTS. * WAB07650 6 : C * <DX> IS THE INCREMENT IN THE LOGARITHMIC NET. * WAB07660 7 : C * THE RESULT IS STORED IN <VM>. * WAB07670 8 : C * * WAB07680 9 : C ****************************************************************** WAB07690 10 : CONTAINS 11 1328 : SUBROUTINE diff( 12 1328 : > mrad,v,dx,n, 13 1328 : < vm) 14 : 15 : IMPLICIT NONE 16 : 17 : C .. Scalar Arguments .. 18 : INTEGER, INTENT (IN) :: mrad,n 19 : REAL , INTENT (IN) :: dx 20 : C .. 21 : C .. Array Arguments .. 22 : REAL , INTENT (IN) :: v(mrad) 23 : REAL , INTENT (OUT):: vm(mrad) 24 : C .. 25 : C .. Local Scalars .. 26 : INTEGER i,nm2 27 : C .. 28 1328 : nm2 = n - 2 29 1328 : vm(1) = v(1) 30 : vm(2) = ((6.0*v(3)+6.6666666667*v(5)+1.20*v(7))- 31 1328 : + (2.450*v(2)+7.50*v(4)+3.750*v(6)+1.0/6.0*v(8)))/dx 32 : 33 378888 : DO i = 3,nm2 34 378888 : vm(i) = ((v(i-2)+8.0*v(i+1))- (8.0*v(i-1)+v(i+2)))/12.0/dx 35 : ENDDO 36 : 37 1328 : vm(n-1) = (v(n)-v(n-2))/2.0/dx 38 1328 : vm(n) = (v(n-2)/2.0-2.0*v(n-1)+1.50*v(n))/dx 39 : 40 1328 : END SUBROUTINE diff 41 : END MODULE m_diff