00001
00002 #ifndef _WING_H
00003 #define _WING_H
00004
00005 #ifdef __GNUG__
00006 #include <vector>
00007 #include <vector.h>
00008 #else
00009 #include <vector>
00010 #endif
00011 #include <stdio.h>
00012 #ifdef HPUX
00013 #include <iostream.h>
00014 #else
00015 #include <iostream>
00016 #endif
00017 #include "alloc.h"
00018 #include <math.h>
00019 #ifdef _WIN32
00020 using namespace std;
00021 #endif
00022
00023 typedef struct
00024 {
00026 double time_max;
00028 int firsttime;
00031 int isTransition;
00033 double t1;
00035 double dt1;
00037 double uu1;
00038 double vv1;
00039 double ww1;
00040 double uu2;
00041 double vv2;
00042 double ww2;
00043 } Trajectory;
00044
00045 class Wing
00046 {
00047 private:
00048 friend ostream &operator << (ostream &Out, Wing &V);
00049 void getWingTrajectoryUVW(double t, double *u, double *v, double *w);
00050 void GetWingCoordinates(double u, double v, double w,
00051 double x_mid, double y_mid, double z_mid, double span,
00052 double *x1, double *y1, double *z1,
00053 double *x2, double *y2, double *z2);
00054 double getDensity(double temperature);
00055
00056 public:
00058 double gwing;
00060 double ewing;
00062 double xwing_i[2][3];
00064 double vwing_i[2][3];
00066 char Name[30];
00068 char AircraftType[30];
00070 char trajectoryname[100];
00072 double *ewake;
00074 FILE *trajectory;
00075
00076
00078
00080
00082
00084
00086
00088
00089
00091 double timeElapsed;
00093 int iter;
00095 double span;
00097 double weight;
00099 double area;
00101 int OutOfRange;
00103 int ToBeDeleted;
00105 int nvort;
00107 int ID;
00109 double DistFromAirport;
00110
00112 Trajectory traj;
00113
00115 Wing();
00117 ~Wing();
00119 void Initialize();
00121 Wing &operator= (const Wing &);
00123 void readTrajectory(double t, double *u, double *v, double *w);
00125 void Setup(char *inpfile, char *name, char *type, double x0, double y0, double z0, double wingspan, double wingarea, double wingweight, double temperature, int nwakemax);
00127 void Allocate(int nwakemax);
00129 void DeAllocate(int nwakemax);
00131 int packWing(unsigned char **dataptr, int *totsize);
00133 int unpackWing(unsigned char *data, int totsize);
00135 double getGwing(double temperature);
00137 inline double Speed();
00139 inline double Height();
00140 };
00141
00142 inline double Wing::Speed()
00143 {
00144 return sqrt(vwing[0][0]*vwing[0][0]+vwing[0][1]*vwing[0][1]+vwing[0][2]*vwing[0][2]);
00145 }
00146
00147 inline double Wing::Height()
00148 {
00149 return 0.5*(xwing[0][2]+xwing[1][2]);
00150 }
00151
00152 #endif // _WING_H
00153