FV3 Bundle
ioda/src/ioda/Fortran.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 IODA_FORTRAN_H_
9 #define IODA_FORTRAN_H_
10 
11 // Forward declarations
12 namespace eckit {
13  class Configuration;
14 }
15 
16 namespace util {
17  class DateTime;
18  class Duration;
19 }
20 
21 namespace ioda {
22 
23 // Locations key type
24 typedef int F90locs;
25 // Goms key type
26 typedef int F90goms;
27 // Observation vector key type
28 typedef int F90ovec;
29 // Obs operator key type
30 typedef int F90hop;
31 // Observation space type
32 typedef int F90odb;
33 // Observation check key type
34 typedef int F90ocheck;
35 // Observation bias key type
36 typedef int F90obias;
37 
38 /// Interface to Fortran IODA routines
39 /*!
40  * The core of the IODA is coded in Fortran.
41  * Here we define the interfaces to the Fortran code.
42  */
43 
44 extern "C" {
45 
46 // -----------------------------------------------------------------------------
47 // Locations
48 // -----------------------------------------------------------------------------
49  void ioda_locs_create_f90(F90locs &, const int &, const double *,
50  const double *, const int &);
52  void ioda_locs_nobs_f90(const F90locs &, int &);
53  void ioda_locs_coords_f90(const F90locs &, int &, double &, double &);
54 
55 // -----------------------------------------------------------------------------
56 // Observation Handler
57 // -----------------------------------------------------------------------------
58  void ioda_obsdb_setup_f90(F90odb &, const eckit::Configuration * const *);
60  void ioda_obsdb_nobs_f90(const F90odb &, int &);
61  void ioda_obsdb_nlocs_f90(const F90odb &, int &);
62  void ioda_obsdb_getlocations_f90(const F90odb &, const util::DateTime * const *,
63  const util::DateTime * const *, F90locs &);
64  void ioda_obsdb_generate_f90(const F90odb &, const eckit::Configuration * const *,
65  const util::DateTime * const *, const util::DateTime * const *);
66  void ioda_obsdb_geti_f90(const F90odb &, const int &, const char *, const int &, int32_t[]);
67  void ioda_obsdb_getd_f90(const F90odb &, const int &, const char *, const int &, double[]);
68  void ioda_obsdb_puti_f90(const F90odb &, const int &, const char *, const int &, const int32_t[]);
69  void ioda_obsdb_putd_f90(const F90odb &, const int &, const char *, const int &, const double[]);
70 
71 // -----------------------------------------------------------------------------
72 
73 } // extern C
74 
75 } // namespace ioda
76 #endif // IODA_FORTRAN_H_
void ioda_locs_create_f90(F90locs &, const int &, const double *, const double *, const int &)
Interface to Fortran IODA routines.
void ioda_obsdb_getd_f90(const F90odb &, const int &, const char *, const int &, double[])
void ioda_locs_coords_f90(const F90locs &, int &, double &, double &)
void ioda_obsdb_delete_f90(F90odb &)
void ioda_obsdb_putd_f90(const F90odb &, const int &, const char *, const int &, const double[])
void ioda_obsdb_geti_f90(const F90odb &, const int &, const char *, const int &, int32_t[])
void ioda_obsdb_nobs_f90(const F90odb &, int &)
void ioda_obsdb_puti_f90(const F90odb &, const int &, const char *, const int &, const int32_t[])
void ioda_locs_nobs_f90(const F90locs &, int &)
void ioda_locs_delete_f90(F90locs &)
void ioda_obsdb_setup_f90(F90odb &, const eckit::Configuration *const *)
void ioda_obsdb_generate_f90(const F90odb &, const eckit::Configuration *const *, const util::DateTime *const *, const util::DateTime *const *)
void ioda_obsdb_nlocs_f90(const F90odb &, int &)
void ioda_obsdb_getlocations_f90(const F90odb &, const util::DateTime *const *, const util::DateTime *const *, F90locs &)