UFO
GeoVaLs.interface.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef UFO_GEOVALS_INTERFACE_H_
9 #define UFO_GEOVALS_INTERFACE_H_
10 
11 #include "eckit/mpi/Comm.h"
12 #include "Fortran.h"
13 
14 // Forward declarations
15 namespace eckit {
16  class Configuration;
17 }
18 
19 namespace ioda {
20  class ObsSpace;
21 }
22 
23 namespace ufo {
24 
25 /// Interface to Fortran UFO GeoVals routines
26 /*!
27  * The core of the UFO GeoVals is coded in Fortran.
28  * Here we define the interfaces to the Fortran code.
29  */
30 
31 extern "C" {
33  void ufo_geovals_setup_f90(F90goms &, const F90locs &, const oops::Variables &);
36  void ufo_geovals_copy_one_f90(F90goms &, const F90goms &, int &);
38  void ufo_geovals_reorderzdir_f90(const F90goms &, const int &, const char *,
39  const int &, const char *);
41  void ufo_geovals_rms_f90(const F90goms &, double &);
43  const eckit::Configuration &);
45  void ufo_geovals_scalmult_f90(const F90goms &, const double &);
46  void ufo_geovals_profmult_f90(const F90goms &, const int &, const float &);
47  void ufo_geovals_assign_f90(const F90goms &, const F90goms &);
48  void ufo_geovals_add_f90(const F90goms &, const F90goms &);
49  void ufo_geovals_diff_f90(const F90goms &, const F90goms &);
50  void ufo_geovals_schurmult_f90(const F90goms &, const F90goms &);
51  void ufo_geovals_normalize_f90(const F90goms &, const F90goms &);
52  void ufo_geovals_dotprod_f90(const F90goms &, const F90goms &, double &,
53  const eckit::mpi::Comm &);
54  void ufo_geovals_split_f90(const F90goms &, const F90goms &, const F90goms &);
55  void ufo_geovals_merge_f90(const F90goms &, const F90goms &, const F90goms &);
56  void ufo_geovals_minmaxavg_f90(const F90goms &, int &, int &, double &, double &, double &);
57  void ufo_geovals_maxloc_f90(const F90goms &, double &, int &, int &);
58  void ufo_geovals_nlocs_f90(const F90goms &, size_t &);
59  void ufo_geovals_nlevs_f90(const F90goms &, const int &, const char *, int &);
60  void ufo_geovals_get2d_f90(const F90goms &, const int &, const char *, const int &,
61  float &);
62  void ufo_geovals_get_f90(const F90goms &, const int &, const char *, const int &,
63  const int &, float &);
64  void ufo_geovals_getdouble_f90(const F90goms &, const int &, const char *, const int &,
65  const int &, double &);
66  void ufo_geovals_putdouble_f90(const F90goms &, const int &, const char *, const int &,
67  const int &, const double &);
69  const eckit::Configuration &,
70  const ioda::ObsSpace &, const oops::Variables &);
71  void ufo_geovals_write_file_f90(const F90goms &, const eckit::Configuration &,
72  const eckit::mpi::Comm &);
73 } // extern C
74 
75 } // namespace ufo
76 #endif // UFO_GEOVALS_INTERFACE_H_
ufo::F90goms
int F90goms
Definition: Fortran.h:16
ufo::ufo_geovals_dotprod_f90
void ufo_geovals_dotprod_f90(const F90goms &, const F90goms &, double &, const eckit::mpi::Comm &)
ufo::ufo_geovals_random_f90
void ufo_geovals_random_f90(const F90goms &)
ufo::ufo_geovals_get_f90
void ufo_geovals_get_f90(const F90goms &, const int &, const char *, const int &, const int &, float &)
ufo::ufo_geovals_putdouble_f90
void ufo_geovals_putdouble_f90(const F90goms &, const int &, const char *, const int &, const int &, const double &)
ufo::ufo_geovals_schurmult_f90
void ufo_geovals_schurmult_f90(const F90goms &, const F90goms &)
ufo::ufo_geovals_default_constr_f90
void ufo_geovals_default_constr_f90(F90goms &)
Interface to Fortran UFO GeoVals routines.
ufo::ufo_geovals_assign_f90
void ufo_geovals_assign_f90(const F90goms &, const F90goms &)
Fortran.h
ufo::ufo_geovals_analytic_init_f90
void ufo_geovals_analytic_init_f90(F90goms &, const F90locs &, const eckit::Configuration &)
ufo::ufo_geovals_nlevs_f90
void ufo_geovals_nlevs_f90(const F90goms &, const int &, const char *, int &)
ioda
Definition: ObsAtmSfcInterp.h:24
ufo
Definition: RunCRTM.h:27
ufo::ufo_geovals_reorderzdir_f90
void ufo_geovals_reorderzdir_f90(const F90goms &, const int &, const char *, const int &, const char *)
ufo::ufo_geovals_merge_f90
void ufo_geovals_merge_f90(const F90goms &, const F90goms &, const F90goms &)
ufo::ufo_geovals_maxloc_f90
void ufo_geovals_maxloc_f90(const F90goms &, double &, int &, int &)
ufo::ufo_geovals_diff_f90
void ufo_geovals_diff_f90(const F90goms &, const F90goms &)
ufo::ufo_geovals_scalmult_f90
void ufo_geovals_scalmult_f90(const F90goms &, const double &)
ufo::ufo_geovals_minmaxavg_f90
void ufo_geovals_minmaxavg_f90(const F90goms &, int &, int &, double &, double &, double &)
eckit
Forward declarations.
Definition: ObsAtmSfcInterp.h:20
ufo::ufo_geovals_copy_f90
void ufo_geovals_copy_f90(const F90goms &, F90goms &)
ufo::ufo_geovals_setup_f90
void ufo_geovals_setup_f90(F90goms &, const F90locs &, const oops::Variables &)
ufo::ufo_geovals_getdouble_f90
void ufo_geovals_getdouble_f90(const F90goms &, const int &, const char *, const int &, const int &, double &)
ufo::ufo_geovals_profmult_f90
void ufo_geovals_profmult_f90(const F90goms &, const int &, const float &)
ufo::ufo_geovals_abs_f90
void ufo_geovals_abs_f90(const F90goms &)
ufo::ufo_geovals_normalize_f90
void ufo_geovals_normalize_f90(const F90goms &, const F90goms &)
ufo::ufo_geovals_read_file_f90
void ufo_geovals_read_file_f90(const F90goms &, const eckit::Configuration &, const ioda::ObsSpace &, const oops::Variables &)
ufo::ufo_geovals_write_file_f90
void ufo_geovals_write_file_f90(const F90goms &, const eckit::Configuration &, const eckit::mpi::Comm &)
ufo::ufo_geovals_delete_f90
void ufo_geovals_delete_f90(F90goms &)
ufo::F90locs
int F90locs
Definition: Fortran.h:14
ufo::ufo_geovals_get2d_f90
void ufo_geovals_get2d_f90(const F90goms &, const int &, const char *, const int &, float &)
ufo::ufo_geovals_nlocs_f90
void ufo_geovals_nlocs_f90(const F90goms &, size_t &)
ufo::ufo_geovals_copy_one_f90
void ufo_geovals_copy_one_f90(F90goms &, const F90goms &, int &)
ufo::ufo_geovals_split_f90
void ufo_geovals_split_f90(const F90goms &, const F90goms &, const F90goms &)
ufo::ufo_geovals_rms_f90
void ufo_geovals_rms_f90(const F90goms &, double &)
ufo::ufo_geovals_zero_f90
void ufo_geovals_zero_f90(const F90goms &)
ufo::ufo_geovals_add_f90
void ufo_geovals_add_f90(const F90goms &, const F90goms &)