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