// read_ucd.h for users (#define MAIN) and read_ucd.cc #include using namespace std; #ifndef READ_UCD_H_ #define READ_UCD_H_ #ifndef MAIN #define GLOBAL extern #else /* in main() */ #define GLOBAL #endif GLOBAL int n_vertices; // number of nodes GLOBAL int n_cells; // number of cells GLOBAL int n_ndata; // length of node data, zero if none GLOBAL int n_cdata; // length of cell data, zero if none GLOBAL int n_mdata; // number of model data, zero if none class xyz { public: double x, y, z; xyz() {x=0.0; y=0.0; z=0.0;} xyz(double ax, double ay, double az) {x=ax; y=ay; z=az;} }; typedef vector vert; // no zero, in order, dense GLOBAL vert vertices; class celldata { public: int matl; int cell_type; // pt=1(1) line=2(2) tri=3(3) quad=4(4) // tet=5(4) pyr=6(5) prism=7(6) hex=8(8) int nodes[8]; celldata() {matl=0; cell_type=0; nodes[0]=0; nodes[1]=0; nodes[2]=0; nodes[3]=0; nodes[4]=0; nodes[5]=0; nodes[6]=0; nodes[7]=0;} }; typedef vector cell; // starts at zero, no order GLOBAL cell cells; class ndata // n_ndata: maximum of 8 data values, all will be double { public: double val[8]; ndata() {val[0]=0.0; val[1]=0.0; val[2]=0.0; val[3]=0.0; val[4]=0.0; val[5]=0.0; val[6]=0.0; val[7]=0.0;} }; typedef vector ndatat; // in vertex order, 1 is first subscript GLOBAL ndatat node_data; GLOBAL int nodecomp; GLOBAL string nodes1, nodes2, nodes3; // val component names GLOBAL int noden1, noden2, noden3; // val component lengths, sum is n_ndata class cdata // n_cdata: maximum of 8 data values, all will be double { public: double val[8]; cdata() {val[0]=0.0; val[1]=0.0; val[2]=0.0; val[3]=0.0; val[4]=0.0; val[5]=0.0; val[6]=0.0; val[7]=0.0;} }; typedef vector cdatat; // in cell order, 1 is first subscript GLOBAL cdatat cell_data; GLOBAL int cellcomp; GLOBAL string cells1, cells2, cells3; // val component names GLOBAL int celln1, celln2, celln3; // val component lengths, sum is n_ndata class mdata // n_mdata: maximum of 8 data values, all will be double { public: double val[8]; mdata() {val[0]=0.0; val[1]=0.0; val[2]=0.0; val[3]=0.0; val[4]=0.0; val[5]=0.0; val[6]=0.0; val[7]=0.0;} }; typedef vector mdatat; // 1 is first subscript, in order, dense GLOBAL mdatat model_data; GLOBAL int modelcomp; GLOBAL string models1, models2, models3; // val component names GLOBAL int modeln1, modeln2, modeln3; // val component lengths, sum is n_mdata // type nodes static string cell_type_name[9] = {"none ", // 0 0 "pt ", // 1 1 point "line ", // 2 2 line "tri ", // 3 3 triangle "quad ", // 4 4 quadralateral "tet ", // 5 4 tetrahedron 3 tri faces "pyr ", // 6 4 pyramid quad face 0123 // 3 tri faces "prism", // 7 6 tri 0,1,2 tri 3,4,5 // 3 quads 0134 0235 1245 "hex "}; // 8 8 hexahedron 6 quad faces static int cell_nodes[9] = {0, 1, 2, 3, 4, 4, 5, 6, 8}; void read_ucd (std::istream &in); #endif /* READ_UCD_H_ */