Go to the documentation of this file.
8 #include "ioda/core/obsspace_f.h"
15 #include "eckit/exception/Exceptions.h"
17 #include "oops/util/DateTime.h"
25 const util::DateTime * begin,
26 const util::DateTime * end) {
27 return new ObsSpace(*conf, oops::mpi::world(), *begin, *end, oops::mpi::myself());
32 ASSERT(obss !=
nullptr);
38 std::string obsname = obss.
obsname();
39 lcname = obsname.size();
41 strncpy(cname, obsname.c_str(), lcname);
67 lcname = obss.
comm().name().size();
69 strncpy(cname, obss.
comm().name().c_str(), lcname);
73 const std::size_t & length, std::size_t * recnum) {
74 ASSERT(length >= obss.
nlocs());
75 for (std::size_t i = 0; i < length; i++) {
76 recnum[i] = obss.
recnum()[i];
81 const std::size_t & length, std::size_t * index) {
82 ASSERT(length >= obss.
nlocs());
83 for (std::size_t i = 0; i < length; i++) {
86 index[i] = obss.
index()[i] + 1;
91 return obss.
has(std::string(group), std::string(vname));
95 const std::size_t & length, int32_t* vec) {
96 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
98 ASSERT(length >= obss.
nlocs());
99 std::vector<int32_t> vdata(length);
100 obss.
get_db(std::string(group), std::string(vname), vdata);
101 std::copy(vdata.begin(), vdata.end(), vec);
105 const std::size_t & length, int64_t* vec) {
106 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
108 ASSERT(length >= obss.
nlocs());
113 const std::size_t & length,
float* vec) {
114 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
116 ASSERT(length >= obss.
nlocs());
121 const std::size_t & length,
double* vec) {
122 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
124 ASSERT(length >= obss.
nlocs());
125 std::vector<double> vdata(length);
126 obss.
get_db(std::string(group), std::string(vname), vdata);
127 std::copy(vdata.begin(), vdata.end(), vec);
131 const std::size_t & length, int32_t* date, int32_t* time) {
132 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
134 ASSERT(length >= obss.
nlocs());
138 util::DateTime temp_dt(
"0000-01-01T00:00:00Z");
139 std::vector<util::DateTime> dt_vect(length, temp_dt);
140 obss.
get_db(std::string(group), std::string(vname), dt_vect);
150 for (std::size_t i = 0; i < length; i++) {
151 dt_vect[i].toYYYYMMDDhhmmss(year, month, day, hour, minute, second);
152 date[i] = (year * 10000) + (month * 100) + day;
153 time[i] = (hour * 10000) + (minute * 100) + second;
158 const std::size_t & length, int32_t* vec) {
159 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
161 ASSERT(length >= obss.
nlocs());
162 std::vector<int32_t> vdata;
163 vdata.assign(vec, vec + length);
164 obss.
put_db(std::string(group), std::string(vname), vdata);
168 const std::size_t & length, int64_t* vec) {
169 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
171 ASSERT(length >= obss.
nlocs());
176 const std::size_t & length,
float* vec) {
177 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
179 ASSERT(length >= obss.
nlocs());
184 const std::size_t & length,
double* vec) {
185 if (std::string(group) ==
"VarMetaData") ASSERT(length >= obss.
nvars());
187 ASSERT(length >= obss.
nlocs());
188 std::vector<double> vdata;
189 vdata.assign(vec, vec + length);
190 obss.
put_db(std::string(group), std::string(vname), vdata);
const std::vector< std::size_t > & recnum() const
void get_db(const std::string &group, const std::string &name, std::vector< int > &vdata) const
bool obsspace_has_f(const ObsSpace &obss, const char *group, const char *vname)
const oops::Variables * obsspace_obsvariables_f(const ObsSpace &obss)
const std::vector< std::size_t > & index() const
void obsspace_get_int32_f(const ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, int32_t *vec)
std::size_t nrecs() const
bool has(const std::string &, const std::string &) const
const ObsSpace * obsspace_construct_f(const eckit::Configuration *conf, const util::DateTime *begin, const util::DateTime *end)
std::size_t obsspace_get_nrecs_f(const ObsSpace &obss)
void obsspace_get_recnum_f(const ObsSpace &obss, const std::size_t &length, std::size_t *recnum)
void obsspace_get_int64_f(const ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, int64_t *vec)
void obsspace_get_datetime_f(const ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, int32_t *date, int32_t *time)
const eckit::mpi::Comm & comm() const
void obsspace_put_int32_f(ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, int32_t *vec)
std::size_t obsspace_get_nlocs_f(const ObsSpace &obss)
void obsspace_obsname_f(const ObsSpace &obss, size_t &lcname, char *cname)
void obsspace_get_comm_f(const ObsSpace &obss, int &lcname, char *cname)
std::size_t obsspace_get_gnlocs_f(const ObsSpace &obss)
void obsspace_put_int64_f(ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, int64_t *vec)
std::size_t nlocs() const
const std::string & obsname() const
void obsspace_get_real64_f(const ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, double *vec)
void put_db(const std::string &group, const std::string &name, const std::vector< int > &vdata)
void obsspace_destruct_f(ObsSpace *obss)
void obsspace_put_real64_f(ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, double *vec)
std::size_t gnlocs() const
std::size_t obsspace_get_nvars_f(const ObsSpace &obss)
const oops::Variables & obsvariables() const
std::size_t nvars() const
void obsspace_get_real32_f(const ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, float *vec)
void obsspace_get_index_f(const ObsSpace &obss, const std::size_t &length, std::size_t *index)
void obsspace_put_real32_f(ObsSpace &obss, const char *group, const char *vname, const std::size_t &length, float *vec)