Revision 4493964f6780e2ccbcdda9771965af2237d98187 authored by Tom Fischer on 20 September 2021, 06:56:57 UTC, committed by Tom Fischer on 20 September 2021, 06:56:57 UTC
[MeL/Mesh] Improves the memory footprint of the mesh. See merge request ogs/ogs!3785
ConstantParameter.cpp
/**
* \file
* \copyright
* Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#include "ConstantParameter.h"
#include "BaseLib/ConfigTree.h"
#include "BaseLib/Error.h"
#include "BaseLib/Logging.h"
namespace ParameterLib
{
std::unique_ptr<ParameterBase> createConstantParameter(
std::string const& name, BaseLib::ConfigTree const& config)
{
//! \ogs_file_param{prj__parameters__parameter__type}
config.checkConfigParameter("type", "Constant");
// Optional case for single-component variables where the value can be used.
// If the 'value' tag is found, use it and return. Otherwise continue with
// then required tag 'values'.
{
auto const value =
//! \ogs_file_param{prj__parameters__parameter__Constant__value}
config.getConfigParameterOptional<std::vector<double>>("value");
if (value)
{
if (value->size() != 1)
{
OGS_FATAL(
"Expected to read exactly one value, but {:d} were given.",
value->size());
}
DBUG("Using value {:g} for constant parameter.", (*value)[0]);
return std::make_unique<ConstantParameter<double>>(name,
(*value)[0]);
}
}
// Value tag not available; continue with required values tag.
std::vector<double> const values =
//! \ogs_file_param{prj__parameters__parameter__Constant__values}
config.getConfigParameter<std::vector<double>>("values");
if (values.empty())
{
OGS_FATAL("No value available for constant parameter.");
}
DBUG("Using following values for the constant parameter:");
for (double const v : values)
{
(void)v; // unused value if building w/o DBUG output.
DBUG("\t{:g}", v);
}
return std::make_unique<ConstantParameter<double>>(name, values);
}
} // namespace ParameterLib
Computing file changes ...