- s1 = (char*) malloc(sizeof(char)*100);
- s2 = (char*) malloc(sizeof(char)*100);
- s3 = (char*) malloc(sizeof(char)*100);
-
- found_block2411 = false;
- found_block2412 = false;
-
- do {
-
- while (i1==-1) {
- fscanf(myFileId,"%d\n",&blockId);
- switch (blockId) {
- case 2411 : {
- MESSAGE("BlockId "<<blockId);
- fscanf(myFileId,"%d",&node);
- //MESSAGE("Node "<<node);
- while (node!=-1) {
- fscanf(myFileId,"%d %d %d\n",&n1,&n2,&n3);
- fscanf(myFileId,"%s %s %s\n",s1,s2,s3);
- str1=string(s1);
- str2=string(s2);
- str3=string(s3);
- if (str1.find("D")!=string::npos) str1.replace(str1.find("D"),1,"E");
- if (str2.find("D")!=string::npos) str2.replace(str2.find("D"),1,"E");
- if (str3.find("D")!=string::npos) str3.replace(str3.find("D"),1,"E");
- ok = myMesh->AddNodeWithID(atof(str1.c_str()),atof(str2.c_str()),atof(str3.c_str()),node);
- fscanf(myFileId,"%d",&node);
- }
- i1=0;
- found_block2411 = true;
- break;
- }
- case 2412 : {
- MESSAGE("BlockId "<<blockId);
- fscanf(myFileId,"%d",&cell);
- //MESSAGE("Cell "<<cell);
- while (cell!=-1) {
- fscanf(myFileId,"%d %d %d %d %d\n",&n1,&n2,&n3,&n4,&n_nodes);
-
- if ((n1==71)||(n1==72)||(n1==74)||(n1==91)||(n1==92)) {//203
- if (n_nodes==3) {
- for (i=1;i<=n_nodes;i++)
- fscanf(myFileId,"%d",&nodes[i-1]);
- ok = myMesh->AddFaceWithID(nodes[0],nodes[1],nodes[2],cell);
- }
- else if (n_nodes==6) {//206
- for (i=1;i<=n_nodes;i++)
- fscanf(myFileId,"%d",&nodes[i-1]);
- ok = myMesh->AddFaceWithID(nodes[0],nodes[2],nodes[4],cell);
- }
- }
-
- else if ((n1==11)||(n1==21)||(n1==24)||(n1==25)) {//103
- fgets(s2,100,myFileId);
- if (n_nodes==3) {
- for (i=1;i<=n_nodes;i++)
- fscanf(myFileId,"%d",&nodes[i-1]);
- ok = myMesh->AddEdgeWithID(nodes[0],nodes[1],cell);
- //MESSAGE("in 103 "<<cell);
- }
- else if (n_nodes==2) {//102
- for (i=1;i<=n_nodes;i++)
- fscanf(myFileId,"%d",&nodes[i-1]);
- ok = myMesh->AddEdgeWithID(nodes[0],nodes[1],cell);
- //MESSAGE("in 102 "<<cell);
- }
- }
-
- fscanf(myFileId,"\n");
- fscanf(myFileId,"%d",&cell);
- }
-
- i1=0;
- found_block2412 = true;
- break;
- }
- case -1 : {
- break;
- }
- default:
- MESSAGE("BlockId "<<blockId);
- i1=0;
- break;
+ case 118: // Solid Quadratic Tetrahedron - TET10
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[4],
+ aRec.node_labels[2],
+
+ aRec.node_labels[9],
+
+ aRec.node_labels[5],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[6],
+ aRec.node_labels[8],
+ aRec.node_labels[7],
+ aLabel);
+ break;
+
+ case 112: // Solid Linear Prism - PRISM6
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[2],
+ aRec.node_labels[1],
+ aRec.node_labels[3],
+ aRec.node_labels[5],
+ aRec.node_labels[4],
+ aLabel);
+ break;
+
+ case 113: // Solid Quadratic Prism - PRISM15
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[4],
+ aRec.node_labels[2],
+
+ aRec.node_labels[9],
+ aRec.node_labels[13],
+ aRec.node_labels[11],
+
+ aRec.node_labels[5],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[14],
+ aRec.node_labels[12],
+ aRec.node_labels[10],
+
+ aRec.node_labels[6],
+ aRec.node_labels[8],
+ aRec.node_labels[7],
+ aLabel);
+ break;
+
+ case 115: // Solid Linear Brick - HEX8
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[3],
+ aRec.node_labels[2],
+ aRec.node_labels[1],
+ aRec.node_labels[4],
+ aRec.node_labels[7],
+ aRec.node_labels[6],
+ aRec.node_labels[5],
+ aLabel);
+ break;
+
+ case 116: // Solid Quadratic Brick - HEX20
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[6],
+ aRec.node_labels[4],
+ aRec.node_labels[2],
+
+ aRec.node_labels[12],
+ aRec.node_labels[18],
+ aRec.node_labels[16],
+ aRec.node_labels[14],
+
+ aRec.node_labels[7],
+ aRec.node_labels[5],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[19],
+ aRec.node_labels[17],
+ aRec.node_labels[15],
+ aRec.node_labels[13],
+
+ aRec.node_labels[8],
+ aRec.node_labels[11],
+ aRec.node_labels[10],
+ aRec.node_labels[9],
+ aLabel);
+ break;
+
+ case 114: // pyramid of 13 nodes (quadratic) - PIRA13
+ anElement = myMesh->AddVolumeWithID(aRec.node_labels[0],
+ aRec.node_labels[6],
+ aRec.node_labels[4],
+ aRec.node_labels[2],
+ aRec.node_labels[7],
+ aRec.node_labels[5],
+ aRec.node_labels[3],
+ aRec.node_labels[1],
+
+ aRec.node_labels[8],
+ aRec.node_labels[11],
+ aRec.node_labels[10],
+ aRec.node_labels[9],
+ aRec.node_labels[12],
+ aLabel);
+ break;
+
+ }
+ }
+ // if(!anElement)
+ // MESSAGE("DriverUNV_R_SMDS_Mesh::Perform - can not add element with ID = "<<aLabel<<" and type = "<<aRec.fe_descriptor_id);