This is a collection of lecture notes and programming exercises carried out as part of the Computational Physics 2 course at Yachay Tech University.
Wladimir E. Banda Barragán
This is an advanced course on object-oriented programming for physics. It is the second module of the computational physics series taught at Yachay Tech. The course focuses on introducing advanced numerical methods and simulation techniques used in physics, and provides an overview of recent progress made in several areas of scientific computing. The course includes detailed step-by-step examples of how to design software and use parallel programming to solve problems in physics. Topics range from advanced data analysis, through ordinary and partial differential equations, nonlinear dynamics and chaos, to basic thermodynamic and fluid simulations. Each section of the course includes practical examples on different areas of science and technology in which computational physics and high-performance computing have played a major role in the recent years.
-
Ordinary differential equations, and initial value problems
-
Euler methods, Runge-Kutta methods, and applications
-
Boundary value problems, shooting and finite difference methods, applications
-
Python classes and modules
-
Standalone modules and python packaging
-
Software design using object oriented programming
-
Timing tests and efficient coding
-
High-performance computing (HPC) and job managers
-
Parallel computing, CPU/GPU, multiprocessing and joblib
-
The Message Passage Interface (MPI)
-
Application Programming Interfaces (APIs)
-
Partial differential equations, generalities and classification
-
Methods of solving partial differential equations
-
Parabolic and elliptical problems.
-
FFT methods: Heat and Poisson equations
-
Hyperbolic problems
-
Discretisation, meshing and conservation in CFD
-
Advection, waves and shocks
-
Introduction to hydrodynamics
-
Applications to fluids, electromagnetism, heat flow, and quantum mechanics
-
Thermodynamic simulations and introduction to molecular dynamics
-
Nonlinear dynamics, chaotic systems, fractals and statistical growth
-
Introduction to Machine Learning
The full course syllabus and programme can be found here:
Ideally, to take this class, you should have already taken and approved Computational Physics 1.
Evaluation has 4 components, with weights distributed as follows:
1. Formative Evaluation (2 Homework): 20%
2. Laboratory (at least 4 Quizzes): 20%
3. 1 Midterm Exam: 30%
4. 1 Final Exam: 30%
These components consist of the following tasks:
-
Homework include long application problems.
-
Classwork are quizzes with two components: one is carried out in class, one is carried out at home.
-
Both the midterm and final exams have two components, one is carried out in class, one is carried out at home.
If you have questions on the material, you can find me in the office:
-
On Tuesdays:
-
On Thursdays:
-
As per regulations of the Vicerrector's office of Yachay Tech, you should attend 70% of the classes to pass the course.
-
To justify an absence, please submit all the necessary official documentation within 5 days.
-
Students are responsible for ensuring the academic integrity of their submitted assignments and exams.
-
Cheating in exams, plagiarising, and copying code or solutions from other students, from previous years' solutions, and/or from Internet sources are all breaches of academic integrity.
-
The above includes copying code from AI chatbots (which are neither designed nor optimised for physics and programming), e.g. copying and pasting code from chatGPT infringes academic integrity.
-
Academic misconduct will be penalised according to our University’s regulations.
Late assignments accompanied by appropriate justification (e.g. a medical certificate, etc.) will receive no penalisation. Late assignments without appropriate justification will receive a penalisation of -1% per late hour.
-
Data repository: https://github.com/wbandabarragan/physics-teaching-data
-
Archived versions of the CP1 course taught in previous semesters: https://github.com/wbandabarragan/computational-physics-1-arxiv
-
Archived versions of the CP2 course taught in previous semesters: https://github.com/wbandabarragan/computational-physics-2-arxiv