DISSERTATION Concepts for Scientific Computing
Total Page:16
File Type:pdf, Size:1020Kb
DISSERTATION Concepts for Scientific Computing ausgefuhrt¨ zum Zwecke der Erlangung des akademischen Grades eines Doktors der technischen Wissenschaften eingereicht an der Technischen Universitat¨ Wien Fakultat¨ fur¨ Elektrotechnik und Informationstechnik von RENE´ HEINZL Rosensteingasse 7-9/2 A-1160 Wien, Osterreich¨ Matr. Nr. 9826031 geboren am 6. September 1977, Wien Wien, im Juli 2007 Abstract Scientific computing has traditionally been concerned with numerical issues such as the convergence of discrete approximations to partial differential equations, the stability of integration methods for time- dependent systems, and the computational efficiency of software implementations of these numerical methods. While computer performance is steadily increasing the additional complexity of these simulation models easily outgrows this gain in computational power. It is therefore of utmost importance to employ the latest techniques of software development to obtain high performance and thereby ensure adequate simulation times even for complex problems. As a consequence the development of high performance simulation software is quite challenging. Originating in the field of technology computer aided design as an important and complex area of sci- entific computing, this work is motivated by the fact, that different concepts were developed during the last decades for the field of scientific computing. The great diversity of physical phenomena present in semiconductor devices themselves and in the processes involved in their manufacture make the field of TCAD extremely challenging. Each of the phenomena can be described by differential equations of vary- ing complexity. The development of several different discretisation schemes has been necessary in order to best model the underlying physics and to accommodate the mathematical peculiarities of each of these equations while transferring them to the discrete world of digital computing. But, up to now, no common application, nor widely useable modules for application design, has emerged which can be used in various areas. This work deals with concepts for scientific computing, especially concepts for generic and high performance application design. Therefore this work introduces different generic data models to provide effective representations across a very wide range of application areas. Finally, a set of scientific computing components that operate on any data represented in the model are presented. Not only are generic models introduced, but also the corresponding paradigms are presented which inherently model the necessary requirements for an orthogonal extension and enhancement. The final application section presents generic algorithms and implementations in a general purpose way. Cus- tomized algorithms can be implemented easily where they prove most valuable with the corresponding programming paradigm orthogonaly. i Danksagung At most I want to thank Prof. Selberherr for the everlasting support in many areas. The working environ- ment, from the hardware to the various people at the Instiute of Microelectronics, is more than fabulous. And most important for supporting my ideas from the beginning. Prof. Grasser for giving me the opportunity to work at the institute and for his support in various areas and for giving me the opportunity to learn a lot. My special thank goes to Philipp Schwaha who is one of the most wonderful and brilliant people I have ever worked with and from whom I have learned so much. For all the valuable discussions and for ever believing in the work. For all the travels around the world and for making the hard days much easier. I also want to thank our former collegue Michael Spevak, who have introduced me in his world of mathematics and his special view onto different topics. Many parts of my own work were influenced by these two people and so a deep gratitude will always be with you two. Franz Stimpfl for joining and fitting so well into the generic group at the institute. Andreas Hoessinger who introduced me to the C++ and process simulation world, which was the entry point for this work. My thanks goes also to H. Enichlmayer (Infineon) and R. Minixhofer (AMS) for valuable insights, real world examples and support from the company side. Tatsumi-san and Kimura-san (Sony) for giving me the change to work on the forefront of technology. Peter Fleischmann, Steven Cea and Stefan Halama from Intel for the great opportunity to work on the leading edge and providing real examples. Markus Schordan from the institute for computer languages for valuable support in the field of compiler optimizations and insights into compiler technology and AST handling. Hartmut Kaiser and Joel de Guzman for deep C++ insights, especially in parser and functional program- ming methodologies. Werner Benger for introducing me into the fiber bundle model and a great source of inspiration in various fields. I also want to thank Yaakoub El K and the rest of the group at CCT for CFD. To Joyce Visne for her never ending help and support. Also I want to thank the “next generation” of students which are already using a lot of concepts introduced in this work, namely Josef Weinbub, Georg Mach, Clemens Kl¨ockler, J¨urgen Steininger, and Markus Schwaha. And most importantly I want to thank my parents for giving me the chance to see and becoming who I am. ii Contents 0.1 SummaryofNotation............................... ...... 2 1 Introduction 4 1.1 ScientificComputing . ...... ..... ...... ..... ...... ....... 5 1.2 Technology Computer Aided Design . .......... 7 1.3 Motivation...................................... ..... 8 1.4 Contributions ................................... ...... 9 I Theoretical Concepts 10 2 Mathematical Concepts 11 2.1 Introduction.................................... ...... 11 2.2 Common Terms and Linear Algebra . ........ 15 2.3 Topological Toolkit . ........ 17 2.3.1 OrderTheoryandSets .. ..... ...... ..... ...... .... 20 2.3.2 CellTopology.................................. 22 2.3.3 ComplexTopology ............................... 23 2.4 FiberBundles.................................... ..... 25 2.5 Manifolds ....................................... 26 2.6 Computational Topology . ........ 30 2.6.1 Chains ........................................ 31 2.6.2 Cochains ...................................... 34 2.6.3 Duality between Chains and Cochains . ......... 36 2.6.4 HomologyandCohomology . 37 2.7 Fiber Bundles and Chains/Cochains . ........... 39 2.8 Topological Data Structures . ........... 40 2.9 Physical Fields and Electromagnetics . ............. 43 3 Numerical Discretization Schemes 49 3.1 Generic Discretization Concepts . ............ 51 iii 3.1.1 Domain Discretization . ...... 51 3.1.2 Topological Equations . ...... 53 3.1.3 Constitutive Relation Discretization . ............. 53 3.2 FiniteVolumes ................................... ..... 55 3.2.1 BasicConcepts ................................. 55 3.2.2 Analysis of the Finite Volume Method . ......... 57 3.3 FiniteElements .................................. ...... 59 3.3.1 Basic Concepts for a Galerkin Method . ......... 60 3.3.2 Analysis of the Finite Element Method . ......... 63 3.3.3 FurtherAnalysis ............................... 64 3.4 FiniteDifferences............................... ........ 65 3.4.1 BasicConcepts ................................. 65 3.4.2 Analysis of the Finite Difference Method . ........... 67 3.4.3 FurtherAnalysis ............................... 69 3.5 Summary ......................................... 72 II Practical Concepts 73 4 Introduction 74 5 Computational Concepts 76 5.1 GenericDataModel................................ ...... 76 5.1.1 AbstractionLevels .... ..... ...... ..... ...... ... ..... 77 5.1.2 FiberBundleasDataModel . ..... 78 5.1.3 Fiber Bundle Data Hierarchy . ....... 80 5.2 Evolution of Programming Paradigms . ........... 82 5.3 Library-Centric Software Design . ............ 85 5.3.1 Multi-Paradigm Approach . ...... 86 5.3.2 Analysis of Programming Paradigms . ........ 86 6 Programming Concepts 88 6.1 GenericDataStructures. ......... 89 6.2 Separation of Base and Fiber Space . .......... 93 6.3 Standard Algorithms for Scientific Computing . ............... 96 6.3.1 GenericTraversal..... ..... ...... ..... ...... ... ..... 97 6.3.2 QuantityAccessors. ..... 98 6.3.3 GenericCalculation . ..... 98 6.3.4 Interpolation ................................. 98 iv 6.3.5 PointLocation ................................. 99 6.3.6 AssemblyAlgorithms . 99 6.4 Domain Specific Embedded Language . .........101 6.4.1 Requirements for Programming Languages . ..........103 6.4.2 Building Elements for the Embedded Language . ...........104 6.4.3 Application................................... 104 6.5 VisualProgramming ............................... 106 6.5.1 Visually Aided Specification Process . ..........106 6.5.2 Stable Program Development . 108 6.6 SolutionTechniques. ........109 6.6.1 Requirements from Algebraic Solving Systems . ............109 6.6.2 Linearized Functions . 109 III Applied Concepts 112 7 Areas of Application 113 8 A Generic Scientific Simulation Environment 114 8.1 Generic Topology Library: GTL . .........116 8.1.1 QuantityAccessors. 118 8.1.2 The0-CellComplex .............................. 119 8.1.3 The1-CellComplex .............................. 121 8.1.4 The2-CellComplex .............................. 121 8.1.5 Higher-Dimensional Cell Complexes . .........124 8.1.6 Topological Mappings . 129 8.1.7 Implementation Details . .......129 8.2 Generic Functor Library: GFL . .........131 8.3 Generic