2D1263 : Scientific Computing Lecture 1 2D1263 : Scientific Computing (3) What is object-orientation? Lecture 1 (1) Object Oriented Program Construction for Scientific Computing “Organisation of software as a collection of discrete objects that incorporate both data structure and behaviour.” 2D1263 Some key concepts: http://www.nada.kth.se/kurser/kth/2D1263/ • Identity – data quantized into distinguashable entities (objects). Marco Kupiainen [email protected] http://www.nada.kth.se/marcok • Abstraction – separate external aspects of an object from internal (functionality from implementation) • Inheritance – build new abstractions out of existing ones • Polymorphism – ability to provide the same interface to objects with diﬀerent implementations. Objects are similar to C structures but have associated functions. NADA There are no widely accepted deﬁnitions of OO requirements. Marco Kupiainen [email protected] Marco Kupiainen [email protected] NADA NADA 2D1263 : Scientific Computing Lecture 1 2D1263 : Scientific Computing NADA Golub and Ortega: “Scientiﬁc computing is the collection of tools, techniques and theories required to solve on a computer mathematical models of problems in science and engineering.” Or a more narrow deﬁnition: “Development and use of numerical methods and mathematical models to solve real-world problems eﬃciently on computers.” Goals To give students knowledge of Interdisciplinary ﬁeld requiring: • knowledge about the underlying (physical) problem, • ability to formulate a mathematical model, • stable & accurate numerical schemes, Lecture 1 • formulation of PDEs from ﬂuid dynamics, • their numerical approximation on non-trivial grids using ﬁnite diﬀerences, • object-oriented implementation in C++, • parallel programming for distributed memory architectures (SPMD) Prerequisites • a second course in numerical analysis, e.g. Applied Numerical Methods (2D1250) • previous programming experience (preferably but not necessarily C) Marco Kupiainen [email protected] Familiarity with basic C can help, see e.g. http://www.nada.kth.se/kurser/master/intro/ lectures 2–4 (apart from input/output). What is scientiﬁc computing? • eﬃcient implementation on high performance computers. (4) Marco Kupiainen [email protected] NADA (2) 2D1263 : Scientific Computing Lecture 1 (5) 2D1263 : Scientific Computing Lecture 1 (6) Literature The course literature will consist of handouts, Examination • lecture notes written by Bj¨ orn Sj¨ ogren Written exam (2 credits): • brief notes on topics not in lecture notes • ﬁrst exam by end of May or beginning of June 2002 • copies of transparencies Additional online references can be found on the course homepage. • at least three times per year Computer laborations (2 credits): Good C++ books (≈ $50 each): 1. Algebraic grid generation (due 15/2) 2. Distributed parallel arrays (due 22/3) • “The C++ Programming Language”, Bjarne Stroustrup 3. A parallel PDE solver (due 17/5) • “C++ Primer”, Lippman & Lajoie It will not be assumed that you buy any C++ books for the course. The laborations can be done individually or in groups of two students. There are many other C++ books (e.g. at the KTH library). Ask me if you’d like a second opinion on a book. Marco Kupiainen [email protected] Marco Kupiainen [email protected] NADA NADA 2D1263 : Scientific Computing Lecture 1 (7) 2D1263 : Scientific Computing (Preliminary) schedule (Preliminary) schedule Computer exercises Lectures Monday 21/1 13.15 – 15.00 4523 Period 3 Weeks 5, 7, 9 Friday 25/1 13.15 – 15.00 4523 Period 4 Weeks 12, 17, 19 Monday 28/1 13.15 – 15.00 4523 Friday 1/2 13.15 – 15.00 4523 Monday 4/2 13.15 – 15.00 4523 Friday 8/2 13.15 – 15.00 4523 Monday 11/2 13.15 – 15.00 4523 Friday 15/2 13.15 – 15.00 4523 Wednesday 20/2 10.15 – 12.00 4523 Wednesday 27/2 10.15 – 12.00 4523 Wednesday 13/3 10.15 – 12.00 4523 Wednesday 20/3 10.15 – 12.00 4523 Tuesday or Thursday mornings? Afternoons? You will probably have to work more than this to complete the laborations. Outside of scheduled classes any questions should be directed to the teaching assistants • Kyoung-Sook Moon ([email protected]) • Sandy Seﬁ ([email protected]) They can be reached by email, and also answer questions in person (subject to oﬃce hours). Marco Kupiainen [email protected] NADA Lecture 1 Marco Kupiainen [email protected] NADA (8) Lecture 1 (9) • Basic C/C++ constructs Marco Kupiainen [email protected] Marco Kupiainen [email protected] NADA • Overview of computational grids This course focuses mainly on structured boundary-ﬁtted grids. 2D1263 : Scientific Computing Today – Structured 4. Implement a solver in e.g. C++ – Boundary-ﬁtted 3. Find a tool for solving the discretized PDE, or – Unstructured 2. Approximate the PDE on the grid by e.g. ﬁnite diﬀerences or ﬁnite elements – Cartesian 1. Discretize the domain (generate a grid) • Boundary-ﬁtted we need to • Structured grids • initial & boundary conditions • Cartesian Diﬀerent types of grids • a partial diﬀerential equation • Unstructured grids • a geometry Boundary representation Given Structure Numerical approximation Subdivision of domain Ω into small cells or a ﬁnite set of points intended for approximating PDEs by algebraic equations. Lecture 1 (10) 2D1263 : Scientific Computing NADA Marco Kupiainen [email protected] Lecture 1 (12) Unstructured grids x = [(1/2 + ξ1 ) cos(πξ2 ), (1/2 + ξ1 ) sin(πξ2 )] + Generality – Handles complex geometries – “Straightforward” generation & reﬁnement – Ineﬃciency – Indirect addressing ⇒ ineﬃcient cache usage & many dereferences – Parallelization diﬃcult double x[n],y[n]; // Node coordinates int tri[m,3]; // Nodes in triangle Coordinates for ﬁrst node in triangle i: x[tri[i,0]], y[tri[i,0]]. NADA ξ¯ = [“radius” , “angle”] 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 2D1263 : Scientific Computing Structured grids are indexed along coordinate directions: −1.5 0 0.5 ⇒ 1 1.5 −1 A structured grid −0.5 0 0.5 1 1.5 Lecture 1 (11) 2D1263 : Scientific Computing Marco Kupiainen [email protected] NADA 2D1263 : Scientific Computing Lecture 1 (13) 2D1263 : Scientific Computing Structured grids Lecture 1 (14) Cartesian grids ¯ Mapping from unit square to geometry, x(ξ). (only cells intersecting domain shown) + Eﬃciency Rectangular grid with objects “carved out”. – Memory usage (regular connectivity) + works for any geometry (simple) – Numerical methods (structured matrices) – accuracy in boundary conditions + Simple to use – numerical stability – How to do local reﬁnement? It is possible but cumbersome to get accurate boundary conditions (immersed boundary method ). ¯ – Diﬃculties with complex geometries (x(ξ)) ⇒ may have to divide domain into smaller blocks before grid generation. Can be useful for “inexact” domains, e.g. a lake shore. Block subdivision may be good for parallel computations (c.f. domain decomposition) Marco Kupiainen [email protected] NADA Marco Kupiainen [email protected] NADA

© Copyright 2019