Hi Mansour, Typically I use a script to extract all of the data and put in a vector, etc. Attached is an example in C++.
Through the GUI, you can use the command Export -> Post-processing - Gmsh POS [or] Post-processing - Generic TXT [or the other post processing formats] For this method, the output files will still have the element data, but only to tie the values to the right elements. [image: image.png] Sincerely, Max Orok On Sun, Sep 30, 2018 at 10:11 AM mansour alawi <mansour.al...@gmail.com> wrote: > Dear there, > > I have been using GMSH software for quite some time to analyse the outcome > of brain electric stimulation (TMS) generated by Simnibs software. However, > recently I'm facing difficulties in extracting the electric field data, in > other words, I wish to have the results into numbers instead of the colour > bar as shown in the attachment. > > I have tried the export functions. However, the data I get wasn't labelled > to differentiate the brain structure from the electric field data. > > I would like to seek your help in this regard, what function I can use to > have the electric field data and brain structure data separated and in a > numerical form not colour bar form. > > -- > > *Best regards * > *Mansour Ayman Alawi * > > _______________________________________________ > gmsh mailing list > gmsh@onelab.info > http://onelab.info/mailman/listinfo/gmsh > -- Max Orok Contractor www.mevex.com
#include "gmsh.h" #include <iostream> #include <sstream> // WARNING: this script only works for extracting scalar data, // however, it could be modified for higher orders // function to extract scalar data from the result vector inline std::vector<double> unformat_data(std::vector<std::vector<double>> data) { std::vector<double> unformatted; for (auto dataIt = data.cbegin(); dataIt != data.cend(); ++dataIt){ unformatted.emplace_back((*dataIt)[0]); } return unformatted; } int main(void) { gmsh::initialize(); // open results mesh file puts("opening file..."); gmsh::open("results.msh"); // get the numbers of all of the views std::vector<int> viewTags; gmsh::view::getTags(viewTags); // gmsh data format variables std::string dataLabel; std::vector<std::string> allLabels; std::vector<int> eltNumbers; int numComponents; double viewTime; std::vector<std::vector<double>> data; std::vector<std::vector<double>> viewData; puts("extracting data"); // loop over views and extract element data // assume that view tags are 0-N for (auto view : viewTags){ printf("reading view %d\n", view); gmsh::view::getModelData(view, 0, dataLabel, eltNumbers, data, viewTime, numComponents); // get the view name in a slightly convoluted way std::stringstream viewOpt; viewOpt << "View[" << view << "].Name"; std::string viewName; gmsh::option::getString(viewOpt.str(), viewName); allLabels.emplace_back(viewName); // save the (scalar) data we care about viewData.emplace_back(unformat_data(data)); } // print the first few data for each view for (auto i = 0; i < allLabels.size(); ++i) { printf("%s\n", allLabels[i].c_str()); for (auto j = 0; j < 10 && j < viewData[i].size(); ++j) { printf("%f\n", viewData[i][j]); } } gmsh::finalize(); }
_______________________________________________ gmsh mailing list gmsh@onelab.info http://onelab.info/mailman/listinfo/gmsh