Loading [MathJax]/extensions/tex2jax.js
OGS
ProjectData Class Referencefinal

Detailed Description

The ProjectData Object contains all the data needed for a certain project, i.e. all geometric data (stored in a GEOObjects-object), all the meshes, processes, and process variables.

Definition at line 60 of file ProjectData.h.

#include <ProjectData.h>

Public Member Functions

 ProjectData ()
 
 ProjectData (BaseLib::ConfigTree const &project_config, std::string const &project_directory, std::string const &output_directory, std::string const &mesh_directory, std::string const &script_directory)
 
 ProjectData (ProjectData &)=delete
 
std::vector< std::unique_ptr< ProcessLib::Process > > const & getProcesses () const
 Provides read access to the process container.
 
ProcessLib::TimeLoopgetTimeLoop ()
 
MeshLib::MeshgetMesh (std::string const &mesh_name) const
 
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & getMedia () const
 

Private Member Functions

void parseProcessVariables (BaseLib::ConfigTree const &process_variables_config)
 
std::vector< std::string > parseParameters (BaseLib::ConfigTree const &parameters_config)
 
void parseMedia (std::optional< BaseLib::ConfigTree > const &media_config)
 Parses media configuration and saves them in an object.
 
void parseProcesses (BaseLib::ConfigTree const &processes_config, std::string const &project_directory, std::string const &output_directory, std::unique_ptr< ChemistryLib::ChemicalSolverInterface > &&chemical_solver_interface)
 
void parseTimeLoop (BaseLib::ConfigTree const &config, const std::string &output_directory)
 Parses the time loop configuration.
 
void parseLinearSolvers (BaseLib::ConfigTree const &config)
 
void parseNonlinearSolvers (BaseLib::ConfigTree const &config)
 
void parseCurves (std::optional< BaseLib::ConfigTree > const &config)
 
std::unique_ptr< ChemistryLib::ChemicalSolverInterfaceparseChemicalSolverInterface (std::optional< BaseLib::ConfigTree > const &config, const std::string &output_directory)
 

Private Attributes

std::vector< std::unique_ptr< MeshLib::Mesh > > _mesh_vec
 
std::vector< GeoLib::NamedRaster_named_rasters
 
std::vector< std::unique_ptr< ProcessLib::Process > > _processes
 
std::vector< ProcessLib::ProcessVariable_process_variables
 
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > _parameters
 Buffer for each parameter config passed to the process.
 
std::optional< ParameterLib::CoordinateSystem_local_coordinate_system
 
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > _media
 
std::unique_ptr< ProcessLib::TimeLoop_time_loop
 The time loop used to solve this project's processes.
 
std::map< std::string, std::unique_ptr< GlobalLinearSolver > > _linear_solvers
 
std::map< std::string, std::unique_ptr< NumLib::NonlinearSolverBase > > _nonlinear_solvers
 
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > _curves
 

Constructor & Destructor Documentation

◆ ProjectData() [1/3]

ProjectData::ProjectData ( )
default

The empty constructor used in the gui, for example, when the project's configuration is not loaded yet.

◆ ProjectData() [2/3]

ProjectData::ProjectData ( BaseLib::ConfigTree const & project_config,
std::string const & project_directory,
std::string const & output_directory,
std::string const & mesh_directory,
std::string const & script_directory )

Constructs project data by parsing provided configuration.

Parameters
project_configConfiguration as read from the prj file.
project_directoryWhere to look for files referenced in the config_tree.
output_directoryWhere to write simulation output files to.
mesh_directoryDirectory where meshes are read from.
script_directoryDirectory where scripts (e.g. Python BCs) are read from.
Input File Parameter
prj__python_script
Input File Parameter
prj__curves
Input File Parameter
prj__parameters
Input File Parameter
prj__local_coordinate_system
Input File Parameter
prj__process_variables
Input File Parameter
prj__media
Input File Parameter
prj__linear_solvers
Input File Parameter
prj__chemical_system
Input File Parameter
prj__processes
Input File Parameter
prj__nonlinear_solvers
Input File Parameter
prj__time_loop

Definition at line 369 of file ProjectData.cpp.

