UFO
ObsAtmVertInterp.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_ATMVERTINTERP_OBSATMVERTINTERP_INTERFACE_H_
9 #define UFO_ATMVERTINTERP_OBSATMVERTINTERP_INTERFACE_H_
10 
11 #include "ioda/ObsSpace.h"
12 #include "oops/base/Variables.h"
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 // AtmVertInterp observation operator
27 // -----------------------------------------------------------------------------
28 
29  /// \param operatorVars
30  /// Variables to be simulated by this operator.
31  /// \param operatorVarIndices
32  /// Indices of the variables from \p operatorVar in the list of all simulated
33  /// variables in the ObsSpace.
34  /// \param numOperatorVarIndices
35  /// Size of the \p operatorVarIndices array (must be the same as the number of variables in
36  /// \p operatorVars).
37  /// \param[out] requiredVars
38  /// GeoVaLs required for the simulation of the variables \p operatorVars.
39  ///
40  /// Example: if the list of simulated variables in the ObsSpace is
41  /// [air_temperature, northward_wind, eastward_wind] and \p operatorVars is
42  /// [northward_wind, eastward_wind], then \p operatorVarIndices should be set to [1, 2].
43  void ufo_atmvertinterp_setup_f90(F90hop &, const eckit::Configuration &,
44  const oops::Variables &operatorVars,
45  const int *operatorVarIndices, const int numOperatorVarIndices,
46  oops::Variables &requiredVars);
48  void ufo_atmvertinterp_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &,
49  const int &, const int &, double &);
50 // -----------------------------------------------------------------------------
51 
52 } // extern C
53 
54 } // namespace ufo
55 #endif // UFO_ATMVERTINTERP_OBSATMVERTINTERP_INTERFACE_H_
Definition: RunCRTM.h:27
int F90goms
Definition: Fortran.h:16
int F90hop
Definition: Fortran.h:18
void ufo_atmvertinterp_delete_f90(F90hop &)
void ufo_atmvertinterp_simobs_f90(const F90hop &, const F90goms &, const ioda::ObsSpace &, const int &, const int &, double &)
void ufo_atmvertinterp_setup_f90(F90hop &, const eckit::Configuration &, const oops::Variables &operatorVars, const int *operatorVarIndices, const int numOperatorVarIndices, oops::Variables &requiredVars)
Interface to Fortran UFO routines.