Path: blob/devel/ElmerGUI/netgen/libsrc/interface/importsolution.cpp
3206 views
//1// Read solution file2//345#include <mystdlib.h>678#include <myadt.hpp>9#include <linalg.hpp>10#include <csg.hpp>11#include <meshing.hpp>1213#include "nginterface.h"1415namespace netgen16{17#include "writeuser.hpp"181920void ImportSolution (const char * filename)21{22ifstream inf (filename);23char buf[100], name[1000];24int i, size, comps, order;25bool iscomplex;26const char * type;27Flags flags;2829while (1)30{31buf[0] = 0;32inf >> buf;33if (strcmp (buf, "solution") == 0)34{35inf >> name;3637inf >> buf[0];38flags.DeleteFlags ();39while (buf[0] == '-')40{41inf >> buf[1];42inf.putback (buf[1]);43if (!isalpha (buf[1]))44{45break;46}47inf >> (buf+1);48flags.SetCommandLineFlag (buf);49buf[0] = 0;50inf >> buf[0];51}52inf.putback (buf[0]);5354(*testout) << "Flags: " << endl;55flags.PrintFlags (*testout);56(*testout) << "done" << endl;5758size = int(flags.GetNumFlag ("size", Ng_GetNP()));59comps = int(flags.GetNumFlag ("components", 1));60type = flags.GetStringFlag ("type", "nodal");61order = int(flags.GetNumFlag ("order", 1));62iscomplex = flags.GetDefineFlag ("complex");6364double * sol = new double[size*comps];6566(*testout) << "import solution " << name << " size = " << size << " comps = " << comps << " order = " << order << endl;6768for (i = 0; i < size*comps; i++)69{70inf >> sol[i];71// (*testout) << "sol: " << sol[i] << endl;72}7374Ng_SolutionData soldata;75Ng_InitSolutionData (&soldata);76soldata.name = name;77soldata.data = sol;78soldata.dist = comps;79soldata.components = comps;80soldata.order = order;81soldata.iscomplex = iscomplex;82soldata.soltype = NG_SOLUTION_NODAL;83soldata.draw_surface = 1;84soldata.draw_volume = 1;85if (strcmp (type, "element") == 0)86{87soldata.soltype = NG_SOLUTION_ELEMENT;88soldata.draw_surface = 0;89}90if (strcmp (type, "surfaceelement") == 0)91{92soldata.soltype = NG_SOLUTION_SURFACE_ELEMENT;93soldata.draw_volume = 0;94}95if (strcmp (type, "noncontinuous") == 0)96soldata.soltype = NG_SOLUTION_NONCONTINUOUS;97if (strcmp (type, "surfacenoncontinuous") == 0)98soldata.soltype = NG_SOLUTION_SURFACE_NONCONTINUOUS;99100Ng_SetSolutionData (&soldata);101}102else103{104// cout << "kw = (" << buf << ")" << endl;105(*testout) << "kw = (" << buf << ")" << endl;106break;107}108}109/*110struct Ng_SolutionData111{112char * name; // name of gridfunction113double * data; // solution values114int components; // used components in solution vector115int dist; // num of doubles per entry (alignment!)116Ng_SolutionType soltype; // type of solution function117};118119// initialize solution data with default arguments120void Ng_InitSolutionData (Ng_SolutionData * soldata);121// set solution data122void Ng_SetSolutionData (Ng_SolutionData * soldata);123*/124}125126127128}129130131