std::unique_ptr<AbstractJacobianAssembler> createJacobianAssembler( boost::optional<BaseLib::ConfigTree> const& config) { if (!config) return std::unique_ptr<AbstractJacobianAssembler>( new AnalyticalJacobianAssembler); //! \ogs_file_param{process__jacobian_assembler__type} auto const type = config->peekConfigParameter<std::string>("type"); if (type == "Analytical") { config->ignoreConfigParameter("type"); return std::unique_ptr<AbstractJacobianAssembler>( new AnalyticalJacobianAssembler); } else if (type == "CentralDifferences") { return createCentralDifferencesJacobianAssembler(*config); } OGS_FATAL("Unknown Jacobian assembler type: `%s'.", type.c_str()); }