!
!##################################################################
!##################################################################
!######                                                      ######
!######                 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