Line data Source code
1 : MODULE m_d2fdz2
2 : CONTAINS
3 :
4 0 : SUBROUTINE d2fdz2(jmtd,jri,rmsh,dx,f,fac,d2f)
5 :
6 : USE m_difcub
7 :
8 : IMPLICIT NONE
9 :
10 : INTEGER, INTENT(IN) :: jmtd
11 : REAL, INTENT(INOUT) :: d2f(jmtd)
12 : REAL, INTENT(IN) :: fac(jmtd)
13 : REAL, INTENT(IN) :: f(jmtd)
14 : REAL, INTENT(IN) :: rmsh(jmtd)
15 : REAL, INTENT(IN) :: dx
16 :
17 : INTEGER, INTENT(IN) :: jri
18 :
19 0 : REAL, ALLOCATABLE :: fr(:),dfr(:)
20 : INTEGER :: i
21 :
22 0 : allocate( dfr(jri),fr(jri) )
23 0 : DO i=1,jri
24 0 : fr(i) = f(i)*fac(i)
25 : ENDDO
26 :
27 0 : dfr(1) = difcub( rmsh(1),fr(1),rmsh(1) )
28 0 : DO i = 2, jri-2
29 0 : dfr(i) = difcub( rmsh(i-1),fr(i-1),rmsh(i) )
30 : ENDDO
31 0 : dfr(jri-1) = difcub( rmsh(jri-3),fr(jri-3),rmsh(jri-1) )
32 0 : dfr(jri) = difcub( rmsh(jri-3),fr(jri-3),rmsh(jri) )
33 :
34 :
35 0 : d2f(1) = difcub( rmsh(1),dfr(1),rmsh(1) )
36 0 : DO i = 2, jri-2
37 0 : d2f(i) = difcub( rmsh(i-1),dfr(i-1),rmsh(i) )
38 : ENDDO
39 0 : d2f(jri-1) = difcub( rmsh(jri-3),dfr(jri-3),rmsh(jri-1) )
40 0 : d2f(jri) = difcub( rmsh(jri-3),dfr(jri-3),rmsh(jri) )
41 :
42 :
43 0 : deallocate( dfr,fr )
44 :
45 0 : END SUBROUTINE d2fdz2
46 : END MODULE m_d2fdz2
|