18 use fckit_log_module,
only : fckit_log
25 subroutine qg_obs_setup(c_key_self, c_conf) bind(c,name='qg_obsdb_setup_f90')
27 integer(c_int),
intent(inout) :: c_key_self
28 type(c_ptr),
intent(in) :: c_conf
30 type(obs_data),
pointer :: self
31 character(len=max_string) :: fin, fout
32 character(len=max_string+30) :: record
34 if (config_element_exists(c_conf,
"ObsData.ObsDataIn"))
then 35 fin = config_get_string(c_conf,
max_string,
"ObsData.ObsDataIn.obsfile")
39 write(record,*)
'qg_obs_setup: file in =',trim(fin)
40 call fckit_log%info(record)
42 fout = config_get_string(c_conf,
max_string,
"ObsData.ObsDataOut.obsfile")
43 write(record,*)
'qg_obs_setup: file out=',trim(fout)
44 call fckit_log%info(record)
49 call obs_setup(trim(fin), trim(fout), self)
55 subroutine qg_obs_delete(c_key_self) bind(c,name='qg_obsdb_delete_f90')
57 integer(c_int),
intent(inout) :: c_key_self
58 type(obs_data),
pointer :: self
68 subroutine qg_obs_get(c_key_self, lreq, c_req, lcol, c_col, c_key_ovec) bind(c,name='qg_obsdb_get_f90')
70 integer(c_int),
intent(in) :: c_key_self
71 integer(c_int),
intent(in) :: lreq, lcol
72 character(kind=c_char,len=1),
intent(in) :: c_req(lreq+1), c_col(lcol+1)
73 integer(c_int),
intent(in) :: c_key_ovec
75 type(obs_data),
pointer :: self
76 type(obs_vect),
pointer :: ovec
77 character(len=lreq) :: req
78 character(len=lcol) :: col
82 call c_f_string(c_req, req)
83 call c_f_string(c_col, col)
85 call obs_get(self, trim(req), trim(col), ovec)
91 subroutine qg_obs_put(c_key_self, lreq, c_req, lcol, c_col, c_key_ovec) bind(c,name='qg_obsdb_put_f90')
93 integer(c_int),
intent(in) :: c_key_self
94 integer(c_int),
intent(in) :: lreq, lcol
95 character(kind=c_char,len=1),
intent(in) :: c_req(lreq+1), c_col(lcol+1)
96 integer(c_int),
intent(in) :: c_key_ovec
98 type(obs_data),
pointer :: self
99 type(obs_vect),
pointer :: ovec
100 character(len=lreq) :: req
101 character(len=lcol) :: col
105 call c_f_string(c_req, req)
106 call c_f_string(c_col, col)
108 call obs_put(self, trim(req), trim(col), ovec)
subroutine, public obs_put(self, req, col, ovec)
subroutine, public obs_setup(fin, fout, self)
Linked list implementation.
subroutine qg_obs_get(c_key_self, lreq, c_req, lcol, c_col, c_key_ovec)
type(registry_t), public qg_obs_vect_registry
Linked list interface - defines registry_t type.
Fortran module handling observations for the QG model.
type(registry_t), public obs_data_registry
Linked list interface - defines registry_t type.
subroutine, public obs_get(self, req, col, ovec)
subroutine qg_obs_delete(c_key_self)
subroutine qg_obs_put(c_key_self, lreq, c_req, lcol, c_col, c_key_ovec)
Handle observations for the QG model.
subroutine, public obs_delete(self)
subroutine qg_obs_setup(c_key_self, c_conf)
Fortran module for streamfunction observations for the QG model.
Fortran module handling observation vectors.
integer, parameter, public max_string