Loading tools/mesh_converter/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ ADD_EXECUTABLE( MeshConverter.cpp MeshParser.cpp parsers/DFISEParser.cpp parsers/SilvacoParser.cpp ${ALLPIX_SRC}/core/utils/log.cpp ${ALLPIX_SRC}/core/utils/text.cpp ${ALLPIX_SRC}/core/utils/unit.cpp Loading tools/mesh_converter/MeshParser.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ using namespace mesh_converter; std::shared_ptr<MeshParser> MeshParser::factory(const allpix::Configuration& config) { auto parser = config.get<std::string>("parser", "df-ise"); std::transform(parser.begin(), parser.end(), parser.begin(), ::tolower); LOG(DEBUG) << "Parser \"" << parser << "\""; if(parser == "df-ise" || parser == "dfise") { return std::make_shared<DFISEParser>(); } else if(parser == "silvaco") { return std::make_shared<SilvacoParser>(); } else { throw allpix::InvalidValueError(config, "parser", "Unknown parser type"); } Loading Loading @@ -63,7 +65,7 @@ MeshParser::getField(const std::string& file, const std::string& observable, con // Populate field map once: if(field_map_[file].empty()) { LOG(STATUS) << "Reading field from file \"" << file << "\""; field_map_[file] = read_fields(file); field_map_[file] = read_fields(file, observable); LOG(INFO) << "Field sizes for all regions and observables:"; for(auto& reg : field_map_[file]) { LOG(INFO) << " " << reg.first << ":"; Loading @@ -80,6 +82,7 @@ MeshParser::getField(const std::string& file, const std::string& observable, con for(const auto& region : regions) { if(field_map_[file].find(region) != field_map_[file].end() && field_map_[file][region].find(observable) != field_map_[file][region].end()) { LOG(DEBUG) << "Region \"" << region << "\""; field.insert( field.end(), field_map_[file][region][observable].begin(), field_map_[file][region][observable].end()); } else { Loading tools/mesh_converter/MeshParser.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -55,9 +55,10 @@ namespace mesh_converter { /** * @brief Method to read fields from the given file * @param file_name Canonical path pof the input file * @param observable Optionally the observable of interest, required by some parsers * @return Map with all fields for the different regions */ virtual FieldMap read_fields(const std::string& file_name) = 0; virtual FieldMap read_fields(const std::string& file_name, const std::string& observable = "") = 0; private: // Cache of parsed meshes for all regions Loading @@ -69,5 +70,6 @@ namespace mesh_converter { } // namespace mesh_converter #include "parsers/DFISEParser.hpp" #include "parsers/SilvacoParser.hpp" #endif // ALLPIX_MESHPARSER_H tools/mesh_converter/parsers/DFISEParser.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -378,7 +378,7 @@ MeshMap DFISEParser::read_meshes(const std::string& file_name) { return ret_map; } FieldMap DFISEParser::read_fields(const std::string& file_name) { FieldMap DFISEParser::read_fields(const std::string& file_name, const std::string&) { std::ifstream file(file_name); if(!file) { throw std::runtime_error("file cannot be accessed"); Loading tools/mesh_converter/parsers/DFISEParser.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ namespace mesh_converter { MeshMap read_meshes(const std::string& file_name) override; // Read the electric field FieldMap read_fields(const std::string& file_name) override; FieldMap read_fields(const std::string& file_name, const std::string& observable) override; }; } // namespace mesh_converter Loading Loading
tools/mesh_converter/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ ADD_EXECUTABLE( MeshConverter.cpp MeshParser.cpp parsers/DFISEParser.cpp parsers/SilvacoParser.cpp ${ALLPIX_SRC}/core/utils/log.cpp ${ALLPIX_SRC}/core/utils/text.cpp ${ALLPIX_SRC}/core/utils/unit.cpp Loading
tools/mesh_converter/MeshParser.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ using namespace mesh_converter; std::shared_ptr<MeshParser> MeshParser::factory(const allpix::Configuration& config) { auto parser = config.get<std::string>("parser", "df-ise"); std::transform(parser.begin(), parser.end(), parser.begin(), ::tolower); LOG(DEBUG) << "Parser \"" << parser << "\""; if(parser == "df-ise" || parser == "dfise") { return std::make_shared<DFISEParser>(); } else if(parser == "silvaco") { return std::make_shared<SilvacoParser>(); } else { throw allpix::InvalidValueError(config, "parser", "Unknown parser type"); } Loading Loading @@ -63,7 +65,7 @@ MeshParser::getField(const std::string& file, const std::string& observable, con // Populate field map once: if(field_map_[file].empty()) { LOG(STATUS) << "Reading field from file \"" << file << "\""; field_map_[file] = read_fields(file); field_map_[file] = read_fields(file, observable); LOG(INFO) << "Field sizes for all regions and observables:"; for(auto& reg : field_map_[file]) { LOG(INFO) << " " << reg.first << ":"; Loading @@ -80,6 +82,7 @@ MeshParser::getField(const std::string& file, const std::string& observable, con for(const auto& region : regions) { if(field_map_[file].find(region) != field_map_[file].end() && field_map_[file][region].find(observable) != field_map_[file][region].end()) { LOG(DEBUG) << "Region \"" << region << "\""; field.insert( field.end(), field_map_[file][region][observable].begin(), field_map_[file][region][observable].end()); } else { Loading
tools/mesh_converter/MeshParser.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -55,9 +55,10 @@ namespace mesh_converter { /** * @brief Method to read fields from the given file * @param file_name Canonical path pof the input file * @param observable Optionally the observable of interest, required by some parsers * @return Map with all fields for the different regions */ virtual FieldMap read_fields(const std::string& file_name) = 0; virtual FieldMap read_fields(const std::string& file_name, const std::string& observable = "") = 0; private: // Cache of parsed meshes for all regions Loading @@ -69,5 +70,6 @@ namespace mesh_converter { } // namespace mesh_converter #include "parsers/DFISEParser.hpp" #include "parsers/SilvacoParser.hpp" #endif // ALLPIX_MESHPARSER_H
tools/mesh_converter/parsers/DFISEParser.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -378,7 +378,7 @@ MeshMap DFISEParser::read_meshes(const std::string& file_name) { return ret_map; } FieldMap DFISEParser::read_fields(const std::string& file_name) { FieldMap DFISEParser::read_fields(const std::string& file_name, const std::string&) { std::ifstream file(file_name); if(!file) { throw std::runtime_error("file cannot be accessed"); Loading
tools/mesh_converter/parsers/DFISEParser.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ namespace mesh_converter { MeshMap read_meshes(const std::string& file_name) override; // Read the electric field FieldMap read_fields(const std::string& file_name) override; FieldMap read_fields(const std::string& file_name, const std::string& observable) override; }; } // namespace mesh_converter Loading