00001
00002 subroutine initfftw()
00003 implicit none
00004 include 'param.f90'
00005 include 'terms3d.f90'
00006
00007 include 'fftw3.f'
00008 integer *4 nn(2),nxny,one,nnc(2),nxnyc
00009
00010
00011 one=1
00012 nn(1)=nx
00013 nn(2)=ny
00014 nnc(1)=nx/2+1
00015 nnc(2)=ny
00016 nxny=nx*ny
00017 nxnyc=(nx/2+1)*ny
00018
00019 call sfftw_plan_many_dft_r2c(plan_r2fd_1,2,nn,nz, &
00020 rd(:,:,1:nz,1),nn,one,nxny, &
00021 fd(:,:,1:nz,1),nnc,one,nxnyc, &
00022 fftw_measure)
00023 call sfftw_plan_many_dft_r2c(plan_r2fd_2,2,nn,nz, &
00024 rd(:,:,1:nz,2),nn,one,nxny, &
00025 fd(:,:,1:nz,2),nnc,one,nxnyc, &
00026 fftw_measure)
00027 call sfftw_plan_many_dft_r2c(plan_r2fd_3,2,nn,nz, &
00028 rd(:,:,1:nz,3),nn,one,nxny, &
00029 fd(:,:,1:nz,3),nnc,one,nxnyc, &
00030 fftw_measure)
00031 call sfftw_plan_many_dft_r2c(plan_r2fd_4,2,nn,nz, &
00032 rd(:,:,1:nz,4),nn,one,nxny, &
00033 fd(:,:,1:nz,4),nnc,one,nxnyc, &
00034 fftw_measure)
00035 call sfftw_plan_many_dft_r2c(plan_r2fd_5,2,nn,nz, &
00036 rd(:,:,1:nz,5),nn,one,nxny, &
00037 fd(:,:,1:nz,5),nnc,one,nxnyc, &
00038 fftw_measure)
00039 call sfftw_plan_many_dft_r2c(plan_r2fd_6,2,nn,nz, &
00040 rd(:,:,1:nz,6),nn,one,nxny, &
00041 fd(:,:,1:nz,6),nnc,one,nxnyc, &
00042 fftw_measure)
00043 call sfftw_plan_many_dft_r2c(plan_r2fvtemp_1,2,nn,nz, &
00044 rvtemp(:,:,1:nz,1),nn,one,nxny, &
00045 fvtemp(:,:,1:nz,1),nnc,one,nxnyc, &
00046 fftw_measure)
00047 call sfftw_plan_many_dft_r2c(plan_r2fvtemp_2,2,nn,nz, &
00048 rvtemp(:,:,1:nz,2),nn,one,nxny, &
00049 fvtemp(:,:,1:nz,2),nnc,one,nxnyc, &
00050 fftw_measure)
00051 call sfftw_plan_many_dft_r2c(plan_r2fvtemp_3,2,nn,nz, &
00052 rvtemp(:,:,1:nz,3),nn,one,nxny, &
00053 fvtemp(:,:,1:nz,3),nnc,one,nxnyc, &
00054 fftw_measure)
00055 call sfftw_plan_many_dft_r2c(plan_r2fpress,2,nn,nz, &
00056 rpress(:,:,1:nz),nn,one,nxny, &
00057 fpress(:,:,1:nz),nnc,one,nxnyc, &
00058 fftw_measure)
00059 call sfftw_plan_many_dft_r2c(plan_r2frhoc,2,nn,nz, &
00060 rrhoc(:,:,1:nz),nn,one,nxny, &
00061 frhoc(:,:,1:nz),nnc,one,nxnyc, &
00062 fftw_measure)
00063 call sfftw_plan_many_dft_r2c(plan_r2frhoe,2,nn,nz, &
00064 rrhoe(:,:,1:nz),nn,one,nxny, &
00065 frhoe(:,:,1:nz),nnc,one,nxnyc, &
00066 fftw_measure)
00067 call sfftw_plan_many_dft_r2c(plan_r2fddt_4,2,nn,nz, &
00068 drddt(:,:,1:nz,4),nn,one,nxny, &
00069 dfddt(:,:,1:nz,4),nnc,one,nxnyc, &
00070 fftw_measure)
00071 call sfftw_plan_many_dft_r2c(plan_r2fddt_5,2,nn,nz, &
00072 drddt(:,:,1:nz,5),nn,one,nxny, &
00073 dfddt(:,:,1:nz,5),nnc,one,nxnyc, &
00074 fftw_measure)
00075 call sfftw_plan_many_dft_r2c(plan_r2fddt_6,2,nn,nz, &
00076 drddt(:,:,1:nz,6),nn,one,nxny, &
00077 dfddt(:,:,1:nz,6),nnc,one,nxnyc, &
00078 fftw_measure)
00079 call sfftw_plan_many_dft_r2c(plan_r2fdB_1,2,nn,nz, &
00080 rdb(:,:,1:nz,1),nn,one,nxny, &
00081 fdb(:,:,1:nz,1),nnc,one,nxnyc, &
00082 fftw_measure)
00083 call sfftw_plan_many_dft_r2c(plan_r2fdB_2,2,nn,nz, &
00084 rdb(:,:,1:nz,2),nn,one,nxny, &
00085 fdb(:,:,1:nz,2),nnc,one,nxnyc, &
00086 fftw_measure)
00087 call sfftw_plan_many_dft_r2c(plan_r2fdB_3,2,nn,nz, &
00088 rdb(:,:,1:nz,3),nn,one,nxny, &
00089 fdb(:,:,1:nz,3),nnc,one,nxnyc, &
00090 fftw_measure)
00091
00092 call sfftw_plan_many_dft_r2c(plan_r2fB0_1,2,nn,nz, &
00093 rb0(:,:,1:nz,1),nn,one,nxny, &
00094 fb0(:,:,1:nz,1),nnc,one,nxnyc, &
00095 fftw_measure)
00096 call sfftw_plan_many_dft_r2c(plan_r2fB0_2,2,nn,nz, &
00097 rb0(:,:,1:nz,2),nn,one,nxny, &
00098 fb0(:,:,1:nz,2),nnc,one,nxnyc, &
00099 fftw_measure)
00100 call sfftw_plan_many_dft_r2c(plan_r2fB0_3,2,nn,nz, &
00101 rb0(:,:,1:nz,3),nn,one,nxny, &
00102 fb0(:,:,1:nz,3),nnc,one,nxnyc, &
00103 fftw_measure)
00104
00105 call sfftw_plan_many_dft_r2c(plan_r2fdJ_1,2,nn,nz, &
00106 rdJ(:,:,1:nz,1),nn,one,nxny, &
00107 fdJ(:,:,1:nz,1),nnc,one,nxnyc, &
00108 fftw_measure)
00109 call sfftw_plan_many_dft_r2c(plan_r2fdJ_2,2,nn,nz, &
00110 rdJ(:,:,1:nz,2),nn,one,nxny, &
00111 fdJ(:,:,1:nz,2),nnc,one,nxnyc, &
00112 fftw_measure)
00113 call sfftw_plan_many_dft_r2c(plan_r2fdJ_3,2,nn,nz, &
00114 rdJ(:,:,1:nz,3),nn,one,nxny, &
00115 fdJ(:,:,1:nz,3),nnc,one,nxnyc, &
00116 fftw_measure)
00117 call sfftw_plan_many_dft_r2c(plan_r2fdUc_1,2,nn,nz, &
00118 rdUc(:,:,1:nz,1),nn,one,nxny, &
00119 fdUc(:,:,1:nz,1),nnc,one,nxnyc, &
00120 fftw_measure)
00121 call sfftw_plan_many_dft_r2c(plan_r2fdUc_2,2,nn,nz, &
00122 rdUc(:,:,1:nz,2),nn,one,nxny, &
00123 fdUc(:,:,1:nz,2),nnc,one,nxnyc, &
00124 fftw_measure)
00125 call sfftw_plan_many_dft_r2c(plan_r2fdUc_3,2,nn,nz, &
00126 rdUc(:,:,1:nz,3),nn,one,nxny, &
00127 fdUc(:,:,1:nz,3),nnc,one,nxnyc, &
00128 fftw_measure)
00129 call sfftw_plan_many_dft_r2c(plan_r2fdUe_1,2,nn,nz, &
00130 rdUe(:,:,1:nz,1),nn,one,nxny, &
00131 fdUe(:,:,1:nz,1),nnc,one,nxnyc, &
00132 fftw_measure)
00133 call sfftw_plan_many_dft_r2c(plan_r2fdUe_2,2,nn,nz, &
00134 rdUe(:,:,1:nz,2),nn,one,nxny, &
00135 fdUe(:,:,1:nz,2),nnc,one,nxnyc, &
00136 fftw_measure)
00137 call sfftw_plan_many_dft_r2c(plan_r2fdUe_3,2,nn,nz, &
00138 rdUe(:,:,1:nz,3),nn,one,nxny, &
00139 fdUe(:,:,1:nz,3),nnc,one,nxnyc, &
00140 fftw_measure)
00141 call sfftw_plan_many_dft_r2c(plan_r2fsrc_amp,2,nn,nz, &
00142 rsrc_amp(:,:,1:nz),nn,one,nxny, &
00143 fsrc_amp(:,:,1:nz),nnc,one,nxnyc, &
00144 fftw_measure)
00145
00146
00147
00148 call sfftw_plan_many_dft_c2r(plan_f2rd_1,&
00149 2,nn,nz, &
00150 fd(:,:,1:nz,1),nnc,one,nxnyc, &
00151 rd(:,:,1:nz,1),nn,one,nxny, &
00152 fftw_measure)
00153 call sfftw_plan_many_dft_c2r(plan_f2rd_2,2,nn,nz, &
00154 fd(:,:,1:nz,2),nnc,one,nxnyc, &
00155 rd(:,:,1:nz,2),nn,one,nxny, &
00156 fftw_measure)
00157 call sfftw_plan_many_dft_c2r(plan_f2rd_3,2,nn,nz, &
00158 fd(:,:,1:nz,3),nnc,one,nxnyc, &
00159 rd(:,:,1:nz,3),nn,one,nxny, &
00160 fftw_measure)
00161
00162 call sfftw_plan_many_dft_c2r(plan_f2rd_4,2,nn,nz, &
00163 fd(:,:,1:nz,4),nnc,one,nxnyc, &
00164 rd(:,:,1:nz,4),nn,one,nxny, &
00165 fftw_measure)
00166 call sfftw_plan_many_dft_c2r(plan_f2rd_5,2,nn,nz, &
00167 fd(:,:,1:nz,5),nnc,one,nxnyc, &
00168 rd(:,:,1:nz,5),nn,one,nxny, &
00169 fftw_measure)
00170 call sfftw_plan_many_dft_c2r(plan_f2rd_6,2,nn,nz, &
00171 fd(:,:,1:nz,6),nnc,one,nxnyc, &
00172 rd(:,:,1:nz,6),nn,one,nxny, &
00173 fftw_measure)
00174 call sfftw_plan_many_dft_c2r(plan_f2rrhoc,2,nn,nz, &
00175 frhoc,nnc,one,nxnyc, &
00176 rrhoc,nn,one,nxny, &
00177 fftw_measure)
00178 call sfftw_plan_many_dft_c2r(plan_f2rrhoe,2,nn,nz, &
00179 frhoe,nnc,one,nxnyc, &
00180 rrhoe,nn,one,nxny, &
00181 fftw_measure)
00182 call sfftw_plan_many_dft_c2r(plan_f2rvtemp_1,2,nn,nz, &
00183 fvtemp(:,:,1:nz,1),nnc,one,nxnyc, &
00184 rvtemp(:,:,1:nz,1),nn,one,nxny, &
00185 fftw_measure)
00186 call sfftw_plan_many_dft_c2r(plan_f2rvtemp_2,2,nn,nz, &
00187 fvtemp(:,:,1:nz,2),nnc,one,nxnyc, &
00188 rvtemp(:,:,1:nz,2),nn,one,nxny, &
00189 fftw_measure)
00190 call sfftw_plan_many_dft_c2r(plan_f2rvtemp_3,2,nn,nz, &
00191 fvtemp(:,:,1:nz,3),nnc,one,nxnyc, &
00192 rvtemp(:,:,1:nz,3),nn,one,nxny, &
00193 fftw_measure)
00194
00195 call sfftw_plan_many_dft_c2r(plan_f2rpress,2,nn,nz, &
00196 fpress(:,:,1:nz),nnc,one,nxnyc, &
00197 rpress(:,:,1:nz),nn,one,nxny, &
00198 fftw_measure)
00199
00200
00201 call sfftw_plan_many_dft_c2r(plan_f2rdb_1,2,nn,nz, &
00202 fdb(:,:,1:nz,1),nnc,one,nxnyc, &
00203 rdb(:,:,1:nz,1),nn,one,nxny, &
00204 fftw_measure)
00205 call sfftw_plan_many_dft_c2r(plan_f2rdb_2,2,nn,nz, &
00206 fdb(:,:,1:nz,2),nnc,one,nxnyc, &
00207 rdb(:,:,1:nz,2),nn,one,nxny, &
00208 fftw_measure)
00209 call sfftw_plan_many_dft_c2r(plan_f2rdb_3,2,nn,nz, &
00210 fdb(:,:,1:nz,3),nnc,one,nxnyc, &
00211 rdb(:,:,1:nz,3),nn,one,nxny, &
00212 fftw_measure)
00213
00214 call sfftw_plan_many_dft_c2r(plan_f2rdJ_1,2,nn,nz, &
00215 fdJ(:,:,1:nz,1),nnc,one,nxnyc, &
00216 rdJ(:,:,1:nz,1),nn,one,nxny, &
00217 fftw_measure)
00218 call sfftw_plan_many_dft_c2r(plan_f2rdJ_2,2,nn,nz, &
00219 fdJ(:,:,1:nz,2),nnc,one,nxnyc, &
00220 rdJ(:,:,1:nz,2),nn,one,nxny, &
00221 fftw_measure)
00222 call sfftw_plan_many_dft_c2r(plan_f2rdJ_3,2,nn,nz, &
00223 fdJ(:,:,1:nz,3),nnc,one,nxnyc, &
00224 rdJ(:,:,1:nz,3),nn,one,nxny, &
00225 fftw_measure)
00226
00227 end subroutine initfftw