22 character(len=1024) :: name
24 logical :: anisotropic
27 real(kind_real),
allocatable :: oops_coef_ens(:,:)
28 real(kind_real),
allocatable :: oops_coef_sta(:,:)
29 real(kind_real),
allocatable :: oops_rh(:,:)
30 real(kind_real),
allocatable :: oops_rv(:,:)
31 real(kind_real),
allocatable :: oops_rv_rfac(:,:)
32 real(kind_real),
allocatable :: oops_rv_coef(:,:)
35 real(kind_real),
allocatable :: coef_ens(:,:)
36 real(kind_real),
allocatable :: coef_sta(:,:)
37 real(kind_real),
allocatable :: rh(:,:)
38 real(kind_real),
allocatable :: rv(:,:)
39 real(kind_real),
allocatable :: rv_rfac(:,:)
40 real(kind_real),
allocatable :: rv_coef(:,:)
41 real(kind_real),
allocatable :: rhs(:,:)
42 real(kind_real),
allocatable :: rvs(:,:)
43 real(kind_real) :: wgt
44 real(kind_real),
allocatable :: h11(:,:)
45 real(kind_real),
allocatable :: h22(:,:)
46 real(kind_real),
allocatable :: h33(:,:)
47 real(kind_real),
allocatable :: h12(:,:)
48 real(kind_real),
allocatable :: hcoef(:,:)
49 real(kind_real),
allocatable :: displ_lon(:,:,:)
50 real(kind_real),
allocatable :: displ_lat(:,:,:)
70 class(cmat_blk_type),
intent(inout) :: cmat_blk
71 type(nam_type),
target,
intent(in) :: nam
72 type(geom_type),
target,
intent(in) :: geom
73 type(bpar_type),
intent(in) :: bpar
76 associate(ib=>cmat_blk%ib)
78 if (bpar%diag_block(ib))
then 80 allocate(cmat_blk%coef_ens(geom%nc0a,geom%nl0))
81 allocate(cmat_blk%coef_sta(geom%nc0a,geom%nl0))
82 allocate(cmat_blk%rh(geom%nc0a,geom%nl0))
83 allocate(cmat_blk%rv(geom%nc0a,geom%nl0))
84 if (cmat_blk%double_fit)
then 85 allocate(cmat_blk%rv_rfac(geom%nc0a,geom%nl0))
86 allocate(cmat_blk%rv_coef(geom%nc0a,geom%nl0))
88 allocate(cmat_blk%rhs(geom%nc0a,geom%nl0))
89 allocate(cmat_blk%rvs(geom%nc0a,geom%nl0))
90 if (cmat_blk%anisotropic)
then 91 allocate(cmat_blk%H11(geom%nc0a,geom%nl0))
92 allocate(cmat_blk%H22(geom%nc0a,geom%nl0))
93 allocate(cmat_blk%H33(geom%nc0a,geom%nl0))
94 allocate(cmat_blk%H12(geom%nc0a,geom%nl0))
95 allocate(cmat_blk%Hcoef(geom%nc0a,geom%nl0))
99 call msr(cmat_blk%coef_ens)
100 call msr(cmat_blk%coef_sta)
101 call msr(cmat_blk%rh)
102 call msr(cmat_blk%rv)
103 if (cmat_blk%double_fit)
then 104 call msr(cmat_blk%rv_rfac)
105 call msr(cmat_blk%rv_coef)
107 call msr(cmat_blk%rhs)
108 call msr(cmat_blk%rvs)
109 call msr(cmat_blk%wgt)
110 if (cmat_blk%anisotropic)
then 111 call msr(cmat_blk%H11)
112 call msr(cmat_blk%H22)
113 call msr(cmat_blk%H33)
114 call msr(cmat_blk%H12)
115 call msr(cmat_blk%Hcoef)
119 if ((ib==bpar%nbe).and.nam%displ_diag)
then 121 allocate(cmat_blk%displ_lon(geom%nc0a,geom%nl0,2:nam%nts))
122 allocate(cmat_blk%displ_lat(geom%nc0a,geom%nl0,2:nam%nts))
125 if (nam%displ_diag)
then 126 call msr(cmat_blk%displ_lon)
127 call msr(cmat_blk%displ_lat)
145 class(cmat_blk_type),
intent(inout) :: cmat_blk
148 if (
allocated(cmat_blk%oops_coef_ens))
deallocate(cmat_blk%oops_coef_ens)
149 if (
allocated(cmat_blk%oops_coef_sta))
deallocate(cmat_blk%oops_coef_sta)
150 if (
allocated(cmat_blk%oops_rh))
deallocate(cmat_blk%oops_rh)
151 if (
allocated(cmat_blk%oops_rv))
deallocate(cmat_blk%oops_rv)
152 if (
allocated(cmat_blk%oops_rv_rfac))
deallocate(cmat_blk%oops_rv_rfac)
153 if (
allocated(cmat_blk%oops_rv_coef))
deallocate(cmat_blk%oops_rv_coef)
154 if (
allocated(cmat_blk%coef_ens))
deallocate(cmat_blk%coef_ens)
155 if (
allocated(cmat_blk%coef_sta))
deallocate(cmat_blk%coef_sta)
156 if (
allocated(cmat_blk%rh))
deallocate(cmat_blk%rh)
157 if (
allocated(cmat_blk%rv))
deallocate(cmat_blk%rv)
158 if (
allocated(cmat_blk%rv_rfac))
deallocate(cmat_blk%rv_rfac)
159 if (
allocated(cmat_blk%rv_coef))
deallocate(cmat_blk%rv_coef)
160 if (
allocated(cmat_blk%rhs))
deallocate(cmat_blk%rhs)
161 if (
allocated(cmat_blk%rvs))
deallocate(cmat_blk%rvs)
162 if (
allocated(cmat_blk%H11))
deallocate(cmat_blk%H11)
163 if (
allocated(cmat_blk%H22))
deallocate(cmat_blk%H22)
164 if (
allocated(cmat_blk%H33))
deallocate(cmat_blk%H33)
165 if (
allocated(cmat_blk%H12))
deallocate(cmat_blk%H12)
166 if (
allocated(cmat_blk%Hcoef))
deallocate(cmat_blk%Hcoef)
167 if (
allocated(cmat_blk%displ_lon))
deallocate(cmat_blk%displ_lon)
168 if (
allocated(cmat_blk%displ_lat))
deallocate(cmat_blk%displ_lat)
subroutine cmat_blk_alloc(cmat_blk, nam, geom, bpar)
subroutine cmat_blk_dealloc(cmat_blk)
integer, parameter, public kind_real