Loading Unstructured_mesh/UnstructuredMesh/MeshElements/MeshElement.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -120,7 +120,7 @@ public: template<typename IndexType> template<typename IndexType> class SubelementContainer<IndexType, 0> : public std::vector<Subelement<IndexType>> { class SubelementContainer<IndexType, 0> : public std::vector<Subelement<IndexType>> { public: public: IndexType getNumberOfSubelements() { IndexType getNumberOfSubElements() { return this->size(); return this->size(); } } Loading Unstructured_mesh/Unstructured_mesh.pro +1 −0 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ SOURCES += \ HEADERS += \ HEADERS += \ ../Macros/MacroForEach.h \ ../Macros/MacroForEach.h \ ../debug/CSVLogger.h \ ../debug/ConsoleLogger.h \ ../debug/ConsoleLogger.h \ ../debug/Debug.h \ ../debug/Debug.h \ ../debug/HTMLLogger.h \ ../debug/HTMLLogger.h \ Loading Unstructured_mesh/main.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -894,12 +894,12 @@ void testFPMARW(){ void testFPMA_poly(){ void testFPMA_poly(){ UnstructuredMesh<3, size_t, double, 12> mesh; UnstructuredMesh<3, size_t, double, 0> mesh; FPMAMeshReader<3> reader; FPMAMeshReader<3> reader; ifstream file("Spark_mesh.fpma"); ifstream file("Spark_mesh.fpma"); reader.loadFromStream(file, mesh); reader.loadFromStream(file, mesh); DBGVAR(mesh.getCells().size(), mesh.getVertices().size()); CSVDBGVAR(mesh.getCells().size(), mesh.getVertices().size()); mesh.initializeCenters(); mesh.initializeCenters(); VTKMeshWriter<3, size_t, double> writer; VTKMeshWriter<3, size_t, double> writer; Loading Loading @@ -931,7 +931,7 @@ int main() //testMesh2DLoadAndWrite(); //testMesh2DLoadAndWrite(); //testMesh3D(); //testMesh3D(); //test3DMeshDeformedPrisms(); //test3DMeshDeformedPrisms(); testMeshRefine(); //testMeshRefine(); //testMeshDataContainer(); //testMeshDataContainer(); //UnstructuredMesh<5, size_t, double, 6,5,4> m; //UnstructuredMesh<5, size_t, double, 6,5,4> m; //m.ComputeElementMeasures(); //m.ComputeElementMeasures(); Loading debug/CSVLogger.h 0 → 100644 +149 −0 Original line number Original line Diff line number Diff line #ifndef CSVLOGGER_H #define CSVLOGGER_H #include <string> #include <fstream> #include "VariableExport.h" /** * @brief The HtmlLogger class * has opened file to write log * if it opens existing file overwrites it. * in destructor it closes the file. */ class CSVLogger { std::string logFileName = ""; std::ofstream* logFile; int groupIndex = 0; void writeHeadder() { (*logFile) << "Group Index;Line;File;Expression;Value\n"; } public: CSVLogger(){logFile = nullptr;} /** * @brief HtmlLogger * opens specified file for writing * @param fileName * */ CSVLogger(const char* fileName) :CSVLogger(){ logFileName = fileName; } ~CSVLogger(){ destroy(); } /** * @brief Create * opens specified file and writes headder and script in html * @param fileName */ void create(const char* fileName){ if (logFile){ logFile->close(); delete logFile; } logFile = new std::ofstream(fileName); writeHeadder(); } void destroy(){ if(logFile){ logFile->close(); delete logFile; } } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(VAR_NAME name, VAR value, REST ... rest){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << name << ", " << value; logFile->flush(); writeVar(rest...); } template<typename VAR_NAME, typename VAR> void writeVar(VAR_NAME name, VAR value){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << name << ", " << value; logFile->flush(); } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(int line, std::string& cppFile, VAR_NAME name, VAR value, REST ... rest){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";"; VariableExport::_writeWar(*logFile,value); (*logFile) << "\n"; writeVar(line, cppFile, rest...); } template<typename VAR_NAME, typename VAR> void writeVar(int line, std::string& cppFile, VAR_NAME name, VAR value){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";"; VariableExport::_writeWar(*logFile,value); (*logFile) << "\n"; groupIndex++; } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value, REST ... rest){ std::string file; int i = 0; while(cppFile[i] != '\0'){ if (cppFile[i] == '\\'){ file += "\\\\"; } else { file += cppFile[i]; } i++; } writeVar(line, file, name, value, rest...); } template<typename VAR_NAME, typename VAR> void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value){ std::string file; int i = 0; while(cppFile[i] != '\0'){ if (cppFile[i] == '\\'){ file += "\\\\"; } else { file += cppFile[i]; } i++; } writeVar(line, file, name, value); } }; #endif // CSVLOGGER_H debug/Debug.h +15 −2 Original line number Original line Diff line number Diff line Loading @@ -9,14 +9,22 @@ #include "../Macros/MacroForEach.h" #include "../Macros/MacroForEach.h" #include <iostream> #include <iostream> #include "HTMLLogger.h" #include "HTMLLogger.h" #include "CSVLogger.h" #include "ConsoleLogger.h" #include "ConsoleLogger.h" #include <stdexcept> #include <stdexcept> /* /* ** Macros intended for sending ** Macros intended for sending ** messages during program run ** messages during program run */ */ namespace dbg { struct DBGStatics { static HtmlLogger HDBGLog; static CSVLogger CSVDBGLog; }; extern HtmlLogger HDBGLog; HtmlLogger DBGStatics::HDBGLog("DBG.html"); CSVLogger DBGStatics::CSVDBGLog("DBG.csv"); } #define STRVAR(var) #var, var #define STRVAR(var) #var, var Loading Loading @@ -66,9 +74,14 @@ DBG("something went wrong in try block: " << e.what()); \ abort();} abort();} // Macros using html debug output // Macros using html debug output #define HTMLDBGVAR(...) HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define HTMLDBGVAR(...) dbg::DBGStatics::HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define HTMLDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) #define HTMLDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) // Macros using csv debug output #define CSVDBGVAR(...) dbg::DBGStatics::CSVDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define CSVDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) #define DBGCHECK DBG("check") #define DBGCHECK DBG("check") #else #else Loading Loading
Unstructured_mesh/UnstructuredMesh/MeshElements/MeshElement.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -120,7 +120,7 @@ public: template<typename IndexType> template<typename IndexType> class SubelementContainer<IndexType, 0> : public std::vector<Subelement<IndexType>> { class SubelementContainer<IndexType, 0> : public std::vector<Subelement<IndexType>> { public: public: IndexType getNumberOfSubelements() { IndexType getNumberOfSubElements() { return this->size(); return this->size(); } } Loading
Unstructured_mesh/Unstructured_mesh.pro +1 −0 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ SOURCES += \ HEADERS += \ HEADERS += \ ../Macros/MacroForEach.h \ ../Macros/MacroForEach.h \ ../debug/CSVLogger.h \ ../debug/ConsoleLogger.h \ ../debug/ConsoleLogger.h \ ../debug/Debug.h \ ../debug/Debug.h \ ../debug/HTMLLogger.h \ ../debug/HTMLLogger.h \ Loading
Unstructured_mesh/main.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -894,12 +894,12 @@ void testFPMARW(){ void testFPMA_poly(){ void testFPMA_poly(){ UnstructuredMesh<3, size_t, double, 12> mesh; UnstructuredMesh<3, size_t, double, 0> mesh; FPMAMeshReader<3> reader; FPMAMeshReader<3> reader; ifstream file("Spark_mesh.fpma"); ifstream file("Spark_mesh.fpma"); reader.loadFromStream(file, mesh); reader.loadFromStream(file, mesh); DBGVAR(mesh.getCells().size(), mesh.getVertices().size()); CSVDBGVAR(mesh.getCells().size(), mesh.getVertices().size()); mesh.initializeCenters(); mesh.initializeCenters(); VTKMeshWriter<3, size_t, double> writer; VTKMeshWriter<3, size_t, double> writer; Loading Loading @@ -931,7 +931,7 @@ int main() //testMesh2DLoadAndWrite(); //testMesh2DLoadAndWrite(); //testMesh3D(); //testMesh3D(); //test3DMeshDeformedPrisms(); //test3DMeshDeformedPrisms(); testMeshRefine(); //testMeshRefine(); //testMeshDataContainer(); //testMeshDataContainer(); //UnstructuredMesh<5, size_t, double, 6,5,4> m; //UnstructuredMesh<5, size_t, double, 6,5,4> m; //m.ComputeElementMeasures(); //m.ComputeElementMeasures(); Loading
debug/CSVLogger.h 0 → 100644 +149 −0 Original line number Original line Diff line number Diff line #ifndef CSVLOGGER_H #define CSVLOGGER_H #include <string> #include <fstream> #include "VariableExport.h" /** * @brief The HtmlLogger class * has opened file to write log * if it opens existing file overwrites it. * in destructor it closes the file. */ class CSVLogger { std::string logFileName = ""; std::ofstream* logFile; int groupIndex = 0; void writeHeadder() { (*logFile) << "Group Index;Line;File;Expression;Value\n"; } public: CSVLogger(){logFile = nullptr;} /** * @brief HtmlLogger * opens specified file for writing * @param fileName * */ CSVLogger(const char* fileName) :CSVLogger(){ logFileName = fileName; } ~CSVLogger(){ destroy(); } /** * @brief Create * opens specified file and writes headder and script in html * @param fileName */ void create(const char* fileName){ if (logFile){ logFile->close(); delete logFile; } logFile = new std::ofstream(fileName); writeHeadder(); } void destroy(){ if(logFile){ logFile->close(); delete logFile; } } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(VAR_NAME name, VAR value, REST ... rest){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << name << ", " << value; logFile->flush(); writeVar(rest...); } template<typename VAR_NAME, typename VAR> void writeVar(VAR_NAME name, VAR value){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << name << ", " << value; logFile->flush(); } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(int line, std::string& cppFile, VAR_NAME name, VAR value, REST ... rest){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";"; VariableExport::_writeWar(*logFile,value); (*logFile) << "\n"; writeVar(line, cppFile, rest...); } template<typename VAR_NAME, typename VAR> void writeVar(int line, std::string& cppFile, VAR_NAME name, VAR value){ // create file if not logFile is nullptr if (!logFile) create(logFileName.c_str()); (*logFile) << groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";"; VariableExport::_writeWar(*logFile,value); (*logFile) << "\n"; groupIndex++; } template<typename VAR_NAME, typename VAR, typename ... REST> void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value, REST ... rest){ std::string file; int i = 0; while(cppFile[i] != '\0'){ if (cppFile[i] == '\\'){ file += "\\\\"; } else { file += cppFile[i]; } i++; } writeVar(line, file, name, value, rest...); } template<typename VAR_NAME, typename VAR> void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value){ std::string file; int i = 0; while(cppFile[i] != '\0'){ if (cppFile[i] == '\\'){ file += "\\\\"; } else { file += cppFile[i]; } i++; } writeVar(line, file, name, value); } }; #endif // CSVLOGGER_H
debug/Debug.h +15 −2 Original line number Original line Diff line number Diff line Loading @@ -9,14 +9,22 @@ #include "../Macros/MacroForEach.h" #include "../Macros/MacroForEach.h" #include <iostream> #include <iostream> #include "HTMLLogger.h" #include "HTMLLogger.h" #include "CSVLogger.h" #include "ConsoleLogger.h" #include "ConsoleLogger.h" #include <stdexcept> #include <stdexcept> /* /* ** Macros intended for sending ** Macros intended for sending ** messages during program run ** messages during program run */ */ namespace dbg { struct DBGStatics { static HtmlLogger HDBGLog; static CSVLogger CSVDBGLog; }; extern HtmlLogger HDBGLog; HtmlLogger DBGStatics::HDBGLog("DBG.html"); CSVLogger DBGStatics::CSVDBGLog("DBG.csv"); } #define STRVAR(var) #var, var #define STRVAR(var) #var, var Loading Loading @@ -66,9 +74,14 @@ DBG("something went wrong in try block: " << e.what()); \ abort();} abort();} // Macros using html debug output // Macros using html debug output #define HTMLDBGVAR(...) HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define HTMLDBGVAR(...) dbg::DBGStatics::HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define HTMLDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) #define HTMLDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) // Macros using csv debug output #define CSVDBGVAR(...) dbg::DBGStatics::CSVDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__)) #define CSVDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__) #define DBGCHECK DBG("check") #define DBGCHECK DBG("check") #else #else Loading