V3FIT
getbpsq.f
1  SUBROUTINE getbpsq(psixz,nxd,nzd,xgrid,dx,dz,nx,nz,bpsq)
2  USE precision
3  IMPLICIT NONE
4  INTEGER :: nxd,nzd,nx,nz
5  REAL(rprec) :: psixz(nxd,nzd)
6  REAL(rprec) :: bpsq(nxd,nzd)
7  REAL(rprec) :: xgrid(nxd)
8  REAL(rprec) :: dx,dz
9  REAL(rprec) :: dpsixsq
10  INTEGER :: i,j
11  DO i=2,nx-1
12  DO j=2,nz-1
13  bpsq(i,j)=(((psixz(i+1,j)-psixz(i-1,j))/(2.*dx))**2+
14  $ ((psixz(i,j+1)-psixz(i,j-1))/(2.*dz))**2)/
15  $ xgrid(i)**2
16  END DO
17  END DO
18  i=1
19  DO j=2,nz-1
20  bpsq(i,j)=(((-3.*psixz(i,j)+4.*psixz(i+1,j)
21  $ -psixz(i+2,j))/(2.*dx))**2+
22  $ ((psixz(i,j+1)-psixz(i,j-1))/(2.*dz))**2)/
23  $ xgrid(i)**2
24  END DO
25  i=nx
26  DO j=2,nz-1
27  bpsq(i,j)=(((3.*psixz(i,j)-4.*psixz(i-1,j)
28  $ +psixz(i-2,j))/(2.*dx))**2+
29  $ ((psixz(i,j+1)-psixz(i,j-1))/(2.*dz))**2)/
30  $ xgrid(i)**2
31  END DO
32  j=1
33  DO i=1,nx
34  IF(i.eq.1) THEN
35  dpsixsq=((-3.*psixz(i,j)+4.*psixz(i+1,j)
36  $ -psixz(i+2,j))/(2.*dx))**2
37  ELSE IF(i.eq.nx) THEN
38  dpsixsq=((3.*psixz(i,j)-4.*psixz(i-1,j)
39  $ +psixz(i-2,j))/(2.*dx))**2
40  ELSE
41  dpsixsq=((psixz(i+1,j)-psixz(i-1,j))/(2.*dx))**2
42  ENDIF
43  bpsq(i,j)=(dpsixsq+
44  $ ((-3.*psixz(i,j)+4.*psixz(i,j+1)
45  $ -psixz(i,j+2))/(2.*dz))**2)/
46  $ xgrid(i)**2
47  END DO
48  j=nz
49  DO i=1,nx
50  IF(i.eq.1) THEN
51  dpsixsq=((-3.*psixz(i,j)+4.*psixz(i+1,j)
52  $ -psixz(i+2,j))/(2.*dx))**2
53  ELSE IF(i.eq.nx) THEN
54  dpsixsq=((3.*psixz(i,j)-4.*psixz(i-1,j)
55  $ +psixz(i-2,j))/(2.*dx))**2
56  ELSE
57  dpsixsq=((psixz(i+1,j)-psixz(i-1,j))/(2.*dx))**2
58  ENDIF
59  bpsq(i,j)=(dpsixsq+
60  $ ((3.*psixz(i,j)-4.*psixz(i,j-1)
61  $ +psixz(i,j-2))/(2.*dz))**2)/
62  $ xgrid(i)**2
63  END DO
64  RETURN
65  END