OOPS
QgFortran.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2009-2016 ECMWF.
3  * (C) Copyright 2017-2019 UCAR.
4  *
5  * This software is licensed under the terms of the Apache Licence Version 2.0
6  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
7  * In applying this licence, ECMWF does not waive the privileges and immunities
8  * granted to it by virtue of its status as an intergovernmental organisation nor
9  * does it submit to any jurisdiction.
10  */
11 
12 #ifndef QG_MODEL_QGFORTRAN_H_
13 #define QG_MODEL_QGFORTRAN_H_
14 
15 #include <memory>
16 #include <string>
17 #include <vector>
18 
19 #include "atlas/field.h"
20 #include "atlas/functionspace.h"
21 
22 // Forward declarations
23 namespace eckit {
24  class Configuration;
25 }
26 
27 namespace oops {
28  class Variables;
29 }
30 
31 namespace util {
32  class DateTime;
33  class Duration;
34 }
35 
36 namespace qg {
37  class LocationsQG;
38  class ObsSpaceQG;
39 
40 // Change of variable key type
41 typedef int F90chvar;
42 // Geometry key type
43 typedef int F90geom;
44 // Geometry iterator key type
45 typedef int F90iter;
46 // Model key type
47 typedef int F90model;
48 // Gom key type
49 typedef int F90gom;
50 // Fields key type
51 typedef int F90flds;
52 // Error covariance key type
53 typedef int F90error_covariance;
54 // Observation vector key type
55 typedef int F90ovec;
56 // Observation data base type
57 typedef int F90odb;
58 // Localization matrix
59 typedef int F90lclz;
60 
61 /// Interface to Fortran QG model
62 /*!
63  * The core of the QG model is coded in Fortran.
64  * Here we define the interfaces to the Fortran code.
65  */
66 
67 extern "C" {
68 // -----------------------------------------------------------------------------
69 // Change of variable
70 // -----------------------------------------------------------------------------
72  void qg_change_var_f90(const F90chvar &, const F90flds &, const F90flds &);
73  void qg_change_var_inv_f90(const F90chvar &, const F90flds &, const F90flds &);
74  void qg_change_var_ad_f90(const F90chvar &, const F90flds &, const F90flds &);
75  void qg_change_var_inv_ad_f90(const F90chvar &, const F90flds &, const F90flds &);
76 
77 // -----------------------------------------------------------------------------
78 // Error covariance
79 // -----------------------------------------------------------------------------
80  void qg_error_covariance_setup_f90(F90error_covariance &, const eckit::Configuration &,
81  const F90geom &);
85  const F90flds &);
87 
88 // -----------------------------------------------------------------------------
89 // Fields
90 // -----------------------------------------------------------------------------
91  void qg_fields_create_f90(F90flds &, const F90geom &, const oops::Variables &, const bool &);
94  void qg_fields_zero_f90(const F90flds &);
95  void qg_fields_ones_f90(const F90flds &);
96  void qg_fields_dirac_f90(const F90flds &, const eckit::Configuration &);
98  void qg_fields_copy_f90(const F90flds &, const F90flds &);
99  void qg_fields_self_add_f90(const F90flds &, const F90flds &);
100  void qg_fields_self_sub_f90(const F90flds &, const F90flds &);
101  void qg_fields_self_mul_f90(const F90flds &, const double &);
102  void qg_fields_axpy_f90(const F90flds &, const double &, const F90flds &);
103  void qg_fields_self_schur_f90(const F90flds &, const F90flds &);
104  void qg_fields_dot_prod_f90(const F90flds &, const F90flds &, double &);
105  void qg_fields_add_incr_f90(const F90flds &, const F90flds &);
106  void qg_fields_diff_incr_f90(const F90flds &, const F90flds &, const F90flds &);
108  void qg_fields_read_file_f90(const F90flds &, const eckit::Configuration &,
109  util::DateTime &);
110  void qg_fields_write_file_f90(const F90flds &, const eckit::Configuration &,
111  const util::DateTime &);
112  void qg_fields_analytic_init_f90(const F90flds &, const eckit::Configuration &,
113  util::DateTime &);
114  void qg_fields_gpnorm_f90(const F90flds &, const int &, double &);
115  void qg_fields_rms_f90(const F90flds &, double &);
116  void qg_fields_sizes_f90(const F90flds &, int &, int &, int &, int &);
117  void qg_fields_vars_f90(const F90flds &, int &, int &);
119  atlas::field::FieldSetImpl *);
121  atlas::field::FieldSetImpl *);
123  atlas::field::FieldSetImpl *);
124  void qg_fields_getpoint_f90(const F90flds&, const F90iter&, const int &, double &);
125  void qg_fields_setpoint_f90(const F90flds&, const F90iter&, const int &, const double &);
126  void qg_fields_serialize_f90(const F90flds &, const std::size_t &, double[]);
127  void qg_fields_deserialize_f90(const F90flds &, const std::size_t &, const double[],
128  const std::size_t &);
129 // -----------------------------------------------------------------------------
130 // GetValues
131 // -----------------------------------------------------------------------------
133  const util::DateTime &,
134  const util::DateTime &, const F90gom &);
136  const util::DateTime &,
137  const util::DateTime &, const F90gom &);
139  const util::DateTime &,
140  const util::DateTime &, const F90gom &);
141 
142 // -----------------------------------------------------------------------------
143 // Geometry
144 // -----------------------------------------------------------------------------
145  void qg_geom_setup_f90(F90geom &, const eckit::Configuration &);
146  void qg_geom_set_atlas_lonlat_f90(const F90geom &, atlas::field::FieldSetImpl *);
148  atlas::functionspace::FunctionSpaceImpl *);
149  void qg_geom_fill_atlas_fieldset_f90(const F90geom &, atlas::field::FieldSetImpl *);
151  void qg_geom_info_f90(const F90geom &, int &, int &, int &, double &, double &);
153  void qg_geom_dimensions_f90(double &, double &, double &, double &, double &);
154 
155 // -----------------------------------------------------------------------------
156 // Geometry iterator
157 // -----------------------------------------------------------------------------
158  void qg_geom_iter_setup_f90(F90iter &, const F90geom &, const int &);
161  void qg_geom_iter_equals_f90(const F90iter &, const F90iter&, int &);
162  void qg_geom_iter_current_f90(const F90iter &, double &, double &);
164 
165 // -----------------------------------------------------------------------------
166 // Local Values (GOM)
167 // -----------------------------------------------------------------------------
171  void qg_gom_copy_f90(const F90gom &, const F90gom &);
172  void qg_gom_zero_f90(const F90gom &);
173  void qg_gom_abs_f90(const F90gom &);
174  void qg_gom_random_f90(const F90gom &);
175  void qg_gom_mult_f90(const F90gom &, const double &);
176  void qg_gom_add_f90(const F90gom &, const F90gom &);
177  void qg_gom_diff_f90(const F90gom &, const F90gom &);
178  void qg_gom_schurmult_f90(const F90gom &, const F90gom &);
179  void qg_gom_divide_f90(const F90gom &, const F90gom &);
180  void qg_gom_rms_f90(const F90gom &, double &);
181  void qg_gom_dotprod_f90(const F90gom &, const F90gom &, double &);
182  void qg_gom_stats_f90(const F90gom &, int &, double &, double &, double &, double &);
183  void qg_gom_maxloc_f90(const F90gom &, double &, int &, int &);
184  void qg_gom_read_file_f90(const F90gom &, const eckit::Configuration &);
185  void qg_gom_write_file_f90(const F90gom &, const eckit::Configuration &);
187  const eckit::Configuration &);
188 
189 // -----------------------------------------------------------------------------
190 // Model
191 // -----------------------------------------------------------------------------
192  void qg_model_setup_f90(F90model &, const eckit::Configuration &);
194  void qg_model_propagate_f90(const F90model &, const F90flds &);
195  void qg_model_propagate_tl_f90(const F90model &, const F90flds &, const F90flds &);
196  void qg_model_propagate_ad_f90(const F90model &, const F90flds &, const F90flds &);
197 
198 // -----------------------------------------------------------------------------
199 // Observation Handler
200 // -----------------------------------------------------------------------------
201  void qg_obsdb_setup_f90(F90odb &, const eckit::Configuration &,
202  const util::DateTime &, const util::DateTime &);
204  void qg_obsdb_get_f90(const F90odb &, const int &, const char *,
205  const int &, const char *, const F90ovec &);
206  void qg_obsdb_get_local_f90(const F90odb &, const int &, const char *,
207  const int &, const char *, const int &, const int *,
208  const F90ovec &);
209  void qg_obsdb_put_f90(const F90odb &, const int &, const char *,
210  const int &, const char *, const F90ovec &);
211  void qg_obsdb_has_f90(const F90odb &, const int &, const char *,
212  const int &, const char *, int &);
213  void qg_obsdb_locations_f90(const F90odb &, const int &, const char *,
214  const util::DateTime &, const util::DateTime &,
215  atlas::field::FieldSetImpl *, std::vector<util::DateTime> &);
216  void qg_obsdb_generate_f90(const F90odb &, const int &, const char *,
217  const eckit::Configuration &, const util::DateTime &,
218  const util::Duration &, const int &, int &);
219  void qg_obsdb_nobs_f90(const F90odb &, const int &, const char *, int &);
220 
221 // -----------------------------------------------------------------------------
222 // Observation vector
223 // -----------------------------------------------------------------------------
224  void qg_obsvec_setup_f90(F90ovec &, const int &, const int &);
227  void qg_obsvec_copy_f90(const F90ovec &, const F90ovec &);
228  void qg_obsvec_copy_local_f90(const F90ovec &, const F90ovec &, const int &, const int *);
230  void qg_obsvec_mul_scal_f90(const F90ovec &, const double &);
231  void qg_obsvec_add_f90(const F90ovec &, const F90ovec &);
232  void qg_obsvec_sub_f90(const F90ovec &, const F90ovec &);
233  void qg_obsvec_mul_f90(const F90ovec &, const F90ovec &);
234  void qg_obsvec_div_f90(const F90ovec &, const F90ovec &);
235  void qg_obsvec_axpy_f90(const F90ovec &, const double &, const F90ovec &);
237  void qg_obsvec_random_f90(const ObsSpaceQG &, const F90ovec &);
238  void qg_obsvec_dotprod_f90(const F90ovec &, const F90ovec &, double &);
239  void qg_obsvec_stats_f90(const F90ovec &, double &, double &, double &, double &);
240  void qg_obsvec_nobs_f90(const F90ovec &, int &);
241  void qg_obsvec_getat_f90(const F90ovec &, const int &, double &);
242 
243 // -----------------------------------------------------------------------------
244 // Streamfunction observations
245 // -----------------------------------------------------------------------------
246  void qg_stream_equiv_f90(const F90gom &, const F90ovec &, const double &);
247  void qg_stream_equiv_tl_f90(const F90gom &, const F90ovec &, const double &);
248  void qg_stream_equiv_ad_f90(const F90gom &, const F90ovec &, double &);
249 
250 // -----------------------------------------------------------------------------
251 // Wind observations
252 // -----------------------------------------------------------------------------
253  void qg_wind_equiv_f90(const F90gom &, const F90ovec &, const double &);
254  void qg_wind_equiv_tl_f90(const F90gom &, const F90ovec &, const double &);
255  void qg_wind_equiv_ad_f90(const F90gom &, const F90ovec &, double &);
256 
257 // -----------------------------------------------------------------------------
258 // Wind speed observations
259 // -----------------------------------------------------------------------------
260  void qg_wspeed_equiv_f90(const F90gom &, const F90ovec &, const double &);
261  void qg_wspeed_equiv_tl_f90(const F90gom &, const F90ovec &, const F90gom &, const double &);
262  void qg_wspeed_equiv_ad_f90(const F90gom &, const F90ovec &, const F90gom &, double &);
263  void qg_wspeed_gettraj_f90(const int &, const oops::Variables &, const F90gom &);
264  void qg_wspeed_settraj_f90(const F90gom &, const F90gom &);
265 
266 }
267 
268 } // namespace qg
269 #endif // QG_MODEL_QGFORTRAN_H_
qg::qg_obsdb_delete_f90
void qg_obsdb_delete_f90(F90odb &)
qg::qg_fields_change_resol_f90
void qg_fields_change_resol_f90(const F90flds &, const F90flds &)
qg::qg_obsdb_get_f90
void qg_obsdb_get_f90(const F90odb &, const int &, const char *, const int &, const char *, const F90ovec &)
qg::qg_obsvec_delete_f90
void qg_obsvec_delete_f90(F90ovec &)
qg::qg_fields_create_f90
void qg_fields_create_f90(F90flds &, const F90geom &, const oops::Variables &, const bool &)
qg::qg_fields_zero_f90
void qg_fields_zero_f90(const F90flds &)
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
qg::qg_gom_write_file_f90
void qg_gom_write_file_f90(const F90gom &, const eckit::Configuration &)
qg::F90flds
int F90flds
Definition: QgFortran.h:51
qg::qg_getvalues_interp_tl_f90
void qg_getvalues_interp_tl_f90(const LocationsQG &, const F90flds &, const util::DateTime &, const util::DateTime &, const F90gom &)
qg::qg_geom_info_f90
void qg_geom_info_f90(const F90geom &, int &, int &, int &, double &, double &)
qg
The namespace for the qg model.
Definition: qg/model/AnalyticInit.cc:13
qg::qg_fields_self_schur_f90
void qg_fields_self_schur_f90(const F90flds &, const F90flds &)
qg::F90geom
int F90geom
Definition: QgFortran.h:43
qg::qg_change_var_ad_f90
void qg_change_var_ad_f90(const F90chvar &, const F90flds &, const F90flds &)
qg::qg_geom_clone_f90
void qg_geom_clone_f90(F90geom &, const F90geom &)
qg::qg_obsdb_locations_f90
void qg_obsdb_locations_f90(const F90odb &, const int &, const char *, const util::DateTime &, const util::DateTime &, atlas::field::FieldSetImpl *, std::vector< util::DateTime > &)
qg::qg_gom_setup_f90
void qg_gom_setup_f90(F90gom &, const LocationsQG &, const oops::Variables &)
qg::qg_obsvec_setup_f90
void qg_obsvec_setup_f90(F90ovec &, const int &, const int &)
qg::qg_wspeed_equiv_tl_f90
void qg_wspeed_equiv_tl_f90(const F90gom &, const F90ovec &, const F90gom &, const double &)
qg::qg_model_setup_f90
void qg_model_setup_f90(F90model &, const eckit::Configuration &)
qg::qg_fields_set_atlas_f90
void qg_fields_set_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
qg::qg_obsdb_generate_f90
void qg_obsdb_generate_f90(const F90odb &, const int &, const char *, const eckit::Configuration &, const util::DateTime &, const util::Duration &, const int &, int &)
qg::qg_fields_analytic_init_f90
void qg_fields_analytic_init_f90(const F90flds &, const eckit::Configuration &, util::DateTime &)
qg::qg_obsdb_put_f90
void qg_obsdb_put_f90(const F90odb &, const int &, const char *, const int &, const char *, const F90ovec &)
qg::qg_wspeed_equiv_f90
void qg_wspeed_equiv_f90(const F90gom &, const F90ovec &, const double &)
qg::qg_fields_delete_f90
void qg_fields_delete_f90(F90flds &)
qg::qg_geom_iter_clone_f90
void qg_geom_iter_clone_f90(F90iter &, const F90iter &)
qg::qg_fields_random_f90
void qg_fields_random_f90(const F90flds &)
qg::qg_obsvec_sub_f90
void qg_obsvec_sub_f90(const F90ovec &, const F90ovec &)
qg::qg_fields_serialize_f90
void qg_fields_serialize_f90(const F90flds &, const std::size_t &, double[])
qg::qg_fields_from_atlas_f90
void qg_fields_from_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
qg::qg_wspeed_settraj_f90
void qg_wspeed_settraj_f90(const F90gom &, const F90gom &)
qg::ObsSpaceQG
ObsSpace for QG model.
Definition: ObsSpaceQG.h:44
qg::qg_obsvec_div_f90
void qg_obsvec_div_f90(const F90ovec &, const F90ovec &)
qg::qg_fields_dirac_f90
void qg_fields_dirac_f90(const F90flds &, const eckit::Configuration &)
qg::qg_gom_diff_f90
void qg_gom_diff_f90(const F90gom &, const F90gom &)
qg::qg_geom_iter_setup_f90
void qg_geom_iter_setup_f90(F90iter &, const F90geom &, const int &)
qg::qg_gom_delete_f90
void qg_gom_delete_f90(F90gom &)
qg::qg_fields_create_from_other_f90
void qg_fields_create_from_other_f90(F90flds &, const F90flds &)
qg::qg_error_covariance_mult_f90
void qg_error_covariance_mult_f90(const F90error_covariance &, const F90flds &, const F90flds &)
qg::qg_geom_iter_equals_f90
void qg_geom_iter_equals_f90(const F90iter &, const F90iter &, int &)
qg::LocationsQG
LocationsQG class to handle locations for QG model.
Definition: LocationsQG.h:36
qg::F90odb
int F90odb
Definition: QgFortran.h:57
qg::qg_fields_read_file_f90
void qg_fields_read_file_f90(const F90flds &, const eckit::Configuration &, util::DateTime &)
qg::F90iter
int F90iter
Definition: QgFortran.h:45
qg::qg_error_covariance_setup_f90
void qg_error_covariance_setup_f90(F90error_covariance &, const eckit::Configuration &, const F90geom &)
qg::qg_fields_add_incr_f90
void qg_fields_add_incr_f90(const F90flds &, const F90flds &)
qg::qg_fields_write_file_f90
void qg_fields_write_file_f90(const F90flds &, const eckit::Configuration &, const util::DateTime &)
qg::qg_fields_to_atlas_f90
void qg_fields_to_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
qg::qg_model_delete_f90
void qg_model_delete_f90(F90model &)
qg::qg_model_propagate_f90
void qg_model_propagate_f90(const F90model &, const F90flds &)
qg::qg_gom_maxloc_f90
void qg_gom_maxloc_f90(const F90gom &, double &, int &, int &)
qg::qg_wind_equiv_tl_f90
void qg_wind_equiv_tl_f90(const F90gom &, const F90ovec &, const double &)
qg::qg_obsdb_has_f90
void qg_obsdb_has_f90(const F90odb &, const int &, const char *, const int &, const char *, int &)
qg::qg_fields_diff_incr_f90
void qg_fields_diff_incr_f90(const F90flds &, const F90flds &, const F90flds &)
qg::qg_obsvec_invert_f90
void qg_obsvec_invert_f90(const F90ovec &)
qg::qg_fields_ones_f90
void qg_fields_ones_f90(const F90flds &)
qg::qg_gom_add_f90
void qg_gom_add_f90(const F90gom &, const F90gom &)
qg::qg_error_covariance_delete_f90
void qg_error_covariance_delete_f90(F90error_covariance &)
qg::qg_obsvec_random_f90
void qg_obsvec_random_f90(const ObsSpaceQG &, const F90ovec &)
qg::qg_fields_getpoint_f90
void qg_fields_getpoint_f90(const F90flds &, const F90iter &, const int &, double &)
eckit
Definition: FieldL95.h:22
qg::qg_fields_copy_f90
void qg_fields_copy_f90(const F90flds &, const F90flds &)
qg::qg_change_var_setup_f90
void qg_change_var_setup_f90(F90chvar &, const oops::Variables &, const oops::Variables &)
Interface to Fortran QG model.
qg::qg_fields_setpoint_f90
void qg_fields_setpoint_f90(const F90flds &, const F90iter &, const int &, const double &)
qg::qg_geom_iter_current_f90
void qg_geom_iter_current_f90(const F90iter &, double &, double &)
qg::qg_model_propagate_tl_f90
void qg_model_propagate_tl_f90(const F90model &, const F90flds &, const F90flds &)
qg::qg_wind_equiv_ad_f90
void qg_wind_equiv_ad_f90(const F90gom &, const F90ovec &, double &)
qg::qg_error_covariance_inv_mult_f90
void qg_error_covariance_inv_mult_f90(const F90error_covariance &, const F90flds &, const F90flds &)
qg::qg_geom_set_atlas_lonlat_f90
void qg_geom_set_atlas_lonlat_f90(const F90geom &, atlas::field::FieldSetImpl *)
qg::qg_obsvec_mul_scal_f90
void qg_obsvec_mul_scal_f90(const F90ovec &, const double &)
qg::F90lclz
int F90lclz
Definition: QgFortran.h:59
qg::qg_fields_self_add_f90
void qg_fields_self_add_f90(const F90flds &, const F90flds &)
qg::qg_obsvec_mul_f90
void qg_obsvec_mul_f90(const F90ovec &, const F90ovec &)
qg::qg_gom_schurmult_f90
void qg_gom_schurmult_f90(const F90gom &, const F90gom &)
qg::qg_geom_setup_f90
void qg_geom_setup_f90(F90geom &, const eckit::Configuration &)
qg::qg_geom_iter_delete_f90
void qg_geom_iter_delete_f90(F90iter &)
qg::qg_change_var_inv_f90
void qg_change_var_inv_f90(const F90chvar &, const F90flds &, const F90flds &)
qg::qg_gom_rms_f90
void qg_gom_rms_f90(const F90gom &, double &)
qg::qg_obsvec_axpy_f90
void qg_obsvec_axpy_f90(const F90ovec &, const double &, const F90ovec &)
qg::qg_stream_equiv_f90
void qg_stream_equiv_f90(const F90gom &, const F90ovec &, const double &)
qg::qg_obsvec_copy_local_f90
void qg_obsvec_copy_local_f90(const F90ovec &, const F90ovec &, const int &, const int *)
qg::F90model
int F90model
Definition: QgFortran.h:47
qg::qg_gom_random_f90
void qg_gom_random_f90(const F90gom &)
qg::qg_wind_equiv_f90
void qg_wind_equiv_f90(const F90gom &, const F90ovec &, const double &)
qg::qg_gom_mult_f90
void qg_gom_mult_f90(const F90gom &, const double &)
qg::qg_geom_set_atlas_functionspace_pointer_f90
void qg_geom_set_atlas_functionspace_pointer_f90(const F90geom &, atlas::functionspace::FunctionSpaceImpl *)
qg::F90chvar
int F90chvar
Definition: QgFortran.h:38
qg::qg_getvalues_interp_f90
void qg_getvalues_interp_f90(const LocationsQG &, const F90flds &, const util::DateTime &, const util::DateTime &, const F90gom &)
qg::qg_gom_divide_f90
void qg_gom_divide_f90(const F90gom &, const F90gom &)
qg::qg_fields_self_sub_f90
void qg_fields_self_sub_f90(const F90flds &, const F90flds &)
qg::qg_wspeed_equiv_ad_f90
void qg_wspeed_equiv_ad_f90(const F90gom &, const F90ovec &, const F90gom &, double &)
qg::F90ovec
int F90ovec
Definition: QgFortran.h:55
qg::qg_gom_zero_f90
void qg_gom_zero_f90(const F90gom &)
qg::qg_gom_stats_f90
void qg_gom_stats_f90(const F90gom &, int &, double &, double &, double &, double &)
qg::qg_geom_delete_f90
void qg_geom_delete_f90(F90geom &)
qg::qg_gom_create_f90
void qg_gom_create_f90(F90gom &)
qg::qg_obsvec_getat_f90
void qg_obsvec_getat_f90(const F90ovec &, const int &, double &)
qg::qg_gom_analytic_init_f90
void qg_gom_analytic_init_f90(const F90gom &, const LocationsQG &, const eckit::Configuration &)
qg::qg_fields_vars_f90
void qg_fields_vars_f90(const F90flds &, int &, int &)
qg::qg_geom_iter_next_f90
void qg_geom_iter_next_f90(const F90iter &)
qg::F90error_covariance
int F90error_covariance
Definition: QgFortran.h:53
qg::qg_fields_deserialize_f90
void qg_fields_deserialize_f90(const F90flds &, const std::size_t &, const double[], const std::size_t &)
qg::qg_obsdb_get_local_f90
void qg_obsdb_get_local_f90(const F90odb &, const int &, const char *, const int &, const char *, const int &, const int *, const F90ovec &)
qg::qg_fields_dot_prod_f90
void qg_fields_dot_prod_f90(const F90flds &, const F90flds &, double &)
qg::qg_obsvec_zero_f90
void qg_obsvec_zero_f90(const F90ovec &)
qg::qg_stream_equiv_tl_f90
void qg_stream_equiv_tl_f90(const F90gom &, const F90ovec &, const double &)
qg::qg_geom_dimensions_f90
void qg_geom_dimensions_f90(double &, double &, double &, double &, double &)
qg::qg_wspeed_gettraj_f90
void qg_wspeed_gettraj_f90(const int &, const oops::Variables &, const F90gom &)
qg::qg_getvalues_interp_ad_f90
void qg_getvalues_interp_ad_f90(const LocationsQG &, const F90flds &, const util::DateTime &, const util::DateTime &, const F90gom &)
qg::qg_gom_read_file_f90
void qg_gom_read_file_f90(const F90gom &, const eckit::Configuration &)
qg::qg_error_covariance_randomize_f90
void qg_error_covariance_randomize_f90(const F90error_covariance &, const F90flds &)
qg::qg_change_var_inv_ad_f90
void qg_change_var_inv_ad_f90(const F90chvar &, const F90flds &, const F90flds &)
qg::qg_fields_self_mul_f90
void qg_fields_self_mul_f90(const F90flds &, const double &)
qg::qg_stream_equiv_ad_f90
void qg_stream_equiv_ad_f90(const F90gom &, const F90ovec &, double &)
qg::qg_gom_dotprod_f90
void qg_gom_dotprod_f90(const F90gom &, const F90gom &, double &)
qg::qg_obsvec_add_f90
void qg_obsvec_add_f90(const F90ovec &, const F90ovec &)
qg::qg_obsdb_setup_f90
void qg_obsdb_setup_f90(F90odb &, const eckit::Configuration &, const util::DateTime &, const util::DateTime &)
qg::qg_fields_gpnorm_f90
void qg_fields_gpnorm_f90(const F90flds &, const int &, double &)
qg::qg_obsvec_nobs_f90
void qg_obsvec_nobs_f90(const F90ovec &, int &)
qg::qg_fields_axpy_f90
void qg_fields_axpy_f90(const F90flds &, const double &, const F90flds &)
oops::Variables
Definition: oops/base/Variables.h:23
qg::qg_obsvec_copy_f90
void qg_obsvec_copy_f90(const F90ovec &, const F90ovec &)
qg::qg_model_propagate_ad_f90
void qg_model_propagate_ad_f90(const F90model &, const F90flds &, const F90flds &)
qg::qg_change_var_f90
void qg_change_var_f90(const F90chvar &, const F90flds &, const F90flds &)
qg::qg_obsvec_stats_f90
void qg_obsvec_stats_f90(const F90ovec &, double &, double &, double &, double &)
qg::qg_geom_fill_atlas_fieldset_f90
void qg_geom_fill_atlas_fieldset_f90(const F90geom &, atlas::field::FieldSetImpl *)
qg::qg_obsvec_dotprod_f90
void qg_obsvec_dotprod_f90(const F90ovec &, const F90ovec &, double &)
qg::qg_obsdb_nobs_f90
void qg_obsdb_nobs_f90(const F90odb &, const int &, const char *, int &)
qg::qg_gom_abs_f90
void qg_gom_abs_f90(const F90gom &)
qg::F90gom
int F90gom
Definition: QgFortran.h:49
util
Definition: ObservationL95.h:32
qg::qg_fields_sizes_f90
void qg_fields_sizes_f90(const F90flds &, int &, int &, int &, int &)
qg::qg_obsvec_clone_f90
void qg_obsvec_clone_f90(F90ovec &, const F90ovec &)
qg::qg_gom_copy_f90
void qg_gom_copy_f90(const F90gom &, const F90gom &)
qg::qg_fields_rms_f90
void qg_fields_rms_f90(const F90flds &, double &)