1MODULE fftw_interfaces
2
3  INTERFACE
4     SUBROUTINE create_plan_1d( plan, nz, i ) BIND(C,name="create_plan_1d")
5       USE iso_c_binding
6       TYPE(C_PTR) :: plan
7       INTEGER(KIND=C_INT) :: nz, i
8     END SUBROUTINE create_plan_1d
9     SUBROUTINE destroy_plan_1d( plan ) BIND(C,name="destroy_plan_1d")
10       USE iso_c_binding
11       TYPE(C_PTR) :: plan
12     END SUBROUTINE destroy_plan_1d
13
14     SUBROUTINE create_plan_2d( plan, nx, ny, i ) BIND(C,name="create_plan_2d")
15       USE iso_c_binding
16       TYPE(C_PTR) :: plan
17       INTEGER(KIND=C_INT) :: nx, ny, i
18     END SUBROUTINE create_plan_2d
19     SUBROUTINE destroy_plan_2d( plan ) BIND(C,name="destroy_plan_2d")
20       USE iso_c_binding
21       TYPE(C_PTR) :: plan
22     END SUBROUTINE destroy_plan_2d
23
24     SUBROUTINE create_plan_3d( plan, nx, ny, nz, i ) BIND(C,name="create_plan_3d")
25       USE iso_c_binding
26       TYPE(C_PTR) :: plan
27       INTEGER(KIND=C_INT) :: nx, ny, nz, i
28     END SUBROUTINE create_plan_3d
29     SUBROUTINE destroy_plan_3d( plan ) BIND(C,name="destroy_plan_3d")
30       USE iso_c_binding
31       TYPE(C_PTR) :: plan
32     END SUBROUTINE destroy_plan_3d
33
34     SUBROUTINE fft_x_stick( plan, xy, nx, ny, nz, ldx, ldy ) &
35          BIND(C,name="fft_x_stick")
36       USE iso_c_binding
37       TYPE(C_PTR) :: plan
38       INTEGER(KIND=C_INT) :: nx, ny, nz, ldx, ldy
39       COMPLEX(KIND=C_DOUBLE) :: xy
40     END SUBROUTINE fft_x_stick
41
42     SUBROUTINE fft_x_stick_single( plan, xy, nx, ny, nz, ldx, ldy ) &
43          BIND(C,name="fft_x_stick_single")
44       USE iso_c_binding
45       TYPE(C_PTR) :: plan
46       INTEGER(KIND=C_INT) :: nx, ny, nz, ldx, ldy
47       COMPLEX(KIND=C_DOUBLE) :: xy
48     END SUBROUTINE fft_x_stick_single
49
50     SUBROUTINE fft_y_stick( plan, xy, ny, ldx ) BIND(C,name="fft_y_stick")
51       USE iso_c_binding
52       TYPE(C_PTR) :: plan
53       INTEGER(KIND=C_INT) :: ny, ldx
54       COMPLEX(KIND=C_DOUBLE) :: xy
55     END SUBROUTINE fft_y_stick
56
57     SUBROUTINE fft_z_stick( plan, z, ldz, nzl ) BIND(C,name="fft_z_stick")
58       USE iso_c_binding
59       TYPE(C_PTR) :: plan
60       INTEGER(KIND=C_INT) :: ldz, nzl
61       COMPLEX(KIND=C_DOUBLE) :: z
62     END SUBROUTINE fft_z_stick
63
64     SUBROUTINE fft_z_stick_single( plan, z, ldz ) BIND(C,name="fft_z_stick_single")
65       USE iso_c_binding
66       TYPE(C_PTR) :: plan
67       INTEGER(KIND=C_INT) :: ldz
68       COMPLEX(KIND=C_DOUBLE) :: z
69     END SUBROUTINE fft_z_stick_single
70
71     SUBROUTINE fftw_inplace_drv_1d( plan, m, z, inc1, inc2 ) &
72          BIND(C,name="fftw_inplace_drv_1d")
73       USE iso_c_binding
74       TYPE(C_PTR) :: plan
75       INTEGER(KIND=C_INT) :: m, inc1, inc2
76       COMPLEX(KIND=C_DOUBLE) :: z
77     END SUBROUTINE fftw_inplace_drv_1d
78     SUBROUTINE fftw_inplace_drv_3d( plan, m, z, inc1, inc2 ) &
79          BIND(C,name="fftw_inplace_drv_3d")
80       USE iso_c_binding
81       TYPE(C_PTR) :: plan
82       INTEGER(KIND=C_INT) :: m, inc1, inc2
83       COMPLEX(KIND=C_DOUBLE) :: z
84     END SUBROUTINE fftw_inplace_drv_3d
85  END INTERFACE
86
87END MODULE fftw_interfaces
88