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
17 if (trace_use_frequent) call da_trace_entry("da_apply_power")
18
19 ! Adjust Power spectrum
20
21 do n =0, max_wavenumber
22
23 ccv(n+1) = ccv(n+1) * sqrt (power(n)/(2*n+1))
24
25 do m=1, n
26 index = m*(max_wavenumber+1- m) + m*(m+1)/2+n-m + 1
27 ccv(index) = ccv(index) * sqrt (power(n)/(2*n+1))
28 end do
29 end do
30
31 if (trace_use_frequent) call da_trace_exit("da_apply_power")
32
33 end subroutine da_apply_power
34
35