涡格法代码及解释培训讲学

合集下载

涡格法代码及解释

涡格法代码及解释

#include "iostream.h"#include "stdio.h"#include "math.h"#define PI 3.1415926class AIRFOIL //用来存放翼型的信息{public:double L,Bg,S;double Xo,Xc;double Y,Cy;AIRFOIL(){Y=0.0f,S=0.0f,L=0.0f,Bg=0.0f,Xo=0.0f,Xc=0.0f;}};class GIRD //网格信息{public:double x1,z1,x2,z2;//左右自由涡的坐标double x3,z3,x4,z4;//3/4弦线处的坐标double x,z;//控制点的坐标,3/4弦线中点GIRD(){x1=0.0f,x2=0.0f,z1=0.0f,z2=0.0f,x3=0.0f,x4=0.0f,z3=0.0f,z4=0.0f,x=0.0f,z=0.0f;}};double vec(double x,double z,double x1,double z1,double x2,double z2 ){double a,b,c,d,e;a=1/((x2-x)*(z1-z)-(x1-x)*(z2-z));b=((x2-x1)*(x1-x)+(z2-z1)*(z1-z))/sqrt(pow((x1-x),2)+pow((z1-z),2));c=((x2-x1)*(x2-x)+(z2-z1)*(z2-z))/sqrt(pow((x2-x),2)+pow((z2-z),2));d=(1-(x1-x)/sqrt(pow((x1-x),2)+pow((z1-z),2)))/(z1-z);e=(1-(x2-x)/sqrt(pow((x2-x),2)+pow((z2-z),2)))/(z2-z);return (a*(b-c)+d-e)/4/PI;}void Gaussseidel(int n,double *M,double **a,double *x,double *b)//高斯--塞得尔迭带法{int t=0,i,j;//迭代次数while(t<20)//次数限制,精度要求,此处可修改,是迭带开关{for(i=0;i<n;i++){M[i] = 0;for(j=0;j<n;j++){if(i!=j){M[i]+=a[i][j]*x[j];}}x[i] = (b[i] - M[i])/a[i][i]; //迭代}cout<<++t;for(i=0;i<n;i++){if(i%5==0){cout<<endl;}cout<<" "<<x[i];}cout<<endl;}}void main(){AIRFOIL airfoil;int Ng,Nq,i,j,k,l,m,n,x,y;double Y=0.0,M,a,ep=1e-10,p=1.22505,Cy=0.0; //p为海平面空气密度cout<<"这是一个用涡格法计算机翼升力的程序!"<<endl;cout<<"请输入翼型个参数:展长L, 根弦Bg,前缘后掠角Xo,后缘后掠角Xc"<<endl;while(1){cin>>airfoil.L>>airfoil.Bg>>airfoil.Xo>>airfoil.Xc;if(airfoil.Bg-airfoil.L*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))/2>0){cout<<airfoil.L<<" "<<airfoil.Bg<<" "<<airfoil.Xo<<""<<airfoil.Xc<<" "<<endl;break;}else{cout<<"翼型的稍弦为0!请重新输入翼型数据"<<endl;}}cout<<"请输入来流马赫数和攻角"<<endl;cin>>M>>a;a=a*PI/180;cout<<M<<'\t'<<a<<endl;cout<<"请输入根弦上的节点数,前缘上的节点数:"<<endl;cin>>Ng>>Nq;cout<<Ng<<" "<<Nq<<" "<<endl;Nq--;Ng--;//变成分多少块double *baseq=new double[Nq+1];double *baseB=new double[Nq+1];double *result=new double[2*Nq*Ng];double *b=new double[2*Nq*Ng];double *M1=new double[2*Nq*Ng];GIRD **girdleft,**girdright;//左半边机翼,右半边机翼girdleft=new GIRD*[Ng];for(i=0;i<Ng;i++){girdleft[i]=new GIRD[Nq];}girdright=new GIRD*[Ng];for(i=0;i<Ng;i++){girdright[i]=new GIRD[Nq];}double width=airfoil.L/Nq/2;//展长每个分块的长度//前缘节点的x坐标cout<<"前缘节点处的x坐标"<<endl;for(i=0;i<Nq+1;i++){baseq[i]=0+i*width*tan(airfoil.Xo*PI/180);cout<<baseq[i]<<" "<<endl;}//每一条平行于根弦的弦的长度cout<<"每一条平行于根弦的弦的长度"<<endl;for(i=0;i<Nq+1;i++){baseB[i]=airfoil.Bg-i*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))*width;cout<<baseB[i]<<" "<<endl;}for(i=0;i<Ng;i++){for(j=0;j<Nq;j++){girdleft[i][j].x1=baseq[j]+baseB[j]/4/Ng+i*baseB[j]/Ng;girdright[i][j].x1=girdleft[i][j].x1;girdleft[i][j].x3=girdleft[i][j].x1+baseB[j]/2/Ng;girdright[i][j].x3=girdleft[i][j].x3;girdleft[i][j].z1=0+j*width;girdright[i][j].z1=-1*girdleft[i][j].z1;girdleft[i][j].z3=girdleft[i][j].z1;girdright[i][j].z3=-1*girdleft[i][j].z3;girdleft[i][j].z2=girdleft[i][j].z1+width;girdright[i][j].z2=-1*girdleft[i][j].z2;girdleft[i][j].z4=girdleft[i][j].z2;girdright[i][j].z4=-1*girdleft[i][j].z4;girdleft[i][j].x2=baseq[j+1]+baseB[j+1]/4/Ng+i*baseB[j+1]/Ng;girdright[i][j].x2=girdleft[i][j].x2;girdleft[i][j].x4=girdleft[i][j].x2+baseB[j+1]/2/Ng;girdright[i][j].x4=girdleft[i][j].x4;girdleft[i][j].x=(girdleft[i][j].x3+girdleft[i][j].x4)/2;girdright[i][j].x=girdleft[i][j].x;girdleft[i][j].z=(girdleft[i][j].z3+girdleft[i][j].z4)/2;girdright[i][j].z=-1*girdleft[i][j].z;cout<<"************************left**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdleft[i][j].x1<<","<<girdleft[i][j].z1<<")"<<"";//将坐标打出cout<<"(x2,z2):"<<"("<<girdleft[i][j].x2<<","<<girdleft[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdleft[i][j].x3<<","<<girdleft[i][j].z3<<")"<<"";cout<<"(x4,z4):"<<"("<<girdleft[i][j].x4<<","<<girdleft[i][j].z4<<")"<<"";cout<<"(x,z):"<<"("<<girdleft[i][j].x<<","<<girdleft[i][j].z<<")"<<endl;cout<<"************************right**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdright[i][j].x1<<","<<girdright[i][j].z1<<")"<<"";//将坐标打出cout<<"(x2,z2):"<<"("<<girdright[i][j].x2<<","<<girdright[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdright[i][j].x3<<","<<girdright[i][j].z3<<")"<<"";cout<<"(x4,z4):"<<"("<<girdright[i][j].x4<<","<<girdright[i][j].z4<<")"<<"";cout<<"(x,z):"<<"("<<girdright[i][j].x<<","<<girdright[i][j].z<<")"<<endl;}}//存储系数矩阵double **array;array=new double*[2*Ng*Nq];for(i=0;i<2*Ng*Nq;i++){array[i]=new double[2*Ng*Nq];}for(i=0;i<Nq*Ng;i++){k=i%Nq;l=i/Nq;for(j=0;j<Nq*Ng;j++){m=j%Nq;n=j/Nq;x=2*i;y=2*j;array[x][y]=vec(girdleft[l][k].x,girdleft[l][k].z,girdleft[n][m].x1,girdleft[n ][m].z1,girdleft[n][m].x2,girdleft[n][m].z2);array[x][y+1]=vec(girdleft[l][k].x,girdleft[l][k].z,girdright[n][m].x1,girdrig ht[n][m].z1,girdright[n][m].x2,girdright[n][m].z2);array[x+1][y]=vec(girdright[l][k].x,girdright[l][k].z,girdleft[n][m].x1,girdle ft[n][m].z1,girdleft[n][m].x2,girdleft[n][m].z2);array[x+1][y+1]=vec(girdright[l][k].x,girdright[l][k].z,girdright[n][m].x1,gir dright[n][m].z1,girdright[n][m].x2,girdright[n][m].z2);}}cout<<"****************方程组系数矩阵***************"<<endl;for(i=0;i<2*Ng*Nq;i++){for(j=0;j<2*Ng*Nq;j++){cout<<array[i][j]<<" ";}cout<<endl;}cout<<"***************线性方程组的右端项*************"<<endl;for(i=0;i<2*Ng*Nq;i++){b[i]=-1*340*M*a;cout<<b[i]<<endl;}cout<<"***************Gauss-seidel法解线性方程组迭代20步的结果(每个涡格的环量)*************"<<endl;for(i=0;i<2*Ng*Nq;i++){result[i]=0.0;}Gaussseidel(2*Nq*Ng,M1,array,result,b);for(i=0;i<Ng*Nq;i++)airfoil.Y=airfoil.Y+2*p*M*340*width*result[2*i];airfoil.S=(baseB[0]+baseB[Nq])*airfoil.L/2;airfoil.Cy=2*airfoil.Y/p/pow(M*340,2)/airfoil.S;cout<<"Y="<<airfoil.Y<<'\t'<<"Cy="<<airfoil.Cy<<endl;}为了验证代码的正确性,此处的算例采用的是《空气动力学》一书中关于涡格法的一道算例,书中给出了算例的过程和解。

