da_deallocate_background_errors.inc
References to this file elsewhere.
1 subroutine da_deallocate_background_errors (be)
2
3 !---------------------------------------------------------------------------
4 ! Purpose: Deallocate components of wrfvar background errors.
5 !---------------------------------------------------------------------------
6
7 implicit none
8
9 type (be_type), intent(inout) :: be ! Background error structure.
10
11 if (trace_use) call da_trace_entry("da_deallocate_background_errors")
12
13 ! Deallocate gridpoint errors:
14
15 if (be % v1 % mz > 0) deallocate (be % v1 % val)
16 if (be % v2 % mz > 0) deallocate (be % v2 % val)
17 if (be % v3 % mz > 0) deallocate (be % v3 % val)
18 if (be % v4 % mz > 0) deallocate (be % v4 % val)
19 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % val)
20
21 if (be % v1 % mz > 0) deallocate (be % v1 % rf_alpha)
22 if (be % v2 % mz > 0) deallocate (be % v2 % rf_alpha)
23 if (be % v3 % mz > 0) deallocate (be % v3 % rf_alpha)
24 if (be % v4 % mz > 0) deallocate (be % v4 % rf_alpha)
25 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % rf_alpha)
26
27 if (global) then
28 if (be % v1 % mz > 0) deallocate (be % v1 % power)
29 if (be % v2 % mz > 0) deallocate (be % v2 % power)
30 if (be % v3 % mz > 0) deallocate (be % v3 % power)
31 if (be % v4 % mz > 0) deallocate (be % v4 % power)
32 if (be % v5 % mz > 0) deallocate (be % v5 % power)
33 end if
34
35 ! Deallocate eigenvectors of vertical error covariance:
36
37 if (vert_corr == 2) then
38 if (be % v1 % mz > 0) deallocate (be % v1 % evec)
39 if (be % v2 % mz > 0) deallocate (be % v2 % evec)
40 if (be % v3 % mz > 0) deallocate (be % v3 % evec)
41 if (be % v4 % mz > 0) deallocate (be % v4 % evec)
42 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % evec)
43
44 if (be % v1 % mz > 0) deallocate (be % v1 % evec_g)
45 if (be % v2 % mz > 0) deallocate (be % v2 % evec_g)
46 if (be % v3 % mz > 0) deallocate (be % v3 % evec_g)
47 if (be % v4 % mz > 0) deallocate (be % v4 % evec_g)
48 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % evec_g)
49
50 if (be % v1 % mz > 0) deallocate (be % v1 % val_g)
51 if (be % v2 % mz > 0) deallocate (be % v2 % val_g)
52 if (be % v3 % mz > 0) deallocate (be % v3 % val_g)
53 if (be % v4 % mz > 0) deallocate (be % v4 % val_g)
54 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % val_g)
55 end if
56
57 deallocate (be % reg_chi)
58 deallocate (be % reg_ps)
59 deallocate (be % reg_t)
60
61 ! Deallocate control variable errors (in future uncomment use these to allow
62 ! eg NMC error correlations).
63
64 ! deallocate (be % cv % val)
65
66 if (trace_use) call da_trace_exit("da_deallocate_background_errors")
67
68 end subroutine da_deallocate_background_errors
69
70