Skip to content

Latest commit

 

History

History
110 lines (64 loc) · 7.07 KB

README.md

File metadata and controls

110 lines (64 loc) · 7.07 KB

ATSC

Course syllabus

Advanced Topics in Scientific Computing 2024/2025

Instructors

Prof. Andrea Cangiani <[email protected]>
Dr. Pasquale Claudio Africa <[email protected]>

Programs

  • (M.Sc.) Scientific and Data Intensive Computing @ UniTS.
  • (Ph.D.) Mathematical Analysis, Modelling, and Applications @ SISSA.

Goals

1. Knowledge and understanding

Students will gain a thorough understanding of the theory and practice of computational modeling and scientific computing, with a special emphasis on finite element analysis concepts. They will learn to implement these concepts in C++ using modern simulation platforms. The course will cover object-oriented and generic programming paradigms for finite element solvers. Additionally, students will become proficient in using common data structures, algorithms, and relevant libraries and frameworks essential for scientific computing.

2. Applying knowledge and understanding

Students will learn to apply their advanced programming skills to solve both familiar and new coding challenges. They will be able to develop advanced numerical solvers in C++, selecting and designing appropriate data structures and algorithms to tackle complex real-world computational problems. They will also acquire the ability to construct simulation tools using modern finite element libraries.

3. Making judgment

Students will develop critical thinking and analytical skills, enabling them to assess the effectiveness, flexibility, and efficiency of code implementations. They will be capable of evaluating different approaches to problem-solving and selecting optimal solutions based on informed analysis. By the end of the course, students will have developed the ability to design, implement, test, debug, and optimize complex scientific computing libraries.

4. Communication skills

Through class discussions, project writing, and presentations, students will learn to effectively communicate their design decisions, code rationale, and problem-solving strategies. They will become adept at conveying technical information clearly and concisely.

5. Learning skills

Students will acquire self-directed learning abilities, enabling them to stay current with state-of-the-art numerical simulation methods and modern libraries for scientific computing. They will be equipped to independently identify and troubleshoot coding issues and propose innovative solutions. They will also gain experience in team-based software development practices by working on group projects.


Required skills

Prior knowledge of foundamentals about the numerical analysis of partial differential equations and in particular finite element method analysis.

Knowledge of programming fundamentals (syntax, data types, variables, control structures, functions) is required for this course.

Prior experience with a programming language, preferably C++.


Course content

Review of fundamentals of the Finite Element Method. A priori and a posteriori error estimates. Fluid mechanics modelling. Computational Mechanics. Functional analytic setting. Analysis of saddle-point problems. Analysis of Finite Element Methods for the Stokes equations. The discontinuous Galerkin Finite Element Method. Theory and approximation of the Navier-Stokes problem.

Tools for Finite Element programming. Data structures and mesh generation, numerical quadrature techniques. Assembling and storage. Direct and iterative solvers, preconditioning techniques. Numerical linear algebra packages. Solution of nonlinear systems.

Introduction to the deal.II Finite Element library. Practical case studies for real-world applications. Hands-on sessions for developing and implementing finite element solvers using deal.II. Visualization tools.


Teaching methods

The course will utilize a combination of frontal lectures and live programming demonstrations.

During the hands-on sessions, students will have the opportunity to work on problems related to the material covered in the frontal lectures. The solutions to these problems might be discussed, allowing students to receive feedback and gain a deeper understanding of the material.

The course will maintain a balance of approximately 50% frontal lectures and 50% hands-on sessions.

The course is designed to be highly interactive, with ample opportunities for students to ask questions and engage in discussions during both the frontal lectures and hands-on sessions.


Verification of learning

Students will be required to complete a modelling and coding project. Their project will have to be presented to the instructors and will be discussed and evaluated during an oral exam.

The maximum achievable grade is 30. Honors may be granted in exceptional cases, provided the final grade exceeds 30.

Overall, the evaluation process is designed to encourage students to actively engage with the material and to develop practical skills that will be useful in their future careers.


Books and material

The instructors will provide support material and references throughout the course. In addition, there are many free online resources available to supplement the course material.

For students who prefer to read books, the following references are recommended:

  1. The Finite Element Method for Elliptic Problems, Philippe G. Ciarlet, SIAM, 2002
  2. Theory and Practice of Finite Elements, Alexandre Ern & Jean-Luc Guermond, Springer, 2004
  3. Finite Element Methods for Navier-Stokes Equations, Vivette Giraut & Pierre-Arnaud Raviart, Springer, 1986
  4. Mathematical Aspects of Discontinuous Galerkin Methods, Daniele Antonio Di Pietro & Alexandre Ern, Springer, 2012
  5. Introduction to Numerical Methods for Variational Problems, Hans Petter Langtangen & Kent-Andre Mardal, Springer, 2019
  6. Programming - Principles and Practice Using C++, Bjarne Stroustrup, Addison-Wesley, May 2014

These books provide in-depth coverage of the course material and can serve as valuable resources for further study.


Sustainable Development Goals - Agenda 2030

  • Goal 9 - Build resilient infrastructure, promote inclusive and sustainable industrialization and foster innovation
  • Goal 12 - Ensure sustainable consumption and production patterns

Extra info

To participate in this course, students will be requested to bring their own laptop equipped with a working Linux or UNIX environment, whether standalone or virtualized. Students are expected to utilize either a text editor, such as Emacs, Vim, or Nano, or an Integrated Development Environment (IDE), such as VSCode, Eclipse, or Code::Blocks, according to their preference.

To ensure that their environment is suitable for the course, students should ensure that it meets the following requirements:

The environment must have a C++ compiler installed with full support for C++17, such as GCC 10 or newer, or Clang 11 or newer.

The environment must meet the minimum system requirements for running a Linux or UNIX environment with the necessary software and tools for the course.

Any recent Linux distribution, such as Ubuntu 22.04 or newer, or Debian 11 or newer, or macOS system that meets these requirements should be suitable for the course.