《艾默生涡街流量计FF用户培训》课件讲义

《艾默生涡街流量计FF用户培训》课件讲义
1 Set Filter Adjust Density
1 Increase Filtering 2 Increase Sensitivity 3 Exit
1 Increase Range 2 Decr. No Flow Noise 3 Exit
1 Flow 2 Sig/Tr: 3 Low Flow Cutoff 4 Lowpass Filter 5 Trigger Level
220 Hz
URV 40 Hz 400 Hz 300 Hz 3300 Hz
流量计系数
K系数和雷诺数之间的关系
线性 操作 范围 雷诺数
K-系数
涡街限制
Overview
雷诺数 无单位 表示流体特性 对于15mm-100mm口径, 至少要10000; 150mm-200mm口径,至少要 20000
1 Flow 2 % of Range 3 Output Current 4 Total
1 Flow Rate 2 LFC 3 Sig/Tr 4 Auto Adjust Filter
1 Flow 2 Sig/Tr: 3 Low Flow Cutoff 4 Lowpass Filter 5 Trigger Level
1 Tag 2 Service Type 3 PV Unit 4 RANGE VALUES 5 Process Temp. 6 Mating Pipe ID 7 Damping
1 Characterize Meter
2 PV Units
3 Configure Output
5 REVIEW
4 Signal Processing 5 Device Information
HART Communicator

大涡模拟概述ppt课件

大涡模拟概述ppt课件

称为里昂纳特(Leonard)应力,它由可解尺度间的相互作用产生
称为交叉应力,它是可解尺度脉动和不可解尺度脉动动量交换对亚 网格应力的贡献; 称为亚网格雷诺应力,它是不可解尺度脉动的脉动动量交换对亚网格 应力的贡献。
1717
四、亚网格模型
亚网格尺度模型
亚 网
格 T的求解
尺 度 模 型
常系数Smagorinsky模型 TCs2(SijSij)1/2
FG滤波 ( k )亚网 格应力
经过G-滤波后的
F-滤波()亚网格应力
启发: Germano 提供了亚网格模型的一个约束条件,可用来改进模 型
ij f(u,,C) 模型系数,动态可 调,需要计算
Tij f(uˆ,k,C)
ij Cd2S(u)2Sij(u)
T ij ij f( u ˆ,k ,C ) f( u , ,C )^ u ˆ iu ˆj u i^ u j
过滤尺度
99
三、过滤函数
过滤是一种数学运算,在物理空间中,过滤过程可 以通过积分过程来实现。
物理空间中用以分离可解尺度和不可解尺度湍流的尺 度称为过滤尺度,用∆表示。
i i i '
被过滤器平均化的小尺度变量 ——不可解尺度变量
过滤 前瞬 时变
过滤后的变量——可解尺度变 量,其湍流尺度大于∆
注意:这里的 不是时间上 的平均,而是在空间域上的
仅C是未知数,可解
6个方程1个未知数,通常采用最小二乘

2525
四、亚网格模型——动态模型
动态涡粘模型
涡粘系数C动态可调
ij Cd2S(u)Sij(u)
F-level 通过两次滤波,确定该系数
Tij Cd(k)2S(uˆ)Sij(uˆ)

航空气象学基础知识培训

航空气象学基础知识培训

航空气象报文
机场天气报告
BECMG:气象要素以规则或不规则的速度,达到或超过特定值的预期变化
FM0930
3000m
渐变
2000m
0900Z
0930Z
1000Z
1030Z
1100Z
TL0930 均省略
3000m渐变2000m
0900Z
0930Z
1000Z
3000m
渐变
1030Z
1100Z
2000m
1、A02:有降水分辨器的自动观测站 (A01:没有降水分辨器的自动观测站)
2、SFC VIS 4:地面能见度4英里
(TWR VIS 1/2:塔台能见度0.5英里)
3、RAE36PLB36:中雨在国际时0036分结束并于国际时0036开始下冰粒
4、SLP852:海平面气压985.2百帕
5、P0002:每小时降水量为0.02英寸(如果是6开头代表3小时或6小时降水量)
例3:METAR UHWW (俄罗斯) lO0400Z 33007MPS290V010 9999 FEW033 BKN20022/08 QlOO8 NOSIG RMKQFE755/1007 75CLRD80= 例3中“75CLRD80” 意义为:25R跑道的污染物已经被清除,刹车摩擦系数为 0.80。
航空气象基础知识
总签派室气象项目室 谢磊
主要内容
航空气象报文理解 航空气象图片识别 影响飞行的危险天气
航空气象报文理解
气象报文是签派员评估天气是否影响放行的基本渠道,不仅要会识别,更 要理解背后的含义。。。
航空气象报文
工作中常见的
航空气象报文
都有哪
些???
机场天气报告

