Path: blob/devel/ElmerGUI/netgen/libsrc/interface/writetecplot.cpp
3206 views
//1//2// TECPLOT file by Jawor Georgiew3//4#include <mystdlib.h>56#include <myadt.hpp>7#include <linalg.hpp>8#include <csg.hpp>9#include <meshing.hpp>10111213namespace netgen14{15#include "writeuser.hpp"1617void WriteTecPlotFormat (const Mesh & mesh,18const CSGeometry & geom,19const string & filename)20{21INDEX i;22int j, k, e, z;23Vec<3> n;2425INDEX np = mesh.GetNP();26INDEX ne = mesh.GetNE();27INDEX nse = mesh.GetNSE();2829ARRAY<int> sn(np);30ofstream outfile(filename.c_str());3132outfile << "TITLE=\" " << filename << "\"" << endl;3334// fill hashtable3536INDEX_3_HASHTABLE<int> face2volelement(ne);3738for (i = 1; i <= ne; i++)39{40const Element & el = mesh.VolumeElement(i);41INDEX_3 i3;42int l;43for (j = 1; j <= 4; j++) // loop over faces of tet44{45l = 0;46for (k = 1; k <= 4; k++)47if (k != j)48{49l++;50i3.I(l) = el.PNum(k);51}52i3.Sort();53face2volelement.Set (i3, i);54}55}565758for (j = 1; j <= geom.GetNSurf(); j++) /* Flaeche Nummer j */59{60for (i = 1; i <= np; i++)61sn.Elem(i) = 0;6263e = 0;6465for (i = 1; i <= nse; i++)66{67const Element2d & el = mesh.SurfaceElement(i);68if (j == mesh.GetFaceDescriptor (el.GetIndex ()).SurfNr())69{70for (k = 1; k <= 3; k++)71sn.Elem(el.PNum(k)) = 1;72e++; /* e= Anzahl der neuen Elemente */73}74}7576z = 0;77for (i = 1; i <= np; i++)78if (sn.Elem(i) == 1)79sn.Elem(i) = ++z;8081outfile << "ZONE T=\" Surface " << j << " \", N=" << z82<< ", E=" << e << ", ET=TRIANGLE, F=FEPOINT" << endl;8384for (i = 1; i <= np; i++)85if (sn.Elem(i) != 0)86{87n = geom.GetSurface(j) -> GetNormalVector ( mesh.Point(i) );8889outfile << mesh.Point(i)(0) << " " /* Knoten Koordinaten */90<< mesh.Point(i)(1) << " "91<< mesh.Point(i)(2) << " "92<< n(0) << " "93<< n(1) << " "94<< n(2) << " "95<< i << endl;96}979899for (i = 1; i <= nse; i++)100{101const Element2d & el = mesh.SurfaceElement(i);102if (j == mesh.GetFaceDescriptor(el.GetIndex ()).SurfNr())103/* FlaechenKnoten (3) */104outfile << sn.Get(el.PNum(1)) << " "105<< sn.Get(el.PNum(2)) << " "106<< sn.Get(el.PNum(3)) << endl;107108/// Hier soll noch die Ausgabe der Nummer des angrenzenden109/// Vol.elements erfolgen !110111for (k = 1; k <= nse; k++)112{113const Element2d & sel = mesh.SurfaceElement(k);114INDEX_3 i3;115for (j = 1; j <= 3; j++)116i3.I(j) = sel.PNum(j);117i3.Sort();118119//int elind = face2volelement.Get(i3);120}121}122}123}124125126}127128129