#include "iostream.h"
#include "stdio.h"
#include "math.h"
#define PI 3.1415926
class 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; 注释:a*(b-c)为附着涡引起的控制点的诱导速度;返回的值为在控制
点的总的诱导速度
}
void Gaussseidel(int n,double *M,double **a,double *x,double *b)//高斯--塞得尔迭带法
{
int t=0,i,j;//迭代次数
while(t<20)//次数限制,精度要求,此处可修改,是迭带开关
{
评论0