涡格法代码及解释解析

涡格法代码及解释解析

#include "iostream.h"#include "stdio.h"#include "math.h"#define PI 3.1415926class AIRFOIL //用来存放翼型的信息{public:double L,Bg,S;double Xo,Xc;double Y,Cy;AIRFOIL(){Y=0.0f,S=0.0f,L=0.0f,Bg=0.0f,Xo=0.0f,Xc=0.0f;}};class GIRD //网格信息{public:double x1,z1,x2,z2;//左右自由涡的坐标double x3,z3,x4,z4;//3/4弦线处的坐标double x,z;//控制点的坐标,3/4弦线中点GIRD(){x1=0.0f,x2=0.0f,z1=0.0f,z2=0.0f,x3=0.0f,x4=0.0f,z3=0.0f,z4=0.0f,x=0.0f,z=0.0f;} };double vec(double x,double z,double x1,double z1,double x2,double z2 ){double a,b,c,d,e;a=1/((x2-x)*(z1-z)-(x1-x)*(z2-z));b=((x2-x1)*(x1-x)+(z2-z1)*(z1-z))/sqrt(pow((x1-x),2)+pow((z1-z),2));c=((x2-x1)*(x2-x)+(z2-z1)*(z2-z))/sqrt(pow((x2-x),2)+pow((z2-z),2));d=(1-(x1-x)/sqrt(pow((x1-x),2)+pow((z1-z),2)))/(z1-z);e=(1-(x2-x)/sqrt(pow((x2-x),2)+pow((z2-z),2)))/(z2-z);return (a*(b-c)+d-e)/4/PI;}void Gaussseidel(int n,double *M,double **a,double *x,double *b)//高斯--塞得尔迭带法{int t=0,i,j;//迭代次数while(t<20)//次数限制,精度要求,此处可修改,是迭带开关{for(i=0;i<n;i++){M[i] = 0;for(j=0;j<n;j++){if(i!=j){M[i]+=a[i][j]*x[j];}}x[i] = (b[i] - M[i])/a[i][i]; //迭代}cout<<++t;for(i=0;i<n;i++){if(i%5==0){cout<<endl;}cout<<" "<<x[i];}cout<<endl;}}void main(){AIRFOIL airfoil;int Ng,Nq,i,j,k,l,m,n,x,y;double Y=0.0,M,a,ep=1e-10,p=1.22505,Cy=0.0; //p为海平面空气密度cout<<"这是一个用涡格法计算机翼升力的程序!"<<endl;cout<<"请输入翼型个参数:展长L, 根弦Bg,前缘后掠角Xo,后缘后掠角Xc"<<endl;while(1){cin>>airfoil.L>>airfoil.Bg>>airfoil.Xo>>airfoil.Xc;if(airfoil.Bg-airfoil.L*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))/2>0){cout<<airfoil.L<<" "<<airfoil.Bg<<" "<<airfoil.Xo<<" "<<airfoil.Xc<<""<<endl;break;}else{cout<<"翼型的稍弦为0!请重新输入翼型数据"<<endl;}}cout<<"请输入来流马赫数和攻角"<<endl;cin>>M>>a;a=a*PI/180;cout<<M<<'\t'<<a<<endl;cout<<"请输入根弦上的节点数,前缘上的节点数:"<<endl;cin>>Ng>>Nq;cout<<Ng<<" "<<Nq<<" "<<endl;Nq--;Ng--;//变成分多少块double *baseq=new double[Nq+1];double *baseB=new double[Nq+1];double *result=new double[2*Nq*Ng];double *b=new double[2*Nq*Ng];double *M1=new double[2*Nq*Ng];GIRD **girdleft,**girdright;//左半边机翼,右半边机翼girdleft=new GIRD*[Ng];for(i=0;i<Ng;i++){girdleft[i]=new GIRD[Nq];}girdright=new GIRD*[Ng];for(i=0;i<Ng;i++){girdright[i]=new GIRD[Nq];}double width=airfoil.L/Nq/2;//展长每个分块的长度//前缘节点的x坐标cout<<"前缘节点处的x坐标"<<endl;for(i=0;i<Nq+1;i++){baseq[i]=0+i*width*tan(airfoil.Xo*PI/180);cout<<baseq[i]<<" "<<endl;}//每一条平行于根弦的弦的长度cout<<"每一条平行于根弦的弦的长度"<<endl;for(i=0;i<Nq+1;i++){baseB[i]=airfoil.Bg-i*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))*width;cout<<baseB[i]<<" "<<endl;}for(i=0;i<Ng;i++){for(j=0;j<Nq;j++){girdleft[i][j].x1=baseq[j]+baseB[j]/4/Ng+i*baseB[j]/Ng;girdright[i][j].x1=girdleft[i][j].x1;girdleft[i][j].x3=girdleft[i][j].x1+baseB[j]/2/Ng;girdright[i][j].x3=girdleft[i][j].x3;girdleft[i][j].z1=0+j*width;girdright[i][j].z1=-1*girdleft[i][j].z1;girdleft[i][j].z3=girdleft[i][j].z1;girdright[i][j].z3=-1*girdleft[i][j].z3;girdleft[i][j].z2=girdleft[i][j].z1+width;girdright[i][j].z2=-1*girdleft[i][j].z2;girdleft[i][j].z4=girdleft[i][j].z2;girdright[i][j].z4=-1*girdleft[i][j].z4;girdleft[i][j].x2=baseq[j+1]+baseB[j+1]/4/Ng+i*baseB[j+1]/Ng;girdright[i][j].x2=girdleft[i][j].x2;girdleft[i][j].x4=girdleft[i][j].x2+baseB[j+1]/2/Ng;girdright[i][j].x4=girdleft[i][j].x4;girdleft[i][j].x=(girdleft[i][j].x3+girdleft[i][j].x4)/2;girdright[i][j].x=girdleft[i][j].x;girdleft[i][j].z=(girdleft[i][j].z3+girdleft[i][j].z4)/2;girdright[i][j].z=-1*girdleft[i][j].z;cout<<"************************left**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdleft[i][j].x1<<","<<girdleft[i][j].z1<<")"<<" ";//将坐标打出cout<<"(x2,z2):"<<"("<<girdleft[i][j].x2<<","<<girdleft[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdleft[i][j].x3<<","<<girdleft[i][j].z3<<")"<<" ";cout<<"(x4,z4):"<<"("<<girdleft[i][j].x4<<","<<girdleft[i][j].z4<<")"<<" ";cout<<"(x,z):"<<"("<<girdleft[i][j].x<<","<<girdleft[i][j].z<<")"<<endl;cout<<"************************right**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdright[i][j].x1<<","<<girdright[i][j].z1<<")"<<" ";//将坐标打出cout<<"(x2,z2):"<<"("<<girdright[i][j].x2<<","<<girdright[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdright[i][j].x3<<","<<girdright[i][j].z3<<")"<<" ";cout<<"(x4,z4):"<<"("<<girdright[i][j].x4<<","<<girdright[i][j].z4<<")"<<" ";cout<<"(x,z):"<<"("<<girdright[i][j].x<<","<<girdright[i][j].z<<")"<<endl;}}//存储系数矩阵double **array;array=new double*[2*Ng*Nq];for(i=0;i<2*Ng*Nq;i++){array[i]=new double[2*Ng*Nq];}for(i=0;i<Nq*Ng;i++)k=i%Nq;l=i/Nq;for(j=0;j<Nq*Ng;j++){m=j%Nq;n=j/Nq;x=2*i;y=2*j;array[x][y]=vec(girdleft[l][k].x,girdleft[l][k].z,girdleft[n][m].x1,girdleft[n][m].z1,girdleft[n][m].x 2,girdleft[n][m].z2);array[x][y+1]=vec(girdleft[l][k].x,girdleft[l][k].z,girdright[n][m].x1,girdright[n][m].z1,girdright[ n][m].x2,girdright[n][m].z2);array[x+1][y]=vec(girdright[l][k].x,girdright[l][k].z,girdleft[n][m].x1,girdleft[n][m].z1,girdleft[n] [m].x2,girdleft[n][m].z2);array[x+1][y+1]=vec(girdright[l][k].x,girdright[l][k].z,girdright[n][m].x1,girdright[n][m].z1,girdr ight[n][m].x2,girdright[n][m].z2);}}cout<<"****************方程组系数矩阵***************"<<endl;for(i=0;i<2*Ng*Nq;i++){for(j=0;j<2*Ng*Nq;j++){cout<<array[i][j]<<" ";}cout<<endl;}cout<<"***************线性方程组的右端项*************"<<endl;for(i=0;i<2*Ng*Nq;i++){b[i]=-1*340*M*a;cout<<b[i]<<endl;}cout<<"***************Gauss-seidel法解线性方程组迭代20步的结果(每个涡格的环量)*************"<<endl;for(i=0;i<2*Ng*Nq;i++){result[i]=0.0;Gaussseidel(2*Nq*Ng,M1,array,result,b);for(i=0;i<Ng*Nq;i++)airfoil.Y=airfoil.Y+2*p*M*340*width*result[2*i];airfoil.S=(baseB[0]+baseB[Nq])*airfoil.L/2;airfoil.Cy=2*airfoil.Y/p/pow(M*340,2)/airfoil.S;cout<<"Y="<<airfoil.Y<<'\t'<<"Cy="<<airfoil.Cy<<endl;}为了验证代码的正确性,此处的算例采用的是《空气动力学》一书中关于涡格法的一道算例,书中给出了算例的过程和解。

