• Y6_364454
  • 74.9MB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-05-09 17:35
1.有限元方法的理论与实践 这是数学分析,建模的SISSA博士轨道之间当然共享和应用程序(和高性能计算的硕士( )。 该课程遵循两条平行线:有限元方法论(研究生水平,〜20小时)和有限元方法实践(mhpc学生水平,〜20小时)。 本课程的目的是向学生提供用于有限元方法的高级分析工具,以及为实际实施部分提供的最新编程知识。 该理论的范围从基本的FEM和功能分析论据(例如Lax-Milgram,Cea和Bramble Hilbert引理)到更高级的主题,例如inf-up条件和后验误差分析。 练习部分的目的是使从事PDE数值分析的博士学位或MHPC学生能够使用现代C ++库实现并行运行的最新自适应有限元代码。 该实施将基于deal.II库( )。 您将学到什么: 高级有限元理论 如何使用现代的C ++ IDE来构建和调试代码 如何使用大型FEM库解决复杂
  • sissa-mhpc-theory-and-practice-of-fem-master
  • slides
  • 00_course_presentation.pdf
  • 07_poisson.pdf
  • 05_dofs_and_Vh.pdf
  • 03_Lagrangian_finite_elements.pdf
  • 08_denis_lion_bramble_hilbert.pdf
  • 01_Lax_Milgram.pdf
  • 09_bramble_hilbert_dealii.pdf
  • 02_fem_environment.pdf
  • 06_mapping.pdf
  • 04_tria_dh_fe.pdf
  • scripts
  • indent
  • docker
  • Dockerfile
  • .github
  • workflows
  • indentation.yml
  • .clang-format
# 1. Theory and Practice of Finite Element Methods This is shared course between the SISSA PhD track on Mathematical Analysis, Modeling, and Applications ( and the Master in High Performance Computing ( It is a course that follows two parallel lines: theory of finite element methods (graduate students level, ~20 hours) and practice of finite element methods (mhpc students levels, ~20 hours). The goal of the course is to provide to the students advanced analysis tools for finite element methods, as well as state-of-the-art programming knowledge for the actual implementation part. The theory ranges from basic FEM and functional analysis arguments, like Lax-Milgram, Cea, and Bramble Hilbert lemmas, to more advanced topics, like inf-sup conditions and a-posteriori error analysis. The goal of the practice part is to enable a PhD or MHPC student working on numerical analysis of PDEs to implement a state-of-the-art adaptive finite element code, that runs in parallel, using modern C++ libraries. The implementation will be based on the `deal.II` library ( What you will learn: - Advanced Finite Element theory - How to use a modern C++ IDE, to build and debug your codes - How to use a large FEM library to solve complex PDE problems - How to properly document your code using Doxygen - How to use a proper Git workflow to develop your applications - How to leverage GitHub actions, google tests, and docker images to test and deploy your application - How hybrid parallelisation (threads + MPI + GPU) works in real life FEM applications ## Useful links Course main page, with schedule and up to date information - Course classroom on GitHub (for assignments/exercises) - Course slides, notes, materials, and codes: - Course recordings: - ## Course program A tentative detailed program is shown below (this will be updated during the course to reflect the actual course content) 1. Practical Introduction to Galerkin methods 2. Implementation of a serial Poisson solver 1. Introduction to tools (Python VS C++/IDE) 2. Paraview 3. [C++] Triangulation 4. [C++] Elementary FiniteElement types 5. [C++] Degrees of Freedom 6. [C++] ParameterHandler and ParsedFunction 7. [C++] Different types of boundary conditions 8. [C++] Curved geometries, high order mappings 3. Lax-Milgram Lemma, Cea’s Lemma, Bramble-Hilbert Lemma, Nitsche's trick 4. Construction of Manufactured solutions 1. [C++] Working on successively (uniformly) refined grids 2. [C++] Studying the convergence rates of FEM codes 3. [C++] ConvergenceTable 5. Petrov-Galerkin finite element methods (BNB condition) 6. Mixed and hybrid finite element methods 7. Ladyzhhenskaya, Brezzi, Babuska VS Lax Milgram 8. A priori error estimates for Mixed Problems 1. [C++] Mixed Laplace Problem (Raviar Thomas FEM) 2. [C++] Stokes problem 3. [C++] Convergence analysis of Stokes problem 9. A posteriori Error Analysis (Poisson) 1. [C++] Adaptive Finite Element Methods 2. [C++] Convergence Analysis for AFEM If time permits: 10. Time dependent and non-linear problems 1. [C++] Navier-Stokes 11. Parallelization techniques 1. [C++] Shared memory parallelization 2. [C++] Distributed memory parallelization 3. [C++] Parallel problems 4. [C++] From step-4 to step-40 12. Preconditioning techniques 1. [C++] Multigrid methods 2. [C++] Block preconditioning ## Assignments - [Git & GitHub fundamentals]( - [Environment setup]( - [Triangulation, DoFHandler, and FiniteElement]( - [Poisson problem]( - [Bramble-Hilbert Lemma in action]( <!-- 1. Drift Diffusion problems 1. [C++] Poisson + Strong advection term = instability 2. [C++] Implementation of SUPG 3. [C++] Implementation of GLS 4. [C++] Convergence study for Drift-Diffusion problems --> <!-- 13. Non-linear and time dependent problems 1. [C++] Exploiting SUNDIALS libraries 2. [C++] Navier-Stokes implementation with SUNDIALS --> <!-- 14. Variational Crimes, or Discontinuous Galerkin Methods 15. Stabilization of DG Methods 1. [C++] SIPG implementation 16. Hybridizable Discontinous Galerkin methods (HDG) 1. [C++] HDG implementation --> <!-- 19. Non-matching methods 1. [C++] Distributed Lagrange Multiplier methods 2. [C++] Immersed methods -->