Skip to content
Snippets Groups Projects
Commit 77e6ceeb authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Added output for BC descriptors

parent 78709f74
No related branches found
No related tags found
No related merge requests found
......@@ -216,7 +216,7 @@ int main(int argc, char *argv[])
// test case boundary condition description
std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX", "YMIN", "YMAX"};
std::vector<std::shared_ptr<BoundaryConditionDescriptor>> bc_descriptor_list;
for (auto sym_boundary_name : sym_boundary_name_list){
for (const auto& sym_boundary_name : sym_boundary_name_list){
std::shared_ptr<BoundaryDescriptor> boudary_descriptor
= std::shared_ptr<BoundaryDescriptor>(new NamedBoundaryDescriptor(sym_boundary_name));
SymmetryBoundaryConditionDescriptor* sym_bc_descriptor
......@@ -239,7 +239,20 @@ int main(int argc, char *argv[])
std::vector<BoundaryConditionHandler> bc_list;
{
for (const auto& bc_descriptor : bc_descriptor_list) {
switch (bc_descriptor->type()) {
case BoundaryConditionDescriptor::Type::symmetry: {
const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor
= dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(*bc_descriptor);
std::cout << sym_bc_descriptor << '\n';
break;
}
default: {
std::cerr << "Unknown BCDescription\n";
std::exit(1);
}
}
}
for (size_t i_ref_face_list=0; i_ref_face_list<mesh.connectivity().numberOfRefFaceList();
++i_ref_face_list) {
const RefFaceList& ref_face_list = mesh.connectivity().refFaceList(i_ref_face_list);
......
......@@ -13,6 +13,16 @@ class BoundaryDescriptor
numbered
};
protected:
virtual std::ostream& _write(std::ostream& os) const = 0;
public:
friend std::ostream& operator<<(std::ostream& os,
const BoundaryDescriptor& bd)
{
return bd._write(os);
}
virtual Type type() const = 0;
BoundaryDescriptor(const BoundaryDescriptor&) = default;
BoundaryDescriptor() = default;
......@@ -25,8 +35,14 @@ class NamedBoundaryDescriptor
private:
std::string m_name;
std::ostream& _write(std::ostream& os) const final
{
os << '"' << m_name << '"';
return os;
}
public:
Type type() const
Type type() const final
{
return Type::named;
}
......@@ -43,14 +59,27 @@ class NamedBoundaryDescriptor
class NumberedBoundaryDescriptor
: public BoundaryDescriptor
{
private:
int m_number;
std::ostream& _write(std::ostream& os) const final
{
os << '"' << m_number << '"';
return os;
}
public:
Type type() const
Type type() const final
{
return Type::numbered;
}
NumberedBoundaryDescriptor(const NumberedBoundaryDescriptor&) = default;
NumberedBoundaryDescriptor() = default;
NumberedBoundaryDescriptor(const int& number)
: m_number(number)
{
;
}
virtual ~NumberedBoundaryDescriptor() = default;
};
......@@ -62,9 +91,17 @@ class BoundaryConditionDescriptor
{
symmetry
};
private:
protected:
std::shared_ptr<BoundaryDescriptor> m_boundary_descriptor;
virtual std::ostream& _write(std::ostream& os) const = 0;
public:
friend std::ostream& operator<<(std::ostream& os, const BoundaryConditionDescriptor& bcd)
{
return bcd._write(os);
}
virtual Type type() const = 0;
const BoundaryDescriptor& boundaryDescriptor() const
......@@ -85,8 +122,14 @@ class BoundaryConditionDescriptor
class SymmetryBoundaryConditionDescriptor
: public BoundaryConditionDescriptor
{
private:
std::ostream& _write(std::ostream& os) const final
{
os << "symmetry(" << *m_boundary_descriptor << ")";
return os;
}
public:
Type type() const
Type type() const final
{
return Type::symmetry;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment