Of course I forgot to attach the file ...
sorry !
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ofstream fileb("fileb.msh",std::ios::out | std::ios::binary);
char MeshFormat[13] = "$MeshFormat";
fileb.write(MeshFormat, 13);
double version = 2.;
int type = 1;
int size = sizeof(double);
fileb.write((char *) &version, sizeof(double));
fileb.write((char *) &type, sizeof(int));
fileb.write((char *) &size, sizeof(int));
int one = 1;
fileb.write((char *) &one, sizeof(int));
char EndMeshFormat[16] = "$EndMeshFormat";
fileb.write(EndMeshFormat, 16);
char Nodes[8] = "$Nodes";
fileb.write(Nodes, 8);
int number_of_nodes = 8;
std::vector<double> nodes(8*3);
nodes[ 0] = 0.; nodes[ 1] = 0.; nodes[ 2] = 0.;
nodes[ 3] = 1.; nodes[ 4] = 0.; nodes[ 5] = 0.;
nodes[ 6] = 0.; nodes[ 7] = 1.; nodes[ 8] = 0.;
nodes[ 9] = 1.; nodes[10] = 1.; nodes[11] = 0.;
nodes[12] = 0.; nodes[13] = 0.; nodes[14] = 1.;
nodes[15] = 1.; nodes[16] = 0.; nodes[17] = 1.;
nodes[18] = 1.; nodes[19] = 1.; nodes[20] = 1.;
nodes[21] = 0.; nodes[22] = 1.; nodes[23] = 1.;
fileb.write((char *) &number_of_nodes, sizeof(int));
for (int inode=0; inode<8; inode++)
{
int ind = 3*inode;
int iinode = inode + 1;
double xyz[3];
xyz[0] = nodes[ind]; xyz[1] = nodes[ind+1]; xyz[2] = nodes[ind+2];
fileb.write((char *) &iinode, sizeof(int));
fileb.write((char *) xyz, 3* sizeof(double));
}
char EndNodes[11] = "$EndNodes";
fileb.write(EndNodes,11);
char Elements[11] = "$Elements";
fileb.write(Elements, 11);
int number_of_elements = 1;
int iel = 1;
int iel_type = 5;
int number_of_elements_of_this_type =1;
int nb_tags = 3;
std::vector<int> tags(3,1); tags[2] = 0;
std::vector<int> con(8);
for (int i=0; i<8; i++) con[i] = i+1;
con[2] = 4; con[3] = 3;
fileb.write((char *) &number_of_elements, sizeof(int));
// element-header-binary
fileb.write((char *) &iel_type, sizeof(int));
fileb.write((char *) &number_of_elements_of_this_type, sizeof(int));
fileb.write((char *) &nb_tags, sizeof(int));
// elements-binary
fileb.write((char *) &iel, sizeof(int));
for (int i=0; i<nb_tags; i++) fileb.write((char *) &tags[i], sizeof(int));
for (int i=0; i<8; i++) fileb.write((char *) &con[i], sizeof(int));
char EndElements[14] = "$EndElements";
fileb.write(EndElements, 14);
fileb.close();
}
_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh