OGS
ProcessModel Class Referencefinal

Detailed Description

A model implementing a tree structure for process-relevant information such as process types, FEM-Conditions (BCs, ICs, STs), etc. as a double-linked list.

See also
TreeModel, ProcessView, TreeItem, CondObjectListItem

Definition at line 24 of file ProcessModel.h.

#include <ProcessModel.h>

Inheritance diagram for ProcessModel:
[legend]
Collaboration diagram for ProcessModel:
[legend]

Public Slots

void addBoundaryConditions (std::vector< std::unique_ptr< DataHolderLib::BoundaryCondition > > const &conditions)
 Adds vector of Boundary Conditions to the model.
void addSourceTerms (std::vector< std::unique_ptr< DataHolderLib::SourceTerm > > const &conditions)
 Adds vector of Source Terms to the model.
void addCondition (DataHolderLib::FemCondition *condition)
 Adds a single FEM Conditions to the model.
ProcessVarItemaddProcessVar (QString const &name)
 Adds a process to the model.
void removeCondition (QString const &process_var, QString const &param)
 Removes FEMConditions from the the model.
void removeProcessVariable (QString const &name)
 Removes a process variable incl all associated conditions from the model.
void clearModel ()
 Removes the complete content from the model.
void updateModel ()
 Updates the model based on the ProjectData-object.
Public Slots inherited from TreeModel
void updateData ()

Public Member Functions

 ProcessModel (DataHolderLib::Project &project, QObject *parent=nullptr)
int columnCount (const QModelIndex &parent=QModelIndex()) const override
Public Member Functions inherited from TreeModel
 TreeModel (QObject *parent=nullptr)
 ~TreeModel () override
QVariant data (const QModelIndex &index, int role) const override
bool setData (const QModelIndex &index, const QVariant &value, int role) override
Qt::ItemFlags flags (const QModelIndex &index) const override
TreeItemgetItem (const QModelIndex &index) const
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent (const QModelIndex &index) const override
bool removeRows (int position, int count, const QModelIndex &parent) override
int rowCount (const QModelIndex &parent=QModelIndex()) const override
int columnCount (const QModelIndex &parent=QModelIndex()) const override
TreeItemrootItem () const

Private Member Functions

void addConditionItem (DataHolderLib::FemCondition *cond, ProcessVarItem *parent)
 Adds a new FEM condition to the condition tree model.
ProcessVarItemgetProcessVarItem (QString const &process_var_name) const
void removeCondition (ProcessVarItem *process_var, QString const &param_name)
 Removes FEMConditions from the the model.

Private Attributes

DataHolderLib::Project_project

Additional Inherited Members

Protected Attributes inherited from TreeModel
TreeItem_rootItem

Constructor & Destructor Documentation

◆ ProcessModel()

ProcessModel::ProcessModel ( DataHolderLib::Project & project,
QObject * parent = nullptr )
explicit

Definition at line 17 of file ProcessModel.cpp.

18 : TreeModel(parent), _project(project)
19{
20 QList<QVariant> rootData;
21 delete _rootItem;
22 rootData << "Name"
23 << "Value"
24 << ""
25 << ""
26 << "";
27 _rootItem = new TreeItem(rootData, nullptr);
28}
DataHolderLib::Project & _project
QModelIndex parent(const QModelIndex &index) const override
Definition TreeModel.cpp:70
TreeModel(QObject *parent=nullptr)
Definition TreeModel.cpp:15
TreeItem * _rootItem
Definition TreeModel.h:47

References TreeModel::TreeModel(), _project, TreeModel::_rootItem, and TreeModel::parent().

Member Function Documentation

◆ addBoundaryConditions

void ProcessModel::addBoundaryConditions ( std::vector< std::unique_ptr< DataHolderLib::BoundaryCondition > > const & conditions)
slot

Adds vector of Boundary Conditions to the model.

Returns the vtk source object for the specified subtree of a process with the given name.

Definition at line 60 of file ProcessModel.cpp.

63{
64 for (auto& cond : conditions)
65 {
66 addCondition(cond.get());
67 }
68}
void addCondition(DataHolderLib::FemCondition *condition)
Adds a single FEM Conditions to the model.

References addCondition().

