stat_sur Subroutine

private subroutine stat_sur()

Note

Define surface statistical moments as reference

Arguments

None

Calls

proc~~stat_sur~~CallsGraph proc~stat_sur stat_sur proc~acf_wiener acf_wiener proc~stat_sur->proc~acf_wiener proc~apod_sur apod_sur proc~stat_sur->proc~apod_sur proc~surface_analysis surface_analysis proc~stat_sur->proc~surface_analysis sort_array2 sort_array2 proc~stat_sur->sort_array2 std_array std_array proc~stat_sur->std_array calc_fftw3_real_bwd calc_fftw3_real_bwd proc~acf_wiener->calc_fftw3_real_bwd calc_fftw3_real_fwd calc_fftw3_real_fwd proc~acf_wiener->calc_fftw3_real_fwd tab_calc_fftw3_real_bwd tab_calc_fftw3_real_bwd proc~acf_wiener->tab_calc_fftw3_real_bwd tab_calc_fftw3_real_fwd tab_calc_fftw3_real_fwd proc~acf_wiener->tab_calc_fftw3_real_fwd trans_corner2center trans_corner2center proc~acf_wiener->trans_corner2center proc~apod_sur->std_array apod apod proc~apod_sur->apod proc~surface_analysis->proc~acf_wiener abbott_param abbott_param proc~surface_analysis->abbott_param calc_median calc_median proc~surface_analysis->calc_median calc_moments calc_moments proc~surface_analysis->calc_moments calcul_asfc_hermite calcul_asfc_hermite proc~surface_analysis->calcul_asfc_hermite calcul_normales calcul_normales proc~surface_analysis->calcul_normales ellipse_acf ellipse_acf proc~surface_analysis->ellipse_acf fft_filter fft_filter proc~surface_analysis->fft_filter get_unit get_unit proc~surface_analysis->get_unit indice_fractal indice_fractal proc~surface_analysis->indice_fractal multiple_anisotropy multiple_anisotropy proc~surface_analysis->multiple_anisotropy peaks_and_pits_curvatures peaks_and_pits_curvatures proc~surface_analysis->peaks_and_pits_curvatures surf_area surf_area proc~surface_analysis->surf_area topology topology proc~surface_analysis->topology

Called by

proc~~stat_sur~~CalledByGraph proc~stat_sur stat_sur proc~read_job read_job proc~read_job->proc~stat_sur proc~prg_surf prg_surf proc~prg_surf->proc~read_job program~main main program~main->proc~prg_surf

Source Code

   subroutine stat_sur()
   !================================================================================================
   !<@note Define surface statistical moments as reference
   !<
   !<@endnote
   !------------------------------------------------------------------------------------------------
   implicit none

      integer(kind=I4) :: w, h, l
      logical(kind=I4) :: apodize

      read(JOB,*) apodize ; LINE_READ = LINE_READ + 1 ; write(SPY,*) "line: ", LINE_READ, 'apod? ', apodize

      w = PARAM%width
      h = PARAM%height
      l = PARAM%npts

      PARAM%surf_copy(1:w, 1:h) = PARAM%surf(1:w, 1:h)

      if ( apodize ) then

         ! apodize surface for the acf
         call apod_sur()

         call acf_wiener(  tab_in = PARAM%surf(1:w, 1:h),          &  ! IN
                          tab_out = PARAM%acf_surf(1:w, 1:h),      &  ! OUT
                                w = w,                             &  ! IN
                                h = h  )                              ! IN

         ! retrieve original surface
         PARAM%surf(1:w, 1:h) = PARAM%surf_copy(1:w, 1:h)

      endif

      ! do not append to result file, make new one
      call surface_analysis( app = 0 )

      ! calculate statistical moments that become prescribed
      call std_array(tab = PARAM%surf(1:w, 1:h), mx = PARAM%m_end)

      ! determine final heights
      PARAM%vect_h(1:l) = reshape( PARAM%surf(1:w, 1:h), [l] )

      ! determine height order
      call sort_array2(tab_inout = PARAM%vect_h(1:l), n = l)

      ! prescribe moments
      PARAM%m_ini = PARAM%m_end

      ! prescribe acf
      PARAM%imp_acf(1:w, 1:h) = PARAM%acf_surf(1:w, 1:h)

   return
   endsubroutine stat_sur