16const std::string LINEARFREEZING =
"Nextsim::LinearFreezing";
17const std::string UNESCOFREEZING =
"Nextsim::UnescoFreezing";
20Module<Nextsim::IFreezingPoint>::map Module<Nextsim::IFreezingPoint>::functionMap = {
21 { LINEARFREEZING, newImpl<Nextsim::IFreezingPoint, Nextsim::LinearFreezing> },
22 { UNESCOFREEZING, newImpl<Nextsim::IFreezingPoint, Nextsim::UnescoFreezing> },
26Module<Nextsim::IFreezingPoint>::fn Module<Nextsim::IFreezingPoint>::spf
27 = functionMap.at(LINEARFREEZING);
29std::unique_ptr<Nextsim::IFreezingPoint> Module<Nextsim::IFreezingPoint>::staticInstance
30 = std::move(newImpl<Nextsim::IFreezingPoint, Nextsim::LinearFreezing>());
32template <> std::string Module<Nextsim::IFreezingPoint>::moduleName()
34 return "Nextsim::IFreezingPoint";
37template <> HelpMap& getHelpRecursive<Nextsim::IFreezingPoint>(HelpMap& map,
bool getAll)
40 map[pfx].push_back({ pfx +
"." + Module<Nextsim::IFreezingPoint>::moduleName(),
41 ConfigType::MODULE, { LINEARFREEZING, UNESCOFREEZING }, LINEARFREEZING,
"",
42 "The module selecting the model for the freezing point of sea water." });
47 return getImplTemplate<Nextsim::IFreezingPoint, IFreezingPointModule>();
49template <>
void setImplementation<Nextsim::IFreezingPoint>(
const std::string& implName)
51 setImplTemplate<IFreezingPointModule>(implName);
53template <> std::unique_ptr<Nextsim::IFreezingPoint> getInstance()
55 return getInstTemplate<Nextsim::IFreezingPoint, IFreezingPointModule>();
58IFreezingPointModule::Constructor IFreezingPointModule::ctor;
59IFreezingPointModule::Constructor::Constructor()
61 addToConfiguredModules<Nextsim::IFreezingPoint, IFreezingPointModule>();
The interface class for calculation of the freezing point of seawater.