Path: blob/devel/ElmerGUI/netgen/libsrc/interface/writefeap.cpp
3206 views
//1// Write FEAP file2// FEAP by Bob Taylor, Berkely3//4// contact Peter Wriggers or Albrecht Rieger, Hannover5// [email protected]6//78#include <mystdlib.h>910#include <myadt.hpp>11#include <linalg.hpp>12#include <csg.hpp>13#include <meshing.hpp>1415namespace netgen16{1718#include "writeuser.hpp"192021void WriteFEAPFormat (const Mesh & mesh,22const string & filename)2324{25// Feap format by A. Rieger26// [email protected]2728int inverttets = mparam.inverttets;29//int invertsurf = mparam.inverttrigs;3031int i, j;3233double scale = 1; // globflags.GetNumFlag ("scale", 1);3435ofstream outfile(filename.c_str());3637outfile << "feap" << "\n";38outfile << mesh.GetNP();39outfile << ",";40outfile << mesh.GetNE();41outfile << ",";42outfile << "1,3,3,4" << "\n" << "\n";43outfile << "!numnp,numel,nummat,ndm,ndf,nen";44outfile << "\n";4546outfile << "\n" << "\n";47outfile << "!node,, X Y Z" << "\n";48outfile << "COOR" << "\n";49outfile.precision(4);50outfile.setf (ios::fixed, ios::floatfield);51outfile.setf (ios::showpoint);5253for (i = 1; i <= mesh.GetNP(); i++)54{55outfile.width(5);56outfile << i;57outfile << ",,";58outfile.width(10);59outfile << mesh.Point(i)(0)/scale << " ";60outfile.width(10);61outfile << mesh.Point(i)(1)/scale << " ";62outfile.width(10);63outfile << mesh.Point(i)(2)/scale << "\n";64}6566outfile << "\n" << "\n";67outfile << "!elm,,mat, n1 n2 n3 n4" << "\n";68outfile << "ELEM" << "\n";6970for (i = 1; i <= mesh.GetNE(); i++)71{72Element el = mesh.VolumeElement(i);73if (inverttets)74el.Invert();757677outfile.width(5);78outfile << i;79outfile << ",,";80outfile << el.GetIndex();81outfile << ",";828384for (j = 1; j <= el.NP(); j++)85{86outfile.width(8);87outfile << el.PNum(j);88}89outfile << "\n";90}9192outfile << "\n" << "\n";939495/*9697//outfile << "SLOA" << "\n";98//outfile << "2,3,3" << "\n";99//outfile << GetNSE() << "\n";100outfile << "selm" << "\n" << GetNSE() << "\n";101for (i = 1; i <= GetNSE(); i++)102{103if (SurfaceElement(i).GetIndex())104{105outfile.width(8);106outfile << facedecoding.Get(SurfaceElement(i).GetIndex ()).surfnr;107//outfile.width(8);108//outfile << facedecoding.Get(SurfaceElement(i).GetIndex ()).domin;109//outfile.width(8);110//outfile << facedecoding.Get(SurfaceElement(i).GetIndex ()).domout;111}112else113outfile << " 0 0 0";114115116Element2d sel = SurfaceElement(i);117if (invertsurf)118sel.Invert();119//outfile.width(8);120//outfile << sel.GetNP();121//if (facedecoding.Get(SurfaceElement(i).GetIndex ()).surfnr == 4)122//{123for (j = 1; j <= sel.GetNP(); j++)124{125outfile.width(8);126outfile << sel.PNum(j);127}128//outfile.width(8);129//outfile << "0.0";130//outfile.width(8);131//outfile << "0.0";132//outfile.width(8);133//outfile << "1.0" << "\n";134//}135outfile << "\n";136//outfile << endl;137}138*/139140141142// BEGIN CONTACT OUTPUT143/*144int masterindex, slaveindex;145cout << "Master Surface index = ";146cin >> masterindex;147cout << "Slave Surface index = ";148cin >> slaveindex;149150151// CONTACT SURFACE 1152outfile << "\n";153outfile << "\n";154outfile << "surface,1" << "\n";;155outfile.width(6);156outfile << "tria" << "\n";;157outfile.width(13);158outfile << "facet" << "\n";;159zz = 0;160for (i = 1; i <= mesh.GetNSE(); i++)161{162Element2d sel = mesh.SurfaceElement(i);163if (invertsurf)164sel.Invert();165if (mesh.GetFaceDescriptor(sel.GetIndex ()).BCProperty() == masterindex)166{167zz++;168outfile.width(14);169outfile << zz;170outfile << ",,";171for (j = 1; j <= sel.GetNP(); j++)172{173outfile << sel.PNum(j);174outfile << ",";175}176outfile << "\n";177}178}179180181// CONTACT SURFACE 2182outfile << "\n";183outfile << "\n";184outfile << "surface,2" << "\n";;185outfile.width(6);186outfile << "tria" << "\n";;187outfile.width(13);188outfile << "facet" << "\n";;189zz = 0;190for (i = 1; i <= mesh.GetNSE(); i++)191{192193Element2d sel = mesh.SurfaceElement(i);194if (invertsurf)195sel.Invert();196if (mesh.GetFaceDescriptor(sel.GetIndex ()).BCProperty() == slaveindex)197{198zz++;199outfile.width(14);200outfile << zz;201outfile << ",,";202for (j = 1; j <= sel.GetNP(); j++)203{204outfile << sel.PNum(j);205outfile << ",";206}207outfile << "\n";208}209}210211outfile << "\n";212outfile << "\n";213*/214215// END CONTACT OUTPUT216217cout << "done" << endl;218}219}220221222