da_apply_power.inc

References to this file elsewhere.
1 subroutine da_apply_power (power, max_wavenumber, ccv, c_cvsize) 
2 
3    !-------------------------------------------------------------------------
4    ! Purpose: Adjust power spectrum for the control variable
5    !-------------------------------------------------------------------------
6 
7    implicit none
8 
9    integer, intent(in)   :: max_wavenumber ! Smallest scale required (ni/2 - 1).
10    integer, intent(in)   :: c_cvsize                ! Size of complex cv-array
11    real,    intent(in)   :: power(0:max_wavenumber) ! Power Spectrum
12    complex, intent(inout):: ccv(1:c_cvsize)         ! complex control  array   
13   
14    integer             :: m, n, index
15 
16    ! Adjust Power spectrum
17 
18    do n =0, max_wavenumber
19       
20       ccv(n+1) = ccv(n+1) * sqrt (power(n)/(2*n+1))
21 
22       do m=1, n
23          index = m*(max_wavenumber+1- m) + m*(m+1)/2+n-m + 1
24          ccv(index) = ccv(index) * sqrt (power(n)/(2*n+1))
25       end do
26    end do
27 
28 end subroutine da_apply_power           
29 
30