Download Le rapport
Transcript
Juin 2000 ! "$%# " (& ' ) Bertrand DENEL Patrick FOURCADE Sous la direction de P. PUISEUX I. Introduction : qu’est-ce qu’un parapente ? ............................................................................. 3 A. Bref historique.............................................................................................................................. 3 B. Schémas et vocabulaire ................................................................................................................ 4 II. Le projet global........................................................................................................................ 6 III. Les programmes Corde et Infierno.......................................................................................... 8 A. Structure de données et concepts utilisés..................................................................................... 8 B. 1. 2. 3. Corde ............................................................................................................................................ 8 But ............................................................................................................................................. 8 La structure d’un fichier en-tête .................................................................................................. 9 Les lois utilisées ....................................................................................................................... 10 a. b. Inter-nervure ............................................................................................................... 10 Rayon de déploiement en envergure............................................................................ 10 4. 5. La structure d’un fichier .in....................................................................................................... 11 Syntaxe d’appel ........................................................................................................................ 12 C. 1. 2. 3. Le programme Infierno ............................................................................................................. 13 But ........................................................................................................................................... 13 Méthode de déploiement ........................................................................................................... 13 Les formats de sortie et leur utilisation...................................................................................... 15 a. b. Le format CMARC........................................................................................................ 15 Les formats de visualisation pour le parapente ............................................................ 20 i. Le format GNUPLOT ......................................................................................................... 20 ii. Le format DXF ................................................................................................................. 21 iii. Le format PLOTMTV ..................................................................................................... 21 iv. Le format MATLAB ........................................................................................................ 22 c. 4. Les informations complémentaires .............................................................................. 25 i. La sortie CELLULE........................................................................................................... 25 ii. La sortie POINT_R ....................................................................................................... 27 iii. La sortie SUSPENTE .................................................................................................... 29 La syntaxe d’appel.................................................................................................................... 30 IV. Utilisations possibles avec CMARC et Hippolyte................................................................... 31 V. Conclusion............................................................................................................................. 35 Annexes........................................................................................................................................ 36 a. Le programme de visualisation MATLAB .................................................................. 36 b. Syntaxe d’appel de mtb2obj_full................................................................................. 37 Bibliographie et sites WEB........................................................................................................... 38 2 " " ! ! # ! " ! # " # ! # # " " # ! A. BR EF HI S T OR I QUE Le parapente est né dans les années 70, dans la tête puis dans les jambes de deux parachutistes adeptes de l’atterrissage de précision, Jean -Claude Bétemps et Gérard Bosson. A la recherche d’une m éthode d’entraînement bon marché, ils sont les premiers à avoir eu l’idée d’utiliser leurs parachutes pour décoller d’une pente suffisante. Premier décollage sur les pentes du Pertuiset Depuis le Pertuiset à Mieussy, lieu des premières expérimentations, le parapente va rapidement envahir la planète entière et conquérir les sommets les plus prestigieux : le Mont Blanc, l’Aconcagua (plus haut sommet du continent Américain , presque 7000 m), le Gasherbrum et l’Everest (sommets himalayens dépassant les 8000 m) pour ne citer qu’eux. 11 juillet 1985, Pierre Gevaux décolle du Gasherbrum II Il faut dire que le parapente est à ce jour le sport aérien le plus accessible, vu sa facilité d’apprentissage et la simplicité du matériel utilisé. Le parapente est en effet un aéronef de quelques kilogrammes qui se plie au fond d’un sac à dos et qui décolle en quelques mètres sur n’importe quel petit bout de pente. Cependant, il ne faut pas oublier que derrière cette facilité apparente se cachent des problèmes bien plus complexes liés à l’aérologie, la météorologie et la mécanique des fluides. Aussi il n' est pas étonnant que quelques adeptes de ce nouveau sport aient rapidement essayé de mettre le vol en équations afin d' améliorer les ailes et de prolonger la durée desvols. Les constructeurs ont alors commencé à comprendre la mécanique du vol et ont fait évoluer leurs voiles vers plus de performances. 3 B. S CHEMAS ET VOCABUL AI R E Afin de mieux comprendre ce qui suit, il paraît indispensable d’introduire dès à présent un cer tain nombre de notions et de termes techniques relatifs au parapente. Comme on le voit sur le schéma, un parapente est constitué d’une voile et d’un cône de suspentage. 4 La voile Les deux pièces principales de la voile sont l'extrados - la partie supérieure du profil - et l'intrados - la partie inférieure. Elles sont reliées entre elles par des pièces de tissu verticales qui donnent à la voile la forme de son profil : ce sont les nervures. Une partie de la voile délimitée par deux nervures, l' in trados et l' extrados s' appelle un caisson ou cellule. L' avant de la voile se nomme lebord d'attaque. L' arrière de la voile se nomme lebord de fuite. De chaque côté de l' aile, on trouve lesstabilisateurs chargés de réduire la traînée. Au bord d' attaq ue sont placées des ouvertures permettant aux caissons de se gonfler et de former le profil de la voile l' autorisant à s' envoler. La distance entre le bord d’attaque et le bord de fuite est appelée corde. Elle n’est pas constante sur toutes les nervures, entre le centre et les bouts d’aile. L’envergure est la distance maximale entre le centre et les bouts d’aile. Il y a en fait plusieurs façons de mesurer l' envergure : à plat, voile étalée sur le sol (on peut d' ailleurs de cette manière la mesurer soit à l' extrados, soit à l' intrados, soit à la corde du profil) ou en projeté, avec la voile gonflée normalement. Par ailleurs, les cordes des différentes nervures ne sont pas dans un même plan. Chacune d’elle possède un degré de rotation autour du point de référence. L’angle de cette rotation est appelé vrillage. Enfin, les nervures ne sont pas alignées entre elles : seuls les points de référence le sont. Ces points sont situés à un pourcentage fixe de corde nommé insertion. Par exemple, une insertion de 0% aligne tous les bords d’attaque alors que pour 100% ce sont les bords de fuite qui sont alignés. Le cône de suspentage Comme son nom l’indique, il regroupe l’ensemble des lignes de suspentage ou suspentes qui relie la voile au pilote. Les suspentes sont regroupées au niveau de deux maillons séparés d’une distance nommée écart. 5 Aujourd' hui, la simulation numérique de phénomènes physiques a pris une place prépondérante dans la plupart des grandes entreprises des secteurs primaire et secondaire (aéronautique, pétrole, automobile, chimie, travaux publics...) où les décisions importantes sont de plus en plus subordonnées à des résultats de modélisation. La conception de parapentes ne déroge pas à cette règle. Ainsi, notre projet de maîtrise, proposé et encadré par P. Puiseux, s’insère dans une chaîne visant à simuler numériquement un parapente en vol. Le programme de simulation 3D existe déjà : il s’agit d’une soufflerie numérique développée par la NASA et nommée CMARC. De plus, une interface post-soufflerie facilitant l’interprétation des résultats obtenus a été développée sous le nom d’Hipollyte par Jérôme Sarthe (DESS Université de Savoie 1999). Notre travail consiste donc à générer le maillage d’un parapente complet à partir d’une description géométrique plus ou moins détaillée. Le maillage ainsi obtenu doit répondre à deux critères : être utilisable par la soufflerie numérique CMARC permettre d’obtenir, sans trop d’efforts, une représentation graphique du parapente bâti. Pour résoudre ce problème, nous avons développé, à partir d’un code Pascal et de quelques objets C++ existants, deux programmes : Corde qui génère une description détaillée du parapente à partir de caractéristiques géométriques générales de celui-ci. Infierno qui réalise le maillage du parapente à partir du fichier généré par Corde et qui propose des sorties au format interprétable tant par CMARC que par des « viewers » 3D. Ces programmes ont été réalisés en C++ (sous Linux) afin de bénéficier des avantages d’u n langage orienté objet. Nous pensons en particulier à la possibilité de faire facilement évoluer les objets vers d’autres plus complets et plus réalistes. 6 U tilisate ur F ich ier .en t G éo m étrie g én éra le C orde F ich ier .in G éo m étrie d éta illée Infie rno In fo rm atio n s co m p lém en taires F ich ier .cm i S oufflerie Nu m ériq ue C M AR C R ésu ltats sim u latio n vo ilu re A u tres d o n n ées H ippo lyte R ésu ltats sim u latio n éq u ilib rée Modélisation numérique d’un parapente 7 F ich iers p o u r view ers 2 D et 3 D A. S T R UCT UR E DE DONNEES ET CONCE P T S UT I L I S E S La structure de données utilisée dans la première version du programme en Pascal Objet nous a semblée assez naturelle et cohérente : nous nous en sommes donc servi comme base. Nous avons cependant été amenés à compléter ces objets (notamment la classe Point3D), à modifier certaines de leurs méthodes comme celle du placement des nervures qui est inédite, et à en développer de nouveaux comme la classe Cellule afin de modéliser plus précisément le parapente. Ainsi, la structure que nous avons retenue est la suivante : On considère qu’un parapente est un ensemble de nervures et de cellules Une nervure, en plus de ses caractéristiques propres, est associée à un certain profil géométrique. Une cellule est quant à elle parfaitement définie à partir des deux nervures qui la délimitent. Un profil est un polygone « lissé » de façon à améliorer ses caractéristiques aérodynamiques. Un polygone est un ensemble de points 2D. Chaque objet utilisé par Infierno a été développé dans le souci d’être facilement réutilisé et complété lors de développements ultérieurs. Pour de plus amples informations sur les données, nous avons généré une documentation hypertexte détaillée de Infierno à l’aide de l’utilitaire DOXYGEN. On y trouvera le nécessaire pour comprendre et dériver Infierno. B. COR DE Ce programme sert d’interface entre l’utilisateur et Infierno. En effet, il permet à l’utilisateur de créer un fichier .in à partir de quelques caractéristiques techniques du parapente souhaité. Le fichier .in généré pourra être modifié à la main par l’utilisateur, notamment pour certains paramètres automatisés comme décalBA_. Deux modes de fonctionnement sont possibles avec ce programme : le premier que nous nommerons « light » et le second « détaillé ». En effet, le premier est destiné à un appel dit « inline » : l’ensemble des paramètres qu’entrerait l’utilisateur au clavier est contenu dans un fichier en-tête (extension ent). Quant au second mode de fonctionnement, il demande à l’utilisateur de rentrer successivement chacun de ces paramètres. A la fin de cette saisie, il est proposé de sauver la configuration dans un fichier en-tête, de façon à accélérer la prochaine saisie. 8 Comme énoncé ci-dessus, le fichier en-tête regroupe diverses caractéristiques du parapente. Ce paragraphe détaille donc la structure des fichiers .ent et le manuel d’utilisation de Corde. Dans l’ordre de saisie, ces paramètres sont : Echelle de l’étude Demi-envergure (en mm) Corde en centre d’aile (en mm) Nombre de nervures par demi-aile. Un nombre maximum est fixé dans constantes.h. Au-delà de celui-ci, le programme stoppe. Coefficient de la progression géométrique inter-nervure (cf III.B.3.a page 10) Demi-écart (en mm) Suspentage (en mm) : il s’agit, en fait, de la distance entre l’origine et le point de référence de la nervure centrale. Il y a donc une légère différence avec la définition théorique. Coefficient de la progression géométrique du rayon de courbure (cf III.B.3.b page10) Insertion (en % de corde) Ouverture avant (en % de corde) Ouverture arrière (en % de corde) Vrillage min et max Nombre de rangs de suspentes par nervure Emplacement des points d’ancrage de ces suspentes (en % corde) Exemple de fichier .ent : #Echelle_de_l'etude 0.5 #Demi_envergure_(en_mm) 6000 #Corde_en_centre_d'aile_(en_mm) 3000 #Nombre_de_nervures_par_demi-aile 20 #Coef_prog_geometrique_distance_inter_nervure 0.99 #Demi-ecart_(en_mm) 200 #Suspentage_(en_mm) 7500 #Coef_prog_geometrique_rayon 0.97 #Insertion_(en_%_de_corde) 50 #Ouverture_avant_(en_%_de_corde) 4 #Ouverture_arriere_(en_%_de_corde) 12 #Vrillage_Min,_Max 0 4 #Nombre_de_rangs_de_suspentes 4 #Emplacement 4 20 35 70 9 a. Inter-nervure Il paraît naturel que les nervures ne soient pas réparties uniformément : les nervures en bout d’aile sont plus resserrées que les nervures centrales. C’est sur cette constatation que nous avons arbitrairement choisi des écarts inter-nervure en progression géométrique. La première nervure est placée à la verticale de l’origine et la dernière à une distance de demi_env_ de celle-ci. Connaissant le nombre de nervures intermédiaires, il vient la loi suivante : n −1 1 − reg n demi_env_ = ∆xi = 0 + reg .∆x1 + reg 2 .∆x1 + ... + reg n −1 .∆x1 = ∆x1 1 + reg + ... + reg n −1 = ∆x1 1 − reg i =0 On a donc : 1 − reg ∆x1 = demi_env_ . où ∆x1 est la distance entre les deux premières nervures. 1 − reg n Les largeurs inter-nervure sont alors données par la loi : ( ∑ ) largeurk = reg k −1 .∆x1 où largeurk est la distance entre nervurek-1 et nervurek reg.∆x1 ∆x1 … b. Rayon de déploiement en envergure Pour la nervure i, le rayon est donné par : i rayon_ = (reg 2 ) . suspentage_ Pour une description plus détaillée de l’utilisation de ce rayon, se référer à III.C.2 page 13. 10 Le fichier .in suivant a été généré à partir du fichier .ent du paragraphe III.B.2 : #Fichier_.IN_pour_programme_INFIERNO #=================================== #Demi_envergure_(en_mm) 3000 #Corde_en_centre_d'aile_(en_mm) 1500 #Nombre_de_nervures_par_demi-aile 20 #Demi-ecart_(en_mm) 100 #Suspentage_(en_mm) 3750 #Insertion_(en_%_de_corde) 50 #Ouverture_avant_(en_%_de_corde) 4 #Ouverture_arriere_(en_%_de_corde) 12 #Vrillage_Min,_Max 0 4 #Nombre_de_rangs_de_suspentes 4 #Emplacement 4 20 35 70 #Nervure_Nø0 #Fichier,_Corde,_Largeur,_DecalBA,_Vrillage,_OuvEx.x,_OuvIn.x,_Rayon milieu.lis 1500 0 0 0 60 180 3750 #Nombre_de_rangs_de_susp_et_valeurs 4 60 300 525 1050 #Nervure_Nø1 #Fichier,_Corde,_Largeur,_DecalBA,_Vrillage,_OuvEx.x,_OuvIn.x,_Rayon palas.lis 1498.12 164.751 0 0.210526 59.925 179.775 #Nombre_de_rangs_de_susp_et_valeurs 4 59.925 299.625 524.343 1048.69 #Nervure_Nø2 #Fichier,_Corde,_Largeur,_DecalBA,_Vrillage,_OuvEx.x,_OuvIn.x,_Rayon milieu.lis 1492.48 163.103 0 0.421053 59.6992 179.098 #Nombre_de_rangs_de_susp_et_valeurs 4 59.6992 298.496 522.368 1044.74 3637.5 3528.38 … On remarque que l’en -tête reprend dans l’ensemble les informations du fichier .ent. Il manque cependant le facteur d’échelle qui a été appliqué aux données. Suit alors une description des paramètres propres à chaque nervure. On constate par exemple que les profils utilisés peuvent varier selon les nervures. L’utilisateur est alors libre de modifier à la main ces paramètres. 11 Lors de son exécution, Corde propose de choisir entre un mode mono-profil et un mode poly-profil. Si l’utilisateur choisit le mode mono -profil, il donne le nom du profil utilisé pour toutes les nervures. Pour l’autre mode, il doit entrer pour cha que nervure le profil correspondant. La syntaxe générale d’appel du programme Corde est de la forme : Corde [-i fic_ent] -o fic_out [-p profil] Détail des options : -i Fichier ENTETE Cette option permet d’accélérer la saisie des paramètres de Corde : les caractéristiques générales du parapente sont contenues dans ce fichier. -o Fichier ENTREE Cette option est indispensable et indique à Corde le nom de la description détaillée du parapente à générer. -p Fichier PROFIL utilisé Cette option active automatiquement le mode mono-profil ; toutes les nervures auront le même profil. En cas de problèmes, une aide est proposée par la commande : Corde –h Par ailleurs, les extensions des fichiers sont indiquées dans le fichier constantes.h. Ainsi, les extensions actuelles sont : Informations Extensions ENTETE .ent ENTREE .in PROFIL .lis 12 C. L E PR OGR AMME I NFI ER NO Ce programme occupe une place essentielle dans la chaîne précédemment présentée. En effet, à partir de la description nervure par nervure d’un demi -parapente, il en génère un maillage complet. Ce maillage permet ensuite de plonger le demi-parapente obtenu dans une soufflerie numérique ou bien de le visualiser sous différents formats. En plus de ce maillage, Infierno permet d’obtenir des informations sur les cellules du parapente ainsi que sur ses points caractéristiques. Afin d’obtenir le maillage d’un parapente qui soit le plus réaliste possible, on monte le parapente nervure par nervure. On choisit d’orienter le repère comme indiqué sur le schéma suivant : BF x y z BA Vue de dessus Pour monter le parapente, on applique le schéma suivant : On commence par placer le maillon au point de coordonnées (0, demi _ ecart _, 0) . On superpose ensuite les points de référence de toutes les nervures à l’origine . On élève alors verticalement les nervures de façon à placer les points de référence en (0, 0, suspentage _ ). On applique le vrillage à toutes les nervures. Cela consiste à calculer l’image de chaque nervure par la rotation ayant pour centre le po int de référence, d’axe (Oy ) et d’angle celui indiqué par la variable vrillage_. z y x Point de référence On déploie ensuite les nervures en envergure, c’est -à-dire que l’on applique aux nervures des rotations successives d’a xe (Ox ) mais d’angle et de centre à définir. La nervure 0 n’est pas déployée car il s' agit de la nervure centrale par convention. 13 Déployons la première nervure. Le centre de la rotation est l’origine du repère. Afin de déterminer l’angle de la rotation, on commence par placer le point de référence de la nervure 1 : il appartient aux cercles C (ref 0 , r1 ) et C (Z1 , R0 ) . On a deux possibilités : on choisit le point d’intersection qui nous permet de dé ployer le parapente dans le sens qui nous intéresse. Le calcul des coordonnées cartésiennes de cette intersection est réalisé par la méthode Intersection de la classe Parapente. Cette fonction utilise les formules obtenues symboliquement à l’aide de MAPLE. Une fois le triangle (Z1 , ref 0 , ref1 ) mis en place, on calcule à l’aide de la formule d’Al Kashi l’angle α1 de la rotation : d(ref 0 , ref1 )2 − d (ref 0 , Z1 )2 − d(ref1 , Z1 )2 α = cos 1 2 × d(ref 0 , Z1 )× d(ref1 , Z1 ) Nervure 0 Nervure 1 Nervure 2 ref 0 ref1 r2 r1 ref 2 α2 α1 Z2 z x y Z1 Déployons la deuxième nervure. On a besoin, comme précédemment, de déterminer le centre et l’angle de la rotation. On note Z 2 le centre de la rotation : ce point appartient à la droite (Z1 , ref1 ) et sa distance par rapport à ref1 est donnée par la valeur du champ rayon_ de la nervure 1. On calcule l’angle α 2 de la même manière que α1 , c’est -à-dire en calculant ref 2 comme point d’intersection des cercles C (ref1 , r 2 ) et C (Z 2 , R1 ), puis en utilisant la formule d’Al Kashi. Il en va de même pour le déploiement des nervures restantes. On applique enfin le décalage des bords d’attaque qui consiste en une translatio n de chaque nervure par le vecteur de composantes (decalBA _, 0, 0 ) où decalBA_ est propre à chaque nervure. 14 a. Le format CMARC Infierno peut générer un fichier de sortie au format CMARC qui est alors utilisable par la soufflerie numérique CMARC développée par Aerologic. Ces fichiers sont constitués d’un en -tête initialisant un certain nombre de paramètres, d’une description des nervures (les sections) et se terminent par d’autres paramètres indiquant not amment les lignes de courant. Pour plus d’informations, on pourra se reporter à la documentation disponible sur le site WEB d’Aerologic. L’en-tête De manière générale, il est de la forme : Application Simul3D : Fichier d'entree pour CMARC &BINP2 LSTINP=2, LSTOUT=1, LSTFRQ=0, LENRUN=0, LPLTYP=1, &END &BINP3 LSTGEO=2, LSTNAB=0, LSTWAK=0, LSTCPV=0, &END &BINP4 MAXIT=250, SOLRES=0.0005, &END &BINP5 NTSTPS=3, DTSTEP=30, &END &BINP6 RSYM=0.0, RGPR=0.0, RFF=5.0, RCORES=0.050, RCOREW=0.050,&END &BINP7 VINF=10, VSOUND=300, &END &BINP8 ALDEG=0, YAWDEG=0, PHIDOT=0, THEDOT=0, PSIDOT=0, &END &BINP8A PHIMAX=0.0, THEMAX=0.0, PSIMAX=0.0, WRX=0.0, WRY=0.0, WRZ=0.0, &END &BINP8B DXMAX=0.0, DYMAX=0.0, DZMAX=0.0, WTX=0.0, WTY=0.0, WTZ=0.000, &END &BINP9 CBAR=3, SREF=28.7485, SSPAN=6, RMPX=-1.5, RMPY=0, RMPZ=7.6008, &END &BINP10 NORSET=0, NBCHGE=0, NCZONE=0, NCZPCH=0, CZDUB=0.0, VREF=0.0, &END &BINP11 NORPCH=0, NORF=0, NORL=0, NOCF=0, NOCL=0, VNORM=0.0, &END &BINP12 KPAN=0, KSIDE=0, NEWNAB=0, NEWSID=0, &END &BINP13 NBLIT = 1, &END &ASEM1 ASEMX= 0.0000, ASEMY= 0.0000, ASEMZ= 0.0000, ASCAL= 1.0000, ATHET= 0.0, NODEA= 5, &END &COMP1 COMPX= 0.0000, COMPY= 0.0000, COMPZ= 0.0000, CSCAL= 1.0000, CTHET= 0.0, NODEC= 5, &END Dans cet en-tête, seuls les champs de BINP9 sont spécifiques à chaque parapente, les autres champs sont prédéfinis et communs à tous les parapentes. Valeurs et descriptions des paramètres retenus pour configurer la soufflerie numérique : BINP2 BINP3 : Output instructions 2 LSTINP 1 LSTOUT 0 LSTFREQ 0 LENRUN 1 LPLTYP Print all input data Set additional output data print options below Detailed panel data on last step, other data at each step Complete run scope Formatted ASCII plot file : Print options LSTGEO LSTNAB LSTWAK LSTCPV 2 0 0 0 Print all panel corners and unit normal vectors Panel neighbor information printout is off Wake data printout options is off Panel corner point analysis printout is off 15 BINP4 : Solver parameters MAXIT 250 Limit on number of solver iterations SOLRES 0.005 Convergence criteria for the matrix solver BINP5 : Time step parameters NTSTPS 3 DTSTEP 30 Number of wake time-steps Size of the time-step (seconds) BINP6 : Symetry and computation parameters RSYM 0.0 Symetrical case about Y=0 RGPR 0.0 No ground plane modeled at Z=0 RFF 5.0 Far-field-factor RCORES 0.05 Surface panel core radius RCOREW 0.05 Wake panel core radius BINP7 : Free stream conditions VINF 10 Dimensional free stream velocity VSOUND 300 Dimensional speed of sound BINP8 : Angular position and rotation rates ALDEG 0 Angle of attack in degrees YAWDEG 0 Yaw angle in degrees PHIDOT THEDOT PSIDOT 0 Rotation rate about global X, Y and Z axis (deg/sec) BINP8A : Rotational oscillatory motion amplitudes and frequencies 0.0 Amplitude of oscil. rot. about X, Y and Z axis 0.0 Frequency of oscil. rot. about X, Y and Z axis PHIMAX THEMAX PSIMAX WRX WRY WRZ BINP8B : Translational oscillatory motion aplitudes and frequencies 0.0 Amp. of oscil. translation about X, Y and Z axis 0.0 Freq. of oscil. translation about X, Y and Z axis DXMAX DYMAX DZMAX WTX WTY WTZ BINP9 : Reference dimensions CBAR SREF SSPAN RMPX RMPY RMPZ Reference chord used for normalizuing pitching moment Reference area for force and moment coefficient Semispan used for normalizing rolling and yawing moments Coordinates of the moment reference point Ainsi pour chaque parapente, on a : CBAR Valeur de la corde de la nervure centrale SREF Surface à plat du parapente ( 2 × demi _ surface _ ) SSPAN Demi-envergure du parapente (demi_env_) RPM Coordonnées du BA de la nervure centrale BINP10 : Special options 0 NORSET NBCHGE NCZONE NCZPCH 0 0 0 CZDUB VREF 0.0 0.0 The number of groups of panels on which nonzero normal velocities are to presc ribed The number of panel neighbor information changes that are to be made Regular external flow problem Patch number of the patch on which the value is specified for internal flow modeling The value that is set on panel NCZPCH for internal flow modeling VINF is used to compute Cp 16 BINP11 : Normal velocity specification 0 Patch number of patch containing the group of panels to receive a prescribed normal velocity NORF 0 All rows on this patch NOCF 0 All columns on the patch VNORM 0.0 Specified normal velocity for the set of panels identified above NORPCH BINP12 : Panel neighbor information change 0 Panel number 0 Side of the panel requiring a modified neighbor 0 New neighbor 0 Side of that neighbor adjacent to KSIDE of KSPAN KPAN KSIDE NEWNAB NEWSID BINP13 : Boundary layer calculation control 1 Boundery layer computations performed on specified onbody streamlines NBLIT ASEM1 : Assembly coordinate system information ASEMX ASEMY ASEMZ (0, 0, 0 ) Origin of assembly coordinate system ASCAL 1.0 Assembly scale ATHET 0 Rotation angle of the assembly coordinate system about the rotation axis NODEA 5 No other coordinate system COMP1 : Component coordinate system information COMPX COMPY COMPZ (0, 0, 0 ) Origin of component coordinate system CSCAL 1.0 Component scale CTHET 0 Rotation angle of the component coordinate system about the rotation axis NODEC 5 No other coordinate system Le corps du fichier On rassemble dans PATCH1 les nervures constituant le parapente. &PATCH1 IREV=0, IDPAT=1, MAKE=0, KCOMP=1, KASS=1, IPATSYM=0, IPATCOP=0, &END Voile Options retenues : IREV IDPAT MAKE KCOMP KASS IPATSYM IPATCOP 0 1 0 1 1 0 0 Patch not reversed Wing type patch. Section force and moment data printed out Normal patch input Number of component coordinate system Number of assembly coordinate system No symetrical patch is generated On décrit alors les nervures une par une : &SECT1 STX=0.0, STY=0.0, STZ=0.0, SCALE=1.0, ALF=0.0, THETA=0.0, INMODE=4, TNODS=0, TNPS=0, TINTS=0, &END 1.5 0 7.6008 1.494 0 7.60119 ... 1.494 0 7.60181 1.5 0 7.6008 &BPNODE TNODE=3, TNPC=0, TINTC=0, &END 17 &SECT1 STX=0.0, STY=0.0, STZ=0.0, SCALE=1.0, ALF=0.0, THETA=0.0, INMODE=4, TNODS=0, TNPS=0, TINTS=0, &END 1.49848 0.333603 7.58784 1.49249 0.333621 7.58825 ... Toutes les nervures ont en commun les champs suivants : SECT1 : Section coordinate system information STX STY STZ (0, 0, 0 ) Origin of section coordinate system SCALE 1.0 Section scale ALF 0.0 Rotation angle of the section coordinate system about its Y axis THETA 0.0 Rotation angle of the section coordinate system about its Z axis INMODE 4 Input X, Y, Z coordinates to define TNODS 0 First or intermediate section of patch TNPS 0 No panel generated between this break point and the previous one TINTS 0 Full cosine spacing of panels between this break point and the previous one BPNODE : Break point input 3 0 0 TNODE TNPC TINTC Final break point. End of this section definition No panel generated between this break point and the previous one Full cosine spacing of panels between this break point and the previous one Seul le champ TNODS varie pour la dernière nervure : il vaut 3 et non 0, ce qui signifie que l’on termine la description de PATCH1. La patch se termine par : &PATCH1 IREV=0, IDPAT=1, MAKE=1, KCOMP=1, KASS=2, IPATSYM=0, IPATCOP=0, &END La valeur de MAKE implique l’existence de PATCH2. La fin du fichier On définit le PATCH2 qui correspond aux stabilos. &PATCH2 ITYP=1, TNODS=5, TNPS=0, TINTS=0, ..Stabilo &END Options retenues : ITYP TNODS TNPS TINTS 1 5 0 0 Flat tip patch Last patch in the surface geometry input No panel generated across the open tip Full cosine spacing of panels across the open tip Suit alors la description du bord de fuite : &WAKE1 IDWAK=1, Bord de fuite IFLXW=0, ITRFTZ=1, INTRW=1, &END avec : IDWAK IFLXW ITRFTZ INTRW 1 0 1 1 Regular wake Flexible wake. Wake will be time-stepped with the local velocity Wake separation line used for Trefftz plane computation of induce drag Intersection routine turned on 18 Puis les informations sur les séparations des WAKE : &WAKE2 KWPACH=1, KWSIDE=2, KWLINE=0, KWPAN2=0, NODEW=0, INITIAL=0, &WAKE2 KWPACH=2, KWSIDE=1, KWLINE=0, KWPAN2=0, NODEW=5, INITIAL=0, KWPAN1=0, &END KWPAN1=0, &END avec : KWPACH KWSIDE KWLINE KWPAN1 KWPAN2 NODEW INITIAL 0 0 0 0 Surface geometry patch number that this wake separates from Side of the patch which is parallel to separation line Separation is from patch edge Defaults to the first panel on row or column Defaults to the last panel on row or column Indicates the next WAKE2 No initial wake geometry to be specified On finit par les lignes de courant que l’on place arbitrairement toutes les trois nervures (à chaque fois, une ligne de courant sur l’intrados et une sur l’extrados) : &ONSTRM NONSL =12, KPSL = 20,60,260,300,500,540,740,780,980,1020,1220,1260 &BLPARAM RN=2000000, VISC=0.000016, NSLBL=1,2,3,4,5,6,7,8,9,10,11,12 &END &END Les valeurs des champs suivants varient selon chaque parapente : ONSTRM : NONSL Number of on-body streamlines KPSL Surface panel number on wich each streamline starts KWLINE 0 Separation is from patch edge KWPAN1 0 Defaults to the first panel on row or column KWPAN2 0 Defaults to the last panel on row or column NODEW Indicates the next WAKE2 INITIAL 0 No initial wake geometry to be specified BLPARAM : Namelist for boundary layer parameters (needed NBLIT=1 on &BINP13) RN 2000000 Reynolds number VISC 0.000016 Dimensional kinematic viscosity NSLBL Streamline numbers of streamlines on which boundary layer to be performed On indique enfin que l’on ne considère pas de « off-body velocity scan input section » : &VS1 &SLIN1 NVOLR= 0, NSTLIN=0, NVOLC= 0, &END &END 19 calculations are b. Les formats de visualisation pour le parapente Afin d’avoir une idée de la forme du parapente que l’on a bâti, différents formats d’affichage sont prévus. GGNNUUPPLLOOTT Comme son nom l’indique, il génère un fichier interprétable par le logiciel GNUPLOT. Sa structure est assez naturelle : #Parapente au format GNUPLOT #Caracteristiques de la nervure #-----------------------------#Fichier de points 2D : milieu.lis #Nb de points : 80 #Corde : 3000 #Largeur : 0 #DecalBA : 0 #Vrillage : 0 #Rayon : 7500 #OuvEx : 120 #OuvIn : 360 #Points 3D de la nervure : 1500 0 7600.8 1494 0 7601.19 1482 0 7602.3 1458 0 7603.95 1428 0 7605.81 1386 0 7607.55 1338 0 7608.78 1278 0 7609.17 1215 0 7608.33 1140 0 7606.08 1062 0 7602.26 ... Ainsi, on rappelle les caractéristiques essentielles de chaque nervure puis on indique les coordonnées 3D des points constituant son contour. Ces points sont listés en partant du BF, puis en suivant l’intrados pour atteindre le BA et pour finir en suivant l’extrados pour revenir au BF. Pour chaque nervure, le BF est donc répété deux fois. L’inconvénient majeur de cette interface est l’absence de possibilité de rotation de la figure obtenue. Demi-parapente visualisé à l’aide de GNUPLOT 20 DDXXFF Ce format de sortie génère un fichier interprétable par AUTOCAD qui est un standard parmi les logiciels de CAO. Le fichier est créé en faisant appel à GNUPLOT et en utilisant le terminal de sortie DXF. On a donc besoin d’avoir en entrée un parapente au format GNUPLOT : si celui n’existe pas encore, on le crée automatiquement. PPLLOOTTMMTTVV Il s’agit de créer un fichier interprétable par le viewer PLOTMTV développé par Kenny K.H Toh. Sa structure est analogue à celle d’un fichier au format GNUPLOT : #Parapente au format PLOTMTV $ DATA=CURVE3D % axisscale=False #Caracteristiques de la nervure #-----------------------------#Fichier de points 2D : milieu.lis #Nb de points : 80 #Corde : 3000 #Largeur : 0 #DecalBA : 0 #Vrillage : 0 #Rayon : 7500 #OuvEx : 120 #OuvIn : 360 #Points 3D de la nervure : 1500 0 7600.8 1494 0 7601.19 1482 0 7602.3 1458 0 7603.95 1428 0 7605.81 1386 0 7607.55 ... La seule différence réside dans l’en -tête du fichier où l’on indique que l’on fournit des données en 3D et que l’on souhaite avoir un repère orthonormé. Cette interface présente l’énorme avantage de pouvoir faire tourner dans toutes les directions le graphe tracé. Cependant, on obtient une figure filaire et non pas un volume : Vue de trois quart 21 On peut quand même voir l’influence du rayon utilisé pour le déploiement, c’es t-à-dire le paramètre qui sert à arquer plus ou moins le parapente : Vue de face MMAATTLLAABB Ce format a été développé pour permettre l’affichage du parapente bâti grâce à l’interface graphique de MATLAB. Il permet de représenter de véritables volumes et de générer des fichiers au format VRML sans trop de complications. Cette sortie présente cependant deux inconvénients : elle n’est utilisable que lorsqu’on travaille sous Windows et elle nécessite en plus un programme pour interpréter le fichier contenant le maillage du parapente. Format d’un tel fichier : 20 81 0 469.43 4929.69 5084.01 467.569 4929.9 5084.15 463.855 4930.41 5084.47 456.416 4931.29 5085.02 447.112 4932.34 5085.68 434.067 4933.57 5086.46 419.142 4934.78 5087.22 400.461 4935.99 5087.98 380.819 4936.93 5088.57 357.408 4937.72 5089.06 ... La première ligne indique le nombre de nervures formant le parapente ainsi que le nombre de points par nervure. Suivent alors les coordonnées de tous les points du maillage en partant de l’extrém ité de l’aile pour rejoindre la nervure centrale. Ce format de fichier est interprété par le programme MATLAB nommé afentier qui génère automatiquement un fichier VRML. Nous avons également créé, à titre d’exemple, un programme nommé mtb2mtb_full qui effectue la symétrie de la demi-aile, créant ainsi le parapente complet. 22 Parapente complet créé avec MATLAB Lors de nos recherches sur le WEB, nous avons trouvé un applet Java permettant de visualiser des fichiers WAVEFRONT .obj mais aussi et surtout de les faire tourner facilement à la souris. De plus, le fait que ce soit un applet Java permet un transport vers des plates-formes autres que Linux. Pour utiliser cet applet, nous avons créé un programme mtb2obj_full qui convertit un fichier au format MATLAB en un fichier au format Wavefront. Tout comme mtb2mtb_full, ce programme génère le parapente complet. On décrit tout d’abord les sommets du maillage, dits « vertex » : v 469.43 4929.69 5084.01 v 467.569 4929.9 5084.15 v 463.855 4930.41 5084.47 v 456.416 4931.29 5085.02 ... Dans la suite du fichier, la description des faces et des lignes se sert des numéros des vertex dans l’ordre où ils ont été énumérés. On décrit ensuite les faces, c’est -à-dire les nervures : f 1 2 3 4 f 15 16 17 ... 5 6 7 18... 8 9 10 11 12 13 Enfin les lignes intermédiaires : l 21 l 22 ... 102 103 183 184 264 265 345 346 426 427 507 508 23 588... 589... 14... Parapente complet visualisé avec l’applet Voir en annexe les syntaxes d’appel de afentier, mtb2mtb_full et mtb2obj_full. 24 c. Les informations complémentaires CCEELLLLUULLEE Cette sortie rassemble dans un fichier les informations calculées pour chaque cellule qui est l’espace délimité par deux nervures consécutives. Pour fixer les idées, voici un extrait d’un tel fichier : #Cellule 1 Corde (en m) Largeur (en m) Surface (en m^2) Surface Mouillee (en m^2) Volume (en dm^3) Rayon de bord d'attaque Bord d'attaque Bord de fuite = = = = = = = = 2.9906 0.330807 0.989168 2.05982 280.039 1.49231 -1494.72 ; 499.431 ; 7590.4 1495.83 ; 498.217 ; 7573.97 Sauf indication contraire, on considère dans ce qui suit la cellule formée par les nervures i et i + 1 . Pour cette cellule, on calcule les éléments caractéristiques suivants : La corde Il s’agit de la corde moyenne de la cellule : corde_cellule_ = corde i + corde i +1 2 La largeur Il s’agit de la largeur moyenne de la cellule obtenue en utilisant la largeur au niveau des BA et celle au niveau des BF : d (BAi , BAi +1 ) + d (BFi , BFi +1 ) largeur_cellule_ = 2 La surface Il s’agit de la surface à plat de la cellule, c’est -à-dire de la surface entre les cordes des nervures attenantes. Elle est calculée en sommant la surface des deux triangles : surface_cellule_ = surface(BAi , BAi +1 , BFi ) + surface(BAi +1 , BFi +1 , BFi ) La surface mouillée On appelle ainsi la surface extérieure de la cellule. Pour la calculer, on somme les surfaces des triangles formés par les points des contours des deux nervures : surface_mouillée_ = n −1 ∑ [surface(ner ( j ), ner ( j + 1), ner ( j + 1)) + surface(ner ( j ), ner ( j ), ner ( j + 1))] i i +1 i j =0 i i +1 i +1 Le volume Comme son nom l’indique, il s’agit du volume de la cellule. Pour ne pas alourdir les notations, on considère que les nervures définissant la cellule sont les nervures 1 et 2. Pour calculer le volume de cette cellule, on la découpe en tranches définies par les points : ner1 [i ] , ner1 [i + 1], ner1 [n − (i + 1)] , ner1 [n − i ], ner2 [i ] , ner2 [i + 1] , ner2 [n − (i + 1)] et ner2 [n − i ] . Un tel découpage n’e st possible que si l’on a le même nombre de points sur l’intrados que sur l’extrados. 25 Afin d’approcher au mieux le volume de chacune de ces tranches, on les découpe à leur tour en tétraèdres dont le volume est facilement calculable : ner2 [i + 1] ner1[i +1 ] ner2 [i] ner1 [i] ner2 [n − (i + 1)] ner1 [n − (i + 1)] ner2 [n − i ] ner1 [n − i ] Comme on le voit sur la figure, on obtient 5 tétraèdres dont 4 ont le même volume : • ner1 [i ] , ner1 [i + 1], ner1 [n − (i + 1)] , ner2 [i ] • ner1 [i ] , ner2 [i ] , ner2 [i + 1] , ner2 [n − i ] • ner1 [i ] , ner1 [n − i ], ner1 [n − (i + 1)] , ner2 [n − i ] • ner1 [n − (i + 1)] , ner2 [i + 1] , ner2 [n − (i + 1)] , ner2 [n − i ] • ner1 [i ] , ner1 [n − (i + 1)] , ner2 [i + 1] , ner2 [n − i ] Le bord d’attaque et le bord de fuite Il s’agit des coordonnées de BA et de BF moyens, en ce sens que : BA = BAi + BAi +1 BFi + BFi +1 et BF = 2 2 Le rayon du bord d’attaque Il correspond au rayon du cercle circonscrit au BA de la cellule et aux deux points qui l’entourent. Pour le calculer, on fait appel à la méthode Rayon_Cercle_Circonscrit de la classe Point3D. Remarque : Pour faciliter la lecture des valeurs calculées, on donne les longueurs en mètres, les surfaces en m 2 et les volumes en dm 3 . 26 PPOOIINNTT__RR On rappelle que pour chaque nervure, les points remarquables sont : insertion max Extrados BA ouvAv BF ouvAr min Intrados point de référence Les BA et BF de chaque nervure étant facilement identifiables dans les autres formats de sortie, on rassemble uniquement les coordonnées des ouvertures avant et arrière, des points haut et bas de la nervure ainsi que celles du point de référence dans le même fichier. On ajoute également dans ce fichier le rayon du cercle circonscrit au point de référence de la nervure considérée et à ceux des deux nervures adjacentes. L’intérêt d’un tel fichier est de pouvoir visualiser à l’a ide de PLOTMTV les différents points remarquables. On peut également les superposer au tracé du parapente à proprement parler. Un exemple est suffisant pour avoir une idée de la structure de ce fichier : #Fichier des points remarquables au format PLOTMTV $ DATA=CURVE3D % axisscale=False % dlinetype=0 #Ouverture_Avant % linelabel='Ouvertures' % mt=6 mc=7 -1380 0 7517.31 -1378.2 330.404 7515.09 ... #Ouverture_Arriere % linelabel='Ouvertures' % mt=6 mc=7 -1140 0 7453.8 -1138.74 327.58 7450.84 ... #Maximum_Extrados % linelabel='Max Extrados' % mt=4 mc=2 -783 0 7933.8 -780.424 348.579 7928.47 ... #Minimum_Intrados % linelabel='Min Intrados' % mt=4 mc=5 -882 0 7434.6 -881.132 326.696 7430.74 ... #Point_Reference % linelabel='Pt référence' % mt=12 mc=4 0 0 7500 0 329.422 7492.76 ... #Rayon_Courbure # Nervure 0 7500 # Nervure 1 7386.35 ... 27 Le fichier devant être interprétable par PLOTMTV, les lignes de l’en -tête indiquent que l’on fournit des données en 3D, que l’on désire avoir un repèr e orthonormé et que toutes les données qui suivent doivent être interprétées comme des points isolés et non pas comme des points appartenant à une même droite. Suivent alors les coordonnées des points correspondant à toutes les ouvertures avant qui seront représentés par des marqueurs de type mt et de couleur mc. Puis sur le même schéma on trouve les ouvertures arrière, les points haut et bas de la nervure et enfin les points de référence. Pour finir, on indique en commentaires les rayons de courbure pour chaque nervure avec comme convention : • 0 pour la dernière nervure • -1 pour un rayon infini Voici un exemple de visualisation dans PLOTMTV : Demi-parapente avec ses points caractéristiques Par ailleurs, PLOTMTV nous permet de vérifier que les points de référence sont alignés : Vue de dessus d’un demi -parapente 28 SSUUSSPPEENNTTEE Cette sortie permet de rassembler dans un seul fichier les coordonnées des points d’ancrage et les longueurs des suspentes (distance du point d’ancrage au maillon) et ce pour chaque nervure. Comme pour les points remarquables, le fichier obtenu est interprétable par PLOTMTV, ce qui permet de visualiser les points d’ancrage. Structure du fichier : #Fichier des suspentes au format PLOTMTV $ DATA=CURVE3D % axisscale=False % dlinelabel='Pt ancrage' % dlinetype=0 dmarkercolor=2 dmarkertype=4 #Nervure 0 #Points d'ancrage - Longueur des suspentes -1380 0 7517.31 -900 0 7435.12 -450 0 7454.84 600 0 7564.12 #7645.54 7492.07 7471.09 7590.52 #Nervure 1 #Points d'ancrage - Longueur des suspentes -1378.2 330.404 7515.09 -899.107 326.722 7431.33 ... On obtient à l’aide de PLOTMTV des représentations similaires à : Demi-parapente et points d’ancrage des suspentes 29 La syntaxe générale d’appel du programme Infierno est de la forme : Infierno -i fic_in [-e fic_ent] [-f format] [-d] [-m info] Détail des options : -i Fichier d’entrée au format généré par le programme Corde. Cette option est indispensable et indique à Infierno la description détaillée du parapente. -e Fichier en-tête. On utilise cette option si l’on ne possède qu’une description sommaire du parapente. Infierno fait alors appel à Corde pour générer une description détaillée qui est stockée dans le fichier indiqué après la balise -i. L’utilisateur doit cependant indiquer pour chaque nervure le profil utilisé. -f Format de sortie désiré. Le champ format peut prendre les valeurs suivantes : GNUPLOT, PLOTMTV, LIBRE, CMARC, DXF et MATLAB chacun de ces formats ayant été détaillé précédemment. Remarque : le format par défaut est CMARC. -d Affichage automatique au format demandé. Cette option permet l’affichage automatique du parapente uniquement dans GNUPLOT ou PLOTMTV. Elle permet également de visualiser automatiquement les points remarquables et les points d’ancrage des suspentes si ces sorties sont demandées. -m Informations complémentaires. Le champ info peut prendre les valeurs suivantes : POINT_R, SUSPENTE et CELLULE On peut se reporter à la partie précédente pour une présentation détaillée de ces sorties. Remarque : si l’option -d est activée, les points remarquables et les points d’ancrage des suspentes sont visualisés dans PLOTMTV. De plus, si l’utilisateur a aussi demandé une sortie au format PLOTMTV pour le parapente, alors on superpose les informations complémentaires au tracé du parapente. En cas de problèmes, une aide est proposée par la commande : Infierno –h Par ailleurs, les extensions des fichiers générés pour toutes ces sorties sont indiquées dans le fichier constantes.h. Ainsi, les extensions actuelles sont : Formats Extensions Informations Extensions CMARC .cmi CELLULE .cmi GNUPLOT .gnu POINT_R .gnu DXF .dxf SUSPENTE .lib LIBRE .fre MATLAB .mtb PLOTMTV .mtv 30 La soufflerie numérique CMARC génère à partir d’un fichier .cmi, des fichiers .cm0, .out et .fmt contenant les résultats des essais dans la soufflerie numérique. En visitant le site des concepteurs de CMARC, nous avons découvert que ceux-ci proposent POSTMARC, un post-processeur de cette soufflerie, permettant de visualiser le maillage de l’objet soufflé ainsi que les pressions qui s’exercent sur celui -ci. Sans conviction, nous avons alors pris l’initiative d’envoyer quelques parapentes au format .cmi aux USA. Le charme pyrénéen a agi et de superbes vues nous ont été renvoyées, accompagnées de quelques mots sympathiques sur les Pyrénées. Cela nous a permis de vérifier la validité des fichiers .cmi construits. Voici donc ces e-résultats pour les prototypes Metpat et Kenya50. Le prototype Metpat : Le maillage de la demi-aile POSTMARC permet de symétriser le maillage : Maillage de l’aile complète 31 Mais, il permet également de visualiser les champs de pression. Sur la demi-aile : 32 Sur l’aile complète : 33 Le prototype Kenya50 : POSTMARC propose également de visualiser les champs de pression selon divers plans de coupe : 34 La chaîne Corde - Infierno permet donc, à partir d’un profil et d’une description sommaire de l’objet final, de générer le maillage de l’objet complet. Le but était ici le maillage d’un parapente, mais les concepts utilisés resteraient valables pour d’autres structures utilisant un profil simple telles qu’un Kayak ou un dirigeable Zeppelin par exemple. D’un point de vue personnel, ce projet nous a permis de mesurer la difficulté de s’insérer dans une chaîne de production déjà en place. Nous avons dû nous adapter aux contraintes des divers formats de fichier, aux objets déjà développés en Pascal… Ce projet nous a également fait découvrir le travail en équipe et surtout le télétravail : nous étions deux étudiants à développer Corde et Infierno, mais nous n’avions que très rarement l’occasion de nous rencontrer. La magie d’Internet aidant, nous avons pu mettre chaque jour nos travaux en commun. Nous avons aussi été amenés à rechercher et à utiliser des outils de développements adaptés comme XDIFF pour la gestion des versions, PLOTMTV pour un affichage plus agréable ainsi que DOXYGEN et A2PS pour la documentation. Enfin, le choix de la plate-forme Linux nous a permis de découvrir la gestion de ce système et de nous perfectionner dans cet environnement plein d’avenir. Conscients de l’utilité du projet global pour l’industrie du vol libre, il ne nous reste plus qu’à lui souhaiter « bon vent » … 35 a. Le programme de visualisation MATLAB Afentier permet de visualiser un parapente sous MATLAB et de générer un fichier VRML % % % % % % % % % % % % Le fichier d'entrée provient de la sortie MATLAB d'Infierno : il contient un demi-parapente. Structure du fichier ligne 1 : nombre de nervures de la demi-aile, nombre de points par nervure, 0 ligne 2 à fin : les nervures en 3D stockées sous forme de coordonnées x y z en partant de l'extrémité de la demi-aile jusqu'à la nervure centrale et en énumérant les points dans l'ordre BF->intrados->BA->extrados->BF En sortie, on obtient : * la représentation du parapente complet * le fichier correspondant au format VRML function afentier(nom) clf % On efface les figures % On stocke dans une matrice tous les points du maillage fid=fopen(nom,'r'); a=fscanf(fid,'%f %f %f',[3 inf]); fclose(fid); a=a'; % On récupère le nombre de nervures et le nombre de points par nervure nn=floor(a(1,1)); npn=floor(a(1,2)); n=nn*npn; a(1,:)=[]; % On isole x, y et z x=a(:,1); y=a(:,2); z=a(:,3); clear a; % On ajoute le symétrique for i=0:nn-1 x(n+1+i*npn:n+(i+1)*npn)=x(n+1-(i+1)*npn:n-i*npn); y(n+1+i*npn:n+(i+1)*npn)=-y(n+1-(i+1)*npn:n-i*npn); z(n+1+i*npn:n+(i+1)*npn)=z(n+1-(i+1)*npn:n-i*npn); end % Désormais on a le double de nervures nn=nn*2; n=nn*npn; % On va créer deux matrices : % * l'une contenant les coordonnées des points de l'intrados % * l'autre ceux de l'extrados % ce qui permet de tracer ensuite l'intrados et/ou l'extrados % On isole les points de l'intrados for i=0:nn-1 xi(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=x(1+i*npn:(npn-1)/2+1+i*npn); yi(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=y(1+i*npn:(npn-1)/2+1+i*npn); zi(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=z(1+i*npn:(npn-1)/2+1+i*npn); end; % On fait une matrice de xi yi et zi for i=0:(nn-1) for j=1:((npn-1)/2+1) 36 xxi(i+1,j)=xi(i*((npn-1)/2+1)+j); yyi(i+1,j)=yi(i*((npn-1)/2+1)+j); zzi(i+1,j)=zi(i*((npn-1)/2+1)+j); end end clear xi; clear yi; clear zi; % On isole les points de l'extrados for i=0:nn-1 xe(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=x((npn-1)/2+1+i*npn:(i+1)*npn); ye(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=y((npn-1)/2+1+i*npn:(i+1)*npn); ze(1+i*((npn-1)/2+1):(i+1)*((npn-1)/2+1))=z((npn-1)/2+1+i*npn:(i+1)*npn); end; % On fait une matrice de xe ye et ze for i=0:(nn-1) for j=1:((npn-1)/2+1) xxe(i+1,j)=xe(i*((npn-1)/2+1)+j); yye(i+1,j)=ye(i*((npn-1)/2+1)+j); zze(i+1,j)=ze(i*((npn-1)/2+1)+j); end end clear xe; clear ye; clear ze; % Tracé du parapente à proprement parler et génération du fichier au format VRML figure(1) hold on axis equal surfl(xxi,yyi,zzi) surfl(xxe,yye,zze) colormap gray shading interp % Détermination du nom du fichier au format VRML i=0; while nom(i+1)~='.' i=i+1; end nom=[nom(1:i),'.wrl'] vrml(figure(1),nom) b. Syntaxe d’appel de mtb2obj_full Deux syntaxes d’appel sont possibles : mtb2obj_full mtb2obj_full [fic_in] Le premier appel, demande le nom du fichier à convertir alors que le deuxième appel prend ce nom en paramètre. Le fichier converti est alors systématiquement appelé parapente.obj. Dans les deux appels, le navigateur Netscape est lancé automatiquement pour visualiser, à l’aide de l’applet, le parapente complet. 37 Concernant le parapente : La folle histoire du parapente, Xavier Murillo Volez en parapente, Gérald Delorme Modélisation d’un parapente , Jérôme Sarthe, rapport de stage de DESS - Université de Savoie 1999 Manuel du parapente sur le site de la Fédération Française de Parachute : http://www.sxb.rte.fr/FFP-manuel/ Site de la Fédération Française de Vol Libre : http://www.ffvl.fr/Vol_Libre/Historique/historique.html Article concernant la simulation numérique sur le site de P. Puiseux : http://www.univ-pau.fr/~puiseux/simulation/article/article.htm Concernant la programmation et les logiciels : Langage C manuel de référence, S.P. Harbison & G.L Steele JR Le langage C ANSI, B.W Kernighan & D.M. Richie Borland Pascal 7, Scott D. Palmer PLOTMTV Home page de GNUPLOT : http://www.gnuplot.org/ Home page de DOXYGEN : http://www.stack.nl/~dimitri/doxygen/ A2PS Home page de Aerologic, concepteur de CMARC : http://www.aerologic.com/index.html 38 Los picos del Infierno e los dos ibones inferiores de Pezico