1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
! $Header$
#ifndef TGR_INCLUDED
#include "cctk.h"
#include "cctk_Parameters.h"
module derivs
implicit none
private
public get_derivs
public get_derivs2
contains
#endif
subroutine get_derivs (a, f, pos, off, dx)
CCTK_REAL, intent(in) :: a(*)
CCTK_REAL, intent(out) :: f(3)
integer, intent(in) :: pos, off(3)
CCTK_REAL, intent(in) :: dx(3)
integer :: i
do i=1,3
f(i) = (a(pos+off(i)) - a(pos-off(i))) / (2*dx(i))
end do
end subroutine get_derivs
subroutine get_derivs2 (a, f, pos, off, dx)
CCTK_REAL, intent(in) :: a(*)
CCTK_REAL, intent(out) :: f(3,3)
integer, intent(in) :: pos, off(3)
CCTK_REAL, intent(in) :: dx(3)
integer :: i
do i=1,3
f(i,i) = (a(pos+off(i)) - 2*a(pos) + a(pos-off(i))) / dx(i)**2
end do
f(1,2) = ( a(pos-off(1)-off(2)) - a(pos+off(1)-off(2)) &
& - a(pos-off(1)+off(2)) + a(pos+off(1)+off(2))) / (4*dx(1)*dx(2))
f(2,1) = f(1,2)
f(1,3) = ( a(pos-off(1)-off(3)) - a(pos+off(1)-off(3)) &
& - a(pos-off(1)+off(3)) + a(pos+off(1)+off(3))) / (4*dx(1)*dx(3))
f(3,1) = f(1,3)
f(2,3) = ( a(pos-off(2)-off(3)) - a(pos+off(2)-off(3)) &
& - a(pos-off(2)+off(3)) + a(pos+off(2)+off(3))) / (4*dx(2)*dx(3))
f(3,2) = f(2,3)
end subroutine get_derivs2
#ifndef TGR_INCLUDED
end module derivs
#endif
|