|
@@ -77,6 +77,160 @@ bool Mesh_Tecplot::Load_Tecp_Ascii(ifstream &infile)
|
|
|
cout<<"Source Tecplot File is not found!"<<endl;
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ string title;
|
|
|
+ int numOfPoint,numOfCell;
|
|
|
+ string celltype,datatype;
|
|
|
+ while (true) {
|
|
|
+ infile>>title;
|
|
|
+ if(title.find("\"")!=string::npos)break;
|
|
|
+ }
|
|
|
+ title = title.substr(title.find("\"")+1);
|
|
|
+ string str;
|
|
|
+ while (true) {
|
|
|
+ infile>>str;
|
|
|
+ title +=" ";
|
|
|
+ title +=str;
|
|
|
+ if(str.find("\"")!=string::npos)break;
|
|
|
+ }
|
|
|
+ title=title.substr(0,title.find_first_of("\""));
|
|
|
+ title_ = (char*)title.data();
|
|
|
+
|
|
|
+ string variables;
|
|
|
+ while(true){
|
|
|
+ infile>>variables;
|
|
|
+ if(variables.find("=")!=string::npos)break;
|
|
|
+ }
|
|
|
+ if((variables.find("="))!=(variables.size()-1)){
|
|
|
+ variables = variables.substr(variables.find("=")+1);
|
|
|
+ scalarName_.push_back(variables);
|
|
|
+ }
|
|
|
+ while (true) {
|
|
|
+ infile>>variables;
|
|
|
+ if(variables.find("zone")!=string::npos)break;
|
|
|
+ scalarName_.push_back(variables);
|
|
|
+ }
|
|
|
+ scalarNumber_ = scalarName_.size()+3;
|
|
|
+ //while(!infile.eof()){
|
|
|
+ //if(!infile.good())break;
|
|
|
+ infile>>variables;
|
|
|
+ if(variables.find("t=\"")!=string::npos){
|
|
|
+ string zoneName_temp;
|
|
|
+ if((variables.find("t=\""))!=(variables.size()-4)){
|
|
|
+ variables = variables.substr(variables.find("t=\"")+3);
|
|
|
+ zoneName_temp+=variables;
|
|
|
+ }
|
|
|
+ while(true){
|
|
|
+ infile>>variables;
|
|
|
+ zoneName_temp+=" ";
|
|
|
+ zoneName_temp+=variables;
|
|
|
+ if(variables.find("\"")!=string::npos)break;
|
|
|
+ }
|
|
|
+ zoneName_temp = zoneName_temp.substr(0,zoneName_temp.find_first_of("\""));
|
|
|
+ zoneName_.push_back(zoneName_temp);
|
|
|
+ zoneNumber_++;
|
|
|
+ while (true) {
|
|
|
+ infile>>variables;
|
|
|
+ if(variables=="solutiontime="){
|
|
|
+ infile>>variables;
|
|
|
+ variables = variables.substr(0,variables.find(","));
|
|
|
+ solutionTime_ = stod(variables);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(variables.find("strandid=")!=string::npos){
|
|
|
+ variables = variables.substr(9,variables.find_first_of(","));
|
|
|
+ //to do
|
|
|
+ }
|
|
|
+ if((variables.find("n=")!=string::npos)||(variables.find("i=")!=string::npos)){
|
|
|
+ variables = variables.substr(2,variables.find_first_of(","));
|
|
|
+ numOfPoint = stoi(variables);
|
|
|
+ }
|
|
|
+ if((variables.find("e=")!=string::npos)||(variables.find("j=")!=string::npos)){
|
|
|
+ variables = variables.substr(2,variables.find_first_of(","));
|
|
|
+ numOfCell = stoi(variables);
|
|
|
+ }
|
|
|
+ if(variables.find("f=")!=string::npos){
|
|
|
+ if(variables.find_first_of(",")==string::npos){
|
|
|
+ variables = variables.substr(2,variables.size()-1);
|
|
|
+ datatype = variables;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ variables = variables.substr(2,variables.find(",")-2);
|
|
|
+ datatype = variables;
|
|
|
+ }
|
|
|
+ if(variables.find("et=")!=string::npos){
|
|
|
+ variables = variables.substr(3,variables.size()-1);
|
|
|
+ celltype = variables;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(celltype.empty()){//如果没有指定et
|
|
|
+ celltype = "tetrahedron";
|
|
|
+ celltype_empty = true;//标志位 0-有指定拓扑结构 1-未指定拓扑结构
|
|
|
+ }
|
|
|
+ if(datatype == "feblock"){
|
|
|
+ vector<double*> temp_vec_data;
|
|
|
+ temp_vec_data.resize(scalarNumber_+3);
|
|
|
+ for(int i =0;i<scalarNumber_+3;i++){
|
|
|
+ double* temp_data = new double[numOfPoint];
|
|
|
+ for(int j=0;j<numOfPoint;j++){
|
|
|
+ infile>>temp_data[j];
|
|
|
+ }
|
|
|
+ temp_vec_data[i] = temp_data;
|
|
|
+ }
|
|
|
+ ScalarsData_.push_back(temp_vec_data);
|
|
|
+ }else if(datatype=="fepoint"){
|
|
|
+ vector<double*> temp_vec_data;
|
|
|
+ temp_vec_data.resize(scalarNumber_+3);
|
|
|
+ for(int i = 0;i<scalarNumber_+3;i++){
|
|
|
+ double* temp_data = new double[numOfPoint];
|
|
|
+ temp_vec_data[i] = temp_data;
|
|
|
+ }
|
|
|
+ for(int j =0;j<numOfPoint;j++){
|
|
|
+ for(int k=0;k<scalarNumber_+3;k++){
|
|
|
+ infile>>temp_vec_data[k][j];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ScalarsData_.push_back(temp_vec_data);
|
|
|
+ }
|
|
|
+ vector<vector<int>> cell_vec;
|
|
|
+ if(celltype == "tetrahedron"){//tetrahedron四节点四面体
|
|
|
+ cell_vec.resize(numOfCell);
|
|
|
+ for(int i=0;i<numOfCell;i++){
|
|
|
+ vector<int> cell_tmp;
|
|
|
+ cell_tmp.resize(4);
|
|
|
+ infile>>cell_tmp[0]>>cell_tmp[1]>>cell_tmp[2]>>cell_tmp[3];
|
|
|
+ cell_vec[i] = cell_tmp;
|
|
|
+ }
|
|
|
+ }else if(celltype == "triangle"){//triangle 三节点三角形
|
|
|
+ cell_vec.resize(numOfCell);
|
|
|
+ for(int i=0;i<numOfCell;i++){
|
|
|
+ vector<int> cell_tmp;
|
|
|
+ cell_tmp.resize(3);
|
|
|
+ infile>>cell_tmp[0]>>cell_tmp[1]>>cell_tmp[2];
|
|
|
+ cell_vec[i] = cell_tmp;
|
|
|
+ }
|
|
|
+ }else if(celltype == "quadrilateral"){//quadrilateral 四节点四边形单元
|
|
|
+ cell_vec.resize(numOfCell);
|
|
|
+ for(int i=0;i<numOfCell;i++){
|
|
|
+ vector<int> cell_tmp;
|
|
|
+ cell_tmp.resize(4);
|
|
|
+ infile>>cell_tmp[0]>>cell_tmp[1]>>cell_tmp[2]>>cell_tmp[3];
|
|
|
+ cell_vec[i] = cell_tmp;
|
|
|
+ }
|
|
|
+ }else if(celltype == "brick"){//brick八节点六面体
|
|
|
+ cell_vec.resize(numOfCell);
|
|
|
+ for(int i=0;i<numOfCell;i++){
|
|
|
+ vector<int> cell_tmp;
|
|
|
+ cell_tmp.resize(8);
|
|
|
+ infile>>cell_tmp[0]>>cell_tmp[1]>>cell_tmp[2]>>cell_tmp[3]>>cell_tmp[4]>>cell_tmp[5]>>cell_tmp[6]>>cell_tmp[7];
|
|
|
+ cell_vec[i] = cell_tmp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SaveData_Ascii(numOfPoint,numOfCell,celltype,cell_vec);
|
|
|
+ }
|
|
|
+ //}
|
|
|
+ /*
|
|
|
char str[1024];
|
|
|
infile.getline(str,1024);
|
|
|
string title = str;
|
|
@@ -93,8 +247,7 @@ bool Mesh_Tecplot::Load_Tecp_Ascii(ifstream &infile)
|
|
|
for(int i =3;i<var_l.size();i++){
|
|
|
scalarName_[i-3]=var_l[i].toStdString();
|
|
|
}
|
|
|
- //while(!infile.eof()){//循环读zone
|
|
|
- //while(true){
|
|
|
+ while(!infile.eof()&&infile.good()){//循环读zone
|
|
|
int numOfPoint,numOfCell;
|
|
|
string datatype,celltype;
|
|
|
celltype.clear();
|
|
@@ -134,8 +287,8 @@ bool Mesh_Tecplot::Load_Tecp_Ascii(ifstream &infile)
|
|
|
celltype = "tetrahedron";
|
|
|
celltype_empty = true;//标志位 0-有指定拓扑结构 1-未指定拓扑结构
|
|
|
}
|
|
|
- zoneNumber_++;
|
|
|
-
|
|
|
+ zoneNumber_++;*/
|
|
|
+ /*
|
|
|
|
|
|
if(datatype == "feblock"){
|
|
|
vector<double*> temp_vec_data;
|
|
@@ -196,9 +349,8 @@ bool Mesh_Tecplot::Load_Tecp_Ascii(ifstream &infile)
|
|
|
cell_vec[i] = cell_tmp;
|
|
|
}
|
|
|
}
|
|
|
- SaveData_Ascii(numOfPoint,numOfCell,celltype,cell_vec);
|
|
|
- //if(infile.eof())break;
|
|
|
- //}
|
|
|
+ SaveData_Ascii(numOfPoint,numOfCell,celltype,cell_vec);*/
|
|
|
+
|
|
|
infile.close();
|
|
|
return true;
|
|
|
}
|