汽车空调培训---CFD基础讲解

汽车空调培训---CFD基础讲解

七.产品结构设计个人经验分享 1.根据边界布置我们的空调结构时尽量边界最大化; 2.通过给定的配件外形尺寸布置空间结构时不要出现太大的突变; 3.根据出模方向设计结构,尽量少镶块。 4.分风结构设计尽量对称,以整车中心为基准。
三.对网格划分中存在是错误进行分析优化并达到成功的划分网格。
对于网格划分失败无图片,按一下方法做修改直至网格划分成功: 1.去除空气体中的小圆角、小孔、小尖角、尖锐薄壁等; 2.在做差合空气体时,差合连接面需检查,这是容易出现薄壁的地方 (如风门、叶轮等);
四.对流体进行属性的定义、边界条件设Байду номын сангаас。
2.对速度-单元节点的查看分析
图片讲解
3.静压力-单元节点 的查看分析
1.冷风吹面X轴Y轴静压力云图如下: X轴
Y轴
分析结果:(1)左右风管出风口出风截面大小差异较大。 (2) 左右风管路径上的对称截面大小有差异。
3.总压力-单元节点查看分析
总压力图片讲解
4.报告查看分析
1.对于报告的查看我们一般看出口的体积流量(如红圈),此时的体积单位为mm³ /s, 我们需将单位换算,可以通过UG中自带的换位换算器换算如图,也可以在办公软件里 面换算 。 (例:6.36e+6=[6.36e+(6-9)]*3600=2.29e+1=22.9m³ /h) 2.根据报告的结果我们可以去分析在不同模式下风管的出风比例。
UG 软件流体分析基础讲解
1.对产品进行流体的提取及方法。 2.对流体进行网格的划分以及网格划分的方式。 3.对网格划分中存在是错误进行分析优化并达到成功的划 分网格。
4.对流体进行属性的定义、边界条件设置。
5.对求解结果分析,并学习如何查看分析结果。 6.依据分析结果对产品进行结构的修改与优化。 7.产品结构设计个人经验分享。

2024年航空燃气涡轮机培训资料

2024年航空燃气涡轮机培训资料

应急程序示意图
01 燃油泄漏
立即切断燃油供应,开启灭火器
02 燃气轮机失速问题
减小推力,控制飞机姿态
03
总结
航空燃气涡轮发动机的维护与故障排除是飞行安 全的重要环节,只有严格依照维护流程和故障排 除原则,以及严谨的紧急情况处理和安全意识培 训,才能确保飞机的安全飞行。
● 04
第四章 未来航空燃气涡轮发 动机技术发展趋势
● 06
第六章 总结与展望
技术总结
航空燃气涡轮发动 机技术的重要性
航空燃气涡轮机是飞机的 关键部件之一,直接影响 着飞行安全和效率。 其技术的发展水平直接关 系到飞机的性能和经济效 益。
发动机维护的要点
定期检查涡轮机叶片的磨 损情况,及时更换受损部 件。 保持涡轮机内部的清洁, 防止杂质对发动机性能造 成影响。

常用方法和 技巧
掌握故障排除的 有效方法和技巧
紧急情况处理
燃油泄漏
立即采取应急措施 隔离泄漏源头 通知地面人员
燃气轮机失速问题
稳定飞行姿态 尽快寻找原因 及时采取应对措施
安全意识培训
安全规定和 操作流程
严格遵守安全规 定,正确操作发
动机
紧急情况下 的应对措施
快速反应,按照 紧急处理流程执

