58 USE gft,
only: gft_prec
64 INTEGER,
INTENT(IN) :: isp, year
66 REAL(kind=gft_prec) :: seedprodarea(0:
spec(isp)%maxlatEvenext-1, 1:
spec(isp)%maxlonEvenext), &
67 seedrainarea(0:
spec(isp)%maxlatEvenext-1, 1:
spec(isp)%maxlonEvenext)
71 COMPLEX(kind=GFT_Prec):: kernel_FT(0:spec(isp)%maxlatExt/2,spec(isp)%maxlonExt)
75 INTEGER :: ilat, ilon, latStart_Area, latEnd_Area,lonStart_Area, lonEnd_Area
76 REAL::producedSeedssum,producedSeedsav, presThresh
81 if (producedseedssum==0)
THEN
82 seedrain(:,:)%sp(isp)%verynewSeeds = 0
92 seedprodarea(:,:) = 0.
93 seedprodarea(latstart_area:latend_area,lonstart_area:lonend_area)=
stategrid(1:
maxlat,1:
maxlon)%sp(isp)%producedSeeds
98 kernel_ft=spec(isp)%kernel_FT
104 spec(isp)%maxlatEvenext,spec(isp)%maxlonEvenext,&
105 spec(isp)%maxlatExt, spec(isp)%maxlonExt, &
106 seedprodarea, kernel_ft ,seedrainarea)
110 do ilat =latstart_area, latend_area
111 do ilon= lonstart_area, lonend_area
112 if (seedrainarea(ilat, ilon)/producedseedsav <
epskernel * presthresh) &
113 seedrainarea(ilat, ilon)=0
119 verynewseedsarray = seedrainarea((latstart_area ) :(latend_area ), lonstart_area :lonend_area)
122 seedrain(:,:)%sp(isp)%verynewSeeds = 0.
123 seedrain(:,:)%sp(isp)%verynewSeeds = verynewseedsarray
148 USE gft,
only: gft_prec
150 REAL(kind=gft_prec),
DIMENSION(dimystart:dimyend,dimxstart:dimxend),
INTENT (in):: array
151 INTEGER,
INTENT(in):: dimystart,dimyend,dimxstart,dimxend
152 CHARACTER(*),
INTENT(in):: varname
154 CHARACTER*50 :: filenamelong
157 filenamelong =
"AreaOutputs/"//varname//
".txt"
158 print *, varname,
" printing"
159 open(17,file= trim(filenamelong) )
160 write(17,*)
"i,j,", varname
161 do i= dimystart,dimyend
162 do j= dimxstart,dimxend
163 write(17,*) i,
",",j,
",",array(i,j)
202 USE gft,
only: gft_prec
208 INTEGER,
INTENT(IN) :: isp
211 INTEGER :: kerneldim, y_dim_kernel_orig,x_dim_kernel_orig,y_dim_kernel,x_dim_kernel, rad
213 REAL (kind=gft_prec),
allocatable,
dimension(:,:):: kernel_shifted, kernel_orig
214 COMPLEX(kind=GFT_Prec),
allocatable,
dimension(:,:):: kernel_FT
220 y_dim_kernel = ((kerneldim-1)/2) * 2 +2
221 x_dim_kernel = ((kerneldim-1)/2) * 2 +2
223 y_dim_kernel_orig=kerneldim
224 x_dim_kernel_orig=kerneldim
226 allocate( kernel_shifted(0:y_dim_kernel-1,1:x_dim_kernel))
227 allocate( kernel_orig(kerneldim,kerneldim))
228 allocate( kernel_ft(0 :
spec(isp)%maxlatExt/2, 1 :
spec(isp)%maxlonExt))
230 kernel_orig(:,:) =0.; kernel_shifted(:,:)=0.; kernel_ft(0:,:)=0.;
spec(isp)%kernel_FT (0: ,:)=0.
232 kernel_orig=
spec(isp)%kernel(-rad:rad, -rad:rad)
239 y_dim_kernel, x_dim_kernel,&
240 kernel_orig,kernel_shifted)
246 spec(isp)%maxlatExt,
spec(isp)%maxlonExt ,&
247 y_dim_kernel,x_dim_kernel, kernel_shifted, kernel_ft)
250 spec(isp)%kernel_FT=kernel_ft
253 deallocate(kernel_shifted)
254 deallocate(kernel_ft)
255 deallocate(kernel_orig)
subroutine gft2dconvolution(isp, ny, mx, niy, mjx, spatdatain, kerneltransf, spatdataout)
subroutine gft2dtransformkernel(ny, mx, niy, mjx, y_dim_kernel, x_dim_kernel, kernelin, kerneltransf)
GFT2DTransformKernel
subroutine shiftkerneltoeven(ispec, y_dim_kernel_orig, x_dim_kernel_orig, y_dim_kernel, x_dim_kernel, kernel_orig, kernel_shifted)
ShiftKernelToEven.