MECH 5200 Numerical Methods for Partial Differential Equations Numerical Methods for Solving Real World Engineering Problems Lecture: Monday & Wednesday: 5:00pm - 6:15pm Instructor : Prof. D. Willis Office hours: Monday. 3:00-5:00pm, Wednesday 4:00-5:00pm Office: Falmouth 207-F Email: david willis@uml.edu Website: faculty.uml.edu/dwillis/mech5200/ 1 Course Summary This course is a combination of mathematics (partial differential equations, numerical methods), engineering (engineering relevant PDEs and applications) and computer science (development and coding of algorithms for solving PDEs using computers). By the end of this course, you should be able to use the main numerical/computational approaches to solve multi-dimensional partial differential equations using a computer. 1.1 Course Deployment The course will be taught in a blended learning format. There are 26-27 video modules which are assigned as homework and to be watched prior to the class on the topic. Class time will be used to explore the concepts covered in the videos using worked out programming examples and student driven programming problems (usually performed in groups). Students will be graded on the participation in class problem solving. You are encouraged to bring a laptop and note-paper to class so that you can participate in these in-class hands-on activities. The approximate course topic schedule is: Week Topic Videos 1 Course Introduction/Matlab/FD & Common PDEs Video 1-3 2 Applying 1-D Finite Diff. equations. Video 4-8 3 Coding 1D Finite Differences. Video 9-11 4 2D Bilinear/Domain Mappings + Implement Mapping Example 2D Video 12-17 5 Explicit and Implicit Parabolic Equations Video 17a 6 Hyperbolic Equations Video 18 + 18a 7 Finite Volume Methods 1 Video 19 8 Finite Volume Methods 2 Video 19a 9-12 FEM Video 20-24 12 BEM Video 25 13 End of semester expo Video 26 1
1.2 Course Catalogue Description Mathematical approaches for numerically solving partial differential equations. The focus will be (a) iterative solution methods for linear and non-linear equations, (b) spatial discretization and meshing (c) finite difference methods (FDM), (d) finite volume methods (FVM), (e) finite element methods (FEM) and (f) boundary element methods (BEM). The theory behind of each of these methods will be developed and discussed. Computer programming applications involving the solution of linear and non-linear PDEs in multiple dimensions will play a key role in this course. Unique computer programming assignments will be selected from different engineering/science fields (possibilities include: fluid flow, heat transfer, electrostatics, electromagnetism, structural analysis, medical, ocean engineering etc.) to illustrate the broad applicability of numerical methods. Students will be expected to complete programming assignments while most class examples will deal with pseudo code and/or matlab, a working knowledge of one of the following programming languages is recommended: Matlab, Octave, C, C++, fortran, Java, BASIC, or Python. 1.3 Global Course Objectives The course is divided into six sections/categories of material. Each section will be evaluated using in-class assignments and homework assignments. Your semester project will also cover one of these areas in more depth. [MAT] Mathematical methods, linear algebra and solutions of systems of equations. [GEO] Geometry definition and discretization of PDEs. [FDM] Finite Difference Methods: Theory, Discretization, and Numerical Solutions [FVM] Finite Volume Methods: Theory, Discretization, and Numerical Solutions [FEM] Finite Element Methods: Theory, Discretization, and Numerical Solutions [BEM] Boundary Integral Methods: Theory, Discretization, and Numerical Solutions 2 Textbook and Reference Material 2.1 Matlab or similar programming tools The University offers all students a 1-year license to Matlab. To access/install matlab, follow the instructions found here: https://www.uml.edu/it/services/software/matlab-for-students.aspx Some students may wish to explore other programming languages. One popular language which is a free, but quite popular alternative to Matlab is Python with appropriate libararies added. A brief summary of Python vs. Matlab can be seen here: http://www.pyzo.org/python_vs_matlab.html If you choose to use Python, the faculty support will be considerably less. This said, if you know matlab really well, then Python represents a good learning opportunity/alternative programming language. 2
2.2 Textbooks There is no required textbook for this course. The following textbook is recommended for FDM and FEM methods: J. Li and Y-T Chen, Computational Partial Differential Equations Using Matlab, Chapman and Hall/CRC press, ISBN: 978-1-4200-8904-2. The following textbooks are recommended for FVM methods: R.J. Leveque, Numerical methods for conservation laws. H. Versteeg and W. Malalasekera, An Introduction to Computational Fluid Dynamics: The Finite Volume Method (2nd Edition). The following textbooks are recommended for DG methods: J. Hesthaven, T. Warburton, Nodal Discontinuous Galerkin Methods. A highly recommended, and referenced source for additional lecture notes and materials is the 16.901/16.910/16.920 course lecture note sets on MIT s open courseware. http://ocw.mit.edu/courses/aeronautics-and-astronautics/ 16-920j-numerical-methods-for-partial-differential-equations-sma-5212-spring-2003/ http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ 6-336j-introduction-to-numerical-simulation-sma-5211-fall-2003/ http://ocw.mit.edu/courses/aeronautics-and-astronautics/ 16-901-computational-methods-in-aerospace-engineering-spring-2005/} 3 Assessment 1 20% : Computer Programming Project An individual FDM, FVM or FEM project in a field of your choice. 60% : Homework individually performed homework problems that require computer programming. 20% : In-class exercises in-class exercises and assignments. 3.1 Computer Programming Project You will perform a semester project that involves proposing and solving a PDE of your choice using one of the following methods FDM, FVM or FEM. The project will comprise: 1. Project proposal (20%): You must submit a first project proposal by Thursday Feb 19th. Depending on the quality and subject of the proposal, you may be asked to submit a revised proposal. This must be revised and approved before spring break. 2. Computer code (40%): You must submit a working (matlab or similar) computer code that addresses the proposed problem. 3. Final technical report (40%): You must submit a typed technical report including the technical explanation of: (1) The physics of your problem, (2) The mathematics/numerical methods used and (3) The software/code design. The strong preference is that this report be typeset in LaTeX, but MS word is adequate. 3
3.2 Homework & Homework Policy The homework will cover the main concepts discussed in online videos and in class. Homework will explore both theory and application of the numerical methods learned and will culminate in the development and use of computer code. All homework will have a written component (to be handed in on paper) and a coding component (to be submitted both in an appendix hardcopy, and electronically for grading and similarity tests will likely use dropbox for electronic copies). There is a strong preference for typed homework assignments (recommend in LaTeX). While group interaction in the form of discussions and study-groups is highly encouraged, the homework that is handed-in must be performed individually. This means that both the computer code and the written questions must be individual efforts. Since the homework is the source of the majority of your grade, a zero-tolerance policy will be in effect in accordance with the UML academic integrity policy: http://www.uml.edu/catalog/undergraduate/policies/academic-integrity.aspx The computer code for each homework may be examined using an electronic checking system these are sophisticated enough to detect similarities even if variable names are different. 3.3 UML Athletics and Non-discrimination Policy The university non-discrimination policy: http://www.uml.edu/docs/nondiscrimination%2008112014_tcm18-105140.pdf and the athletic policy: http://www.uml.edu/catalog/undergraduate/policies/athletic-academic-policy.aspx FAQ s 1. Do I need to type my project proposal and project report? Answer: YES. 2. Do I need to type my answers for the questions that are not implemented on a computer? Answer: No, but it is nice if you do. While typing your hand-in homework solutions makes it easier to read, you may also neatly handwrite them. Your entire homework MUST be written/typed on paper this is what will be graded. 3. How do I hand in the portions of the homework that are implemented on a computer? Answer: Any computer code you develop for the course should be clearly commented and should be handed in as a hard/paper copy in an appendix. Additionally, instructions will be provided in assignments on how to submit work electronically. 4. Do I need to hand in color printouts of matlab (or other coding language) results? Answer: No. You may hand in grey-scale printouts. Be sure however, that the greyscale used clearly indicates the data being presented. It must be clear if a greyscale is used, what the values are. 4
5. Can I ask friends for additional computer coding help? Answer: Not with the homework. Questions that relate directly to the homework should be directed to the professor. If you have particular code implementation challenges, there will be opportunities during/after certain classes to collaborate with fellow students. 6. Do I need to know matlab? Answer: Not really. While it is strongly recommended to use Matlab for the homework assignments and project, but, it is not required. Any computer coding language that can be used to write numerical analysis software is fine (eg: C, C++, Fortran, python, BASIC, etc.). It is unlikely that mathcad, excel, mathematica or mathcad will be sufficient for most, if not all of the assignments in this course. Please plan accordingly. 7. What if I don t know any programming languages? Answer: This course will be tough but not completely impossible. While the professor is willing to provide assistance with learning the details and finer usage of some of the programming languages, the course is not designed as a class that teaches you how to use a computer programming language. I would highly recommend spending a decent amount of time early in the semester learning and practicing Matlab in class and on your own. 5