374 : _mesh_vec(readMeshes(project_config, mesh_directory, project_directory)),
375 _named_rasters(readRasters(project_config, project_directory,
376 GeoLib::AABB(_mesh_vec[0]->getNodes().begin(),
377 _mesh_vec[0]->getNodes().end())
378 .getMinMaxPoints()))
379{
380 // for debugging raster reading implementation
381 // writeRasters(_named_rasters, output_directory);
382 if (auto const python_script =
384 project_config.getConfigParameterOptional<std::string>("python_script"))
385 {
386 namespace py = pybind11;
387
388#ifdef OGS_EMBED_PYTHON_INTERPRETER
389 _py_scoped_interpreter.emplace(ApplicationsLib::setupEmbeddedPython());
390#endif
391
392 // Append to python's module search path
393 auto py_path = py::module::import("sys").attr("path");
394 py_path.attr("append")(script_directory); // .prj or -s directory
395
396 auto const script_path =
397 BaseLib::joinPaths(script_directory, *python_script);
398
399 // Evaluate in scope of main module
400 py::object scope = py::module::import("__main__").attr("__dict__");
401 // add (global) variables
402 auto globals = py::dict(scope);
403 globals["ogs_prj_directory"] = project_directory;
404 globals["ogs_mesh_directory"] = mesh_directory;
405 globals["ogs_script_directory"] = script_directory;
406 try
407 {
408 py::eval_file(script_path, scope);
409 }
410 catch (py::error_already_set const& e)
411 {
412 OGS_FATAL("Error evaluating python script {}: {}", script_path,
413 e.what());
414 }
415 }
416
418 parseCurves(project_config.getConfigSubtreeOptional("curves"));
419
420 auto parameter_names_for_transformation =
422 parseParameters(project_config.getConfigSubtree("parameters"));
423
426 project_config.getConfigSubtreeOptional("local_coordinate_system"),
428
429 for (auto& parameter : _parameters)
430 {
431 if (std::find(begin(parameter_names_for_transformation),
432 end(parameter_names_for_transformation),
433 parameter->name) !=
434 end(parameter_names_for_transformation))
435 {
437 {
438 OGS_FATAL(
439 "The parameter '{:s}' is using the local coordinate system "
440 "but no local coordinate system was provided.",
441 parameter->name);
442 }
443 parameter->setCoordinateSystem(*_local_coordinate_system);
444 }
445
446 parameter->initialize(_parameters);
447 }
448
450 parseProcessVariables(project_config.getConfigSubtree("process_variables"));
451
453 parseMedia(project_config.getConfigSubtreeOptional("media"));
454
456 parseLinearSolvers(project_config.getConfigSubtree("linear_solvers"));
457
458 auto chemical_solver_interface = parseChemicalSolverInterface(
460 project_config.getConfigSubtreeOptional("chemical_system"),
461 output_directory);
462
464 parseProcesses(project_config.getConfigSubtree("processes"),
465 project_directory, output_directory,
466 std::move(chemical_solver_interface));
467
469 parseNonlinearSolvers(project_config.getConfigSubtree("nonlinear_solvers"));
470
472 parseTimeLoop(project_config.getConfigSubtree("time_loop"),
473 output_directory);
474}
#define OGS_FATAL(...)
Definition Error.h:26
std::vector< std::size_t > getNodes(GeoLib::Point const &pnt, std::vector< MeshLib::Node * > const &nodes, MeshLib::PropertyVector< int > const &mat_ids, std::pair< int, int > const &mat_limits, std::pair< double, double > const &elevation_limits, MeshLib::Mesh const &mesh)
Class AABB is an axis aligned bounding box around a given set of geometric points of (template) type ...
Definition AABB.h:56
std::optional< ParameterLib::CoordinateSystem > _local_coordinate_system
void parseProcesses(BaseLib::ConfigTree const &processes_config, std::string const &project_directory, std::string const &output_directory, std::unique_ptr< ChemistryLib::ChemicalSolverInterface > &&chemical_solver_interface)
std::unique_ptr< ChemistryLib::ChemicalSolverInterface > parseChemicalSolverInterface(std::optional< BaseLib::ConfigTree > const &config, const std::string &output_directory)
void parseMedia(std::optional< BaseLib::ConfigTree > const &media_config)
Parses media configuration and saves them in an object.
void parseLinearSolvers(BaseLib::ConfigTree const &config)
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > _parameters
Buffer for each parameter config passed to the process.
std::vector< GeoLib::NamedRaster > _named_rasters
void parseNonlinearSolvers(BaseLib::ConfigTree const &config)
void parseProcessVariables(BaseLib::ConfigTree const &process_variables_config)
void parseCurves(std::optional< BaseLib::ConfigTree > const &config)
std::vector< std::unique_ptr< MeshLib::Mesh > > _mesh_vec
void parseTimeLoop(BaseLib::ConfigTree const &config, const std::string &output_directory)
Parses the time loop configuration.
std::vector< std::string > parseParameters(BaseLib::ConfigTree const &parameters_config)
std::vector< std::unique_ptr< MeshLib::Mesh > > readMeshes(std::vector< std::string > const &filenames)
pybind11::scoped_interpreter setupEmbeddedPython()
std::string joinPaths(std::string const &pathA, std::string const &pathB)
std::optional< ParameterLib::CoordinateSystem > createCoordinateSystem(std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)
std::string project_directory
The directory where the prj file resides.
Definition FileTools.cpp:34
std::vector< GeoLib::NamedRaster > readRasters(BaseLib::ConfigTree const &config, std::string const &raster_directory, GeoLib::MinMaxPoints const &min_max_points)

References _local_coordinate_system, _parameters, ParameterLib::createCoordinateSystem(), BaseLib::ConfigTree::getConfigParameterOptional(), BaseLib::ConfigTree::getConfigSubtree(), BaseLib::ConfigTree::getConfigSubtreeOptional(), BaseLib::joinPaths(), OGS_FATAL, parseChemicalSolverInterface(), parseCurves(), parseLinearSolvers(), parseMedia(), parseNonlinearSolvers(), parseParameters(), parseProcesses(), parseProcessVariables(), parseTimeLoop(), and ApplicationsLib::setupEmbeddedPython().

◆ ProjectData() [3/3]

ProjectData::ProjectData ( ProjectData & )
delete

Member Function Documentation

◆ getMedia()

std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & ProjectData::getMedia ( ) const
inline

Definition at line 100 of file ProjectData.h.

101 {
102 return _media;
103 }
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > _media

References _media.

◆ getMesh()

MeshLib::Mesh & ProjectData::getMesh ( std::string const & mesh_name) const

Definition at line 1451 of file ProjectData.cpp.

1452{
1453 return MeshLib::findMeshByName(_mesh_vec, mesh_name);
1454}
Mesh & findMeshByName(std::vector< std::unique_ptr< Mesh > > const &meshes, std::string_view const name)
Definition Mesh.cpp:364

References _mesh_vec, and MeshLib::findMeshByName().

◆ getProcesses()

std::vector< std::unique_ptr< ProcessLib::Process > > const & ProjectData::getProcesses ( ) const
inline

Provides read access to the process container.

Definition at line 89 of file ProjectData.h.

91 {
92 return _processes;
93 }
std::vector< std::unique_ptr< ProcessLib::Process > > _processes

References _processes.

◆ getTimeLoop()

ProcessLib::TimeLoop & ProjectData::getTimeLoop ( )
inline

Definition at line 95 of file ProjectData.h.

95{ return *_time_loop; }
std::unique_ptr< ProcessLib::TimeLoop > _time_loop
The time loop used to solve this project's processes.

References _time_loop.

◆ parseChemicalSolverInterface()

std::unique_ptr< ChemistryLib::ChemicalSolverInterface > ProjectData::parseChemicalSolverInterface ( std::optional< BaseLib::ConfigTree > const & config,
const std::string & output_directory )
private

Definition at line 601 of file ProjectData.cpp.

604{
605 if (!config)
606 {
607 return nullptr;
608 }
609
610 std::unique_ptr<ChemistryLib::ChemicalSolverInterface>
611 chemical_solver_interface;
612#ifdef OGS_BUILD_PROCESS_COMPONENTTRANSPORT
613 INFO(
614 "Ready for initializing interface to a chemical solver for water "
615 "chemistry calculation.");
616
617 auto const chemical_solver =
619 config->getConfigAttribute<std::string>("chemical_solver");
620
621 if (boost::iequals(chemical_solver, "Phreeqc"))
622 {
623 INFO(
624 "Configuring phreeqc interface for water chemistry calculation "
625 "using file-based approach.");
626
627 chemical_solver_interface = ChemistryLib::createChemicalSolverInterface<
629 *config, output_directory);
630 }
631 else if (boost::iequals(chemical_solver, "PhreeqcKernel"))
632 {
633 OGS_FATAL(
634 "The chemical solver option of PhreeqcKernel is not accessible for "
635 "the time being. Please set 'Phreeqc'' as the chemical solver for "
636 "reactive transport modeling.");
637 }
638 else if (boost::iequals(chemical_solver, "SelfContained"))
639 {
640 INFO(
641 "Use self-contained chemical solver for water chemistry "
642 "calculation.");
643
644 chemical_solver_interface = ChemistryLib::createChemicalSolverInterface<
646 _mesh_vec, _linear_solvers, *config, output_directory);
647 }
648 else
649 {
650 OGS_FATAL(
651 "Unknown chemical solver. Please specify either Phreeqc or "
652 "PhreeqcKernel as the solver for water chemistry calculation "
653 "instead.");
654 }
655#else
656 (void)output_directory;
657
658 OGS_FATAL(
659 "Found the type of the process to be solved is not component transport "
660 "process. Please specify the process type to ComponentTransport. At "
661 "the present, water chemistry calculation is only available for "
662 "component transport process.");
663#endif
664 return chemical_solver_interface;
665}
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:35
std::map< std::string, std::unique_ptr< GlobalLinearSolver > > _linear_solvers
std::unique_ptr< ChemicalSolverInterface > createChemicalSolverInterface(std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::map< std::string, std::unique_ptr< GlobalLinearSolver > > const &linear_solvers, BaseLib::ConfigTree const &config, std::string const &output_directory)

