Generic programming in Fortran

Parametric Fortran is an extension of Fortran that supports the construction of generic programs by allowing the parameterization of arbitrary Fortran constructs. A parameterized Fortran program can be translated into a regular Fortran program guided by values for the parameters. This paper describes the extensions of Parametric Fortran by two new language features, accessors and list parameters. These features particularly address the code duplication problem, which is a major problem in the context of scientific computing. The described techniques have been successfully employed in a project that implements a generic inverse ocean modeling system.

[1]  Michael J. Vilot,et al.  Standard template library , 1996 .

[2]  Jeffrey D. Ullman Elements of ML programming , 1994 .

[3]  Andrew Begel,et al.  Managing Duplicated Code with Linked Editing , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[4]  Jimy Dudhia,et al.  Development of a next-generation regional weather research and forecast model. , 2001 .

[5]  Tim Sheard,et al.  Accomplishments and Research Challenges in Meta-programming , 2001, SAIG.

[6]  Robert E. Dickinson,et al.  How Can We Advance Our Weather and Climate Models as a Community , 2002 .

[7]  Martin Erwig,et al.  Parametric Fortran - A Program Generator for Customized Generic Fortran Extensions , 2004, PADL.

[8]  Andrew Lumsdaine,et al.  MultiArray: a C++ library for generic programming with arrays , 2005, Softw. Pract. Exp..

[9]  Andrew Lumsdaine,et al.  MultiArray: a Cpp library for generic programming with arrays , 2005 .

[10]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[11]  Cecelia DeLuca,et al.  Modeling The Earth System , 2003 .

[12]  Johan Jeuring,et al.  Dependency-style generic haskell , 2003, ICFP '03.

[13]  S. T. Buckland,et al.  An Introduction to the Bootstrap. , 1994 .

[14]  Alan Stewart,et al.  The Automated Transformation of Abstract Specifications of Numerical Algorithms into Efficient Array Processor Implementations , 1997, Sci. Comput. Program..

[15]  Simon L. Peyton Jones,et al.  Scrap your boilerplate: a practical design pattern for generic programming , 2003, TLDI '03.

[16]  Rainer Bleck,et al.  An oceanic general circulation model framed in hybrid isopycnic-Cartesian coordinates , 2002 .

[17]  Joseph De Kerf Introduction à APL , 1979, APLQ.

[18]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[19]  Andrew F. Bennett,et al.  An inverse ocean modeling system , 2001 .

[20]  Magdalena Balazinska,et al.  Partial redesign of Java software systems based on clone analysis , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[21]  Martin Erwig,et al.  Software reuse for scientific computing through program generation , 2005, TSEM.

[22]  Alexander A. Stepanov,et al.  C++ Standard Template Library , 2000 .

[23]  Gerard Cats,et al.  The CTADEL Application Driver for Numerical Weather Forecast Systems , 1997 .