● 03
第3章 航空燃气涡轮发动机 的维护与故障排除
维护流程
航空燃气涡轮发动机 的维护流程包括定期 检查和保养,确保发 动机处于良好状态, 以提高性能和延长使 用寿命。同时,故障 预防和处理也是维护 流程中重要的环节, 及时发现并解决潜在 问题,保障飞行安全。
故障排除原则
故障分类和 诊断
准确判断故障类 型,找到故障源
自动诊断故障,提高效率

气象天气学原理位涡及位涡方程

气象天气学原理位涡及位涡方程

5. 位涡观点在预报中的应用
其基本要点是: (1)在涡度观点中,将大气结构看成是由高空移动性的 槽、脊叠加在地面气旋、反气旋之上所组成。而在 位涡观点中,将大气结构看成是由基本气流及高空 正、负位涡异常叠加在地面正、负位温异常之上所 组成。 (2)围绕高空正位涡异常(即位涡比周围地区高的地区) 中心及周围地区,出现气旋性风场;围绕高空负位 涡异常(即位涡比周围地区低的地区)中心及周围 地区,出现反气旋性风场。对于近地面层而言,当 有正温度异常出现时,对应一个气旋性风场,而负 温度异常对应一个反气旋性风场。
1. 地面气压系统的形成和移动
1.1 地面气压系统的形成
1. 地面气压系统的形成和移动
1.1 地面气压系统的形成
① 微差涡度平流的作用
1.1
地面气压系统的形成
① 微差涡度平流的作用 涡度平流随高度变化造成的垂直运动,其物理意义可 以这样来理解:在地面涡度平流很小,而上空500hPa (或300hPa)上槽前脊后为较大的正涡度平流。气旋性 涡度增加,使风压场不平衡,在地转偏向力的作用下, 必然产生水平辐散,为保持质量连续,将出现补偿上升 运动,并且上升运动在对流层中层达到最大。由于这种 垂直上升运动的拉伸作用,使得槽前对流层中下层气旋 性涡度增加;相反地,高空脊前槽后则由于负涡度平流 产生的下沉运动,使地面反气旋发展。
5. 位涡观点在预报中的应用
5. 位涡观点在预报中的应用
当这个对流层顶动力异常区逼近一个斜压区时, •和涡度(黑箭头)相联系的环流引起热力平流,在高空涡度 异常略微偏东的地方导致低层异常暖。 •这个过程可以诱发一个气旋性环流,图5中用白箭头表示。这 个气旋性环流又加强了由高空异常诱发的环流形势。所造成的 垂直运动进一步加强,进而增强气旋生。如此往复。 如果静力稳定度足够低,地面气旋性环流可以伸展 到高空位 涡异常所在的层面,有以下后果: •原来的环流与诱发的环流相结合,会将位涡异常的一部分向南 平流,加强高空异常,并减缓它的向东移动。 •由高空正涡度异常激发的环流增强,进一步加强了暖异常(正 反馈)。

大涡模拟用二阶格式

大涡模拟用二阶格式

大涡模拟用二阶格式(实用版)目录1.大涡模拟的概述2.二阶格式的定义3.二阶格式在大涡模拟中的应用4.二阶格式的优缺点5.总结正文一、大涡模拟的概述大涡模拟(Large Eddy Simulation,简称 LES)是一种用于研究流体运动的数值模拟方法。

传统的计算流体力学(Computational Fluid Dynamics,简称 CFD)主要关注于涡旋尺度较小的流动现象,而大涡模拟则专注于模拟流场中尺度较大的涡旋结构。

这种方法可以有效地降低计算成本,同时保留涡旋尺度上的主要流动特征。

二、二阶格式的定义二阶格式是一种基于有限体积法(Finite Volume Method,简称 FVM)的数值离散方法。

它通过对流场中的速度、压力等物理量进行离散,建立有限体积的离散化方程组,从而实现对流场模拟。

二阶格式之所以被称为“二阶”,是因为它在离散化过程中对流场中的各阶导数采用了二阶精度的差分方案。

三、二阶格式在大涡模拟中的应用在大涡模拟中,二阶格式被广泛应用于对流场中的涡旋结构进行模拟。

具体来说,二阶格式通过对涡旋尺度较大的涡旋结构进行建模,可以有效地捕捉到这些结构的主要特征。

同时,由于二阶格式的计算精度相对较高,因此可以较为准确地模拟流场的湍流特性。

四、二阶格式的优缺点1.优点:二阶格式在大涡模拟中的应用具有较高的计算精度,可以较为准确地模拟流场的湍流特性。

此外,二阶格式具有较好的稳定性和收敛性,适用于多种不同的流动场合。

2.缺点:尽管二阶格式的计算精度较高,但它的计算成本也相对较高。

此外,由于二阶格式主要关注涡旋尺度较大的流动现象,因此在模拟细节上可能不如其他高阶格式。

五、总结大涡模拟用二阶格式是一种有效的流体动力学模拟方法,可以捕捉到流场中尺度较大的涡旋结构,并具有较高的计算精度。

螺旋桨涡格法的初步实现

螺旋桨涡格法的初步实现

螺旋桨涡格法的初步实现螺旋桨升力面理论有涡分布法,偶极子分布法和加速度势法等。

经过多年的应用实践,现在普遍采用的是涡分布法。

虽然面元法的发展比升力面方法在理论上更为完善,尤其是压力分布的预报计算显著优于后者,但就螺旋桨合力的计算而言,两者基本具有同样的计算精度,因此升力面理论方法目前仍是螺旋桨理论设计所采用的主要工具。

随着计算机速度和内存的不断提高和扩大,涡格法(V ortex Lattice Method ,即VLM )得到越来越广泛的应用。

至今,各学者所发表的各种涡升力面理论的论文,就原理而言都是一致的,而主要差别仅在于涡模型包括尾涡处理和数值方法两方面。

作为螺旋桨理论的初学者,为了深入理解升力面理论以及应用方式,我们将通过自编程序在计算机上进行简单的涡格法实现。

由于螺旋桨的几何形状较为复杂,而我们的目的在于对升力面涡格法有初步的认识,因此我们对螺旋桨作一定程度上的简化,既能反映涡格法的计算特征,又能使计算相对简便。

在对涡格法理论模型进行简单的介绍之后,本文将给出涡格法的实现程序,并对不同攻角以及不同拱弧面下的计算结果进行分析比较。

一、涡格法理论模型1、螺旋桨几何特征本文使用一空间曲面(拱弧面,即升力面)代替螺旋桨桨叶,桨叶厚度可由离散的源汇分布来模拟,但在本文中不予考虑。

该拱弧面在xoy 平面的投影为展长2.0,弦长1.0的矩形平面,在xoz 平面上的投影为一剖面拱弧。

为了比较不同的拱弧线对桨叶性能的影响,本文使用三种不同的剖面拱弧线,它们分别为NACA 0.8a =剖面拱弧、圆弧以及抛物线拱弧。

为了比较不同的最大拱高值对桨叶性能的影响,本文取两种不同的最大拱高,分别为fmax=0.02*c 和fmax=0.04*c ,其中c 为弦长1.0。

2、控制方程涡格法的思想是将升力面设置在拱弧面上,然后在升力面上进行涡格划分,并在每个涡格上布置马蹄涡和控制点,而每个马蹄涡的强度是未知的,可以通过在控制点处满足拱弧面上法向速度为零的边界条件进行求解。

Converge培训教程(流动设定)

Converge培训教程(流动设定)

1
3 2
鼠标左键 点击此处。
4
Copyright (C) 2012 IDAJ Co., LTD. All Rights Reserved. 18
表面准备(续)
head:在气道根部阀座封闭环面缸内侧边缘创建fence
1
2
Tip:缸盖与气道连接处按上 图所示方式分割。
4
3
点击网格线依次 选择图中四条红线
・所有公司名,产品名,服务名是 各个公司的商标或登记商标以及服务商标。 ・本资料包括保密信息。没有得到敝公司的同意,请不要使用,发布,复制本资料或本电子档。
提 纲 简介 表面准备 流动设定 网格预览 提交计算 后处理
Copyright (C) 2012 IDAJ Co., LTD. All Rights Reserved. 1
表面准备(续)
将模型放大1000倍,以符合实际的单位尺度(默认单位m)
1 3 4 5 2
Copyright (C) 2012 IDAJ Co., LTD. All Rights Reserved. 6
表面准备(续)
基于特征角创建fence:
Fence只是为了方便网格选择而创建的网格间的分界线,如下图中白 线所示。
表面准备(续)
Spark plug:新建#4 boundary,更改名称为spark plug,方法同上, 框选火花塞表面并归入之。
1
3
框选火花 塞表面。
2
4
Copyright (C) 2012 IDAJ Co., LTD. All Rights Reserved. 22
表面准备(续)
Spark plug electrode:新建#5 boundary,改名为spark plug electrode,方 法同上,仅显示spark plug,从中选择电极表面并归入。

python相对涡度求切变涡度和曲率涡度-概述说明以及解释

python相对涡度求切变涡度和曲率涡度-概述说明以及解释

python相对涡度求切变涡度和曲率涡度-概述说明以及解释1. 引言1.1 概述Python是一种高级编程语言,具有简洁、易读、易理解的特点,因此被广泛应用于科学计算、数据分析和机器学习等领域。

涡度是流体力学中的重要概念,用来描述流体流动中的旋转性质。

而切变涡度和曲率涡度则是涡度理论中的两个重要分量,用于描述流场中旋转的程度和方向。

切变涡度衡量了流体流场中有无旋转现象,即流速矢量的旋转程度。

在流场中,流体沿着一条切线的速度发生了变化,形成了速度的变化梯度。

切变涡度即是由这个速度变化梯度推导而来,它反映了流场中的剪切力大小。

在Python中,可以通过计算速度矢量的梯度来求解切变涡度,并利用相对涡度的定义进行数值计算。

曲率涡度是描述流场中流线曲率变化的指标,它反映了流场中的扭转力大小。

在流体流场中,流线弯曲方向和大小不同,流速矢量的变化也不同,从而产生了曲率涡度。

在Python中,可以通过计算流线的曲率来求解曲率涡度,并利用相对涡度的定义进行数值计算。

本文将详细介绍切变涡度和曲率涡度的定义及其求解方法,并在Python环境下进行数值计算。

通过学习本文,读者将能够理解涡度的基本概念和涡度分量的物理意义,掌握求解切变涡度和曲率涡度的数值方法,以及在Python中实现这些方法的技巧。

同时,本文还将探讨切变涡度和曲率涡度在实际应用中的一些研究进展,并展望了未来可能的发展方向。

在下一节中,我们将详细介绍切变涡度的定义及其求解方法。

1.2 文章结构本文按照以下结构展开讨论:在引言中概述了本文的背景和目的,旨在介绍Python中求解切变涡度和曲率涡度的方法。

接下来的正文部分将详细介绍切变涡度和曲率涡度的定义,并分别列出了求解方法。

最后,结论部分对全文进行总结,并展望了未来可能的研究方向。

在正文的切变涡度部分,我们将首先给出切变涡度的定义,即描述两个相邻流体层之间速度差异的量。

然后,我们将介绍使用Python来求解切变涡度的方法,并给出具体实现的示例。

涡线方程计算公式

涡线方程计算公式

涡线方程计算公式涡线是一种特殊的曲线,它在数学和物理学中有着广泛的应用。

涡线的方程计算公式可以用来描述涡线的形状和特征。

在本文中,我们将介绍涡线的方程计算公式,并探讨涡线在不同领域中的应用。

我们来看一下涡线的方程计算公式。

涡线的方程可以用参数方程表示,其中涡线上的每个点的坐标由参数决定。

涡线的参数方程可以写成以下形式:x = a * sin(t)y = a * cos(t)z = b * t在这个方程中,a和b是常数,t是参数。

这个方程描述了一个在三维空间中旋转的曲线,它的形状类似于螺旋线。

通过改变参数a和b的值,我们可以控制涡线的大小和形状。

涡线的方程计算公式可以用来描述许多自然现象和物理过程。

例如,在流体力学中,涡线可以用来描述旋涡的运动和演化。

涡线的形状和运动对于理解流体流动的特性非常重要。

通过研究涡线的方程,科学家可以预测和模拟复杂的流体现象,如涡流和涡旋的形成。

涡线的方程计算公式还可以应用于电磁学和光学领域。

在电磁学中,涡线可以用来描述磁场的分布和变化。

磁场的涡线可以帮助我们理解电磁感应和电磁波的传播。

在光学中,涡线可以用来描述光的传播和干涉现象。

光的涡线可以帮助我们理解光的偏振和相位调制。

除了在科学研究中的应用,涡线的方程计算公式还可以应用于工程和设计领域。

例如,在航空航天工程中,涡线的方程可以用来描述飞机的升力和阻力。

通过研究涡线的方程,工程师可以设计出更加优化的飞机翼型和机翼结构。

在建筑设计中,涡线的方程可以用来描述建筑物的流线型和空气动力学特性。

通过研究涡线的方程,设计师可以创建出更加高效和节能的建筑设计。

涡线的方程计算公式是描述涡线形状和特征的重要工具。

涡线的方程可以应用于流体力学、电磁学、光学、工程和设计等多个领域。

通过研究涡线的方程,我们可以深入理解和掌握各种自然现象和物理过程。

涡线的方程计算公式的应用前景非常广阔,将在未来的科学研究和工程实践中发挥重要作用。

