From: Konrad H. <ko...@ne...> - 2000-02-14 06:17:38
|
Antoine Lefebvre has written: > > On Sun, Feb 13, 2000 at 09:42:46AM -0800, Konrad Hambrick wrote: > > All -- > > > > What will be the scope of the Rocket WorkBench ? > > > > My wish list would be: > > > > 1. Physical Description > > 2. Aerodynamics ( Drag and Stability ) > > Could you explain those two > > > 3. Powerplant > > 4. Environmental Antoine -- Powerplant is the motor / engine Environmental is Launch site, atmospheric, etc. > > The list was for the moment > > * propellant combustion simulation/design > * Grain Design > * Chamber/Injector design > * Nozzle Design > * Trajectory analysis > * Impact Dispersal profiles. > * Basic parachute design > > I'm ready to work on any rocket related project that could help design and understanding of rocket... Cool. All I would add to your list is rocket geometry asd physical properties. You might want to check out program profiler. It is a program than computes static and dynamic stability parameters from a physical description of the rocket. Implemented in awk, it is portable and fairly easily translated to c-code. The program is at ftp://ftp.netcom.com/pub/ko/konrad/rawketry/ The file is profv100.zip There is a howto in profiler.txt. For examples of profiler and dynamic stability calculations, see grad.pro, mi.pro and hjohn.pro. It will run pretty much out of the box on a linux system and there are some dos .bat files and a list of programs to install for a windows pc ( gawk, gnuplot, and ghostscript ). > > I suppose we might want to begin with a data structure > > that describes a rocket. I started working on a similar > > project a few years ago but ran out of time between my > > real job and my work on the AltAcc. > > > > Below is my first stab at a data structure describing a > > rocket. It is nowhere near complete or even correct as > > far as it goes. it is a start. > > > > Input ? > > > > Let's get ready to rumble ! > > > > -- kjh > > Please take a look to the stock I have put in libsimulation on the cvs or ftp > ftp rocketworkbench.sourceforge.net/pub/rocketworkbench > > I have already do a part of this but not in the same manner. My rocket description file use aerodynamic properties: drag coefficient, lift coefficient, cross-spin coefficient, restoring moment coefficient, damping moment coefficient,... These are parameters that profiler calculates from geometric and physical properties of the rocket. Might have a fit here. > All the aerodynamic parameter to describe the rocket attitude. Of course this method implies that we know those value. If we describe a rocket like you would like to do, it could permit the calculation of aerodynamic properties if we are able to simulate the comportmnent of a body in a compressible fluid. Maybe by finite element analysis if someone know how to do... I will take a look at the libraries from the ftp site and get back to you. > > /************************** rocket.h ********************************/ > > > > struct AtmProf /* optional Atmospheric Info for Sims */ > > { > > AtmProf * prev; /* linked list ... pointer to prev element */ > > AtmProf * next; /* linked list ... pointer to next element */ > > double alt; /* altitude of measurement */ > > double press; /* measured barometric pressure */ > > double temp; /* measured temperature */ > > double humidity; /* measured humidity */ > > double rho; /* computed air density */ > > double viscosity; /* computed air viscosity */ > > double dirwind; /* measured wind direction (NSEW) */ > > double velwind; /* measured wind velocity */ > > }; > Humm, interesting. Is it really possible to know those parameter for each point of the atmosphere around the earth... I was involved in a NASA project a few years back and they launched a radiosonde baloon just prior to launching the rockets. Otherwise, these are to a practical degree computable from the ISA or they can be had from several web sites, One that is fun to look at is: http://cirrus.sprl.umich.edu/wxnet/maps.html Look at the Raw/Graphical Sounding Data in the lower right corner, select text and click on a local weather station site. > For the moment, I use a simple formula that compute the density of the atmosphere in function of altitude considering a compressible fluid and variable gravitational acceleration. It is easy to demonstrate from a differential equation. > > density = (Po*M/T)*exp( ((M*G*Mt)/R*T) * (1/(Rt + h) - 1/Rt)) > > Po: ground pressure > M: molar mass of atmosphere > T: temperature > G: universal gravitational constant > Mt: earth mass > R: perfect gaz constant > Rt: radius of the earth > h: altitude > > It give a fairly good approximation for low altitude. Looks familiar. The ISA is also available up into the Thermosphere. > > > struct Site /* Launch Site Environmental Data */ > > { > > double ialt; /* Site Altitude */ > > double bpress; /* Site Barometric Pressure */ > > double temp; /* Site Temperature */ > > double rho0; /* Site Air Density ( computed ) */ > > Should add site position around a planet, it is important to > take care of coriolis acceleration Great Idea ! > > > double rodlen; /* Launch Rod Length */ > > There is not always rod, especially for big rockets > > > double theta; /* Launch Angle */ > Two angles are needed Correct, as is the wind direction and speed at Ground Level. > > double falt; /* Final Altitude for Sim ( crash Alt ;-) */ > If the rocket goes in orbit? Hmmm ... I hadn't gone there ( yet ;-) Another good idea. > > atmos * AtmProf; /* [O] pointer to Atmospheric Profile */ > > }; > > We could also add information about plenets, mass, radius... > > > > struct CD /* optional CD vs Velocity data */ > > { > > CD * next; /* linked list; pointer to previous */ > > CD * prev ; > > double mach; /* mach number */ > > double rnumber; /* computed Reynolds Number */ > > double coff; /* CD at CD.mach */ > > }; > > > > struct Vertex /* Fin Vertices Details */ > > { > > Vertex * prev; /* linked list */ > > Vertex * next; > > double z; > > double r; > > }; > > > > struct Fins /* Fin Geometry Info */ > > { > > int numfin; /* number of fins */ > > double offset; /* offset from leading tip of stage */ > > double thickness; /* max thickness */ > > double farea; /* fin surface area */ > > int shape; /* enumerated fin shape ( Poly, Para, Ellip */ > > int numvert; /* number of vertices */ > > Vertex * vertices; /* [O] optional pointer to Vertex.z, .r */ > > double fdiam; /* diameter at front of fin can */ > > double rdiam; /* diameter at rear of fin can */ > > double span; /* fin span */ > > double root; /* root chord length */ > > double tip; /* tip chord length */ > > double midchord; /* mid chord length */ > > double sweepback ; /* sweepback distance */ > > double parea; /* plan area of fincan */ > > double aspectratio; /* aspect ratio */ > > }; > > > > struct Thrust /* Linked List Thrust Curve Tuples */ > > { > > Thrust * next; > > Thrust * prev; > > double time; > > double thrust; > > }; > > > > struct Motor /* Stolen from RASP ;-) */ > > { > > char * name; /* engine name */ > > char * mfg; /* manufacturer info */ > > double diam; /* engine diameter (millimeters) */ > > double len; /* engine length (millimeters) */ > > double mass; /* initial engine wt. (kilograms) */ > > double promass; /* propellant wt. (kilograms) */ > > double dtime; /* thrust duration (seconds) */ > > Thrust * tcurve; /* thrust curve (Time-sec,Thrust-Newtons) */ > > double i_avg; /* average thrust (newtons) */ > > double i_tot; /* total impulse (newton-seconds) */ > > double i_max; /* peak thrust (newtons) */ > > char * delay; /* ejection delays available (sec) */ > > Motor * next; /* linked list of motors */ > > }; > > > > struct Stage /* stolen from rasp v4.1 -- needs more ! */ > > { > > int nose ; /* nose type on stage */ > > double length; /* length of stage */ > > double diameter; /* max diameter of stage */ > > CD * cd; /* kjh added cd per stage */ > > double totalw; /* launch wt of stage ( w/ motors(s) ) */ > > double dryw; /* dry stage wt ( w/o motor(s) ) */ > > double prowt; /* propellant wt of all motors */ > > Motor * motors; /* pointer to motor structure */ > > double itime; /* Start of motors ( time since LO ) */ > > double etime; /* End of engine burn ( absolute time ) */ > > double dtime; /* When is the Stage dropped from the rest */ > > Thrust * thrust; /* sum of all motors or ->motors.tcurve */ > > Fin * fins; /* finfo for stage */ > > Stage * next; /* next Stage ( From Bottom, Up ) */ > > Stage * prev; /* previous Stage ( just burned out ) */ > > }; > > > > struct Rocket /* What is in a rocket */ > > { > > char * name; > > int nose ; > > double diameter; > > double length ; > > Stage * stages ; > > Site * environ ; > > }; > > > > > > struct NoseCones { > > char * name ; /* Verbose Nose Cone Name */ > > int form ; /* M,C&B Formula to Apply */ > > } > > Noses [ ] = > > { > > "undefined", 1 , > > "ogive", 1 , > > "conic", 1 , > > "elliptic", 2 , > > "parabolic", 2 , > > "blunt", 2 > > } ; > > > > struct FinShapes { > > char * name ; /* Verbose Fin Shape Name */ > > int form ; /* Enum Data */ > > } > > FinShape [ ] = > > { > > "undefined", 0 , > > "polygonal", 1 , > > "elliptical", 2 , > > "parabolic", 3 > > } ; > > > > #define NUMFINTYPE ( sizeof FinShapes / sizeof ( struct FinShape )) > > I will look how those idea could be include in the actual simulator. There is a lot of good idea. If you want to look at that on your own, you can send me patch of the code. I will. While I am thinking abot it, Larry Curcio has done a lot of work in developing a Rocket Workbench. I wonder if I could send him an invitation to the group ? > > Another question, there is somebody who have experiences with finite element analysis and Navier-Stroke equations?? I did some FE analyses a few years ago. I will dust off some old Fortran and c-code and get back. |