Referenced by updateModel().

◆ addCondition

void ProcessModel::addCondition ( DataHolderLib::FemCondition * condition)
slot

Adds a single FEM Conditions to the model.

Definition at line 49 of file ProcessModel.cpp.

50{
51 QString const name(QString::fromStdString(condition->getProcessVarName()));
52 ProcessVarItem* process_var(getProcessVarItem(name));
53 if (process_var == nullptr)
54 {
55 process_var = addProcessVar(name);
56 }
57 addConditionItem(condition, process_var);
58}
std::string const getProcessVarName() const
Returns the name of the associated process variable.
ProcessVarItem * addProcessVar(QString const &name)
Adds a process to the model.
ProcessVarItem * getProcessVarItem(QString const &process_var_name) const
void addConditionItem(DataHolderLib::FemCondition *cond, ProcessVarItem *parent)
Adds a new FEM condition to the condition tree model.

References addConditionItem(), addProcessVar(), getProcessVarItem(), and DataHolderLib::FemCondition::getProcessVarName().

Referenced by addBoundaryConditions(), and addSourceTerms().

◆ addConditionItem()

void ProcessModel::addConditionItem ( DataHolderLib::FemCondition * cond,
ProcessVarItem * parent )
private

Adds a new FEM condition to the condition tree model.

Definition at line 37 of file ProcessModel.cpp.

39{
40 QList<QVariant> item_data;
41
42 item_data << QString::fromStdString(cond->getParamName())
43 << QString::fromStdString(cond->getConditionClassStr());
44
45 auto* cond_item = new CondItem(item_data, parent, cond);
46 parent->appendChild(cond_item);
47}
virtual std::string const getConditionClassStr() const =0
Returns the type of condition for displaying purposes.
std::string const getParamName() const
Returns the name of the parameter associated with the condition.

References DataHolderLib::FemCondition::getConditionClassStr(), DataHolderLib::FemCondition::getParamName(), and TreeModel::parent().

Referenced by addCondition().

◆ addProcessVar

ProcessVarItem * ProcessModel::addProcessVar ( QString const & name)
slot

Adds a process to the model.

Definition at line 79 of file ProcessModel.cpp.

80{
81 beginResetModel();
82 QList<QVariant> process_var_data;
83 process_var_data << QVariant(name) << "";
84 auto* process_var = new ProcessVarItem(process_var_data, _rootItem);
85 _rootItem->appendChild(process_var);
86 endResetModel();
87 return process_var;
88}

References TreeModel::_rootItem.

Referenced by addCondition().

◆ addSourceTerms

void ProcessModel::addSourceTerms ( std::vector< std::unique_ptr< DataHolderLib::SourceTerm > > const & conditions)
slot

Adds vector of Source Terms to the model.

Definition at line 70 of file ProcessModel.cpp.

72{
73 for (auto& cond : conditions)
74 {
75 addCondition(cond.get());
76 }
77}

References addCondition().

Referenced by updateModel().

◆ clearModel

void ProcessModel::clearModel ( )
slot

Removes the complete content from the model.

Definition at line 161 of file ProcessModel.cpp.

162{
163 int const n_process_vars = _rootItem->childCount();
164 for (int i = n_process_vars; i >= 0; --i)
165 {
166 auto* pv_item = dynamic_cast<ProcessVarItem*>(_rootItem->child(i));
167 removeProcessVariable(pv_item->getName());
168 }
169}
void removeProcessVariable(QString const &name)
Removes a process variable incl all associated conditions from the model.

References TreeModel::_rootItem, and removeProcessVariable().

◆ columnCount()

int ProcessModel::columnCount ( const QModelIndex & parent = QModelIndex()) const
override

Definition at line 30 of file ProcessModel.cpp.

31{
32 Q_UNUSED(parent)
33
34 return 2;
35}

References TreeModel::parent().

◆ getProcessVarItem()

ProcessVarItem * ProcessModel::getProcessVarItem ( QString const & process_var_name) const
private

Definition at line 90 of file ProcessModel.cpp.

91{
92 int const n_children(_rootItem->childCount());
93 for (int i = 0; i < n_children; ++i)
94 {
95 auto* item(dynamic_cast<ProcessVarItem*>(_rootItem->child(i)));
96 if (item != nullptr && item->getName() == name)
97 {
98 return item;
99 }
100 }
101 return nullptr;
102}

References TreeModel::_rootItem.

Referenced by addCondition(), removeCondition(), and removeProcessVariable().

◆ removeCondition() [1/2]

void ProcessModel::removeCondition ( ProcessVarItem * process_var,
QString const & param_name )
private

Removes FEMConditions from the the model.

Definition at line 104 of file ProcessModel.cpp.

106{
107 int const n_conditions = process_var->childCount();
108 for (int i = 0; i < n_conditions; ++i)
109 {
110 CondItem const* const cond =
111 dynamic_cast<CondItem*>(process_var->child(i));
112 if (cond->getCondition()->getParamName() != param_name.toStdString())
113 {
114 continue;
115 }
116
117 process_var->removeChildren(i, 1);
118 return;
119 }
120}
DataHolderLib::FemCondition * getCondition() const
Returns the FEM Condition associated with the item.
Definition CondItem.h:29
virtual int childCount() const
Definition TreeItem.cpp:54
TreeItem * child(int row) const
Definition TreeItem.cpp:41
bool removeChildren(int position, int count)
Definition TreeItem.cpp:113

References TreeItem::child(), TreeItem::childCount(), CondItem::getCondition(), DataHolderLib::FemCondition::getParamName(), and TreeItem::removeChildren().

◆ removeCondition [2/2]

void ProcessModel::removeCondition ( QString const & process_var,
QString const & param )
slot

Removes FEMConditions from the the model.

Definition at line 122 of file ProcessModel.cpp.

124{
125 beginResetModel();
126 ProcessVarItem* pv_item(getProcessVarItem(process_var));
127 if (pv_item == nullptr)
128 {
129 return;
130 }
131
132 removeCondition(pv_item, param);
133 _project.removeBoundaryCondition(process_var.toStdString(),
134 param.toStdString());
135 _project.removeSourceTerm(process_var.toStdString(), param.toStdString());
136 endResetModel();
137}
void removeCondition(QString const &process_var, QString const &param)
Removes FEMConditions from the the model.

References _project, getProcessVarItem(), and removeCondition().

Referenced by removeCondition(), and removeProcessVariable().

◆ removeProcessVariable

void ProcessModel::removeProcessVariable ( QString const & name)
slot

Removes a process variable incl all associated conditions from the model.

Definition at line 139 of file ProcessModel.cpp.

140{
141 beginResetModel();
142 ProcessVarItem* pv_item(getProcessVarItem(name));
143 if (pv_item == nullptr)
144 {
145 return;
146 }
147
148 int const n_conds = pv_item->childCount();
149 for (int i = n_conds - 1; i >= 0; --i)
150 {
151 removeCondition(pv_item,
152 static_cast<CondItem*>(pv_item->child(i))->getName());
153 }
154
155 _project.removePrimaryVariable(name.toStdString());
156 int const idx = pv_item->row();
157 _rootItem->removeChildren(idx, 1);
158 endResetModel();
159}

References _project, TreeModel::_rootItem, TreeItem::child(), TreeItem::childCount(), CondItem::getName(), getProcessVarItem(), removeCondition(), and TreeItem::row().

Referenced by clearModel().

◆ updateModel

void ProcessModel::updateModel ( )
slot

Updates the model based on the ProjectData-object.

Definition at line 171 of file ProcessModel.cpp.

172{
173 addBoundaryConditions(_project.getBoundaryConditions());
174 addSourceTerms(_project.getSourceTerms());
175}
void addBoundaryConditions(std::vector< std::unique_ptr< DataHolderLib::BoundaryCondition > > const &conditions)
Adds vector of Boundary Conditions to the model.
void addSourceTerms(std::vector< std::unique_ptr< DataHolderLib::SourceTerm > > const &conditions)
Adds vector of Source Terms to the model.

References _project, addBoundaryConditions(), and addSourceTerms().

Member Data Documentation

◆ _project

DataHolderLib::Project& ProcessModel::_project
private

Definition at line 79 of file ProcessModel.h.

Referenced by ProcessModel(), removeCondition(), removeProcessVariable(), and updateModel().


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