AGPS(ID:8145/)

Boeing CFD language 


for Aero Grid and Paneling System

language for a CFD developed by Boeing


References:
  • Snepp, D. K. and Pomeroy, R. C., A Geometry System for Aerodynamic Design," AIAA Paper 87-2902, Sept. 1987 view details
  • Capron, W. K. and Smit, K. L., Advanced Aerodynamic Applications of an Interactive Geometry and Visualization System," AIAA Paper 91-0800, Jan. 1991. view details
  • Dickens, Thomas P., "Technique for Using a Geometry and Visualization System to Monitor and Manipulate Information in Other Codes," Software Systems for Surface Modeling and Grid Generation, NASA Publication 3143, April 28-30, 1992, Hampton, Virginia view details
  • Gentry, Arvel E. "Requirements for a Geometry Programming Language for CFD Applications," from Proceedings, Software Systems for Surface Modeling and Grid Generation Workshop, NASA Langley Research Center, April 28-32, 1992 view details
  • Dickens, Thomas P., "Cooperative Solutions Coupling a Geometry Engine and Adaptive Solver Codes," Surface Modeling, Grid Generation, and Related Issues in Computational Fluid Dynamics (CFD) Solutions , NASA Publication 3291, May 9-11, 1995, Cleveland, Ohio view details
  • Fliegel, David C.; Dickens, Thomas P.; and Winn, Andrew P. "Experience with a geometry programming language for CFD applications" 1998 World Aviation Conference, Anaheim, CA, Sept. 28-30, 1998 view details Extract: AGPS
    Programming in AGPS
    The AGPS language capability allows sequences of steps to be recorded in a command log file and replayed. Users may also capture interactive graphical AGPS sessions through a journaling capability, in which screen picks as well as commands are recorded. The parametric nature of the internal data structure allows users to swap new geometry or design parameters into the recorded log or journal file in place of the original geometry or design parameters and rerun the entire command sequence.
    The AGPS programming language uses many features common to other computing languages, such as DO loop statements, IF-THEN-ELSE and WHILE constructs, CASE statements, numeric and character symbols, trigonometric functions, and subroutines. These features can be combined with AGPS commands to yield concise, efficient, automated macro instruction sets we call "command files," as in Figure 2.

    Users can customize the menus in their command files to create sophisticated, standalone, interactive command procedures we know as "packages." Command files and packages automate common design processes, thereby allowing repetitive tasks that were once tedious and time consuming to be accomplished quickly and easily.
    AGPS instructions are categorized by type: system directive, comment, command file, or command. Generally, commands create or manipulate geometry objects. System directives create or manipulate symbols, which store numeric or text data. Language constructs such as FOR-DO-ENDDO and IF-ELSE-ENDIF are system directives.
    The initial character of each line indicates which type of instruction follows: a "$" for system directives, "!" for comments (comments are ignored by AGPS), or "@" for executable command files or log files. All other lines are assumed to be commands and thus need no distinguishing initial character. The first three characters of command lines are abbreviations of the full command names; e.g., CLS stands for the Create-List command.
    Character strings following the command abbreviations are parsed into the individual command keywords. The language allows for flexible keyword input order. Note in the command files example the incorporation of the parametric data structure through the "." notation. This convention allows objects to be specified not by their names but by their logical relationships. We call these "ancestor" relationships; thus "ZDATAi" refers to the ith ancestor of the object "ZDATA."
  • Rogers, Stuart E. et al "Advances in Overset CFD Processes Applied to Subsonic High-Lift Aircraft" 18th AIAA Applied Aerodynamics Conference 14-17 August 2000 Denver, Colorado view details Abstract: A number of grid-generation and CFD-process software tools have been developed which greatly improve the ability to perform overset CFD analysis of complex configurations. These tools have been applied to the task of generating grids and computing the flow field about two different high-lift aircraft configured for landing: a Boeing 777-200, and a High-Wing Transport with externally blown flaps. The high-lift flow-fields of both aircraft were simulated using the OVERFLOW solver. A Navier-Stokes simulation of a complete Boeing 777-200 aircraft configured for landing was obtained in less than 50 labor days with a lift coecient which differs from experimental data by only 1.2%. This is an order of magnitude reduction in the cycle time for the entire computational process compared to a similar high-lift simulation effort that took place two years earlier. The new software was utilized to perform a  flow-field analysis of a  flap-rigging modification for the Boeing 777-200 aircraft in only four days. The software was also utilized to simplify grid generation of the High-Wing Transport for many different geometric configurations. The reductions in computational cycle time are primarily the result of the use of an automatic script system that streamlines the overset grid preparation process. Analysis of the process shows that over-setting the the grid system is now the most labor-intensive part of a single-point analysis; however, for multi-point analyses, multiple viscous flow-solver runs are costly. Extract: AGPS
    The Boeing-developed Aero-Grid-and-Paneling System (AGPS) was used to generate the primary surface grids from the CAD de nition for the 747PD application, and for subsequent Boeing applications. This step was performed using automated scripts in the AGPS system, and required no more than an hour or two to perform. Thus, in the two baseline con gurations, and in subsequent applications, time spent in the manipulation of CAD surfaces was not included in the CFD process time. Thus, here we have de ned the beginning of the CFD process as the time at which grid-ready CAD surfaces are available.
  • Dickens, Tom "Migrating legacy engineering applications to Java" Conference on Object Oriented Programming Systems Languages and Applications archive OOPSLA 2002 Practitioners Reports Seattle, Washington pp1ff 2002 view details Abstract: The Boeing Company, like many other engineering-centric companies, has a large base of legacy applications written in FORTRAN and C. In today's computing environment, maintaining and evolving these applications is becoming difficult. One such Boeing application, the Aero Grid and Paneling System (AGPS), is a 3D-geometry surface modeling tool. In the fall of 2001 we completed the migration of the AGPS source code from 300,000 lines of mixed C and FORTRAN to 150,000 lines of 100% Java. The migration resulted in many benefits; some anticipated and some unexpected. The benefits include widespread portability of AGPS on engineering workstations and PC-class machines, allowing AGPS to embrace many modern programming capabilities readily available in Java, greatly improving the maintainability and enhanceability of the AGPS source code, and an increased robustness of the AGPS code. During the migration we also took the opportunity to rearchitect major areas of the code using object-oriented techniques, to modernize the graphical user interface, and to implement a significant number of pending enhancements from our backlog.This paper looks into the details of the AGPS migration to Java, discussing our observations, lessons learned, migration techniques, and what we see in the future computing environment. Data are presented and discussed to substantiate our conclusions that Java is well-suited for compute-intensive engineering applications, Java portability is a reality, Java performance is no longer a problem, and that embracing object-oriented programming techniques produces a much superior product with less effort. External link: Online copy Extract: AGPS Migration History
    AGPS Migration History
    To set the stage for the recent Java migration of AGP S we will briefly outline the 20-plus year evolution of the program.  AGPS originated in the early 1980s, first prototyped on a PDP -11  and then re -hosted on a then newly -acquired VAX 11 -780. This  move took AGPS from a 16 -bit overlay -based computer  architecture to a 32 -bit virtual -memory architecture. The original  source code was written in three languages: VAX -specific  FORTRAN for most of the geometry algorithms, Pascal for the  recursive language parser, and VAX assembly language for  pointer manipulation of  the in -core data structure as well as for  speed. The display devices included VT -100 terminals for non - graphics use, plus Vector General and Tektronix terminals for  displaying graphics. A typical compile and link of the source code  took from one to two hou rs. Running AGPS, while it was  ?interactive,? took from seconds to minutes for a typical geometry  command. During this early stage of AGPS development much of  the compute -intensive code was hand written in VAX assembly  language to increase performance. The  aerodynamics engineering  community started using AGPS heavily since there was no other  automated tool available to address their geometry needs. In the  late 1980s AGPS was also hosted on a MicroVAX II workstation,  which had a maximum of 16M of main memory and ran about 2/3  the speed of the VAX 11-780.  
    From its inception, the underlying architecture of AGPS was designed in a very object -oriented manner with the organization  of the geometric object types and also in the various geometry  commands. Each share d a base commonality that was extended  for specific types and or commands. This architecture for the  types and commands was carried over and embellished in the Java  conversion. The internal geometric data structure was able to  grow dynamically, taking adva ntage of the then -new virtual  memory capability. Within the FORTRAN code, large 1 hard - coded arrays in common blocks were used. Over the years, the  sizes of these hard -coded arrays were increased as computing  hardware was available to allow larger and large r cases to be run.  In the Java conversion we removed all of the hard -coded limits  and made the architecture completely dynamic to take advantage  of new computer architectures in the future.
    In the late 1980s, with the emergence of engineering workstations, AGPS was converted to be UNIX -portable using the POSIX  standards. The VAX -specific FORTRAN, Pascal, and assembly - language was converted to ANSI -standard FORTRAN and C.  Version 5 of AGPS was the VAX -specific baseline, and version 6  was UNIX -portable. This  version had so many problems due to  the conversion 2 that it wasn?t until version 7 of AGPS was  released that the engineering community started using it (this was  a critical lesson to remember during the Java conversion).  Through the 1990s AGPS was fairly e asily migrated to a host of  UNIX workstations, enabled primarily due to the groundwork  which was laid during the UNIX conversion. This included  workstations from Apollo, HP, Sun, DEC, and SGI, as well as  some mid-range systems including Stellar and Convex. The AGPS  development team had learned first-hand the importance of having  application code as portable as possible, and we were amazed that  neighboring development groups would embrace a vendor - specific platform, Apollo workstations for example, only to i ncur  a huge migration effort a couple of years later when the  engineering community migrated off the Apollo workstations. We  have seen continual migrations from one computing platform to  another every few years throughout the history of the project.
    During the 1990s we were tasked with migrating AGPS to Cray supercomputers (Y -MP and Triton), which were running UNIX.  Even though the code was considered portable, the Cray  architecture introduced a major new twist. Up to this point, all the  platforms targeted by AGPS had two key features in common: 32- bit words and memory was byte -addressable3. The Cray  architecture had 64 -bit words and it was word -addressable4. The  then-current AGPS code used many thousands of hard -coded 4s  in the source code; some of these sp ecifying the word -size, some  of these specifying the word -based address -increment, and some  that were part of some geometry -related calculation or equation.  The challenge with the Cray port was to identify and understand  the usage of these 4s in the source  code, and convert them to  either 8s or 1s for word -size or address -stride respectively, or to  leave them as -is for equations. We ended up using conditionally - compiled C code to set the global constants. A few years later,  with the arrival of 64 -bit byte-addressable workstations, we were  positioned to easily port to that new architecture, specifying 8/8.  On the graphics front, AGPS migrated from the various graphics  devices on the VAX 11/780 to X -Windows/Motif on UNIX plus a  3D-GL version on the SGI, while  still maintaining a non -graphics  mode of operation for batch processing. This was the version of  AGPS, now called AGPS -classic, which was the baseline for the  Java migration.
    Periodically the AGPS development team would get requests to port AGPS to the PC.  These requests were never taken seriously  since the developers knew the dependencies of the code required  FORTRAN and C compilers, X -Windows/Motif for graphics, and  POSIX-standard system calls.