FV3 Bundle
FortranAtmosphere.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_ATMOSPHERE_FORTRANATMOSPHERE_H_
9 #define UFO_ATMOSPHERE_FORTRANATMOSPHERE_H_
10 
11 #include "ioda/ObsSpace.h"
12 
13 #include "ufo/Fortran.h"
14 
15 namespace ufo {
16 
17 /// Interface to Fortran UFO routines
18 /*!
19  * The core of the UFO is coded in Fortran.
20  * Here we define the interfaces to the Fortran code.
21  */
22 
23 extern "C" {
24 
25 // -----------------------------------------------------------------------------
26 // Aircraft t observation operator and its tl/ad
27 // -----------------------------------------------------------------------------
28 
29  void ufo_aircraft_setup_f90(F90hop &, const eckit::Configuration * const *);
31  void ufo_aircraft_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
32  const int &, double &, const F90obias &);
33  void ufo_aircraft_tlad_setup_f90(F90hop &, const eckit::Configuration * const *);
35  void ufo_aircraft_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &);
36  void ufo_aircraft_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
37  const int &, double &);
38  void ufo_aircraft_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
39  const int &, const double &);
40 
41 // -----------------------------------------------------------------------------
42 // Radiosonde t observation operator and its tl/ad
43 // -----------------------------------------------------------------------------
44 
45  void ufo_radiosonde_setup_f90(F90hop &, const eckit::Configuration * const *);
47  void ufo_radiosonde_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
48  const int &, double &, const F90obias &);
49  void ufo_radiosonde_tlad_setup_f90(F90hop &, const eckit::Configuration * const *);
51  void ufo_radiosonde_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &);
52  void ufo_radiosonde_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
53  const int &, double &);
54  void ufo_radiosonde_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
55  const int &, const double &);
56 
57 // -----------------------------------------------------------------------------
58 // Radiance observation operator and its tl/ad
59 // -----------------------------------------------------------------------------
60 
61  void ufo_radiance_setup_f90(F90hop &, const eckit::Configuration * const *);
63  void ufo_radiance_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
64  const int &, double &, const F90obias &);
65  void ufo_radiance_tlad_setup_f90(F90hop &, const eckit::Configuration * const *);
67  void ufo_radiance_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &);
68  void ufo_radiance_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
69  const int &, double &);
70  void ufo_radiance_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
71  const int &, const double &);
72 // -----------------------------------------------------------------------------
73 
74 } // extern C
75 
76 } // namespace ufo
77 #endif // UFO_ATMOSPHERE_FORTRANATMOSPHERE_H_
void ufo_radiance_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &, const F90obias &)
void ufo_radiosonde_setup_f90(F90hop &, const eckit::Configuration *const *)
void ufo_aircraft_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &, const F90obias &)
void ufo_radiance_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &)
void ufo_radiance_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &)
void ufo_radiance_delete_f90(F90hop &)
void ufo_radiosonde_tlad_setup_f90(F90hop &, const eckit::Configuration *const *)
void ufo_radiosonde_tlad_delete_f90(F90hop &)
void ufo_radiosonde_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &)
Wrapper around ObsHelpQG, mostly to hide the factory.
void ufo_aircraft_tlad_setup_f90(F90hop &, const eckit::Configuration *const *)
void ufo_radiosonde_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &, const F90obias &)
void ufo_radiosonde_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, const double &)
void ufo_radiance_tlad_setup_f90(F90hop &, const eckit::Configuration *const *)
void ufo_aircraft_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &)
void ufo_radiosonde_tlad_settraj_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &)
void ufo_radiance_tlad_delete_f90(F90hop &)
void ufo_radiosonde_delete_f90(F90hop &)
void ufo_aircraft_simobs_tl_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, double &)
void ufo_aircraft_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, const double &)
void ufo_aircraft_tlad_delete_f90(F90hop &)
void ufo_radiance_simobs_ad_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, const double &)
void ufo_aircraft_setup_f90(F90hop &, const eckit::Configuration *const *)
Interface to Fortran UFO routines.
void ufo_aircraft_delete_f90(F90hop &)
void ufo_radiance_setup_f90(F90hop &, const eckit::Configuration *const *)