! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE SCALE_FACTOR ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! define a dirac function at each grid point and ! get the response function ! ! AUTHOR: ! ! Jidong Gao, CAPS, 2000 ! ! !----------------------------------------------------------------------- ! SUBROUTINE scale_factor(nx,ny,nz,pscalc,ipass_filt,radius,radius_z) 2,1 ! ! ! define a dirac function at each grid point and ! get the response function ! implicit NONE ! INTEGER :: nx, ny, nz, ipass_filt,radius, radius_z INTEGER :: ii,jj,kk,i,j,k REAL :: pscalc(nx,ny,nz) REAL, DIMENSION (:,:,:), allocatable :: dirac REAL :: const ! ! allocate ( dirac(nx,ny,nz) ) dirac = 0. jj = ny/2 ii = nx/2 kk = nz/2 dirac(ii,jj,kk) = 1. CALL recurfilt_3d_scale( nx,ny,nz,dirac,ipass_filt,radius,radius_z ) const = sqrt( 1. / dirac(ii,jj,kk)) ! print*,'pscalc(ii,jj,kk) =',pscalc(ii,jj,kk) ! DO jj=1, ny DO ii=1, nx DO kk=1, nz pscalc (ii,jj,kk) = const END DO END DO END DO ! print*,'pscalc=',const ! ! DO jj=1, ny ! DO ii=1, nx ! DO kk=1, nz ! ! dirac = 0. ! ! dirac(ii,jj,kk) = 1. ! ! CALL recurfilt_2d( nx,ny,dirac,ipass_filt,radius ) ! ! CALL recurfilt_3d( nx,ny,nz,dirac,ipass_filt,radius,radius_z ) ! ! pscalc (ii,jj,kk) = 1. / dirac(ii,jj,kk) ! ! END DO ! END DO ! END DO ! deallocate(dirac) ! ! RETURN END SUBROUTINE scale_factor