Abstract:
A facility provides functionality for performing customized analysis on finite element models. The facility may include a finite element post processing framework, wherein the finite element post processing framework is not specific to a particular finite element model. The facility may also include an interface component configured to receive input from an end user, wherein the interface component receives input associated with customizing the post processing framework so that it can be applied to a specific finite element model. The facility may then perform processing, such as post processing, on the specific finite element model based on customizing the post processing framework.

Description:
BACKGROUND  
       [0001]     Finite-element models are an important tool in the design and verification of many engineered structures and systems. For example, finite element models may define a working environment in terms of forces, accelerations, etc., and can thus be used to determine structural integrity of an engineered structure within that working environment. Through the use of finite element models, it is possible to break a complex system down into a manageable (finite) number of elements (e.g., a curve drawn as a series of steps). Finite element models may be used for several purposes. For example, finite element models may help determine the behavior of a new airplane product design under various load environments.  
         [0002]     Because of the interdisciplinary nature of finite element models (which typically combine concepts from mathematics, physics, engineering and computer science), generating and using a finite element model typically involves multiple phases such as a pre-processing phase, a processing phase, and a post processing phase. During the pre-processing phase, a finite element analyst uses one or more computer programs to develop a finite element model. In the case of a structure, this may include creating a finite element mesh to divide the structure&#39;s geometry into subdomains for mathematical analysis and applying material properties and boundary conditions to this geometry. During the processing phase, a finite element analysis program derives and solves governing matrix equations from the model created during pre-processing. During the post processing phase, the analyst uses one or more programs to check the validity of the solutions from the processing phase (e.g., displacements, stresses, specialized stresses, error indicators, etc.) and to perform other analysis.  
         [0003]     Most customized post processing programs are model-specific, meaning they are hard coded to fit a designated finite element model representing a known structure. Thus, a new programming effort may be need for new finite element models, and any changes to an existing model&#39;s geometry, design configuration, interface modeling, and output requirements may lead to additional programming efforts. Once configured, many of these post processing programs are in a rigid format and are difficult to expand or change. As a result, numerous sets of post processing programs may be required when multiple structures or structure variations are being modeled. For example, each time a new finite model is to be analyzed, a programmer may need to write and compile a new post processing program (e.g., in a programming language such as FORTRAN, Java, C++, etc.) for that specific finite element model.  
       SUMMARY  
       [0004]     A computerized facility providing a flexible scheme for analysis of finite element models is disclosed. In some embodiments, the facility allows the user to create a set of control files to define a customized processing routine that can be applied to a specific finite element model, without having to write or rewrite any programming code. For example, a non-programmer can use an interface provided by the facility to configure various aspects of a post processing routine (instead of having to write and compile a new program using a programming language such as Fortran, Java, C, C++, C#, J#, etc.). Via this interface, the user may provide model-specific attribute information that can then be applied to a flexible post processing scheme to produce a customized post processing result. The facility may be implemented using object-oriented concepts and/or other programming concepts.  
         [0005]     In some embodiments, the facility may include a finite element post processing framework, wherein the finite element post processing framework is not specific to a particular finite element model. Customizing the post processing framework may include configuring a control file to control one or more processes associated with the post processing framework. The finite element post processing framework may be based, at least in part on one or more data structures, including, for example, a database element, an interface element including a collection of degrees of freedom connecting two or more structural components, a freebody element for collecting interfaces and assembling load balance tables of components, a summary element for processing and sorting a selection of interfaces and generating a summary table, a utility functions element, a post element instantiated according to an overall process flow and scope of post processing, a graphical user interface element, etc.  
         [0006]     The facility may also include an interface component configured to receive input from an end user, wherein the interface component receives input associated with customizing the post processing framework so that it can be applied to a specific finite element model. In some embodiments, the end user does not perform hard coding when providing input to the interface. The input from the end user may include interface information specific to the finite element model, local coordinate information specific to the finite element model, component information specific to the finite element model, summary table preferences for use in generating a summary table resulting from the post processing, etc.  
         [0007]     In some embodiments, processing and/or post processing is performed on a specific finite element model by a method comprising receiving input for use in generating one or more control instructions (e.g., control files) to define a customized processing routine that can be applied to a specific finite element model, wherein receiving the input does not include a user writing or rewriting programming code, and generating the one or more control instructions based on the received input, including applying the received input to a generic processing framework, wherein generating the control instructions does not include a user writing or rewriting programming code. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0008]      FIG. 1  is a block diagram showing an example of a representative environment in which the finite element model post processing scheme may be implemented.  
         [0009]      FIG. 2  is a block diagram showing an object-oriented implementation of the finite element model post processing scheme.  
         [0010]      FIG. 3  is a data diagram showing various sample data structures associated with an example implementation of the finite element post processing scheme.  
         [0011]      FIG. 4  is a data diagram showing various classes associated with an example implementation of the finite element post processing scheme.  
         [0012]      FIG. 5  is a flow diagram showing an overview of a routine for configuring a post processing control file.  
         [0013]      FIG. 6  is a flow diagram showing a routine for defining an interface for configuration of a post processing control file.  
         [0014]      FIG. 7  is a flow diagram showing a routine for defining a local coordination system for configuration of a post processing control file.  
         [0015]      FIG. 8  is a flow diagram showing a routine for defining a component for configuration of a post processing control file.  
         [0016]      FIG. 9  is a flow diagram showing a routine for defining a summary table for configuration of a post processing control file. 
     
    
     DETAILED DESCRIPTION  
       [0000]     1. Representative Environment  
         [0017]      FIG. 1  and the following discussion provide a brief, general description of a suitable computing environment in which the post processing facility can be implemented. Although not required, embodiments of the post processing facility will be described in the general context of computer-executable instructions, such as routines executed by a general purpose computer, e.g., a server or personal computer. Those skilled in the relevant art will appreciate that the post processing facility can be practiced with other computer system configurations, including Internet appliances, hand-held devices, wearable computers, cellular or mobile phones, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers and the like. The post processing facility can be embodied in a special purpose computer or data processor that is specifically programmed, configured or constructed to perform one or more of the computer-executable instructions explained in detail below. The post processing facility can also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. Indeed, the term “computer”, as used generally herein, refers to any of the above devices and systems, as well as any data processor.  
         [0018]     Aspects of the post processing facility described below may be stored or distributed on computer-readable media, including magnetic and optically readable and removable computer disks, as well as distributed electronically over the Internet or over other networks (including wireless networks). Those skilled in the relevant art will recognize that portions of the post processing facility reside on a server computer, while corresponding portions reside on a client computer. Data structures and transmission of data particular to aspects of the post processing facility are also encompassed within the scope of the post processing facility.  
         [0019]     Referring to  FIG. 1 , a conventional personal computer  100  includes a processing unit  102 , a system memory  104 , and a system bus  106  that couples various system components including the system memory to the processing unit  102 . The processing unit  102  may be any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), application-specific integrated circuits (ASIC), etc. Unless described otherwise, the construction and operation of the various blocks shown in  FIG. 1  may be of conventional design. As a result, such blocks need not be described in further detail herein, as they will be readily understood by those skilled in the relevant art.  
         [0020]     The system bus  106  can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and a local bus. The system memory  104  may include read-only memory (“ROM”)  108  and random access memory (“RAM”)  110 . A basic input/output system (“BIOS”)  112 , which can form part of the ROM  108 , contains basic routines that help transfer information between elements within the personal computer  100 , such as during start-up.  
         [0021]     The personal computer  100  also includes a hard disk drive  114  for reading from and writing to a hard disk (not shown), and an optical disk drive  116  and a magnetic disk drive  118  for reading from and writing to removable optical disks  120  and magnetic disks  122 , respectively. The optical disk  120  can be a CD-ROM, while the magnetic disk  122  can be a magnetic floppy disk. The hard disk drive  114 , optical disk drive  116 , and magnetic disk drive  118  may communicate with the processing unit  102  via the bus  106 . The hard disk drive  114 , optical disk drive  116 , and magnetic disk drive  118  may include interfaces or controllers (not shown) coupled between such drives and the bus  106 , as is known by those skilled in the art. The drives  114 ,  116 , and  118 , and their associated computer-readable media, provide nonvolatile storage of computer readable instructions, data structures, program modules, and other data for the personal computer  100 . Although the depicted personal computer  100  may employ a hard disk, optical disk  120 , and magnetic disk  122 , those skilled in the relevant art will appreciate that other types of computer-readable media that can store data accessible by a computer may be employed, such as magnetic cassettes, flash memory cards, digital video disks (“DVD”), Bernoulli cartridges, RAMs, ROMs, smart cards, etc.  
         [0022]     Program modules can be stored in the system memory  104 , such as an operating system  124 , one or more application programs  126 , other programs or modules  128 , and program data  130 . The application programs  126  include finite element analysis facilities or applications  129 , including a post processing facility  131 . While shown in  FIG. 1  as being stored in the system memory  104 , the operating system  124 , application programs  126 , other modules  128 , and program data  130  can be stored on the hard disk of the hard disk drive  114 , the optical disk  120  of the optical disk drive  116 , and/or the magnetic disk  122  of the magnetic disk drive  118 . A database  133  that stores information for finite element models and analysis may also be present (either external or internal to the personal computer  100 ).  
         [0023]     A user can enter commands and information into the personal computer  100  through input devices such as a keyboard  132  and a pointing device such as a mouse  134 . Other input devices (not shown) can include a microphone, joystick, game pad, scanner, etc. These and other input devices are connected to the processing unit  102  through an interface  136  (e.g., a serial port interface, a parallel port, game port, universal serial bus (“USB”) etc.) that couples to the bus  106 . A monitor  138  or other display device may be coupled to the bus  106  via a video interface  140 , such as a video adapter. The personal computer  100  can include other output devices, such as speakers, printers, etc.  
         [0024]     The personal computer  100  can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer  150 . The remote computer  150  can be another personal computer, a server, a router, a database, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above for the personal computer  100 . Typically, the remote computer  150  includes a memory storage device such as a disk drive  152  shown in  FIG. 1 . The remote computer  150  is logically connected to the personal computer  100  under any known method of permitting computers to communicate, such as through a local area network (“LAN”)  154  or a wide area network (“WAN”) or Internet  156 . Such networking environments are well known in offices, enterprise-wide computer networks, intranets and the Internet.  
         [0025]     In a LAN networking environment, the personal computer  100  is connected to the LAN  154  through an adapter or network interface  158  (coupled to the bus  106 ). When used in a WAN networking environment, the personal computer  100  often includes a modem  160  or other device for establishing communications over the WAN/Internet  156 . The modem  160  is shown in  FIG. 1  as coupled between the interface  136  and the WAN/Internet  156 . In a networked environment, program modules, application programs, or data, or portions thereof, can be stored in the remote computer  150 , such as in the disk drive  152 . Those skilled in the relevant art will readily recognize that the network connections shown in  FIG. 1  are only some examples of establishing communication links between computers, and other links may be used, including wireless links. In general, while hardware platforms, such as the personal computer  100  and remote computer  150 , are described herein, aspects of the post processing facility are equally applicable to nodes on a network having corresponding resource locators to identify such nodes.  
         [0026]      FIG. 2  is a block diagram showing an example of actions performed by a post processing facility  200 . In some embodiments, a post processing process management module  202  performs various tasks associated with post processing of a finite element model. To allow for customization, the post processing process management module  202  may be controlled, at least in part, by a post processing control component  204 . The post processing control component may be based, at least in part, on information provided by an end user via an end user interface  203 , which is then configured using a control component configuration engine  205 .  
         [0027]     Tasks performed by the post processing process management module  202  (under the at least partial control of the control component  204 ) may include a define configuration task  206 , a process interface loads task  208 , a process load balances task  210 , and a process summary tables task  212 . As illustrated, many of the tasks associated with the process management module  202  may be performed, for example, in the context of object oriented programming. For example, attribute information provided by the post processing control component  204  may be introduced into an object oriented environment to instantiate various objects used in performing the tasks ( 206 ,  208 ,  210 , and  212 ).  
         [0028]     An example of an engine freebody output resulting from performing post processing on a finite element model relating to aircraft design is shown in the following table:  
                                                                           TABLE A                           Output Example - Load Balance Table            0++++ REACTIONS +++++   Force X   Force Y   Force Z   Moment X   Moment Y   Moment Z                    A-FLANGE   2965   −732   2816   0   −237   −61       INNER V-GROOVE   4912   −5006   2583   0   −162   −358       OUTER V-GROOVE   −44860   −6323   10575   0   545   −1495       CORE COWL BUMPERS   0   −4500   −12306   0   2637   −964       V-BAND TERMINALS       STA 193.20 BL −10.55   4   141   −945   1   88   13       STA 193.20 BL 10.55   −1   −142   −944   −1   88   −13       TOTAL V-BAND TERMINALS   3   0   −1889   0   176   0       FWD ENGINE MOUNT LINKS       Q1 - WL 167.919 BL −7.814   1   7835   −13573   −426   1176   679       Q2 - WL 167.919 BL 7.814   1   −15668   −27140   852   2352   −1358       C1 - WL 168.367 BL 0.000   0   0   0   0   0   0       - TOTAL FWD ENGINE MOUNT LINKS -   2   −7832   −40713   426   3528   −679       AFT ENGINE MOUNT LINKS       Q5 - WL 132.291 BL −15.55   6   39000   18789   −1552   −3942   8183       Q6 - WL 132.291 BL 15.55   7   −17703   35803   1128   −7512   −3715       C2 - WL 135.881 BL 0.00   0   0   0   0   0   0       - TOTAL AFT ENGINE MOUNT LINKS -   13   21297   54592   −423   −11454   4468       THRUST LINKS       WL 115.591 BL −15.55   72525   6931   19698   −472   −809   2023       WL 115.591 BL 15.55   72525   −6903   19698   472   −809   −2021       - TOTAL THRUST LINKS -   145049   28   39395   0   −1619   3       +++ APPLIED LOADS +++   −108085   3068   −55055   −2   6587   −914                  
 
 2. Data Structure 
 
         [0029]      FIG. 3  is a data diagram showing various data structures used in collecting information from an end user (e.g., an end user who is familiar with finite element models, but who need not exercise programming skills). In turn, this information may be used to configure a post processing control file. In some embodiments, the various data structures may include an interface data structure  310 , a local coordination system data structure  320 , a component data structure  330 , and a summary table data structure  340 , although other data structures or combinations of data structures are possible in the context of receiving input from an end user.  
         [0030]     The interface data structure  310  may include various types of interface-related information specific to a particular finite element model that is to be the subject of post processing. In some embodiments, this information may include nodal coordinate information  310 , element ID information  312 , coordinate system information  314 , sign convention information  316 , and linear combination information  318 . In some cases, this information is provided by an end user. An example of the contents of the interface data structure  310  is illustrated in the following table:  
                                                                                     TABLE B                       EIDTX   EIDTY   EIDTZ   X   Y   Z   SIGN   CS   Label                                131241   131242   131243   309.819   −15.55   132.291   —   R009   Q5       131238   131239   131240   309.819   15.55   132.291   —   R010   Q6       131281   131282   131283   309.819   0   135.881   —   R021   C2                  
 
         [0031]     The local coordinate system data structure  320  may contain information for one or more coordinate systems used in defining the finite element model that is the subject of the post processing. As with the interface data structure  310 , the information associated with the local coordinate system data structure  320  may be provided by an end user. An example of the contents of the local coordinate system data structure  320  is illustrated in the following table:  
                                                                                             TABLE C                       ID   A1   A2   A3   B1   B2   B3   C1   C2   C3                                R007   186.65   9.76   171.30   186.65   7.81   167.92   185.60   9.76   171.30       R008   186.65   −9.76   171.30   186.65   −7.81   167.92   185.60   −9.76   171.30       R009   309.82   −12.00   138.96   309.82   −15.55   132.29   308.82   −12.00   138.96       R010   309.82   11.29   140.91   309.82   15.55   132.29   308.82   11.29   140.91       R013   198.50   18.49   115.59   298.35   8.96   142.87   198.41   19.39   116.25       R014   198.50   −18.49   115.59   298.35   −8.96   142.87   198.41   −19.39   116.25       R021   0.00   0.00   100.00   100.00   0.00   100.00   100.00   50.00   100.00                  
 
         [0032]     The component data structure  330  may include information on various components within the finite element model subject to the post processing, as provided, for example, by an end user. For example, the component data structure  330  may include label information  332 , reference point information  334 , boundary information  336 , and output requirements  338  for one or more components. An example of the contents of the component data structure  330  is illustrated in the following table:  
                             TABLE D                           Label - Engine Load Balance       Reference Node - NS 100, BL 0, WL 100       Boundary Definition            Interface   Show Member   Note               InletToEngine   No   $ENGINE INTERFACE       InnerVeeGroove   No   $INNER V-GROOVE       OuterVeeGroove   No   $OUTER V-GROOVE       AftCowlBumpers   No   $CORE COWL BUMPERS       VBandTerminals   Yes   $V-BAND TERMINALS       FwdEngineMountLinks   Yes   $Fwd Mount       AftEngineMountLinks   Yes   $Aft Mount       ThrustLinks   Yes   $Thrust Link                  
 
         [0033]     The summary table data structure  340  may, likewise, include heading information  342 , footnote information  344 , and degrees of freedom (DOF) information  346 , as provided, for example, by an end user. An example of the contents of the component data structure  330  is illustrated in the following table:  
                           TABLE E                                   Type   Name                           Define Interfaces               Cylindrical   InletToEngine           Cylindrical   InnerVeeGroove           Cylindrical   OuterVeeGroove           Cylindrical   AftCowlBumpers           Cylindrical   VBandTerminals           Orthogonal   FwdEngineMountLinks           Orthogonal   AftEngineMountLinks           Orthogonal   ThrustLinks           Orthogonal   StrutToWing           Define Freebody               Engine               Strut           Define Summary               EngineMount                      
 
         [0034]     This collection information described above, as well as other information, may be combined to configure a post processing control file to be used in a post processing program or other post processing routine specific to the finite element model under analysis. In this way, custom information can be provided to a generic post processing scheme, such as an object oriented post processing scheme to allow a non-programming end user to customize a post processing program to fit a specific finite element model in a way that is easy to use and does not require any hard coding by an end user.  
         [0035]      FIG. 4  is a data diagram showing various classes associated with an implementation of the post processing scheme, such as an object oriented implementation. A database class  402  may be used to process and store data generated from integrated finite element analysis. An example of an object instantiated from such a class includes a design load analysis object. An interface class  404  may be associated with a collection of degree of freedoms (DOFs) connecting two structural components. Two subclasses that may inherit from the interface class  404  may include a rectangular subclass and a cylindrical subclass. These subclasses are defined individually to process two different types of interfaces. For example, a rectangular subclass interface may process interfaces defined in a rectangular coordinate system (e.g., a pylon to a wing attachment). A cylindrical subclass may be configured to process interfaces defined in cylindrical coordinate systems (e.g., any ring interfaces such as an inlet to an engine attachment).  
         [0036]     A freebody class  406  may be used to collect multiple interfaces and assemble load balance tables of components defined within such interfaces. In addition, the freebody class  406  may include functionality to perform freebody balance checks of such components. Examples of the components include an engine, a strut, and a wing. A summary class  408  may be associated with functionality to process and sort a selection of interfaces and generate a summary table (e.g., a summary table associated with a load release document). For example, the summary class  408  functionality may be used to analyze an engine mount load summary and a wing attachment load summary.  
         [0037]     In some embodiments, a utility function class  410  may be used to collect a group of utility functions associated with post processing. Based on the collected utility functions, a post object  412  may be instantiated according to the user input control file to control the overall process flow and scope of post processing. In addition, a graphical user interface object  414  may be instantiated to provide the end user with information associated with such post processing.  
         [0038]      FIG. 5  is a flow diagram showing a routine  500  for generating and/or configuring a post processing control file. At block  501  the routine  500  may define one or more interfaces based, for example, on end user input. At block  502  the routine  500  may define one or more coordinate systems based, for example, on end user input. At block  503  the routine  500  may define one or more components based, for example, on end user input. At block  504  the routine  500  may define one or more summary tables based, for example, on end user input. At block  505  the routine  500  may configure one or more system control files based on the information received with respect to blocks  501 ,  502 ,  503 , and  504 , as well as possibly other information. The routine  500  then ends.  
         [0039]      FIG. 6  is a flow diagram showing an example of a routine  600  for defining an interface (e.g., such as with respect to block  501  of  FIG. 5 ). At block  601  the routine  600  may define one or more nodal coordinate systems for the post processing based, for example, on end user input. At block  602  the routine  600  may define one or more element IDs associated with each element of the finite element model subject to post processing based, for example, on end user input. At block  603  the routine  600  may define one or more coordinate systems associated with the finite element model subject to post processing based, for example, on end user input. At block  604  the routine  600  may define sign conventions for the finite element model associated with the post processing based, for example, on end user input. At optional block  605  the routine  600  implements optional linear combination definitions based, for example, on end user input. The routine  600  then ends.  
         [0040]      FIG. 7  shows an example of a routine  700  for defining a coordinate system in conjunction with creating a control file for post processing. At block  701  the routine  700  may define a new local coordinate system based, for example, on end user input. At decision block  702  the routine  700  may check for additional coordinate system. If none are found the routine  700  ends. Otherwise the routine  700  loops back to block  701  to define a next local coordinate system.  
         [0041]      FIG. 8  shows an example of a routine  800  for defining components in association with creating a control file for post processing a finite element model. At block  801  the routine  800  may define label information based, for example, on end user input. At block  802  the routine  800  may define reference point information based, for example, on end user input. At block  803  the routine  800  may define boundary information based, for example, on end user input. At block  804  the routine  800  may define output requirements based, for example, on end user input. The routine  800  then ends.  
         [0042]      FIG. 9  shows an example of a routine  900  for defining a summary table in accordance with configuring a control file for controlling a post processing routine. At block  901  the routine  900  may define heading and footnote information based, for example, on end user input. At block  902  the routine  900  may select an interface based, for example, on end user input. At block  903  the routine  900  may select node information and degrees of freedom information based, for example, on end user input. The routine  900  then ends.  
         [0043]     From the foregoing, it will be appreciated that specific embodiments of the invention have been described herein for purposes of illustration, but that various modifications may be made without deviating from the invention and aspects of the invention described in the context of particular embodiments may be combined or eliminated in other embodiments. Although advantages associated with certain embodiments of the invention have been described in the context of those embodiments, other embodiments may also exhibit such advantages. Additionally, none of the foregoing embodiments need necessarily exhibit such advantages to fall within the scope of the invention.