Microflow 3D  v1.0
MF::GB::BoundaryFromThread Class Reference

Adds boundary nodes from thread_params.cfg file to VDBGrid. More...

#include <BoundaryFromThread.h>

Public Member Functions

 BoundaryFromThread ()=default
 
 ~BoundaryFromThread ()=default
 

Static Public Member Functions

static void VDBBoundaryAdd (const openvdb::Int64Grid::Ptr &VDBGrid, const std::shared_ptr< MF::Database::ConfigData > &ConfigData_Ptr)
 

Detailed Description

Adds boundary nodes from thread_params.cfg file to VDBGrid.

Reads point data from the .csv file and sets nodeID (nodeType + MFThread number) in VDBGrid.

Definition at line 28 of file BoundaryFromThread.h.

Constructor & Destructor Documentation

◆ BoundaryFromThread()

MF::GB::BoundaryFromThread::BoundaryFromThread ( )
default

◆ ~BoundaryFromThread()

MF::GB::BoundaryFromThread::~BoundaryFromThread ( )
default

Member Function Documentation

◆ VDBBoundaryAdd()

void MF::GB::BoundaryFromThread::VDBBoundaryAdd ( const openvdb::Int64Grid::Ptr &  VDBGrid,
const std::shared_ptr< MF::Database::ConfigData > &  ConfigData_Ptr 
)
static

Definition at line 13 of file BoundaryFromThread.cpp.

References MF::RW::CSVReader::DataReadFromCSVFile(), MF::GB::NodeID::Node, MF::GB::NodeID::node_id, and MF::GB::NodeID::NodeID.

Referenced by MF::GB::GeometryBuildFromSTL::BoundaryAddFromThreadFile().

13  {
14  MF::GB::NodeID nodeTMP, PresentNodeID;
15  nodeTMP.node_id.NodeID = {0};
16  for (unsigned int iter = 0; iter < ConfigData_Ptr->getThreadsNumber(); iter++) {
17  if (ConfigData_Ptr->getThreadStringParam(iter, "GridType") == "VDB") {
18  if (ConfigData_Ptr->getThreadParamLength(iter, "NodeFilePath") > 0) {
19  if (ConfigData_Ptr->getThreadIntParam(iter, "NodeTypeID") >= 20) { //process only threads with definition of boundary nodes
20  auto nodeID = (int16_t) ConfigData_Ptr->getThreadIntParam(iter, "NodeTypeID");
21  std::string FilePath =
22  ConfigData_Ptr->CaseFolder + ConfigData_Ptr->getProgramStringParam("GeometryFolder") +
23  ConfigData_Ptr->getThreadStringParam(iter, "NodeFilePath");
24  auto data_Ptr = std::make_unique<std::vector<double>>();
25  std::vector<std::string> VariableNameList{
26  ConfigData_Ptr->getThreadStringVectorParam(0, iter, "NodeCoordinateFileColumnNames"),
27  ConfigData_Ptr->getThreadStringVectorParam(1, iter, "NodeCoordinateFileColumnNames"),
28  ConfigData_Ptr->getThreadStringVectorParam(2, iter, "NodeCoordinateFileColumnNames")};
29  MF::RW::CSVReader::DataReadFromCSVFile(FilePath, VariableNameList, data_Ptr.get());
30  auto accessor = VDBGrid->getAccessor();
31  openvdb::Coord xyz;
32  int32_t &i = xyz[0], &j = xyz[1], &h = xyz[2];
33 
34  for (auto it = data_Ptr->begin(); it < data_Ptr->end(); it += 3) {
35  i = int32_t(*it);
36  j = int32_t(*(it + 1));
37  h = int32_t(*(it + 2));
38  PresentNodeID.node_id.NodeID = accessor.getValue(xyz);
39  if (PresentNodeID.node_id.Node.nodeType == 3) { // only changes node type for boundary nodes
40  nodeTMP.node_id.Node.nodeType = nodeID;
41  nodeTMP.node_id.Node.uidThreadNr = (uint16_t) iter + 1; // uidThreadNr added from the thread_params.cfg starts from 1 because automatically created threads have uidThreadNr = 0;
42  accessor.setValue(xyz, nodeTMP.node_id.NodeID);
43  }
44  }
45  data_Ptr.reset();
46  }
47  }
48  }
49  }
50 }
struct MF::GB::NodeID::@0::@1 Node
A class that allows to determine the proper NodeID from combined nodeType, uidThreadNr, ThreadCount, ComponentNr and PhaseNr.
Definition: NodeID.h:18
static void DataReadFromCSVFile(const std::string &DataFilePath, const std::vector< std::string > &VariableNameList, std::vector< double > *pDataArray)
Reads data from text file.
Definition: CSVReader.cpp:13
uint64_t NodeID
Definition: NodeID.h:29
union MF::GB::NodeID::@0 node_id

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