/*
* ReadGeomTurbo.cpp
*
* Created on: 2009-2-22
* Author: lioto
*/
#include "ReadGeomTurbo.h"
void ReadGeomTurbo::ReadData()
{
ifstream is(filename_.c_str());
string dataline,dataname;
/*读取头*/
getline(is,dataline); //1
if(dataline!="GEOMETRY TURBO VERSION 0.1")
{
cout<<"ERROR:GeomTurbo文件头错误"<<endl;
assert(false);
}
/*读取维度*/
getline(is,dataline); //2
istringstream stream_dim(dataline);
stream_dim>>dataname;
if(dataname=="dimension")
{
stream_dim>>dim_;
}
else
{
cout<<"ERROR:GeomTurbo维度定义错误"<<endl;
assert(false);
}
/*如果输入为3维,则读取是否为环形叶栅*/
if(dim_==3)
{
getline(is,dataline);
istringstream stream_annular(dataline);
stream_annular>>dataname;
string yesORno;
if(dataname=="annular")
{
stream_annular>>yesORno;
if(yesORno=="yes")
{
bool_annular_=true;
}
else if(yesORno=="no")
{
bool_annular_=false;
}
else
{
cout<<"对于三维情况,必须指定叶栅是直列叶栅还是环形叶栅"<<endl;
assert(false);
}
}
else
{
cout<<"对于三维情况,必须指定叶栅是直列叶栅还是环形叶栅"<<endl;
assert(false);
}
getline(is,dataline);
istringstream stream_multisec(dataline);
stream_multisec>>dataname;
if(dataname=="multisection")
{
stream_multisec>>yesORno;
if(yesORno=="yes")
{
bool_multisection_=true;
}
else if(yesORno=="no")
{
bool_multisection_=false;
}
else
{
cout<<"对于三维情况,必须指定是否生成多截面网格"<<endl;
}
}
else
{
cout<<"对于三维情况,必须指定是否生成多截面网格"<<endl;
}
}
else if(dim_==2)
{
bool_annular_=false;
bool_multisection_=false;
}
else
{
cout<<"ERROR: GeomTrubo file, dimension error, dim="<<dim_<<endl;
assert(false);
}
/*读取叶片数*/
getline(is,dataline); //3
istringstream stream_nb(dataline);
stream_nb>>dataname;
if(dataname=="number_of_blades")
{
stream_nb>>num_blades_;
}
else
{
cout<<"ERROR:GeomTurbo叶片数定义错误"<<endl;
assert(false);
}
/*3维则读取叶高值,2维则设置叶高为1.0*/
if(dim_==2)
{
blade_height_=1.;
}
else if(dim_==3)
{
getline(is,dataline); //3
istringstream stream_bh(dataline);
stream_bh>>dataname;
if(dataname=="blade_height")
{
stream_bh>>blade_height_;
}
else
{
cout<<"ERROR:GeomTurbo叶高值定义错误"<<endl;
assert(false);
}
}
/*读取中径*/
getline(is,dataline); //4
istringstream stream_md(dataline);
stream_md>>dataname;
if(dataname=="middle_diameter")
{
stream_md>>mid_diameter_;
}
else
{
cout<<"ERROR:GeomTurbo中径定义错误"<<endl;
}
/*读取坐标系定义*/
string dataname_co;
getline(is,dataline); //5
istringstream stream_co1(dataline);
stream_co1>>dataname;
if(dataname=="axis")
{
stream_co1>>dataname_co;
if(dataname_co=="X")
axis_dir_=0;
else if(dataname_co=="Y")
axis_dir_=1;
else if(dataname_co=="Z")
axis_dir_=2;
}
getline(is,dataline); //6
istringstream stream_co2(dataline);
stream_co2>>dataname;
if(dataname=="pitch")
{
stream_co2>>dataname_co;
if(dataname_co=="X")
pitch_dir_=0;
else if(dataname_co=="Y")
pitch_dir_=1;
else if(dataname_co=="Z")
pitch_dir_=2;
}
getline(is,dataline); //7
istringstream stream_co3(dataline);
stream_co3>>dataname;
if(dataname=="span")
{
stream_co3>>dataname_co;
if(dataname_co=="X")
span_dir_=0;
else if(dataname_co=="Y")
span_dir_=1;
else if(dataname_co=="Z")
span_dir_=2;
}
/*读取进出口延伸段长度或坐标*/
string rel_abs;
int axis_dir;
getline(is,dataline);
istringstream stream_dir(dataline);
stream_dir>>dataname_co>>rel_abs;
if(dataname_co=="X")
axis_dir=0;
else if(dataname_co=="Y")
axis_dir=1;
else if(dataname_co=="Z")
axis_dir=2;
if(axis_dir!=axis_dir_)
{
cout<<"ERROR:GeomTurbo文件坐标系、以及进出口延伸段坐标方向,定义错误"<<endl;
assert(false);
}
if(rel_abs=="relative")
{
rel_or_abs_=0;
getline(is,dataline);
istringstream stream_in(dataline);
stream_in>>len_rel_in_;
getline(is,dataline);
istringstream stream_out(dataline);
stream_out>>len_rel_out_;
}
else if(rel_abs=="absolute")
{
rel_or_abs_=1;
getline(is,dataline);
istringstream stream_in(dataline);
stream_in>>axis_abs_in_;
getline(is,dataline);
istringstream stream_out(dataline);
stream_out>>axis_abs_out_;
}
/*读取吸力面坐标*/
getline(is,dataline);
getline(is,dataline);
istringstream stream_suc_num(dataline);
stream_suc_num>>num_section_;
line_suc_.resize(num_section_);
for(int i=0;i<num_section_;++i)
{
getline(is,dataline);
getline(is,dataline);
getline(is,dataline);
istringstream stream_num_sec(dataline);
int num_sec;
stream_num_sec>>num_sec;
vector<Point> points(num_sec);
for(int j=0;j<num_sec;++j)
{
getline(is,dataline);
istringstream stream_points(dataline);
vector<double> xyz(3);
stream_points>>xyz[0]>>xyz[1]>>xyz[2];
//如果是环形叶栅,输入为Z-R-Th坐标系,则在Z-R-R*Th空间内作网格,最后输出时映射到X-Y-Z坐标系
if(bool_annular_)
{
points[j][axis_dir_]=xyz[axis_dir_];
points[j][span_dir_]=xyz[span_dir_];
points[j][pitch_dir_]=xyz[span_dir_]*xyz[pitch_dir_];
}
else
{
points[j][axis_dir_]=xyz[axis_dir_];
points[j][span_dir_]=xyz[span_dir_];
points[j][pitch_dir_]=xyz[pitch_dir_];
}
// stream_points>>points[j][0]>>points[j][1]>>points[j][2];
}
line_suc_[i](points);
}
/*读取压力面坐标*/
getline(is,dataline);
getline(is,dataline);
istringstream stream_pre_num(dataline);
int num_sec;
stream_pre_num>>num_sec;
if(num_sec!=num_section_)
{
cout<<"ERROR:GeomTurbo文件错误,suction、pressure截面数要相等"<<endl;
assert(false);
}
else
{
pitch_.resize(num_section_);
line_pre_.resize(num_section_);
}
for(int i=0;i<num_section_;++i)
{
getline(is,dataline);
getline(is,dataline);
getline(is,dataline);
istringstream stream_num_sec(dataline);
int num_sec;
stream_num_sec>>num_sec;
vector<Point> points(num_sec);
for(int j=0;j<num_sec;++j)
{
getline(is,dataline);
istringstream stream_points(dataline);
vector<double> xyz(3);
stream_points>>xyz[0]>>xyz[1]>>xyz[2];
//如果是环形叶栅,输入为Z-R-Th坐标系,则在Z-R-R*Th空间内作网格,最后输出时映射到X-Y-Z坐标系
if(bool_annular_)
{
points[j][axis_dir_]=xyz[axis_dir_];
points[j][span_dir_]=xyz[span_dir_];
points[j][pitch_dir_]=xyz[span_dir_]*xyz[pitch_dir_];
}
else
{
points[j][axis_dir_]=xyz[axis_dir_];
points[j][span_dir_]=xyz[span_dir_];
points[j][pitch_dir_]=xyz[pitch_dir_];
}
// stream_points>>points[j][0]>>points[j][1]>>points[j][2];
}
line_pre_[i](points);
}
getline(is,dataline);
istringstream stream_end(dataline);
stream_end>>dataname;
if(datan

Karman_M
- 粉丝: 933
最新资源
- 软件工程大作业:用python编写的“派豪室”-身边的二手房管家软件
- 工程项目管理流程最新修正样本.doc
- 证券系统网络的安全性.pdf
- 招商加盟企业如何做网络营销推广(20211116154710)------.pdf
- 国家网络技术水平考试.pptx
- 中国软件分会会长刘金华:2020游戏行业工作总结.docx
- 中国医疗行业PACS信息化市场调查报告.ppt
- 操作系统实训心得.doc
- 商务代表(软件)职务说明书.docx
- OVID立体解剖数据库.pptx
- 中国农产品网络零售交易数据分析.doc
- 最简单的网络销售方案.doc
- 网络拍卖分析论文.doc
- 中国最大的资料库彝人阿潇民乐专卖网络商店规划书.doc
- 中小学预防沉迷网络班会.ppt
- 计算机教师求职简历.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


