📄 hifi_f16_aerodata.c
字号:
/*---------------------------------------------------------------------- *//* *//* Hifi aerodata *//* taken from Richard S. Russell's F-16 model *//* *//*---------------------------------------------------------------------- */double *getALPHA1(){FILE *fp = fopen("aerodata/ALPHA1.dat","r");int i;double *alpha1,data;if(fp==NULL) mexErrMsgTxt("Can't find file ALPHA1.dat");alpha1 = doubleVector(20);for(i=0;i<20;i++){ fscanf(fp,"%lf",&data); alpha1[i] = data; }fclose(fp);return(alpha1);}double *getALPHA2(){FILE *fp = fopen("aerodata/ALPHA2.dat","r");int i;double *alpha2,data;if(fp==NULL) mexErrMsgTxt("Can't find file ALPHA2.dat");alpha2 = doubleVector(14);for(i=0;i<14;i++){ fscanf(fp,"%lf",&data); alpha2[i] = data; }fclose(fp);return(alpha2);}double *getBETA1(){FILE *fp = fopen("aerodata/BETA1.dat","r");int i;double *beta1,data;if(fp==NULL) mexErrMsgTxt("Can't find file BETA1.dat");beta1 = doubleVector(19);for(i=0;i<19;i++){ fscanf(fp,"%lf",&data); beta1[i] = data; }fclose(fp);return(beta1);}double *getDH1(){FILE *fp = fopen("aerodata/DH1.dat","r");int i;double *dh1,data;if(fp==NULL) mexErrMsgTxt("Can't find file DH1.dat");dh1 = doubleVector(5);for(i=0;i<5;i++){ fscanf(fp,"%lf",&data); dh1[i] = data; }fclose(fp);return(dh1);}double *getDH2(){FILE *fp = fopen("aerodata/DH2.dat","r");int i;double *dh2,data;if(fp==NULL) mexErrMsgTxt("Can't find file DH2.dat");dh2 = doubleVector(3);for(i=0;i<3;i++){ fscanf(fp,"%lf",&data); dh2[i] = data; }fclose(fp);return(dh2);}double *getDH3(){FILE *fp = fopen("aerodata/DH3.dat","r");int i;double *dh3,data;if(fp==NULL) mexErrMsgTxt("Can't find file DH3.dat");dh3 = doubleVector(7);for(i=0;i<7;i++){ fscanf(fp,"%lf",&data); dh3[i] = data; }fclose(fp);return(dh3);}double _Cx(double alpha_in,double beta_in,double dele){ 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 = 3; double x[3]; FILESIZE = 1900; /* 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; ndinfo.nPoints[2] = 5; X = (double **) malloc(nDimension*sizeof(double*)); X[0] = getALPHA1(); X[1] = getBETA1(); X[2] = getDH1(); fp = fopen("aerodata/f16CX.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16CX.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; x[2] = dele; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cz(double alpha_in,double beta_in, double dele){ 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 = 3; /* alpha_in,beta_in,dele */ double x[3]; /* Number of dimension */ FILESIZE = 1900; /* There are 1900 elements in the 20x19x5 3D array */ /* 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)); /* There are 1900 elements */ ndinfo.nDimension = nDimension; ndinfo.nPoints = intVector(nDimension); ndinfo.nPoints[0] = 20; /* alpha_in npoints */ ndinfo.nPoints[1] = 19; /* beta_in npoints */ ndinfo.nPoints[2] = 5; /* dele npoints */ X = (double **) malloc(nDimension*sizeof(double*)); X[0] = getALPHA1(); X[1] = getBETA1(); X[2] = getDH1(); fp = fopen("aerodata/f16CZ.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16CZ.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; x[2] = dele; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cm(double alpha_in,double beta_in,double dele){ 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 = 3; double x[3]; FILESIZE = 1900; /* 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; ndinfo.nPoints[2] = 5; X = (double **) malloc(nDimension*sizeof(double*)); X[0] = getALPHA1(); X[1] = getBETA1(); X[2] = getDH1(); fp = fopen("aerodata/f16Cm.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16Cm.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; x[2] = dele; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cy(double alpha_in,double beta_in){ 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("aerodata/f16CY.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16CY.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cn(double alpha_in, double beta_in, double dele){ 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 = 3; double x[3]; FILESIZE = 1140; /* 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; ndinfo.nPoints[2] = 3; X = (double **) malloc(nDimension*sizeof(double*)); X[0] = getALPHA1(); X[1] = getBETA1(); X[2] = getDH2(); fp = fopen("aerodata/f16Cn.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16Cn.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; x[2] = dele; return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cl(double alpha_in, double beta_in,double dele){ 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 = 3; double x[3]; FILESIZE = 1140; /* 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; ndinfo.nPoints[2] = 3; X = (double **) malloc(nDimension*sizeof(double*)); X[0] = getALPHA1(); X[1] = getBETA1(); X[2] = getDH2(); fp = fopen("aerodata/f16Cl.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16Cl.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; x[2] = dele; return (interpn(X,DATA,x,ndinfo));}/* End of function(...) */double _Cx_lef(double alpha_in,double beta_in){ 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("aerodata/f16CX_lef.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16CX_lef.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cz_lef(double alpha_in,double beta_in){ 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("aerodata/f16CZ_lef.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16CZ_lef.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */double _Cm_lef(double alpha_in,double beta_in){ 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("aerodata/f16Cm_lef.dat","r"); if(fp==(FILE*) NULL) mexErrMsgTxt("Cannot find file f16Cm_lef.dat in current directory"); for(i=0;i<FILESIZE;i++){ fscanf(fp,"%lf",&data); DATA[i] = data; } fclose(fp); } x[0] = alpha_in; x[1] = beta_in; return interpn(X,DATA,x,ndinfo);}/* End of function(...) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -