Jun 7, 2005 ... Knowledge Based Engineering är den metod är den valda metoden för att korta
ledtiden. ...... Knowledge Fusion, KBE-module of UG NX.
Knowledge Driven Preprocessing - Automating mesh generation for a jet engine component
Markus Andersson, 2005-06-22
Institution och avdelning
Framläggningsdatum
Ikp, Hållfasthetslära
2005-06-07 Publiceringsdatum (elektronisk version)
Språk
Rapporttyp
Svenska Annat (ange nedan)
Engelska
________________
Licentiatavhandling Examensarbete C-uppsats D-uppsats Övrig rapport
ISBN: ISRN: Serietitel Serienummer/ISSN
Examensarbete
__________________ URL för elektronisk version
Titel
Knowledge Driven Preprocessing - Automating mesh generation for a jet engine component Författare
Markus Andersson Sammanfattning
Att minska ledtider vid utveckling av jet motor komponenter är en drivande faktor för ständigt pågående förbättringsarbete. CAE verktyg används och utvecklingen är ständigt pågående. Den här rapporten behandlar preprocessning i koncept fasen av produktutvecklingen av en jet motor komponent. Knowledge Based Engineering är den metod är den valda metoden för att korta ledtiden. Kunskap om designprocessen samlas och implementeras som regler i en generisk modell. En applikation som automatiserar rutinmässigt preprocessnings-arbete skapas. Lead time pressure in the development of jet engine components is a driving factor for continuous efforts of improvement. Computer aided engineering tools are intensively used and best practice is continuously evolving. In this report preprocessing in a conceptual phase is investigated. Knowledge Based Engineering is the chosen method for shortening lead time. Knowledge of the design process is collected and implemented as rules in a generic model. Emphasis lies on creating a functional KBE application that automates a selection of routine activities.
Nyckelord
KBE, Preprocessing, Mesh generation, CAD/CAE
Preface This report is my thesis work at Linköping University, department of Mechanical Engineering – structural mechanics. The thesis work has been done at Volvo Aero in Trollhättan as a part of a project that aims to reduce lead time in the preprocessing process. The project has involved two more thesis students, Ida Bylund and Loganathan Rajagopal. During this thesis work I have received help from a lot of people. I would like to thank the following: The employees of department 9610 for the warm reception and their willingness to help. My fellow students Ida and Loganathan for a close and successful teamwork, especially Ida who has contributed with a large part of the work presented in this report. Our project supervisors Petter Andersson and Patrik Boart who have spent a lot of time providing invaluable help. The project leader and my supervisor at Volvo Aero, Ola Isaksson. My examiner at Linköping University, Bo Torstenfelt.
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Abstract Lead time pressure in the development of jet engine components is a driving factor for continuous efforts of improvement. Computer aided engineering tools are intensively used and best practice is continuously evolving. In this report preprocessing in a conceptual phase is investigated. Knowledge Based Engineering is the chosen method for shortening lead time. Knowledge of the design process is collected and implemented as rules in a generic model. Emphasis lies on creating a functional KBE application that automates a selection of routine activities. Main steps in the preprocessing process are: • • •
Generating an idealized geometry Meshing the idealized geometry Creating an input deck for FEM analysis software
Meshing the idealized geometry, which is a midshell representation of an intermediate case, is covered in this report. A standardized approach with rules that governs generation of the mesh is implemented. The KBE application will work with the given specifications. Lead time has been reduced from two days to less than an hour. Iterating different design configurations is a possibility. The 80/20 model applies for implementing new specifications as in being able to reuse 80% of the work.
2
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Table of Contents PREFACE ...............................................................................................................................................1 ABSTRACT ............................................................................................................................................2 NOMENCLATURE ...............................................................................................................................5 1. INTRODUCTION ..............................................................................................................................6 1.1 VOLVO AERO CORPORATION ..........................................................................................................7 1.2 THE JET ENGINE ..............................................................................................................................7 1.3 THE INTERMEDIATE CASE ...............................................................................................................7 1.4 PRODUCT DEVELOPMENT OF A JET ENGINE COMPONENT .................................................................8 1.4.1 Engineering design ................................................................................................................9 1.4.2 Conceptual Design of a jet engine component.......................................................................9 1.4.3 Best Practice in conceptual design ......................................................................................10 1.5 KNOWLEDGE MANAGEMENT AND KNOWLEDGE BASED ENGINEERING .........................................11 1.6 THESIS WORK................................................................................................................................12 1.7 BENEFITS OF A KBE-APPLICATION ...............................................................................................13 2. METHODS, GENERAL APPROACH – MOKA..........................................................................13 2.1 IDENTIFY ......................................................................................................................................14 2.1.1 Business Opportunity ...........................................................................................................14 2.1.2 KBE programming ...............................................................................................................15 2.1.3 Means of finding knowledge ................................................................................................15 2.1.4 Platform ...............................................................................................................................16 2.2 JUSTIFY .........................................................................................................................................16 2.3 CAPTURE ......................................................................................................................................16 2.3.1 Geometry..............................................................................................................................16 2.3.2 Variables of the geometry ....................................................................................................17 2.3.4 Preprocessing ......................................................................................................................18 2.3.5 Preprocessing using Knowledge Fusion ..............................................................................19 2.3.6 Requirements on mesh .........................................................................................................19 2.3.7 Reliable mesh generation.....................................................................................................20 2.4 FORMALIZE ...................................................................................................................................20 2.5 PACKAGE ......................................................................................................................................20 2.6 ACTIVATE .....................................................................................................................................20 3. RESULTS..........................................................................................................................................21 3.1 MESHING APPLICATION ................................................................................................................21 3.1.1 Inputs ...................................................................................................................................22 3.1.2 Subdivide..............................................................................................................................23 3.1.3 Mesh.....................................................................................................................................23 3.1.4 Preprocessing Lead Time.....................................................................................................25 3.1.5 Varying thickness .................................................................................................................26 3.1.6 Managing the code...............................................................................................................26 4. CONCLUSIONS...............................................................................................................................27 4.1 MANAGING THE APPLICATION ......................................................................................................27 5. DISCUSSION....................................................................................................................................28 5.1 QUALITY OF MESH .......................................................................................................................28 5.2 LIMITATIONS ................................................................................................................................28 5.3 LEAD TIME OF THE MESHING APPLICATION .................................................................................28 5.4 FURTHER DEVELOPMENT ..............................................................................................................28 5.5 LESSONS LEARNED .......................................................................................................................29 REFERENCES .....................................................................................................................................30 RELATED LINKS ...............................................................................................................................31
3
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
APPENDIX A - MESHING USING KF.............................................................................................32 MESH EXAMPLE CLASS .......................................................................................................................32 MESH EXAMPLE SCENARIO CLASS ......................................................................................................33 APPENDIX B – PROGRAMMING NOMENCLATURE................................................................34 APPENDIX C - PROCESS DESCRIPTION .....................................................................................35 APPENDIX D.1 – SHELL_MESH_APPLICATION_CLASS ........................................................36 APPENDIX D.1 – SHELL_MESH_APPLICATION_CLASS ........................................................36 APPENDIX D.2 – MESHING_CLASS..............................................................................................38 APPENDIX D.3 – OUTER_RING_SCENARIO_CLASS ...............................................................41
Table of Figures FIGURE 1: VOLVO AERO PRODUCTS......................................................................................................7 FIGURE 2: CONCEPTUAL JET ENGINE COMPONENT DEVELOPMENT ..................................................10 FIGURE 3: KNOWLEDGE DRIVEN PREPROCESSOR .............................................................................12 FIGURE 4: THE MOKA LIFECYCLE .......................................................................................................14 FIGURE 5: LEAD TIME REDUCTION ......................................................................................................14 FIGURE 6: MODULES OF THE INTERMEDIATE CASE ...........................................................................15 FIGURE 7: THE INTERMEDIATE CASE AND SURROUNDING COMPONENTS .........................................17 FIGURE 8: VARIABLES OF THE IMC ....................................................................................................18 FIGURE 9: INTERSECTION OF A BYPASS STRUT AND THE OUTER RING.............................................19 FIGURE 10: THE MESHING PROCESS ..................................................................................................21 FIGURE 11: OVERVIEW OF THE MESHING APPLICATION ...................................................................22 FIGURE 12: INTERFACES OF THE MESHING APPLICATION .................................................................23 FIGURE 13: PLANES AND LINES USED FOR SUBDIVIDING THE IMC.................................................23 FIGURE 14: CLASS STRUCTURE OF THE MESH PART OF THE MESHING APPLICATION .....................24 FIGURE 15: SORTING EDGES ON THE OUTER RING ...........................................................................24 FIGURE 16: TOTAL LEAD TIME OF THE KBE-APPLICATIONS IN THE PROJECT .................................26
4
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Nomenclature Bypass channel Bypass ratio Core channel DOF ED FEA FEM GUI IMC KBE KF Master Model Approach
Parasolids PLM PD Strut Thrust UG NX Vane WEM WEMM
the outer channel of airflow of an intermediate case the ratio between the air flow through the bypass channel and the core channel the inner channel of an intermediate case, passes air from fan to compressor Degree Of Freedom Engineering Design Finite Element Analysis Finite Element Method Graphical User Interface Intermediate Case Knowledge Based Engineering Knowledge Fusion, KBE-module of UG NX all changes to the design are made in the master model in comparison to changing the idealized model or even further downstream whilst iterating. An UGS product, the modeling core for UG NX and other CAD software Product Lifecycle Management Product Development Primarily supports mechanical loads between ring structures in the intermediate case The propulsion force of the jet engine Unigraphics, CAD software Primarily controls aerodynamic flow in the intermediate case Whole Engine Model, simplified model of the engine used for FEM-analysis Whole Engine Mechanical Model, Simplified model of the engine used for FEM-analysis
5
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1. Introduction Lead time pressure in the development of jet engine components is a driving factor for continuous efforts of improvement. Computer aided engineering tools are intensively used and best practice is continuously evolving. This project deals with some of the trends in CAD/CAE software development, [Kasik et al.]1. Initially when design requirements are given and the conceptual work starts, it is usually done more or less from scratch. The availability of engineering knowledge in actual design activities is often dependent on experience among the engineers themselves. Best practice and design manuals exist but these are often paper based and does not directly assist in the CAE environment. Systems support with embedded rules and principles is one way to manage knowledge and make it accessible at the fingertips of engineers. Results and information in the way of rules and procedures from earlier work can be included creating a database of the collected “know how” of the company. Being able to access this information easily gives the possibility to reuse it. The starting point of the conceptual work is now no longer from scratch. Another topic that is touched upon is the connection between CAD (modeling) and CAE (analysis). Translating information reliably to analysis software is sometimes difficult. Success in easy transfer will allow testing in an earlier phase of a project. Faulty designs and flaws can then be found earlier. Multiple designs may also be tested and can be iterated to identify and refine the best alternatives which will ensure a robust design.
1
Ten CAD Challenges Kasik, David R, Buxton, William, Fergusson, David J
6
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1.1 Volvo Aero Corporation Volvo Aero is part of the Volvo group and accounts for 3.5 percent of its sales (2004), [Volvo Aero]2. Volvo Aero employs more than 3300 people, mostly in Sweden but also in Norway and the U.S. Development, manufacturing and some maintenance of aircraft engines is done in Trollhättan, (Sweden). There is also development and manufacturing of aerospace components and land and marine gas turbines, Figure 1. To the left is a typical jet engine used on civil passenger aircrafts. For development and manufacturing, Volvo Aero specializes in static, load bearing components such as the intermediate case, here labeled “fan/compressor structures”. To the right the Ariane rocket can be seen where Volvo Aero manufactures the nozzle for the second stage and turbine components for the fuel pump. Fan/ Compressor structures
Shafts
Turbine Structures
Vanes
Turbine
Compressor Spools
Diffuser/ Combuster cases
LP Turbine cases Nozzle
Figure 1: Volvo Aero products
1.2 The jet engine Engines used on most passenger aircrafts are turbo fan engines. They have a high bypass ratio i.e. most of the air passes through the outer (bypass) channel. It is the fan that drives the engine forward by displacing the air moving through the outer channel. The fan is powered by the turbine which in turn is powered by the air going through the core channel. This air is compressed and mixed with fuel in the combustion chamber. The air speed is greatly increased when the mixture is combusted. The air then rotates the turbine blades, for further reading [Rolls-Royce]3.
1.3 The intermediate case The engine is connected to the wing or fuselage via the Fan/Compressor structure and the Turbine structure, see Figure 1. The Fan/Compressor structure is also known as the intermediate case, (IMC). It will transfer loads to engine support beams on the wing or fuselage via engine mounts and thrust lugs. It is also connected to the rest of the engine via different flanges. Thus the main purpose of an intermediate case is to transfer loads and provide structural stiffness to the surrounding parts of the
2
Facts on Volvo Aero Internal Volvo Aero Document 3 The Jet Engine Rolls-Royce
7
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
engine, [Volvo Aero]4. Examples of IMC models can also be seen in Figures 6, 7 and 8. Another increasingly important feature is to be able to integrate the guide vanes with the struts of the intermediate case. The guide vanes change the air flow from the fan in order to reduce vibrations and noise. The struts will then have a somewhat more complex shape. Also, the typical number of struts is far less than the number of guide vanes. An intermediate case with integrated guide vanes might need 30 bypass struts instead of only ten. Other functions of the IMC are: • • • •
Separate airflow in two channels - core and bypass channel Transfer oil and air to bearings Resistance to fire Divide the engine into fireproof sections
The intermediate case has also been the object of study in [Boart, Jonasson]5 where a similar application was developed.
1.4 Product development of a jet engine component Product development is defined by [Isaksson]6 as: Product development is the company process which takes the business requirements as a start and transforms these into a product. Product development includes aquisition, marketing, financing and all other parts of the product life cycle besides the actual design work. Product development efficiency can be measured by three interrelated performance standards, [Trygg]7: lead time, cost and design quality. Improvement in product development can, because of its complexity, be achieved in a multitude of ways. Product Life-Cycle (PLC) modeling simulates parts of the life cycle. There are different examples of methods; Case-Based Reasoning (CBR), Expert Systems (ES) and Knowledge Based Engineering (KBE). The reason for using these methods is achieving a higher PD efficiency. Which method is most suitable differs with the circumstances, for further reading [Sandberg]8.
4
Design Manual, IMC Internal Volvo Aero document 5 Functional Jet-Engine Component, Modeling using KBE Boart, Patrik. Jonasson, Pierre 6 A generative modeling approach to engineering design Isaksson, Ola 7 Engineering Design- Some Aspects of Product Development Efficiency Trygg, Lars 8
Knowledge enabled engineering design tools for manufacturability evaluation of jet engine components Sandberg, Marcus
8
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1.4.1 Engineering design Engineering design is a subset of Product development. Initially in a PD process, customer requirements have to be identified and translated to design requirement specifications. As this is done the Engineering Design (ED) work of the PD process starts. ED is defined by [Isaksson]6 as: Engineering design is the general process of transforming design requirements into verified solutions. From a cost perspective, the conceptual design phase in ED is considered most important, [Kasik et al.]1. Improvement of efficiency here, like shortening lead time, will have a dramatic impact on product cost.
1.4.2 Conceptual Design of a jet engine component At the start of developing a jet engine component is the conceptual phase where the aim is to identify one or more suitable designs. Engineers rely on experience from previous designs that are already proven in real life. New design requirements are given and the designs are adapted according to these. Being able to perform early tests is important in order to discover faults and flaws as soon as possible. The cost of correcting these becomes increasingly more expensive when moving downstream in the PD process. Activities considered here in the conceptual phase can be seen in Figure 2 below. There are usually iterations between each two steps and also in other possible combinations. Performing these steps is often tedious and time-consuming. After post-processing a decision is taken to either accept the design or change one or several variables. Time consumption grows exponentially if system variables, that include several steps in the process, are changed rather than local variables, (to the left in Figure 2). Being able to iterate the geometry definition or even the idealized geometry is difficult. To the right in Figure 2 there is an iteration loop that goes from postprocessing to geometry idealization. The idealized geometry can be a mid-shell representation of the 3D model which is suitable for analysis of stiffness and modal frequencies. Shortening lead times in the preprocessing steps simplifies iterating geometry idealization. The result is an improved possibility to optimize of the model with respect to stiffness and modal frequencies. A full iteration loop that includes all system variables that can be changed directly in the master model is also suggested in Figure 2. Achieving such an iteration loop will greatly increase the design engineer’s possibility to optimize the model with respect to any requirement.
9
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Requirement Specification
Requirement Specification
Geometry Definition
Geometry Definition
Geometry Idealization
Geometry Idealization
Mesh Generation
Mesh Generation Mesh features: beams, elem. size…
Analysis Input Definition
Analysis
PostProcessing
Possible Opt. loops: structural mechanics, space allocation, manufacturing, weight, aero
Real constants: thickness, mtrl. param, temperature...
Analysis iter. : load cases, boundary conditions…
Analysis Input Definition
2D Geometry mods: modules, no struts, measurements
Analysis
PostProcessing
Figure 2: Conceptual Jet Engine Component Development
1.4.3 Best Practice in conceptual design In the conceptual design work the aim is to find the most suitable choice of concept for the component. Different configurations are tested using stiffness and modal analysis. Typical variables are for example the amount of struts, choice of material etc., [Normark]9. Often the method for doing concept studies is to create a parametric idealized model directly in the CAE platform. Structures such as intermediate cases, that are to be subjected to stiffness and modal analysis, are idealized into midshell models, for further studies see [Rajagopal]10. There is often rotational repetitiveness in intermediate cases. If that is the case, the different sections are modeled and combined into the complete structure like pieces of a pie. Some variables like thickness and material parameters may be changed easily in such a model. Measurements may also be varied, depending on the parameterization of the model. However, creating the parametric model is time consuming. There is often not enough time to create a second or third parametric model with different variables. It is also obvious that the geometric modeling capability of a CAE platform is limited compared to CAD functionality. For example, modeling topological changes such as changing in the assembly is not possible. When the concept study involves variables that can not be included in one or several parametric models in the CAE platform a midshell representation has to be created in a CAD platform. “Dumb” geometry in the form of parasolids can then be exported to the CAE platform for preprocessing and analysis.
9
Validation and verification of structural analysis Normark, Lars-Ola 10 Load Path Design of a Jet Enginge Component Rajagopal, Loganathan
10
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1.5 Knowledge management and Knowledge Based Engineering In a large organization dealing with product development there exists vast quantities of information in the form of experience and “know how” tied to processes or individual co-workers. Being able to capture, make available and reuse this engineering design information and intent becomes increasingly important as the organization grows. [Benson, Terpenny]11. KBE is a subset of Knowledge management. It is a method that manages product and knowledge that can be captured within a CAD/CAE/CAM environment. KBE a suitable method to use for, [Andersson]12: • • •
Products with a high degree of similarity in-between versions. Products requiring a large number of design configurations (e.g. Geometry alternatives, material alternatives or color alternatives). Products with a large number of design processes (e.g. FEA optimizations).
In capturing such knowledge there is a possibility to automate mundane routine tasks with the benefit of greatly reducing lead times. KBE is defined by [MOKA]13, (Methodology and software tools Oriented to Knowledge based engineering Applications). The use of advanced software techniques to capture and re-use product and process knowledge in an integrated way. This statement simply means that knowledge is integrated as rules in the code of the application. There exist several KBE systems more or less integrated into the major CAD platforms of today14. These KBE systems provide the possibility to automate and incorporate “intelligence” in a process.
11
A Survey of methods and approaches to knowledge Benson, Maria, Terpenny, Janis 12 Strategies for modeling geometry in Knowledge Based Engineering systems Petter Andersson 13 Managing Engineering Knowledge MOKA: Methodology for Knowledge Based Applications 14 KBE platforms: Knowledge Fusion http://www.UGS.com, accessed 2005-05-24 ICAD http://www.ktiworld.com, accessed 2005-05-24 AML http://www.technosoft.com, accessed 2005-05-24 Design++ http://www.dp.com, accessed 2005-05-24
11
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1.6 Thesis work This thesis work has been a part of a project - using the current KBE-platform of Volvo Aero - to create an application that deals with preprocessing of an IMC. The first objective is to work out how to support the preprocessing work with systems support. The second objective is to make the systems support as general as possible in the sense of handling different geometries. The project has been divided into three parts, one for each preprocessing step. 1. Generate a geometry defined by user input. 2. Prepare the geometry for meshing. Mesh the geometry and add basic features to the mesh (thickness, material properties). 3. Add loads and boundary conditions. Generate an input deck for Ansys. Requirement Specification
Geometry Definition
Geometry Idealization Mesh Generation
Knowledge Driven Preprocessor Geometry Idealization Mesh Generation Analysis Input Definition
Analysis Input Definition
Analysis
Results Evaluation
Figure 3: Knowledge Driven Preprocessor
This report will focus on the second step in this process, i.e. Mesh Generation, 10 Figure 2, whereas others have studied the first and third step. [Rajagopal] , [Bylund]15.
15
Knowledge driven pre-processing, analysis input definition Bylund, Ida
12
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
1.7 Benefits of a KBE-application There are several reasons for creating a KBE-application, [Rondeau et al.]16, most important is to shorten lead times. The goal with the Knowledge Driven Preprocessorapplication is to deliver an input deck to Ansys in less than an hour. All time consuming, tedious and repetitive work is automated. In comparison this process would normally take several days for an engineer. In complement to shortened lead times there are some other benefits to be seen with this application such as: • • •
Alternative configurations The capability to both design and evaluate a large variety of alternative configurations in a limited time-frame. Quality The procedure will always be the same, ensuring quality in the analysis. A “Volvo Aero-standard” can be implemented in the application. Availability All “intelligence” such as rules, methods, “know how” is programmed into the application and will be available at the fingertips to the user.
2. Methods, general approach – MOKA [MOKA] 13 is a methodology for developing KBE applications. This has been the basis of approach throughout the project. In Figure 4 below the steps in the MOKA methodology is described. The capture and formalize steps are important. The aim for capture is to gather knowledge and structure it into an informal model. In the formalize step the informal model is transferred to a formal model - a neutral format. This is an intermediate step between raw knowledge and the programming code of the application. The guidelines for performing these steps are quite detailed. Special forms may be used to help structure knowledge into the informal and formal model. During this project all such guidelines have been omitted. All gathered knowledge has been stored in ordinary documents and tables. The main reason for this being lack of time. This project might instead be considered rapid prototyping which iterates the capture – formalize – package steps, [MOKA]11. It is a first attempt of creating a working application that can be used by engineers at Volvo Aero. One of the reasons for using the current KBE-software of Volvo Aero is to evaluate its preprocessing functionality (as is stated below under Identify-Platform). In this sense, some of the knowledge that is to be collected lies in the package step, i.e. what should the code look like, what methods can be used, what workarounds are needed? Also, it should be noted that MOKA was developed for support in large projects and some of the guidelines might be considered somewhat “formal” in a relatively small project such as this.
16
Generative design and optimisation of the primary structure for a commercial transport aircraft wing. Rondeau, D L, Peck, E A, Williams, A F, Allwright, S E, Shields, L D
13
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Identify
Activate Activate
Justify Justify KBE life-cycle Capture Capture
Package Package
Formalize Formalize
Figure 4: the MOKA lifecycle
2.1 Identify The identify step aims to identify, among other things, the driving factors of the project. The background, scope, objectives and reasons has already been stated in the introduction. Below, some more aspects are given.
2.1.1 Business Opportunity The business opportunity for the application lies mainly in the conceptual phase of a project since only the idealized geometry may be analyzed. Need for such analysis results are still increasingly important for supporting decisions at an early stage. The application will shorten the time needed to less than an hour. This can be compared to a traditional approach that might take several days, Figure 5. Thus information in the form of analysis results will be accessible to base a decision on. Proposals and offers can be made on a more accurate technical basis. Product models (concepts) can actually be defined and analyzed as a part of the offering process. Geometry Idealization
Analysis
Preprocessing
Analysis
Post processing
Post processing
Lead Time Figure 5: Lead time reduction
14
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
2.1.2 KBE programming There are some special features in a KBE programming language. Object oriented programming means that the object is represented as an assembly of subparts where rules govern properties of the assembly and each subpart15. An intermediate case may for example be an assembly of subparts according to Figure 6. An object oriented programming language grows even more powerful when it is demand driven; i.e. only requested parameters are evaluated. There is great reduction in computational time when compared to a sequential programming language where operations on each line are performed in sequential order and all variables are evaluated.
1. Outer ring 2. Bypass Strut IMC 3. Splitter Box 4. Core Strut 5. Support Structure Figure 6: Modules of the Intermediate Case
2.1.3 Means of finding knowledge The reason for creating the application is to collect and gather knowledge that can be implemented. There are several ways of finding relevant information: interviews, informal meetings, software documentation, literature and articles, code from earlier KBE applications, trial and error etc. Preprocessing has not been done much in UG NX. Other software is used for this at Volvo Aero. Thus the basic approach has to be tried out first. What steps are necessary to create a mesh? This knowledge can be found in reference documentation of UG NX and trough experience of working interactively. Second, how to perform the preprocessing steps through the KBE platform? This has to be found out with help of software documentation, code from earlier KBE applications, discussions with Volvo Aero engineers and if nothing else helps - trial and error. Besides this there are requirements on what the mesh should look like and what functionality should be included in the application. There is literature that gives basic knowledge on meshing, for example [Cook et al.]17. Another source is reports from earlier project work at Volvo Aero. Interviews with Volvo Aero-personnel performing these tasks will also give relevant information.
17
Concepts and applications of finite element analysis Cook, Robert D, Malkus, David S, Plesha, Michael E, Witt, Robert J
15
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
2.1.4 Platform UG NX2 has been used as a CAD platform. The KBE tool is Knowledge Fusion, (KF). It is fully integrated into UG NX. All functionality in UG NX is available in KF (although some functionality is yet to be implemented). This is beneficial when generating the geometry since a parameterized model, including the possibility for topological changes, can be created. The application could be programmed to accept changes to any variable through an input deck. Continuing the preprocessing within the UG NX-environment means that all variables of the model will be accessible – there is no need to translate the geometry including its rules and parameterization to a new platform. Another tool that is available is UG Open where UG NX functionality is accessed with C programming. Because of the similarities with the UG NX core more functionality has been implemented in UG Open. The recommended way to develop a KBE application by UGS is to use KF and call on UG Open when necessary. There are many pros and cons when using each tool but the one deciding factor is that the KF programming language is based on Intent! This is a true KBE programming language which it is both object oriented and demand driven. Implemented KF programming can be seen in APPENDICE A and D.
2.2 Justify This step aims to motivate and ensure the relevance of the project. Sub steps involve estimation of resource requirements and costs, estimate risk and develop a project plan. The Knowledge Driven Preprocessor can be considered a pilot project. The most important aim is to reduce lead-time in preprocessing and the way to do it is KBE. The pilot in itself is needed to justify the capability to implement project support at Volvo Aero using KF to support preprocessing.
2.3 Capture The capture step aims to collect all knowledge related to the application that is to be created. The knowledge is sorted and structured into an informal model. In MOKA a detailed approach on how to sort and structure the informal model in tables is suggested. This method has not been followed in this report. Instead, the gathered information is simply presented straightforward.
2.3.1 Geometry The geometry that is to be generated is an intermediate case. It is a ring – strut – ring structure as can be seen in Figure 6, 7 and 8. All intermediate cases have the same basic features thus making it suitable for a KBE application. Selected design variables can be controlled through a graphical user interface, (GUI). Modular modeling allows for reuse for other jet engine components, especially since there are similar ring – strut – ring components.
16
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Bypass Outer ring
Accessories
Gear Box Fan Case Outer Bypass duct faring
Bypass Channel
Bypass outer ring
Bypass strut Bypass channel Inner Bypass duct faring
Fan outlet guide vane
Splitter box LPC Stator support structure Low Pressure Compressor outlet guide vane
Core Channel
Splitter Box
Engine Mount HPC case
Core channel
Core strut High Pressure Compressor inlet guide vane
Support structure
Support structure
Figure 7: the intermediate case and surrounding components
The geometry generated in the first step of the process is idealised in a matter suitable for meshing. Only geometry that is important for representing structural properties of the IMC is included. Small details like holes for weight optimising are omitted. Sheet bodies of the IMC are created in such a way that there are no unnecessary complex surfaces. No accessories such as engine mounts, bosses, stiffening ribs or gearbox attachments exist. However, such features can be added later on.
2.3.2 Variables of the geometry The generated geometry can be modeled with nearly any shape on any surface. In addition to this there are variables and interrelationships that are important to note, see also Figure 8. • • • • • • • • • • •
Number of bypass struts Sweep angle - front bypass strut edges Sweep angle - rear bypass strut edges Lean angle - bypass struts Swirl angle – bypass struts Splitter box torsion-walls will follow the front and rear edges of both the bypass and core struts (giving a sound load path) Angle of splitter box torsion-walls? Number of core struts Sweep angle - front core strut edges Sweep angle - rear core strut edges Support structure torsion-walls will follow the front and rear edges of the core struts
All meshing functionality has to be independent of these variables. There are some features constant with the model: sheet bodies are named according to a certain nomenclature when created. Also, the geometry is built up of modules, see Figure 6. The assembly and sub-assemblies of the IMC varies with the combination of modules. 17
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Each module contains certain sheet bodies that are known beforehand. For example, there can be different splitter box modules. One module may consist of simply four sheet bodies: outer ring, inner ring, front torsion wall and rear torsion wall. Another module may also include an inner support structure etc. Other information such as number of struts and specifics of the configuration (that affects the mesh generation) can be inherited from the mesh generating classes or given as user input in an interface.
sweep angle
lean angle
front swirl angle
Splitter box front torsion wall
Figure 8: Variables of the IMC
2.3.4 Preprocessing Preprocessing in UG NX is done in a sub-module called “Structures”. A new scenario is created with an extracted copy of the master model. The preprocessing can be done to suit different environments such as Ansys, Nastran, Abaqus and Structures PE, the latter being the solver integrated into UG NX. Input decks can be created for the first three environments. Shell structures in UG NX are modeled as “sheet bodies”. Each sheet body consists of at least one face and can be subdivided into as many as needed. A shell mesh can be created from any combination of sheet bodies and additional faces. When meshing shells there is a possibility to attempt mapping of the mesh. However, from experience it is known that the quality of the resulting mesh often varies when the complexity of the geometry increases. It is important that intersecting sheet bodies are connected in order for the mesh that is generated to be intact, i.e. for the meshes on each sheet body to be properly connected to each other. This can be done by subdividing both sheet bodies to create intersecting edges on both surfaces, see Figure 9. A “connect” function may then be used. Another approach is to make sure that the nodes created on the interfacing edges intersect. Nodes within a certain tolerance, “node uniqueness tolerance” will merge creating an intact mesh. Some solvers, such as Ansys in this case, will be able to
18
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
handle connecting two independent meshes. This may be done by merging nodes in a similar manner. It can also be done with contact elements that have the possibility to simulate different contact conditions. A shell mesh can be given a thickness and material properties. The material is selected from a library that can be edited. Nodes, elements and properties of the mesh, as well as added loads and boundary conditions will then be included in the input deck.
Figure 9: Intersection of a bypass strut and the outer ring
2.3.5 Preprocessing using Knowledge Fusion Creating a shell mesh with KF is done in the same manner as in “Structures”. A scenario needs to be created and to this the geometry is extracted, (see APPENDIX A). In the new scenario the extracted geometry can be referenced, for example edges may be given a certain edge density. The geometry, as well as most functionality available for a shell mesh in “Structures”, can then be given as input to ug_cae_shell_mesh class.
2.3.6 Requirements on mesh Shell mesh is suitable for stiffness and modal analysis which imposes certain requirements on the mesh. Quadrilateral elements (four nodes) will give more reliable analysis results than triangular elements, especially when mapped. Triangular elements are especially bad when it comes to representing stiffness, [Cook et al.] 17. For stiffness and modal analysis there is often no significant difference in results between using elements with linear or quadratic form functions, [Normark]9. From tradition elements with linear form functions are often used for conceptual studies at Volvo Aero. Free-meshing with triangular elements will often result in a good mesh. Trying to create a mapped mesh (quadrilateral elements) in UG NX will give varying results, often with poor quality. A mapped mesh will ensure repetitiveness. If rules are imposed on the mesh generation the resulting mesh will look the same each new time it is generated, see Figure 10.
19
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Certain edges will have special requirements on the mesh. Flanges may connect to other geometry in a whole engine model, (WEM). A specified number of equal-length elements should then be placed along those edges. Another example of edges which requires specified edge densities is interfacing sheet bodies, (see Preprocessing using Knowledge Fusion above). These edges can be identified and given proper edge densities with help of rules. When using shell elements local discontinuities may occur. Such have not been accounted for. Examples of such discontinuities could be: What is the best way to model a 90 degree-connection between surfaces, [Normark].17 How load-transferring flanges are best represented? Is there need for stiffening rims? (Integrating beam elements are a possible solution in the last two cases.)
2.3.7 Reliable mesh generation From experience of meshing in UG NX a reliable method of mesh generation that meets the requirements and is possible to implement in KF have been found. 1. Subdivide Shell-bodies – create ”square” faces 2. Set number of elements (Edge Density) along all edges 3. Use auto-mesh function It can be seen that 1. and 2. are “extra” steps. However, it is a method that ensures a good quality of the mesh and repetitiveness. This is especially important since the method is to be implemented in an application. Small anomalies can not be corrected by hand as in interactive meshing. The tasks of subdividing and setting edge densities are mundane and time consuming but when automated this does no longer apply.
2.4 Formalize To strictly follow MOKA, a formal model should be created as knowledge is structured. The reason for doing this is to prepare the knowledge for implementation in a standardized form. The formal model should be independent of which KBEplatform that is to be used. As stated above, the procedure has been different in this project. Based on the knowledge gathered, a process description on what the application should look like is created as a complement to the knowledge gathered [Isaksson].6 The class structure and what tasks should be done in each class is described in the process description, APPENDIX C shows an example of a strut scenario class.
2.5 Package This step in the process refers to implementing the formal model into KBE-platform of choice, i.e. programming. This has, by far, been the most time consuming part of the project. A simplified example of meshing a shell can be found in APPENDIX A.
2.6 Activate The activate step is the process of populating the finished application. However, the object of this project was to pilot an application, not to activate it. The model has been instantiated with specifications for an ongoing IMC development project at Volvo Aero. Models have been presented and used in this project.
20
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
3. Results The results of the complete project are three separate applications that will in turn, generate the geometry, mesh it and create an input deck for Ansys. The generated code in itself may also be considered a result. The way to implement rules in KF in order to perform preprocessing is the topic of interest for this project.
3.1 Meshing Application The meshing application that was the main objective of this thesis work has been created. It is “general” in the sense that it can combine the use of modules to mesh different designs. Presently it is limited to the geometry modules defined in this project, i.e. a rather simplified representation of an IMC. As more geometry modules are created, more meshing modules (as well as input deck modules) can be added. For this cause, most of the generated code can be reused which will reduce development time dramatically. The results of the meshing application can be seen in Figure 10. The starting point is a “clean” geometry and the output is a mesh of the model. The intermediate step shown in Figure 10 shows how the model is subdivided. The output is a rule based mesh. Parameters that can be varied are: Material properties, thickness of each module and certain edge densities. Besides this the mesh can be created on any geometry configuration generated in the first step.
Figure 10: The meshing process
A simplified process of the meshing application can be seen in Figure 11. The meshing application consists of two independent parts with their respective interfaces. The subdivide part will result in the subdivided model, fig 9. The input needs to be the geometry generated in the first step of the project. The mesh part will give the final result and needs the subdivided model as input.
21
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Mesh Application Subdivide
Mesh
1) Create intersections
1) Create scenario
2a) Create planes
2) Sort edges
2b) Find intersections
3) Set ED
3a) Create lines
4) Sort Faces
3b) Project lines
5) Mesh Faces/Sheet bodies
4) Subdivide
Figure 11: Overview of the Meshing application
3.1.1 Inputs The geometry generated in the first step is a necessary input for the meshing application. The reason for this is that the geometry is known and defined in a certain way. All sheet bodies and some faces are named according to a nomenclature, see APPENDIX B. Also, how to sort edges and faces are based on geometric locations as well as their numbers. The amount of edges varies when the amount of struts change, this has been taken account for. However, should the outer ring contain one additional edge, that will disturb the sorting of edges. The result would likely be at least one edge having the wrong edge density. There are also user defined inputs that are given in interfaces. Each input is a parameter defined in the top class. The parameter is then sent down to all necessary module classes. Figure 12 show the independent interfaces of the subdivide and mesh part of the meshing application. As can be seen the application will not recognize the geometry by it self, (no information is not sent from the geometry generation step). Instead features such as amount of struts and what modules to mesh are user defined inputs. (The reason for this approach is because of stability issues.) Other variables can be given as well, for example number of elements along the outer ring flanges etc.
22
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Figure 12: Interfaces of the Meshing application
3.1.2 Subdivide The subdivide part of the meshing application aims to divide all surfaces into square faces. This is done first, by creating intersecting lines between all struts and rings. These lines are then used to create faces and edges on the rings corresponding to the intersecting struts, see Figure 13. Second, planes are defined based on the geometry. Intersection lines between the planes and the geometry are used to subdivide the sheet bodies. Third, lines are created based on the geometry. These lines are then projected onto the geometry and used for the final subdividing of sheet bodies. The tasks that are automated here can be considered repetitive and extremely tedious. Using a KBE-application this will take about two minutes to perform.
Figure 13: Planes and lines used for subdividing the IMC
3.1.3 Mesh The mesh part aims to create a mesh with given inputs like specific edge densities, thicknesses and material properties on the subdivided model. The class structure of the meshing application can be seen in Figure 14. Also, the tasks of each class are
23
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
listed. A simplified example of meshing in KF can be seen in APPENDIX A, for the complete code of some of the classes of the meshing application see APPENDIX D. Mesh shell_mesh_applic ation_class 1) Accept indata 2) Number struts
meshing_class 1) Start the correct module classes
3) Start meshing_class
Support_structure_Sce nario_class Core_Strut_Scenario_ 1a)class Sort edges Splitter_Box_Scenario 1b)1a) Set edge density Sort edges _class Bypass_Strut_Scenari 2) Sort faces 1b)1a) Set edge density Sort edges o_class Outer_Ring_Scenario_ 3) Mesh sheet 2) Sort faces 1b)1a) Set edge density Sort edges class bodies/faces 3) Mesh 2) Sort faces 1b)sheet Set edge density 1a) Sort edges bodies/faces 3) Mesh 2) Sortsheet faces bodies/faces 3) Mesh sheet 1b) Set edge density bodies/faces 2) Sort faces 3) Mesh sheet bodies/faces
Figure 14: Class structure of the mesh part of the Meshing application
Most challenging is to properly sort all edges of the geometry. This is done separately in each module class. The approach is listed below: • • • •
Find all edges/boundary edges on Sheet Bodies/Faces by reference to names Sort out edges that fulfil certain conditions, ex: constant cylindrical coordinates Remove edges from initial list Further sorting by length, distance to points etc.
As an example of this, the sorting process of all edges in the outer ring (32 bypass struts) is showed in Figure 15. The flange edges are found easily since they are boundary edges of the sheet body, (which is the complete outer ring). The constant radius edges are all edges whose start and endpoint describes equal length vectors towards the axial axis. From those the amount of long/short edges is known (based on the amount of struts). The “problem edges” are those that do not fulfil the previous criteria. They can be sorted according to various other criteria. In this case it is enough to differentiate them from their position along the axial axis. 576 long edges Outer Ring 1312 edges
128 flange edges
672 constant radius edges
96 short edges
512 ”problem edges”
384 Interface edges 128 Intermediate edges
Figure 15: Sorting edges on the outer ring
24
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
3.1.4 Preprocessing Lead Time The complete procedure, going from scratch to an input deck, can be performed in an hour which was the stated goal. In Table 1 below the time needed to perform each task in the project is listed in comparison to an estimation of the same task done interactively using current software at Volvo Aero, (estimated with help from engineers at Volvo Aero).
Geometry: Subdivide: Mesh: Analysis file: Total:
KBE-application < 1 minute 2 – 3 minutes 8 – 45 minutes 1 – 2 minutes < 1 hour
interactively 0.5 – 5 hours over 2 – 20 hours 1 – 10 hours similar (using macro) 3.5 – 35 hours
Table 1: Time consumption
It can be seen that there is quite a dramatic reduction in lead time. Especially since 3.5 hours is a rather optimistic result. Also, using the KBE-applications one engineer can do all steps on the same computer. It is likely that several engineers using several computers will be involved in performing the same process interactively. Translating instructions and data between engineers and computers will then take additional time as well as resources. It can be seen in Table 1 that the time needed to complete meshing on a geometry that is already subdivided is relatively long. This takes up to an hour whilst subdividing of the geometry is a matter of minutes. Generating and updating the geometry takes even less time. There may be two reasons for this. First - the procedure of meshing is time-consuming. Second - how the code is built up in the meshing part. Presently, all edges have to be found, sorted correctly and given an edge density. This calls for a lot of loops since there may be more than 3000 edges in a subdivided IMC model. In KF the source code is compiled during the process. In comparison, UG Open uses C which is precompiled. The difference in time consumption between the two is especially obvious when it comes to loops. Thus, when large loops can not be avoided they should be performed by calling an UG Open function. Computing time might be reduced somewhat if the present code is refined according to this guideline. In fig the time consumption for running through the complete process (geometry generation to input deck) is plotted with respect to number of bypass struts. It can be seen that the relationship is almost linear. What is interesting to note is that all things are constant except for the amount of edges that also increase linearly. This further supports the reasoning above that the loops in the sorting procedure are the most time consuming part.
25
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Time [minutes]
Time to run the application 50 45 40 35 30 25 20 15 10 5 0 8
16
24
32
Number of struts
Figure 16: Total lead time of the KBE-applications in the project
3.1.5 Varying thickness Thickness may be given as in data to ug_cae_shell_mesh_class which is a predefined KF class. Varying thickness on a sheet body means setting different thickness to faces on the sheet body. Sorting of faces on the outer ring was done so that thickness could be varied in sectors - one sector for each bypass strut. This presented some difficulties, though. Giving neighboring faces as in data to different calls on the UG meshing class is not possible in the KF version used. This has been reported as a bug to UGS and has resulted in a fix in UG NX3 and later versions.
3.1.6 Managing the code An approach for managing the code is to create new subdivide and meshing modules for each new geometry module that is created. Also - as soon as present geometry modules are changed - its correlating meshing module needs to be updated as well. This could seem a strenuous task and in some ways it is. There is a need to fully understand the code before any editing is done. However, when that understanding is achieved it will take an experienced engineer only a few hours to implement code for a complete new geometry. Most of the code can be reused. The 80/20 model is applicable, [Isaksson]6. If entire subdividing and meshing modules can be can be used for new geometry the time needed is even less.
26
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
4. Conclusions Is it possible to use KF for generative preprocessing and reduce lead time? Present meshing in Ansys, Nastran or Unigraphics is time consuming. Knowledge driven preprocessing is a possible alternative that will reduce lead time. It will also capture and reuse knowledge, enable iterations of multiple design solutions and automate tedious routine tasks. The drawback with KBE is the initial effort that is needed before the application is ready to use.
4.1 Managing the application Managing the application means keeping the code of the application up to date. It also means adding new geometry- and subdivide-/meshing- modules to a “library”. With time this library can grow to include more geometry such as intermediate compressor cases and turbine exhaust cases etc. Methods and procedures might need revision as new software functionality becomes available. In addition - from a knowledge management perspective - documentation of what is implemented needs to be kept: which modules of geometry-generation/subdividing/meshing are included, what are the procedures and rules that are included in them etc. A conclusion is that the time needed for managing this kind of application is considerable. It is only when needed geometry is fully implemented that the application becomes truly powerful. Note that implementing this geometry may be done before specifications for a new project are given and time is limited. Future demands can be predicted and code to meet those demands created. This will reduce risk of “bottle necks”.
27
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
5. Discussion Does the meshing application fulfill the stated objectives? It is actually possible to generate a meshed model in less than an hour. When it comes to being general in the sense of geometry it will only work with the implemented modules. When new specifications are given, new modules need to be implemented. It is this initial work that is the cost of reducing the lead time. Preprocessing according to best practice will not have an initial time cost. Lead times are longer, (see Table 1) but can perhaps be shortened with updated and improved preprocessing software.
5.1 Quality of Mesh Creating a mapped mesh can in some cases be considered unnecessary effort. However the procedure that is implemented is gives reliable results with present functionality. Also, since the mesh generation is automated the time loss of creating a mapped mesh is minimal. Instead, a mesh this closely controlled will ensure quality in repeated analyses, especially when results of different configurations need to be compared.
5.2 Limitations As a consequence of the meshing approach, the code has to be carefully managed and updated in order to stay functional. When geometry is changed the rules used to subdivide and mesh this geometry may no longer apply. Small changes in the geometry can lead to need of dramatic changes in the code. On the other hand, as long as the sheet bodies and the number of edges are the same there is only need for minor changes. Tolerances in the sorting process may need adjustment in order to find all edges. Also, some edge densities may need to be changed.
5.3 Lead Time of the Meshing Application The time consumption for running through the complete application is less than an hour depending on the amount of edges in the model. Handling and sorting large amount of edges of the model is time consuming. Refining the code and using UG Open for sorting can reduce lead time. A cut in lead time will be also achieved if the implemented method can be changed so that only a few edges need to be sorted and given edge density. However this is related to the complexity of the geometry and the functionality of the preprocessing software.
5.4 Further development For further development of the meshing application an intermediate step can be added. This would be to sort and name the edges outside the scenario. In the scenario classes the edges may then be found by their names and given a proper edge density. This would give a possibility to edit named edges interactively. The scenario classes could then be called upon to give edge densities and mesh the geometry. The Meshing Application also needs further testing and refinement to resolve stability issues and improve performance. Implementing the possibility to include connection to solid 3D mesh and beams will increase accuracy when modelling interfaces and stiffeners.
28
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
5.5 Lessons learned Some of the things that I have learned through the work in this project: •
•
•
•
Implementing new, never before tried functionality is time-consuming. Knowledge and experience of the programming language is important in this situation, especially when “work-arounds” are needed. Implementing functionality similar to such previously used is fast. “Copy-Paste” can be used with great success. But also here is it important to know the programming language in order to reuse code correctly. Working closely together in a small group is dynamic and efficient. Cooperating with difficult tasks saves time. Sharing information in a small group is easily done on an informal level. Documenting the information is still necessary, especially in a rapid prototyping project where different versions of the application are continuously developed. When an application is created it will take some effort to maintain it. Both functionality and documentation of the implemented knowledge needs to be kept up to date. Otherwise there is a risk that the application turns in to a “black box”. The input is given and output is received but no one besides the author of the code knows what is happening in between. Keeping a positive “it can be done” attitude in the group is important. During the course of the project there is bound to be setbacks and some of the work done will prove unnecessary. A positive attitude and support from co workers makes it easier to find “work-arounds” to problems that might seem impossible to overcome.
29
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
References 1 Ten CAD Challenges Kasik, David R, Buxton, William, Fergusson, David J 2005 | IEEE Computer Graphics and Applications, March/April 2005 2 Facts on Volvo Aero 2005 | Internal Volvo Aero Document 3 The Jet Engine 1996 | Rolls-Royce plc 1986, fifth edition ISBN 0 902121 2 35 4 Design Manual, IMC 1997 | Internal Volvo Aero document 5 Functional Jet-Engine Component, Modeling using KBE Boart, Patrik. Jonasson, Pierre 2002 | Luleå University of Technology Department of Physics and Mechanical Engineering Division of Computer Aided Design ISSN 1402-1617 : 2002:207 6 A generative modeling approach to engineering design Isaksson, Ola 2003 | INTERNATIONAL CONFERENCE ON ENGINEERING DESIGN ICED 03 STOCKHOLM, AUGUST 19-21, 2003 7 Engineering Design- Some Aspects of Product Development Efficiency Trygg, Lars 1991 | Chalmers University of Technology, Department of Industrial Management and Economics ISBN 91-7032-548-0 8 Knowledge enabled engineering design tools for manufacturability evaluation of jet engine components Sandberg, Marcus 2002 | Luleå University of Technology Department of Physics and Mechanical Engineering Division of Computer Aided Design ISSN 1402-1757 : 2005:16 9 Validation and verification of structural analysis Normark, Lars-Ola 2003 | Luleå University of Technology Department of Physics and Mechanical Engineering ISSN 1402-1617 : 2003:016 10 Load Path Design of a Jet Engine Component Rajagopal, Loganathan Still to be Published by: Blekinge Institute of Technology 11 A Survey of methods and approaches to knowledge Benson, Maria, Terpenny, Janis 2001 | Proceedings of DETC’01 Asme 2001 Design Engineering Technical Conference and Computers and Information in Engineering Conference Pittsburg, PA, September 9-12, 2001
30
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
12 Strategies for modeling geometry in Knowledge Based Engineering systems Petter Andersson 2001 | Luleå University of Technology Department of Physics and Mechanical Engineering Division of Computer Aided Design ISSN 1402-1617 : 2001:178 13 Managing Engineering Knowledge MOKA: Methodology for Knowledge Based Applications Edited by Melody Stokes on behalf of the MOKA consortium 2001 | Professional Engineering Publishing Limited ISBN 1 86058 295 8 14 KBE platforms: Knowledge Fusion http://www.UGS.com, accessed 2005-05-24 ICAD http://www.ktiworld.com, accessed 2005-05-24 AML http://www.technosoft.com, accessed 2005-05-24 Design++ http://www.dp.com, accessed 2005-05-24 15 Knowledge driven pre-processing, analysis input definition Bylund, Ida Still to be published by: Luleå University of Technology 16 Generative design and optimisation of the primary structure for a commercial transport aircraft wing. Rondeau, D L, Peck, E A, Williams, A F, Allwright, S E, Shields, L D (British Aerospace, PLC, Woodford, United Kingdom) 1996 | AIAA-1996-4135 NASA, and ISSMO, Symposium on Multidisciplinary Analysis and Optimization, 6th, Bellevue, WA, Sept. 4-6, 1996, Technical Papers. Pt. 2 (A96-38701 10-31) 17 Concepts and applications of finite element analysis Cook, Robert D, Malkus, David S, Plesha, Michael E, Witt, Robert J 2001 | fourth edition John Wiley & Sons, INC
ISBN 0-471-35605-0
Related Links Volvo Aero homepage http://www.volvo.com/volvoaero/global/en-gb/ accessed 2005-05-24 Libris, National computerized Library system http://www.libris.kb.se/sok/sok.jsp accessed 2005-05-24 The international Institute of Concurrent Engineering http://www.ceteam.com/communitiesTrack/knowledgebase.asp accessed 2005-05-24 The International Meshing Roundtable http://www.imr.sandia.gov/ accessed 2005-05-24 PLM World newsletter (Product Lifecycle Management, UGS) http://newsletter.plmworld.org/ accessed 2005-05-24
31
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix A - Meshing using KF Mesh example class # These are definitions of necessary parameters (string parameter) part_name: (string parameter modifiable) scenario_name: (string parameter modifiable) scenario_name_str:
ug_askCurrentWorkPart(); "scenario_1"; scenario_name: + ".prt" ;
# This parameter creates the scenario in which ug_cae_mesh_shell is fired (boolean parameter modifiable) structures_scen: ug_createNewScenario(scenario_name_str:);
###### Child Rules ####################### (child) Mesh: { class; ug_child_in_scenario; Target_File_Name; scenario_name_str:; Parameters; { class; mesh_example_scenario_class; master_name; part_name:; }; DemandOrder; {structures_scen:}; };
32
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Mesh example scenario class (string parameter) master_name: ; #These parameters will decide if the children creating the meshes will run or not. (boolean parameter) toggle_mesh_1: true; (boolean parameter) toggle_mesh_2: true # So far this is the only way found to find the hostpointer to the sheet body. (list) h_pointer_Mesh_Sheet_Body: {ref(mesh1_wave_feature:, makename("MESH_SHEET_BODY"))};
#This will find the hostpointers to the two faces in the sheet body. (list parameter) List_of_all_faces: ug_body_askFaces(first(h_pointer_Mesh_Sheet_Body:)); (list parameter) mesh_tag_1: (list parameter) mesh_tag_2:
{first(List_of_all_faces:)}; {second(List_of_all_faces:)};
#hostpointer to first face #hostpointer to second face
###### Child Rules ####################### # Wave copying the master link geometry into the scenario (child) mesh1_wave_feature: { class; ug_extract_body; File_Name; master_name:; Object_Name; "MESH_SHEET_BODY"; }; # This child will attempt to mesh a face on the sheet body. (child) mesh1:{ class; If toggle_mesh_1: = True then ug_cae_mesh_shell else Nulldesign; geometry_tags; mesh_tag_1:; elem_type; quad4; split_quads; true; thickness; 0.3; element_size; 100.0; Material_name; "Aluminum_2014"; DemandOrder; {mesh1_wave_feature:}; }; # This child will attempt to mesh the other face on the sheet body. (child) mesh2:{ class; If toggle_mesh_2: = True then ug_cae_mesh_shell else Nulldesign; geometry_tags; mesh_tag_2:; elem_type; quad4; split_quads; true; thickness; 1.0; element_size; 100.0; Material_name; "Aluminum_2014"; DemandOrder; {mesh1:}; };
33
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix B – Programming Nomenclature These sheet bodies and faces in the geometry need to be given these names if it is to be used as input to the Meshing application. Outer Ring Outer ring sheet body Outer ring middle face
OR_B OR_M_F
Bypass strut Bypass strut Sheet body
STR_BY_B
Splitter box Splitter box bypass ring sheet body Splitter box bypass ring middle face Splitter box core sheet body Splitter box front torsion ring sheet body Splitter box rear torsion ring sheet body
SPLB_BY_B SPLB_BY_MI_F SPLB_CO_B SPLB_FR_B SPLB_RE_B
Core strut Core strut sheet body
STR_CO_B
Support structure Support structure core ring sheet body Support structure cone ring sheet body Support structure front torsion ring sheet body Support structure rear torsion ring sheet body
SUPS_CO_B SUPS_CON_B SUPS_FR_FL_F SUPS_RE_FL_F
34
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix C - Process description
Outer Ring Scenario Class Indata Geometry, conf., edge densities, mtrl. thickness prm.
Activity 1
Generate lists of meshing parameters
Method
empty
empty
empty
Sheet body name
2 Find all edges in geometry
By reference to sheet body name empry
empty
3 Sort flange edges
Find boundary edges
empty
empty
4
Set edge density on boundary edges
empty
Sort ”circular” edges
Find edges with constant radius to start and end points
empty
Original list – sorted edges
5
empty
empty
6
Sort out edges that runs axially
Compare start- and end-point coordinates empty
empty
7
Sort out ”long” ”circumferential” edges
Find edges with a certain kength empty
empty
8
Set edge density on short & long edges
By reference to sheet body name empry
Original list – sorted edges
9 Sort out edges that runs axially
Compare stert- and enp-point coordinates empty
empty
10
Set edge density on ”axial” edges
empty
empty
Original list – sorted edges
11 Sort ”problem” edges
By various position vactors
empty
empty
12
Set edge density on ”problem” edges
empty
empty
Sheet body name
13 Mesh Oter ring sheet body
Reference Ref erence to sheet body name
35
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix D.1 – Shell_Mesh_Application_CLASS ####### Public Properties ################ # NOTE 1: All Public defined properties are output. # NOTE 2: property-definitions being parameters are Input. ##################
Interface Inputs ########################
(boolean parameter modifiable) Toggle_create_input_deck: false; (boolean parameter modifiable) Toggle_SUPS: false; (boolean parameter modifiable) Toggle_CO: false; (boolean parameter modifiable) Toggle_SPLB: true; (boolean parameter modifiable) Toggle_BY: false; (boolean parameter modifiable) Toggle_OR: false;
(list parameter modifiable)
Toggle_Present_Modules: {Toggle_SUPS: ,Toggle_SPLB: ,Toggle_OR: ,Toggle_CO: ,Toggle_BY:};
################################################################# (integer parameter modifiable) type_of_outer_ring: 0; # 1 = Line, else Spline (integer parameter modifiable) no_co_struts: 10; (integer parameter modifiable) no_by_struts: 10; (integer parameter modifiable) ED_co_edges: 2; (integer parameter modifiable) ED_by_edges: 10; (integer parameter modifiable) ED_long_co_intf_edges: 2; (integer parameter modifiable) ED_short_co_intf_edges: 1; (integer parameter modifiable) ED_long_by_intf_edges: 2; (integer parameter modifiable) ED_short_by_intf_edges: 1;
(list parameter modifiable) Meshing_Parameters: {type_of_outer_ring: ,no_co_struts: ,no_by_struts: ,ED_co_edges: ,ED_by_edges: ,ED_long_co_intf_edges: ,ED_short_co_intf_edges: ,ED_long_by_intf_edges: ,ED_short_by_intf_edges:};
################################################################## (integer parameter modifiable) no_SUPS_circumf_elem: 64; (integer parameter modifiable) no_SPLB_circumf_elem: 96; (integer parameter modifiable) no_OR_circumf_elem: 128;
(list parameter modifiable) no_circumf_elem: {no_SUPS_circumf_elem: ,no_SPLB_circumf_elem: ,no_OR_circumf_elem:};
################################################################## (integer parameter modifiable) no_subdivisions: 3; ################################################################## (number parameter modifiable) SUPS_thickness: 2.1; (number parameter modifiable) STR_CO_thickness: 2.1; (number parameter modifiable) SPLB_thickness: 2.1; (number parameter modifiable) STR_BY_thickness: 2.1; (number parameter modifiable) OR_thickness: 2.1;
(list parameter modifiable) Thickness_Parameters: {SUPS_thickness:
36
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
,STR_CO_thickness: ,SPLB_thickness: ,STR_BY_thickness: ,OR_thickness:};
################################################################## #för interfacet bara. (string parameter modifiable) Overall_material: Aluminium; (integer parameter modifiable) SUPS_material: 2; (integer parameter modifiable) STR_CO_material: 2; (integer parameter modifiable) SPLB_material: 2; (integer parameter modifiable) STR_BY_material: 2; (integer parameter modifiable) OR_material: 2;
(list parameter modifiable) Material_Parameters: {SUPS_material: ,STR_CO_material: ,SPLB_material: ,STR_BY_material: ,OR_material:};
#
Internal procedure
####### Private Properties ############### # NOTE 1: All Internal defined properties should only be used internally. # NOTE 2: The Intent! language does not protect these properties from external users
###### Child Rules ####################### # (Child) subdivide: { # class; MAIN_subdivide_IMC_mid_shell_CLASS; # Toggle_Present_Modules; Toggle_Present_Modules:; # List_of_Meshing_Parameters; Meshing_Parameters:; # List_of_no_circumf_elem; no_circumf_elem:; # List_of_no_subdivisions; no_subdivisions:; # List_of_Thickness_Parameters; Thickness_Parameters:; # List_of_Material_Parameters; Material_Parameters:; # }; (Child) num_core: { class; Number_struts_CLASS; No_of_Struts; no_co_struts:; core_bypass_strut; 0; # DemandOrder; {subdivide:}; }; (Child) num_bypass: { class; Number_struts_CLASS; No_of_Struts; no_by_struts:; core_bypass_strut; 1; # DemandOrder; {subdivide:}; }; (Child) mesh: { class; meshing_class; Toggle_input_deck; Toggle_create_input_deck:; Toggle_Present_Modules; Toggle_Present_Modules:; List_of_Meshing_Parameters; Meshing_Parameters:; List_of_no_circumf_elem; no_circumf_elem:; List_of_no_subdivisions; no_subdivisions:; List_of_Thickness_Parameters; Thickness_Parameters:; List_of_Material_Parameters; Material_Parameters:; DemandOrder; {num_core,num_bypass:}; }; #
37
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix D.2 – Meshing_CLASS ####### Public Properties ################ # NOTE 1: All Public defined properties are output. # NOTE 2: property-definitions being parameters are Input. (string parameter) part_name: ug_askCurrentWorkPart(); (string parameter modifiable) scenario_name: "scenario_1"; (string parameter modifiable) scenario_name_str: scenario_name: + ".prt" ; (boolean parameter modifiable) structures_scen: ug_createNewScenario(scenario_name_str:);
##################
Interface Inputs ########################
(string parameter modifiable canonical) master_name: ; (boolean parameter modifiable) Toggle_input_deck: false; (list parameter modifiable)
Toggle_Present_Modules: {true,true,true,false,false};
################################################################# (list parameter modifiable) List_of_Meshing_Parameters: {1 ,10 ,10 ,2 ,10 ,1 ,1 ,1 ,1}; (integer parameter modifiable) type_of_outer_ring: nth(1,List_of_Meshing_Parameters:); # 1 = Line, else Spline (integer parameter modifiable) no_co_struts: nth(2,List_of_Meshing_Parameters:); (integer parameter modifiable) no_by_struts: nth(3,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_co_edges: nth(4,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_by_edges: nth(5,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_long_co_intf_edges: nth(6,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_short_co_intf_edges: nth(7,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_long_by_intf_edges: nth(8,List_of_Meshing_Parameters:); (integer parameter modifiable) ED_short_by_intf_edges: nth(9,List_of_Meshing_Parameters:);
################################################################## (list parameter modifiable) List_of_no_circumf_elem: {40 ,60 ,80}; (integer parameter modifiable) no_SUPS_circumf_elem: first(List_of_no_circumf_elem:); (integer parameter modifiable) no_SPLB_circumf_elem: second(List_of_no_circumf_elem:); (integer parameter modifiable) no_OR_circumf_elem: third(List_of_no_circumf_elem:);
################################################################## (integer parameter modifiable) List_of_no_subdivisions: 5; ################################################################## (list parameter modifiable) List_of_Thickness_Parameters: {0.1 ,0.1 ,0.1 ,0.1 ,0.1}; (number parameter modifiable) SUPS_thickness: nth(1,List_of_Thickness_Parameters:); (number parameter modifiable) STR_CO_thickness: nth(2,List_of_Thickness_Parameters:); (number parameter modifiable) SPLB_thickness: nth(3,List_of_Thickness_Parameters:); (number parameter modifiable) STR_BY_thickness: nth(4,List_of_Thickness_Parameters:); (number parameter modifiable) OR_thickness: nth(5,List_of_Thickness_Parameters:);
38
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
################################################################## (list parameter modifiable) List_of_Material_Parameters: {0.1 ,0.1 ,0.1 ,0.1 ,0.1}; (integer parameter modifiable) SUPS_material: nth(1,List_of_Material_Parameters:); (integer parameter modifiable) STR_CO_material: nth(2,List_of_Material_Parameters:); (integer parameter modifiable) SPLB_material: nth(3,List_of_Material_Parameters:); (integer parameter modifiable) STR_BY_material: nth(4,List_of_Material_Parameters:); (integer parameter modifiable) OR_material: nth(5,List_of_Material_Parameters:);
#
Internal procedure
####### Private Properties ############### # NOTE 1: All Internal defined properties should only be used internally. # NOTE 2: The Intent! language does not protect these properties from external users
(list parameter) List_of_a_SB_in_All_Modules: {"SUPS_FR_B" ,"STR_CO_B_1" ,"SPLB_FR_B" ,"STR_BY_B_1" ,"OR_B"};
(list parameter) Present_Sheet_Bodies: loop { for $idx from 1 to length(Toggle_Present_Modules:); if nth($idx,Toggle_Present_Modules:) = true append {nth($idx,List_of_a_SB_in_All_Modules:)}; };
(list parameter) List_of_Meshing_Classes: {Vital_ISS_scenario_CLASS ,Vital_Splitter_Box_scenario_CLASS ,Vital_Outer_Ring_scenario_CLASS ,Vital_Core_Strut_scenario_CLASS ,Vital_Bypass_Strut_scenario_CLASS};
###### Child Rules ####################### (Child) num_core: { class; Number_struts_CLASS; No_of_Struts; no_co_struts:; core_bypass_strut; 0; };
(Child) num_bypass: { class; Number_struts_CLASS; No_of_Struts; no_by_struts:; core_bypass_strut; 1; };
(child) Scenario_data: { class; ug_child_in_scenario; Target_File_Name; scenario_name_str:; Parameters; { class; Scenario_data_CLASS; }; DemandOrder; {structures_scen:, num_core: ,num_bypass:}; }; #+ ug_child_in_scenario creating the structures model See example file example_scenario.dfa for more detail. #-
39
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
(child list) Meshing_modules: { class; ug_child_in_scenario; Target_File_Name; scenario_name_str:; Parameters; { class; If nth(Child:Index:,Toggle_Present_Modules:) = True then nth(Child:Index:,List_of_Meshing_Classes:) else Nulldesign; master_name; part_name:; Meshing_Param; List_Of_Meshing_Parameters:; no_circumf_elem; List_of_no_circumf_elem:; no_divisions; no_subdivisions:; Thickness_Param; List_Of_Thickness_Parameters:; Material_Param; List_of_Material_Parameters:; }; Quantity; length(List_of_a_SB_in_All_Modules:); #Make sure that the scenario is created and #the the geometry exists in the master model DemandOrder; {Scenario_data:}; };
(child) Ansys_input_deck: { class; ug_child_in_scenario; Target_File_Name; scenario_name_str:; Parameters; { class; If Toggle_input_deck: = True then Ansys_Input_deck_CLASS else Nulldesign; }; DemandOrder; {Meshing_modules:}; };
#
40
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
Appendix D.3 – Outer_Ring_Scenario_CLASS ####### Public Properties ################ # NOTE 1: All Public defined properties are output. # NOTE 2: property-definitions being parameters are Input. (boolean parameter) toggle_mesh_1: true; (boolean parameter) toggle_mesh_2: false; ##################
Interface Inputs ########################
(string parameter modifiable canonical) master_name: ; ################################################################# (list parameter modifiable) meshing_param: {1 ,10 ,10 ,2 ,10 ,2 ,1 ,2 ,1}; (integer parameter modifiable) type_of_outer_ring: nth(1,meshing_param:); # 1 = Line, else Spline (integer parameter modifiable) no_co_struts: nth(2,meshing_param:); (integer parameter modifiable) no_by_struts: nth(3,meshing_param:); (integer parameter modifiable) ED_co_edges: nth(4,meshing_param:); (integer parameter modifiable) ED_by_edges: nth(5,meshing_param:); (integer parameter modifiable) ED_long_co_intf_edges: nth(6,meshing_param:); (integer parameter modifiable) ED_short_co_intf_edges: nth(7,meshing_param:); (integer parameter modifiable) ED_long_by_intf_edges: nth(8,meshing_param:); (integer parameter modifiable) ED_short_by_intf_edges: nth(9,meshing_param:);
################################################################## (list parameter modifiable) no_circumf_elem: {40 ,60 ,80}; (integer parameter modifiable) no_SUPS_circumf_elem: first(no_circumf_elem:); (integer parameter modifiable) no_SPLB_circumf_elem: second(no_circumf_elem:); (integer parameter modifiable) no_OR_circumf_elem: third(no_circumf_elem:);
################################################################## (integer parameter modifiable) no_divisions: 5; (integer parameter modifiable) no_edges: if type_of_outer_ring: = 1 then no_divisions:+8 else no_divisions:+6; ################################################################## (list parameter modifiable) thickness_param: {0.1 ,0.1 ,0.1 ,0.1 ,0.1}; (number parameter modifiable) SUPS_thickness: nth(1,thickness_param:); (number parameter modifiable) STR_CO_thickness: nth(2,thickness_param:); (number parameter modifiable) SPLB_thickness: nth(3,thickness_param:); (number parameter modifiable) STR_BY_thickness: nth(4,thickness_param:); (number parameter modifiable) OR_thickness: nth(5,thickness_param:); ##################################################################
41
Knowledge Driven Preprocessing – Automating mesh generation for static load bearing jet-engine components
(list parameter modifiable) Material_Param: {"TITANIUM_ALLOY" ,"TITANIUM_ALLOY" ,"TITANIUM_ALLOY" ,"TITANIUM_ALLOY" ,"TITANIUM_ALLOY"}; (integer parameter modifiable) SUPS_material: nth(1,Material_Param:); (integer parameter modifiable) STR_CO_material: nth(2,Material_Param:); (integer parameter modifiable) SPLB_material: nth(3,Material_Param:); (integer parameter modifiable) STR_BY_material: nth(4,Material_Param:); (integer parameter modifiable) OR_material: nth(5,Material_Param:);
#
Internal procedure
####### Private Properties ############### # NOTE 1: All Internal defined properties should only be used internally. # NOTE 2: The Intent! language does not protect these properties from external users ############################################################################### ######################### All Edges in Outer Ring ######################### ###############################################################################
(list) h_pointer_OR: {ref(mesh1_wave_feature:, makename("OR_B"))}; (list parameter) Edges: ug_body_askEdges(first(h_pointer_OR:));
##################################################################################### ######################### Constant x Edges (x = axial axis) ##################### #####################################################################################
(list parameter) Sort_Circumf_edges: loop { for $idx from 1 to length(Edges:); for $startpoint is ug_curve_askStartpoint(nth($idx,Edges:)); for $endpoint is ug_curve_askEndpoint(nth($idx,Edges:)); for $tangent is $endpoint - $startpoint; if abs(localx($tangent)) < 0.03 append {nth($idx,Edges:)}; }; (list parameter) FLANGE_EDGES: loop { for $idx from 1 to length(Sort_Circumf_edges:); for $startpoint is ug_curve_askStartpoint(nth($idx,Sort_Circumf_edges:)); for $endpoint is ug_curve_askEndpoint(nth($idx,Sort_Circumf_edges:)); for $startp_angle is if localy($startpoint) = 0 then 90 else atan(localz($startpoint)/localy($startpoint)); for $endp_angle is if localy($endpoint) = 0 then 90 else atan(localz($endpoint)/localy($endpoint)); if abs($endp_angle-$startp_angle) < 0.03 append {nth($idx,Sort_Circumf_edges:)}; }; (list parameter) Circumf_edges: setDifference(Sort_Circumf_edges:,FLANGE_EDGES:); (integer parameter modifiable) no_long_circumf_edges: no_edges:*no_by_struts:*2; # (integer parameter modifiable) no_short_circumf_edges: 2*no_divisions:*no_by_struts:; (list parameter) LONG_CIRCUMF_EDGES: @{ $sorted_list 0) & ($z > 0)) then atan($z/$y) else if (($y > 0) & ($z