References _linear_solvers, _mesh_vec, ChemistryLib::createChemicalSolverInterface(), INFO(), OGS_FATAL, ChemistryLib::Phreeqc, and ChemistryLib::SelfContained.

Referenced by ProjectData().

◆ parseCurves()

void ProjectData::parseCurves ( std::optional< BaseLib::ConfigTree > const & config)
private
Input File Parameter
prj__curves__curve
Input File Parameter
prj__curves__curve__name

Definition at line 1428 of file ProjectData.cpp.

1429{
1430 if (!config)
1431 {
1432 return;
1433 }
1434
1435 DBUG("Reading curves configuration.");
1436
1438 for (auto conf : config->getConfigSubtreeList("curve"))
1439 {
1441 auto const name = conf.getConfigParameter<std::string>("name");
1443 _curves,
1444 name,
1447 "The curve name is not unique.");
1448 }
1449}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > _curves
void insertIfKeyUniqueElseError(Map &map, Key const &key, Value &&value, std::string const &error_message)
Definition Algorithm.h:104
std::unique_ptr< CurveType > createPiecewiseLinearCurve(BaseLib::ConfigTree const &config)

References _curves, MathLib::createPiecewiseLinearCurve(), DBUG(), and BaseLib::insertIfKeyUniqueElseError().

Referenced by ProjectData().

◆ parseLinearSolvers()

void ProjectData::parseLinearSolvers ( BaseLib::ConfigTree const & config)
private
Input File Parameter
prj__linear_solvers__linear_solver
Input File Parameter
prj__linear_solvers__linear_solver__name

Definition at line 1381 of file ProjectData.cpp.

1382{
1383 DBUG("Reading linear solver configuration.");
1384
1386 for (auto conf : config.getConfigSubtreeList("linear_solver"))
1387 {
1389 auto const name = conf.getConfigParameter<std::string>("name");
1390 auto const linear_solver_parser =
1392 auto const solver_options =
1393 linear_solver_parser.parseNameAndOptions("", &conf);
1394
1397 name,
1398 std::make_unique<GlobalLinearSolver>(std::get<0>(solver_options),
1399 std::get<1>(solver_options)),
1400 "The linear solver name is not unique");
1401 }
1402}

References _linear_solvers, DBUG(), BaseLib::ConfigTree::getConfigSubtreeList(), and BaseLib::insertIfKeyUniqueElseError().

Referenced by ProjectData().

◆ parseMedia()

void ProjectData::parseMedia ( std::optional< BaseLib::ConfigTree > const & media_config)
private

Parses media configuration and saves them in an object.

Input File Parameter
prj__media__medium
Input File Parameter
prj__media__medium__id

Definition at line 550 of file ProjectData.cpp.

552{
553 if (!media_config)
554 {
555 return;
556 }
557
558 DBUG("Reading media:");
559
560 if (_mesh_vec.empty() || _mesh_vec[0] == nullptr)
561 {
562 ERR("A mesh is required to define medium materials.");
563 return;
564 }
565
566 for (auto const& medium_config :
568 media_config->getConfigSubtreeList("medium"))
569 {
570 auto create_medium = [dim = _mesh_vec[0]->getDimension(),
571 &medium_config, this](int const id)
572 {
574 id, _mesh_vec[0]->getDimension(), medium_config, _parameters,
576 _curves);
577 };
578
579 auto const material_id_string =
581 medium_config.getConfigAttribute<std::string>("id", "0");
582
583 std::vector<int> const material_ids_of_this_medium =
584 MaterialLib::parseMaterialIdString(material_id_string,
586
587 for (auto const& id : material_ids_of_this_medium)
588 {
590 id, _media, material_ids_of_this_medium, create_medium);
591 }
592 }
593
594 if (_media.empty())
595 {
596 OGS_FATAL("No entity is found inside <media>.");
597 }
598}
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:45
void createMediumForId(int const id, std::map< int, std::shared_ptr< T > > &media, std::vector< int > const &material_ids_of_this_medium, CreateMedium &&create_medium)
std::vector< int > parseMaterialIdString(std::string const &material_id_string, MeshLib::PropertyVector< int > const *const material_ids)
std::unique_ptr< Medium > createMedium(int const material_id, int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
PropertyVector< int > const * materialIDs(Mesh const &mesh)
Definition Mesh.cpp:268
unsigned getDimension(MeshLib::MeshElemType eleType)

References _curves, _local_coordinate_system, _media, _mesh_vec, _parameters, MaterialPropertyLib::createMedium(), MaterialLib::createMediumForId(), DBUG(), ERR(), OGS_FATAL, and MaterialLib::parseMaterialIdString().

Referenced by ProjectData().

◆ parseNonlinearSolvers()

void ProjectData::parseNonlinearSolvers ( BaseLib::ConfigTree const & config)
private
Input File Parameter
prj__nonlinear_solvers__nonlinear_solver
Input File Parameter
prj__nonlinear_solvers__nonlinear_solver__linear_solver
Input File Parameter
prj__nonlinear_solvers__nonlinear_solver__name

Definition at line 1404 of file ProjectData.cpp.

1405{
1406 DBUG("Reading non-linear solver configuration.");
1407
1409 for (auto conf : config.getConfigSubtreeList("nonlinear_solver"))
1410 {
1411 auto const ls_name =
1413 conf.getConfigParameter<std::string>("linear_solver");
1414 auto const& linear_solver = BaseLib::getOrError(
1415 _linear_solvers, ls_name,
1416 "A linear solver with the given name does not exist.");
1417
1419 auto const name = conf.getConfigParameter<std::string>("name");
1422 name,
1423 NumLib::createNonlinearSolver(*linear_solver, conf).first,
1424 "The nonlinear solver name is not unique");
1425 }
1426}
std::map< std::string, std::unique_ptr< NumLib::NonlinearSolverBase > > _nonlinear_solvers
std::pair< std::unique_ptr< NonlinearSolverBase >, NonlinearSolverTag > createNonlinearSolver(GlobalLinearSolver &linear_solver, BaseLib::ConfigTree const &config)
OGS_NO_DANGLING Map::mapped_type & getOrError(Map &map, Key const &key, std::string const &error_message)
Definition Algorithm.h:118

