From e59669b31b2ec2f73a53fc0e04c2e3cf70e5daad Mon Sep 17 00:00:00 2001 From: Michael Uleysky Date: Tue, 14 Mar 2023 15:42:43 +1000 Subject: [PATCH] List of supported variables in action=info --- include/NEMO.h | 27 ++++++++++++++++++++++++++- include/vartype.h | 19 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/include/NEMO.h b/include/NEMO.h index 614bd5d..eee1aff 100644 --- a/include/NEMO.h +++ b/include/NEMO.h @@ -4,6 +4,7 @@ #include "specfunc.h" #include "vartype.h" #include +#include #include #include @@ -252,6 +253,29 @@ class NEMOData MString d; for(size_t i = 0; i < NDepths(); i++) d += MString(" ") + "(" + i + " " + Depth(i) + ")"; + std::set vars; + for(const auto& f: nc) + { + auto head = f.Header(); + for(const auto& v: head.Variables()) + { + if(v.Name() == "thetao") vars.emplace("temp"); + if(v.Name() == "so") vars.emplace("sal"); + if(v.Name() == "mlotst") vars.emplace("mld"); + if(v.Name() == "zos") vars.emplace("ssh"); + if(v.Name() == "wo") vars.emplace("w"); + } + } + MString svars; + { + bool first = true; + for(const auto& v: vars) + { + svars += (first ? "" : ", ") + v.ShortName(); + first = false; + } + } + // clang-format off return "Dataset: " + Title() + "\n" + @@ -259,7 +283,8 @@ class NEMOData " End date: " + Time(NTimes()-1).ToString() + "\n" + " Time step: " + Timestep() + " seconds\n" + " Time moments: " + NTimes() + "\n" + - " Depths:" + d; + " Depths:" + d + "\n" + + " Supported variables: " + svars; // clang-format on } diff --git a/include/vartype.h b/include/vartype.h index dc2ecc5..00c1d45 100644 --- a/include/vartype.h +++ b/include/vartype.h @@ -84,10 +84,27 @@ class VarType: public vartype::VartypeUnion return "none"; } + MString ShortName() const + { + switch(VT()) + { + case(vartype::Vartype::NONE): return "none"; + case(vartype::Vartype::U): return "u"; + case(vartype::Vartype::V): return "v"; + case(vartype::Vartype::TEMP): return "temp"; + case(vartype::Vartype::SAL): return "sal"; + case(vartype::Vartype::CHL): return "chl"; + case(vartype::Vartype::MLD): return "mld"; + case(vartype::Vartype::SSH): return "ssh"; + case(vartype::Vartype::W): return "w"; + } + return "none"; + } + bool Ok() const { return VT() != vartype::Vartype::NONE; } explicit operator bool() const { return Ok(); } bool operator==(const VarType& vt) const { return VT() == vt.VT(); } - bool operator!=(const VarType& vt) const { return VT() != vt.VT(); } + auto operator<=>(const VarType& vt) const { return VT() <=> vt.VT(); } template bool isSupported() const { return std::visit(