class frontiere {
public:
float *xy; // cordinates (for point i, x in 2*i , y in 2*i+1)
int *ng; // boundary number for each point
int nbp; // number of boundary points
long *s; // edges (edge i: beginning in 2*i, end in 2*i +1)
long nbs; // number of edges
long nbsd; // number of each connected component
long *sd; // an edge for each connected component
float *hh; // weight of points (to insert inner points)
frontiere() {nbp = nbs = nbsd = 0; sd = new long[50];}
int ajoute_point(float x, float y, int ng);
void ajoute_segment(int n1, int n2);
void save(const char* filename) const; //OP 97
};
void frontiere::save(const char * filename) const
{ int i;
ofstream file(filename);
assert(!file.fail());
file << "MeshVersion 0 \r Dimension 2 \r MaximalAngleOfCorner 360"<< endl;
file<<endl;
file << "Vertices " << nbp << endl;
for(i = 0; i< nbp; i++)
file << xy[2*i] <<'\t'<< xy[2*i+1] <<'\t'<< ng[i] << endl;
file<<endl;
file << "Edges " << nbs << endl;
for(i = 0; i< nbs; i++)
file << s[2*i]+1 <<'\t'<< s[2*i+1]+1 <<'\t'<< ng[i] << endl;
file<<endl;
file << "SubDomain " << nbsd << endl;
for(i = 0; i<nbsd ; i++)
file << "2\t" << sd[2*i]+1 << "\t1\t"<< i+1 << endl;
file<<endl;
file << "Corners " << nbp << endl;
for(i = 0; i< nbp; i++)
file << i+1 << endl;
file<<endl;
file << "End" << endl;
file.close();
}