⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hifi_f16_aerodata.c

📁 一个F-16仿真程序
💻 C
📖 第 1 页 / 共 4 页
字号:
double _Cy_a20(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 380;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		fp = fopen("CY0620_ALPHA1_BETA1_403.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CY0620_ALPHA1_BETA1_403.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cy_a20_lef(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("CY0920_ALPHA2_BETA1_404.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CY0920_ALPHA2_BETA1_404.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cn_a20(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 380;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		fp = fopen("CN0620_ALPHA1_BETA1_504.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CN0620_ALPHA1_BETA1_504.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cn_a20_lef(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("CN0920_ALPHA2_BETA1_505.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CN0920_ALPHA2_BETA1_505.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cl_a20(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 380;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		X[1] = getBETA1();		fp = fopen("CL0620_ALPHA1_BETA1_604.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CL0620_ALPHA1_BETA1_604.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cl_a20_lef(double alpha, double beta){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 2; 	double x[2];		FILESIZE = 266;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 14;			ndinfo.nPoints[1] = 19;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA2();		X[1] = getBETA1();		fp = fopen("CL0920_ALPHA2_BETA1_605.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CL0920_ALPHA2_BETA1_605.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;	x[1] = beta;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _delta_CNbeta(double alpha){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 1; 	double x[1];		FILESIZE = 20;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		fp = fopen("CN9999_ALPHA1_brett.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CN9999_ALPHA1_brett.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _delta_CLbeta(double alpha){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 1; 	double x[1];		FILESIZE = 20;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		fp = fopen("CL9999_ALPHA1_brett.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CL9999_ALPHA1_brett.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _delta_Cm(double alpha){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 1; 	double x[1];		FILESIZE = 20;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 20;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getALPHA1();		fp = fopen("CM9999_ALPHA1_brett.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file CM9999_ALPHA1_brett.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = alpha;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _eta_el(double el){	static int flag = 0;	static double *DATA = (double*) NULL;	static double **X;	static ND_INFO ndinfo ;		FILE *fp;	double data;	int i,FILESIZE;	int nDimension = 1; 	double x[1];		FILESIZE = 5;		/* Initialise everything when this function is called for the first time */	if(flag==0){		flag = 1;	/* Set to FILE_READ_TAG */		DATA = (double*) malloc(FILESIZE*sizeof(double)); 		ndinfo.nDimension = nDimension;		ndinfo.nPoints = intVector(nDimension);		ndinfo.nPoints[0] = 5;			X = (double **) malloc(nDimension*sizeof(double*));		X[0] = getDH1();		fp = fopen("ETA_DH1_brett.dat","r");		if(fp==(FILE*) NULL)			mexErrMsgTxt("Cannot find file ETA_DH1_brett.dat in current directory");		for(i=0;i<FILESIZE;i++){			fscanf(fp,"%lf",&data);			DATA[i] = data;			}		fclose(fp);		}	x[0] = el;    return (interpn(X,DATA,x,ndinfo));}/* End of function(...) *//*double _delta_Cm_ds(double alpha, double el){..............................} End of function(...) */void hifi_C(double alpha,double beta,double el,double *retVal){	retVal[0] = _Cx(alpha,beta,el);        retVal[1] = _Cz(alpha,beta,el);	retVal[2] = _Cm(alpha,beta,el);        retVal[3] = _Cy(alpha,beta);        retVal[4] = _Cn(alpha,beta,el);        retVal[5] = _Cl(alpha,beta,el);}void hifi_damping(double alpha, double *retVal){	retVal[0] = _CXq(alpha);	retVal[1] = _CYr(alpha);	retVal[2] = _CYp(alpha);	retVal[3] = _CZq(alpha);	retVal[4] = _CLr(alpha);	retVal[5] = _CLp(alpha);	retVal[6] = _CMq(alpha);	retVal[7] = _CNr(alpha);	retVal[8] = _CNp(alpha);}void hifi_C_lef(double alpha,double beta, double *retVal){	retVal[0] = _Cx_lef(alpha,beta) - _Cx(alpha,beta,0);	retVal[1] = _Cz_lef(alpha,beta) - _Cz(alpha,beta,0);        retVal[2] = _Cm_lef(alpha,beta) - _Cm(alpha,beta,0);        retVal[3] = _Cy_lef(alpha,beta) - _Cy(alpha,beta);        retVal[4] = _Cn_lef(alpha,beta) - _Cn(alpha,beta,0);        retVal[5] = _Cl_lef(alpha,beta) - _Cl(alpha,beta,0);}void hifi_damping_lef(double alpha, double *retVal){        retVal[0] = _delta_CXq_lef(alpha);        retVal[1] = _delta_CYr_lef(alpha);        retVal[2] = _delta_CYp_lef(alpha);        retVal[3] = _delta_CZq_lef(alpha);        retVal[4] = _delta_CLr_lef(alpha);        retVal[5] = _delta_CLp_lef(alpha);        retVal[6] = _delta_CMq_lef(alpha);        retVal[7] = _delta_CNr_lef(alpha);        retVal[8] = _delta_CNp_lef(alpha);}void hifi_rudder(double alpha, double beta, double *retVal){        retVal[0] = _Cy_r30(alpha,beta) - _Cy(alpha,beta);        retVal[1] = _Cn_r30(alpha,beta) - _Cn(alpha,beta,0);        retVal[2] = _Cl_r30(alpha,beta) - _Cl(alpha,beta,0);}void hifi_ailerons(double alpha, double beta, double *retVal){        retVal[0] = _Cy_a20(alpha,beta) - _Cy(alpha,beta);        retVal[1] = _Cy_a20_lef(alpha,beta) - _Cy_lef(alpha,beta) - retVal[0];        retVal[2] = _Cn_a20(alpha,beta) - _Cn(alpha,beta,0);        retVal[3] = _Cn_a20_lef(alpha,beta) - _Cn_lef(alpha,beta) - retVal[2];        retVal[4] = _Cl_a20(alpha,beta) - _Cl(alpha,beta,0);        retVal[5] = _Cl_a20_lef(alpha,beta) - _Cl_lef(alpha,beta) - retVal[4];}void hifi_other_coeffs(double alpha, double el, double *retVal){        retVal[0] = _delta_CNbeta(alpha);        retVal[1] = _delta_CLbeta(alpha);        retVal[2] = _delta_Cm(alpha);        retVal[3] = _eta_el(el);        retVal[4] = 0;       /* ignore deep-stall regime, delta_Cm_ds = 0 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -