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.