diff --git a/Applications/ProjectData.h b/Applications/ProjectData.h index 4b06935b26da43a8ab05372de05c78f0b9f6cf0f..c33e70905a785afc1c010b4f0709738c0abd71fb 100644 --- a/Applications/ProjectData.h +++ b/Applications/ProjectData.h @@ -32,57 +32,75 @@ namespace ProcessLib { /** * 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, FEM Conditions (i.e. - * Boundary Conditions, Source Terms and Initial Conditions), etc. - * ProjectData does not administrate any of the objects, it is just a "container class" - * to store them all in one place. - * For each class of object stored in this container exists an add-, get- and remove-method. - * - * \sa GEOModels, FEMCondition + * geometric data (stored in a GEOObjects-object), all the meshes, processes, + * and process variables. */ class ProjectData { using ConfigTree = boost::property_tree::ptree; public: + /// The empty constructor used in the gui, for example, when the project's + /// configuration is not loaded yet. ProjectData(); - ProjectData(ConfigTree const& config_tree, std::string const& path); - virtual ~ProjectData(); - //** Geometry functionality **// + /// Constructs project data by parsing provided configuration. + /// The additional path is used to find files referenced in the + /// configuration. + ProjectData(ConfigTree const& config_tree, std::string const& path); - // Returns the GEOObjects containing all points, polylines and surfaces - GeoLib::GEOObjects* getGEOObjects() { return _geoObjects; } + virtual ~ProjectData(); - //** Mesh functionality **// + /// Returns the GEOObjects containing all points, polylines and surfaces. + GeoLib::GEOObjects* getGEOObjects() + { + return _geoObjects; + } - /// Adds a new mesh + /// Adds a new mesh under a (possibly new) unique name. + /// \attention This might change the given mesh's name. void addMesh(MeshLib::Mesh* mesh); - /// Returns the mesh with the given name. + /// Returns the mesh with the given name or a \c nullptr if the mesh was not + /// found. const MeshLib::Mesh* getMesh(const std::string &name) const; /// Returns all the meshes with their respective names - const std::vector<MeshLib::Mesh*>& getMeshObjects() const { return _mesh_vec; } + /// \attention This method should be used only by methods garanteeing + /// read-only access to the meshes. + /// \todo This method breaks encapsulation. + const std::vector<MeshLib::Mesh*>& getMeshObjects() const + { + return _mesh_vec; + } /// Deletes all meshes with the given name and removes them from the list of - // saved meshes. + /// saved meshes. If any mesh was found for removal, true is returned and + /// false otherwise. bool removeMesh(const std::string &name); - /// Checks if the name of the mesh is already exists, if so it generates a unique name. + /// Checks if a mesh with the same name exists and provides a unique name in + /// case of already existing mesh. Returns true if the mesh name is unique. + /// Returns false and changes the provided name to a unique name otherwise. bool isUniqueMeshName(std::string &name); + /// Returns true if a mesh with the same name exists and false otherwise. bool meshExists(const std::string &name); private: + /// Returns an iterator to the first found mesh with the given name. std::vector<MeshLib::Mesh*>::const_iterator findMeshByName( std::string const& name) const; std::vector<MeshLib::Mesh*>::iterator findMeshByName( std::string const& name); - /// read the process variables from configuration + /// Parses the process variables configuration and creates new variables for + /// each variable entry passing the corresponding subtree to the process + /// variable constructor. void readProcessVariables(ConfigTree const& process_variables_config); - // read the processes from configuration + /// Parses the processes configuration and creates new processes for each + /// process entry passing the corresponding subtree to the process + /// constructor. void readProcesses(ConfigTree const& process_config); private: diff --git a/ProcessLib/BoundaryCondition.h b/ProcessLib/BoundaryCondition.h index f0bffa0c1f81c359870c193b00da90d86bea637c..6bf2c94e69e872152cce81eff223e5a652937fda 100644 --- a/ProcessLib/BoundaryCondition.h +++ b/ProcessLib/BoundaryCondition.h @@ -34,7 +34,10 @@ private: GeoLib::GeoObject const* const _geometry; }; - +/// The DirichletBoundaryCondition class describes a constant in space +/// and time Dirichlet boundary condition. +/// The expected parameter in the passed configuration is "value" which, when +/// not present defaults to zero. class DirichletBoundaryCondition : public BoundaryCondition { using ConfigTree = boost::property_tree::ptree;