OGS
anonymous_namespace{CreatePhase.cpp} Namespace Reference

Functions

std::unique_ptr< MaterialPropertyLib::PhasecreatePhase (int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)

Function Documentation

◆ createPhase()

std::unique_ptr< MaterialPropertyLib::Phase > anonymous_namespace{CreatePhase.cpp}::createPhase ( int const geometry_dimension,
BaseLib::ConfigTree const & config,
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > & parameters,
ParameterLib::CoordinateSystem const *const local_coordinate_system,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )
Input File Parameter
prj__media__medium__phases__phase__type
Input File Parameter
prj__media__medium__phases__phase__Solid
Input File Parameter
Input File Parameter
prj__media__medium__phases__phase__FrozenLiquid
Input File Parameter
Input File Parameter
prj__media__medium__phases__phase__AqueousLiquid
Input File Parameter
Input File Parameter
prj__media__medium__phases__phase__Gas
Input File Parameter
prj__media__medium__phases__phase__components
Input File Parameter
prj__media__medium__phases__phase__properties

Definition at line 18 of file CreatePhase.cpp.

26{
27 using namespace MaterialPropertyLib;
28
30 auto&& phase_type_string = config.getConfigParameter<std::string>("type");
31
32 if (phase_type_string.empty())
33 {
34 OGS_FATAL("Phase type is a mandatory field and cannot be empty.");
35 }
36
41 auto const phase_type = fromString(phase_type_string);
42
43 // Parsing of optional components.
44 auto components = createComponents(
45 geometry_dimension,
47 config.getConfigSubtreeOptional("components"), parameters,
48 local_coordinate_system, curves);
49
50 // Properties of optional properties.
51 auto properties = createProperties(
52 geometry_dimension,
54 config.getConfigSubtreeOptional("properties"), parameters,
55 local_coordinate_system, curves);
56
57 if (components.empty() && !properties)
58 {
60 "Neither tag <components> nor tag <properties> has been set for "
61 "the phase '{:s}'.",
62 toString(phase_type));
63 }
64
65 return std::make_unique<Phase>(phase_type, std::move(components),
66 std::move(properties));
67}
#define OGS_FATAL(...)
Definition Error.h:19
std::vector< std::unique_ptr< Component > > createComponents(int const geometry_dimension, std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
PhaseName fromString(std::string const &phase_name)
Convert string to phase enum. Throws if invalid phase name.
Definition Phase.cpp:29
std::unique_ptr< PropertyArray > createProperties(int const geometry_dimension, std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
std::string_view toString(PhaseName phase_name)
Convert phase enum to its string representation.
Definition Phase.cpp:13

References MaterialPropertyLib::createComponents(), MaterialPropertyLib::createProperties(), MaterialPropertyLib::fromString(), BaseLib::ConfigTree::getConfigParameter(), BaseLib::ConfigTree::getConfigSubtreeOptional(), OGS_FATAL, and MaterialPropertyLib::toString().