References _linear_solvers, _nonlinear_solvers, NumLib::createNonlinearSolver(), DBUG(), BaseLib::ConfigTree::getConfigSubtreeList(), BaseLib::getOrError(), and BaseLib::insertIfKeyUniqueElseError().

Referenced by ProjectData().

◆ parseParameters()

std::vector< std::string > ProjectData::parseParameters ( BaseLib::ConfigTree const & parameters_config)
private

Parses the parameters configuration and saves them. Checks for double parameters' names. Returns names of vectors which are to be transformed using local coordinate system.

Input File Parameter
prj__parameters__parameter
Input File Parameter
prj__parameters__parameter__use_local_coordinate_system

Definition at line 508 of file ProjectData.cpp.

510{
511 using namespace ProcessLib;
512
513 std::set<std::string> names;
514 std::vector<std::string> parameter_names_for_transformation;
515
516 DBUG("Reading parameters:");
517 for (auto parameter_config :
519 parameters_config.getConfigSubtreeList("parameter"))
520 {
521 auto p = ParameterLib::createParameter(parameter_config, _mesh_vec,
523 if (!names.insert(p->name).second)
524 {
525 OGS_FATAL("A parameter with name `{:s}' already exists.", p->name);
526 }
527
528 auto const use_local_coordinate_system =
530 parameter_config.getConfigParameterOptional<bool>(
531 "use_local_coordinate_system");
532 if (!!use_local_coordinate_system && *use_local_coordinate_system)
533 {
534 parameter_names_for_transformation.push_back(p->name);
535 }
536
537 _parameters.push_back(std::move(p));
538 }
539
540 _parameters.push_back(
543 _parameters.push_back(
546
547 return parameter_names_for_transformation;
548}
static PROCESSLIB_EXPORT const std::string constant_one_parameter_name
Definition Process.h:47
constexpr ranges::views::view_closure names
For an element of a range view return its name.
Definition Mesh.h:229
std::unique_ptr< ParameterBase > createParameter(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::vector< GeoLib::NamedRaster > const &named_rasters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
Definition Parameter.cpp:27
Single, constant value parameter.
static PROCESSLIB_EXPORT const std::string zero_parameter_name

References _curves, _mesh_vec, _named_rasters, _parameters, ProcessLib::Process::constant_one_parameter_name, ParameterLib::createParameter(), DBUG(), BaseLib::ConfigTree::getConfigSubtreeList(), OGS_FATAL, and ProcessLib::DeactivatedSubdomain::zero_parameter_name.

Referenced by ProjectData().

◆ parseProcesses()

void ProjectData::parseProcesses ( BaseLib::ConfigTree const & processes_config,
std::string const & project_directory,
std::string const & output_directory,
std::unique_ptr< ChemistryLib::ChemicalSolverInterface > && chemical_solver_interface )
private

Parses the processes configuration and creates new processes for each process entry passing the corresponding subtree to the process constructor.

Input File Parameter
prj__processes__process
Input File Parameter
prj__processes__process__type
Input File Parameter
prj__processes__process__name
Input File Parameter
prj__processes__process__integration_order
Input File Parameter
prj__processes__process__jacobian_assembler

Definition at line 667 of file ProjectData.cpp.

673{
674 (void)project_directory; // to avoid compilation warning
675 (void)output_directory; // to avoid compilation warning
676
677 DBUG("Reading processes:");
679 for (auto process_config : processes_config.getConfigSubtreeList("process"))
680 {
681 auto const type =
683 process_config.peekConfigParameter<std::string>("type");
684
685 auto const name =
687 process_config.getConfigParameter<std::string>("name");
688
689 [[maybe_unused]] auto const integration_order =
691 process_config.getConfigParameter<int>("integration_order");
692
693 std::unique_ptr<ProcessLib::Process> process;
694
695 auto jacobian_assembler = ProcessLib::createJacobianAssembler(
697 process_config.getConfigSubtreeOptional("jacobian_assembler"));
698
699#ifdef OGS_BUILD_PROCESS_STEADYSTATEDIFFUSION
700 if (type == "STEADY_STATE_DIFFUSION")
701 {
702 // The existence check of the in the configuration referenced
703 // process variables is checked in the physical process.
704 // TODO at the moment we have only one mesh, later there can be
705 // several meshes. Then we have to assign the referenced mesh
706 // here.
707 process =
709 name, *_mesh_vec[0], std::move(jacobian_assembler),
710 _process_variables, _parameters, integration_order,
711 process_config, _mesh_vec, _media);
712 }
713 else
714#endif
715#ifdef OGS_BUILD_PROCESS_LIQUIDFLOW
716 if (type == "LIQUID_FLOW")
717 {
719 name, *_mesh_vec[0], std::move(jacobian_assembler),
720 _process_variables, _parameters, integration_order,
721 process_config, _mesh_vec, _media);
722 }
723 else
724#endif
725#ifdef OGS_BUILD_PROCESS_STOKESFLOW
726 if (type == "StokesFlow")
727 {
728 WARN(
729 "The StokesFlow process is deprecated and will be removed in "
730 "OGS-6.5.5.");
731 switch (_mesh_vec[0]->getDimension())
732 {
733 case 2:
734 process =
736 name, *_mesh_vec[0], std::move(jacobian_assembler),
737 _process_variables, _parameters, integration_order,
738 process_config, _media);
739 break;
740 default:
741 OGS_FATAL(
742 "StokesFlow process does not support given "
743 "dimension {:d}",
744 _mesh_vec[0]->getDimension());
745 }
746 }
747 else
748#endif
749#ifdef OGS_BUILD_PROCESS_TES
750 if (type == "TES")
751 {
752 WARN(
753 "The TES process is deprecated and will be removed in "
754 "OGS-6.5.5.");
756 name, *_mesh_vec[0], std::move(jacobian_assembler),
757 _process_variables, _parameters, integration_order,
758 process_config);
759 }
760 else
761#endif
762#ifdef OGS_BUILD_PROCESS_TH2M
763 if (type == "TH2M")
764 {
765 switch (_mesh_vec[0]->getDimension())
766 {
767 case 2:
769 name, *_mesh_vec[0], std::move(jacobian_assembler),
771 _local_coordinate_system, integration_order,
772 process_config, _media);
773 break;
774 case 3:
776 name, *_mesh_vec[0], std::move(jacobian_assembler),
778 _local_coordinate_system, integration_order,
779 process_config, _media);
780 break;
781 default:
782 OGS_FATAL("TH2M process does not support given dimension");
783 }
784 }
785 else
786#endif
787#ifdef OGS_BUILD_PROCESS_HEATCONDUCTION
788 if (type == "HEAT_CONDUCTION")
789 {
791 name, *_mesh_vec[0], std::move(jacobian_assembler),
792 _process_variables, _parameters, integration_order,
793 process_config, _media);
794 }
795 else
796#endif
797#ifdef OGS_BUILD_PROCESS_HEATTRANSPORTBHE
798 if (type == "HEAT_TRANSPORT_BHE")
799 {
800 if (_mesh_vec[0]->getDimension() != 3)
801 {
802 OGS_FATAL(
803 "HEAT_TRANSPORT_BHE can only work with a 3-dimensional "
804 "mesh! ");
805 }
806
807 process =
809 name, *_mesh_vec[0], std::move(jacobian_assembler),
810 _process_variables, _parameters, integration_order,
811 process_config, _curves, _media);
812 }
813 else
814#endif
815#ifdef OGS_BUILD_PROCESS_WELLBORESIMULATOR
816 if (type == "WELLBORE_SIMULATOR")
817 {
818 if (_mesh_vec[0]->getDimension() != 1)
819 {
820 OGS_FATAL(
821 "WELLBORE_SIMULATOR can only work with a 1-dimensional "
822 "mesh!");
823 }
824
825 process =
827 name, *_mesh_vec[0], std::move(jacobian_assembler),
828 _process_variables, _parameters, integration_order,
829 process_config, _media);
830 }
831 else
832#endif
833#ifdef OGS_BUILD_PROCESS_HYDROMECHANICS
834 if (type == "HYDRO_MECHANICS")
835 {
836 if (
837 process_config.getConfigParameterOptional<int>("dimension"))
838 {
839 OGS_FATAL(
840 "The 'dimension' tag has been removed in the merge-request "
841 "!4766."
842 "The dimension is now taken from the main mesh and the tag "
843 "must be"
844 "removed. There is a python script in the merge-request "
845 "description"
846 "for automatic conversion.");
847 }
848 switch (_mesh_vec[0]->getDimension())
849 {
850 case 2:
851 process =
853 2>(name, *_mesh_vec[0],
854 std::move(jacobian_assembler),
856 _local_coordinate_system, integration_order,
857 process_config, _media);
858 break;
859 case 3:
860 process =
862 3>(name, *_mesh_vec[0],
863 std::move(jacobian_assembler),
865 _local_coordinate_system, integration_order,
866 process_config, _media);
867 break;
868 default:
869 OGS_FATAL(
870 "HYDRO_MECHANICS process does not support given "
871 "dimension");
872 }
873 }
874 else
875#endif
876#ifdef OGS_BUILD_PROCESS_LARGEDEFORMATION
877 if (type == "LARGE_DEFORMATION")
878 {
879 switch (_mesh_vec[0]->getDimension())
880 {
881 case 2:
884 name, *_mesh_vec[0], std::move(jacobian_assembler),
886 _local_coordinate_system, integration_order,
887 process_config, _media);
888 break;
889 case 3:
892 name, *_mesh_vec[0], std::move(jacobian_assembler),
894 _local_coordinate_system, integration_order,
895 process_config, _media);
896 break;
897 default:
898 OGS_FATAL(
899 "LARGE_DEFORMATION process does not support given "
900 "dimension");
901 }
902 }
903 else
904#endif
905#ifdef OGS_BUILD_PROCESS_LIE_HM
906 if (type == "HYDRO_MECHANICS_WITH_LIE")
907 {
908 if (
909 process_config.getConfigParameterOptional<int>("dimension"))
910 {
911 OGS_FATAL(
912 "The 'dimension' tag has been removed in the merge-request "
913 "!4766."
914 "The dimension is now taken from the main mesh and the tag "
915 "must be"
916 "removed. There is a python script in the merge-request "
917 "description"
918 "for automatic conversion.");
919 }
920 switch (_mesh_vec[0]->getDimension())
921 {
922 case 2:
925 name, *_mesh_vec[0], std::move(jacobian_assembler),
927 _local_coordinate_system, integration_order,
928 process_config, _media);
929 break;
930 case 3:
933 name, *_mesh_vec[0], std::move(jacobian_assembler),
935 _local_coordinate_system, integration_order,
936 process_config, _media);
937 break;
938 default:
939 OGS_FATAL(
940 "HYDRO_MECHANICS_WITH_LIE process does not support "
941 "given dimension");
942 }
943 }
944 else
945#endif
946#ifdef OGS_BUILD_PROCESS_HT
947 if (type == "HT")
948 {
950 name, *_mesh_vec[0], std::move(jacobian_assembler),
951 _process_variables, _parameters, integration_order,
952 process_config, _mesh_vec, _media);
953 }
954 else
955#endif
956#ifdef OGS_BUILD_PROCESS_COMPONENTTRANSPORT
957 if (type == "ComponentTransport")
958 {
959 process =
961 name, *_mesh_vec[0], std::move(jacobian_assembler),
962 _process_variables, _parameters, integration_order,
963 process_config, _mesh_vec, _media,
964 std::move(chemical_solver_interface));
965 }
966 else
967#endif
968#ifdef OGS_BUILD_PROCESS_PHASEFIELD
969 if (type == "PHASE_FIELD")
970 {
971 switch (_mesh_vec[0]->getDimension())
972 {
973 case 2:
974 process =
976 name, *_mesh_vec[0], std::move(jacobian_assembler),
978 _local_coordinate_system, integration_order,
979 process_config);
980 break;
981 case 3:
982 process =
984 name, *_mesh_vec[0], std::move(jacobian_assembler),
986 _local_coordinate_system, integration_order,
987 process_config);
988 break;
989 }
990 }
991 else
992#endif
993#ifdef OGS_BUILD_PROCESS_HMPHASEFIELD
994 if (type == "HM_PHASE_FIELD")
995 {
996 switch (_mesh_vec[0]->getDimension())
997 {
998 case 2:
999 process =
1001 name, *_mesh_vec[0], std::move(jacobian_assembler),
1003 _local_coordinate_system, integration_order,
1004 process_config, _media);
1005 break;
1006 case 3:
1007 process =
1009 name, *_mesh_vec[0], std::move(jacobian_assembler),
1011 _local_coordinate_system, integration_order,
1012 process_config, _media);
1013 break;
1014 }
1015 }
1016 else
1017#endif
1018#ifdef OGS_BUILD_PROCESS_RICHARDSCOMPONENTTRANSPORT
1019 if (type == "RichardsComponentTransport")
1020 {
1023 name, *_mesh_vec[0], std::move(jacobian_assembler),
1024 _process_variables, _parameters, integration_order,
1025 process_config, _media);
1026 }
1027 else
1028#endif
1029#ifdef OGS_BUILD_PROCESS_SMALLDEFORMATION
1030 if (type == "SMALL_DEFORMATION")
1031 {
1032 switch (_mesh_vec[0]->getDimension())
1033 {
1034 case 2:
1037 name, *_mesh_vec[0], std::move(jacobian_assembler),
1039 _local_coordinate_system, integration_order,
1040 process_config, _media);
1041 break;
1042 case 3:
1045 name, *_mesh_vec[0], std::move(jacobian_assembler),
1047 _local_coordinate_system, integration_order,
1048 process_config, _media);
1049 break;
1050 default:
1051 OGS_FATAL(
1052 "SMALL_DEFORMATION process does not support given "
1053 "dimension");
1054 }
1055 }
1056 else
1057#endif
1058#ifdef OGS_BUILD_PROCESS_SMALLDEFORMATIONNONLOCAL
1059 if (type == "SMALL_DEFORMATION_NONLOCAL")
1060 {
1061 WARN(
1062 "The SMALL_DEFORMATION_NONLOCAL process is deprecated and will "
1063 "be removed in OGS-6.5.5.");
1064 switch (_mesh_vec[0]->getDimension())
1065 {
1066 case 2:
1069 name, *_mesh_vec[0], std::move(jacobian_assembler),
1071 _local_coordinate_system, integration_order,
1072 process_config);
1073 break;
1074 case 3:
1077 name, *_mesh_vec[0], std::move(jacobian_assembler),
1079 _local_coordinate_system, integration_order,
1080 process_config);
1081 break;
1082 default:
1083 OGS_FATAL(
1084 "SMALL_DEFORMATION_NONLOCAL process does not support "
1085 "given dimension {:d}",
1086 _mesh_vec[0]->getDimension());
1087 }
1088 }
1089 else
1090#endif
1091#ifdef OGS_BUILD_PROCESS_LIE_M
1092 if (type == "SMALL_DEFORMATION_WITH_LIE")
1093 {
1094 if (
1095 process_config.getConfigParameterOptional<int>("dimension"))
1096 {
1097 OGS_FATAL(
1098 "The 'dimension' tag has been removed in the merge-request "
1099 "!4766."
1100 "The dimension is now taken from the main mesh and the tag "
1101 "must be"
1102 "removed. There is a python script in the merge-request "
1103 "description"
1104 "for automatic conversion.");
1105 }
1106 switch (_mesh_vec[0]->getDimension())
1107 {
1108 case 2:
1111 name, *_mesh_vec[0], std::move(jacobian_assembler),
1113 _local_coordinate_system, integration_order,
1114 process_config);
1115 break;
1116 case 3:
1119 name, *_mesh_vec[0], std::move(jacobian_assembler),
1121 _local_coordinate_system, integration_order,
1122 process_config);
1123 break;
1124 default:
1125 OGS_FATAL(
1126 "SMALL_DEFORMATION_WITH_LIE process does not support "
1127 "given dimension");
1128 }
1129 }
1130 else
1131#endif
1132#ifdef OGS_BUILD_PROCESS_THERMOHYDROMECHANICS
1133 if (type == "THERMO_HYDRO_MECHANICS")
1134 {
1135 if (
1136 process_config.getConfigParameterOptional<int>("dimension"))
1137 {
1138 OGS_FATAL(
1139 "The 'dimension' tag has been removed in the merge-request "
1140 "!4766."
1141 "The dimension is now taken from the main mesh and the tag "
1142 "must be"
1143 "removed. There is a python script in the merge-request "
1144 "description"
1145 "for automatic conversion.");
1146 }
1147 switch (_mesh_vec[0]->getDimension())
1148 {
1149 case 2:
1152 name, *_mesh_vec[0], std::move(jacobian_assembler),
1154 _local_coordinate_system, integration_order,
1155 process_config, _media);
1156 break;
1157 case 3:
1160 name, *_mesh_vec[0], std::move(jacobian_assembler),
1162 _local_coordinate_system, integration_order,
1163 process_config, _media);
1164 break;
1165 default:
1166 OGS_FATAL(
1167 "THERMO_HYDRO_MECHANICS process does not support given "
1168 "dimension");
1169 }
1170 }
1171 else
1172#endif
1173#ifdef OGS_BUILD_PROCESS_THERMOMECHANICALPHASEFIELD
1174 if (type == "THERMO_MECHANICAL_PHASE_FIELD")
1175 {
1176 WARN(
1177 "The THERMO_MECHANICAL_PHASE_FIELD process is deprecated and "
1178 "will be removed in OGS-6.5.5.");
1179 switch (_mesh_vec[0]->getDimension())
1180 {
1181 case 2:
1184 name, *_mesh_vec[0], std::move(jacobian_assembler),
1186 _local_coordinate_system, integration_order,
1187 process_config);
1188 break;
1189 case 3:
1192 name, *_mesh_vec[0], std::move(jacobian_assembler),
1194 _local_coordinate_system, integration_order,
1195 process_config);
1196 break;
1197 }
1198 }
1199 else
1200#endif
1201#ifdef OGS_BUILD_PROCESS_THERMOMECHANICS
1202 if (type == "THERMO_MECHANICS")
1203 {
1204 switch (_mesh_vec[0]->getDimension())
1205 {
1206 case 2:
1209 name, *_mesh_vec[0], std::move(jacobian_assembler),
1211 _local_coordinate_system, integration_order,
1212 process_config, _media);
1213 break;
1214 case 3:
1217 name, *_mesh_vec[0], std::move(jacobian_assembler),
1219 _local_coordinate_system, integration_order,
1220 process_config, _media);
1221 break;
1222 }
1223 }
1224 else
1225#endif
1226#ifdef OGS_BUILD_PROCESS_RICHARDSFLOW
1227 if (type == "RICHARDS_FLOW")
1228 {
1230 name, *_mesh_vec[0], std::move(jacobian_assembler),
1231 _process_variables, _parameters, integration_order,
1232 process_config, _media);
1233 }
1234 else
1235#endif
1236#ifdef OGS_BUILD_PROCESS_RICHARDSMECHANICS
1237 if (type == "RICHARDS_MECHANICS")
1238 {
1239 if (
1240 process_config.getConfigParameterOptional<int>("dimension"))
1241 {
1242 OGS_FATAL(
1243 "The 'dimension' tag has been removed in the merge-request "
1244 "!4766."
1245 "The dimension is now taken from the main mesh and the tag "
1246 "must be"
1247 "removed. There is a python script in the merge-request "
1248 "description"
1249 "for automatic conversion.");
1250 }
1251 switch (_mesh_vec[0]->getDimension())
1252 {
1253 case 2:
1256 name, *_mesh_vec[0], std::move(jacobian_assembler),
1258 _local_coordinate_system, integration_order,
1259 process_config, _media);
1260 break;
1261 case 3:
1264 name, *_mesh_vec[0], std::move(jacobian_assembler),
1266 _local_coordinate_system, integration_order,
1267 process_config, _media);
1268 break;
1269 }
1270 }
1271 else
1272#endif
1273#ifdef OGS_BUILD_PROCESS_THERMORICHARDSFLOW
1274 if (type == "THERMO_RICHARDS_FLOW")
1275 {
1276 process =
1278 name, *_mesh_vec[0], std::move(jacobian_assembler),
1279 _process_variables, _parameters, integration_order,
1280 process_config, _media);
1281 }
1282 else
1283#endif
1284#ifdef OGS_BUILD_PROCESS_THERMORICHARDSMECHANICS
1285 if (type == "THERMO_RICHARDS_MECHANICS")
1286 {
1287 switch (_mesh_vec[0]->getDimension())
1288 {
1289 case 2:
1292 name, *_mesh_vec[0], std::move(jacobian_assembler),
1294 _local_coordinate_system, integration_order,
1295 process_config, _media);
1296 break;
1297 case 3:
1300 name, *_mesh_vec[0], std::move(jacobian_assembler),
1302 _local_coordinate_system, integration_order,
1303 process_config, _media);
1304 break;
1305 }
1306 }
1307 else
1308#endif
1309
1310#ifdef OGS_BUILD_PROCESS_TWOPHASEFLOWWITHPP
1311 if (type == "TWOPHASE_FLOW_PP")
1312 {
1313 process =
1315 name, *_mesh_vec[0], std::move(jacobian_assembler),
1316 _process_variables, _parameters, integration_order,
1317 process_config, _media);
1318 }
1319 else
1320#endif
1321#ifdef OGS_BUILD_PROCESS_TWOPHASEFLOWWITHPRHO
1322 if (type == "TWOPHASE_FLOW_PRHO")
1323 {
1324 WARN(
1325 "The TWOPHASE_FLOW_PRHO process is deprecated and will be "
1326 "removed in OGS-6.5.5.");
1329 name, *_mesh_vec[0], std::move(jacobian_assembler),
1330 _process_variables, _parameters, integration_order,
1331 process_config, _media);
1332 }
1333 else
1334#endif
1335#ifdef OGS_BUILD_PROCESS_THERMALTWOPHASEFLOWWITHPP
1336 if (type == "THERMAL_TWOPHASE_WITH_PP")
1337 {
1340 name, *_mesh_vec[0], std::move(jacobian_assembler),
1341 _process_variables, _parameters, integration_order,
1342 process_config, _media);
1343 }
1344 else
1345#endif
1346 {
1347 OGS_FATAL("Unknown process type: {:s}", type);
1348 }
1349
1350 if (ranges::contains(_processes, name,
1351 [](std::unique_ptr<ProcessLib::Process> const& p)
1352 { return p->name; }))
1353 {
1354 OGS_FATAL("The process name '{:s}' is not unique.", name);
1355 }
1356 _processes.push_back(std::move(process));
1357 }
1358}
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:40
std::vector< ProcessLib::ProcessVariable > _process_variables
std::unique_ptr< Process > createComponentTransportProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media, std::unique_ptr< ChemistryLib::ChemicalSolverInterface > &&chemical_solver_interface)
template std::unique_ptr< Process > createHMPhaseFieldProcess< 3 >(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createHMPhaseFieldProcess< 2 >(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createHTProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createHeatConductionProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createHeatTransportBHEProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createHydroMechanicsProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createHydroMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createHydroMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createSmallDeformationProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createSmallDeformationProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createLargeDeformationProcess< 2 >(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createLargeDeformationProcess< 3 >(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createLiquidFlowProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createPhaseFieldProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createPhaseFieldProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
std::unique_ptr< Process > createRichardsComponentTransportProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createRichardsFlowProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createRichardsMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createRichardsMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createSmallDeformationNonlocalProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createSmallDeformationNonlocalProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createSmallDeformationProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createSmallDeformationProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createSteadyStateDiffusion(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< MeshLib::Mesh > > const &meshes, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createStokesFlowProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createTESProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createTH2MProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createTH2MProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createThermalTwoPhaseFlowWithPPProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoHydroMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoHydroMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoMechanicalPhaseFieldProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createThermoMechanicalPhaseFieldProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config)
template std::unique_ptr< Process > createThermoMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createThermoRichardsFlowProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoRichardsMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoRichardsMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createTwoPhaseFlowWithPPProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createTwoPhaseFlowWithPrhoProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createWellboreSimulatorProcess(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< AbstractJacobianAssembler > createJacobianAssembler(std::optional< BaseLib::ConfigTree > const &config)

References _curves, _local_coordinate_system, _media, _mesh_vec, _parameters, _process_variables, _processes, ProcessLib::ComponentTransport::createComponentTransportProcess(), ProcessLib::HeatConduction::createHeatConductionProcess(), ProcessLib::HeatTransportBHE::createHeatTransportBHEProcess(), ProcessLib::HMPhaseField::createHMPhaseFieldProcess< 2 >(), ProcessLib::HMPhaseField::createHMPhaseFieldProcess< 3 >(), ProcessLib::HT::createHTProcess(), ProcessLib::HydroMechanics::createHydroMechanicsProcess(), ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess< 2 >(), ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess< 3 >(), ProcessLib::createJacobianAssembler(), ProcessLib::LargeDeformation::createLargeDeformationProcess< 2 >(), ProcessLib::LargeDeformation::createLargeDeformationProcess< 3 >(), ProcessLib::LiquidFlow::createLiquidFlowProcess(), ProcessLib::PhaseField::createPhaseFieldProcess< 2 >(), ProcessLib::PhaseField::createPhaseFieldProcess< 3 >(), ProcessLib::RichardsComponentTransport::createRichardsComponentTransportProcess(), ProcessLib::RichardsFlow::createRichardsFlowProcess(), ProcessLib::RichardsMechanics::createRichardsMechanicsProcess< 2 >(), ProcessLib::RichardsMechanics::createRichardsMechanicsProcess< 3 >(), ProcessLib::SmallDeformationNonlocal::createSmallDeformationNonlocalProcess< 2 >(), ProcessLib::SmallDeformationNonlocal::createSmallDeformationNonlocalProcess< 3 >(), ProcessLib::LIE::SmallDeformation::createSmallDeformationProcess< 2 >(), ProcessLib::SmallDeformation::createSmallDeformationProcess< 2 >(), ProcessLib::LIE::SmallDeformation::createSmallDeformationProcess< 3 >(), ProcessLib::SmallDeformation::createSmallDeformationProcess< 3 >(), ProcessLib::SteadyStateDiffusion::createSteadyStateDiffusion(), ProcessLib::StokesFlow::createStokesFlowProcess< 2 >(), ProcessLib::TES::createTESProcess(), ProcessLib::TH2M::createTH2MProcess< 2 >(), ProcessLib::TH2M::createTH2MProcess< 3 >(), ProcessLib::ThermalTwoPhaseFlowWithPP::createThermalTwoPhaseFlowWithPPProcess(), ProcessLib::ThermoHydroMechanics::createThermoHydroMechanicsProcess< 2 >(), ProcessLib::ThermoHydroMechanics::createThermoHydroMechanicsProcess< 3 >(), ProcessLib::ThermoMechanicalPhaseField::createThermoMechanicalPhaseFieldProcess< 2 >(), ProcessLib::ThermoMechanicalPhaseField::createThermoMechanicalPhaseFieldProcess< 3 >(), ProcessLib::ThermoMechanics::createThermoMechanicsProcess< 2 >(), ProcessLib::ThermoMechanics::createThermoMechanicsProcess< 3 >(), ProcessLib::ThermoRichardsFlow::createThermoRichardsFlowProcess(), ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcess< 2 >(), ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcess< 3 >(), ProcessLib::TwoPhaseFlowWithPP::createTwoPhaseFlowWithPPProcess(), ProcessLib::TwoPhaseFlowWithPrho::createTwoPhaseFlowWithPrhoProcess(), ProcessLib::WellboreSimulator::createWellboreSimulatorProcess(), DBUG(), BaseLib::ConfigTree::getConfigSubtreeList(), OGS_FATAL, and WARN().

Referenced by ProjectData().

◆ parseProcessVariables()

void ProjectData::parseProcessVariables ( BaseLib::ConfigTree const & process_variables_config)
private

Parses the process variables configuration and creates new variables for each variable entry passing the corresponding subtree to the process variable constructor.

Input File Parameter
prj__process_variables__process_variable
Input File Parameter
prj__process_variables__process_variable__mesh

Definition at line 476 of file ProjectData.cpp.

478{
479 DBUG("Parse process variables:");
480
481 std::set<std::string> names;
482
483 for (auto var_config
485 : process_variables_config.getConfigSubtreeList("process_variable"))
486 {
487 // Either the mesh name is given, or the first mesh's name will be
488 // taken. Taking the first mesh's value is deprecated.
489 auto const mesh_name =
491 var_config.getConfigParameter<std::string>("mesh",
492 _mesh_vec[0]->getName());
493
494 auto& mesh = MeshLib::findMeshByName(_mesh_vec, mesh_name);
495
496 auto pv = ProcessLib::ProcessVariable{var_config, mesh, _mesh_vec,
498 if (!names.insert(pv.getName()).second)
499 {
500 OGS_FATAL("A process variable with name `{:s}' already exists.",
501 pv.getName());
502 }
503
504 _process_variables.push_back(std::move(pv));
505 }
506}

References _curves, _mesh_vec, _parameters, _process_variables, DBUG(), MeshLib::findMeshByName(), BaseLib::ConfigTree::getConfigSubtreeList(), and OGS_FATAL.

Referenced by ProjectData().

◆ parseTimeLoop()

void ProjectData::parseTimeLoop ( BaseLib::ConfigTree const & config,
const std::string & output_directory )
private

Parses the time loop configuration.

Definition at line 1360 of file ProjectData.cpp.

1362{
1363 DBUG("Reading time loop configuration.");
1364
1365 bool const compensate_non_equilibrium_initial_residuum = std::any_of(
1366 std::begin(_process_variables),
1367 std::end(_process_variables),
1368 [](auto const& process_variable)
1369 { return process_variable.compensateNonEquilibriumInitialResiduum(); });
1370
1372 config, output_directory, _processes, _nonlinear_solvers, _mesh_vec,
1373 compensate_non_equilibrium_initial_residuum);
1374
1375 if (!_time_loop)
1376 {
1377 OGS_FATAL("Initialization of time loop failed.");
1378 }
1379}
std::unique_ptr< TimeLoop > createTimeLoop(BaseLib::ConfigTree const &config, std::string const &output_directory, const std::vector< std::unique_ptr< Process > > &processes, const std::map< std::string, std::unique_ptr< NumLib::NonlinearSolverBase > > &nonlinear_solvers, std::vector< std::unique_ptr< MeshLib::Mesh > > &meshes, bool const compensate_non_equilibrium_initial_residuum)
Builds a TimeLoop from the given configuration.

References _mesh_vec, _nonlinear_solvers, _process_variables, _processes, _time_loop, ProcessLib::createTimeLoop(), DBUG(), and OGS_FATAL.

Referenced by ProjectData().

Member Data Documentation

◆ _curves

std::map<std::string, std::unique_ptr<MathLib::PiecewiseLinearInterpolation> > ProjectData::_curves
private

◆ _linear_solvers

std::map<std::string, std::unique_ptr<GlobalLinearSolver> > ProjectData::_linear_solvers
private

◆ _local_coordinate_system

std::optional<ParameterLib::CoordinateSystem> ProjectData::_local_coordinate_system
private

Definition at line 153 of file ProjectData.h.

Referenced by ProjectData(), parseMedia(), and parseProcesses().

◆ _media

std::map<int, std::shared_ptr<MaterialPropertyLib::Medium> > ProjectData::_media
private

Definition at line 155 of file ProjectData.h.

Referenced by getMedia(), parseMedia(), and parseProcesses().

◆ _mesh_vec

std::vector<std::unique_ptr<MeshLib::Mesh> > ProjectData::_mesh_vec
private

◆ _named_rasters

std::vector<GeoLib::NamedRaster> ProjectData::_named_rasters
private

Definition at line 146 of file ProjectData.h.

Referenced by parseParameters().

◆ _nonlinear_solvers

std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase> > ProjectData::_nonlinear_solvers
private

Definition at line 163 of file ProjectData.h.

Referenced by parseNonlinearSolvers(), and parseTimeLoop().

◆ _parameters

std::vector<std::unique_ptr<ParameterLib::ParameterBase> > ProjectData::_parameters
private

Buffer for each parameter config passed to the process.

Definition at line 151 of file ProjectData.h.

Referenced by ProjectData(), parseMedia(), parseParameters(), parseProcesses(), and parseProcessVariables().

◆ _process_variables

std::vector<ProcessLib::ProcessVariable> ProjectData::_process_variables
private

Definition at line 148 of file ProjectData.h.

Referenced by parseProcesses(), parseProcessVariables(), and parseTimeLoop().

◆ _processes

std::vector<std::unique_ptr<ProcessLib::Process> > ProjectData::_processes
private

Definition at line 147 of file ProjectData.h.

Referenced by getProcesses(), parseProcesses(), and parseTimeLoop().

◆ _time_loop

std::unique_ptr<ProcessLib::TimeLoop> ProjectData::_time_loop
private

The time loop used to solve this project's processes.

Definition at line 158 of file ProjectData.h.

Referenced by getTimeLoop(), and parseTimeLoop().


The documentation for this class was generated from the following files: