15 #include "eckit/exception/Exceptions.h"
17 #include "oops/util/abor1_cpp.h"
18 #include "oops/util/Logger.h"
29 oops::Log::trace() <<
"ufo::Variables created empty" << std::endl;
36 oops::Log::trace() <<
"ufo::Variables(config) start " << std::endl;
37 for (
size_t jvar = 0; jvar < confs.size(); ++jvar) {
40 oops::Log::trace() <<
"ufo::Variables(conf) done" << std::endl;
47 oops::Log::trace() <<
"ufo::Variables(oops::Vars) start" << std::endl;
48 if (oopsvars.channels().size() > 0) {
52 size_t pos = oopsvars[0].find_last_of(
'_');
53 vars_.push_back(
Variable(oopsvars[0].substr(0, pos), oopsvars.channels()));
55 for (
size_t jvar = 0; jvar < oopsvars.size(); ++jvar) {
65 oops::Log::trace() <<
"ufo::Variables(ufovars, group) start " << std::endl;
66 for (
size_t jvar = 0; jvar < vars.
size(); ++jvar) {
106 for (
size_t ivar = 0; ivar <
vars_.size(); ++ivar) {
115 size_t curr_indx = 0;
116 for (
size_t ivar = 0; ivar <
vars_.size(); ++ivar) {
118 return vars_[ivar][jj-curr_indx];
120 curr_indx +=
vars_[ivar].size();
122 ABORT(
"Variable index exceeds collective variable arrays size");
130 for (
size_t ivar = 0; ivar <
vars_.size(); ++ivar) {
131 if (
vars_[ivar].group() == group) {
133 }
else if (
vars_[ivar].group() ==
"ObsFunction") {
145 oops::Variables vars;
146 for (
size_t ivar = 0; ivar <
vars_.size(); ++ivar) {
147 for (
size_t jj = 0; jj <
vars_[ivar].size(); ++jj) {
158 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
159 if (
vars_[jj].group() == group) found =
true;
160 if (
vars_[jj].group() ==
"ObsFunction") {
163 found = found || funcvars.
hasGroup(group);
172 os <<
vars_.size() <<
" variables: ";
173 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
174 if (jj > 0) os <<
", ";