This two day practical hands-on workshop is aimed at Fortran programmers who want to write modern code, or to modernize existing codes, to make it more maintainable by encouraging good software engineering practices. Tools, scientific libraries and techniques for Fortran are covered to help you develop sustainable software for your academic research in a collaborative environment, with an emphasis on writing performance portable Fortran. There will be an section on parallel computing and the latest Fortran 2018 standard. Click here for further information
Fortran is the primordial HPC language. Its handling of multidimensional arrays have ensured that compilers can produce highly efficient code, and inclusion of coarrays in the 2008 standard made it the first major programming language with builtin support for parallelism. The 2008 inclusion of object-oriented modernised the language, bringing it on par with many of its contenders. In 2019 the Fortran standards committee started work on generics (templates). Templates are planned for the 202y release of Fortran, the one after the upcoming 2023 release.
Unlike C++ templates, Fortran templates are type-safe (strong concepts) and does not support meta-programming. This enables some very powerful programming techniques not matched by other high performance languages.
In this workshop we will give a hands-on preview of such techniques. This includes defining your own Fortran integrated domain specific programming languages (IDSLs) while benefitting from Fortran’s efficient code generation. We also look at the dichotomy between well-structured code and efficient code, and show some systematic transformations between these. Lastly, we suggest just-in-time compilation and interpreters for user defined Fortran IDSLs, achieving much of the same flexibility as the current integration of Fortran and Python.
Targeted at scientists who wish to extend their knowledge of Fortran to cover advanced features of the language.
Three day course is targeted at scientists with little or no knowledge of the Fortran programming language, but need it for participation in projects using a Fortran code base, for development of their own codes, and for getting acquainted with additional tools like debugger and syntax checker as well as handling of compilers and libraries. The language is for the most part treated at the level of the Fortran 95 standard; features from later Fortran standard editions are limited to improvements on the elementary level.
Fortran is a course introduced by Prof. Paul Tackley in earth science teaches modern Fortran 95 and review briefly Fortran 2003/2008 at ETH.
Description From the web page
FORTRAN 95 is a modern programming language that is specifically designed for scientific and engineering applications. This course gives an introduction to programming in this language, and is suitable for students who have only minimal programming experience, for example with MATLAB scripts. The focus will be on Fortran 95, but Fortran 77 will also be covered for those working with already-existing codes. A hands-on approach will be emphasized rather than abstract concepts, using example scientific problems relevant to Earth science.
Scientific Computing II by Antti Kuronen
Scientific Programing and Numerical Computation taught by Wu-ting Tsai
Fortran by David Apsley. Originally based on an undergraduate course. Subsequently extended to more advanced Fortran.
This course provides an introduction to some of the most widely used methods of computational physics, including numerical solutions of differential equations (initial and boundary value prob- lems) in classical and quantum mechanics, Monte Carlo simulations, and numerical diagonalization of quantum many-body Hamiltonians. In addition to giving the students a basic working knowledge of these particular techniques, the goal is to make them comfortable with scientific computing in general, so that they will be prepared to tackle also other computational problem that they may encounter in the future. The Fortran 90 programming language will be used.