A GENERIC FRAMEWORK FOR DESIGN EVOLUTION: FROM FUNCTION-TO-FORM MAPPING TO SYNTHESIS OF TOLERANCES By Nilmani Pramanik B.E.(Mech), (Hons), Jadavpur University, India M.E., Birla Institute of Technology and Science, India DISSERTATION Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Mechanical and Aerospace Engineering in the graduate School of Syracuse University. June 2003 Approved __________________ Professor Utpal Roy Date __________________ Copyright 2003 Nilmani Pramanik All rights Reserved The Graduate School Syracuse University We, the members of the Oral Examination Committee, hereby approve the Thesis/dissertation of Nilmani Pramanik Candidate’s Name Whose oral examination was held on May 30, 2003 Date Dr. Alan J. Levy Examiner (Please type) (Please sign) Dr. Chilukuri Mohan Examiner (Please type) (Please sign) Dr. Frederick Easton Examiner (Please type) (Please sign) Dr. Young B. Moon Examiner (Please type) (Please sign) Dr. Utpal Roy Thesis/dissertation Advisor (Please type) (Please sign) Dr. Eric M. Lui Chair, Oral Examination Committee (Please type) (Please sign) Abstract Design of a new product (artifact) begins with a set of user specifications which are functional requirements (FRs) that the artifact must satisfy. Initially, the set of FRs is almost always incomplete because complete knowledge about the product is not known at the conceptual design stage. In this work, two complementary schemes are presented: a design synthesis scheme for conceptual design and a tolerance synthesis scheme for manufactured parts. In the first phase, a function-to-form mapping process is presented to arrive at a conceptual design that satisfies the FRs. This process is carried out in stages of design evolution and at each stage the product specification (PS) is transformed using FRs as constraints and variation of internal parameters of artifacts as navigator for the mapping process. In the second phase, which starts after the nominal dimensions of the parts of an artifact have been computed (using domain-specific design rules), a method for synthesis of tolerances for manufactured parts is presented as an optimization process for minimizing manufacturing cost subject to constraints of assemblability and functional requirements. A generic deviation-based formulation has been used to represent the variations of features and the entities in the tolerance synthesis process have been modeled in UML using object-oriented representation. A new deviation-based model for manufacturing cost has been introduced. The optimization scheme is used to find a set of optimal deviation parameters, which are then transformed into standard tolerance specifications as per ASME Y14.5M (1994) tolerancing schemes using a deviation-totolerance mapping system. The tolerance synthesis scheme is implemented to serve as a tool that could be linked with standard CAD packages to give the designer a mechanism for iterative solution for product development and tolerance synthesis. Table of Contents Abstract … i Table of Contents … v List of Illustrative Materials … viii Acknowledgement … x Nomenclature … xi Chapter 1. Introduction … 1 1.1 Introduction and Motivation … 1 1.2 Objectives of the Thesis … 4 1.3 Organization of the Thesis … 5 Review of Related Research … 7 2.1 Design Synthesis … 7 2.2 Tolerance Synthesis … 10 Representation of Artifact and Associated Classes … 13 3.1 Product Specifications … 14 3.2 Artifact Representation … 16 3.2.1 Artifact Classification … 17 3.2.2 Generic Definition of Artifact … 18 3.2.3 Representation of Internal Parameters of Artifacts … 19 Chapter 2. Chapter 3. 3.3 Representation of Functions … 22 3.4 Representation of Behaviors … 24 3.5 Artifact Library … 25 3.6 Tolerance Representation … 26 Design Synthesis: Function-to-Form Mapping … 29 4.1 Transformations of Product Specification (PS) … 32 4.2 Attribute Transformation … 32 4.3 Constraint Transformation … 33 Chapter 4. v 4.4 Variation of Internal Parameters of Artifacts … 35 4.5 Design Synthesis Process … 39 4.6 Observations on the Design Synthesis Process … 46 4.7 An Example of Design Synthesis … 47 Tolerance Synthesis Scheme … 56 Representation of Deviations of Features of a Part … 57 5.1.1 Local Coordinate System on a Feature … 59 5.1.2 Invariants of a Feature and Reduction of DOF … 60 Chapter 5. 5.1 5.2 Tolerance Synthesis (TS) Scheme … 62 5.3 Deviation of Features and Assembly of Mating Parts … 63 5.3.1 Gap as a Control Element between Mating Features … 66 5.3.2 Shifting the Point of Interest … 66 Generation of Constraints … 67 5.4.1 Constraints Related to Functional Requirements … 68 5.4.2 Constraints Related to Assemblability of Parts … 69 Formulation of Cost Functions … 73 5.5.1 Cost of Manufacturing … 73 5.5.2 Deviation-based Model for Cost of Manufacturing … 75 5.4 5.5 5.6 Optimization Process … 79 5.7 Mapping Deviation Parameters to Tolerance Specification … 80 5.7.1 Deviation-to-Tolerance Mapping Criteria … 82 5.7.2 Mapping Relations for a Planar Feature … 84 5.7.2.1 Rectangular Planar Feature … 85 5.7.2.2 Circular Planar Feature … 86 Implementation and Case Studies … 88 6.1 Details of the Implementation … 88 6.2 Example Tolerance Synthesis of a 3-block Artifact … 92 6.3 Example Tolerance Synthesis of a Planetary Gearbox … 100 Chapter 6. vi Chapter 7. Conclusion … 109 7.1 Contribution … 109 7.2 Future Work … 110 Appendix – 1 Class diagrams for various classes … 114 Appendix – 2 Examples of artifact representation … 118 Appendix – 3 Artifact Library … 126 Appendix – 4 Interval Arithmetic … 129 Appendix - 5 Transformation of Torsors … 131 Appendix - 6 Example of Generation of Assemblability Constraints … 136 Appendix – 7 Mapping of Deviation Parameters to Tolerance Parameters … 141 Appendix – 8 Implementation: Listing of major modules … 150 Appendix – 9 Tolerance Synthesis Example –1: A three-block system … 170 Bibliography … 174 Vita (biographical data) … 183 Appendices vii List of Illustrative Materials Figure 4.5 Schematic diagram for transforming input functions to outputs … 40 Figure 4.7-1. Design Synthesis - some intermediate stages … 52 Figure 4.7-2. Typical solutions from the Design Synthesis example … 53 Figure 5.1.1. Local coordinate system on a feature … 60 Figure 5.1.2. Deviation parameters of a circular-planar feature … 61 Figure 5.3-1. A spur gear sub-assembly …. 64 Figure 5.3-2. Mating details of the gear sub-assembly … 64 Figure 5.3-3. Assembly graph of the gear sub-assembly … 65 Figure 5.3.2. Points of interest on features … 67 Figure 5.4.2. Traversing Paths/Loops in an assembly graph … 71 Figure 5.5.2-1. Cost as function of deviation parameters … 78 Figure 5.5.2-2. Cost contour lines and the bounds … 78 Figure 5.7.2.1. Rectangular planar feature … 85 Figure 5.7.2.2. Circular planar feature with size tolerance … 86 Figure 6.2-1. A 3-Block Artifact … 93 Figure 6.2-2. 3-Block Artifact - Part #1- Nominal shape with LCS … 94 Figure 6.2-3. 3-Block Artifact – Artifact tree … 95 Figure 6.2-4. 3-Block Artifact - Feature to feature connectivity … 96 Figure 6.2-5. 3-Block Artifact – Assembly graph … 97 Figure 6.2-6. Sample cost of Manufacturing Function … 97 Figure 6.2-7. Deviations imposed on nominal shape … 98 Table 6.2-1. Optimal deviation parameters … 98 Table 6.2-2. Tolerance values mapped from optimal deviation parameters … 99 Figure 6.2-8. Computed tolerance parameters for Part #1 … 99 Figure 6.3-1. A Planetary Gearbox … 100 Figure 6.3-2. Exploded view of the gearbox … 101 Figure 6.3-3. Gearbox modeled as a 5-part system … 101 Figure 6.3-4. Mating of output housing with output shaft and ring gear … 102 viii Figure 6.3-5. Assembly graph (connectivity diagram) of the gearbox … 102 Figure 6.3-6 Circular planar feature with tolerance parameters TU and TL … 106 Table 6.3-1 Tolerance zones/values for cylindrical features … 107 Table 6.3-2 Tolerance zones/values for circular planar features … 108 Figure A1.1 Artifact class diagram … 114 Figure A1.2 Function Class … 115 Figure A1.3 Behavior Class … 115 Figure A1.4 Material Data Class … 116 Figure A1.5 Feature Class … 116 Figure A1.6 Tolerance Class … 117 Figure A5-1 Interacting torsors at mating surfaces … 132 Figure A5-2. Torsor transformation - shifting axes … 133 Figure A6-1 Example artifact with three blocks … 136 Figure A6-2 – 3-Block artifact with feature numbers and LCS … 137 Figure A7.1-1 Cylindrical feature with tolerance modified to MMC … 142 Figure A7.1-2 Cylindrical feature with LCS … 142 Figure A7.2-1 Spherical feature with LCS … 144 Figure A7.2-2 Spherical feature with tolerance specification … 145 Figure A7.4-1 Size tolerance for a planar feature … 148 Figure A7.4-2 Deviation space for size tolerance of a planar feature … 149 ix Acknowledgement I would like to express my sincere gratitude to my academic advisor Prof. U. Roy for his guidance, support, and encouragement throughout my program of study and research work. It has been a pleasure to work with him. I would take this opportunity to thank Dr. Alan J. Levy, Dr. C. K. Mohan, Dr. Y. B. Moon, Dr. Eric M. Lui, and Dr. Fred Easton for consenting to serve as members of my dissertation committee. I would also like to thank my friends and colleagues at the Knowledge Based Engineering Laboratory, specifically, Mr. Haoyu Wang and Mr. Saujesh Patel, for their support and many meaningful discussions/interactions. Finally, I would like to express my sincere appreciation and thanks to my wife Shyamalsovana and daughter Ananya for their infinite patience, continued support, and love without which it would have been impossible for me to complete my research work. x Nomenclature Unless otherwise specified in the context, following nomenclature will be used throughout the thesis. Also, mathematical variables are used in italics and non-scalar quantities like vectors, matrices, torsors, classes, sets, etc., are used in bold typeface. Symbol Meaning ::= | <> [] … ∀ ∃ ∪, ∩ ∅ ⊃, ⊇ ⊂, ⊆ ⊄ ∈ ∉ : =, EQ ≡ ≈ !, NOT &, AND NE, !=, ≠ LT, < LE, <= GT, > GE, >= == => ∑ ∏ R R+ RRn ∞ -∞ defined as alternatives (choices) attribute | parameter | entity | token delimiter optional item delimiter use as subscript to indicate one or more repetitions for all there exists union, intersection of sets NULL set super set of subset of (belongs to) not a subset of element of not an element of such that equal to (assignment operator) equivalent to approximately equal to not and not equal to less than less than or equal to greater than greater than or equal to equality comparator implies summation over a range product over a range 1-d real space 1-d real positive half-space 1-d real negative half-space n-d real space infinity (a large positive number) negative infinity (a large negative number) xi 1 Everything is vague to a degree you do not realize till you have tried to make it precise. -- Bertrand Russell Chapter 1 Introduction 1.1 Introduction and Motivation Design as a process to create new artifacts1 to meet the challenges of the society is a complex task. It is motivated by many different factors including economic, sociopolitical and creative urges. In this thesis design and manufacturing of artifacts to meet technological challenges are discussed. With the advancement of computers and computing techniques, the focus of design has shifted from manual design computations to automated design using powerful computational aids like artificial intelligent tools, rule based expert systems, and use of domain-specific knowledge bases. However, the process of product development requires interaction and exchange of ideas between experts from various design domains. Since there is high degree of specialization in each domain, to facilitate effective collaboration between these design experts, a common framework for representing the entire design process is required so that all personnel involved in the process could interact and exchange data, knowledge and ideas in a consistent manner. Design of a new artifact could be grouped into three distinct phases, namely, 1) conceptual design, 2) detail design for sizing the components/parts, and 3) manufacturing and assembly (including inspection and quality control). The first phase (conceptual design) involves conceiving physical shapes/structures from the functional 1 The term artifact has been used in this thesis in a generic sense to represent assembly and subassembly of parts, parts, components, and other design objects/products. 2 requirements (FRs). The mechanism to transform a set of FRs into suitable form, called function-to-form (F2F) mapping, is not well established and oftentimes the process is not unique due to possibility of one-to-many mappings and variations. However, these oneto-many mappings give some creative space for the designer to explore alternative solutions as will be seen in the design synthesis process in chapter 3. Even though there have been many domain-specific approaches for F2F, there is no generic universal system for F2F mapping. Whitney (1992) attributed this to “the lack of basic engineering knowledge that can link form and function, the lack of a mature concept of a product data model, and/or the lack of a mature concept of the product design process.” Most of the function-to-form mapping systems (as discussed in chapter 2) are very domain-specific and lookup domain-specific rules. In this work a generalized framework has been presented that could automate the design synthesis process for F2F mapping. After a successful F2F mapping phase, the conceptual design is still not very ‘concrete’ in shape – only the basic functional requirements could be satisfied at this stage and detailed design calculations are required to establish physical size of the components that would deliver the desired outputs. Since this part is purely domain specific, an attempt to generalize the process of detail design would be futile. For example, procedures for designing the shape and size of gas turbine blades could be entirely different to those for designing the teeth of a bevel gear. Attempt to generalize all such diverse design steps in a single framework would defeat the purpose and computational overheads could go up. Also, domain-specific detail design procedures are well established and there are national and international standards and codes (like ANSI, DIN, ISO, JIS, etc.) that regulate and guide the detail design process. In this work this phase of detail design has not been 3 treated. However, the generic artifact class presented here is flexible enough for adding domain-dependent design procedures. The third phase of design starts after nominal sizes and dimensions of each part/component of the artifact has been computed in the previous stage of detailed design. In this stage a new challenge emerges as the parts have to be manufactured and no part could be manufactured with the nominal size and shapes (theoretical/exact sizes). Some deviation or distortion from the ideal shape must be allowed and even then, the artifact should satisfy the original functional requirements (as far as feasible), and the parts must be assemblable (geometric compatibility). A third challenge comes from economic considerations: the overall total cost associated with manufacturing, assembling, inspection, quality control and other life-cycle costs should be minimized to make the artifact economically viable/competitive. In this thesis, a generic tolerance synthesis scheme has been established that could be used for synthesis of geometric tolerances for manufactured parts and the synthesis process can take care of assemblability constraints, functional requirements and minimizes suitable cost functions. Since the two major tasks (conceptual design and tolerance synthesis) are part of the same design process, a need for generalized treatment is necessary. With the development of object-oriented design and development methodology as a powerful tool for representation of entities in hierarchical class structures, the possibilities of representing complex process and entities in a systematic manner is possible. Particularly, defining a class as an abstract entity and subsequent instantiation of the same class to add specific 4 details (forms) of the abstract entities could be effectively used to represent design entities that are either partially defined or vaguely defined at the conceptual design stage and evolves gradually as the design proceeds towards detailed design with more concrete shape/structure. An integrated approach to represent the artifact as an artifact class could be used to drive a design synthesis process in a generic manner to explore new horizons in design evolution in a multitude of design domains. The possibility of extending the artifact class to represent and guide detail design processes like manufacturability, assemblability, quality management and tolerance design could lead to a paradigm shift in integrated design. This thesis presents a framework to integrate the design synthesis process starting from the conceptual design stage and extending to the details design stage. 1.2 Objectives of the thesis The main objectives of the thesis are: i) Development of a generic artifact class to represent a product: Artifact class is defined along with all other major classes (function, behavior, structural, etc.) that are associated with an artifact and an artifact library is established for use in the design synthesis. ii) Development of a design synthesis process: A design synthesis (DS) is established that uses the class structures defined above to drive a design evolution based on a product specification (PS) and functional requirement (FR). 5 iii) Development of a tolerance representation scheme: A tolerance class is defined to represent standard industrial tolerancing systems: size tolerance, position tolerance, orientation tolerance, and form tolerance. iv) Development of a generic deviation-based tolerance synthesis scheme: A tolerance synthesis scheme is developed to establish tolerance parameters based on a minimization of cost of manufacturing function subject to constraints of assemblability of parts (geometric compatibility) and constraints of functional requirements. v) Development of a deviation-base cost of manufacturing formulation: A deviation-based cost of manufacturing formulation has been developed that could be used for cost of manufacturing function in the cost optimization process. vi) Development of a system of mapping deviation parameters of features to tolerance parameters as per ANSI tolerancing standards: The deviation based optimization scheme is used to find a set of deviation parameters for the features, which are then mapped to tolerance zones conforming to industrial standard tolerancing schemes as per ANSI Y14.5. 1.3 Organization of the Thesis Research in the areas of product design and tolerance synthesis is reviewed in chapter two. All class structures that are required for the design synthesis and tolerance synthesis process are defined with appropriate examples in chapter three. These include: Product specification (PS), Artifact representation, Functional representation, Behavior representation, Constraints representation, and Tolerance representation. 6 The design synthesis process is presented in chapter four. Various transformation rules used to drive the design synthesis process are also defined and a primitive artifact library (ARTL) is established. These chapter deals with: attribute transformation, constraint management, variation of internal parameters of artifacts and design synthesis process. Chapter five deals with representation of deviation of features and the tolerance synthesis scheme. These include: representation of deviation of features, generation of assemblability constraints, generation of constraints for functional requirements, cost of manufacturing formulation, formulation of the tolerance synthesis scheme and deviationto-tolerance mapping. Computer implementation of the design synthesis and tolerance synthesis schemes is discussed in chapter six. Details of example case studies have been presented in this chapter to elaborate the steps involved in the synthesis process. Computational aspects like complexity, efficiency, convergence, and possibility of linking the methods with existing commercial CAD software like SolidWorks, Pro/E, AutoCAD, etc. have been discussed. In the final chapter (chapter seven) contributions in the fields of design evolution and tolerance synthesis are discussed and areas for future research work are earmarked. 7 Believe those who are seeking truth. Doubt those who find it. --Andre Gide Chapter 2 Review of Related Research 2.1 Design Synthesis In the past, the research efforts involving part functions were mainly focused in four major areas: i) development of standard vocabularies for part functions; ii) development of ontologies for functions; iii) conceptual design with abstract part functions; and iv) design with spatial relationships. In order to fill up the gap between the concept design (from a given set of functional descriptions) and actual geometry-based CAD, researchers were first trying to create a computer-aided design system that would help designers explore non-geometric concepts and to create rough realizations. Pahl and Beitz (1984) suggested a procedure for deriving the overall functions of a design from the given design problem statements; and then decomposing and recomposing individual sub-functions to a hierarchical functional structure that could be mapped to appropriate physical elements. Though the method provides useful suggestions regarding function decomposition process, it however, does not relate the functions to design geometry. Kota (1990) viewed mechanical designs as being synthesized from conceptual building blocks that perform specific kinematic functions. The motion synthesis approach provides a method for recognizing a given behavior in terms of known primitive 8 behaviors. This is one of the first formalized ways of viewing design as the synthesis of kinematic processes; however, the approach is limited to a fixed set of primitives. Hundal and Byrne (1991) and Iyengar, Lee and Kota (1994) have developed Function Based Design (FBD) Systems in which a configuration of parts is determined on the basis of the user specified functions (input and output quantities of a part). The FBD systems are only useful in the conceptual design stage and do not take into account the interaction between the parts at the geometric level. Schmekel (1989) has presented a formal language which consists of a symbolic functional model to describe the functions of a product. The functions of the product are decomposed into relationships, which are mapped onto functions of standard components. It, however, only deals with standard machine elements. Kannapan and Marshek (1991) have developed a design reasoning system for developing design concepts based on functional and geometric requirements of mechanical systems built using different machine elements. Rinderle with Hoover (1989) and Finger (1989) have described a procedure in which design specifications are transformed into an actual physical artifact using the bond graph technique. This bond graph technique has also been adopted by a number of other researchers because of its flexibility of modeling hybrid systems, such as electrohydraulic electro-mechanical, etc. using the same symbols and mathematics throughout. However, bond graphs cannot be used for representing detailed part functions as they abstract a number of functional details and do not account for spatial relationships. Ulrich and Seering (1989) have used bond graph techniques to transform a graph of design requirements into functionally independent physical components. Their technique 9 is useful in the domain of conceptual design but cannot be used for detailed part design. Bracewell, et al (1995) has extended the bond graph based conceptual design scheme by coupling it with a parametric 3D geometric modeler. Gui and Mantyla (1994) have studied a behavior modeling technique for components in assemblies. They have developed a set of behavioral specifications, which can be used to specify the interrelationships between sub-components and have focused on the issue of representing these relationships. There are also several reported research programs [Baxter (1994), Henson (1994), Wong (1993), Sriram (1991, 1992), Gorti (1996), Krause (1993), Pahl (1984), Reddy (1994), Finger (1992), Finger (1990), Cutkosky (1993), Roy (1999a, 1999b), Szykman (1999), Sharp (1998)] on the development of system frameworks for product modeling where function, behavior and product modeling have been discussed. The MOSES research program jointly undertaken by the Loughborough Institute of Technology and University of Leeds [Baxter (1994), Henson (1994)] have explicitly focused on the development of product models for representing different types of part attributes such as part function, manufacturing details and assembly. Sriram (1991) and Wong (1993) have developed the DICE (Distributed and Integrated environment for CAE) system with a view of addressing the coordination and communication problem in the product design process. Sriram's earlier work on the development of a flexible knowledge-based framework (CONGEN, CONcept GENerator ) provides methods for generating concepts during the initial stages of the design [Sriram (1991), Gorti (1996)]. CONGEN consists of a layered knowledge base (including domain independent knowledge sources like, synthesizer, 10 geometric modeler, constraint manager, evaluator, etc.), a context mechanism, and a userfriendly interface. The architecture of CONGEN could be enhanced to address the lifecycle issues of a product and to consider the entire design/manufacturing processes of a product that is still in the preliminary stages of design. Szykman, Racz, and Sriram (1999) have proposed a generic scheme for representation of functions and associated flows. The scheme provides a mechanism for mapping from function domain to physical domain through references to artifacts. It supports both decomposition of functions into sub-functions and functions with multiple inputs and output flows. However, what is missing from the previous works is an integrated approach to the modeling, representation and decomposition of part functions into an useful format which can be used for conceptual design as well as for detailed design including addressing issues involving tolerance synthesis, manufacturability and assemblability. In this work, a generic design evolution method has been introduced that could be applied to a variety of design domains. 2.2 Tolerance Synthesis Tolerance synthesis (TS) essentially means determination of tolerance type and tolerance value or tolerance zone as per industrial standards (in this thesis tolerances are used as defined in ASME Y14.5 standard) for each component of an artifact. Tolerancing concepts as used to be the practice in the industry (mainly plus-minus type size tolerances) went through major changes with the introduction of geometric tolerancing that are no more confined to the absolute size of a feature – its interaction and role in the entire artifact (positional tolerance, orientation tolerance) became more and more 11 important. Many researchers have proposed different schemes for tolerance synthesis based on various tolerance representation schemes and some form of cost minimization schemes. Most of these deal with size tolerances, some deal with statistical tolerances and some with analysis of geometric tolerances. Requicha (1983) introduced a concept of variational class for representation of tolerances in geometric modeling and proposed to treat tolerances as attributes of the features. Roy and Liu (1988a, 1988b) proposed a hybrid CSG/B-Rep scheme for representation of tolerances and a frame-based was used to store the attributes. Tsai (1993) presented a frame based semantic network for tolerance representation. Jayraman and Srinivasan (1989a, 1989b) proposed a virtual boundary method for representing tolerances. Greenwood and Chase (1987) used a cost-tolerance model to solve the tolerance optimization problem. Turner and Wonzy (1988) used variational geometry principles to represent tolerances. Although all the above methods are suitable for domain-specific usage, none of them could be considered generic method for representation and treatment of threedimensional variation of features in a systematic manner. Also, these methods do not provide a consistent mechanism for mapping the geometric tolerances to standard codes (ANSI Y14.5) for industrial usage. Apart from individual researches that produced many interesting results on tolerance representation and synthesis results, ANSI adopted standards for geometric tolerances for industrial practice. Of particular interest is the ASME Y14.5M, 1994 that defines the basis of mathematical representation and 12 interpretation of different geometric tolerances. Although, these tolerancing standards are effective in industrial applications, it’s very difficult to treat them on a generic basis for automated tolerancing computations. Ballot and Bourdet (1998, 2002) used the small deviation torsor (SDT) scheme for representing the deviation of geometric features in a very elegant way. They used the torsor transformation rules for generating the geometric variations of parts in a product. In their work, they have introduced schemes for generating the geometric compatibility conditions and variation of features for different geometric configurations. Although the procedure is very good in representing the small variations of geometric shapes, they have not explicitly shown the possibility of using the SDT scheme for carrying out tolerance synthesis work. Specifically, how the deviation parameters could be used to represent cost of manufacturing and other cost factors associated with a part and how the deviation parameters could be mapped from the deviation space to the tolerance space for industrial applications. In this work, the SDT scheme has been adopted for representation of deviation of features and a generic scheme has been proposed for synthesis of tolerances that can be used for modeling a wide variety of artifacts. The deviation parameters have been used to define a new cost of manufacturing formulation for the tolerance synthesis process (minimizing of cost of manufacturing). Also, in order to make the tolerance synthesis scheme suitable for industrial tolerancing as per ASME Y14.5M, suitable deviation to tolerance mapping schemes have been introduced and possibility of linking these schemes with standard CAD packages has been discussed. 13 To define a thing is to substitute the definition for the thing itself. -- Georges Braque Chapter 3 Representation of Artifact and Associated Classes In this chapter all the entities that would be required for the design synthesis and tolerance synthesis work are defined using an object-oriented approach. For some classes a BNF-like1 definition is used to capture the essence of the class. Here the strict formalities of BNF are not used; instead a BNF-like structure is used to represent the essential features of each entity using following notation: Symbol ::= <> [...] … | { } and ( ) Meaning defined as delimiter for tokens / identifiers / parameters optional components used as subscript to denote one or more repetition of a component for example, {x}… would mean {x} or {x}{x} or {x}{x}{x} … delimiter for alternate choices, for example {red | blue | green} grouping of entities Actual classes diagrams have been developed in UML2 using standard UML notations for association, aggregation and generalization links between classes. Some of the major class diagrams are presented in Appendix-1. For some of the classes self-referential aggregation is used to define dependency on itself in a recursive manner, for example, the artifact class uses other artifacts (primitive and/or composite parts) to represent a composite artifact. 1 BNF = Backus Normal Form or Backus-Naur Form is used for defining syntactic entities for production rules and grammars. 2 Unified Modeling Language. The class diagrams have been generated using argoUML- an OpenSource UML-based case tool developed in Java. (http://argouml.tigris.org) 14 3.1 Product Specification Design synthesis is dependent product specification (PS) that could be established from user-specified requirements. The PS can be established by converting various requirements expressed in natural language into formal attributes (tokens). In this thesis, we start with a formal product specification that could be generated by the designer from the users’ requirement. Product specifications would be based on functional requirements related to performance, ergonomics, cost, size, weight, disposal/ recycling, maintainability, power source, portability, manufacturability, etc. (not exhaustive). Apart from the basic requirements, domain specific design knowledge would also to be required for each product. A scheme for the representation of the PS is defined below using a BNF-like notation. A Product Specification (PS) Schema <PS> ::= <attributes>…<global constraints>…<goals>… <attributes> ::= <a_name><a_type> <a_rf> [<a_category>][<a_unit>][<a_value_range>] <a_name> ::= literal name of the attribute <a_type> ::= {function | artifact | input | output | internal} <a_cat> ::= category of input or output type attributes Category: physical or abstract measurable entities in the design domain like (mass, length, force, torque, velocity, angular velocity, electric current, magnetic flux, area, volume, voltage, etc.) Each category may have further sub-attributes to describe them. <a_rf> ::= a specified relevance factor (relative importance) for the attribute; a positive number. <a_unit> ::= unit of measurement ∈ (set of units), if any. <a_value_range> ::= {quantitative <value_range>| qualitative <value_grade>} <value_range> ::= <v1 v2> : v2 ≥ v1, v1 & v2 ∈ R Above value range definition encompasses both a constant value (v1=v2) and an interval. In general, intervals are used as closed intervals [v1, v2]. For practical usage, open intervals could be taken as closed; alternatively, a small parameter ε could be added (ε>0) and subsequently, limit εÆ0 could be taken. Value ranges like >10 would be represented as [10, ∞] where ∞ will stand for infinity/a large number. 15 <value_grade> ::= qualitative grade ∈ (VH HI MO LO VL) with, for example, membership values: {VH/1 HI/0.75 MO/0.5 LO/0.25 VL/0.0) possible grade <global constraints> ::= a set of relations amongst the attributes Constraints have been considered in three categories: relational, causal and spatial <relational> ::= function(<attribute_name>[,<attribute_name>]…) EQ <value_range> For example: in a rotary motion transformation, a global constraint requiring a speed reduction of [5,6] could be represented by: PS.ωI.value/PS.ωO.value EQ (5,6), where ωI is input and ωO is output rotary speed. If the values were specified as a range, the arithmetic operators for working with intervals would be required. This has been discussed in chapter 4 (section 4.3) where constraint transformations have been detailed. <causal> ::= <attribute> {influences | depends_on} <attribute>[,<attribute>]… Causal constraints indicate dependency of one attribute on other attributes but the exact functional relation may not be known. These types of dependencies are useful for studying the qualitative behavior of an artifact. <spatial> ::= <attribute> <spacial_relationship> [<attribute>] [a_value] This constraint is applicable for attributes that are of category ‘artifact’. This would represent spatial (form) relationship between attributes having shape / size / orientation related properties. <spatial_relationship> ::= <orientation><position><connection> <orientation> ::= <direction cosine of attribute1 w.r.t. that of attribute2> . Some examples of common orientations are: horizontal, vertical, perpendicular_to, parallel_to, distance_from, etc. and some examples of spatial constraints (for a chair) could be: (‘arm’ parallel_to ‘seat’ ) (‘backrest’ perpendicular_to ‘seat’) (‘seat’ horizontal) (‘seat’ distance_from ‘base’ 2ft) …. <position> ::= co-ordinate of center of attribute1 w.r.t. center of attribute2 <connection> ::= <connection_type><contact_details> <connection_type> ::= <point2point | point2surface | surface2surface | others> <contact_details> ::= set of points, surface, and common DOF of connection. <global goals> ::= <objective function>[< constraints>] <objective function> ::= global optimality evaluation functions. As for example: minimize total_weight() or minimize cost(), etc. 16 It may be emphasized here that evaluation of global goals may not be feasible immediately after a conceptual feasible solution has been arrived at. After a feasible solution has been found that satisfy the input / output requirements and the constraints, the solution has to be converted into a physical solution by a rough-cut detailed design (sizing) to establish nominal dimensions of the parts (artifacts) and then the global goals could be evaluated. As an example, using above definition, a product specification for “an artifact that can drill holes using standard drill bit” could be represented as an object: product handheld_drill ( (fun to_drill ( (attr hole) (requires (art drillbit)) (requires (fun rotary_motion (art drillbit))) (requires (fun axial_movement (art drillbit))) (requires (fun to_hold (art drillbit))) ) (attr hole output 1.0 (attr (diameter length))) (attr diam output 1.0 mm (0,10)) (attr leng output 1.0 mm (0,100)) (attr input power 1.0 watt (goal minimize)) (attr weight goal 0.5 kg (goal minimize)) (attr volume goal 0.5 mm3 (goal minimize)) (attr cost goal 0.4 dollar (goal minimize)) (attr handheld goal ? ?) ) 3.2 Artifact Representation The term artifact is used here synonymously with physical object, device, component and assembly (or sub-assembly) of components. In the object-oriented approach, all entities like artifact, function, device, etc, are defined as classes. An artifact will have its functional details, structural details and behavior model along with links to other artifacts / functions. The modeling of an artifact and its components for use in conceptual design as well as in detailed design stage, including synthesis and analysis of geometric tolerances, requires a high-level description which can be represented by a set of 17 attributes. This attribute/sub-attribute set forms a symbolic representation of the artifact that can be manipulated by the design synthesis process as described in chapter 4. 3.2.1 Artifact Classification Artifacts could be categorized according to their usage, generic shapes and functional groups. This would facilitate efficient retrieval of artifacts from the artifact library. As for example, following list could be used for parts having similar mechanical functionality (Thornton’s list, Thornton (1994). Group Containers Controllers Fasteners Load Bearers Locators Power Transmitters Seals Artifacts Cover, Housing, Plate, Duct, Pipe Valve, Gauge, Knob, Pointer, Nozzle Clip, Bolt, Nut, Strap, Rivet Coupling, Pin Bracket, Brace, Bearing, Web, Pillar, Rod, Spring Joint, Spacer, Pivot, Pad, Key, Pin Chain, Cable, Shaft, Pulley, Cam, Gear, Piston Gasket, O-ring, Sleeve The artifact representation model consists of three basic parts: a functional representation, a structural (form) representation, and a behavioral representation. The form of an artifact is expressed in terms of its constituent components and sub-components, and the interactions between them. The form of each artifact representation consists of information about • • • • • • • component/sub-component structure of the artifact typical shape with the critical dimension outlined rules for selecting and sizing the artifact alternate shapes (and/or overall dimensions) list of additional features and services which would be required to make the artifact work in a real-life environment, possible modes/situations in which the artifact might fail; and material properties. Components in a composite artifact (assembly) are also of type artifact and the assembly contains references to these components. Components can be of two different varieties: 18 primitive or composite. Composite components are those whose internal substructure is represented explicitly by a set of more detailed, lower-level sub-components, whereas primitive components are simple. The Artifact model contains artifact-specific information that not only helps in design synthesis but also in studying its behavior in an assembly. Along with the key artifact characteristics and component/sub-component structural description, the data model must contain information on artifact tolerances and its kinematic variations. A detailed definition of the artifact is presented below: 3.2.2 Generic Definition of Artifact In order to capture the essential information of artifacts so that a general mapping procedure could be adopted to evolve a design from a product specification, including satisfaction of constraints, a generic definition of the artifact is presented below in a BNF-like definition. <artifact> ::= {<aid> <purpose> <group><attr><requires> <structure> <constraint> <goal> <art_tolerance> <art_behavior>} <aid> ::= literal identifier (name) of the artifact <purpose> ::= set of phrases to describe the functionality of the object <group> ::= artifact group The group classifies the artifact into a category by the type of application it can perform. <attr> ::= list of attributes similar to those defined for a product Attributes are of type (function, artifact, input, output, internal) and would have their own details exactly as defined in product specification. <requires> ::= {<art><location><orientation>}|{<func>} This is a link to other artifacts (<art>) or functions (<fun>) that are required by this artifact <location> ::= location of the component <art> w.r.t. l.c.s. of <artifact> The location or position of the component in the main assembly where this part will fit with respect to a local coordinate system on the main assembly. <orientation> ::= orientation of the <art> w.r.t. <artifact> The orientation along with the location or position of the component in the main assembly will define the structural links between the main assembly and the part. <structure> ::= {<sid> <sketch> [<param>] [<s_behavior>] [<constraint>] [feature] [<str_tolerance>]}… 19 Structure is defined here as a class which incorporates both abstract structure as well as physical shapes of artifacts. The <sketch> entity in this structure is used to represent both structure types. <sid> ::= literal identifier (name) of the structure <sketch> ::= {<abst_sketch>[<cad_sketch>]} <abst_sketch> ::= {<sk_node><k_behavior><sk_tol>}… The abstract sketch is not a physical sketch. It’s a schematic representation of the bare minimal structural information required during conceptual design. The <sk_node> entities are the nodes on the structure where we focus our attention for input/ output/ other special features. <sk_node> ::={<coord> <dof> [<ctrl_var>][<input_ref>][<output_ref>]) <coord> ::= coordinates {<x_co> <y_co> <z_co>} <dof> ::= degree of freedom 6-tuple of (0|1) This represents the six degrees of freedom associated with the particular node. <ctrl_var> ::= list of variables associated with <sk_node> <cad_sketch> ::= CSG / B-Rep / Object representation of the artifact It is a cad model file reference. <constraint> ::= as defined earlier in section 3.1 <goal> ::= as defined in earlier in section 3.1 <art_behavior> ::= method to represent overall behavior of the artifact <s_behavior> ::= method to represent behavior of the structure <k_behavior> ::= method to represent behavior of the individual sk_nodes All the three behaviors are sub-classes to be inherited from a global behavior class. <feature> ::= structural features <art_tolerance> ::= tolerance class defined for the overall artifact <str_tolerance> ::= tolerance class defined for the structure <sk_tolerance>::= tolerance class defined for the individual sketch elements All tolerance classes mentioned above are sub-classes to be inherited from a global (parent) tolerance class define later in section 3.6 <input_ref> ::= input parameter associated with the specific node (if any) <output_ref> ::= output parameter associated with the specific node (if any) Class diagram of the artifact showing its relationship with other classes has been shown in Appendix –1 (figure A1.1) 3.2.3 Representation of Internal Parameters of Artifacts For purposes of the design synthesis, each artifact needs to be modeled with a set of parameters that could effectively represent the behavior of the artifact in terms of the input and output parameters. It is assumed that each artifact will have at least one relational constraint of the form: C0(I, O, β) = 0, where O is the output, I is the input and β is an n-vector internal parameter of the artifact. β = (β1, β2,… βn). The vector β is the internal parameters defined in terms of physical attributes and laws governing the performance of the system. It is also assumed that the input to an artifact as well as each 20 component of the parameter β will have a known feasible range of values. These limits are the physical ranges within which the artifact can operate. Each component of β can be expressed in parametric form as: βk = βk_Low + (βk_High - βk_Low) * θk : θk ∈ (0,1) , k∈(1,n), where βk_Low is the lower limit and βk_High is the upper limit of value of βk . Above relational constraint, C0(I,O,β) = 0, could be solved* for O, giving O = f (I, β). This representation shows the main causal link between the input and the output of the artifact. As for example, a gearbox to reduce/increase the speed would have an internal parameter µ which is the ratio of the number of teeth of the two gears and the main constraint is: C0 (Ni , N0 , µ) ≡ N0 - µ * Ni = 0 where Ni is the input speed, N0 is the output speed and µ is the speed ratio. µ could have a range of, say, [0.25, 4], indicating that the gear box could be used for reduction of speed of up to 1/4th as well as for increasing the input speed by 4 times. Depending on specific requirements dictated by the solution, suitable value of β (here µ) will be selected. Apart from the main causal link, C0, that links the input and the output, there could also be several other constraints associated with an artifact which has the general form of: Cj(I, O, β) <rel_opr> <val>, j >0 where <rel_opr> ∈ (LT LE EQ GE GT NE) is the relational operator and <val> ∈ R, is a numeric value. In some cases, these relations would be converted to the standard equality form Cj(I, O, β) = 0, by introducing additional auxiliary variables for the cases * In general, all constraint equations may not be solvable to express the output as an explicit function of the inputs. In such cases, approximate numeric solutions could be attempted by linearizing the equations around an operating point using small perturbations. 21 where the <rel_opr> is not “EQ”. As for example, Cj(I, O, β) ≡ β1 GE 12.00 would be converted to: Cj(I,O,β) ≡ β1 – t – 12.00 = 0, where t ∈ R+ is an auxiliary variable. Along with all the information as described in the definition (section 3.2.2), each component of an artifact needs to be modeled as being composed of a single material. Materials are represented as members of material class. The artifact definition should also have an attribute linked to a database of manufacturing “know-how” (which has not been included in the present artifact definition). It should also contain information on material-specific process capabilities and characteristics. Two examples to represent an artifact using these definitions have been shown in Appendix-2. There are two artifacts: the first one is a primitive (a spur gear) and the second one is a compound artifact (a gearbox consisting of six primitive artifacts: two spur gears, two shafts and two keys). While both the representations use the same artifact definition given above, the second artifact uses the first artifact through the “requires” parameter. The representation for the spur gear (primitive artifact) begins with a list of physical properties/attributes like material, diameters, thickness, etc. (we can add/modify as many parameters as would be necessary to define the artifact). The 'input' and 'output' are then listed. The 'requires, ‘constraints’, 'form / structure' and 'behavior' parameters then follow. In this case, there was no constraint specified. The ‘behavior’ has been defined as a set of state-space variables associated with the artifact. 22 For the gearbox (compound artifact), the representation follows a similar logic, however, in this case, the ‘requires’ clause uses the spur gear primitive (defined earlier) along with shaft and key elements. Also, in this case a constraint has been added as a relationship between the output and the input. This forms the main constraint C0 defined earlier in this section. The behavior also reflects the outcome of the combined elements. 3.3 Representation of Functions In the early phase of design, most of the design decisions taken are concerned with the desired characteristics and the overall functions of the assembly. By “Function” is meant an abstract formulation (or definition) of a task that is independent of any particular solution. In this phase, the abstract functional specification of an artifact is transformed into a physical description. In the later phases of design, the physical decisions that are made in the earlier phases, are elaborated to ensure that they satisfy the specified functional requirements and life cycle evaluation criteria. In order to manipulate the “function” information, a “functional data model” (that describes the functional information throughout the design cycle) is needed so that appropriate reasoning modules can interrogate and extract functional information during the decision-making processes (as the geometric reasoning modules query data from the “product data model” (CAD model) during the shape design process). Depending on the design phase, different types of functions exist at different levels of abstraction. In conceptual design phase, functions are usually independent of working principle, whereas in later design phases, when the functions are detailed, they become 23 more and more dependent on the working principle that has been selected. Therefore, we need to adopt such a formal function representational scheme that will be helpful when modeling the overall function of the assembly in the conceptual design stage, and also be useful to model smaller and smaller sub-assembly, particularly as the component and feature levels are approached. The representation should also have unambiguous semantics in order to perform analysis on (i.e. to manipulate) the functional description. In this work, an attempt has been made to give a definition of a function, which captures some of the basic features at abstract level, as well as detailed design level. Functions defined here are also having a mechanism to incorporate functional equivalence classes associated with a function. This means that a function will have references to other functions that can collectively be considered equivalent to the function. The collective equivalence could be of a combination of functions connected by ‘AND’ and ‘OR’ or combinations thereof. Domain specific knowledge could be used to define such equivalence classes. This will be a fundamental feature for functional decomposition during the design process. As for example: function (‘rotary_motion to rotary_motion’) could be expressed as equivalent to: function(‘rotary_motion to linear_motion’) AND function(‘linear_motion to rotary_motion’) A BNF-like definition for the function is given below: <function> ::= {<fid> <input> [<art>…] <output> <constraint><eqv> <goal>} <fid> ::= literal identifier (name) of the function <input> ::= set of <input_par> <art> ::= artifact through which functional requirements are achieved. <output> ::= set of <output_par> <constraint> ::= set of <relationship> defined over the inputs, outputs and internal attributes of the function <eqv> ::= functional equivalence as discussed above <goal> ::= {<optimality_measure_function>[<constraint>…]}… <input_par> ::= {<iid><category><weight>[<unit>][<value_range>]}… 24 <iid> ::= literal identifier (name) of the input <output_par> ::= {<oid><Category><Weight>[<unit>][<value_range>)… <oid> ::=literal identifier (name) of the output <weight> ::= relative weigh of this parameter for this function <unit> ::= unit of measurement ∈ (set of units) <value_range> ::= as defined in section 3.1 A class diagram of the function class is shown in Appendix-1 (figure A1.2) 3.4 Representation of Behavior The functional model as discussed in the earlier section is useful for conceptual design where the design concept is evolved on the basis of the specified abstract functions. However, the functional model is not sufficient to synthesize assembly/components behavior. This is because of the fact that functional models do not adequately capture the interactions of forces and kinematic motions between the part geometry. For instance, the fit condition between a shaft and a bore cannot be expressed by a spatial relationship since it does not provide functional design details such as contact pressure, contact force, rotational torque, rotational speed, etc. at the shaft-bore interface. In order to synthesize product/assembly behavior and geometric tolerances, full behavioral models of the involved components in the assembly (including both the structural and kinematic behavioral models) are required. Behavior of a function is defined to be the set of values of parameters (which are related causally) of the function either at a specified time or a series over a period of time [Chandrasekaran (1996)]. Behavior of a function is context sensitive and as such, behavior comes into play only in the context of a form. A function defined as an abstract object often can be achieved through different forms / devices and the function will have 25 different behavior under each separate form / device context. A general behavior class is defined using BNF-like structure as below: <behavior> ::= {<state_var> <causal_link><value_ref>} <causal_link> ::= {[<depends_on>] [<affects_var>]} <depends_on> ::= set of variables that influences this variable Represents input, if this set is null. <affects_var> ::= set of variables that are influenced by this variable Represents output, if this set is null. <value_ref> ::= {<tabulated>|<procedural>} <tabulated> ::= set of (time, value), at discrete time ∈ R+, value ∈ R <procedural> ::=procedure to return value of the variable at specified time. The procedure could be in a closed form parametric function of time x = x(t) or an implicit functional representation f(x, t) = 0 that can be solved for x, given t > 0 or some procedural representation which has no closed form but x could be computed, given t. As for example: (flow_rate (depends_on (area_of_flow) (pressure)) (affects_var pressure_drop) (procedural (if flow_is_turbulent() then flow_rate(t) := f1(t) else flow_rate := f2(t) ) ) Figure A1.3 in Appendix 1 gives a class diagram of the behavior class. 3.5 Artifact Library The proposed design synthesis process (as detailed in chapter 4) is based on searching artifact library containing artifacts that could meet specific functional requirements; in other words, an artifact library (ARTL) is needed that contains artifacts with known inputs, outputs and a set of variable internal parameters. This artifact library could be thought of as a knowledge base for searching artifacts that meet specified input/output patterns in specified design domains. 26 As mentioned in section 3.3, functions could have their equivalent classes and so also could artifacts – the functionalities of an artifact could be met by combination of two or more artifacts. The artifact library could contain this knowledge for ease of searching. In order to illustrate the steps for the design evolution, a sample artifact library has been developed (Appendix – 3) and the same has been used in the design synthesis example shown in Chapter 4. 3.6 Tolerance representation All five categories of tolerances specification, size, form, orientation, run out and location tolerances (as per ASME Standard Y14.5M-1994), have to be represented in the tolerance data structures. Tolerance specification involves the specification of a datum reference frame (DRF) and the relationship among five kinds of tolerance shape elements: vertex, edge, surface, axis and median plane [Roy (1998)]. Whenever a tolerance specification requires a datum system to establish the position and orientation of features with respect to other features, a datum reference frame is provided. It may be three-plane coordinate system, axes, or an ordered set of features. Size tolerances provide limits for the size (linear and angular) of a feature, the extent within which variations of geometric form as well as size are permissible. The size data structure contains a record of the nominal value and its maximum and minimum variations. Form tolerances (straightness, flatness, roundness and cylindricity) are used on individual features (single surface, edge, axis or median plane) and its data structures needs the description of the form tolerance type and the specific tolerance value. Angularity, parallelism and perpendicularity are included in orientation tolerance. The data record of the orientation tolerance includes types of 27 orientation tolerance, tolerance value, MMC (material) condition and a pointer to the DRF record. Tolerances of location state the permissible variation in the specified location of a feature in relation to some other feature(s) or datum(s). Its data structure contains location tolerance type, type of tolerance shape element, tolerance value, MMC conditions, and a pointer to the DRF record. The incorporation of tolerance models within the artifacts solid model is fundamentally based on applying tolerance as the design constraints to the solid objects. These constraints are driven by the features parameters of the solid object as well as by its geometry. Constraints are specified to both unevaluated (CSG) and evaluated (B-Rep) forms of the solid model. The constraint descriptions are independent of the “set operator” description of the solid model and they are specified and attached to the tangible and intangible topographical entities only, apart from the CSG and B-Rep data structure. Tolerances are associated with features of components and as such the generic tolerance definition would be used in the definition of artifacts, parts as well as features. A generic BNF-type definition of tolerance representation is given below and the class diagram for tolerance representation is given in Appendix –1 (figure A1.6). tolerance ::= {<tol_category><tol_value>[[<modifier>]<datum_ref>]} tol_category ::= { size_tol | form_tol | orientation_tol | location_tol | runout_tol } tol_value ::= {<base_value>[ ± <range_value>]} base_value ::= numeric value ∈ R+ range_value ::= numeric value ∈ R+ modifier ::= { MMC | LMC | RFS } MMC ::= ‘Maximum material condition’ LMC ::= ‘Least Material Condition’ RFS ::= ‘Regardless of Feature Size’ datum ::= {<local_datum> | ∈ <global_datum_list>} local_datum ::= {<datum_name><feature><feature>[<feature…} global_datum_list ::= {<datum_name><feature>}… 28 feature ::= <feature_id><feature_type> feature_id ::= a literal name of the feature like F1, F2, etc. feature_type ::={planar | cylindrical | median plane | spherical | conical | others} The class structures described in this chapter form the basis for the design and tolerance synthesis schemes discussed in the subsequent chapters. 29 I never saw an ugly thing in my life: for let the form of an object be what it may, - light, shade, and perspective will always make it beautiful. --John Constable Chapter 4 Design Synthesis: Function-to-Form Mapping The design of an artifact to satisfy the product specification (PS) is a complicated process. The design process is considered evolutionary in nature because we start with incomplete knowledge about the final product and continue to evolve from a conceptual design stage to a concrete form/shape. As more knowledge about the product and its functional requirements are made available, the set of specifications/requirements change to take into account this new knowledge. In the present approach, suitable functional entities are searched in the corresponding artifact library to arrive at a starting point for the conceptual design. At this stage, some of the attributes specified in PS could have been found and some of the functional requirements may have been satisfied. In order to proceed further, more knowledge is required to be injected into the system and the set of specifications need to be transformed for subsequent enhancement of the initial solution. The design of an artifact is represented as D ::= {<PS><Art_Tree>} where <PS> is Product Specification and <Art_Tree> is the artifact tree1 (also called assembly graph and can be treated as a linked list of artifacts). 1 The term ‘artifact tree’ is used here in a somewhat relaxed sense, as the artifact is not a tree in strict graph theoretical definition because there could be loops in the assembly graph - more appropriate term would be artifact graph. 30 The artifact tree is empty at the beginning. Subsequently, as suitable artifacts are mapped to perform a desired functionality, these artifacts are added to the artifact tree. As the artifacts in the artifact library (ARTL) has been considered as input-output systems, outputs from an artifact that are not in the PS become inputs to the next artifacts that may be added to the artifact during next stage of design evolution. Outputs that could be mapped in the PS are terminals. Also, the designer may designate an output as terminal so that further mapping of this output, as input to a new artifact, is not required. This approach for design synthesis generates stages of (sequence of) partial solutions as shown below. D0 = {<PS0><Art_Tree0>} D1 = {<PS1><Art_Tree1>} D2 = {<PS2><Art_Tree2>} … Dn = {<PSn><Art_Treen>} where <Art_Tree0> is NULL (at the beginning) At each stages of evolution, the partial solutions are checked for convergence to the desired output specified in the PS. This checking is performed using two basic criteria: a constrained norm minimization process involving the relational constraints associated with the product specification and the individual artifacts. The norm (defined later in this section) is the ‘distance’ of the partial solution from the desired output. After the minimization, spatial constraints are checked. Based on the above two process, the set of candidate artifacts that have been identified, are graded from ‘best’ to ‘worst’ at that particular stage. A design alternatives control parameter, Nalt as the number of artifacts (that are most desirable in the graded list) to be considered for the next stage is used to reduce the search space. This implies that, for example, if in a stage 10 artifacts are 31 mapped and Nalt has been set by the designer as 3, only the ‘best’ three of these 10 will be used as possible candidates in this stage and searching would continue from those 3 only for the next stage. It may be noted here that as Nalt increases, possibilities of more diverse solutions increase. This is a desirable feature because more alternative design solutions can be explored. However, there is a cost associated with the increase in Nalt in terms of computation time and storage requirements. In the proposed system, this design control parameter Nalt has been kept as a designer-selectable value so that the designer can experiment with different values for Nalt to decide suitable values for specific design domains. The design synthesis process at some intermediate stage will have at most Nalt branches from each of the artifacts in that particular stage. The process of expanding a particular branch will terminate when one of the following conditions has been reached. i) A feasible solution satisfying the output specification, relational constraints as well as spatial constraints have been satisfied. This means that the minimization process discussed earlier has resulted in an acceptable distance between the desired output in PS and the partial solution. We designate this acceptable distance as a convergence criterion, ∈0. Thus d ≤ ∈0 is the termination criteria. ii) The search for a suitable artifact from the artifact library failed to map at least one artifact and hence the design synthesis process cannot proceed further. There are some basic considerations in the design evolution process depicted above that need further investigations. These are: transformation of PSn to PSn+1, including attribute transformation, constraint transformations, and variation of internal parameters of each 32 artifact for searching a solution as a minimization process. These have been discussed in the following sections, before the design synthesis procedure is presented. 4.1 Transformations of Product Specification (PS) The design evolution process depends on transformation of the Product Specification as the design progress from one stage to another stage of the design synthesis process. The PS transformations consist of Attribute Transformation, Constraint Transformation and the Variation of Internal Parameters as detailed in the following sections 4.2 Attribute Transformation The product specification PS0 contains the initial specification with PS0.Inp and PS0.Out as sets of input and output specifications, respectively. Assuming that at stage j, a sub-set of these sets of requirements have been satisfied, PSj is transformed into PSj+1 as described below. Let us assume that an artifact, Artjk has been found in the design stage j with some elements of Artjk.Inp are in PSj.Inp and some elements of Artjk.Out are in PSj. Out. We can present this as a union of two mutually exclusive sets Artjk.Inp = Artjk.Inp1 ∪ Artjk.Inp2 where Artjk.Inp1 ⊆ PSj.Inp and Artjk.Inp2 ⊄ PSj.Inp Artjk.Out = Artjk.Out1 ∪ Artjk.Out2 where Artjk.Out1 ⊆ PSj.Out and Artjk.Out2 ⊄ PSj.Out If Artjk.Inp2 is NULL then all input requirements of the artifact Artjk are in the product specification PSj.Inp and this artifact needs no further artifacts whose output should be 33 mapped to inputs. Otherwise, we transform the inputs to a new set of outputs for some artifact to be searched with: PSj+1.Out = PSj.Inp ∪ Artjk.Inp2 If Artjk.Out2 is NULL then all outputs of the artifact Artjk are in the product specification PSj.Out and the outputs of this artifact need not be mapped as input to some other artifact. Otherwise, we transform these outputs to a new set of inputs for some artifacts. Here, the designer can accept some of these outputs as by-products to the environment and treat them as already satisfied. The remaining outputs are then transformed into a set of new input specification as: PSj+1.Inp = PSj. Out ∪ Artjk.Out2 4.3 Constraint Transformation Constraints play a major role in any design by restricting the design search space from an open-ended search to a more restrictive (and hopefully, of polynomial time) search. In other words, constraints could be thought of as a guiding mechanism for evolving a design along some restricted path. In the present case, constraints have been categorized into three separate categories for ease of treatment/management. These are: relational, causal and spatial. Relational constraints are functions relating attributes (or parameters of attributes) according to some physical law or some other restrictions. <relational> ::= f(<attribute_name>[,<attribute_name>]…) EQ <value_range> The function f could be of three types: explicit, implicit or parametric. <explicit | implicit> ::= f(X) ∈ R, X ∈ Rn 34 <parametric> ::= f(X(t)) ∈ R, t ∈ Rn : tj ∈ (0,1) & Xj = Xj0 + tj* (Xj1 - Xj0) If f is a vector valued function, it could be treated as a set (f1,f2,…fn) of n scalar functions such that fj ∈ R , j∈(1,n). For example, in a rotary motion transformation, a global constraint requiring a speed ratio (assuming ωI as input and ωO as output rotary speed) could be: PS.ωI.value/PS.ωO.value EQ (5,6) ; a reduction of 5 to 6 is desired It has been mentioned earlier, during discussion on artifact representation, that range (interval) will be accepted as possible values for any parameter. Since relational constraints are functions involving such parameters, standard interval arithmetic [Moore (1966)] has been used to treat these types of values. The interval arithmetic that would be required to deal with ranges of values for attributes for this work has been given in Appendix –4. Transformation rule for four basic types of constraints: Additive: ADD(x,y,z) ::= x + y = z If x and y then z = x+y If x and z then y=z-x If y and z then x=z-y Multiplicative: MULT(x,y,z) ::= x * y = z If x and y then z=x*y If z and x and x !=0 then y=z/x If z and y and y !=0 then x=z/y Subtractive: MINUS(x,y,z) ::= x - y = z If x and y then z = x-y If y and z then x=y+z If x amd z then y=x-z Functional: FUNC(x,y) ::= y = f(x) , f ∈ M+ 35 We will also need another constraint DERIV(x,y) for studying the behavior of artifacts, derivative: DERIV(x, y) ::= y = dx/dt , f ∈ M+ A constraint defined by f(y1,y2, y3, …yn) = 0 is converted to a set of n equations, by solving for each yj in terms of the others. y1 = f1(y2, y3, y4 …) y2 = f2(y1, y3, y4 …) y3 = f3(y1, y2, y4 …) …. If such an explicit representation is not possible, the constraint may have to be represented in a different way, either by linearizing about some operating point, or by approximating into simpler forms. If an attribute of an artifact is linked/related to another attribute in a linked artifact, two possible cases occur: an output attribute goes as an input to the next artifact or an input attribute comes out as an output. In either case, the corresponding component of the constraint is used and it is solved for the new range for the parameter. This new range accompanies the attribute as a constraint to the next artifact. In the next artifact, there may be a priori knowledge about the range of an attribute within which that artifact operates. In order that the incoming attribute value range is acceptable, intersection of the two intervals are performed as: Pin ∩ Pallowable. If the intersection is NULL, there is a contradiction and the constraints associated with the incoming attribute P makes the new artifact unsuitable for a possible element of the artifact tree. 4.4 Variation of Internal Parameters of Artifacts As it has been pointed out in earlier in this chapter, artifacts are searched from the artifact library by matching input parameter types for possible candidates in the solution. 36 However, a suitable measuring and optimizing criteria would be required for guiding the design solution. In other words, some criteria for selecting the ‘best’ possible candidate at each stage from a possible set of artifacts have to be formulated. A ‘distance’ type norm is defined for measuring the proximity between the desired output (as specified in PS) and the partial solution reached at some stage j, as: d(a,b) = ( (alow-blow)2 + (ahigh-bhigh)2 ) 1/2 where a and b are two variables representing closed intervals a = [alow, ahigh] and b = [blow, bhigh] Above definition satisfies properties of a norm: d(a,b)=0 iff alow = blow and ahigh = bhigh d(a,b)>0 for a != b d(a,b) = d(b,a) We would, sometimes, use a parametric form to represent intervals a and b. As for example, a = alow+(ahigh-alow)*θ : θ ∈ [0,1] While the range of feasible variations of the input will be used to check for suitability of accepting an artifact, the variations allowed in the internal parameters of the artifact would be used to minimize the ‘distance’ between the desired output as specified in PS and the output (partial solution) at the present stage. The minimization scheme is formulated as below: Minimize: d(Oj, O0) where, O0 is the output specified in the PS and Oj is the output from the artifact j in an intermediate stage of the design. 37 The partial solution Oj is given by: Oj = fj (Ij, βj), which is derived from the main constraint C0 (relationship between the input and the output of the artifact j, vide section 3.2.3), by solving for Oj from Cj0 (Ij, Oj , βj) = 0. The parameter β (where βj = (βj1, βj2,… βjn) ) is the internal parameter of artifact j (vide section 3.2.3). The parameter β is expressed in parametric form as: βjk = βjk_Low +(βjk_High - βjk_Low)* θjk : θjk ∈ (0,1), k ∈ (0, n). The subscripts Low and High indicate the lower and upper bounds of the interval for βjk. It is also possible that apart from the Co constraint, an artifact may have additional relational constraints associated with it. These relational constraints are expressed as: Ck(I, O, β) <rel_opr> <value> , where k>0 and <rel_opr> is the relational operator (one of {LT LE EQ GE GT NE}), and <val> is a numeric value. For the optimization scheme, these relationships are converted to the standard equality form Ck(I, O, β) = 0, by introducing additional variables for the cases where the <rel_opr> is not “EQ”). The input to the artifact j, Ij is equal to the output from the previous artifact j-1 and so on. These give rise to the chain of linked equations and the optimization scheme becomes: Minimize: d(Oj, O0) subject to: ; constraints associated with artifact j Cj0 (Ij, Oj , βj) = 0 Cj,1 (Ij, Oj, βj) = 0 … Cj,c(j) (Ij, Oj, βj) = 0 Ij = Oj-1 ; constraints associated with artifact j-1 Cj-1,0 (Ij-1, O j-1, βj-1) = 0 Cj-1,1 (I j-1, O j-1, β j-1) = 0 … Cj-1,c(j-1) (Ij-1, Oj-1, βj-1) = 0 Ij-1 = Oj-2 38 ; constraints associated with artifact j-2 Cj-2,0 (Ij-2, ,Oj-2 , βj-1) = 0 Cj-2,1 (Ij-2, Oj-2, βj-2) = 0 … Cj-2,c(j-2) (Ij-2, Oj-2, βj-2) = 0 … I2 = O1 ; constraints associated with artifact 1 C1,0 (I1, O1, β1) = 0 C1,1 (I1, O1, βj) = 0 … C1, c(1) (I1, O1, β1) = 0 Above minimization scheme could be solved using Lagrange multiplier scheme by including the constraints into the main optimization function as: dj = d(Oj , O0) + Σn∈ (1, j) Σk∈ (1, c(n)) (µn,k* Cn,k(In , On , βn)) + Σp∈ (1, j-1) (λp * (Ip+1 – Op)) where c(n) is the number of constraints associated with artifact n, and µ’s and λ‘s are Lagrange multipliers. The minimization of dj produces a set of parameters (β*n), for each artifact n ( n ∈ (1 , j)), which makes the present solution closest to the desired solution. We denote by dj* and Oj* the corresponding optimal distance and output. If the value of dj*(Oj*, O0) is within a specified value ∈0 (convergence criterion), we can accept the current design solution given by Dj = {<PSj><Art_Treej>} as a feasible solution. However, if the distance dj* is not within acceptable limit, the solution at this stage represents a partial (an incomplete) solution i.e. the desired output value has not yet been achieved yet. The above minimization process deals with the relational constraints only. After the minimization has been performed, (irrespective of the solution whether an acceptable feasible solution or a partial solution), the spatial constraints are then checked. There can arise four situations after the spatial constraints are applied. 39 i) A feasible solution has been achieved and the spatial constraints are all satisfied. ii) A feasible solution has been achieved and all the spatial constraints are not satisfied. iii) An incomplete solution has been achieved and the spatial constraints are all satisfied. iv) An incomplete solution has been achieved and all the spatial constraints are not satisfied. The case i) represents a complete solution and the corresponding branch of the tree can be terminated without further growth. The rest three cases are incomplete and the branching / growth of the solution tree continues to the next stage. 4.5 Design Synthesis Process Before the functional requirements could be transformed into suitable artifacts that could perform the desired inputÆoutput transformation, the product specification is searched to produce a linked list of functional elements that could perform the desired functional requirements. This process can be represented in a pseudo-code as shown below: for each functional attribute attrj ∈ Prod_Spec do: { if type(attrj) is input then search function library to locate function fun k , ∃n, ∃k : funk .type(attrn ) == input AND funk .Category(attrn ) == Prod_Spec.Category(attrj); else if type(attrj) is output then search function library to locate function fun m , ∃p, ∃m : funm .type(attrp ) == output AND funm .Category(attrp ) == Prod_Spec.Category(attrj); endif } 40 At the end of this search, there will be two sets of functional elements, pFunIn and pFunOut which will represent the terminals of the functional tree; pFunIn being the starting point and pFunOut is the ending point. Set of inputs of Prod_Spec ⊆ (∪ inputs(pFunIn)) and Set of outputs of Prod_Spec ⊆ (∪ outputs(pFunOut)) The next task is to locate suitable intermediate functions (symbolically shown with dotted rectangles in figure 4.5) to connect the pFunIn and pFunOut. … pFunIn pFunOut … … … … Figure 4.5 Schematic diagram for transforming input functions to outputs Above task could be completed using the following algorithm: level = 0; iFunlevel = pFunIn repeat for each function ifunj in iFunlevel do: // j=1..no of functions in iFunlevel if ∃k, ∃m : ifunj .Category(outputk) = pFunOut .Category(outputm) then // a terminal for has been located for outputk of ifunj mark outputm as found else // new function required for outputk (ifunj) // locate a suitable function ftemp if ∃m : ifunj .Category(outputk) = ftemp .Category(inputm) then put ftemp in the set iFunlevel+1 else // a suitable function could not be located. // needs new functions to be introduced // in the function library. interaction with // designer required to get such a function. // terminate execution endif endif // go for decomposition of next level functions level = level +1 until all outputs of pFunOut has been marked as found. // 2nd stage: function-to-artifact mapping 41 // In this stage, each of these functional elements would be mapped with a // suitable artifact from the artifact library to achieve the desired functionality. // The steps for the artifact library search is described in the design synthesis steps // below The steps in the design synthesis process could be represented as below: 1. Start with a product specification (PS) and a null design object D. 2. Take an attribute from the PS (PS.Attrj) and locate a set of artifacts from the artifact library(ARTL) each having the same category of attribute as in DP.Attrj. For all artifacts in ARTL Do: If PS.Attrj.type = ARTL.artk.attrm.type AND PS.Attrj.category = ARTL.artk.attrm.category then // an artifact is found, save the pointer in DTemp endif End Do If Dtemp is NULL then no artifact could be found If all attributes are checked then Exit loop 2 else Check with the next attribute PS.Attrj+1 endif Else Exit loop 2 // at least one artifact has been found! Endif 3. If Dtemp is NULL then // consult a functional equivalence (FE) class library (which is defined based on the design domain- specific knowledge) to try to replace a functional requirement with a set of functions that can collectively perform the desired functionality. Modify the PS accordingly and continue with loop 1. // if all such functional equivalences have been exhausted and even then none of the attributes in PS could map a suitable artifact from the ARTL. The PS needs futher refinement, addition of new attributes and / or addition of new artifacts in the ARTL. Terminate. Endif Apply the constraints associated with PS.Attrj to all the artifacts in Dtemp. If Dtemp contains more than one artifact then Apply heuristics to select the ‘best’ N artifacts (N>=1, specified) // note N>1 means we continue with more than one artifact that has been found. /* This would be a desirable feature from ‘getting variety of alternative designs’ point of view. Also, though the constraints for the attribute may be ‘best’ satisfied for one artifact, other artifacts with partially satisfied constraints may lead to better alternative designs. This is due to the fact that some global constrains and goals which could not be checked / applied at this stage, may be better satisfied after all the functional requirements have been found. However, as N increases, the solution space expands rapidly, and may be restrictive from computational point of view. This aspect has to be studied further to decide reasonably good upper bound on N. */ Endif 42 4. Althouh N could be more than 1, henceforth we proceed with one alternative from the Dtemp. Identical procedure will be applicable for all the alternatives. Let D1 = Dtemp.Art1 Modify the attribute values with those in PS and percolate the constraints. The design space D now contains one artifact. In general, this artifact will have other attributes and constraints associated with it. Now, in order to consider this artifact as an element of the solution D, these are also to be considered as part of the design specification. Thus we will now augment the design spec PS with the unsatisfied attributes of this artifact. Let DI = set of input parameters of D1.Atr1 DO= set of output parameters of D1.Atr1 If some of the elements of DI and DO are already in PS, we mark them as found otherwise, and remove them from DI & DO. The remaining attributes need to be satisfied. Since both the above two sets were not a desired requirement, we would put a negative weight to these attributes (undesirable?) and augment the PS with these new sets of attributes along with associated constraints. We will now search for artifacts from the ARTL by transforming the DI and DO as: Generate a temporary subdesign spec with input attributes = DO and output attributes = DI // input DI to D1.art1 must come as output of some other artifact or from a terminal which we also consider as artifact with no input and one output (like an electricity supply point as a terminal that supplies electric energy and need no further input) // output DO from D1.art1 must either be accepted as an undesireble by-product to the neighborhood and no further exploration would be required or the output must be mapped as in input to some other artifact. The solution D1 is now copied as D2 and next search proceeds. This search would be identical to the one carried out in section 2 above. Thus at each stage of evolution of design solution, further artifacts would come in the D’s and the solution will grow in many directions. We will keep track of each stage of solution along with corresponding product spec in a stack as: {<D0,PS0>,<D1,PS1>,<D2,PS2>,…,<Dn,PSn>} The process will terminate when one of the following is satisfied. 1. All the attributes in the PS has been found: In this case, a feasible solution has been found. Now, the solution Dn the global constraints and goals could be evaluated. 2. Some of the attributes are yet to be found and no further artifact could be located in ARTL. In this case, either the designer will provide some more domain specific knowledge in the PSn or some new artifacts would be added to proceed further. However, in order to explore other possible solutions, we may backtrack one step to <Dn-1, PSn-1> and consider other less favorable possibilities. Above procedure is described in the following steps: 0. Develop design domain specific artifact library (ARTL), functional equivalence library (FUNL) and domain-specific knowledge base (DK). For the time being, we assume that the DK is specified in the form of constraints and relations in the 43 PS itself. However, these could be separated out for treating them in a generic way. 1. Start with a product specification PS. 2. Locate suitable artifacts from the ARTL mapping the input parameters from the product specification with those of the artifacts having same input type. If no artifacts are found, go to step 8. 3. Check whether the type of output from some of these artifacts matches the output types specified in PS. Divide the artifacts into two sub-groups: one with artifacts whose output matches the desired output (DM) and other where such a match is not found (DNM). 4. a) With DM Generate the distance function between the output and the desired output in PS and minimize the distance along with the constraints associated with the attributes. 1. If the distance for some of the artifacts are within a specified acceptable value, a possible solution has been found. 2. Apply the spatial constraints to these artifacts. If these constraints are satisfied, go to step 10 3. If the distance is not within the acceptable value, only a partial solution has been found. Take the top Nalt artifacts nearest to the solution. Go to step 5. b) With DNM 44 In this case, the minimization criteria cannot be applied yet since the output type did not match the desired output type in the PS. The minimization scheme can only be applied when a match for the desired output has been found. Proceed to step 5. 5. Generate new sets of attributes and transform the constraints to augment the PS so that additional attributes associated with the selected artifacts could be taken into account. 6. Repeat steps 2 to 5 with transformation of the product spec PS. 7. Continue untill such time the entire attribute requirements are satisfied or some attributes could not be mapped. 8. At any stage, if some attributes could not be mapped, there would be three alternatives: look for a possible functional equivalence class and modify the PS accordingly and continue search. If such a functional equivalence class is not found, consult with the designer to acquire new attributes, knowledge, constraints and/or modify existing specification. Repeat steps 2-5 after such modifications. If above steps still fail to map some attribute requirements, the designer needs to add new artifacts in ARTL and/or add new functional equivalence classes in Function Library. After this step, repeat the process again. 9. In case all options have been exhausted at an intermediate stage, and a feasible solution has not been found, consider the possibility of going back one step (backtracking) and consider other less favorable paths with artifacts with lesser matches. 45 10. After a feasible solution has been found, a tentative sizing of the components of the artifacts is carried out by using the attribute values specified and by applying the physical laws governing the behavior of the artifact. If during this process, some parts could not be sized within acceptable range of values, consider possible change of the PS and go to step 7. 11. Introduce tolerance models associated with each artifact in the artifact tree and carry out tolerance analysis. If during this process, tolerance requirements for some parts are not feasible, consider changing PS and go to step 7. 12. Consider manufacturability of the artifacts in the design solution. Apply criteria for manufacturability. If during this process, some manufacturing requirements for some parts are not feasible, consider changing PS and go to step 7. 13. Consider global goals and constraints associated with the product specification. If the global constraints are satisfied, initiate global optimization processes and consider changing the PS again to achieve some global goals and go to step 7. 14. A feasible design has been found. The iterative design synthesis process will terminate when one of the followings is satisfied. 1. All the attributes in the PS have been found and the desired output value level has been achieved. In this case, a feasible solution has been found. Now, the global constraints and goals could be evaluated. 46 2. Some of the attributes are yet to be found and no further artifact could be located in ARTL. In this case, either the designer will provide some more domain specific knowledge in the PSn or some new artifacts would be added to proceed further. However, in order to explore other possible solutions, we may backtrack one step to Dn-1 and consider other less favorable possibilities. 4.6 Observations on the Design Synthesis Process In general, an artifact may have more than one input and output attribute and constraints associated with them. In order to consider the artifact as an element of the solution, these attributes are also to be considered as part of the design specification. Thus, we need to augment the design specification with the unsatisfied attributes of this artifact. If some of the input and output attributes are already in PS, we mark them as found the remaining attributes need to be satisfied. Since these inputs and outputs were not in the original product specification, they are not desirable from the product specification requirement. However, these must be mapped to other artifacts. We would put a negative weight to these attributes (undesirable?) and augment the PS with these new sets of attributes along with associated constraints. With this augmented PS, we will now search for artifacts from the ARTL. The input attributes must come as output from some other artifact or from a terminal that we also consider as artifact with no input and one output (like an electricity supply point as a terminal that supplies electric energy and need no further input) 47 The output attributes must either be accepted as an undesirable byproduct to the environment and no further exploration would be required or the output must be mapped as in input to some other artifact. As an example, the above proposed design procedure has been applied to a simple design problem and the steps have been elaborated in the next section. 4.7 An Example of Design Synthesis Design problem statement: Design “a device to increase the rotational speed by a factor of 10”. The product specification is as below: PS = ( (function rotation to rotation) (input wI rotary_motion rad/sec 0 wi0) (output wo rotary_motion rad/sec 0 wo0) (constraint relational wo = wi / 10) (constraint spatial (axis(wI) parallel_to axis(wo)) // some other attributes, not essential for the example have been left out. ) Let PS0 = PS. The design is started with PS defined above and solution D0 = ({PS0}, {null}) To make the example easier to follow, we will use Ai,j to indicate artifact Ai as used in stage j The attribute PS0.wI is an ‘input’ and the type of the ‘input’ is ‘rotary_motion’. Searching the artifact library ARTL, we find artifacts {A1, A2, A3, A4, A5, A6, A7, A8} all having the same ‘input’ category with ‘rotary_motion’ as type. Hence D0 = ({PS0}, {A1, A2, A3, A4, A5, A6, A7, A8}). The set of artifacts {A1, A2, A3, A4, A5, A6, A7, A8} can satisfy the ‘input’ requirement. Thus we set, D0=({PS0}, {A1,0, A2,0, A3,0, A4,0, A5,0, A6,0, A7,0, A8,0}) 48 There are no more ‘input’ category attributes. We now check whether the outputs of these artifacts match the output specified in the PS. We find that artifacts {A4,0, A6,0, A7,0} meets this requirement. Thus, at this stage, we have two distinct subsets of D0 , D01= ({DP0}, {A4,1, A6,1, A7,1}) and D02 = ({DP0} {A1,1, A2,1, A3,1, A5,1, A8,1}). While each artifact in D01 can meet both input and output requirements of PS, those in D02 only meet the input requirement. The two sets D01 and D02 require different treatments and we split the design synthesis into two segments. Segment #1: With D01 Since both input and output requirements have been found, we apply the constraints and see how far the constraints are satisfied: For artifact A4,1: Its internal relationship is: wO = wI * R, where R=[0.25,4.0] In parametric form, it becomes R = 0.25+3.75*θ, where θ ∈ (0,1). Minimization scheme: minimize d(PS0.wo, D1.A4.wo) d = d(10*wI, (0.25+3.75*θ)*wI)= wI*(9.25-3.75*θ) Î θ* = 1.0 for minimum d = 4*wI. With this θ*, d is not yet zero, so the artifact A41 can only meet the output requirement partially. We need to add some other artifacts to the artifact 4 to reach the desired output. In this stage, with (θ*, wo*) = (1, 4.0 * wi ) Similar computations with artifact A6,1 and A7,1 also leads to incomplete fulfillment of the desired output level, which are (θ*, wo*) = (1, 3.0 * wi ), (θ*, wo*) = (1, 4*wI) respectively. 49 Now, applying the spatial constraints, we see that: Art A4,1: axis(w1) parallel_to axis(w2) IS TRUE Art A6,1: axis(w1) parallel_to axis(w2) IS TRUE Art A7,1: axis(w1) parallel_to axis(w2) IS FALSE Thus, at this stage, by considering above two constraints (both relational and spatial) satisfaction criteria, we grade artifact A4,1 as the most appropriate artifact, followed by artifact A6,1 and artifact A7,1. For the next stage, in order to search for new artifacts that can take outputs from the above 3 artifacts (artifacts {A4,1, A6,1, A7,1}), we transform their corresponding outputs to the desired inputs for the new artifacts. The spatial constraint has been satisfied for artifacts A4,1 and A6,1 and would need no further transformation; however, the spatial constraints for artifact A7,1 has not been satisfied and needs to be transformed as: axis(w1) perpendicular_to axis(w2). This is because the current unsatisfied constraint axis(w1) parallel_to axis(w2) (an angle of zero) could not be met. The constraint axis(w1) perpendicular_to axis(w2) (an angle of 900 ) is converted to axis(w1) perpendicular_to axis(w2) (an angle of 900 ), so that the combined effect of another artifact which meets this requirement would produce 0 or 180 as parallel, the final requirements. With these modified specifications, we carry out the search again. First we take the case of artifact A4,1 and find that all the artifacts A1 - A8 can take the corresponding output as input. 50 Applying the same procedure as it was followed in the previous stage, we come across artifacts D2= {A4,2, A6,2, A7,2} as possible candidates. Applying the norm minimization criteria: For Artifact A4,2: Its internal relationship is: wO = wI * R, where R=[0.25,4.0] In parametric form, this becomes R = 0.25+3.75*θ, where θ ∈ (0,1). Minimization scheme: minimize d(PS0.wo, D2.A4.wo) d = d(10*wI, (0.25+3.75*θ)*4*wI)= wI*(10-1-3.75*4*θ) Î (θ*, wo*) = (0.6, 2.5 * wI) for minimum d=0. Thus, D2 = ({{PS1}, {A4,1}}, {{PS2}, {A4,2}}) is a solution that meets the output requirements. Applying similar optimization criteria to the other two artifacts A6,1 & A7,1, we get optimal solutions as: (θ*, wo*) = (1.0, 2.0 * wI) and (0.6, 2.5 * wI) respectively. The corresponding distances are 2*wI and 0 respectively. Now applying the spatial constraints, Art A4,2: axis(w1) parallel_to axis(w2) IS TRUE Art A6,2: axis(w1) parallel_to axis(w2) IS TRUE Art A7,2: axis(w1) parallel_to axis(w2) IS FALSE Thus after this stage, one feasible solutions (A4,1ÆA4,2) and a partial solution (A4,1ÆA6,2) have been found. For the third combination (A4,1ÆA7,2), though the distance is zero, the spatial constraints are not satisfied. Same procedure with artifacts A6,1 and A7,1 from stage 1 leads to the following situations: (A6,1ÆA4,2), (A6,1ÆA6,2), (A6,1ÆA7,2) as partial solutions and 51 (A7,1ÆA7,2) as a feasible solution. The process could be continued till the desired output criteria are met. A part of the design process is shown in figure 4.7-1 where Anj indicates the artifact number n in the ARTL as used in design stage j. Some of the solutions found have been shown in figure 4.7-2 52 A1,1 A1,2 A2,1 A2,2 A3,1 A3,2 A4,2 <PS0, D0> Å A solution (A41ÆA42) A4,1 A5,2 A1,3 A2,3 A5,1 A6,2 A3,3 A7,2 A6,1 A7,1 A1,4 A2,4 A3,4 A4,3 A4 4 A1,2 A5,3 A5,4 A2,2 A6,3 <PS1, D1> ÅA solution (A6,1ÆA4,2ÆA4,3ÆA4,4) A6 4 A3,2 A7,3 A4,2 ÅA solution (A6,1ÆA4,2ÆA6,3) A7,4 A5,2 <PS3,D3> A6,2 A7 2 ÅA solution(A7,1 ÆA7,2) <PS2, D2> Figure 4.7-1 Design Synthesis Process- some intermediate stages from the example 53 Input Output Solution A4,1ÆA4,2 Input Output Solution A4,1ÆA6,2ÆA4,3 Input Output Solution A7,1ÆA7,2 Figure 4.7-2. Typical Solutions from the Design Example 54 Segment #2: With D02 The next process is applied to D02, where the output is not the desired output specified in PS. In our example, we have the set D02 = ({DP0} {A1,1, A2,1, A3,1, A5,1, A8,1}). Since these artifacts do not produce the desired output type (i.e. rotary_motion) as specified in PS, we cannot apply the relational constraints specified in the PS. However, we can apply the spatial constraints as well as any local constraint associated with the artifacts, to eliminate some of the artifacts or to assign lesser importance to the artifacts of the set D02. After the constraints have been checked, we transform the outputs and the spatial constraints to search for artifacts, which can take these outputs as input attributes. If some artifacts could be found, we proceed as it has been stated in Segment #1. However, if nothing could be found, we consult the functional equivalence knowledge base library to check if suitable functional equivalence could be identified that can decompose this output into a collective group of functions. If such functions are found, we continue the search with the new set of inputs to locate some artifacts. If some artifacts are found, we proceed as before. If no such function is found, the design process stops at this stage and further input is required from the designer. There are three possibilities: inject some more design specific domain knowledge either in the PS or in the functional equivalence class library, or add new artifacts. It may be noted here that the sample artifact library and the functional equivalence class library developed for this design example have no such artifacts. And the design process in this Segment ended here without any feasible solutions with D02. 55 It is postulated that after a finite number of steps, a set of artifact chains will be found, the final element of which has the desired output type. Now, the relational constraints could be applied and the internal parameters of the artifacts could be optimized to see if the desired level of output has been reached. This problem then becomes a multivariate minimization with constraints. The minimization process assigns optimum values for the internal parameters of each artifact. After the minimization, if the distance d is within a specified value of ∈0, the solution has converged to a feasible solution. However, if d is still not within the range, we continue to add another possible chain of artifacts, and optimize. The process is repeated until the desired level has been reached. 56 He who wonders discovers that this in itself is wonderful. -- M. C. Escher Chapter 5 Tolerance Synthesis Scheme Tolerance synthesis is the process of allocating tolerances among the geometric parameters (dimensions) of the parts/components such that some costs associated with the artifact is minimized and at the same time the functional, manufacturing, and assembly requirements are satisfied. The generic tolerance model that has been defined in chapter three is used in this chapter to represent tolerances associated with features of parts of an artifact. However, as has been mentioned in chapter one, traditional tolerance representation (per ASME Y14.5M,1994) schemes are not directly used in the tolerance synthesis (TS) scheme as such representations are not suitable for uniform treatment in a generic manner. For the TS scheme a detailed description of the “kinematic functions” of the product assembly are required. These essentially mean functions defined by the location, size and shape (form) of associated mating parts/features of the artifact. These functional specifications are not directly provided by the customer or by the designer at an early stage of design. They are slowly evolved with the assembly as the design takes concrete shape and size in the later phases of the conceptual design. Tolerance synthesis and analysis need an exhaustive functional analysis mechanism to make sure that the identified functional requirements between the mating components of the assembly are met and are suitably described in the form of critical toleranced dimensions / size / sizes / forms. In this tolerance representation scheme the small deviation torsor (SDT) scheme 57 [Ballot (1998)] has been used to represent the variations associated with each feature of a part in the assembly. In subsequent sections details of steps involved in the TS has been elaborated. 5.1 Representation of Deviations of Features of a Part The geometric variations of a feature are defined in terms of deviations of the independent degrees of freedom of the feature. In this approach, at the most six independent parameters are required to represent a six-component vector corresponding to the possible six degrees of freedom. In actual case, depending on the type of surface (planar, cylindrical, etc) some of the degrees of freedom are ‘free’ (variations along which keeps the surface invariant) and thus, in general, less than six deviation parameters are required to represent the behavior of a feature. For example, for a planar surface, rotation along the outward normal to the surface and movements along the two axes on the surface keeps the feature invariant and hence a planar surface requires only three deviation parameters (axial movement, two rotations along the two transverse axes). In order to make the process of converting the functional requirements as well as kinematic requirements into a set of constraints in a generic manner, a procedure is needed to represent the variations associated with each part in terms of a set of parameters of the mating features/surfaces. Assuming small displacements (deviations) of these features due to manufacturing inaccuracies and/or other defects, the actual surface of a feature deviates from the theoretical (nominal) surface slightly. Such variations could be systematically treated by considering variation of six small parameters defined at a 58 point on the surface. The six parameters are: three linear translations and three rotations along the three axes of a local orthogonal coordinate system corresponding to the six degrees of freedom. These six small displacement parameters are called screw parameters or torsors. In general a feature of a part embedded in 3-D space would have six degrees of freedom (DOF): three linear, three rotational. In other words, six parameters could be used to represent the deviation of a feature from its nominal position. In fact a tolerance specified for a feature is nothing but some deviation of the nominal feature with reference to a datum or it could be an intrinsic variation. These deviations are small compared to the dimensions of the part and these deviations of a feature could be accurately described by two vectors: a three-component displacement vector and a three-component rotation vector defined at a convenient point on the feature. Each vector is assumed to have a very small norm. These two components in a collective form are called a small displacement torsor (SDT). Assuming the two vectors are represented by: small displacement d = (dx, dy, dz)T and small rotation θ = (θx, θy, θz)T , the SDT can be written as: T=(θ, d)T = (θx, θy, θz , dx, dy, dz)T. Although a torsor looks like a six component vector, its transformation rules (Appendix 5) are different because the two 3-component vectors are not compatible quantities. One represent linear displacement while the other is a rotation vector. For representing the deviations of a feature, first a suitable point of interest is chosen on the feature and the six components of the torsor is defined at that point as quantities in a local coordinate system. Although there is no preferred point as any point on the feature 59 could serve as a reference point, from practical design point of view, often points are chosen on specific locations on the feature for ease of coding and interpretation. For example, a point at the center of a rectangular planar feature could be preferred. Apart from choosing a point of interest, we also need to define a local coordinate system (LCS) at that point. The process detailed below could be used to define the LCS. 5.1.1 Local Coordinate System on a Feature For features defined by parametric surfaces of the form f(x) = 0, we assume f to be at least piece-wise continuous and it’s gradient (∇f) could be computed at a point where we would like to define the deviation parameters. Since the development of the assemblability constraints doesn’t depend on the point where we define the deviations (although the equation changes as the torsor transformations are dependent on the spatial coordinate of the point), we can choose arbitrary point on the feature surface. However, often it becomes reasonable to choose points that can be thought of as natural candidates for ease of interpretation of results as well as manipulation of deviations at these points. For example, if the feature is symmetric (for example, circular, rectangular, square features), the geometric center could be taken as the ‘point of interest’. So the selection of strategic points could be left to the designer/user without affecting the computational complexity. After a suitable point ‘P’ has been selected (figure 5.1.1), the LCS is defined as below: Compute the gradient of the surface at P: ∇f=(∂f/∂x, ∂f/∂y, ∂f/∂z) Normalize ∇f: ∇f=∇f/||∇f=||. Compute the dot product of dX and ∇f: λ= dX.∇f, where dX is a vector from an interior point (material side of the part to which the feature belongs) to the point P. If λ is positive then ∇f is outwards (emanating from the material side, which is what we want) else reverse the sign of ∇f ∇f = -∇f 60 endif Take local-x = ∇f. If the local-x = global-x then local-y=global-y and local-z = global-z else if local-x=global-y then local-y=global-z and local-z=global-x else if local x=global-z then local-y=global-x and local-z=global-y else Generate local-y by taking a unit vector on a vertical plane containing the local-x and making it perpendicular to local-x. end if Generate the local-z as cross product of local-x and local-y. y x P z Figure 5.1.1 Local coordinate system on a feature Above procedure generates the desired right-handed local coordinate system for defining the deviation parameters at that point. 5.1.2 Invariants of a Feature and Reduction of DOF Although we start with six components for each SDT, we can eliminate some of the components depending upon the type/nature of the feature. This is possible because most features used in engineering applications are regular. Because of this regularity there could be some DOF that act as invariants for the feature. For example, for a cylindrical feature, there are two such invariant parameters: axial rotation and axial movement. Both of these deviations keep the cylindrical feature invariant. Thus these two parameters could be eliminated. This leads to a four component deviation for a cylindrical feature 61 with an axis along the x-axis: ((0, θy, θz), (0, dy, dz))T. Similarly, for a planar feature, with z-axis along the normal to the plain (the deviation parameters are defined at point P, at the center of the feature, figure 5.1.2), θz, dx and dy are invariants, which makes it possible to represent the deviations of a planar feature with three parameters: ((θx, θy, 0), (0, 0, dz))T. Y Y P Z DP = (θx, θy, θz , dx, dy, dz)T P X DP = (θx, θy, - , -, -, dz)T Figure 5.1.2 Deviation parameters of a circular-planar feature Apart from the deviation parameters defined at the point of interest, another torsor is required to represent the possible overall rigid body displacement of the part as a whole. Thus in general two torsors are needed to completely define the position of a feature. One for the displacement of the part on which the feature is defined – called displacement torsor that we conveniently define at the center of a part, and the other to represent the intrinsic (local) variation of the feature called intrinsic torsor. 5.2 Tolerance Synthesis (TS) Scheme The TS scheme has been formulated as a constrained non-linear optimization process and following steps are required to realize the TS scheme: 62 1. For each component of the artifact, develop the kinematic DOF requirement between the mating features and decide the intrinsic displacement and deviation of the feature from the nominal surface as torsor components. 2. For each pair of connected features, establish the gap between the features as a gap torsor taking into account the indeterminate and/or blocked degrees of freedoms. 3. Generate assemblability constraints (geometric compatibility) by considering all chain of connected components as a kinematic link (either closed loop or path between two datum features) and aggregate the deviations (torsors) along the path with reference to a global frame of reference. Each loop generates six equations binding the deviation parameters associated with all the related features. These sets of constraints would form a deviation hull for the possible geometric variations of the connected components. 4. Generate constraints for functional requirement based on the specified functions/objectives to be fulfilled by the artifact. This will restrict the range of values of the deviations within which a component must remain to fulfill specific functional requirements. 5. Generate manufacturing / production costs models for each component (based on suitable knowledge base for manufacturing / production cost) for different machining operations and formulate a minimization scheme by considering the sum of costs for machining all the parts as the cost function subject to the constraints defined in steps 3 & 4 above. 63 6. Use standard mathematical tools to solve the above optimization scheme to find the deviation parameters for each component. 7. Convert the optimal deviation parameters associated with each feature into appropriate tolerance zones through deviation-to-tolerance mapping. Above steps are elaborated in the following section. 5.3 Deviation of Features and Assembly of Mating Parts The TS process is based on generic deviation parameters that define the deviation of features in the assembly of pats. The process of allocation/assignment of suitable torsors for each mating feature is illustrated using an example. The example has been taken from the design evolution example shown in chapter four where the design evolution process was illustrated by taking an example of designing a device for transmitting torque with changing rotational speed. One of the solutions is taken from the above design example and for the following a tentative sizing of the components as assumed. The gear-subassembly consists of three parts: a spur gear, a shaft with a keyhole and a key. The geometric models of these three parts, including their feature-level mating relationships are shown in figures 5.3-1, 5.3-2 and 5.3-3. The last figure is the assembly graph of the gear sub-assembly showing logical connections between features. A typical feature of a part is labeled <PnFn> where P stands for part, F stands for feature and n is serial number of the part/feature. Thus P3F2 indicates the 2nd feature of part 3. Key Shaft Gear Figure 5.3-1 A spur gear sub-assembly Figure 5.3-2 Mating details of the gear sub-assembly 64 65 Figure 5.3-3 Assembly graph of the gear sub-assembly As it has been detailed earlier in section 5.1.1, a suitable point is chosen on each feature and deviation torsor components are defined at that point to represent the deviation of the feature in a local coordinate system defined at that point. Based on the type of feature, torsor components suitable for that feature are selected for each of the mating features. After this operation, the assembly graph of the artifact (Figure 5.3-3) is constructed by connecting features/parts that are in mating. The assembly graph is then traversed to generate all independent paths between two terminals* and closed loops by an exhaustive search (details of the search procedure, special techniques to identify inner loops, and procedure to eliminate duplicate reverse paths have been discussed in the implementation section of chapter six). Each independent path is then used to generate one set of six constraints for assemblability (geometric compatibility) by aggregating the torsors along * Terminals are datum features or features of a part with known deviations that could serve as an anchor. 66 the path using the torsor transformation and summation rules. This is similar to traversing a vector loop. Union of all such constraints represents the configuration hull (various possible geometric configurations) for the artifact. This procedure has been elaborated further during development of assemblability constraints in section 5.4.2. For computations in each loop, the local variations are to be converted to a global coordinate system by transformation of the corresponding torsors in the local frame. 5.3.1 Gap as a Control Element between Mating Features While traversing these paths, the gap between the two mating features is used as a control element that could be effectively used in deciding the type of interface between the two mating features. The gap between two features is modeled using a gap torsor and the deviation parameters of the gap is used to generate constraints for the functional requirements that is local to the two mating features (section 5.4.1). 5.3.2 Shifting the Point of Interest The deviation parameters for a feature are conveniently defined at a suitable point for ease of interpretation and understanding. However, there could also arise needs to assess the possibility of any interference between the mating features at other different points. This checking is done by transforming the torsor from one point to another by applying the torsor transformation rules. This would require studying the torsor equations applied at those strategic points. These points could also be conveniently used for inspection of the features after manufacturing. The artifact class contains attributes for keeping track of these points so new points could be added as required for specific surfaces/features. For 67 example, in case of a rectangular feature, four furthest points (corner points) could be selected as the desired points and for circular features, eight points uniformly distributed on the circumference could be kept (figure 5.3.2). It may be mentioned that additional points as desired may be introduced at any stage to improve accuracy; however, the number of equations & complexity of the problem would increase with each additional point. Rectangular: 4 points @ 4 corners Circular: 8 points @ equal intervals Figure 5.3.2 Points of interest on features. After all the loops have been considered and corresponding equations have been formed, we get a system of equations that will define the possible geometric variations of the artifact configuration. Depending on the type of mating and functional requirements for each mating pairs of surfaces, these sets of equations may be under or over constrained. In other words, there may be too few equations connecting too many variables or viceversa. These will constitute the constraints of the optimization process for tolerance synthesis. 5.4 Generation of Constraints There are two different categories of constraints associated with the tolerance synthesis process: a) constraints for meeting the functional requirements of the artifact and b) 68 constraints to meet geometric mating compatibility (assemblability). Since both the constraints play crucial roles in the tolerance synthesis process, each process have been elaborated separately in the following sub-sections. 5.4.1 Constraints Related to Functional Requirements Functional requirements are design requirements specified explicitly as well as implicitly by the user and designer to meet certain desired performance from the artifact. In terms of tolerance and deviation parameters these functional requirements would translate into constraint i.e. functions establishing some mathematical relationship between the parameters. Functional requirement can be described: a) Either, as a goal satisfaction to minimize a penalty cost for deviating from the design specification In this case a functional requirement defined by some function fj(x) ≤ f0j, where x is the deviation parameter, could be added to the cost function as a penalty cost using Lagrange multipliers, for example, b) λj * abs(fj(x)-f0j) Or, as a set of constraints on the tolerance zone In this case the functional requirements fj(x) ≤ f0j would be used as non-linear constraints for the cost optimization. Since the functional requirements are developed to represent customer’s specification and designer’s technical requirements, it is desirable to satisfy these constraints as necessary 69 constraints rather than treating them as penalty costs. Thus, the functional requirements have been treated as constraints (functions of deviation parameters of the mating features of the components). The functional requirements generally translate into algebraic inequalities representing constraints of the form: G(x) ≤ 0, x ∈ Rn As mentioned earlier, functional requirements specified between two mating features could be conveniently represented by using the deviation parameters of the gap between the mating features. Although a generic transformation rule couldn’t be found because these requirements are domain dependent, constraints of the general form as given above could be treated as functions of the gap parameters only. For example, if a designer specifies that a minimum gap of 0.0025 must be maintained between a rotating shaft and the bearing to minimize friction, this requirement could be specified by using a constraint using the gap element between the two cylindrical features (shaft and hole) as: Gijx ≥ 0.0025, where Gijx is the local x-component of displacement (radial component) of the gap element between the two mating features i and j. More complex requirements could be represented with appropriate functions. 5.4.2 Constraints Related to Assemblability of Parts Parts are assembled in an artifact to facilitate transmission of energy / force / motion / fluent through the mating features. Sometimes parts are used to block some of the above entities as well. These requirements could be treated as kinematic constraints on the DOF between the mating features. These constraints represent geometric compatibility (assemblability) because pair of parts must mate as per specified to serve the desired function. 70 These assemblability constraints are established by considering sum of torsor components along each independent paths/loops that exist between datum features. The torsor summation is carried out using the torsor transformation rules by transferring the effect of a torsor from a local point to another point on the datum. In the small displacement assumption, the assemblability constraints become linear and can be put in the compact form: Kx = b, where K = [kij] is a m x n matrix, kij ∈ R, x ∈ Rn , b ∈ Rm (b is formed from known deviations of the features), and m is the number of constraints. In the derivation of the K matrix we assume without any loss of generality and without any ambiguity that each loop/path in the assembly graph could be enumerated as a linked list L defined by: L = {(p, f), g, [(f, p, f), g]…, (f, p)} … (5.4.2-1) where p denotes part, f denoted feature, g denotes gap between mating features and items shown within [ ]… could be repeated zero or more times as required to traverse a loop/path. (p, f) is the starting point (from_part, from_feature) (f, p) is the end point (to_feature, to_part) [(f, p, f), g] are intermediate connections (to_feature, part, from_feature), gap) along the path to the next part. This is elaborated in figure 5.4.2 71 Figure 5.4.2 Traversing Paths/Loops in an assembly graph. In case of a closed loop, the last part would be the same as the first part. Both the starting and the final parts for open loops should be terminals (datum). In case of closed loops, the summation of the torsors would be null (0), whereas for an open path, the summation would be equal to a torsor (possibly non-null) that has to be established from known functional specifications between the two terminal parts. This quantity is designated as b. T has been used to represent torsor with index p, f, g for parts, features and gaps respectively. Let Pj = Part number j, j =1 to n, n = number of parts in the loop Fk = Feature k of part Pj , k = 1 to m, m = number of features of part Pj Tp = 6-component displacement torsor of the part P, defined at a suitable point O inside the part in a local coordinate system. Tf = 6-component deviation torsor of the feature k, defined at a suitable point N on the feature in a local coordinate system with x-axis along the outward (away from the material) normal and y & z are the other two axes mutually perpendicular to the x-axis. Tg = 6-component gap torsor defined at a mating between two features of two parts. 72 With the above notation, we can write the desired equations for each loop, with implied local to global transformations applied to each torsor as viewed from any convenient point (typically, at the center of the first part where the loop begins), as: (Tp + Tf ) + Tg [-Tf -Tp + Tf + Tg )]… (- Tf - Tp ) = b … (5.4.2-2) where the plus (+) sign indicates going out from a feature/part and negative (-) sign indicates entering a feature/part. Summing over the entire loop, and using the torsor transformation rules (Appendix 5), the above equation could be converted to the following form: ∑K * (δ j + ∆x j × θ j ) = bδ … (5.4.2-3) ∑K *θ j = bθ … (5.4.2-4) j j ∈ EntireLoop and j j ∈ EntireLoop where, Kj is the local to global transformation matrix (Appendix 5, eqn.A5-3) for feature j δj = [δx δy δz]Tj and θ j = [θ z θ y θ z]Tj are the two vectors formed from the linear & rotational components respectively of the deviation torsor of the feature j. ∆xj =(∆x, ∆y, ∆z)T = (Xj-X0, Yj –Y0, Zj-Z0)T is the vector from the point j to the reference point. Equations 5.4.2-3 and 5.4.2-4 could be combined as a single matrix equation: KX=B, where X=[δ θ]T and B = [bδ bθ]T Derivation of the constraint equations has been elaborated with an example artifact in Appendix – 6. 73 5.5 Formulation of the Cost Function The two sets of constraints defined in the previous sections for representing functional requirements and assemblability of parts, form the constraints of the optimization formulation. The cost function to be minimized subject to these constraints is needed to define the optimization problem completely. In this section, formulation of cost functions associated with products/artifacts is discussed. The cost function to be minimized could be any function that contributes some cost in the entire life cycle of the artifact. However, in this thesis, only the Cost of Manufacturing has been considered and a new deviation-based cost of manufacturing model has been introduced. Many researchers have introduced models for representing cost of manufacturing in different processdependent manufacturing contexts, some have taken process capabilities into consideration while others have generated cost models using process sequences. Some authors have done context specific work on the costs other than cost of manufacturing; for example, Dong (1997) has considered the effect of tolerance on cost related to product lifespan by constructing a functional performance index generated from the effect of tolerance. However, the work is applicable to a very specific domain and cannot be used universally. The cost model in this thesis has been defined in a generic manner so that the designer could introduce any suitable cost functions associated with each part in the artifact. 5.5.1 Cost of Manufacturing The cost associated with manufacturing a part for a specified material, dimensions and geometric shape, depends on the sequence of manufacturing operations and the process 74 capabilities. In general, cost of manufacturing is a function of all the above entities. Many researchers have analyzed various issues associated with the cost of manufacturing in relation to tolerances and the cost of manufacturing has been formulated as a decreasing function of a single tolerance parameter. Various functional forms (like inverse power law, exponential decay, etc.) have been used as cost models that are generally monotonically decreasing functions of a single size tolerance. Effect of process capabilities on cost of manufacturing has also been well studied by many researchers. (Dong (1997). Since, in general, more than one operation is required to transform the raw blank into the final finished part, the cost of manufacturing is a function of the process sequence. The cost is also affected by the setup error in each machining process. The total cost of production thus becomes a sum of the costs associated with each process [Roy (1997)]. While none of these methods mentioned above could claim to be genric, there are several limitations with the one-parameter (single tolerance) cost of manufacturing formulation. In reality, a manufactured surface would rarely have a single tolerance value. Apart from a (plus-minus) size tolerance, there would in general be geometric tolerances (form tolerance, orientation tolerance, location tolerance, etc.) and it would be difficult to formulate a single parameter representing all these tolerances, which could effectively be used for representing the cost of manufacturing. In order to circumvent the above problem, a new formulation for cost of manufacturing is proposed which could be called deviation-based cost of manufacturing model. 75 5.5.2 Deviation-based Model for Cost of Manufacturing In general, a part will have more than one feature, connecting to other features of other parts and since each feature could possibly have up to six degrees of freedom, this cost formulation uses six deviation parameters to represent the variations associated with each feature. Since these deviation parameters could be mapped into a tolerance zone (see section 5.7), the cost formulations could be mapped from the tolerance domain to the deviation space. Thus, for example, the cost function g(δ) defined as a function of some tolerance value δ, would become a function of the six parameters g(δ) = g( δ(θx θy θz δx δy δz)) and then the cost functions could be treated as functions of the small deviation parameters associated with the feature/part. The cost of manufacturing a part is proposed as an explicit product of six positive functions of the six deviation parameters in the form: DCOM(d) = C1(d1)*C2(d2)*….C6(d6) …. (5.5.2-1) where d = (d1, d2, d3, d4, d5, d6) = (θx , θy , θz , δx , δy , δz) is a 6-componenet torsor representing the six deviation parameters characteristic of the feature. The form of the individual functions could be varying depending on specific surfaces and manufacturing process. Sometimes, some of the functions could be of similar form. It is to be mentioned here that, depending on the nature/type of the feature, some of the functions will be constants and could be eliminated (i.e. for ∀x, f(x) ≡ 1). This will correspond to the deviation parameters that are invariants of the surface. As for an example, for a planar surface there are only three independent parameters given by: d = (dx, 0, 0, 0, θy , θz ) that could affect the deviation of the surface from it’s nominal 76 shape and any change in the remaining three parameters keep the surface invariant. The cost function can then be represented as: DCOM(d) = Cx(dx)*Cθ(θy)*Cθ(θz) …. (5.5.2-2) Also, in this case, since the surface is symmetric about the y & z axes, the form the two functions for rotational components of the deviation along these two directions are also same, namely Cθ. Since the tolerance specification as per standard codes of practice maps to a zone in the deviation space the deviation parameters are restricted by the tolerance specification. In other words, all the parameters in the cost formulation are not necessarily independent. For example, for the planar feature this mapping forms a convex hull in the form of a diamond in the 3-d space. For a rectangular planar section with cross-section (‘a’ x ‘b’), (vide section 5.7), following are the restrictions: TSL ≤ min(dX + a*θy + b* θz , dX + a*θy - b* θz , dX - a*θy + b* θz , dX - a*θy - b* θz ) TSU ≥ max(dX + a*θy + b* θz , dX + a*θy - b* θz , dX - a*θy + b* θz , dX - a*θy - b* θz ) where (TSL, TSU) are the lower & upper values of the tolerance parameter for the planar surface. Thus the parameters dx θy θz are restricted. The above two would impose restrictions on the cost function. To illustrate the cost function, a generic function of the form: C(x) = a +b/|x| is assumed, where x is the deviation parameter and a & b are constants. The basis for this type of cost functions is that the cost of machining (apart from dependency on the machining process itself), is assumed to be directly proportional to the area of the surface to be 77 machined and inversely proportional to the net amount of deviation of the feature from its nominal shape and a constant deviation-independent cost (setup cost, etc.). Thus, the cost function is assumed to be of the form C(x)=Kp*Area/Deviation, where Kp is some constant. For the planar case, the cost function becomes, DCOM(d) = Cx(dx)*Cθ(θy)*Cθ(θz)=(a1+b1/|dx|) * (a2+b2/|θy|) * (a3+b3/|θz|) Further simplification carried out (for illustrative purposed only) by assuming, a=b=1 and a2 = a3, b2 = b3 then leads to following: DCOM(d) = (a1+b1/|dx|) * (a+b/|θy|) * (a+b/|θz|) - TSL ≤ (dX + θy + θz ) ≤ TSU - TSL ≤ (dX + θy - θz) ≤ TSU - TSL ≤ (dX - θy + θz ) ≤ TSU - TSL ≤ (dX - θy - θz ) ≤ TSU Removing the z-parameter θz so that a visual representation of the cost function could be given, we have: DCOM(d) = (a1+b1/|d|) * (a+b/|θ|) - TSL ≤ (d + θ ) ≤ TSU and - TSL ≤ (d - θ ) ≤ TSU In the d-θ plane, this would look like a tent bounded by four vertical planes (by the tolerance specification) approaching infinity along the two axes (figures 5.5.2-1, 2). 78 Cost d θ Figure 5.5.2-1 Cost as function of deviation parameters Cost contours, increasing towards the axes d - TSL ≤ (d - θ ) ≤ TSU - TSL ≤ (d + θ ) ≤ TSU θ Figure 5.5.2-2 Cost contour lines and the bounds 79 It is to be noted that the actual form of the individual cost functions are yet to be determined. Also, it is evident that since the deviation parameters limit the tolerance values in some way or other, the cost functions of these deviation parameters should also be monotone non-increasing in nature. For practical application of the above cost of manufacturing formulation, extensive experimental data would be required to establish the constants for different machining processes. 5.6 Optimization Process Based on the cost and constraint models described above, the optimization process could be summarized as below: Minimize: Cost of production: C(x) = Σ(i ∈ all_parts)Σ(j∈ all_mating_features) C(xij) Subject to: Constraints for functional requirements: G(x) ≤ 0, x ∈ Rn Assemblability Constraints: KX = B where K = [kij] is a m x n matrix, kij∈ R, X ∈ Rn, b ∈ Rm , m is the number of constraints. In the above formulation the cost function and the constraints for functional requirements are in general non-linear and the assemblability constraints are linear, which puts the optimization in a non-linear programming (NLP) category. Implementation of the above 80 optimization problem and example of using the tolerance synthesis model has been detailed in chapter six. In the remaining section of this chapter a very important issue related to tolerance synthesis is discussed. The deviation-based tolerance synthesis method generates a set of optimal deviation parameters. However, these parameters cannot be directly used as tolerance specification for the industry. The standard practice is to use tolerancing schemes as defined in national and/or international standards. The optimal deviation parameters need to be transformed into an equivalent set of specifications as per these standards. In this thesis, tolerance specification as per ASME Y14.5M, 1994 standard has been used. The mapping between the deviation parameters and the set of corresponding ASME specifications are not one-to-one as the mapping of these parameters in most cases generate tolerance zones. After the tolerance zones are identified for each feature, the designer could then select suitable tolerance values from within that zone based on different design criteria. In case of size tolerance, the mapping may generate unique tolerance values. However, for positional and orientation tolerances, no such unique value could be established by the mapping. The following section elaborates the mapping procedure with two examples. 5.7 Mapping Deviation Parameters to Tolerance Specification The relations arising from the mapping of the deviation parameters to the corresponding tolerance values are generic non-linear inequalities and take the form: FDPk (x) ≤ FTolk (t), where FDP is some function of the deviation parameters, x∈Rn, FTol is some function of the tolerance parameters t, and k∈ N+ is an index. Exact forms of FDPk(x) and FTolk(t) 81 depend on the nature of the feature/surface and tolerance specifications. For a planar surface the above relationship becomes a set of linear constraints. The interesting feature in the above relationship is the separable nature of the equation in terms of the variables t and x. The linear nature of the equations, however, vanishes for non-planar features. In order to give a meaningful interpretation to the assemblability of an artifact in terms of tolerance specifications as per standard codes and industrial practices (ASME Y14.5.1M1994), the relationship between the tolerance zones (or virtual condition boundaries) and the deviation parameters of a feature need to be investigated. The relation between the deviation parameters and the tolerance parameters are not one-to-one and can only be represented as inequalities involving functions of the tolerance parameters and the deviation parameters. For specific features, like the planar surface, the inequalities are linear, and the inequalities represent a diamond shaped zone in the D x T (D: Deviation, T: Tolerance) space. There are four types of tolerances used in the industry: size tolerance, form tolerance, orientation tolerance and location/position tolerance. There is also a run-out tolerance. These tolerances are sometimes specified with material conditions as modifiers. There are three such material conditions: MMC (Maximum Material Condition), LMC (Least Material Condition) and RFS (Regardless of Feature’s Size). It is assumed that for small deviations the shape of a toleranced feature remains similar to the nominal feature (for example, a plane remains a plane, a cylinder remains a cylinder, etc.), and consequently the variation of position and orientation due to form tolerance is very small [Gilbert 82 (1992)]. With this assumption, the mapping relations are generated for size tolerance, orientation tolerance and positional tolerance. 5.7.1 Deviation-to-Tolerance Mapping Criteria A geometric tolerance applied to a feature of size and modified to MMC will establish a virtual condition boundary (VCB) † outside of the material space adjacent to the feature. The feature may not cross this VCB. Likewise, a geometric tolerance applied to a feature of size and modified to LMC establishes a VCB inside the material and the feature shall not cross the VCB. These criteria could be written as following relationships [Drake (1999)]: Modified to MMC: For an internal feature of size: MMC virtual condition = MMC size limit – geometric tolerance For an external feature of size: MMC virtual condition = MMC size limit + geometric tolerance Modified to LMC: For an internal feature of size: LMC virtual condition = LMC size limit + geometric tolerance For an external feature of size: LMC virtual condition = LMC size limit – geometric tolerance If a geometric tolerance applied to a feature of size is neither modified to MMC nor LMC, by definition (ASME Y14.5), it is modified to RFS. In this case, instead of VCB, † Virtual condition boundary: A constant boundary generated by the collective effects of a size feature’s specified MMC or LMC material condition and the geometric tolerance for that material condition. 83 the tolerance specification generates a tolerance zone into which the derived element will not interfere. Since the deviation parameters of a feature could be used to define the deviation of all points on the feature by using additional independent parameters (for example, all points on a circular boundary could be traversed by x(θ) = r*cosθ, y = r*sinθ, θ ∈ [0, 2π)), the tolerance specifications could be thought of as limits for the deviation parameters and vice-versa. These deviation-to-tolerance relations could be used for tolerance synthesis as well as for tolerance analysis including checking the assemblability in worst-case scenario. In the following sections the mapping for size tolerance of planar features are shown. For the planar case, there is no material condition as it is a non-size feature. For the cylindrical feature we have two cases: MMC and RFS and for the spherical feature we have MMC and for conical feature we have size tolerance only. Following are the basic steps to convert a tolerance specification into a set of inequalities [Wang (2003)] in the deviation parameters: 1. Generate deviation torsor parameters for the feature by eliminating the deviation parameters that are invariant for the feature to reduce the degrees of freedom. 2. Generate a VCB (or a tolerance zone) based on the tolerance specification. Compute the size of the VCB or the tolerance zone for restricting the variation of the feature or derived element respectively. 3. In case of VCB, take an arbitrary point on its nominal surface of the feature in a parametric form and transform it to a new position by applying the effect of the deviation torsors. For example, for a cylindrical feature a point P on its nominal 84 surface is represented by two parameters (θ, z); P = (rcosθ , rsinθ, z), where θ∈[0, 2π) and z ∈ (0, L), L=Length of the cylinder. In case of tolerance zones, transform the whole derived element, such as center plane, center axis etc., to a new position by applying the effect of the deviation torsor. 4. Eliminate the free parameters, (such as the (θ, z) mentioned in step 3 above) by applying the condition that the extreme points of the transformed position should remain within the VCB or the derived element should remain within the tolerance zone. This step generates a set of inequalities connecting the deviation parameters with the tolerance specification. Above four steps have been used to generate the mapping relations for planar features. The symbols used in the following sections, unless otherwise specified, are defined as: TU = Upper limit, size tolerance TL = Lower limit, size tolerance TP = Positional tolerance TV = Perpendicularity tolerance (∆θx, ∆θy, ∆θz, ∆x, ∆y, ∆z) = six components of the deviation torsor 5.7.2 Mapping Relations for a Planar Feature For each surface/feature, a local coordinate system (LCS) is defined and the deviation parameters are defined in that LCS. For a planar surface, the LCS is: z-axis outward normal (emanating from the material side of the feature) and (x, y) are local orthogonal coordinates on the plane, so that the equation for the nominal surface (plane) is given by z 85 = 0. For this plane the deviation parameters of the small deviation torsor (SDT) are: (∆θx, ∆θy, 0, 0, 0, ∆z)T. 5.7.2.1 Rectangular Planar Feature Rectangular (2a x 2b) planar surface. (Figure 5.7.2.1) X D Datum X Z Y D - TL 2a 2b D + TU Figure 5.7.2.1 Rectangular planar feature For the above feature, deviation parameters are (∆θx, ∆θy, 0, 0, 0, ∆z), and the tolerance parameters are (TU, TL) and the SDT is Dd = {∆θ ∆d}T = {∆θx ∆θy 0 0 0 ∆z}T Since this is a rectangular planar feature, the four corners with nominal coordinates (±a, ±b, 0) will have the maximum deviation due to the effect if Dd. Transforming Dd on to these four points we get, D’ = Dd + ((±a, ±b, 0) × (∆θx ∆θy 0)T which gives deviations for the four points as: D1 D2 D3 D4 = {∆θx = {∆θx = {∆θx = {∆θx ∆θy ∆θy ∆θy ∆θy 0 0 0 0 0 0 0 0 0 0 0 0 ∆z + a*∆θy - b*∆θx }T ∆z + a*∆θy + b*∆θx }T ∆z - a*∆θy + b*∆θx }T ∆z - a*∆θy - b*∆θx }T Comparing the z-component with the specified tolerance value (TU, TU), we get following four inequalities for the desired mapping: 86 -TL ≤ ∆z + a*∆θy - b*∆θx ≤ TU and -TL ≤ ∆z + a*∆θy + b*∆θx ≤ TU -TL ≤ ∆z - a*∆θy + b*∆θx ≤ TU and -TL ≤ ∆z - a*∆θy - b*∆θx ≤ TU 5.7.2.2 Circular Planar Feature Circular planar feature. (Figure 5.7.2.2) X X P Y β Datum Z D - TL D + TU Figure 5.7.2.2 Circular planar feature with size tolerance For this case, the deviation parameters are (0, 0, ∆z, ∆θx, ∆θy, 0) and tolerance parameters are (TU, TL). For an arbitrary point P on the circumference, at an angle β with the y-axis, we have, δz = ∆z -R∆θySin(β)+R∆θxCos(β) Where δz is the pure position variation of a point in Z direction where size tolerance control. The tolerance zone in this case is made up of two planes, z = +TU and z = -TL. To ensure that δz remains within the above boundary for ∀β ∈ (0, 2π), δz could be treated as a function of β and the maximum value of δz could be computed by putting ∂(δz)/ ∂β = 0, which gives, δz max/min = ∆z ± R√( ∆θx2 +∆θy2) 87 This leads to the following mapping relations: (∆θx2 + ∆θy2) ≤ (TU + TL)2/(4R2) In parametric form this could be written as: TL ≤ ∆z + R∆θxSin(β) + R∆θyCos(β) ≤ TU , ∀β ∈ (0, 2π) This inequality, using the value of δz max/min could be written, independent of β, as: TL ≤ (∆z - R√( ∆θx2 +∆θy2) ) and (∆z + R√( ∆θx2 +∆θy2) ) ≤ TU, which are the two mapping relations for the circular planar feature. Similar relations for other features (like cylindrical, spherical, conical, etc.) are required for complete mapping of deviation parameters to tolerance zones. For completeness, mapping details for cylindrical and spherical features are given in Appendix – 7. 88 If you have built castles in the air, your work need not be lost. That is where they should be. Now put the foundation under them. --Henry David Thoreau Chapter 6 Implementation and Case Studies 6.1 Details of the Implementation The object-oriented representation of various entities as described in chapter three are used to create the class diagrams using UML (argoUML) and the class definitions are used to develop and implement the module in MS Visual Basic. The VB module is the main user interface for defining the artifact for carrying out the tolerance synthesis work and this implementation carries out the following tasks: a) Artifact is defined based on user-specified information about the parts, features, geometric configurations and mating criteria. Typical input data types have been shown in the two examples given later in this chapter. b) Based on these inputs, the program generates the artifact tree and all paths and loops are generated using an exhaustive search. Visual display of the assembly graph is provided for validating the configuration. The search procedure is enhanced with logic to detect inner loops and to eliminate duplicate paths and identical reverse paths. A pseudo code for this operation is given below: 89 For all parts do If this Parts is a terminal then start from this part For all features of this part do Search the links to locate a connection to next part If a valid connection found then Keep track of the starting part number GetLoops() ‘Generate all loops/paths from this feature End If Next feature Next feature End If Next part Sub getLoops generates the loops & paths in a recursively. If this is not the first entry - check for termination of this branch If we are back to the root. this loop is finished! saveLoop ' & return ElseIf this part isTerminal Then ' this part is a terminal; saveLoop ' this path is done ElseIf innerLoop() Then 'this part is already in pathNow saveLoop 'an inner loop has been detected, save loop, go back End If End If If Not savedHere Then ' go to the next part/level For all features of this part do locate links to other parts and generate all loops/paths from this feature call self with new starting point Next feature End If Major program modules have been listed in Appendix 8 c) The user interface gives visual display of the artifact assembly including elementary graphics manipulation facilities for viewing the artifact by 3-D rotation. This is for a visual inspection of correctness of the model. More sophisticated tools like elimination of hidden lines, 3-D rendering are not implemented. This implementation has facilities to take input for the displaced position (deviations) for imposing on the nominal shape. This gives a visual representation of the distorted shape for the artifact at different configurations. d) Based on the model configuration, the assemblability constraints (K matrix) are generated using a K-matrix tree structured list so that only the non-zero elements 90 of the K-matrix is stored. This greatly reduces the memory requirement and also it helps generating the K-matrix in sparse matrix notation for subsequent use in the optimization. e) In this implementation, the optimization problem has been solved using the optimization package fmincon of Matlab. f) The VB implementation generates following Matlab files for the optimization run. 1. K-matrix coefficients as data file in sparse matrix format (kMatrix.dat) 2. B-vector as data file for the right hand side of the assemblability constraint (bVector.dat) 3. The cost of manufacturing formulation is converted to a Matlab program file (costFun.m) 4. Initial values of known/ specified deviations as data file the deviation parameters (xZero.dat) g) Based on the data and program files generated in step f) above, the optimization is carried out by running the Matlab macro file runOpt.m which has been programmed to declare the global variables, initialize the optimization run control parameters (optimset), read the data files into memory variables and trigger the execution of fmincon. The progress of execution is monitored by using intermediate printouts and after convergence is reached (a set of optimum values has been found that satisfies the constraints), the solution is saved in a text file (nodal_Disp.txt). Following is a listing of the runOpt file for the gearbox example shown later in this chapter. 91 % script file global KMatrix; global CC; global Cd; global bVector; global xZero; global nodes; CC=0; Cd=0; myOptions = optimset('fmincon') myOptions=optimset(myOptions,'Diagnostics','on','Display','iter','TolCon',1.0000e-3, 'TolFun', 1.0000e-1, 'TolPCG', 0.01000,'TolX', 1.0000e-4, 'LevenbergMarquardt', 'on', 'LineSearchType', 'cubicpoly', 'MaxIter', 5000, 'MaxPCGIter', 40) nodes=51; load kMatrixNov26.dat; load bVectorNov26.dat; load xZeroNov26.dat; xZero=xZeroNov26; xZero(nodes*6+1)=1; bVector=bVectorNov26; ep=0.1; ep100=ep/1.0; x=zeros(nodes*6+1,1); % trying to use different ranges for angles and linear displacments for i = 1:nodes for j = 1:3 ub((i-1)*6+j)=ep100; end for j = 4:6, ub((i-1)*6+j)=ep; end end ub=0.1*ones(nodes*6+1,1); lb=-1.0*ub; % following two are for the Lagrange multipliers.... ub(nodes*6+1,1)=1000.0; lb(nodes*6+1,1)=1.0; KMatrix=spconvert(kMatrixNov26); % extend KMatrix to include the lagrange multiplier KMatrix(:,nodes*6+1)=0; options = optimset('MaxFunEval',40000); [x, fval, exitflag, output] = fmincon('costfunGearBox', xZero, [], [], [], [], lb, ub, [], myOptions) % was [x, fval, exitflag, output] = fmincon('costfunGearBox', xZero, [], [], KMatrix, bVector, lb, ub,... if exitflag >= 0 % solution converged - save the results np/ fid = fopen('g:\program\tnp\matlab\nodal_dispGearBox.txt','W') fprintf(fid,'run date:',date) fprintf(fid,'eps:',ep,' ep100:',ep100) fprintf(fid,'Cost function f(x) = %15.3f',costfunNov26(x)) fprintf(fid,'\nX-values by node are: (rx,ry,..dy,dz):\n') for k=1:nodes fprintf(fid, '%3d',k) for j=1:6 fprintf(fid, ', %10.4f',x((k-1)*6+j)) 92 end fprintf(fid, '\n') end fprintf(fid,'\nX-values are:\n'); for k=1:6*nodes fprintf(fid, '%3d, %15.9f \n',k,x(k)); end fclose(fid) end h) The solution from the Matlab is used for displaying the distorted shape of the artifact due to the deviations and these deviation parameters are then used to map them into corresponding tolerance zones for each feature. Actual mapping operation is quite complex, as it requires the tolerance types for the features and combination of effects of the datum features. This part of the computations is carried out partly in the VB implementation and partly in Excel worksheets. A partial listing of major program modules from the implementation is given in Appendix 8. In the following sections, details of two examples including part/feature details, input data listings, generated data (partial list), generated MatLab input files, and output results are given for ready reference. 6.2 Example Tolerance Synthesis of a Three-block Artifact In this section an example artifact with three blocks (consisting of parts 1, 2, 3) as shown in figure 6.2-1, is used and the tolerance synthesis process is elaborated. Input data and the generated cost functions, and assemblability equation are shown in Appendix 9. Input data for each assembly consists of an artifact tree definition, part definition, feature and nodal dada and specification of known displacements and datum reference frames. In order to enter this assembly in the software module, we use nodes 1 to N to number all corners, and strategic locations on each surface/feature/face of each part. The nodal 93 coordinates are given in a global coordinate system. Each part is given a serial. We also need to specify all mating features and connectivity data. Based on the input data the system generates all local coordinate systems (LCS) at the center of each feature with outward normal to the surface as local x-axis. Local y and zaxes are then generated as two mutually perpendicular lines on the tangent plane at the center of the feature. This artifact as is represented in the program is shown along with local coordinate systems for each feature in figure 6.2-2. Figure 6.2–1. A 3-Block Artifact 94 Figure 6.2-2 3-Block Artifact - Part #1- Nominal shape with LCS The program first generates the artifact tree from the input configuration (figure 6.2-3) and then the feature-to-feature connectivity diagram is drawn (figure 6.2-4). The assembly graph is then generated (figure 6.2-5) and all independent loops (paths) are then generated using an exhaustive search. For this example there are six (6) independent loops as listed below: Path-001:(1,1,2,9)(2,10,1,2) Path-002:(1,1,2,9)(2,11,3,13)(3,14,1,2) Path-003:(1,1,2,9)(2,11,3,13)(3,15,1,3) Path-004:(1,2,2,10)(2,11,3,13)(3,14,1,2) Path-005:(1,2,2,10)(2,11,3,13)(3,15,1,3) Path-006:(1,2,3,14)(3,15,1,3) Each path consists of sequence of four numbers in parenthesis and they denote <fromPart, fromFeature, toPart, toFeature> respectively. A typical link (corresponding to path-002) is shown in figure 6.2-5 using dotted arrows. 95 The program first generates the artifact treeArtifact from the input configuration (figure –$4.1 Figure 6.2-3 3-Block – Artifact tree Each path/loop is used to generate assemblability constraints. These assemblability constraints are in the form KX = B and the K-matrix has been represented using a sparse matrix representation in Matlab. This implementation has a built-in procedure to generate cost functions based on deviation parameters. Cost functions generated for this example is shown in figure 6.2-6. 96 Figure 6.2-4 3-Block Artifact - Feature to feature connectivity For solving the optimization (minimization) problem as formulated in this program, the “fmincon” nonlinear constrained optimization solver in Matlab has been used. The Matlab macro file for running this example is similar to the one shown in sub-section g) of 6.1. Optimal deviation values from the optimization run are shown in Table 6.2-1 and corresponding deformed shape of the blocks are shown in figure 6.2-7. The optimal deviation parameters are used for computing the tolerance values/ranges using the mapping relations as shown in chapter five. Results of the computation is shown in Table 6.2-2 and corresponding tolerance values for part #1 are shown in figure 6.2-8 97 Figure 6.2-5 3-Block Artifact – Assembly graph Figure 6.2-6 Sample cost of Manufacturing Function 98 Figure 6.2-7 Deviation imposed on nominal shape Table 6.2-1 Optimal deviation parameters 99 Table 6.2-2 Tolerance values mapped from optimal deviation parameters Figure 6.2-8 Computed tolerance parameters for Part #1 100 6.3 Example Tolerance Synthesis of a Planetary Gearbox In this example, a typical planetary gearbox (figure 6.3-1) has been used to carry out the tolerance synthesis operation. Although operations of the tolerance synthesis module for both the examples are similar, this model has following additional features: a) This model is more complex with planar and cylindrical features b) It has more elements and complex connectivity c) It corresponds to a real-world gearbox Figure 6.3-1 A Planetary Gearbox An exploded view of the gearbox is shown in figure 6.3-2. The gearbox has been modeled as a 5-part system (figure 6.3-3). In order to carry out the tolerance synthesis work, a detailed model suitable for input to the tolerance synthesis software is first developed. In this case, the gearbox has been modeled using two feature elements: cylindrical feature and circular planar features. The model presented here is a simplified one (the bearings have been eliminated and mating between gear teeth is represented as a line contact between two cylindrical features at the pitch circle). The gearbox has been 101 represented using five distinct parts. Numbered nodes are used to identify points on the features where suitable deviation parameters are defined to represent the variation of the feature. The nominal dimensions of the gearbox parts have been taken from a real model. However, the synthesis method and applicability is not dependent on specific dimensions. Figure 6.3-2 Exploded view of the gearbox Output Housing Input Shaft with Sun Gear Ring Gear Output shaft with Planetary Gears Figure 6.3-3 Gearbox modeled as a 5-part system Output Housing 102 A typical mating between two parts have been shown in figure 6.3-4 and the assembly graph is shown in figure 6.3-5 Figure 6.3-4. Mating of output housing with output shaft and ring gear Figure 6.3-5 Assembly graph (connectivity diagram) of the gearbox 103 The assemblability constraints have been generated using the standard procedure elaborated earlier. The cost of manufacturing formulation is detailed below for the specific features. The cost of manufacturing is computed as a function of the deviation parameters. Deviation parameters are used to compute a maximum deviation from the nominal position by taking the extreme points of a virtual condition boundary (VCB). The VCB is constructed taking into account the datum reference frames and the material condition modifiers (MMC/LMC/RFC). For the circular planar features used in this example (figure-6.3-3, nodes: 3, 5, 8, 14, 16, 20, 23 and 25), net deviation of the displaced plane from the nominal position (figure6.3-6, node 5) is computed using the results of section 5.7.2.2: δ = δ x + R (θ y2 + θ z2 ) where R is the outer radius of the circular planar disc. This δ is used to compute the cost of manufacturing using the procedure detailed in 5.3.2 as: C Planar = K Pπ ( R 2 − r 2 ) (ε 0 + δ x + R (θ y2 + θ z2 ) ) where, KP is a process-dependent proportionality constant, the absolute value of which can be established by fitting experimental data. For our purpose of using in this example KP=1 has been assumed. ε0 is an arbitrary small parameter that has been used to eliminate singularity at zero deviation. 104 For cylindrical features, using the expression for deviation of an arbitrary point on the surface of the feature (Appendix 7), we can arrive at the maximum deviation for the cylindrical feature as, δ max = δ r + max⎛⎜ δ x 2 + δ y 2 , ( Lθ y + δ x ) 2 + (− Lθ x + δ y ) 2 ⎞⎟ ⎝ ⎠ where L is the length of the cylinder. Using above δmax, the cost function is computed as: CCylindrical = ε0 +δr + max (δ 2 x 2π KPrL +δy2 , (Lθy +δx )2 +(−Lθx +δy )2 ) where, KP is the proportionality constant as described for the planar case. For this example, KP = 1 has been assumed. ε0 is a small parameter used to eliminate singularity at zero deviation/tolerance and δr is the independent radial deviation of the cylindrical element. Based on the above cost functions, the total cost for the entire product is computed as sum of these cost functions for all the features. The generated cost function as Matlab file is listed below: function yy = costfun (x) % deviation dependent cost of manufacturing formulation % generated from tnp3. Nilmani Pramanik / Nov 26, 2002 14:43:50 global CC; yy = 0; yy = yy + 1600.90 /( .001 + max((x(10)^2 + x(11)^2)^0.5,(( x(10) +17.83 * x(8) )^2 + ( x(11) + 17.83 * x(7) )^2)^0.5 )); yy = yy + 823.32 /( .001 + abs(x(16)+(x(14)^2 + 21.60 * x(15)^2 )^0.5 )); yy = yy + 1423.01 /( .001 + max((x(22)^2 + x(23)^2)^0.5,(( x(22) +10.49 * x(20) )^2 + ( x(23) + 10.49 * x(19) )^2)^0.5 )); yy = yy + 1103.96 /( .001 + abs(x(28)+(x(26)^2 + 28.60 * x(27)^2 )^0.5 )); yy = yy + 1600.90 /( .001 + max((x(40)^2 + x(41)^2)^0.5,(( x(40) +17.83 * x(38) )^2 + ( x(41) + 17.83 * x(37) )^2)^0.5 )); yy = yy + 823.32 /( .001 + abs(x(46)+(x(44)^2 + 21.60 * x(45)^2 )^0.5 )); yy = yy + 1423.01 /( .001 + max((x(52)^2 + x(53)^2)^0.5,(( x(52) +10.49 * x(50) )^2 + ( x(53) + 10.49 * x(49) )^2)^0.5 )); yy = yy + 405.37 /( .001 + max((x(58)^2 + x(59)^2)^0.5,(( x(58) +12.70 * x(56) )^2 + ( x(59) + 12.70 * x(55) )^2)^0.5 )); 105 yy = yy + 938.71 /( .001 + max((x(64)^2 + x(65)^2)^0.5,(( x(64) +12.70 * x(62) )^2 + ( x(65) + 12.70 * x(61) )^2)^0.5 )); yy = yy + 3623.63 /( .001 + max((x(70)^2 + x(71)^2)^0.5,(( x(70) +12.70 * x(68) )^2 + ( x(71) + 12.70 * x(67) )^2)^0.5) ); yy = yy + 1103.96 /( .001 + abs(x(82)+(x(80)^2 + 28.60 * x(81)^2 )^0.5 )); yy = yy + 2067.37 /( .001 + max((x(88)^2 + x(89)^2)^0.5,(( x(88) +15.24 * x(86) )^2 + ( x(89) + 15.24 * x(85) )^2)^0.5 )); yy = yy + 1103.96 /( .001 + abs(x(94)+(x(92)^2 + 28.60 * x(93)^2 )^0.5 )); yy = yy + 1216.10 /( .001 + max((x(106)^2 + x(107)^2)^0.5,(( x(106) +15.24 * x(104) )^2 + ( x(107) + 15.24 * x(103) )^2)^0.5 )); yy = yy + 1853.20 /( .001 + max((x(112)^2 + x(113)^2)^0.5,(( x(112) +28.58 * x(110) )^2 + ( x(113) + 28.58 * x(109) )^2)^0.5 )); yy = yy + 137.22 /( .001 + abs(x(118)+(x(116)^2 + 10.30 * x(117)^2 )^0.5 )); yy = yy + 277.38 /( .001 + max((x(124)^2 + x(125)^2)^0.5,(( x(124) +5.56 * x(122) )^2 + ( x(125) + 5.56 * x(121) )^2)^0.5 )); yy = yy + 2236.41 /( .001 + abs(x(136)+(x(134)^2 + 28.60 * x(135)^2 )^0.5 )); yy = yy + 1853.20 /( .001 + max((x(142)^2 + x(143)^2)^0.5,(( x(142) +28.58 * x(140) )^2 + ( x(143) + 28.58 * x(139) )^2)^0.5 )); yy = yy + 137.22 /( .001 + abs(0+(x(146)^2 + 10.30 * x(147)^2 )^0.5 )); yy = yy + 277.38 /( .001 + max((x(154)^2 + x(155)^2)^0.5,(( x(154) +5.56 * x(152) )^2 + ( x(155) + 5.56 * x(151) )^2)^0.5 )); CC=CC+1; if mod(CC,100) == 0 CC yy end This gearbox optimization problem (with the 5-part configuration) has 306 deviation parameters (variables), 672 linear equality constraints and an 18-component non-linear cost function. A typical Matlab execution (minimization run) for this example on a 1GHz Dell OptiPlex GX110 system with 256MB RAM takes about 25 minutes. The optimization run as described above produces a set of optimal deviation parameters. These parameters, however, do not have any one-to-one equivalence with standard tolerance specification as per ANSI Y14.5 and hence these deviation parameters could not be used directly for arriving at tolerance values. However, it has been shown [Wang (2003)] that these deviation parameters could be mapped to traditional tolerance parameters as per ANSI Y14.5. Thus we need to transform the optimal deviation values to suitable tolerance values or tolerance zones in terms of the traditional tolerance specifications. In order to do this we need two steps: 106 a) Decide tolerance types that could be assigned/prescribed for individual features, and b) Use the deviation-to-tolerance mapping relations to generate a series of inequalities connecting the tolerance parameters. The last step b) generates the tolerance zones for each feature. In our example we have two different types of features: circular planar feature and cylindrical feature and the deviation to tolerance mapping relations for these two cases are given here from [Wang (2003)]. For example, for circular planar feature of the output housing (figure 6.3-6, node 5), the mapping relations are: TL ≤ (∆z - R√( ∆θx2 +∆θy2) ) and (∆z + R√( ∆θx2 +∆θy2) ) ≤ TU , where (0, 0, ∆z, ∆θx, ∆θy, 0) are deviation parameters and (TU, TL) are the tolerance parameters. Figure 6.3-6 Circular planar feature with tolerance parameters TU and TL. Similarly for the inner cylindrical feature (figure 6.3-3, node 4) of the outer housing, we can derive following relationships: 107 dr ± (∆θ y ∆y − ∆x∆θ x ) ∆θ 2 x + ∆θ 2 y ≥( TU − Tp ) 2 − TL ≤ dr ≤ TU When the solved optimal deviation parameters are put in these inequalities, they generate a set of linear inequalities. These inequalities define a tolerance zone for that feature in the (TU TL Tp) space. In this example, tolerance zones for each feature are computed (tables 6.3-1 and 6.3-2) by taking tolerance types from the possible tolerances that could be prescribed for these features. Since the deviation to tolerance mapping is one-to-many, we have to select one possible (suitable) tolerance type Table 6.3-1 Tolerance zones/values for cylindrical features Part Feature Outer Cylinder fMin 1 Output Housing Radius Length Feature node 2 14.29 17.83 -0.10 Feature node 3 21.59 10.49 -0.14 2 Output Shaft Feature node 5 14.29 17.83 -0.02 Feature node 7 21.59 10.49 -0.14 3 Ring Gear Feature node 15 21.59 15.24 -0.13 4 Input Shaft and Sun Gear Feature node 18 12.70 15.24 -0.14 Feature node 19 10.32 28.58 -0.14 Feature node 21 7.94 6.35 -0.14 5 Input Housing Feature node 24 10.32 28.58 -0.14 Feature node 26 7.94 6.35 -0.14 fMax 0.10 0.14 0.02 0.14 0.13 0.14 0.14 0.14 0.14 0.14 The last two columns of Table 6.3-1 shows the computed values of the limits for the right hand side of the deviation-to-tolerance parameter mapping relations for the cylindrical features. This gives the possible range of the values TU, TL and Tp constrained by the 108 mapping relations. These inequalities are planes in the TU, TL, Tp space and all such inequalities for each feature define the tolerance zone. Designer would select suitable values of these parameters from the defined zone by applying various criteria as per design requirements. In table 6.3-2, the last two columns list the upper and lower limits of the tolerance parameters (TU, TL). It was possible to directly compute the limits for the planar features because the mapping relations are separate for the two limits of the plus-minus type size tolerance Table 6.3-2 Tolerance zones/values for circular planar features 1 Output Housing Feature node 3 Feature node 5 2 Output Shaft Feature node 8 3 Ring Gear Feature node 14 Feature node 16 4 Input Shaft and Sun Feature node 20 5 Input Housing Feature node 23 Feature node 25 Radius 21.59 28.58 TL -0.51 -0.57 TU 0.21 0.19 21.59 -0.44 0.20 28.58 28.58 -0.47 -0.64 0.18 0.20 10.32 -0.19 0.19 7.94 10.32 -0.12 -0.19 0.21 0.07 109 How beautiful it is to do nothing, and then rest afterward. – Spanish Proverb Chapter 7 Conclusion The objective of this research has been to develop a generic object-oriented framework that could be used as a common platform for design of products both in the conceptual design stage as well as in detailed design. In the conceptual design stage, a procedure for converting the product specification/functional requirements into a physical form (function-to-form mapping) using transformation of product specifications along with variation of internal parameters of artifacts in a multi-stage design evolution has been presented. In the detailed design phase, the focus has been on the development of a generic scheme for the synthesis of tolerances for manufactured parts and in this endeavor, a scheme for tolerance synthesis has been presented based on minimization of manufacturing cost subject to assemblability constraints and constraints due to functional requirements. The proposed schemes have been implemented and example problems have been solved to establish effectiveness of the schemes. 7.1 Contribution The following are the contributions of this thesis: i) A new approach for design synthesis / design evolution has been presented which operates on a knowledge-based artifact library search and variation of internal 110 parameters of the artifact for selection of best candidate at intermediate stages of the design evolution. ii) A new scheme for synthesis of tolerances has been presented which is formulated as a non-linear constrained optimization (cost minimization) scheme. It is based on a generic deviation-based formulation. iii) A new deviation-based cost of manufacturing model has been presented which can represent the cost of manufacturing as a multi-variate function of deviation parameters that could be mapped to the tolerance specifications as per ASME Y14.5M standard. iv) A new scheme for mapping the generic deviation parameters of features from the deviation space to tolerance space (tolerance zone) has been introduced. 7.2 Future Work Major issues of the proposed work have been completed, however, there are some open issues that could be pursued further for extending the work. These are as listed below: i) It has been assumed that a product specification is available in a structured format for carrying out the design synthesis process. However, in general customers’ requirements are generally presented in the form of verbose natural languages. It would be worth exploring if suitable natural language processing modules (Natural Language Modeling) could be used to automatically generate tokens that could be directly used as product specification in standardized form. There are some works available for converting specifications from natural languages to 111 <attribute, value> tokens. This aspect could be pursued further so that a generalized routine could be added as a preprocessor to the design synthesis process. ii) In the design synthesis, a sample artifact library has been created for a particular design domain. The library could be extended to encompass widely varying domain-specific artifacts and knowledge base to ascertain the versatility of the design evolution process. iii) The mapping of deviation-to-tolerance has been completed for rectangular-planar, circular-planar, cylindrical, spherical and conical features. Further work is needed to develop mapping relations for remaining regular shapes like toroidal, helical screw, and sculptured features to bring the mapping task to a closure. However, due to complex non-linear nature of the relationship between the deviation parameters and the features surface geometry, it may not be possible to generate the mapping relations in compact form. iv) The tolerance synthesis method generates constrained non-linear optimization problem. There is no known theoretical method to ascertain if a global minimum exists or not. Traditional methods used for solving the problem may not be a global solution and evolutionary algorithms could be used to explore for improving the search for global. v) The advantage that is inherent due to the linear form (KX=B) of the assemblability constraints, gets somewhat reduced because of the large number of equations (six for each path or loop in 3-dimensional artifacts) and it would be 112 worth exploring if suitable tools could be developed to eliminate non-critical constraints from these equations prior to the optimization or after some initial passes of the optimization run. vi) For practical use of the new deviation-based cost of manufacturing model, extensive experimental data needs to be collected and correlated to establish the constants of the cost of manufacturing formulation for various manufacturing methods. The author plans to continue this task so that standardized results could be made available to the designers. vii) Even though the cost model is generic, only cost of manufacturing has been formulated. It would be worth exploring to introduce generic deviation-based cost functions for other costs, like assembly process cost, cost of inspection, cost of maintenance/repair, etc. viii) The tolerance synthesis model has been implemented and preliminary studies have been carried out to link these modules with commercial CAD packages. It would be worth exploring further as to how this module could dynamically interact with CAD packages to give the designer a more versatile design environment. ix) Convergence criteria for the proposed design synthesis process and complexity of the proposed algorithms needs evaluation for various artifact configurations in different design domains. x) A generic criteria for assemblability of toleranced parts could be studied by considering the property of a set formed by the intersection of three polytopes representing: a) assemblability constraints, b) constraints for satisfying the 113 functional requirements and c) tolerancing constraints (tolerance to deviation mappings). It would depend on whether the constraints indicated in b) and c), could be converted to polytopes (set of linear inequalities) in the deviation space. ■ 114 Appendices Appendix –1 Class diagrams for various classes Figure A1.1 Artifact class diagram 115 Figure A1.2 Function Class Figure A1.3 Behavior Class 116 Figure A1.4 Material Data Class Figure A1.5 Feature Class 117 Figure A1.6 Tolerance CLass 118 Appendix – 2 Examples of artifact representation Representation of artifacts as per the scheme given in section 1.5 is illustrated with two examples. First the representation of a ‘solid_shaft’ as an artifact is presented and then representation of a composite artifact (gearbox) is illustrated. Artifact solid_shaft( // defined as a multi-purpose artifact with 3 purposes (aid ‘shaft’) (attr dia ) // diameter (attr leng) // length (attr sb_max) // max allowable bending stress (attr sc_max) // maximum allowable compressive stress (attr st_max) // max allowable torsional stress (attr E) // material property: mod of elasticity (attr G) // material property: mod of rigidity (attr rho) // material property: density …. // solid shaft used to transmit torque (rotational motion) // // 1 2 // // (purpose transmit_torque (input torque_in torque 1.0 kgm) (input omega_in angular_velocity 1.0 rad/sec) (output torque_out torque 1.0 kgm) (output omega_out angular_velocity 1.0 rad/sec) (constraints (fun hold laterally) (fun allow axial_movement) ) (goal NONE) // no goals defined yet! (structure (sid ‘solid_shaft’) (ctrl_var (dia leng torque_in torque_out omega_in omega_out) (sketch (abst_sketch (node 1 (coord (-1,0,0) (dof (1,0,0,1,0,0) (input torque_in) (output NONE) ) (node 2 (coord (1,0,0) (dof (1,0,0,1,0,0) (input NONE) (output torque_out) ) (cad_sketch (file “solid_shaft_01.dwg”)) (constranits ( stress_ok := (16*toqr_in/(PI*dia^3) LE st_max)) ) 119 (behavior // (state_var torque_in (depends_on NONE) (affects torque_out) (val_ref INPUT)) (state_var omega_in (depends_on NONE) (affects omega_out) (val_ref INPUT)) (state_var torque_out (depends_on torque_in) (affects NONE) (val_ref procedural (EQ torque_in))) (state_var omega_out (depends_on omega_in) (affects NONE) (val_ref procedural (EQ omega_in))) (state_var angular_twist (depends_on NONE) (affects NONE) (val_ref procedural (EQ 32*torque_in*leng/(PI*dia^4))) (state_var torsional_Stress (depends_on NONE) (affects NONE) (val_ref procedural (EQ (16*toqr_in/(PI*dia^3)))) ) // solid shaft used to axial force (axial linear motion) // // 1 2 // // (purpose transmit_axial_force (input force_in force 1.0 kg) (output force_out force 1.0 kg) (constraints (fun hold laterally) (fun allow axial_movement) ) (goal NONE) // no goals defined yet! (structure (sid ‘solid_shaft’) (ctrl_var (dia leng force_in force_out) (sketch (abst_sketch (node 1 (coord (-1,0,0) (dof (1,0,0,1,0,0) (input force_in) (output NONE) ) (node 2 (coord (1,0,0) (dof (1,0,0,1,0,0) (input NONE) (output force_out) ) 120 (cad_sketch (file “solid_shaft_01.dwg”)) (constranits ( stress_ok := (4*force_in/(PI*dia^2) LE sc_max)) ) (behavior // as per definition in section 5 (state_var force_in (depends_on NONE) (affects force_out) (val_ref INPUT)) (state_var force_out (depends_on force_in) (affects NONE) (val_ref procedural (EQ force_in))) (state_var axial_compression (depends_on NONE) (affects NONE) (val_ref procedural (EQ 4*force_in*leng/(E*PI*dia^2))) (state_var compressive_Stress (depends_on NONE) (affects NONE) (val_ref procedural (EQ (4*force_in/(PI*dia^2))))) ) // solid shaft used to carry lateral force as a cantelever beam // // 1 2 // // (purpose carry_lateral_load (input force_in force 1.0 kg) (output NONE) (constraints (fun hold laterally) ) (goal NONE) // no goals defined yet! (structure (sid ‘solid_shaft’) (ctrl_var (dia leng force_in) (sketch (abst_sketch (node 1 (coord (-1,0,0) (dof (0,0,0,0,0,0) (input NONE) (output NONE) ) (node 2 (coord (1,0,0) (dof (0,1,0,0,0,0) (input force_in) (output NONE) ) (cad_sketch (file “solid_shaft_02.dwg”)) (constranits ( stress_ok := (4*force_in/(PI*dia^2) LE sc_max)) (deflection := (force_in*leng^3/(3EI)) LT deltamax) 121 ) (behavior // as per definition in section 5 (state_var force_in (depends_on NONE) (affects NONE) (val_ref INPUT)) (state_var laterall_deflection (depends_on NONE) (affects NONE) (val_ref procedural (EQ force_in*leng^3/(3EI)))) (state_var bending_Stress (depends_on NONE) (affects NONE) (val_ref procedural (EQ (32*force_in*leng/(PI*dia^3))))) ) The behavior of the shaft shown in the three cases can be represented as a method in object-oriented definition. For example, the behavior of in the first case would be represented by following method: void behavior (double torque_in, double omega_in) { // computes behavioral parameters at time ‘t’ of the shaft for specified torque and // angular velocity. torque_out = torque_in ; omega_out = omega_in; angular_twist = 32*torque_in*leng/(PI*dia^4); torsional_stress = 16*toqr_in/(PI*dia^3) power = torque_in*omega_in // power transmitted by the shaft } Above example was for a primitive artifact with single component. We will now consider a ‘gear box’ as a composite artifact with two primitive ‘gear’ artifacts. Before defining the ‘gear box’, we first define a ‘gear’ as follows: // // // // // // // // // // // Artifact gear ( (aid gear) (attr shaft_dia ) // diameter (attr width) // length (attr pitch_dia) // pitch diameter (attr n_teeth) // number of teeth (attr sb_max) // max allowable bending stress (attr sc_max) // maximum allowable compressive stress (attr st_max) // max allowable torsional stress (attr E) // material property: mod of elasticity (attr G) // material property: mod of rigidity (attr rho) // material property: density …. 122 (purpose transmit_torque) (purpose transmit_rotation) (purpose change_speed) (requires (art shaft)) (requires (art key)) (requires (art housing)) (input torque_in torque 1.0 kgm) (input omega_in angular_velocity 1.0 rad/sec) (output torque_out torque 1.0 kgm) (output omega_out angular_velocity 1.0 rad/sec) (constraints (goal NONE) // no goals defined yet! (structure (sid spur_gear’) (ctrl_var (dia leng torque_in torque_out omega_in omega_out) (sketch (abst_sketch (node 1 (point) (coord (0,0,0) // center of gear (dof (0,0,0,1,0,0) (input omega_in) (output NONE) ) (node 2 (circle) // pitch circle (center (coord (0,0,0)) (dia pitch_dia) (input NONE) (output torque_out) (output omega_out) ) (node 3 (circle) // outer circle (center (coord (0,0,0)) (dia outer_dia) (input NONE) (output NONEt) ) (cad_sketch (file “spur_gear_01.dwg”)) (constranits ( stress_ok := <contact stress <= allowable stress>)) ) (behavior // as per definition in section 5 (state_var torque_in (depends_on NONE) (affects torque_out) (val_ref INPUT)) (state_var omega_in (depends_on NONE) (affects omega_out) (val_ref INPUT)) (state_var torque_out (depends_on torque_in) (affects NONE) (val_ref procedural (EQ torque_in))) (state_var omega_out (depends_on omega_in) (affects NONE) 123 (val_ref procedural (EQ omega_in))) (state_var angular_twist (depends_on NONE) (affects NONE) (val_ref procedural (EQ <appropriate eqn>))) (state_var torsional_Stress (depends_on NONE) (affects NONE) (val_ref procedural (EQ (<appropriate eqn>))) ) Now we define the artifact ‘gear_box’ to change rotational speed: // // // // // // // // // // // // // // Artifact gear_box ( (aid gear_box) (attr shaft_dia_in ) // input gear diameter (attr shaft_dia_out ) // output gear diameter (attr pitch_dia_in) // input gear pitch diameter (attr n_teeth_in) // number of teeth input gear (attr n_teeth_out) // number of teeth output gear (attr trans_ratio) // speed ration (output_speed/input_speed) // EQ n_teeth_in/n_teeth_out (attr sb_max) // max allowable bending stress (attr sc_max) // maximum allowable compressive stress (attr st_max) // max allowable torsional stress (attr E) // material property: mod of elasticity (attr G) // material property: mod of rigidity (attr rho) // material property: density …. (purpose transmit_torque) (purpose change_rotational_speed) (requires (art gear) (location (coord (node 1))) (orientation (direction_cosine (cx,cy,cz)) ) (requires (art gear) (location (coord (node 2)) (orientation (direction_cosine (cx,cy,cz)) ) 124 (requires (art shaft) (location (coord (node 1))) (orientation (direction_cosine (cx,cy,cz)) ) (requires (art shaft) (location (coord (node 2))) (orientation (direction_cosine (cx,cy,cz)) ) (requires (art key) (location (coord (node 4))) (orientation (direction_cosine (cx,cy,cz)) ) (requires (art key) (location (coord (node 5))) (orientation (direction_cosine (cx,cy,cz)) ) (requires (art housing) (location (coord (node 1))) (orientation (direction_cosine (cx,cy,cz)) ) (input torque_in torque 1.0 kgm) (input omega_in angular_velocity 1.0 rad/sec) (output torque_out torque 1.0 kgm) (output omega_out angular_velocity 1.0 rad/sec) (constraints // pcd of two gears should meet // others ) (goal NONE) // no goals defined yet! (structure (sid gear_box) (ctrl_var (torque_in torque_out omega_in omega_out) (sketch (abst_sketch (node 1 (point) (coord (0,0,0) // center of gear in-gear (dof (0,0,0,1,0,0) (input omega_in) (output NONE) ) (node 2 (point // contact point on pcd of both (coord (0,0,0))) (input NONE) (output torque_out) (output omega_out) ) (node 3 (point // center of out-gear (coord (0,0,0))) (input NONE) (output omega_out) (output torque_out) ) (node 4 125 (point // key hole location (coord (0,0,0))) (input NONE) (output omega_out) (output torque_out) ) (node 5 (point // key hole location (coord (0,0,0))) (input NONE) (output omega_out) (output torque_out) ) (cad_sketch (file “spur_gear_01.dwg”)) (constranits ( stress_ok := <contact stress <= allowable stress>)) ) (behavior // of combined gears (state_var torque_in (depends_on NONE) (affects torque_out) (val_ref INPUT)) (state_var omega_in (depends_on NONE) (affects omega_out) (val_ref INPUT)) (state_var torque_out (depends_on torque_in) (affects NONE) (val_ref procedural (EQ torque_in))) (state_var omega_out (depends_on omega_in) (affects NONE) (val_ref procedural (EQ omega_in*trans_ratio))) (state_var angular_twist (depends_on NONE) (affects NONE) (val_ref procedural (EQ <appropriate eqn>))) (state_var torsional_Stress (depends_on NONE) (affects NONE) (val_ref procedural (EQ (<appropriate eqn>))) ) 126 Appendix – 3 Artifact Library Artifact id figure ref Function purpose type equivalence Input category weight unit from val to val Internal Par category weight unit from val to val Output category weight unit from val to val Constraint type expression Constraint Type Expression Artifact Ref Artifact Ref Behavior Cam Follower (Lin) A1 figure 1-2 rotary_to_linear rotary to linear oscilating Cam Follower(Osc) A2 figure 1-1 rotary_to_rotary rotary to rotary oscilatory Rack & Pinion A3 figure 1-4 rotary_to_linear rotary to linear Spur Gear Box A4 figure 1-6 rotary_to_rotary rotary to rotary w_In rotary_motion 1 rpm 100 300 E (eccentricity) 1 mm 0 ? x(x_range) linear_oscilatory 1 mm unknown w_In rotary_motion 1 rpm 100 300 R (range_angle) 1 degree 0 60 w_Out rotary_oscilatory 1 cpm w_In rotary_motion 1 rpm 100 300 R (pinion radius) 1 ? ? x_vel linear_motion 1 mm/sec w_In rotary_motion 1 rpm 100 300 R (speed_ratio) 1 0.25 4 w_Out rotary_motion 1 rpm C0 relational x = 2*E C1 spatial axis(w_in) _|_ axis(x) cam follower x(t)=2*E*cos(w_in*t) C0 relational w_out = w_in C1 spatial axis(w_in) || axis(w_out) cam follower w_out(t)=w_in(t) C0 relational x_vel=w_in*R C1 spatial axis(w_in) _|_ dir(x_vel) rack pinion x_vel(t)=w_in(t)*R C0 relational w_out = w_in*R C1 spatial axis(w_in) || axis(w_out) spur_gear spur_gear w_out(t)=w_in(t)*R 127 Artifact id figure ref Function purpose type equivalence Input category weight unit from val to val Internal Par category weight unit from val to val Output category weight unit from val to val Constraint type expression Constraint type expression Artifact Ref Artifact Ref Behavior 4-Bar Linkage A5 rotary_to_rotary to trasmit rotary motion Belt Pulley A6 rotary_to_rotary rotary to rotary Bevel Gear Box A7 figure 1-5 rotary_to_rotary rotary to rotary motion Nut & Bolt A8 figure 1-3 rotary_to_linear rotary to linear w_In rotary_motion 1 rpm 100 300 Lengths of the bars 1 mm ? ? w_Out rotary_motion 1 rpm w_In rotary_motion 1 rpm 100 300 R(speed_ratio) 1 0.5 2 w_Out rotary_motion 1 rpm w_In rotary_motion 1 rpm 100 300 R(speed_ratio) 1 0.25 4 w_Out rotary_motion 1 rpm w_In rotary_motion 1 rpm 100 300 P (pitch) 1 mm 1 5 x_vel linear_motion 1 mm/sec C0 relational w_out = w_in*R C1 spatial axis(w_in) || axis(w_out) spur_gear spur_gear w_out(t)=w_in(t)*R C0 relational w_out = w_in*R C1 spatial axis(w_in) || axis(w_out) belt pulley, pulley w_out(t)=w_in(t)*R C0 relational w_out = w_in*R C1 spatial axis(w_in) _|_ axis(w_out) bevel_gear bevel_gear w_out(t)=w_in(t)*R C0 relational x_vel = w_in*P C1 spatial axis(w_in) || dir(x_vel) nut bolt x_vel(t)=w_in(t)*P Note: This table is a simplified version of the actual artifact representation as objects. Only the basic features required to follow the design synthesis example given in this paper have been shown here. 128 lever Follower Pivot Cam Driving Shaft Key Cam Cam and Follower (Oscillating) Cam and Follower (Linear) Bolt Rack Nut Pinion Nut and Bolt Bevel Gear Box Rack and Pinion Spur Gear Box 129 Appendix – 4 Interval Arithmetic The interval arithmetic that would be required to deal with ranges of values for attributes are elaborated below. In general, we will consider the range from evaluating an expression as the smallest closed interval including all values of the expression, wherever is defined, for any values in the ranges of the variables in the expression. We will interpret each interval as describing the set of possible values of an incompletely known, but constant, real number or range that is an attribute of an individual physical system. Thus, a variable with incompletely known value will be described by a closed interval on the real line: x = [xlb, xub] = {x ∈ R : xlb ≤ xub}, where xlb is the lower bound and xub the upper bound of x. We will accept and use ∝ and -∝ as possible upper and lower bound, respectively, for an interval. Following arithmetic operations are defined for evaluating expressions on intervals. x, y are expressions evaluating to intervals x=[ xlb, xub], y=[ xlb, xub] x + y = [xlb +ylb, xub+yub] x-y = [xlb-yub, xub-ylb] x * y = [xlb*ylb, xub*yub] , (xlb ≥ 0 and ylb ≥0) or (xub ≤0 and yub ≤0) = [xlb*yub, xub*ylb] , xub≤0 and ylb≥0 = [xub*ylb, xlb*yub] , xlb ≥0 and yub ≤0 = [xlb*yub, xub*yub] , xlb ≤0 and xub ≥0 and ylb >=0 = [xub*yub, xlb*ylb] , xlb ≤0 and xub ≥ 0 and yub ≤0 = [ylb*xub, yub*xub] , ylb ≤0 and yub ≥ 0 and xlb ≥ 0 = [yub*xub, ylb*xlb] , ylb ≤0 and yub ≥ 0 and xub ≤0 = [min(xlb*yub, xub*ylb), max(xlb*ylb, xub*yub)] xlb ≤0 and xub ≥ 0 and ylb ≤0 and yub ≥ 0 1/x = [1/xub, 1/xlb] , xlb >0 130 = [1/xub, ∞] , xlb≥0 = [1/xlb, 1/xub] , xub <0 = [-∞, 1/xlb] , xub≤0 = [-∞,∞] , xlb≤0 and xub ≥0 = [∅] , xlb=xub=0 (undefined) x / y = x * (1/y) |x| = [xlb, xub] , xlb≥0 = [-xub, -xlb] , xub≤0 = [0, max(xub,-xlb)] otherwise mean(x) = (|xlb|+|xub|)/2 , a single valued quantity. Evaluating functions: For monotonically increasing functions, f ∈ M+, where M+ is the class of monotonically increasing functions, f(x) = [flo(xlb), fup(xub)] and f -1(x) = [fup -1(xlb), flo-1(xub)]. where flo and fup are the lower and upper bounds (envelopes) of the function f such that ∀x, flo(x) ≤ f(x) ≤ fup(x). 131 Appendix - 5 Transformation of Torsors A torsor is a tensor-type representation of small displacements and rotations (corresponding to the six degrees of freedom associated with a space point on a surface embedded in R3). If we introduce three small displacements along the three local principal axes at a point A on a surface, as δ = [δx δy δz]T and three rotations θ = [θx θy θz ]T then the torsor TA/R at A with reference to a datum R can be represented as: TA/R = [θA δA ]T = [θx θy θz δx δy δz ]T Torsors transform according to standard rotation & translation rules of axes. However, the components are small in comparison to the dimension of the components. The small-displacement torsor mentioned above is used to represent three types of deviations associated with mating of components in an assembly. Two torsors associated with each component and a gap torsor at the mating. The two torsors associated with each feature are: a displacement torsor and a deviation torsor as shown in figure A5-1. The displacement torsor is an intrinsic variation torsor, which is specific to the element (as for example, displacement arising out of the variation of the radius of a cylindrical surface). The displacement torsor represents the deviation of the real surface from the nominal surface. The gap torsor between two mating features represents possible geometric variations between the mating features. 132 Part B Nominal Surface Displacement torsor Deviation torsor Deviation torsor Part A Real Surface Displacement torsor Gap Figure A5-1 Interacting torsors at mating surfaces In order to add the torsors in a loop to form equations connecting the components of the torsors, a mechanism would be necessary to transform the torsors defined in local coordinate systems of the individual components into a global reference frame. Since a torsor is represented by a 1x6 vector, the transformations required would be 6x6 transformation matrices. The rules for transformation of torsors are described below 133 z Y y z y N x X M Z x Figure A5-2 Torsor transformation - shifting axes A small deviation torsor (SDT) TN defined at a point N in the local coordinate system (x, y, z) with six components (θx, θy, θz, δx, δy , δz) (where θ denotes rotational and δ denotes linear components of movements) transforms to (TN)ML (where L denotes local coordinate system) in the same local coordinate system shifted to a new point M is be given by: (TN)ML = (θx, θy, θz, δx + (θy*∆z - θz *∆z), δy + (θz *∆x – θx *∆z), δz + (θx *∆y – θy *∆x)) This equation could be written in compact notation as: … (A5-1) (TN)ML = DTN where D is the 6x6 transformation matrix given by ⎡ 1 ⎢ 0 ⎢ ⎢ 0 D=⎢ ⎢ 0 ⎢ ∆z ⎢ ⎣ − ∆y 0 1 0 0 0 0 0 0 0 1 0 0 − ∆z ∆y 1 0 0 − ∆x 0 1 ∆x 0 0 0 0 ⎤ 0 ⎥ ⎥ 0 ⎥ ⎥ 0 ⎥ 0 ⎥ ⎥ 1 ⎦ … (A5-2) where ∆ =(∆x, ∆y, ∆z)T = (XN-XM, YN -YM, ZN-ZM)T is the vector from point M to N in global coordinate system (X, Y, Z). 134 The above transformation given by TM = DTN can also be explicitly written as: T M ⎡ ⎢ ⎢ ⎢ = ⎢ ⎢δ ⎢δ ⎢ ⎢⎣ δ x y z θ θ θ + (∆ yθ + (∆ zθ + (∆ xθ where MN is he vector x y z x − ∆ zθ − ∆ xθ y − ∆ yθ z y z x ⎤ ⎥ ⎥ ⎡ ⎥ ⎢ ⎥ = ⎢ )⎥ ⎢⎣ δ )⎥ ⎥ ) ⎥⎦ θ N N + MN × θ N ⎤ ⎥ ⎥ ⎥⎦ (∆x ∆y ∆z)T from point M to N and X is the vector cross product. After the above transformation, the components of torsor (TN)ML are still in the local coordinate system (x,y,z). Let the local coordinate system (x,y,z) be defined by the three unit vectors x = (kxX, kxY, kxZ), y = (kyX, kyY,kyZ) and z = (kzX, kzY, kzZ) in the global coordinate system, in other words, the local coordinate system could be represented by the [K] matrix given by: ⎡k xX [K ] = ⎢⎢ k xY ⎢ k xZ ⎣ k yX k yY k yZ k zX ⎤ ⎥ k zY ⎥ k zZ ⎥⎦ (A5-3) The components of (TN)ML could then be converted to the global system by the following transformation (applicable for both the linear movement and the small rotations in the sense of SDT) : 135 θ X = θx * kxX + θy * kyX + θz * kzX θY = θx * kxY + θy * kyY + θ z* kzY θZ = θx * kxZ + θy * kyZ + θz* kzZ θG = [θ X θ Y θ Z]T = [K][ θx θy θz]T θG = [K] θ L where the subscripts G and … L (A5-4) refer to global and local coordinate systems respectively. δX = [δx + (θy *∆z - θz*∆y)]* kxX + [δy+ (θz*∆x – θx*∆z)]* kyX + [δz+ (θx*∆y – θy *∆x)]* kzX δY = [δx + (θy *∆z - θz*∆y)]* kxY + [δy+ (θz*∆x – θx*∆z)]* kyY + [δz + (θx*∆y – θy*∆x)]* kzY δZ = [δx + (θy *∆z - θz*∆y)]* kxZ + [δy+ (θz*∆x – θx*∆z)]* kyZ + [δz + (θx*∆y – θy*∆x)]* kzZ δG = [δX δY δZ]T = [K] ( [δx δy δz]T + [∆x ∆y ∆z]T × [θ z θ y θ z]T) where × is the vector cross product. δG = [K] ( δL + ∆ × θ L ) … (A5-5) where δL = [δx δy δz]T , ∆ =(∆x, ∆y, ∆z)T, θ L = [ θx θy θz]T Combining the two transformations, we can write the final result as: (where subscript G refers to global): (TN)MG = (θG, δG ) (TN)MG = ([K][ θx θy θz]T , [K] ( [δx δy δz]T + [∆x ∆y ∆z]T × [θ x θ y θ z]T ) Above relation could be written as: (TN)MG = K2 (TN)ML where K2 is generated using A5-2 and A5-3). … (A5-6) … (A5-7) 136 Appendix – 6 Example of Generation of Assemblability Constraints The torsor scheme for the modeling of the small geometric variations of mating features of an artifact to generate assemblability constraints has been elaborated with a simple example of a rectangular block (Part-3) enclosed within two channels (Part-1 & Part-2) (figures A6-1 & A6-2). Apart from the simplified configuration, further simplification has been done as detailed below so that the relevant transformations and preliminary computations could be checked manually. Part - 2 Loop –4 Loop –3 Part - 3 Loop –2 Loop –5 Loop –1 Part - 1 Loop –6 Figure A6-1 Example artifact with three blocks 137 y y z Part - 2 x 22 23 24 21 25 33 y 32 z 34 Part - 3 31 11 15 12 y 13 Part - 1 Figure A6-2 14 x y x 3-Block artifact with feature numbers and LCS. The simplifications are: a) All variations take place along the vertical plane only (with 3 possible variations: x-rotation, y-displacement and z-displacement) to keep the formulation simple. b) There is no displacement torsor for each part. Only the feature deviation torsors and the gap torsors have been taken into consideration. c) The bottom surface of Part 1 has been assumed to be a fixed datum d) Only a few paths/loops have been shown. 138 The three parts 1,2, & 3, local axes and contact surfaces have also been shown in the same sketch. Surfaces have been designated as <part_number><serial_number> such that surfaces on part 1 are numbered as 11, 12, 13, 14, etc. For generating equations connecting the variations of the mating surfaces, six loops have been considered. With the above simplifications, we are left with following configuration: Number of mating surfaces Number of gaps between mating surfaces Number of surface parameters Number of gap parameters Total number of parameters Number of loops Number of equations from the loops : 14 (all planer) :8 : 14 x 3 = 42 : 8 x 3 = 24 : 42 + 24 = 66 :6 : 6 x 3 = 18 The six loops are as follows: Loop-1: 12Æ32Æ31Æ13 Loop-2: 11Æ21Æ22Æ32Æ32Æ12 Loop-3: 22Æ32Æ33Æ23 Loop-4: 24Æ34Æ33Æ23 Loop-5: 15Æ25Æ24Æ34Æ34Æ14 Loop-6: 14Æ34Æ31Æ13 The associated torsors in their local coordinate systems are: T11 , T12, T13, T14, T15, T21, T22, T23, T24, T25, T31, T32, T33, T34 Typically, each of these torsors would have similar 6-component forms like: T11 = [θ11 δ11 ]T = [θx11 0 0 T12 = [θ12 δ12 ]T = [θx12 0 0 0 δy11 δz11 ]T , 0 δy12 δz12 ]T The gap torsors are: G11/21, G12/32, G13/31, G14/34, G15/25, G22/32, G23/33, G24/34 with typical forms given by: G11/21 = [θg11/21 δg11/21 ]T = [θgx11/21 0 0 0 δgy11/21 δgz11/21 ]T 139 We now consider the Loop - 1 (12Æ32Æ31Æ13) and write the torsor equation for the loop as: T12 + G12/32 + (-T32 ) + T31 + (-G13/31 ) + (-T13 ) = 0 Transforming all the terms in the above equation in Part–1’s frame of reference, the equation becomes, T12 + (D12/23)12 G12/32 + (D32)12 (-T32 ) +(D31)12 T31 +(D13/31)12 G13/31 + (D13)12 (-T13 ) = 0 where the D’s are the corresponding transformations with respect to the Part - 1. Writing the D’s in full, and carrying out the operations, the above equation becomes, [θx12 [θgx12/32 [θx32 [θx31 [θgx13/31 [θx13 =[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]T δy12 δz12 ]T + δgy12/32 δgz12/32 ]T δy32 + θx32 (z32 - z12) δz32 + θx32 (y32 - y12) ]T + δy31 + θx31 (z31 - z12) δz31 + θx31 (y31 - y12) ]T + δgy13/31 + θgx13/31 (z31 - z12) δgz13/31 + θgx13/31 (y31 - y12)]T δy13 + θx13 (z13 - z12) δz13 + θx13 (y12 - y12)]T Equating each component to zero gives 6 equations. In this present case there are only 3 equations due to the restricted space of the example. θx12 + θgx12/32 - θx32 + θx31 + θgx13/31 - θx13 = 0 δy12 + δgy12/32 - δy32 - θx32 (z32 - z12) + δy31 + θx31 (z31 - z12) + δgy13/31 + θgx13/31 (z31 - z12) - δy13 + θx13 (z13 - z12) = 0 δz12 + δgz12/32 - δz32 - θx32 (y32 - y12) + δz31 + θx31 (y31 - y12) + δgz13/31 + θgx13/31 (y31 - y12) - δz13 + θx13 (y12 - y12) = 0 Each of the six loops will give 3 similar equations. Altogether 18 equations would be formed connecting the 66 parameters. Let us repeat the procedure of forming the equations for Loop – 2 (11Æ21Æ22Æ32Æ32Æ12) The torsor equation for the Loop - 2 is: T11 + G11/21 + (-T21 ) + T22 + (G22/32 ) + (-T32 ) + T32 + (G32/12 ) + (-T12 ) = 0 i.e. T11 + G11/21 + (-T21 ) + T22 + (G22/32 ) + (G32/12 ) + (-T12 ) = 0 140 Transforming all the terms in the above equation in Part–1’s frame of reference, the equation becomes, T11 + (D11/21)11 G11/21 + (D21)11 (-T21 ) +(D22)11 T22 +(D22/32)11 G22/32 + + (D32/12)11 G22/12 + (D12)11 (-T12 ) = 0 where the D’s are the corresponding transformations with respect to the Part - 1. Writing the D’s in full, and carrying out the operations, the above equation becomes, [θx11 [θgx11/21 [θx21 [θx22 [θgx22/32 [θgx32/12 [θx12 =[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]T δy11 δz11 ]T + δgy11/21 δgz11/21 ]T δy21 + θx21 (z21 - z11) δz21 + θx21 (y21 - y11) ]T + δy22 + θx22 (z22 - z11) δz22 + θx22 (y22 - y11) ]T + δgy22/32 + θgx22/32 (z22 - z11) δgz22/32 + θgx22/32 (y22 - y11)]T + δgy32/12 + θgx32/12 (z32 - z11) δgz32/12 + θgx32/12 (y32 - y11)]T δy12 + θx12 (z12 - z11) δz12 + θx12 (y12 - y11)]T Equating each component to zero gives following 3 equations: θx11 + θgx11/21 - θx21 + θx22 + θgx22/32 + θgx32/12 - θx12 = 0 δy11 + δgy11/21 - δy21 - θx21 (z21 - z11) + δy22 + θx22 (z22 - z11) + δgy22/32 + + θgx22/32 (z22 - z11) +δgy32/12 + θgx32/12 (z32 - z11) - δy12 - θx12 (z12 - z11) = 0 δz11 + δgz11/21 - δz21 - θx21 (y21 - y11) + δz22 + θx22 (y22 - y11) + δgz22/32 + θgx22/32 (y22 - y11) + δgz32/12 + θgx32/12 (y32 - y11) - δz12 - θx12 (y12 - y11) = 0 Similar procedures would yield the rest of the equations for the remaining four loops. 141 Appendix – 7 Mapping of Deviation Parameters to Tolerance Parameters For completeness, following is included here from [Wang (2003)] on the mapping of deviation parameters to tolerance zones. A7.1 Cylindrical Feature - Modified to MMC A cylindrical feature with a given tolerance specification is taken as shown in Figure A7.1-1 and the local coordinate system (LCS) for defining the deviation parameters is shown in Figure A7.1.-2. The VCB of the cylindrical surface is constructed by using the rules in 3.6.1 and the VCB has the following properties: • A perfect shape as that of the nominal cylindrical feature • A size (diameter) of max size plus geometric tolerance, because its external feature and the positional tolerance is modified to MMC • A perfect orientation as that of the nominal cylindrical feature (vertical to C) • A perfect location as that of the nominal cylindrical feature For the cylindrical surface, the LCS is: z-axis along the axis of the cylinder and (x, y) are local orthogonal co-ordinates on the middle of the axis. For this surface, the deviation parameters are: (∆x, ∆y, 0, ∆θx, ∆θy, 0) and dr. Based on this notation, mapping relations are derived as detailed below. For a point P (r*cosθ, r*sinθ, z), on the nominal cylindrical surface: Deviation parameters = (∆x, ∆y, 0, ∆θx, ∆θy, 0) Tolerance parameters = (TU, TL, TP ) SDT are: Dd = {∆θ ∆d} = {∆θx ∆θy 0 ∆x ∆y 0}T 142 Di = {∆θ ∆d} = {0 0 0 dr*cosθ dr*sinθ 0}T where Dd is displacement torsor5 and Di is intrinsic torsor6. Figure A7.1-1 Cylindrical feature with tolerance modified to MMC P z P y P’ x Figure A7.1-2 Cylindrical feature with LCS After transformation due to the effect of the two SDTs, the new position of transformed point P’ can be calculated from: 5 6 Displacement torsor for the deviation of the feature from the nominal position. Intrinsic torsor represents the intrinsic variation of size of the feature. 143 ⎡ 1 ⎢ 0 ⎢ ⎢ − ∆θ y ⎢ ⎣ 0 0 1 ∆θ x 0 ∆θ y − ∆θ x 1 0 ∆x ⎤ ⎡( r + dr ) cos θ ⎤ ⎡ ( r + dr ) cos θ + ∆θ y z + ∆x ⎤ ⎥ ⎢ ⎥ ⎢ ⎥ ∆y ( r + dr ) sin θ ( r + dr ) sin θ − ∆θ x z + ∆y ⎥=⎢ ⎥ ⎥⎢ z 0 ⎥⎢ ⎥ ⎢ z − ∆θ y ( r + dr ) cos θ + ∆θ x ( r + dr ) sin θ ⎥ ⎥⎢ ⎥ ⎢ ⎥ 1 ⎦⎣ 1 1 ⎦ ⎣ ⎦ The 4 by 4 matrix on left hand side of the equation is the transformation matrix for point P following the assumed transformation sequence ∆xÆ∆yÆ∆θxÆ∆θy by displacement torsor. The 4 by 1 matrix (vector) on the left hand side of the equation represent the changed position of point P by intrinsic torsor. Thus the new position P’ is given by ((r + dr) cosθ + ∆θ y z + ∆x, (r + dr) sinθ − ∆θ x z + ∆y, z − ∆θ y (r + dr) cosθ + ∆θ x (r + dr) sinθ ) Hence, the constraint equation will be: ((r + dr ) cosθ + ∆θ y z + ∆x) 2 + ((r + dr ) sin θ − ∆θ x z + ∆y ) 2 ≤ (2r + TU + Tp) 2 / 4 where θ ∈ (0, 2π). The left hand side (LHS) is a function of two independent parameters θ and z. The inequality should be valid for ∀θ ∈ (0, 2π) and ∀z ∈ (0, L). This is done by finding the maximum of the LHS with respect to θ and z. Writing the LHS of the above equation as: f(θ,z) = (a*cosθ+b*z+c)2 + (a*sinθ+d*z+e)2, where a = r+dr, b = ∆θy , c = ∆x, d=-∆θx, and e=∆y , and minimizing f with respect to θ and z, the maximum/minimum value of f is found. After some reduction of the resulting algebraic expressions using Matlab, the final set of mapping relations are established as: dr ± (be − cd ) d +b 2 2 ≤( TU + Tp ) 2 − TL ≤ dr ≤ TU 144 and dr ± (be − cd ) d +b 2 2 ≥( TU − Tp ) 2 − TL ≤ dr ≤ TU for external and internal cylindrical features respectively. A7.2 Spherical Feature For the spherical surface, a LCS is defined as: z-axis along radius of the sphere and (x, y) are local orthogonal co-ordinates at the center of the sphere (Figures A7.2-1 & 2). For this feature the deviation parameters of the SDT are: (∆x, ∆y, ∆z, 0, 0, 0 ) and dr. Based on this notation, mapping relations are derived connecting these parameters with the specified tolerance values as detailed below. z x y Figure A7.2-1 Spherical feature with LCS 145 Figure A7.2-2 Spherical feature with tolerance specification The VCB of the spherical surface is constructed with the following properties: • A perfect shape as that of the nominal spherical feature • A size (diameter) of 2r+TU+Tp, because it’s external feature and the positional tolerance is modified to MMC • A perfect location as that of the nominal cylindrical feature By applying the same procedures as was followed for the cylindrical case, we have: Dd = {∆θ ∆d} = {0 0 0 ∆x ∆y ∆z}T Di = {∆θ ∆d} = {0 0 0 dr*sinφ*cos ψ ⎡1 ⎢0 ⎢ ⎢0 ⎢ ⎣0 0 1 0 0 dr*sinφ*sinψ dr*cosφ}T 0 ∆x ⎤ ⎡(r + dr ) sin φ cosψ ⎤ ⎡∆x + (r + dr ) sin φ cosψ ⎤ 0 ∆y ⎥⎥ ⎢⎢ (r + dr ) sin φ sin ψ ⎥⎥ ⎢⎢ ∆y + (r + dr ) sin φ sin ψ ⎥⎥ = 1 ∆z ⎥ ⎢ (r + dr ) cosψ ⎥ ⎢ ∆z + (r + dr ) cosψ ⎥ ⎥⎢ ⎥ ⎢ ⎥ 0 1 ⎦⎣ 1 1 ⎦ ⎣ ⎦ 146 The 4 x 4 matrix on the left hand side of the above equation is the transformation matrix for any point on the spherical surface due to displacement torsor assuming the transformation sequence ∆xÆ∆yÆ∆z. The 4 x 1 matrix (vector) on left hand side of the equation represents the changed position of the point due to the intrinsic torsor. The constraints ont eh VCB is expressed as:: (∆x + (r + dr ) sin φ cosψ ) 2 + (∆y + (r + dr ) sin φ sinψ ) 2 + (∆z + (r + dr ) cosψ ) 2 ≤ (2r + TU + TP) 2 / 4 The above inequality should be valid for ∀Φ ∈ (0, 2π) and ∀Ψ ∈ (0, 2π) and hence the parameters Φ and Ψ needs to be eliminated by maximizing the following function. f (φ ,ψ ) = a sin 2 φ + a cos 2 ψ + 2∆x sin φ cosψ + 2∆y sin φ sinψ + 2∆z cosψ where a = r + dr ∂f / ∂φ = 0 ⇒ 2 cos φ ( a sin φ + ∆x cosψ + ∆y sinψ ) = 0 ∂f / ∂ψ = 0 ⇒ − 2a cosψ sinψ − 2 ∆x sin φ sinψ + 2 ∆y sin φ cosψ − 2∆z sinψ = 0 Here, we have two sets of solutions (Maple V has been used to get the solutions in symbolic form): 1) aβ − ∆y 2 ∆x + ∆z 4 2 β = Rootof ( _ z a − 2 _ z 3a∆y + ( ∆z 2 + ∆y 2 + 2∆x∆z − a 2 + ∆x 2 ) _ z 2 + 2a _ z∆y − ∆y 2 ) φ = ( 2n + 1) where π , ψ = −tg −1 147 2) ∆x ( −γ 2 a 2 + γ 2 ∆x 2 + γ 2 ∆y 2 − γ∆za − ∆y 2 ) ∆y∆x ( 2γ 2 − 1) −1 ),ψ = tg ( 2 2 ) φ = − sin ( ( −γa 2 + γ∆x 2 − γ∆y 2 − ∆za )a − γ a + γ 2 ∆x 2 − γ 2 ∆y 2 − γ∆za −1 where γ = Rootof (( a 4 − 2a 2 ∆x 2 + 2a 2 ∆y 2 + ∆x 4 + ∆y 4 + 2∆y 2 ∆x 2 ) _ z 4 + ( 2∆za 3 − 2a∆z∆x 2 + 2a∆z∆y 2 ) _ z 3 + ( − a 4 − 2∆y 2 ∆x 2 − 2a 2 ∆y 2 − ∆y 4 − ∆x 4 + 2a 2 ∆x 2 + ∆z 2 a 2 ) _ z 2 + ( 2a∆z∆x 2 − 2∆za 3 − 2a∆z∆y 2 ) _ z − ∆z 2 a 2 + ∆y 2 ∆x 2 ) The final set of mapping relations are: f max ≤ ( 2r + TU + Tp 2 ) 2 − TL ≤ dr ≤ TU When toleranced feature is internal, (for example a hole), the relation becomes: f min ≥ ( 2r + TU − Tp 2 ) 2 − TL ≤ dr ≤ TU If the external feature is modified to LMC, the relations are: f min ≥ ( 2r − TL − Tp 2 ) 2 − TL ≤ dr ≤ TU If the internal feature is modified to LMC, the relations are: f max ≤ ( 2r − TL + Tp 2 ) 2 − TL ≤ dr ≤ TU 148 A7.3 Other Cases of Mapping There are other possible features like conical features, torroidal features, helical screw feature, composite tolerance specifications, MMC specification on datum, etc. Mapping for the conical case, composite tolerance specification for a cylindrical feature and MMC specification on datum have been discussed in detailed in [Wang (2003)]. A7.4 Example of Mappings An example of applying the mapping relations on a planar feature is shown here (figure A7.4-1) Figure A7.4-1 Size tolerance for a planar feature Using the mapping relations for planar features, following are established by considering the deviation at the four extreme points (corners) of the plane that are nominally at (1.5, 2, 0), (1.5, -2, 0), (-1.5, 2, 0) and (-1.5, -2, 0). -0.08 ≤ ∆z + 1.5*∆θy - 2*∆θx ≤ 0.08 149 -0.08 ≤ ∆z + 1.5*∆θy + 2*∆θx ≤ 0.08 -0.08 ≤ ∆z – 1.5*∆θy + 2*∆θx ≤ 0.08 -0.08 ≤ ∆z – 1.5*∆θy - 2*∆θx ≤ 0.08 The above inequalities result in a diamond shape in deviation space as shown in figure A7.4-2. z 0.08 -0.04 0.053 -0.053 ∆θy 0.04 -0.08 ∆θx Figure A7.4-2 Deviation space for size tolerance of a planar feature 150 Appendix – 8 Implementation: Listing of major modules Program Listing - Main module Attribute VB_Name = "tnp3Main" 'Option Explicit Global Const maxNodes = 999 Global Const maxParts = 999 Global Const x0StartD = 0.001 ' mm Global Const x0StartR = 0.0001 ' rad Global Const nonSingularEps = 0.00001 Type aArtifact id As String aType As String nextArt As Object End Type Type aGap n As Integer 'node f1 As Integer 'from f2 As Integer 'to End Type Type aTorsor rX(3) As Double dX(3) As Double End Type Type xLink fromArt As Integer fromFeature As Integer gap As Integer ' gap node toArt As Integer toFeature As Integer End Type Type myLoop nLoop As Integer fromArt As Integer fromFeature As Integer gap As Integer ' gap node toArt As Integer toFeature As Integer End Type Type xFeature id As String ' Feature id typ As String 'Feature type ref As Integer ' a reference point, generally the center but could be any other point center As Integer ' node number of the center of the Feature LCS(3, 3) As Double ' x=outward normal, y & z on plane DCs nod(10) As Integer ' nodes to define the feature part As Integer tol As tolerance ' tolerance class isDatum As Boolean Ly As Double 'Ly and Lz are lengths of edges along local Y & Z for rectangles Lz As Double 'Ly and Lz are Outer and inner radii for circular-planar End Type Type parts id As String name As String 151 center As Integer 'center node# LCS(3, 3) As Double ' local x, y & z DCs isTerminal As Boolean Features(9) As Integer End Type Type aNode x(3) As Double 'x,y,z coordinates dof(6) As Integer 'degrees of freedom 1=specifed, 0=unspecified knownDeviation As Boolean tor As aTorsor End Type Type xloop typ As String ' typ= 'P'art, 'F'ace, 'G'ap fromArt As Integer fromFeature As Integer gap As Integer toFeature As Integer toArt As Integer End Type Type xCircle x As Single y As Single r As Single End Type Type kMat i As Integer j As Integer id As String End Type Type Vector x(3) As Double End Type Public getFileOked As Boolean Public dofName(6) As String, nCons As Integer Public xFile, eqStr As String, eqNum As Integer Public x0(maxNodes * 6) As Double 'x0 holds the initial value of X Public b0(maxNodes * 6) As Double 'b0 holds the value of b of KX = b Public nCircle As Boolean Public Circles(99) As xCircle Public nParts As Integer Public nNodes As Integer Public nLinks As Integer Public nFeatures As Integer Public LoopCount As Integer Public nPathElements As Integer Public artNow As String Public aParts(maxParts) As parts Public aNodes(maxNodes) As aNode Public aLink(maxParts) As xLink Public aFeatures(maxNodes) As xFeature Public gap(99) As aGap Public nGaps As Integer Public allPaths() As myLoop Public PathList() As String Public UltoPath() As String Public rootArt As Integer Public partSelected As Integer 'used in drawing loopForm Public tTran(6, 6) As Double ' torsor transformation matrix Public kMat() As Double Public KTree As biTree Public dumpTree2File As String 152 Public dumpFile As Integer Public artWindow As artDraw ' was loopForm Public fMainForm As frmMain Sub Main() Dim fLogin As New frmLogin fLogin.Show vbModal If Not fLogin.OK Then 'Login Failed so exit app End End If Unload fLogin Randomize Set fMainForm = New frmMain Set KTree = New biTree nCircle = False fMainForm.Show End Sub Sub processArt(sFile As String) Dim nF As Integer, sLine As String, sx As String, sY As String Dim j As Integer, k As Integer, tnod As Node, Tokens(20) As String Dim i As Integer, ii As Integer nF = FreeFile j = InStr(sFile, ".") sx = Left(sFile, j - 1) sY = StrReverse(sx) 'Get the artifact name from the file name artNow = UCase(Mid(sx, Len(sx) - InStr(sY, "\") + 2)) Open sFile For Input As #nF 'Input #nf, sLine Line Input #nF, sx 'title of the artifact one line fMainForm.ArtName.Caption = sx fMainForm.Caption = sFile fMainForm.Show ' set up the Artifact tree root Set tnod = fMainForm.ArtTree.Nodes.Add(, , "Root", artNow, 1, 2) tnod.EnsureVisible fMainForm.ArtTree.Visible = True fMainForm.ArtName.Visible = True fMainForm.nodeList.Visible = True 'now get the actual artifact definition data nParts = 0 nNodes = 0 nLinks = 0 nFeatures = 0 fMainForm.nodeList.Clear While Not EOF(nF) Line Input #nF, sLine j = getTokens(sLine, Tokens) sx = Tokens(1) 'first token, the controller Select Case sx Case "PART:" ' part definitions nParts = nParts + 1 j = Val(Tokens(2)) aParts(j).id = "P" + Tokens(2) aParts(j).name = Tokens(3) aParts(j).center = Val(Tokens(4)) aParts(j).isTerminal = Val(Tokens(5)) <> 0 'store the LCS of center of each part For i = 1 To 3 For k = 1 To 3 aParts(j).LCS(k, i) = Val(Tokens(5 + (i - 1) * 3 + k)) 153 Next Next Set tnod = fMainForm.ArtTree.Nodes.Add("Root", tvwChild, aParts(j).id, aParts(j).name, 1, 2) tnod.EnsureVisible Case "FEATURE:" 'feature definions nFeatures = nFeatures + 1 i = Val(Tokens(2)) aFeatures(i).id = "F" + Tokens(2) aFeatures(i).typ = Tokens(4) 'if feature type is CYL, then 3 points are reqd. 'p1 , p2 two ends of the axis and f the point where torsor is defined. aFeatures(i).center = Val(Tokens(5)) ' feature center aFeatures(i).ref = Val(Tokens(6)) ' feature reference point for outward normal k = Val(Tokens(3)) 'part number where used aFeatures(i).part = k aParts(k).Features(0) = aParts(k).Features(0) + 1 'one more Feature aParts(k).Features(aParts(k).Features(0)) = i sY = aParts(k).id Set tnod = fMainForm.ArtTree.Nodes.Add(sY, tvwChild, _ sY + aFeatures(i).id, sY + aFeatures(i).id + Tokens(4), 1, 2) tnod.EnsureVisible jj = 0 sY = sY + aFeatures(i).id If Tokens(4) = "PLANE2" Then 'circular-planar feature, get two radii aFeatures(i).Ly = Val(Tokens(7)) aFeatures(i).Lz = Val(Tokens(8)) jj = 2 End If j = j - 6 - jj ' rest of the nodes For ii = 7 + jj To 7 + j + jj - 1 'add the nodes in the tree as well as Featurelist aFeatures(i).nod(0) = aFeatures(i).nod(0) + 1 'increment node count aFeatures(i).nod(aFeatures(i).nod(0)) = Tokens(ii) Set tnod = fMainForm.ArtTree.Nodes.Add(sY, tvwChild, _ sY + "N" + Tokens(ii), "Node:" + Tokens(ii), 3, 4) tnod.EnsureVisible Next Case "LINK:" ' link between part/features nLinks = nLinks + 1 aLink(nLinks).fromArt = aFeatures(Val(Tokens(2))).part aLink(nLinks).fromFeature = Val(Tokens(2)) aLink(nLinks).toFeature = Val(Tokens(3)) aLink(nLinks).gap = Val(Tokens(4)) aLink(nLinks).toArt = aFeatures(Val(Tokens(3))).part ' keep the reverse path as well! nLinks = nLinks + 1 aLink(nLinks).fromArt = aFeatures(Val(Tokens(3))).part aLink(nLinks).fromFeature = Val(Tokens(3)) aLink(nLinks).gap = Val(Tokens(4)) aLink(nLinks).toFeature = Val(Tokens(2)) aLink(nLinks).toArt = aFeatures(Val(Tokens(2))).part 'store the gap definitions nGaps = nGaps + 1 gap(nGaps).n = Val(Tokens(4)) gap(nGaps).f1 = Val(Tokens(2)) gap(nGaps).f2 = Val(Tokens(3)) Case "NODE:" 'nodal data nNodes = nNodes + 1 j = Val(Tokens(2)) aNodes(j).x(1) = Val(Tokens(3)) aNodes(j).x(2) = Val(Tokens(4)) aNodes(j).x(3) = Val(Tokens(5)) ' 'dof(ii)='1' if known/specified disp else 0 For ii = 1 To 6 aNodes(j).dof(ii) = IIf(Trim(Tokens(5 + ii)) = "", 0, 1) 154 Next ' With aNodes(j).tor .rX(1) = Val(Tokens(6)) .rX(2) = Val(Tokens(7)) .rX(3) = Val(Tokens(8)) .dX(1) = Val(Tokens(9)) .dX(2) = Val(Tokens(10)) .dX(3) = Val(Tokens(11)) End With sx = Format(Tokens(2), "0000") + " " For i = 3 To 11 sx = sx + Format(Tokens(i), " 0000.00") Next fMainForm.nodeList.AddItem (sx) Case "MISC:" 'other data - for future use Case "DISP:" 'nodal displacements from prev run/from known sources 'node, rx, ry, rz, dx, dy, dz j = Val(Tokens(2)) For ii = 1 To 6 If aNodes(j).dof(ii) = 1 Then 'known/specified and do nothing Else 'add it If ii < 4 Then ' first 3 rotx aNodes(j).tor.rX(ii) = Val(Tokens(2 + ii)) Else 'last three deltax aNodes(j).tor.dX(ii - 3) = Val(Tokens(2 + ii)) End If End If Next ' Case Else 'for the time being ignore others... End Select Wend ' ' generateLCS ' generate local coordinate system 3 X 3 marix ' for each Feature/features of each part ' 'generate nodal displacements from known values at feature center 'must be called AFTER generateLCS center2Nodes "" ' fMainForm.nodeList.Visible = True fMainForm.NodalButton.Visible = True Close nF End Sub Sub generateLCS() ' Generates LCS of each Feature/feature ' by assuming local X=Outward normal (away from material) ' Y= Vertically up if X is horizontal, else Y= one of the edges ' Z= (X x Y) Dim i, j, k, m, nP, fTyp Dim xLam As Double Dim ve(5) As Vector For nP = 1 To nParts For j = 1 To aParts(nP).Features(0) 'all Features k = aParts(nP).Features(j) fTyp = aFeatures(k).typ If fTyp = "PLANE" Or fTyp = "PLANE2" Then ' ' ve(1)=local-x, ve(2)=local-y, ve(3)=local-z ' ve(0) is the vector from he ref point (generally, center ' of the part) to Feature center ' ve2 = edge 1, ve3=edge 2 ' For m = 1 To 3 155 ve(0).x(m) = aNodes(aFeatures(k).center).x(m) - aNodes(aFeatures(k).ref).x(m) ve(2).x(m) = aNodes(aFeatures(k).nod(1)).x(m) - aNodes(aFeatures(k).nod(2)).x(m) ve(3).x(m) = aNodes(aFeatures(k).nod(2)).x(m) - aNodes(aFeatures(k).nod(3)).x(m) Next If fTyp = "PLANE" Then aFeatures(k).Ly = VNorm(ve(2)) 'length along local y aFeatures(k).Lz = VNorm(ve(3)) 'length along local z End If 'local x as cross product of ve2, ve3 normalized ve(1) = VNormalize(VCross(ve(2), ve(3))) ' check if ve1 is outward or inward If VDot(ve(0), ve(1)) < 0 Then ' angle >90, inward normal, reverse ve(1) ve(1) = VScale(ve(1), -1#) End If ' ' check if x is horizontal, then put y as vertical and z accordingly ' no need - for generic LCS 'If Abs(ve(1).x(1)) = 1 Then ' it's horizontal ' ve(2).x(1) = 0 ' ve(2).x(2) = 1 ' ve(2).x(3) = 0 'Else ve(2) = VNormalize(ve(2)) 'local y 'End If ve(3) = VNormalize(VCross(ve(1), ve(2))) ElseIf fTyp = "CYL" Then 'CYLINDRICAL case ' ' ve(1)=local-x, ve(2)=local-y, ve(3)=local-z ' ve(0)=F-P1, vector from start to the Feature center ' ve(2)=P2-P1, the axis of the cylinder ' aFeatures(k).center = F, Feature-center where torsor is to be defined ' aFeatures(k).nod(1) = P1, cylinder start point on the axis ' aFeatures(k).nod(2) = P2. cylinder end point on the axis ' first find lambda xLam and local X-axis at F ' xLamda is found to make P (=P1+xLam(P2-P1)) such that ' (F-P) _|_ to P2-P1 ' 'store length L=|P2-P1| in LZ and radius R=|F-P| in LY ' For m = 1 To 3 ve(3).x(m) = aNodes(aFeatures(k).center).x(m) 'F ve(4).x(m) = aNodes(aFeatures(k).nod(1)).x(m) 'P1 ve(0).x(m) = ve(3).x(m) - ve(4).x(m) 'F-P1 ve(2).x(m) = aNodes(aFeatures(k).nod(2)).x(m) - ve(4).x(m) 'P2-P1 Next aFeatures(k).Ly = VNorm(ve(2)) ' store length in LY xLam = VDot(ve(0), ve(2)) / VNorm(ve(2)) ^ 2 ve(4) = VAdd(ve(4), VScale(ve(2), xLam)) 've(4) is now P aFeatures(k).Lz = VNorm(VDiff(ve(3), ve(4))) 'store radius in LZ ve(1).x(1) = aNodes(aFeatures(k).center).x(1) - aNodes(aFeatures(k).nod(2)).x(1) - xLam * ve(2).x(1) ve(1).x(2) = aNodes(aFeatures(k).center).x(2) - aNodes(aFeatures(k).nod(2)).x(2) - xLam * ve(2).x(2) ve(1).x(3) = aNodes(aFeatures(k).center).x(3) - aNodes(aFeatures(k).nod(2)).x(3) - xLam * ve(2).x(3) ve(1) = VNormalize(ve(1)) 'local X radially out(in)ward If aFeatures(k).ref = 1 Then 'hole else shaft ve(1) = VScale(ve(1), -1#) ' inward normal for hole End If ve(3) = VNormalize(ve(2)) 'local Z along axis of cylinder ve(2) = VCross(ve(3), ve(1)) 'local Y 156 End If 'Now store the LCS in the Featuredata With aFeatures(k) For i = 1 To 3 For m = 1 To 3 'was .LCS(i, m) = ve(i).x(m) changed to below nilmani 6/20/02 .LCS(m, i) = ve(i).x(m) Next Next End With Next 'Feature Next 'part End Sub Public Sub genCostFun() Dim cost As String, i As Integer, j As Integer, k As Integer, m As String Dim xL As Vector, xW As Vector, xTem As Vector, w1 As Double, w2 As Double Dim vt1 As Vector, vt2 As Vector, kc As Integer Dim CrLf As String, ks As String CrLf = Chr(13) + Chr(10) cost = " yy = 0;" + CrLf For i = 1 To nParts 'all parts For j = 1 To aParts(i).Features(0) ' take all features of this part k = aParts(i).Features(j) 'take next feature m = aFeatures(k).typ kc = aFeatures(k).center 'center of the Feature at which the deviations are defined Select Case m Case "PLANE" 'rectangular planar 'we need delx, thetay, thetaz and the 'corresponding length of the two sides 'deltax is x(6*k1) +4 'thetay is x(6*k1) +2 'thetaz is x(6*k1) +3 vt1.x(1) = aNodes(aFeatures(k).nod(1)).x(1) vt1.x(2) = aNodes(aFeatures(k).nod(1)).x(2) vt1.x(3) = aNodes(aFeatures(k).nod(1)).x(3) vt2.x(1) = aNodes(aFeatures(k).nod(2)).x(1) vt2.x(2) = aNodes(aFeatures(k).nod(2)).x(2) vt2.x(3) = aNodes(aFeatures(k).nod(2)).x(3) xL = VDiff(vt1, vt2) vt1.x(1) = aNodes(aFeatures(k).nod(3)).x(1) vt1.x(2) = aNodes(aFeatures(k).nod(3)).x(2) vt1.x(3) = aNodes(aFeatures(k).nod(3)).x(3) xW = VDiff(vt1, vt2) w1 = VNorm(xL) w2 = VNorm(xW) 'use transpose - nilmani 6/20/02 xTem.x(1) = aFeatures(k).LCS(1, 2) ' xTem is the local y-axis xTem.x(2) = aFeatures(k).LCS(2, 2) xTem.x(3) = aFeatures(k).LCS(3, 2) If VDot(xTem, xL) = 0 Then 'this side is perpendicular to y-axis ' keep w1 and w2 as it it Else ' reverse the w values w1 = w2 w2 = VNorm(xL) End If 'use w1 with theta-y and w2 with theta-z 'check if the values of x are known If aNodes(kc).dof(4) = 1 Then 'known delta-x ks = Format(aNodes(kc).tor.dX(1)) Else 157 ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")" End If cost = cost + " yy = yy + " + Str(w1 * w2) + " /(" + Str(nonSingularEps) + " + abs(" + ks If aNodes(kc).dof(2) = 1 Then 'known theta-y ks = Format(aNodes(kc).tor.rX(2)) Else ks = "x(" + Format(kc * 6 + 2 - 6, "0") + ")" End If If w1 > 0 Then cost = cost + "+" + Str(w1) + "*" + ks End If If aNodes(kc).dof(3) = 1 Then 'known theta-z ks = Format(aNodes(kc).tor.rX(3)) Else ks = "x(" + Format(kc * 6 + 3 - 6, "0") + ")" End If If w2 > 0 Then cost = cost + "+" + Str(w2) + "*" + ks End If cost = cost + " ));" + CrLf Case "PLANE2" 'Circular Planar 'Using the formula: Pi(R1^2-R2^2)/(e0+deltaX+R1*sqrt(thetaY^2+thetaZ^2)) 'needs R1=LY , R2=LZ as input 'deltax is x(6*k1) +4 'thetay is x(6*k1) +2 'thetaz is x(6*k1) +3 'compute w1 w1 = 3.14159265 * (aFeatures(k).Ly ^ 2 - aFeatures(k).Lz ^ 2) 'check if the values of deltas are known If aNodes(kc).dof(4) = 1 Then 'known delta-x ks = Format(aNodes(kc).tor.dX(1)) Else ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")" End If cost = cost + " yy = yy + " + Format(w1, "0.00") + " /(" + Str(nonSingularEps) + " + abs(" + ks If aNodes(kc).dof(2) = 1 Then 'known theta-y ks = Format(aNodes(kc).tor.rX(2)) Else ks = "x(" + Format(kc * 6 + 2 - 6, "0") + ")" End If cost = cost + "+(" + ks + "^2" If aNodes(kc).dof(3) = 1 Then 'known theta-z ks = Format(aNodes(kc).tor.rX(3)) Else ks = "x(" + Format(kc * 6 + 3 - 6, "0") + ")" End If cost = cost + " + " + Format(aFeatures(k).Ly, "0.00") + " * " + ks + "^2 )^0.5" cost = cost + " ));" + CrLf Case "CYL" 'using the formula ' 2PiRL/[e0 + delR + max((delY^2+delZ^2)^0.5, ((L*tY+delZ)^2+(-L*tZ+delY)^2)^0.5) w1 = 2 * 3.14159265 * aFeatures(k).Ly * aFeatures(k).Lz 'check if the values of deltas are known 'delta-x and theta-y ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")^2" ks2 = "( x(" + Format(kc * 6 + 4 - 6, "0") + ") +" + Format(aFeatures(k).Ly, "0.00") + " * " + "x(" + Format(kc * 6 + 2 - 6, "0") + ") )^2" 'delta-y and theta-x ks = ks + " + x(" + Format(kc * 6 + 5 - 6, "0") + ")^2" ks2 = ks2 + " + ( x(" + Format(kc * 6 + 5 - 6, "0") + ") + " + Format(aFeatures(k).Ly, "0.00") + " * " + "x(" + Format(kc * 6 + 1 - 6, "0") + ") )^2" ks = "(" + ks + ")^0.5" ks2 = "(" + ks2 + ")^0.5" cost = cost + " yy = yy + " + Format(w1, "0.00") + " /(" + Str(nonSingularEps) + " + max(" + ks + "," + ks2 158 cost = cost + " );" + CrLf Case 3 'spherical Case Else 'to be defined End Select Next j Next i 'MsgBox cost, vbOKCancel, "Your Cost Function Defined..." i = FreeFile sf = getFiles.sFiles(3).Text Open sf For Output As #i 'xFile = "C:\tmp\costfun" + Format(Date, "mmmdd") + ".m" 'xf = InputBox("Save Cost Function as", , xFile) 'Open xFile For Output As #i Print #i, "function yy = costfun (x)" Print #i, "% deviation dependent cost of manufacturing formulation" Print #i, "% generated from tnp3. Nilmani Pramanik / "; Format(Now, "MMM DD, YYYY HH:MM:SS") Print #1, "% for tracing function execution, remove the % signs from following and the last lines." Print #i, " global CC;" Print #i, cost Print #i, " CC=CC+1;"; Print #i, " if mod(CC,100) == 0" Print #i, " CC" Print #i, " yy" Print #i, " end" Print #i, "" Close #i End Sub Function getTokens(sx As String, Tokens) As Integer Dim sY As String, j As Integer, k As Integer 'Convert a line input into tokens For k = 1 To 20: Tokens(k) = "": Next k=1 sY = sx j = InStr(sY, ",") If j > 0 Then While j > 0 Tokens(k) = Trim(Left(sY, j - 1)) sY = Mid(sY, j + 1) j = InStr(sY, ",") k=k+1 Wend End If Tokens(k) = Trim(sY) getTokens = k End Function Sub generateLoops(dummy As String) Dim i, j, k, m As Integer Dim ii, jj, kk As Integer ReDim Preserve PathList(1) ReDim Preserve UltoPath(1) ReDim Preserve allPaths(1) LoopCount = 0 nPathElements = 0 PathList(0) = "" UltoPath(0) = "" fMainForm.LoopList.Clear For i = 1 To nParts 'all parts If aParts(i).isTerminal Then ' start from this part For j = 1 To aParts(i).Features(0) ' take all features of this part k = aParts(i).Features(j) 'next feature(Feature) For m = 1 To nLinks 'search the links to locate a connection If aLink(m).fromArt = i And aLink(m).fromFeature = k And aLink(m).toFeature > 0 And aLink(m).toArt > 0 Then ' a valid connection found 'MsgBox "generate path: P" & i & " F" & k & " to F" & aLink(m).toFeature & " P" & aLink(m).toArt rootArt = i 'keep track of the starting part number ... 'now generate all loops/paths from this feature 159 getLoops i, k, aLink(m).toArt, aLink(m).toFeature, "(" + Trim(i) + "," + _ Trim(k) + "," + Trim(aLink(m).toArt) + "," + Trim(aLink(m).toFeature) + ")" End If Next Next End If Next 'MsgBox Str(LoopCount) + " Total Paths/Loops have been generated." For i = 1 To nPathElements With allPaths(i) Debug.Print "El:"; i, "Loop:"; .nLoop, .fromArt, .fromFeature, .gap, .toArt, .toFeature End With Next Debug.Print For i = 1 To LoopCount Debug.Print "Path:"; i, PathList(i) Debug.Print "Ulto:"; i, UltoPath(i) Debug.Print Next i=1 End Sub '* '* GetLoops(): recursively generates all paths/loop '* Sub getLoops(m1art, m1Feature, m2art, m2Feature, oldPath) ' called with: from_art, from_Feature, to_art, to_Feature, old_path Dim pathNow As String, j As Integer, k As Integer, m As Integer Dim savedHere As Boolean, ii As Integer pathNow = oldPath 'MsgBox oldPath 'check after entry savedHere = False If pathNow <> "" Then 'not the first entry - check for termination of this branch If m2art = rootArt Then ' we are back to the root. this loop is finished! saveLoop 0, pathNow, m2art + 0 ' & return savedHere = True ElseIf aParts(m2art).isTerminal Then ' this part is a terminal; saveLoop 0, pathNow, m2art + 0 ' this path is done savedHere = True ElseIf innerLoop(pathNow, m2art + 0) Then 'this part is already in pathNow saveLoop 1, pathNow, m2art + 0 'an inner loop has been detected, save loop, go back savedHere = True End If End If If Not savedHere Then ' go to the next part/level For j = 1 To aParts(m2art).Features(0) ' take all features of this part k = aParts(m2art).Features(j) 'next feature For m = 1 To nLinks 'search the links to locate a connection If aLink(m).fromArt = m2art And aLink(m).fromFeature = k Then If aLink(m).toArt = m1art And aLink(m).toFeature = m1Feature Then 'ignore entry path Else ' got a new path; try it 'MsgBox "generate path: P" & m2art & " F" & k & " to F" & aLink(m).toFeature & " P" & aLink(m).toArt 'now generate all loops/paths from this feature getLoops m2art, k, aLink(m).toArt, aLink(m).toFeature, pathNow + "(" + Trim(m2art) + "," + Trim(k) + "," + Trim(aLink(m).toArt) + "," + Trim(aLink(m).toFeature) + ")" End If End If Next Next End If End Sub '* Sub removeLoop() ReDim Preserve PathList(1) ReDim Preserve UltoPath(1) PathList(0) = "" 160 UltoPath(0) = "" LoopCount = 0 End Sub ' '******************* ' Sub saveLoop(ac As Integer, pp As String, aa As Integer) Dim nP As String, nC As Integer, nx As String Dim xpath As String, i As Integer, xx(4) As Integer, noPath As Boolean xpath = pp If ac = 0 Then 'MsgBox "Saving external loop! " + pp Else i = InStr(pp, "(" + Trim(Str(aa)) + ",") 'only a part of the path.... xpath = Mid(xpath, i) 'MsgBox "Saving inner loop in " + xpath End If noPath = True If LoopCount > 0 Then ' there are some elements, check for duplicacy For i = 1 To LoopCount If xpath = PathList(i) Then ' found a duplicate path noPath = False 'don't add Exit For End If If xpath = UltoPath(i) Then ' found a duplicate in the reverse path noPath = False 'don't add Exit For End If Next End If If noPath Then 'add it LoopCount = LoopCount + 1 ReDim Preserve PathList(LoopCount + 1) 'MsgBox "Saving Loop:" + Str(LoopCount) + ":" + xpath PathList(LoopCount) = xpath ' add this loop to the display element LoopList fMainForm.LoopList.AddItem ("Path-" + Format(LoopCount, "000") + ":" + xpath) ' ' save all elements in this path to allPath and generate the reverse path ' '********* add to allPaths and the reverse path. ' ypath = Mid(xpath, 2) 'n1,n2,n3,n4)(n1,n2,n3,n4).... xpath = "" 'it will hold ultopath While ypath <> "" i = InStr(ypath, ")") zpath = Left(ypath, i - 1) 'n1,n2,n3,n4 ypath = Mid(ypath, i + 2) ' next lot n1,n2,n3,n4).... i = InStr(zpath, ",") xx(1) = Val(Left(zpath, i - 1)) 'n1 from p zpath = Mid(zpath, i + 1) i = InStr(zpath, ",") xx(2) = Val(Left(zpath, i - 1)) 'n2 from f zpath = Mid(zpath, i + 1) i = InStr(zpath, ",") xx(3) = Val(Left(zpath, i - 1)) 'n3 to p zpath = Mid(zpath, i + 1) xx(4) = Val(zpath) 'n4 to f nPathElements = nPathElements + 1 ReDim Preserve allPaths(nPathElements + 1) With allPaths(nPathElements) .nLoop = LoopCount .fromArt = xx(1) .fromFeature = xx(2) .toArt = xx(3) .toFeature = xx(4) For ii = 1 To nGaps 161 If (gap(ii).f1 = xx(2) And gap(ii).f2 = xx(4) Or _ (gap(ii).f2 = xx(2) And gap(ii).f1 = xx(4))) Then .gap = gap(ii).n End If Next End With xpath = "(" + Trim(xx(3)) + "," + Trim(xx(4)) + "," + _ Trim(xx(1)) + "," + Trim(xx(2)) + ")" + xpath Wend ReDim Preserve UltoPath(LoopCount + 1) UltoPath(LoopCount) = xpath End If End Sub Function innerLoop(mpath As String, mart As Integer) As Boolean innerLoop = InStr(mpath, "(" + Trim(mart)) > 0 End Function Sub generateEquations() Dim nPath As Integer, nn As Integer Dim partZero As Integer, jj As Integer Dim n As Integer, m As Integer If KTree.nCount > 0 Then If MsgBox("Remove existing matrix and generate new?", vbYesNoCancel) = vbYes Then Set KTree = Nothing 'remove all data and start fresh Set KTree = New biTree KTree.nCount = 0 KTree.root = 0 Else Beep Exit Sub End If End If fMainForm.MousePointer = vbHourglass ' 'add some random nodes in the tree to make it grow both ways ... 'addRandNodes 1000 - no need anymore ' KTree.addNode LoopCount * 6, nNodes * 6, "R" + Format(LoopCount * 6, "0000") + "C" + Format(nNodes * 6, "0000"), 0 ' 'now do the real stuff: use allPaths() & loopCount and nPathElements ' nPath = 0 partZero = 0 nn = nPathElements 'For nn = nPathElements To 1 Step -1 'do in reverse to make the tree balanced While nn > 0 If nPath <> allPaths(nn).nLoop Then 'start computing for a new path/loop nPath = allPaths(nn).nLoop 'first locate the begining of the loop n=0 While (nn > n) And (allPaths(nn - n).nLoop = nPath) n=n+1 Wend n=n-1 nn = nn - n 'note down the starting part so that rest of the torsors 'could be transformed to the center of that part partZero = allPaths(nn).fromArt End If For m = 0 To n 'part disp torsor to global TorTransform "P1", allPaths(nn + m).fromArt, nPath, partZero 'feature1 torsor to center TorTransform "F1", allPaths(nn + m).fromFeature, nPath, partZero 162 'gap torsor to part1's center TorTransform "G", allPaths(nn + m).gap, nPath, partZero 'feature2 torsor to center TorTransform "F2", allPaths(nn + m).toFeature, nPath, partZero 'part2 torsor to center TorTransform "P2", allPaths(nn + m).toArt, nPath, partZero Next nn = nn - 1 Wend 'Next ' ' now generate the geometric continuity constraints ' ' GenerateGeoConstraints ' ' first initialize x0 & b0 ' For n = 1 To nNodes For m = 1 To 6 jj = (n - 1) * 6 + m If aNodes(n).dof(m) = 1 Then 'known value If m < 4 Then 'rot else disp x0(jj) = aNodes(n).tor.rX(m) Else x0(jj) = aNodes(n).tor.dX(m - 3) End If Else x0(jj) = IIf(m < 4, x0StartR, x0StartD) End If Next Next ' For n = 1 To LoopCount For m = 1 To 6 b0((n - 1) * 6 + m) = 0 Next Next ' 'nCons keeps trac of additional constraints for the known values 'in the form KMatrix(ncons,j)=1 nCons = LoopCount * 6 'now eliminate the known x's 'Print #dumpFile, "Nodal DOF eliminated: For use in KMatrix" Print #dumpFile, "Temporarily eliminate known x routine being bypassed" 'KTree.EliminateKnownX 1 'trying without eliminating the k values for knwn x's ' later adding x=c type constraints 'dump the adjusted K matrix xFile = FreeFile sf = getFiles.sFiles(0).Text Open sf For Output As #xFile 'Open "g:\program\tmp\matlab\kMatrix.dat" For Output As #xFile KTree.listTree 1 'write the K matrix in a file for debugging If eqStr <> "" Then Print #dumpFile, eqStr eqStr = "" End If 'augment KMatrix with the known x-es nCons = LoopCount * 6 For n = 1 To nNodes 163 For m = 1 To 6 If aNodes(n).dof(m) = 1 Then ' there is a known value nCons = nCons + 1 Print #xFile, nCons, (n - 1) * 6 + m, 1# End If Next Next Close xFile ' next print x0 ' first the nodal data xFile = FreeFile sf = getFiles.sFiles(1).Text Open sf For Output As #xFile For n = 1 To nNodes For m = 1 To 6 Print #xFile, x0((n - 1) * 6 + m) ' write only the values Next Next Close xFile ' ' now print b0 xFile = FreeFile sf = getFiles.sFiles(2).Text Open sf For Output As #xFile For n = 1 To LoopCount For m = 1 To 6 Print #xFile, b0((n - 1) * 6 + m) ' write only the values Next Next For n = 1 To nCons Print #xFile, b0(n) ' write only the values Next Close xFile 'done fMainForm.MousePointer = vbArrow End Sub Function Local2Global(Cat As String, nPF As Integer, dX As Vector) As Vector 'cat="P(art)"/"F(eature)" for LCS reference, nPF=part/feature number Dim xTem As Vector, j As Integer, k As Integer For j = 1 To 3 xTem.x(j) = 0 For k = 1 To 3 xTem.x(j) = xTem.x(j) + dX.x(k) * IIf(Cat = "P", aParts(nPF).LCS(j, k), aFeatures(nPF).LCS(j, k)) Next Next ' add details as reqd. Local2Global = xTem End Function Sub TorTransform(Cat As String, nPF As Integer, nPa As Integer, pZero As Integer) Dim nRow As Integer, nCol As Integer, nFac As Integer Dim kie As String, nR As Integer, nC As Integer, nodNow As Integer Dim delx As Vector, nZero As Integer, xLCS(3, 3) As Double Dim kTemp(6, 6) As Double, nGap As Integer, Required As Boolean ' delx.x(1) = 0 delx.x(2) = 0 delx.x(3) = 0 Required = True nRow = nPa 'current loop# forms 6 rows: (nPa-1)*6+1,+2,...nPa*6-1, nPa*6 nZero = aParts(pZero).center ' reference point on the base part nFac = 1# Select Case Cat Case "P1" 'from part If nPF <> pZero Then 'no need - already taken in prev P2 164 Required = False Else 'local to global conversion nCol = aParts(nPF).center For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aParts(nPF).LCS(nR, nC) '3x3 local coordinate system Next Next End If Case "F1" 'from feature/Feature nCol = aFeatures(nPF).center For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aFeatures(nPF).LCS(nR, nC) '3x3 local coordinate system Next Next Case "G" nCol = nPF 'the gap node itself 'first locate the gap number nGap = 0 For i = 1 To nGaps If nCol = gap(i).n Then nGap = i Exit For End If Next If nGap = 0 Then MsgBox "Gap node:" & nCol & " not found in Gap array!" Stop End If 'take the LCS of Feature1 as LCS of the gap For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aFeatures(gap(nGap).f1).LCS(nR, nC) '3x3 local coordinate system Next Next Case "F2" nCol = aFeatures(nPF).center For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aFeatures(nPF).LCS(nR, nC) '3x3 local coordinate system Next Next nFac = -1 Case "P2" If nPF <> pZero Then 'needs transformation to partZero 'form trans matrix End If 'next local to global conversion 'test matrix formation nCol = aParts(nPF).center For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aParts(nPF).LCS(nR, nC) '3x3 local coordinate system Next Next nFac = -1 End Select If Cat <> "P1" Then delx.x(1) = aNodes(nCol).x(1) - aNodes(nZero).x(1) delx.x(2) = aNodes(nCol).x(2) - aNodes(nZero).x(2) delx.x(3) = aNodes(nCol).x(3) - aNodes(nZero).x(3) End If Debug.Print "Cat, npf, row, col", Cat, nPF, nRow, nCol 165 If Required Then 'do actual posting else ingore ' ' transform to the origin and rotate the local values ' to global system and add to the corresponding cells in the global KMatrix ' ' First 3 rows - theta/rotational componenets ' For nR = 1 To 3 For nC = 1 To 3 kTemp(nR, nC) = xLCS(nR, nC) kTemp(nR, nC + 3) = 0 Next Next ' ' Last 3 rows - delta/linear components ' For nR = 1 To 3 kTemp(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3) kTemp(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1) kTemp(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2) kTemp(3 + nR, 4) = kTemp(nR, 1) kTemp(3 + nR, 5) = kTemp(nR, 2) kTemp(3 + nR, 6) = kTemp(nR, 3) Next ' ' Put the 36 elements in their proper home in KMatrix ' For nR = 1 To 6 For nC = 1 To 6 kie = "R" + Format((nRow - 1) * 6 + nR, "0000") + "C" + Format((nCol - 1) * 6 + nC, "0000") 'kie = "R" + Format(nRow, "0000") + "C" + Format(nCol, "0000") + Format((nRow - 1) * 6 + nC, "00000") + Format((nCol 1) * 6 + nR, "00000") 'Debug.Print nC; nR; kie KTree.addNode (nRow - 1) * 6 + nR, (nCol - 1) * 6 + nC, kie, kTemp(nR, nC) * nFac Next Next End If End Sub Function torTran(told As aTorsor, delx As Vector) As aTorsor Dim tempt As aTorsor tempt.rX(1) = told.rX(1) tempt.rX(2) = told.rX(2) tempt.rX(3) = told.rX(3) tempt.dX(1) = told.dX(1) + delx.x(2) * told.rX(3) - delx.x(3) * told.rX(2) tempt.dX(2) = told.dX(2) + delx.x(3) * told.rX(1) - delx.x(1) * told.rX(3) tempt.dX(3) = told.dX(3) + delx.x(1) * told.rX(2) - delx.x(2) * told.rX(1) torTran = tempt End Function '************** Sub center2Nodes(xf As String) 'this sub converts the deviation torsors from the center of a Feature/feature node 'where the torsor is defined to the nodal points that define the edges 'save after converting to global frame ' Dim nFile As Integer If xf <> "" Then nFile = FreeFile Open xf For Output As nFile Print #nFile, " Values are in local coordinates" Print #nFile, "Feature Node dx dy dz" 166 End If Dim i, j, k, m, n Dim delx As aTorsor, dX As Vector 'try this these selected features first then generalize Dim xFeature(10) As Integer xFeature(1) = 1: xFeature(2) = 2: xFeature(3) = 3: xFeature(4) = 9: xFeature(5) = 10: xFeature(6) = 11: xFeature(7) = 13: xFeature(8) = 14: xFeature(9) = 15 Print #dumpFile, "Center to nodes disp:" Print #dumpFile, "Feature Node dx dy dz" For j = 1 To 9 'nFeatures k = aFeatures(j).center k = aFeatures(xFeature(j)).center delx = aNodes(k).tor For i = 1 To aFeatures(xFeature(j)).nod(0) 'all nodes n = aFeatures(xFeature(j)).nod(i) If aNodes(n).knownDeviation Then 'no need to calculate ' keep specified deviations Else ' convert the deviation at center to this node along local-x dX.x(1) = aNodes(n).x(1) - aNodes(k).x(1) dX.x(2) = aNodes(n).x(2) - aNodes(k).x(2) dX.x(3) = aNodes(n).x(3) - aNodes(k).x(3) delx = aNodes(k).tor delx.dX(2) = 0 ' keep only dx, ry, rz delx.dX(3) = 0 delx.rX(1) = 0 delx = torTran(delx, dX) If xf <> "" Then Print #nFile, xFeature(j), n, delx.dX(1), delx.dX(2), delx.dX(3) End If 'convert the dx'es into global coordinates dX.x(1) = delx.dX(1) dX.x(2) = delx.dX(2) dX.x(3) = delx.dX(3) dX = Local2Global("F", xFeature(j), dX) With aNodes(n).tor .dX(1) = .dX(1) + dX.x(1) .dX(2) = .dX(2) + dX.x(2) .dX(3) = .dX(3) + dX.x(3) End With Print #dumpFile, Format(j, "### "); Format(n, "### "); Format(dX.x(1), "##.### "); Format(dX.x(2), "##.### "); Format(dX.x(3), "##.###") End If Next ' node of this feature Next 'feature Print #dumpFile, "End of Center to nodes disp:" If xf <> "" Then Close #nFile End If End Sub ' Sub mapDev2Tol() 'convert deviations into corresponding tolerance zones ' Dim n As Integer, m As Integer, tx As String For n = 1 To nFeatures tx = aFeatures(n).tol.tolType Select Case tx Case "Size" 'find the upper and lower limits plus-minus sizes m = aFeatures(n).center a = aFeatures(n).Ly b = aFeatures(n).Lz With aNodes(m).tor delx(1) = .dX(1) + .rX(3) * b + .rX(2) * a delx(2) = .dX(1) + .rX(3) * b - .rX(2) * a delx(3) = .dX(1) - .rX(3) * b + .rX(2) * a delx(4) = .dX(1) - .rX(3) * b - .rX(2) * a 167 End With xmi = Abs(Min(delx(1), delx(2), delx(3), delx(4))) xma = Abs(Max(delx(1), delx(2), delx(3), delx(4))) aFeatures(n).tol.tolValue(1) = xma aFeatures(n).tol.tolValue(2) = xmi Case "Form" Case "Location" Case "Orientation" Case "Runout" Case "Profiel" Case Else End Select Next End Sub '---------------Sub GenerateGeoConstraints() ' ' Modified from sub TorTransform to generates geometric continuity constraints for ' nodes commom to features of a part. Nilmani/June 20, 2002 ' Dim nRow As Integer, nCol As Integer, nFac As Integer, nP As Integer Dim kie As String, nR As Integer, nC As Integer, nodNow As Integer, nn As Integer Dim delx As Vector, nZero As Integer, nZero2 As Integer, xLink(3, 3) As Double Dim kTemp(6, 6) As Double, kTemp2(6, 6) As Double, nF As Integer, nF2 As Integer Dim xLCS(3, 3) As Double, nNod As Integer, nNod2 As Integer Dim nFeature As Integer, nFeature2 As Integer, actF(99) As Boolean ' ' use these temporary list to check the routine, generalize later actF(1) = True: actF(2) = True: actF(3) = True: actF(9) = True: actF(10) = True actF(11) = True: actF(13) = True: actF(14) = True: actF(15) = True ' delx.x(1) = 0: delx.x(2) = 0: delx.x(3) = 0 ' ' put these constraints after the asm constraints. nRow = LoopCount * 6 ' there are loopcount*6 equations ' 'Generate 3 equations for rows: nRow, nRow+1, nRow+2 ' For nP = 1 To nParts ' do for all parts For nF = 1 To aParts(nP).Features(0) ' for all Features of this part nFeature = aParts(nP).Features(nF) 'next Feature If actF(nFeature) Then 'remove later nZero = aFeatures(nFeature).center For nn = 1 To aFeatures(nFeature).nod(0) 'all nodes defining this feature nNod = aFeatures(nFeature).nod(nn) 'next node For nF2 = 1 To aParts(nP).Features(0) 'check other features If nF <> nF2 Then 'it's a different feature, check it nFeature2 = aParts(nP).Features(nF2) If actF(nFeature2) Then 'remove later nZero2 = aFeatures(nFeature2).center For nn2 = 1 To aFeatures(nFeature2).nod(0) 'all nodes of this feature nNod2 = aFeatures(nFeature2).nod(nn2) If nNod2 = nNod Then ' a nn is a node common to nF and nF2 'increment the row number 'nRow = nRow + 1 'MsgBox "nRow Part Feature Node Feature:" & nRow & ", " & nP & ", " & nF & ", " & nn & ", " & nF2 Debug.Print "nRow Part Feature Node Feature:" & nRow & ", " & nP & ", " & nFeature & ", " & nNod & ", " & nFeature2 nCol = nn 'columns for these ' first transform t at nZero to nn For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aFeatures(nFeature).LCS(nR, nC) '3x3 local coordinate system Next Next nR delx.x(1) = aNodes(nNod).x(1) - aNodes(nZero).x(1) delx.x(2) = aNodes(nNod).x(2) - aNodes(nZero).x(2) 168 delx.x(3) = aNodes(nNod).x(3) - aNodes(nZero).x(3) 'Debug.Print "Cat, npf, row, col", Cat, npf, nRow, nCol ' transform and rotate the local values to global system ' and add to the corresponding cells in the global KMatrix ' First 3 rows - theta/rotational componenets ' For nR = 1 To 3 For nC = 1 To 3 kTemp(nR, nC) = xLCS(nR, nC) kTemp(nR, nC + 3) = 0 Next Next nR ' Last 3 rows - delta/linear components ' For nR = 1 To 3 kTemp(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3) kTemp(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1) kTemp(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2) kTemp(3 + nR, 4) = kTemp(nR, 1) kTemp(3 + nR, 5) = kTemp(nR, 2) kTemp(3 + nR, 6) = kTemp(nR, 3) Next nR ' ' then transform t at nZero2 to nn2 ' For nR = 1 To 3 For nC = 1 To 3 xLCS(nR, nC) = aFeatures(nFeature2).LCS(nR, nC) '3x3 local coordinate system Next Next nR delx.x(1) = aNodes(nNod2).x(1) - aNodes(nZero2).x(1) delx.x(2) = aNodes(nNod2).x(2) - aNodes(nZero2).x(2) delx.x(3) = aNodes(nNod2).x(3) - aNodes(nZero2).x(3) ' For nR = 1 To 3 For nC = 1 To 3 kTemp2(nR, nC) = xLCS(nR, nC) kTemp2(nR, nC + 3) = 0 Next nC Next nR ' Last 3 rows - delta/linear components ' For nR = 1 To 3 kTemp2(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3) kTemp2(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1) kTemp2(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2) kTemp2(3 + nR, 4) = kTemp2(nR, 1) kTemp2(3 + nR, 5) = kTemp2(nR, 2) kTemp2(3 + nR, 6) = kTemp2(nR, 3) Next nR ' finally post these terms in KTree ' ' 3 rows corresponding to nZero For nR = 1 To 3 For nC = 1 To 6 kie = "R" + Format(nRow + nR, "0000") + "C" + Format((nZero - 1) * 6 + nC, "0000") KTree.addNode nRow + nR, (nZero - 1) * 6 + nC, kie, kTemp(nR, nC) Next nC Next nR ' next same 3 rows corresponding to columns for nZero2 with negative values For nR = 1 To 3 For nC = 1 To 6 kie = "R" + Format(nRow + nR, "0000") + "C" + Format((nZero2 - 1) * 6 + nC, "0000") KTree.addNode nRow + nR, (nZero2 - 1) * 6 + nC, kie, -kTemp2(nR, nC) Next nC Next nR nRow = nRow + 3 169 ' End If Next nn2 End If End If ' active features Next nF2 Next nn End If 'active features Next nF Next nP nC = 1 End Sub 170 Appendix - 9 Tolerance Synthesis Example –1: A 3-block system 1. Input data listing: (file: Art3M2-Oct22.art) !A PLANAR 3-BLOCK ARTIFACT (3D) Model - 2 ! !Part #, Description, Center Node, Terminal?, LCS 9 values(11,12,13,....32,33) PART:, 1, MAIN BLOCK, 1, 1, 1,0,0,0,1,0,0,0,1 PART:, 2, LEFT BLOCK, 5, 0, 1,0,0,0,1,0,0,0,1 PART:, 3, RIGHT BLOCK, 12, 0, 1,0,0,0,1,0,0,0,1 ! ! FACE PART TYPE CENTER REF NODES/vertices FEATURE:, 1, 1, PLANE, 2, 20, 19,21,35,34 FEATURE:, 2, 1, PLANE, 8, 1, 32,33,35,34 FEATURE:, 3, 1, PLANE, 17, 27, 30,31,33,32 FEATURE:, 4, 1, PLANE, 29, 1, 30,31,28,27 FEATURE:, 5, 1, PLANE, 53, 1, 27,28,26,25 FEATURE:, 6, 1, PLANE, 24, 1, 25,26,23,22 FEATURE:, 7, 1, PLANE, 54, 1, 22,23,20,18 FEATURE:, 8, 1, PLANE, 55, 1, 18,20,21,19 FEATURE:, 9, 2, PLANE, 4, 5, 36,37,52,51 FEATURE:, 10, 2, PLANE, 6, 5, 41,42,52,51 FEATURE:, 11, 2, PLANE, 9, 5, 41,42,40,39 FEATURE:, 12, 2, PLANE, 38, 5, 39,40,37,36 FEATURE:, 13, 3, PLANE, 11, 12, 45,46,44,43 FEATURE:, 14, 3, PLANE, 13, 12, 45,46,48,47 FEATURE:, 15, 3, PLANE, 15, 12, 47,48,50,49 FEATURE:, 16, 3, PLANE, 56, 12, 43,44,50,49 ! !LINK: FROM FEATURE, TO FEATURE, GAP NODE, DOF, OTHER POINTS OF INTEREST LINK:,1, 9,3 LINK:,2,10,7 LINK:,2,14,14 LINK:,3,15,16 LINK:,11,13,10 ! !NODE X Y Z RX RY RZ DX DY DX (0=known/specified, ""=unknown) NODE:,1,0,10,0,0,0,0,0,0,0 NODE:,2,-60,45,0, 0,,,,0,0 NODE:,3,-60,45,0, 0,,,,0,0 NODE:,4,-60,45,0, 0,,,,0,0 NODE:,5,-30,45,0, ,,,,0,0 NODE:,6,-30,25,0, 0,,,,0,0 NODE:,7,-30,25,0, 0,,,,0,0 NODE:,8,0,25,0, 0,,,,0,0 NODE:,9,0,45,0, 0,,,,0,0 NODE:,10,0,45,0, 0,,,,0,0 NODE:,11,0,45,0, 0,,,,0,0 NODE:,12,20,45,0, ,,,,0,0 NODE:,13,20,25,0, 0,,,,0,0 NODE:,14,20,25,0, 0,,,,0,0 NODE:,15,40,45,0, 0,,,,0,0 NODE:,16,40,45,0, 0,,,,0,0 NODE:,17,40,45,0, 0,,,,0,0 NODE:,18,-90,80,20,0,0,0,0,0,0,0 NODE:,19,-60,80,20,0,0,0,0,0,0,0 NODE:,20,-90,80,-20,0,0,0,0,0,0,0 171 NODE:,21,-60,80,-20,0,0,0,0,0,0,0 NODE:,22,-90,0,20,0,0,0,0,0,0,0 NODE:,23,-90,0,-20,0,0,0,0,0,0,0 NODE:,24,0,0,0,0,0,0,0,0,0,0 NODE:,25,70,0,20,0,0,0,0,0,0,0 NODE:,26,70,0,-20,0,0,0,0,0,0,0 NODE:,27,70,80,20,0,0,0,0,0,0,0 NODE:,28,70,80,-20,0,0,0,0,0,0,0 NODE:,29,55,80,0,0,0,0,0,0,0,0 NODE:,30,40,80,20,0,0,0,0,0,0,0 NODE:,31,40,80,-20,0,0,0,0,0,0,0 NODE:,32,40,25,20,0,0,0,0,0,0,0 NODE:,33,40,25,-20,0,0,0,0,0,0,0 NODE:,34,-60,25,20,0,0,0,0,0,0,0 NODE:,35,-60,25,-20,0,0,0,0,0,0,0 NODE:,36,-60,65,20,0,0,0,0,0,0,0 NODE:,37,-60,65,-20,0,0,0,0,0,0,0 NODE:,38,-30,65,0,0,0,0,0,0,0,0 NODE:,39,0,65,20,0,0,0,0,0,0,0 NODE:,40,0,65,-20,0,0,0,0,0,0,0 NODE:,41,0,25,20,0,0,0,0,0,0,0 NODE:,42,0,25,-20,0,0,0,0,0,0,0 NODE:,43,0,65,20,0,0,0,0,0,0,0 NODE:,44,0,65,-20,0,0,0,0,0,0,0 NODE:,45,0,25,20,0,0,0,0,0,0,0 NODE:,46,0,25,-20,0,0,0,0,0,0,0 NODE:,47,40,25,20,0,0,0,0,0,0,0 NODE:,48,40,25,-20,0,0,0,0,0,0,0 NODE:,49,40,65,20,0,0,0,0,0,0,0 NODE:,50,40,65,-20,0,0,0,0,0,0,0 NODE:,51,-60,25,20,0,0,0,0,0,0,0 NODE:,52,-60,25,-20,0,0,0,0,0,0,0 NODE:,53,70,40,0,0,0,0,0,0,0,0 NODE:,54,-90,40,0,0,0,0,0,0,0,0 NODE:,55,-75,80,0,0,0,0,0,0,0,0 NODE:,56,20,65,0,0,0,0,0,0,0,0 ! ! following DISP data is used for computations involving the deviations from Matlab optimuzation run. DISP:, 2, 0.0000, 0.0100, 0.0100, 0.0100, -0.0000, 0.0000 DISP:, 3, 0.0000, -0.0054, -0.0100, 0.0100, 0.0000, 0.0000 DISP:, 4, -0.0000, -0.0047, 0.0000, 0.0063, -0.0000, 0.0000 DISP:, 6, -0.0000, 0.0008, -0.0000, 0.0010, 0.0000, 0.0000 DISP:, 7, 0.0000, 0.0001, 0.0000, -0.0023, -0.0000, 0.0000 DISP:, 8, -0.0000, 0.0100, -0.0000, 0.0100, 0.0000, 0.0000 DISP:, 9, 0.0000, 0.0100, 0.0050, -0.0100, -0.0000, -0.0000 DISP:, 10, 0.0000, -0.0002, -0.0100, -0.0100, -0.0000, 0.0000 DISP:, 11, 0.0000, 0.0100, 0.0050, -0.0100, 0.0000, 0.0000 DISP:, 13, 0.0000, 0.0008, -0.0000, 0.0100, 0.0000, 0.0000 DISP:, 14, 0.0000, -0.0003, -0.0000, -0.0067, 0.0000, 0.0000 DISP:, 15, 0.0000, -0.0051, 0.0000, 0.0017, 0.0000, 0.0000 DISP:, 16, 0.0000, 0.0055, 0.0100, -0.0100, 0.0000, 0.0000 DISP:, 17, 0.0000, 0.0100, 0.0100, 0.0100, 0.0000, 0.0000 2. Generated Cost Functions function yy = costfunJun25R1 (x) % deviation dependent cost of manufacturing formulation % generated from tnp3. Nilmani Pramanik / Jun 25, 2002 global CC; yy = 0; yy = yy + 2200 /( .00001 + abs(x(10)+ 55*x(8)+ 40*x(9) )); 172 yy = yy + 4000 /( .00001 + abs(x(46)+ 100*x(44)+ 40*x(45) )); yy = yy + 2200 /( .00001 + abs(x(100)+ 55*x(98)+ 40*x(99) )); yy = yy + 1600 /( .00001 + abs(x(22)+ 40*x(20)+ 40*x(21) )); yy = yy + 2400 /( .00001 + abs(x(34)+ 60*x(32)+ 40*x(33) )); yy = yy + 1600 /( .00001 + abs(x(52)+ 40*x(50)+ 40*x(51) )); yy = yy + 1600 /( .00001 + abs(x(64)+ 40*x(62)+ 40*x(63) )); yy = yy + 1600 /( .00001 + abs(x(76)+ 40*x(74)+ 40*x(75) )); yy = yy + 1600 /( .00001 + abs(x(88)+ 40*x(86)+ 40*x(87) )); CC=CC+1; if mod(CC,100) == 0 CC yy end 3. Assemblability Equations Each equation shown below as Eqn# is generated from the assemblability constraint Kx=b for the example problem. Each term on the left hand side of an equation is of the form: <r|d><X|Y|Z><N>, where r stands for rotation and d for displacement. X, Y, and Z are the local axes, and N is the node number. For example rX(4) indicates rotational component of the deviation at node 4 in local X direction. Eqn# 1: rX(2)+ rX(3)+ rX(4)- rX(5)- rZ(6)+ rZ(7)- rZ(8) = 0 Eqn# 2: rZ(2)- rZ(3)- rZ(4)- rY(5)- rX(6)+ rX(7)- rX(8) = 0 Eqn# 3: rY(2)+ rY(3)- rY(4)- rZ(5)+ rY(6)+ rY(7)- rY(8) = 0 Eqn# 4: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 15. *rX(6)- 30. *rY(6)dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)- 15. *rX(8)- dZ(8) = 0 Eqn# 5: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)+15. *rZ(6)- dX(6)- 15. *rZ(7)+ dX(7)+15. *rZ(8)- dX(8) = 0 Eqn# 6: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)- 30. *rZ(6)+ dY(6)30. *rZ(7)+ dY(7)- dY(8) = 0 Eqn# 7: rX(2)+ rX(3)+ rX(4)- rX(5)- rZ(8)+ rX(9)+ rX(10)+ rX(11)- rX(12)- rZ(13)+ rZ(14) = 0 Eqn# 8: rZ(2)- rZ(3)- rZ(4)- rY(5)- rX(8)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rX(13)+ rX(14) = 0 Eqn# 9: rY(2)+ rY(3)- rY(4)- rZ(5)- rY(8)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(13)+ rY(14) = 0 Eqn# 10: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 15. *rX(8)- dZ(8)- 35. *rZ(9)+ dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 15. *rX(13)+20. *rY(13)- dZ(13)+15. *rX(14)- 20. *rY(14)+ dZ(14) = 0 Eqn# 11: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)+15. *rZ(8)- dX(8)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)+15. *rZ(13)- dX(13)- 15. *rZ(14)+ dX(14) = 0 Eqn# 12: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)- dY(8)+ dY(9)+ dY(10)- dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+20. *rZ(13)+ dY(13)+20. *rZ(14)+ dY(14) = 0 Eqn# 13: rX(2)+ rX(3)+ rX(4)- rX(5)+ rX(9)+ rX(10)+ rX(11)- rX(12)+ rX(15)- rX(16)+ rX(17) = 0 Eqn# 14: rZ(2)- rZ(3)- rZ(4)- rY(5)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rZ(15)+ rZ(16)- rZ(17) = 0 173 Eqn# 15: rY(2)+ rY(3)- rY(4)- rZ(5)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(15)+ rY(16)- rY(17) = 0 Eqn# 16: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 35. *rZ(9)+ dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 35. *rZ(15)+ dX(15)+35. *rZ(16)- dX(16)- 35. *rZ(17)+ dX(17) = 0 Eqn# 17: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)- 35. *rX(15)+40. *rY(15)dZ(15)+35. *rX(16)- 40. *rY(16)+ dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0 Eqn# 18: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)+ dY(9)+ dY(10)dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+40. *rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0 Eqn# 19: rX(5)+ rZ(6)+ rZ(7)+ rX(9)+ rX(10)+ rX(11)- rX(12)- rZ(13)+ rZ(14) = 0 Eqn# 20: rY(5)+ rX(6)+ rX(7)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rX(13)+ rX(14) = 0 Eqn# 21: rZ(5)- rY(6)+ rY(7)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(13)+ rY(14) = 0 Eqn# 22: 35. *rZ(5)- dX(5)+15. *rX(6)+30. *rY(6)+ dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)- 35. *rZ(9)+ dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 15. *rX(13)+20. *rY(13)- dZ(13)+15. *rX(14)- 20. *rY(14)+ dZ(14) = 0 Eqn# 23: 30. *rZ(5)- dY(5)- 15. *rZ(6)+ dX(6)- 15. *rZ(7)+ dX(7)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)+15. *rZ(13)- dX(13)- 15. *rZ(14)+ dX(14) = 0 Eqn# 24: -35. *rX(5)- 30. *rY(5)- dZ(5)+30. *rZ(6)- dY(6)- 30. *rZ(7)+ dY(7)+ dY(9)+ dY(10)- dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+20. *rZ(13)+ dY(13)+20. *rZ(14)+ dY(14) = 0 Eqn# 25: rX(5)+ rZ(6)+ rZ(7)+ rZ(8)+ rX(9)+ rX(10)+ rX(11)- rX(12)+ rX(15)- rX(16)+ rX(17) = 0 Eqn# 26: rY(5)+ rX(6)+ rX(7)+ rX(8)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rZ(15)+ rZ(16)- rZ(17) = 0 Eqn# 27: rZ(5)- rY(6)+ rY(7)+ rY(8)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(15)+ rY(16)- rY(17) = 0 Eqn# 28: 35. *rZ(5)- dX(5)+15. *rX(6)+30. *rY(6)+ dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)+15. *rX(8)+ dZ(8)- 35. *rZ(9)+ dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 35. *rZ(15)+ dX(15)+35. *rZ(16)dX(16)- 35. *rZ(17)+ dX(17) = 0 Eqn# 29: 30. *rZ(5)- dY(5)- 15. *rZ(6)+ dX(6)- 15. *rZ(7)+ dX(7)- 15. *rZ(8)+ dX(8)- 35. *rX(9)- dZ(9)- 35. *rX(10)dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)- 35. *rX(15)+40. *rY(15)- dZ(15)+35. *rX(16)- 40. *rY(16)+ dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0 Eqn# 30: -35. *rX(5)- 30. *rY(5)- dZ(5)+30. *rZ(6)- dY(6)- 30. *rZ(7)+ dY(7)+ dY(8)+ dY(9)+ dY(10)- dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+40. *rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0 Eqn# 31: rZ(8)- rX(12)+ rZ(13)+ rZ(14)+ rX(15)- rX(16)+ rX(17) = 0 Eqn# 32: rX(8)- rY(12)+ rX(13)+ rX(14)- rZ(15)+ rZ(16)- rZ(17) = 0 Eqn# 33: rY(8)- rZ(12)- rY(13)+ rY(14)+ rY(15)+ rY(16)- rY(17) = 0 Eqn# 34: 15. *rX(8)+ dZ(8)+35. *rZ(12)- dX(12)+15. *rX(13)- 20. *rY(13)+ dZ(13)+15. *rX(14)- 20. *rY(14)+ dZ(14)- 35. *rZ(15)+ dX(15)+35. *rZ(16)- dX(16)- 35. *rZ(17)+ dX(17) = 0 Eqn# 35: -15. *rZ(8)+ dX(8)- 20. *rZ(12)- dY(12)- 15. *rZ(13)+ dX(13)- 15. *rZ(14)+ dX(14)- 35. *rX(15)+40. *rY(15)- dZ(15)+35. *rX(16)- 40. *rY(16)+ dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0 Eqn# 36: dY(8)- 35. *rX(12)+20. *rY(12)- dZ(12)- 20. *rZ(13)- dY(13)+20. *rZ(14)+ dY(14)+40. *rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0 174 Bibliography ASME (1994) ASME Dimensioning and Tolerancing. ASME Standard Y14.5M, American Society of Mechanical Engineering, New York, 1994. Ballot, E., Bourdet, P., (1998) A Computation Method for the Consequences of Geometric Errors in Mechanisms. Geometric Design Tolerancing: Theories, Standards and Applications, Hoda A. Elmaraghy (Editor), Chapman & Hall, pp 197-207, 1998. Ballot, E., Bourdet, P., (2000) A Mathematical Model of Geometric Errors in the case of Specification and 3D Control of Mechanical Parts. Advanced Mathematical and Computational Tools in Metrology IV, 2000 World Scientific Publishing Baxter, J. E., Juster, N. P. and Pennington, A. de. (1994) Verification of Product Design Specifications Using a Functional Data Model. MOSES Project Research Report 25, University of Leeds, April 1994. Bharadwaj, B. (1995) A Framework for Tolerance Synthesis of Mechanical Components. Master's Thesis. Syracuse University, Syracuse, NY, 1995. Billo, R. E. (1989) An Object-Oriented Modeling Methodology Utilizing Conceptual Graphs for Form Feature Definition, Ph.D. Thesis, Arizona State University, 1989. Bracewell, R. H., Chaplin, R. V. , Langdon, P. M. , Li, M., Oh, V. K. , Sharpe, J. E. E. and Yan, X. T. (1995) Integrated Platform for AI Support of Complex Design. In AI System Support for Conceptual Design (Editor: J. E. E. Sharpe), SpringerVerlag, 1995. Broman, V. and Shensa, M. J. (1990) A Compact Algorithm for the Intersection and Approximation of N-Dimensional Polytopes. Mathematics and Computers in Simulation, vol. 32, pp. 469-480, 1990. Chandrasekaran, B. , Goel, A. K. and Iwasaki, Y. (1993) Functional Representation of Design Rationale. Computer, pp. 48-6, January 1993. Chandrasekaran, B. and Josephson, J. R. (1996) An explication of Function. Laboratory for AI Research, The Ohio State University, Columbus, OH, January 1996. Chase, K. W., Greenwood, W.H.,Loosli, B.G. and Hauglund, L.F. (1990) Least cost tolerance allocation for mechanical assemblies with automated process selection. Manufacturing Review, vol. 3(1) pp. 49-59, 1990. 175 Chase, K. W. and Magleby, Spencer P. (1997) A Comprehensive System for ComputerAided Tolerance Analysis of 2-D and 3-D Mechanical Assemblies. Proceedings of the 5th International Seminar on Computer-Aided Tolerancing Toronto, Canada, April 27-29, 1997. Chen, Mu-Chen. (2001) Tolerance synthesis by neural learning and nonlinear programming, International Journal of Production Economics, vol. 70, no.1, pp. 55-65, Mar 2001. Ciarallo, Frank W., Yang, C.C. (1997) Optimization of propagation in interval constraint networks for tolerance design. Proceedings of the IEEE International Conference on Systems, Man and Cybernetics, vol. 2, pp. 1924-1929, 1997. Cutkosky, M. R., Engelmore, R. S., et al. (1993) PACT: An Experiment in Integrating Concurrent Engineering Systems. IEEE Computer, pp. 28-37, 1993. Dasgupta, D. , Michalewicz, Z. (1997) Applications, Springer-Verlag, 1997. Evolutionary Algorithms in Engineering Deng, J. ,Deng, S. (2002) The adaptive branch and bound method of tolerance synthesis based on the reliability index, International Journal of Advanced Manufacturing Technology, vol. 20, no. 3, pp. 190-200, 2002. Ding, Y. , Jin, J., Ceglarek, D. andShi, J. (2000) Process-Oriented Tolerance Synthesis for Multistage Manufacturing Processes, presented on the ASME International Mechanical Engineering Congress and Exposition’2000. Dong, Z. Hu, W. and Xue, D. (1994) New Production Cost-Tolerance Models for Tolerance Synthesis, Journal of Engineering for Industry, Transaction of ASME, Vol. 116, pp. 199-206, 1994. Dong, Z. (1997) Chapter 9: Tolerance Synthesis by Manufacturing Cost Modeling and Design Optimization. Advanced Tolerancing Techniques, H. C. Zhang (Ed.), John Wiley & Sons, pp. 233-260, 1997. Dong, Z., Wang, G. (1998) Automated Cost Modeling for Tolerance Synthesis Using Manufacturing Process Data, Knowledge Reasoning and Optimization. Geometric Design Tolerancing, Kluwer Academic, H. A. ElMaraghy (Ed.), pp. 282-293, 1998. Drake, Paul (1999) Dimensioning and Tolerancing Handbook, McGraw-Hill, 1999 Du, R., Ji, Shuping; Li, Xiaoli (2000) Tolerance synthesis using second-order fuzzy comprehensive evaluation and genetic algorithm. International Journal of Production Research, vol. 38, no. 15, pp. 3471-3483, 2000. 176 Due, Mark J. , Constantin, Chassapis (1996) Tolerance design synthesis in a concurrent engineering environment. Proceedings of the 1996 ASME International Mechanical Engineering Congress and Exposition, Nov 17-22 1996, Atlanta, GA, USA. Feng, C-X., Kusiak, A. (2000) Robust Tolerance Design with the Design of Experiments Approach. Transactions of the ASME, Journal of Manufacturing Science and Engineering, vol. 122(3), pp. 520-528, 2000. Finger, S. and Rinderle, J. R. (1989) A Transformational Approach to Mechanical Design Using Bond Graph Grammer. In Proc. of 1st ASME Design Theory and Methodology Conference, pp. 197-216, 1989. Finger, S., Fox, M. S., Navinchandra, D. , Prinz, F. B. and Rinderle, J. R. (1990) Design Fusion: A Product Life-cycle View for Engineering Designs. Technical Report EDRC 24-28-90, EDRC, CMU, 1990. Finger, S., Fox, M. S., Prinz, F. B. and Rinderle, J. R. (1992) Concurrent Design. Applied Artificial Intelligence, vol. 6, pp. 257-283, 1992. Gilbert, Olivier L., (1992) Representation of Geometric Variations Using Matrix Transforms for Statistical Tolerance Analysis in Assemblies. Master thesis, MIT, 1992. Gorti, S. R. and Sriram, Ram D. (1996) From Symbol to Form: A Framework for Conceptual Design. Computer-Aided Design, vol. 28, no. 11, pp. 853-870, 1996. Greenwood, W. H., Chase, K.W. (1987) A new tolerance analysis method for designers and manufacturers. Journal of Engineering for Industry, 109:112-116, 1987 Gui, J. K. and Mantyla, M. (1994) Functional Understanding of Assembly Modelling. Computer_Aided Design, vol. 26, no. 6, pp. 435-451, 1994. Henson, B., Juster, N. P. and Pennington, A. de. (1994) Towards an Integrated Representation of Function, Behavior and Form. MOSES Project Research Report 16, University of Leeds, April 1994. Hoover, S. P. and Rinderle, J. R. 1989) A Synthesis Strategy for Mechanical Devices. Research in Engineering Design, Vol. 1, No. 2, pp 87-103, 1989. Hundal, M. S. and Byrne, J. F. (1991) Computer-Aided Generation of Function Block Diagrams in a Methodical Design Procedure. In Proc. of Design Theory and Methodology- DTM'91 Conference, Volume DE-Vol.27, pp. 251-257, 1991. 177 Iannuzzi, Mark (1998) Variation simulation for tolerance analysis and synthesis. Proceedings of the 1998 ASQ's 52nd Annual Quality Congress, May 4-6 1998, Philadelphia, PA, USA. Iwasaki, Y. and Simon, H. A. (1986) Causality Intelligence, vol. 29(1), pp. 3-32, 1986. in Device Behavior. Artificial Iyengar, G., Lee, C-L and Kota, S. (1994) Towards an Objective Evaluation of Alternate Designs. ASME Journal of Mechanical Design, vol. 116, pp. 487-492, 1994. Jayaraman, R., Srinivasan, V. (1989) Geometric Tolerancing Part I: Virtual Boundary requirements. IBM Journal of Research and Development, vol. 33(2), 1989. Jayaraman, R., Srinivasan, V. (1989) Geometric Tolerancing Part II: Cinditional Tolerances. IBM Journal of Research and Development, vol. 33(2), 1989. Johnson, A. L. (1990) Functional Modeling: A New Development in Computer-Aided Design. Intelligent CAD (Editors: H. Yoshikawa and T. Holden), Vol. II, pp. 203212. Elsevier Science Publishers B. V., North Holland, Amsterdam, 1990. Kannapan, S. M. and Marshek, K. M. (1991) Design Synthesis Reasoning: A Methodology for Mechanical Design. Research in Engineering Design, vol. 2, No. 4, pp 221-238, 1991. Kapur, K. C., Raman, S. and Pulat, P.S. (1990) Methodology for tolerance design using quality loss function. Computers and Industrial Engineering, vol. 19, pp. 254-257, 1990. Kota, S. (1990) A Qualitative Matrix Representation Scheme for the Conceptual Design of Mechanisms. In Proc. of ASME Design Automation Conference (21st Biannual ASME Mechanisms Conference), pp. 217-230, 1990. Krause, F. L.., Kimura, F., Kjellberg, T. and Lu, S. C-Yu. (1993) Product Modelling. Annals of CIRP, vol. 42, no. 2, pp. 695-706, 1993. Krishnaswami, M. and Mayne, R.W. (1994) Optimizing tolerance allocation for minimum cost and maximum quality. Proc. ASME Design Automation Conference, 20th Design Automation Conference, number DE-vol.69-1, pp. 211217, 1994. Lai, K. and Wilson, W. R. D. (1989) FDL - A Language for Function Description and Realization in Mechanical Design. Journal of Mechanisms, Transmissions, and Automation in Design. Transactions of the ASME, vol. 111, pp. 117-123, 1989. 178 Laperriere, L., ElMaraghy, Hoda A. (2000) Tolerance analysis and synthesis using Jacobian transforms, CIRP Annals - Manufacturing Technology, vol. 49, no. 1, pp. 359-362, 2000. Lee, Woo-Jong, Woo, Tony C.; Chou, Shuo-Yan, (1993) Tolerance synthesis for nonlinear systems based on nonlinear programming, IIE Transactions, vol. 25, no. 1, pp. 51-61, 1993. Lin, Shui-Shun, Wang, Hsu-Pin (Ben) and Zhang, Chun (Chuc) (1997) Optimal Tolerance Design for Integrated Design, Manufacturing, and Inspection with Genetic Algorithms. Advanced Tolerancing Techniques, Hong-Chao Zhang (Editor), John Wiley & Sons, Inc, pp 261-281, 1997. Mantripragada, R. and Whitney, D. E. (1998) The Datum Flow Chain: A Systematic Approach to Assembly Design and Modeling. Research in Engineering Design, vol 10, pp. 150-165, 1998. Mathieu, L., Clement, A. and Bourdet, P. (1998) Modeling, Representation and Processing of Tolerances, Tolerance Inspection: A Survey of Current Hypothesis. Geometric Design Tolerancing: Theories, Standards and Applications, Hoda A. Elmaraghy (Editor), Chapman & Hall, pp 1-33, 1998. Moore, R.E. (1966) Interval Analysis, Prentice-Hall, Englewood Cliffs, N.J. Moskowitz, H., Plante, R. , Duffy, J. (2001) Multivariate tolerance design using quality loss, Source: IIE Transactions, vol. 33, no. 6, pp. 437-448, 2001. Nagarwala, M.Y. , Pulat, P.S. and Raman, S.R. (1994) Process selection and tolerance allocation for minimum cost assembly. Manufacturing Science and Engineering, 116, 1994. Nurre, J. H., Vedati, K. (1998) Cost optimization of a process plan's tolerance assignments for manufacturing, nternational Journal of Modelling & Simulation, vol. 18, no. 3, pp. 196-200, 1998. Pahl, G. and Beitz, W. (1984) Engineering Design. Springer-Verlag, 1984. Pramanik, N., Roy, U., Wang, H., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003a) Tolerance Synthesis Scheme. NIST IR 6836, (2003), National Institute of Standards and Technology, Gaithersburg, Maryland. Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003b) Syntheis of Geometric Tolerances of a Gearbox using a Deviation-based Tolerance Synthesis Scheme, DETC2003/CIE-48192 Proceedings of ASME 2003 Design Engineering Technical Conferences, Chicago, Illinois USA, September 2-6, 2003 179 Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003c) A Generic Deviation-based Approach for Synthesis of Tolerances. Accepted for publication in IEEE Transactions on Robotics and Automation Quipers, Benjamin (1994) Qualitative Reasoning. Modeling and Simulation with Incomplete Knowledge, The MIT Press, 1994. Rajagopalan,S. and Cutkoswky, M. R. (1998) “Tolerance Representation for Mechanism Assemblies in Layered manufacturing”, DETC98/DFM-5726, Proc. of ASME Design Engineering Technical Conferences, Atlanta, Ga, 1998. Rajan, Venkat N. , Lyons, K. W. and Sreerngam, Raj (1997) Assembly Representations for Capturing Mating Constraints and Component Kinematics. Proceedings of the 1997 IEEE Int. Sym. on Assembly and Task Planning, Marina del Rey, CA, pp. 206-211, 1997. Reddy, S. Y. (1994) Hierarchical and Interactive Parameter Refinement for Early-Stage System Design. PhD Thesis, University of Illinois at Urbana-Champaign, 1994. Requicha, A. A. (1983) Towards a theory of gemetric tolerancing, International Journal of Robotics Research, vol. 2(4), pp. 45-60, 1983. Roy, U. and Liu,C.R. (1988a) Feature-Based Representational Scheme of a Solid Modeler for Providing Dimensioning and Tolerancing Information, Robotics & Computer-Integrated Manufacturing, vol. 4, no. 3-4, pp. 335-345, 1988. Roy, U. and Liu,C.R.. (1988b) Establishment of Functional Relationships between the Product Components in Assembly Data Base. J. Computer-Aided Design, vol. 20, no. 10, pp. 570-580, 1988. Roy, U. , Pollard, M.C., Mantooth, K. and Liu, C.R. (1989) Tolerance Representation Scheme in Solid Modeling: Part I & II, ASME Advances in Design Automation Conference, , pp. 1-17, Montreal, 1989. Roy, U., Banerjee, P. and Liu, C. R. (1990) Design of an Automated Assembly Environment. Computer-Aided Design, vol. 21 no. 9, pp. 561-569, 1989. (also published in Robotics, Automation and Management in Manufacturing Bulletin, vol. 7, issue 1, 1990). Roy, U., Liu, C.R. and Woo, T.C. (1991) Review of Dimensioning and Tolerancing: Representation and Processing, Computer-Aided Design, vol. 23, no. 7, pp. 466483, 1991. Roy, U., Bharadwaj, B., Chavan, A. and Mohan, C. K. (1995) Development of a Feature Based Expert Manufacturing Process Planner. Proc. of the 7th IEEE International Conference on Tools with Artificial Intelligence, pp. 65-73, 1995. 180 Roy, U. and Bharadwaj, B. (1996) Tolerance Synthesis in a Product Design System. Technical Paper# MS96-146. North American Manufacturing Research Institution. Society of Manufacturing Engineers, Dearborn, MI, 1996. Roy,U. and Fang, Ying-Che (1997) Optimal Tolerance Re-allocation for the Generative Process Sequence. IIE Transactions, vol 29, pp 37-44, 1997. Roy, U., Li, Bing (1997) Tolerance Synthesis by Manufacturing Cost Modeling and Design Optimization, Advanced Tolerancing Techniques, Edited by Hong-Chao Zhang, John Wiley & Sons, Inc, pp 233-260, 1997. Roy, U., Li, Bing. (1998) Representation and Interpretation of Geometric Tolerances for Polyhedral Objects - I. Form Tolerances. J. Computer-Aided Design, vol. 30, no.2, pp. 151-161, 1998. Roy, U., Sudarsan, R., Sriram, R. D. , Lyons, K. W. and Duffey, M. R. (1999a) Information Architecture for Design Tolerancing: from Conceptual to the Detail Design, accepted for presentation and publication in the Proc. of DETC'99, 1999 ASME International Design Engineering Technical Conferences, September 1215, 1999, Nevada, Las Vegas, USA. Roy, U. and Li, B. (1999b) Representation and Interpretation of Geometric Tolerances for Polyhedral Objects - II. Size, Orientation and Positional Tolerances. J. of Computer Aided Design, vol. 31, no. 4, pp. 273-285, 1999. Roy, U. and Li. B. (1999c) Representation and interpretation of geometric tolerances for polyhedral objects-II. Size, orientation and position tolerances. Computer-Aided Design, vol. 31, pp 273-285, 1999. Roy, U., Sudarsan, R., Narahari, Y., Sriram, R. D., Lyons, K. W., Duffey, M. R. and Pramanik, N. (2000) Information Models for Design Tolerancing: From Conceptual to the Detail Design. Technical Report, National Institute of Standards and Technology, NIST IR 6524, 2000. Roy, U., Pramanik, N., Sudarsan, R. , Sriram, R. D. and Lyons, K. W., (2001) Function-to-Form Mapping: Model, Representation and Applications in Design Synthesis. Computer-Aided Design vol. 33, no. 10, pp 699-720, 2001. Schmekel, H . (1989) Functional Models and Design Solutions. Annals of CIRP, vol. 38, pp. 129-132, 1989. Shan, A. , Roth, R. N., Wilson, R. J. (1999) A new approach to statistical geometrical tolerance analysis. International Journal of Advanced Manufacturing Technology, vol. 15, no. 3, p 222-30, 1999. 181 Shaw, N. K., Bloor, M. S. and Pennington, A. de (1989) Product Data Models. Research in Engineering Design, vol. 1, pp. 43-50, 1989. Skowronski, V. J., Turner, J. U. (1997) Using Monte-Carlo variance reduction in statistical tolerance synthesis. Computer Aided Design, vol. 29, no. 1, pp. 63-69, 1997. Sriram, D., Logcher, R. , Wong, A. and Ahmed, S. (1991) An Object-Oriented Framework for Collaborative Engineering Design. Computer-Aided Cooperative Product Development (Editors: D. Sriram, R. Logeher and S. Fukuda), SpringerVerlag, New York, 1991. Sriram, D. , Cheong, K. and Lalith Kumar, M. (1992) Engineering Design Cycle: A Case Study and Implications for CAE. Chapter 5, Knowledge Aided Design, Knowledge-Based Systems, vol. 10 (Editor: Marc Green), Academic Press, New York, pp. 117-156, 1992. Szykman, S.,Racz, J. W. and Sriram, R. D. (1999) The Representation of Function in Computer-based Design, Proceedings of the 1999 ASME Design Engineering Technical Conferences (11th International Conference on Design Theory and Methodology), Paper No. DETC99/DTM-8742, Las Vegas, NV, September, 1999 Takeda, H., Veerkamp, P. , Tomiyama, T. and Yoshikawa, H. (1990) Modeling Design Process, AI Magazine, vol. 11(4), pp. 37-48, 1990. Thornton, A. C. (1994) Genetic Algorithms Versus Simulated Annealing: Satisfaction of Large Sets of Algebraic Mechanical Design Constraints. Artificial Intelligence in Design'94, (Editors: J. S. Gero and F. Sudweeks), Kluwer Academic Publishers, The Netherlands, 1994. Tsai, Jhy-Cherng (1993) Tolerance reasoning for Concurrent CAD/CAM systems, PhD thesis, Stanford Univ, 1993. Turner, J. U. and Wozny, M. J. (1988) A mathematical theory of tolerances. In M. J. Wozny, H. W. McLaughlin,and J. L. Encarncao, editors, Geometric Modeling for CAS applications. Elsevier Science Publishers, 1988 Ulrich, K. T., Seering, W. P. (1989) Synthesis of Schematic Descriptions. Research in Engineering Design, vol. 1, pp. 3-18, 1989. Vasseur, H., Kurfess, T. and Cagan, J. (1993) Optimal tolerance allocation for improved productivity. In Proc. NSF Design and Manufacturing Systems Conference, pages 715-719, Charlotte, NC, 1993. Wang, H., Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2002) A Scheme for Transformation of Tolerance Specification to Generalized 182 Deviation Space for Use in Tolerance Synthesis and Analysis. DETC2002 / DAC34146, ASME Design Engineering Conference, Montreal, Sept 2002. Wang, H., Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003) A Scheme for Mapping Tolerance Specifications to Generalized Deviation Space for Use in Tolerance Synthesis and Analysis. Accepted for publication in IEEE Transaction on Robotics and Automations. Whitney, Daniel E. (1992) Electro-mechanical Design in Europe: University Research and Industrial Practice. The Charles Stark Draper Laboratory, Inc. Cambridge, MA 02139, October, 1992. Wong, A. and Sriram, D. (1993) SHARED: An Information Model for Cooperative Product Development. Research in Engineering Design, 1993. Wu, Z., ElMaraghy, W. H. and ElMaraghy, H.A. (1988) Evaluation of cost-tolerance algorithms for design tolerance analysis and synthesis. Manufacturing Review, vol. 1(3), pp. 168-179, 1988. Xue, D., Rousseau, J.H. and Dong, Z. (1995) Joint optimization of functional performance and production cost based upon mechanical features and tolerances. In Proc. ASME Design Engineering Technical Conferences, number DE-vol.83, 1995. Xue, D., Dong, Z. (1996) Joint Optimization of Performance and Cost in Integrated Concurrent Design: The Tolerance Synthesis Part. Journal of Engineering Design and Automation, vol. 2, no. 1, pp. 73-89, 1996. Yang, C. C., Marefat, M. M., Ciarallo, F. W. (2000) Interval constraint networks for tolerance analysis and synthesis, Artificial Intelligence for Engineering Design, Analysis and Manufacturing: AIEDAM, vol. 14, no. 4, pp. 271-287, 2000. Zhang, C., Wang, H. P. (1993) Tolerance analysis and synthesis for cam mechanisms International Journal of Production Research, vol. 31, no. 5, pp. 1229-1245, 1993. Zhang, C., Luo, J., Wang, B. (1999) Statistical tolerance synthesis using distribution function zones, International Journal of Production Research, vol. 37, no. 17, pp. 3995-4006, 1999.