涡轴发动机的热力循环分析PPT培训课件

涡轴发动机的热力循环分析PPT培训课件
4.6气体充装员、气体充装前后检查员的培训内容:
2.导购的服务礼仪 存在着流动损失
气体的成分发生了变化, 热容比也随着气 体成分和温度的变化而变化
2021/12/21
14
实际循环处理方法
在理想循环的基础上 作如下处理:
整个压缩过程(0-2) 是绝热的多变过程;
在整个膨胀过程(3-5) 是绝热的多变过程;
涡轴发动机的热力循环分析
循环的理想化条件
为什么进行理想化假设? 假设条件
假设工质完成的是一个封闭的热力循环 假设循环过程是定熵过程 燃烧室定压加热过程的假设 忽略qmf ,假设气体为定质量的定比热容的
完全气体
2021/12/21
2
布莱顿或定压加热循环
布莱顿或定压加热循环定 义
循环组成
wc,t 02*vdpwc,sV22 * 2V2 2Lrc wp,t 25*vdpwT,sLnetV52 2V2*2 2Lrp
L i (V 5 2 V 2 )2 L n eL tr pL rc L e ( V 5 2 V 2 )2 L n eL ti L r pL rc
2021/12/21
p*
i
1
p p
0*
* 2
所以 **
c
p*
1
ic
即:循环的增压比等于进气道的冲压比与
压气机的增压比的乘积
2021/12/21
7
热效率推导:
t 1
1
1
所以:燃气涡轮喷气发动机理想循环的 热效率取决于发动机的增压比和工质的 热容比
2021/12/21
8
在 一 定的情况下, 取决于空气在压缩过 程中压力提高的程度
ddw 0ecpT0eΔ2 10

python相对涡度求切变涡度和曲率涡度

python相对涡度求切变涡度和曲率涡度

python相对涡度求切变涡度和曲率涡度全文共四篇示例,供读者参考第一篇示例:Python是一种功能强大的编程语言,广泛应用于科学计算、数据分析和人工智能等领域。

在气象学中,Python也被广泛用于处理气象数据、模拟气象过程等方面。

本文将介绍如何使用Python计算相对涡度,以及如何通过相对涡度求解切变涡度和曲率涡度。

让我们回顾一下涡度的定义。

在气象学中,涡度是描述流体旋转的物理量,可以分为绝对涡度和相对涡度。

绝对涡度是在不同高度流体中的涡度,而相对涡度则是相对于大气中的某个高度来计算的涡度。

在大气科学中,我们经常使用的是相对涡度来描述气象现象。

在气象学中,切变涡度和曲率涡度是描述相对涡度的两个重要概念。

切变涡度描述了相对涡度在空间上的变化率,是由流体速度场的梯度算子得到的。

曲率涡度描述了相对涡度在流体中的旋转程度,是由流体速度场的旋度算子得到的。

计算切变涡度和曲率涡度可以帮助我们更好地理解大气中的涡度分布和动力结构。

接下来,我们将介绍如何使用Python计算相对涡度,并通过相对涡度计算切变涡度和曲率涡度。

我们需要获取大气流场的速度数据。

这些数据可以来自气象雷达、气象卫星、数值模式等方式。

假设我们已经获取了大气流场在某一高度的水平和垂直风速数据。

我们可以使用Python的numpy库来处理这些数据。

我们需要将速度数据转换为风矢量,然后计算速度场的梯度和旋度。

我们可以利用梯度算子和旋度算子来计算切变涡度和曲率涡度。

以下是一个用Python计算相对涡度、切变涡度和曲率涡度的简单例子:```pythonimport numpy as np# 定义流体速度场的水平和垂直分量u = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 计算速度场的梯度dudx, dudy = np.gradient(u)dvdx, dvdy = np.gradient(v)print("切变涡度:", shear_vorticity)print("曲率涡度:", curvature_vorticity)```通过以上代码,我们可以得到速度场的切变涡度和曲率涡度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

