13 subroutine c_qg_b_setup(c_key_self, c_conf, c_key_geom) &
14 & bind(c,name=
'qg_b_setup_f90')
21 integer(c_int),
intent(inout) :: c_key_self
22 type(c_ptr),
intent(in) :: c_conf
23 integer(c_int),
intent(in) :: c_key_geom
24 type(qg_3d_covar_config),
pointer :: self
25 type(qg_geom),
pointer :: geom
39 subroutine c_qg_b_delete(c_key_self) bind (c,name='qg_b_delete_f90')
45 integer(c_int),
intent(inout) :: c_key_self
46 type(qg_3d_covar_config),
pointer :: self
58 subroutine c_qg_b_inv_mult(c_key_conf, c_key_in, c_key_out) bind(c,name='qg_b_invmult_f90')
66 integer(c_int),
intent(in) :: c_key_conf
67 integer(c_int),
intent(in) :: c_key_in
68 integer(c_int),
intent(in) :: c_key_out
69 type(qg_3d_covar_config),
pointer :: conf
70 type(qg_field),
pointer :: xin
71 type(qg_field),
pointer :: xout
72 real(kind=kind_real),
allocatable :: xctl(:,:,:)
79 xctl(:,:,:)=0.0_kind_real
93 subroutine c_qg_b_mult(c_key_conf, c_key_in, c_key_out) bind(c,name='qg_b_mult_f90')
101 integer(c_int),
intent(in) :: c_key_conf
102 integer(c_int),
intent(in) :: c_key_in
103 integer(c_int),
intent(in) :: c_key_out
104 type(qg_3d_covar_config),
pointer :: conf
105 type(qg_field),
pointer :: xin
106 type(qg_field),
pointer :: xout
107 real(kind=kind_real),
allocatable :: xctl(:,:,:)
115 xctl(:,:,:)=0.0_kind_real
128 subroutine c_qg_b_randomize(c_key_conf, c_key_out) bind(c,name='qg_b_randomize_f90')
137 integer(c_int),
intent(in) :: c_key_conf
138 integer(c_int),
intent(in) :: c_key_out
139 type(qg_3d_covar_config),
pointer :: conf
140 type(qg_field),
pointer :: xout
141 real(kind=kind_real),
allocatable :: xctl(:,:,:)
Fortran generic for generating random 1d, 2d and 3d arrays.
type(registry_t), public qg_field_registry
Linked list interface - defines registry_t type.
subroutine qg_3d_covar_sqrt_inv_mult(kx, ky, xctl, xincr, config)
Multiply streamfunction by inverse(sqrt(C)), where C is 3d covariance matrix.
Structure holding configuration variables for the 3d error covariance matrices of the QG analysis...
subroutine c_qg_b_inv_mult(c_key_conf, c_key_in, c_key_out)
Multiply streamfunction by inverse of covariance.
subroutine qg_3d_covar_delete(self)
Delete for the QG model's 3d error covariance matrices.
subroutine c_qg_b_setup(c_key_self, c_conf, c_key_geom)
Setup for the QG model's background error covariance matrix.
subroutine c_qg_b_mult(c_key_conf, c_key_in, c_key_out)
Multiply streamfunction by covariance.
type(registry_t), public qg_geom_registry
Linked list interface - defines registry_t type.
Fortran module handling geometry for the QG model.
subroutine qg_3d_covar_setup(c_model, geom, config)
Linked list implementation.
subroutine qg_3d_covar_sqrt_mult(kx, ky, xincr, xctl, config)
Multiply streamfunction by sqrt(C), where C is a 3d covariance matrix.
subroutine c_qg_b_delete(c_key_self)
Delete for the QG model's background error covariance matrix.
subroutine c_qg_b_randomize(c_key_conf, c_key_out)
Generate randomized increment.
type(registry_t) qg_3d_cov_registry
Linked list interface - defines registry_t type.
subroutine qg_3d_covar_sqrt_inv_mult_ad(kx, ky, xctl, xincr, config)
Multiply streamfunction by inverse(sqrt(C)) - Adjoint.
Handle fields for the QG model.
Fortran module for generating random vectors.
subroutine, public zeros(self)
subroutine qg_3d_covar_sqrt_mult_ad(kx, ky, xincr, xctl, config)
Multiply streamfunction by sqrt(C) - Adjoint.