1 subroutine da_deallocate_background_errors (be)
3 !---------------------------------------------------------------------------
4 ! Purpose: Deallocate components of wrfvar background errors.
6 ! Update: Multivariate BE option (cv_options=6)
7 ! Syed RH Rizvi (MMM/NESL/NCAR) Date: 02/01/2010
9 ! Note: Please acknowledge author/institute in work that uses this code.
10 !---------------------------------------------------------------------------
14 type (be_type), intent(inout) :: be ! Background error structure.
19 if (trace_use) call da_trace_entry("da_deallocate_background_errors")
21 if (cv_options /= 3) then
24 if (chem_cv_options >=10 ) then
26 do ic = PARAM_FIRST_SCALAR, num_chem
27 if ( be % v12(ic-1) % mz > 0 ) then
28 deallocate( be % v12(ic-1) % val )
29 deallocate( be % v12(ic-1) % evec )
30 deallocate( be % v12(ic-1) % rf_alpha )
33 deallocate ( be % v12 )
34 deallocate ( be % cv_mz_chemic )
35 if ( num_chem >= PARAM_FIRST_SCALAR ) deallocate ( be % cv % sizechemic )
38 ! Deallocate gridpoint errors:
40 if (be % v1 % mz > 0) deallocate (be % v1 % val)
41 if (be % v2 % mz > 0) deallocate (be % v2 % val)
42 if (be % v3 % mz > 0) deallocate (be % v3 % val)
43 if (be % v4 % mz > 0) deallocate (be % v4 % val)
44 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % val)
46 if ( cloud_cv_options >= 2 ) then
47 if (be % v6 % mz > 0) deallocate (be % v6 % val)
48 if (be % v7 % mz > 0) deallocate (be % v7 % val)
49 if (be % v8 % mz > 0) deallocate (be % v8 % val)
50 if (be % v9 % mz > 0) deallocate (be % v9 % val)
51 if (be % v10% mz > 0) deallocate (be % v10% val)
54 if (be % v11% mz > 0) deallocate (be % v11% val)
57 if (be % v1 % mz > 0) deallocate (be % v1 % rf_alpha)
58 if (be % v2 % mz > 0) deallocate (be % v2 % rf_alpha)
59 if (be % v3 % mz > 0) deallocate (be % v3 % rf_alpha)
60 if (be % v4 % mz > 0) deallocate (be % v4 % rf_alpha)
61 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % rf_alpha)
63 if ( cloud_cv_options >= 2 ) then
64 if (be % v6 % mz > 0) deallocate (be % v6 % rf_alpha)
65 if (be % v7 % mz > 0) deallocate (be % v7 % rf_alpha)
66 if (be % v8 % mz > 0) deallocate (be % v8 % rf_alpha)
67 if (be % v9 % mz > 0) deallocate (be % v9 % rf_alpha)
68 if (be % v10% mz > 0) deallocate (be % v10% rf_alpha)
71 if (be % v11% mz > 0) deallocate (be % v11% rf_alpha)
75 if (be % v1 % mz > 0) deallocate (be % v1 % power)
76 if (be % v2 % mz > 0) deallocate (be % v2 % power)
77 if (be % v3 % mz > 0) deallocate (be % v3 % power)
78 if (be % v4 % mz > 0) deallocate (be % v4 % power)
79 if (be % v5 % mz > 0) deallocate (be % v5 % power)
82 ! Deallocate eigenvectors of vertical error covariance:
84 if (vert_corr == vert_corr_2) then
85 if (be % v1 % mz > 0) deallocate (be % v1 % evec)
86 if (be % v2 % mz > 0) deallocate (be % v2 % evec)
87 if (be % v3 % mz > 0) deallocate (be % v3 % evec)
88 if (be % v4 % mz > 0) deallocate (be % v4 % evec)
89 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % evec)
91 if ( cloud_cv_options >= 2 ) then
92 if (be % v6 % mz > 0) deallocate (be % v6 % evec)
93 if (be % v7 % mz > 0) deallocate (be % v7 % evec)
94 if (be % v8 % mz > 0) deallocate (be % v8 % evec)
95 if (be % v9 % mz > 0) deallocate (be % v9 % evec)
96 if (be % v10% mz > 0) deallocate (be % v10% evec)
99 if (be % v11% mz > 0) deallocate (be % v11% evec)
102 if (be % v1 % mz > 0) deallocate (be % v1 % evec_g)
103 if (be % v2 % mz > 0) deallocate (be % v2 % evec_g)
104 if (be % v3 % mz > 0) deallocate (be % v3 % evec_g)
105 if (be % v4 % mz > 0) deallocate (be % v4 % evec_g)
106 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % evec_g)
108 if ( cloud_cv_options >= 2 ) then
109 if (be % v6 % mz > 0) deallocate (be % v6 % evec_g)
110 if (be % v7 % mz > 0) deallocate (be % v7 % evec_g)
111 if (be % v8 % mz > 0) deallocate (be % v8 % evec_g)
112 if (be % v9 % mz > 0) deallocate (be % v9 % evec_g)
113 if (be % v10% mz > 0) deallocate (be % v10% evec_g)
116 if (be % v11% mz > 0) deallocate (be % v11% evec_g)
119 if (be % v1 % mz > 0) deallocate (be % v1 % val_g)
120 if (be % v2 % mz > 0) deallocate (be % v2 % val_g)
121 if (be % v3 % mz > 0) deallocate (be % v3 % val_g)
122 if (be % v4 % mz > 0) deallocate (be % v4 % val_g)
123 if (be % v5 % mz > 0 .and. .not. global) deallocate (be % v5 % val_g)
125 if ( cloud_cv_options >= 2 ) then
126 if (be % v6 % mz > 0) deallocate (be % v6 % val_g)
127 if (be % v7 % mz > 0) deallocate (be % v7 % val_g)
128 if (be % v8 % mz > 0) deallocate (be % v8 % val_g)
129 if (be % v9 % mz > 0) deallocate (be % v9 % val_g)
130 if (be % v10% mz > 0) deallocate (be % v10% val_g)
133 if (be % v11% mz > 0) deallocate (be % v11% val_g)
136 deallocate (be % cv_mz)
140 if ( cv_options /= 7 ) then
141 deallocate (be % reg_psi_chi)
142 deallocate (be % reg_psi_t)
143 deallocate (be % reg_psi_ps)
144 if ( cv_options == 6 ) then
145 deallocate (be % reg_psi_rh)
146 deallocate (be % reg_chi_u_t)
147 deallocate (be % reg_chi_u_ps)
148 deallocate (be % reg_chi_u_rh)
149 deallocate (be % reg_t_u_rh)
150 deallocate (be % reg_ps_u_rh)
154 ! Deallocate control variable errors (in future uncomment use these to allow
155 ! eg NMC error correlations).
157 ! deallocate (be % cv % val)
159 else ! for cv_options = 3
161 deallocate (be % corz)
162 deallocate (be % corp)
164 deallocate (be % agvz)
165 deallocate (be % bvz)
166 deallocate (be % wgvz)
168 deallocate (be % rate)
169 deallocate (be % table)
170 deallocate (be % slix)
171 deallocate (be % slipx)
172 deallocate (be % sljy)
173 deallocate (be % sljpy)
177 ! Deallocate wavelet parameters:
178 if( .not. use_rf )deallocate(be%wsd,ws)
179 if( do_normalize )deallocate(be%sd)
180 if( do_normalize .or. .not. use_rf )deallocate(nij)
182 if (trace_use) call da_trace_exit("da_deallocate_background_errors")
184 end subroutine da_deallocate_background_errors