add_nois Subroutine

private subroutine add_nois()

Note

Function that returns the starting surface of random heights

Arguments

None

Calls

proc~~add_nois~~CallsGraph proc~add_nois add_nois proc~build_heights build_heights proc~add_nois->proc~build_heights scramble scramble proc~add_nois->scramble std_array std_array proc~add_nois->std_array proc~build_heights->std_array proc~pikaia_skku_solver pikaia_skku_solver proc~build_heights->proc~pikaia_skku_solver proc~profil_theo_trie_1d profil_theo_trie_1D proc~build_heights->proc~profil_theo_trie_1d sort_array2 sort_array2 proc~build_heights->sort_array2 init pikaia_class%init proc~pikaia_skku_solver->init solve pikaia_class%solve proc~pikaia_skku_solver->solve proc~profil_theo_trie_1d->std_array

Called by

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

Source Code

   subroutine add_nois()
   !================================================================================================
   !<@note Function that returns the starting surface of random heights
   !<
   !<@endnote
   !------------------------------------------------------------------------------------------------
   implicit none

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

      real(kind=R8) :: size_noise

      real(kind=R8), allocatable, dimension(:) :: tab_tmp

      type(MOMENT_STAT) :: mx

      read(JOB,*) mx%sk, mx%ku, size_noise ; LINE_READ = LINE_READ +1 ; write(SPY,*) "line: ", LINE_READ, "ssk, sku, size ", mx%sk, mx%ku, size_noise

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

      allocate( tab_tmp(1:l) )

      call build_heights(     vec_out = tab_tmp(1:l),                      &  ! OUT
                         use_fct_expo = ( mx%ku < 1.34 * mx%sk**2 + 1.8 ), &  ! IN
                             stats_in = mx,                                &  ! IN
                                   lg = l )                                   ! IN

      call std_array( tab = tab_tmp(1:l) )

      call scramble( tab = tab_tmp(1:l),   &  ! INOUT
                      lg = l )                ! IN

      PARAM%surf(1:w, 1:h) = PARAM%surf(1:w, 1:h) + size_noise * reshape( tab_tmp(1:l), [w, h] )

      deallocate( tab_tmp )


   return
   endsubroutine add_nois