Commit 43e5350c authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

getNumberOfSubElements fix

CSVDBG first test. Now i can represent only simple wariables.
parent b323dbcf
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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();
    }
    }


+1 −0
Original line number Original line Diff line number Diff line
@@ -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 \
+3 −3
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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();

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
+15 −2
Original line number Original line Diff line number Diff line
@@ -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


@@ -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