涡格法代码及解释#include "iostream.h"#include "stdio.h"#include "math.h"#define PI 3.1415926class AIRFOIL //用来存放翼型的信息{public:double L,Bg,S;double Xo,Xc;double Y,Cy;AIRFOIL(){Y=0.0f,S=0.0f,L=0.0f,Bg=0.0f,Xo=0.0f,Xc=0.0f;}};class GIRD //网格信息{public:double x1,z1,x2,z2;//左右自由涡的坐标double x3,z3,x4,z4;//3/4弦线处的坐标double x,z;//控制点的坐标,3/4弦线中点GIRD(){x1=0.0f,x2=0.0f,z1=0.0f,z2=0.0f,x3=0.0f,x4=0.0f,z3=0.0f,z4=0.0f,x=0.0f,z=0.0f ;}};double vec(double x,double z,double x1,double z1,double x2,double z2 ){double a,b,c,d,e;a=1/((x2-x)*(z1-z)-(x1-x)*(z2-z));b=((x2-x1)*(x1-x)+(z2-z1)*(z1-z))/sqrt(pow((x1-x),2)+pow((z1-z),2));c=((x2-x1)*(x2-x)+(z2-z1)*(z2-z))/sqrt(pow((x2-x),2)+pow((z2-z),2));d=(1-(x1-x)/sqrt(pow((x1-x),2)+pow((z1-z),2)))/(z1-z);e=(1-(x2-x)/sqrt(pow((x2-x),2)+pow((z2-z),2)))/(z2-z);return (a*(b-c)+d-e)/4/PI;}void Gaussseidel(int n,double *M,double **a,double *x,double *b)//高斯--塞得尔迭带法{int t=0,i,j;//迭代次数while(t<20)//次数限制,精度要求,此处可修改,是迭带开关{for(i=0;i<n;i++){M[i] = 0;for(j=0;j<n;j++){if(i!=j){M[i]+=a[i][j]*x[j];}}x[i] = (b[i] - M[i])/a[i][i]; //迭代}cout<<++t;for(i=0;i<n;i++){if(i%5==0){cout<<endl;}cout<<" "<<x[i];}cout<<endl;}}void main(){AIRFOIL airfoil;int Ng,Nq,i,j,k,l,m,n,x,y;double Y=0.0,M,a,ep=1e-10,p=1.22505,Cy=0.0; //p为海平面空气密度cout<<"这是一个用涡格法计算机翼升力的程序!"<<endl;cout<<"请输入翼型个参数:展长L, 根弦Bg,前缘后掠角Xo,后缘后掠角Xc"<<endl;while(1){cin>>airfoil.L>>airfoil.Bg>>airfoil.Xo>>airfoil.Xc;if(airfoil.Bg-airfoil.L*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))/2>0){cout<<airfoil.L<<" "<<airfoil.Bg<<" "<<airfoil.Xo<<" "<<airfoil.Xc<<" "<<endl;break;}else{cout<<"翼型的稍弦为0!请重新输入翼型数据"<<endl;}}cout<<"请输入来流马赫数和攻角"<<endl;cin>>M>>a;a=a*PI/180;cout<<M<<'\t'<<a<<endl;cout<<"请输入根弦上的节点数,前缘上的节点数:"<<endl;cin>>Ng>>Nq;cout<<Ng<<" "<<Nq<<" "<<endl;Nq--;Ng--;//变成分多少块double *baseq=new double[Nq+1];double *baseB=new double[Nq+1];double *result=new double[2*Nq*Ng];double *b=new double[2*Nq*Ng];double *M1=new double[2*Nq*Ng];GIRD **girdleft,**girdright;//左半边机翼,右半边机翼girdleft=new GIRD*[Ng];for(i=0;i<Ng;i++){girdleft[i]=new GIRD[Nq];}girdright=new GIRD*[Ng];for(i=0;i<Ng;i++){girdright[i]=new GIRD[Nq];}double width=airfoil.L/Nq/2;//展长每个分块的长度//前缘节点的x坐标cout<<"前缘节点处的x坐标"<<endl;for(i=0;i<Nq+1;i++){baseq[i]=0+i*width*tan(airfoil.Xo*PI/180);cout<<baseq[i]<<" "<<endl;}//每一条平行于根弦的弦的长度cout<<"每一条平行于根弦的弦的长度"<<endl;for(i=0;i<Nq+1;i++){baseB[i]=airfoil.Bg-i*(tan(airfoil.Xo*PI/180)+tan(airfoil.Xc*PI/180))*width;cout<<baseB[i]<<" "<<endl;}for(i=0;i<Ng;i++){for(j=0;j<Nq;j++){girdleft[i][j].x1=baseq[j]+baseB[j]/4/Ng+i*baseB[j]/Ng;girdright[i][j].x1=girdleft[i][j].x1;girdleft[i][j].x3=girdleft[i][j].x1+baseB[j]/2/Ng;girdright[i][j].x3=girdleft[i][j].x3;girdleft[i][j].z1=0+j*width;girdright[i][j].z1=-1*girdleft[i][j].z1;girdleft[i][j].z3=girdleft[i][j].z1;girdright[i][j].z3=-1*girdleft[i][j].z3;girdleft[i][j].z2=girdleft[i][j].z1+width;girdright[i][j].z2=-1*girdleft[i][j].z2;girdleft[i][j].z4=girdleft[i][j].z2;girdright[i][j].z4=-1*girdleft[i][j].z4;girdleft[i][j].x2=baseq[j+1]+baseB[j+1]/4/Ng+i*baseB[j+1]/Ng;girdright[i][j].x2=girdleft[i][j].x2;girdleft[i][j].x4=girdleft[i][j].x2+baseB[j+1]/2/Ng;girdright[i][j].x4=girdleft[i][j].x4;girdleft[i][j].x=(girdleft[i][j].x3+girdleft[i][j].x4)/2;girdright[i][j].x=girdleft[i][j].x;girdleft[i][j].z=(girdleft[i][j].z3+girdleft[i][j].z4)/2;girdright[i][j].z=-1*girdleft[i][j].z;cout<<"************************left**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdleft[i][j].x1<<","<<girdleft[i][j].z1<<")"<<"";//将坐标打出cout<<"(x2,z2):"<<"("<<girdleft[i][j].x2<<","<<girdleft[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdleft[i][j].x3<<","<<girdleft[i][j].z3<<")"<<"";cout<<"(x4,z4):"<<"("<<girdleft[i][j].x4<<","<<girdleft[i][j].z4<<")"<<"";cout<<"(x,z):"<<"("<<girdleft[i][j].x<<","<<girdleft[i][j].z<<")"<<endl;cout<<"************************right**********************"<<endl;cout<<"(x1,z1):"<<"("<<girdright[i][j].x1<<","<<girdright[i][j].z1<<")"<<" ";//将坐标打出cout<<"(x2,z2):"<<"("<<girdright[i][j].x2<<","<<girdright[i][j].z2<<")"<<endl;cout<<"(x3,z3):"<<"("<<girdright[i][j].x3<<","<<girdright[i][j].z3<<")"<<" ";cout<<"(x4,z4):"<<"("<<girdright[i][j].x4<<","<<girdright[i][j].z4<<")"<<" ";cout<<"(x,z):"<<"("<<girdright[i][j].x<<","<<girdright[i][j].z<<")"<<endl;}}//存储系数矩阵double **array;array=new double*[2*Ng*Nq];for(i=0;i<2*Ng*Nq;i++){array[i]=new double[2*Ng*Nq];}for(i=0;i<Nq*Ng;i++){k=i%Nq;l=i/Nq;for(j=0;j<Nq*Ng;j++){m=j%Nq;n=j/Nq;x=2*i;y=2*j;array[x][y]=vec(girdleft[l][k].x,girdleft[l][k].z,girdleft[n][m].x1,girdleft[n][m].z1, girdleft[n][m].x2,girdleft[n][m].z2);array[x][y+1]=vec(girdleft[l][k].x,girdleft[l][k].z,girdright[n][m].x1,girdright[n][m ].z1,girdright[n][m].x2,girdright[n][m].z2);array[x+1][y]=vec(girdright[l][k].x,girdright[l][k].z,girdleft[n][m].x1,girdleft[n][m ].z1,girdleft[n][m].x2,girdleft[n][m].z2);array[x+1][y+1]=vec(girdright[l][k].x,girdright[l][k].z,girdright[n][m].x1,girdright [n][m].z1,girdright[n][m].x2,girdright[n][m].z2);}}cout<<"****************方程组系数矩阵***************"<<endl;for(i=0;i<2*Ng*Nq;i++){for(j=0;j<2*Ng*Nq;j++){cout<<array[i][j]<<" ";}cout<<endl;}cout<<"***************线性方程组的右端项*************"<<endl;for(i=0;i<2*Ng*Nq;i++){b[i]=-1*340*M*a;cout<<b[i]<<endl;}cout<<"***************Gauss-seidel法解线性方程组迭代20步的结果(每个涡格的环量)*************"<<endl;for(i=0;i<2*Ng*Nq;i++){result[i]=0.0;}Gaussseidel(2*Nq*Ng,M1,array,result,b);for(i=0;i<Ng*Nq;i++)airfoil.Y=airfoil.Y+2*p*M*340*width*result[2*i];airfoil.S=(baseB[0]+baseB[Nq])*airfoil.L/2;airfoil.Cy=2*airfoil.Y/p/pow(M*340,2)/airfoil.S;cout<<"Y="<<airfoil.Y<<'\t'<<"Cy="<<airfoil.Cy<<endl;}为了验证代码的正确性,此处的算例采用的是《空气动力学》一书中关于涡格法的一道算例,书中给出了算例的过程和解。

相关文档
最新文档