Object-Oriented Programming in Fortran 2003
March 26-28, 2012
and repeated on
April 10-12, 2012
Fortran 2003 explicitly supports object-oriented programming (OOP). OOP aims to increase a program's maintainability in part by reducing cross-module data dependencies and to increase a program's reusability in part by providing for extensible derived types. Emerging compiler support for Fortran 2003 inspires a more modern program design and implementation style. This course provides the requisite skills. Day 1 introduces OOP in Fortran 2003. Day 2 introduces patterns of best practice in program organization. Day 3 explores several paths toward parallel OOP. Examples will utilize introductory-level numerical algorithms from linear algebra and differential equations inspired by multiphysics modeling that is coupled field problems common to many interdisciplinary, engineering, and physical science simulations.
This course will be given by Damian Rouson and Karla Morris from Sandia National Laboratories in the US. Damian is the manager of the Reacting Flow Research Department and a Visiting Assistant Professor at the University of Cyprus. His research interests focus on scalable scientific software design. He has recently written a book on the subject, Scientific Software Design: The Object Oriented Way . He is also the software architect of the object oriented Fortran interface to Trilinos, ForTrilinos. ForTrilinos provides Fortran applications direct access to capabilities in the Trilinos project
Karla is a senior member of technical staff in the Reacting Flow Research Department at Sandia. She is the lead developer of ForTrilinos. Her research interests include computational fluid dynamics to multiphysics flows and scientific software architectur
Locations & Dates
Sutardja Dai Hall (March 26-28)
University of California
Sutardja Dai Hall on the University of California camput is home to the headquarters of the Center for Information Technology Research in the Interest of Society (CITRIS). Lawrence Berkeley National Laboratory is nearby.
NERSC OSF (April 10-12)
415 20th Street (Thomas L Berkley Way)
The Berkeley Lab Oakland Scientific Facility in downtown Oakland, CA houses NERSC staff, computers and storage systems.
Web Streaming (April 10-12)
The April 10-12 class will be streamed over the web. Depending on the number of registrants, instructors may not be available for Q&A.
Registration is required. There is no registration fee. Registration is limited to 40 in Berkeley and 25 in Oakland and is on a first-come, first-served basis.
- Familiarity with Fortran 90 modules and derived types.
- Undergraduate-‐level familiarity with differential equations & matrices.
Day 1: Object‐Oriented Analysis, Design & Programming
Why Object-‐Oriented Programming (OOP)?
Conventional programming costs and complexity; Alternative programming paradigms; How performance informs design; How design informs performance.
The Object-‐Oriented Way
Object-‐Oriented Analysis (OOA). Object-‐Oriented Design (OOD). Unified Modeling Language (UML): use case and class diagrams. OOP in Fortran 2003: User-‐defined structure constructors; encapsulation and information hiding via modules and private scoping; composition, aggregation, and inheritance via extensible derived types; static and dynamic polymorphism via generic interfaces and class variables.
User-‐defined operators and assignments; Abstract data type calculus; Object-‐oriented design metrics.
Day 2: Best Practices in OOD
OOD patterns: Design patterns essentials and application prototypes; General patterns: Strategy, Surrogate, Abstract Factory, and Factory Method. Domain-‐specific patterns: Abstract Calculus and Puppeteer. UML object and sequence diagrams.
Day 3: Parallel OOP
Multithreaded objects via OpenMP. Distributed-‐memory objects via the ForTrilinos interfaces: Encapsulating the Message Passing Interface (MPI) in classes. Platform-‐ independent parallelism via Fortran 2008 coarrays.
The course will draw material from Ref. 1 below. Ref. 2 is recommended for Fortran background. Ref. 3 links to open-‐source software that will be used extensively on Day 3.
1. Rouson, D., J. Xia, and X. Xu (2011) Scientific Software Design: The Object-‐ Oriented Way. Cambridge University Press, Cambridge, UK.
2. Metcalf, M., J. Reid, and M. Cohen (2011) Modern Fortran Explained. Oxford University Press, Oxford, UK.
Appendix A of Ref. 1 summarizes useful mathematical material.