Parametric Fortran: program generation in scientific computing

Parametric Fortran is an extension of Fortran that supports the definition of Fortran program templates by allowing the parameterization of arbitrary Fortran constructs. A Fortran program template can be translated into a regular Fortran program guided by values for the parameters. This paper describes the design, implementation, and applications of Parametric Fortran. Parametric Fortran is particularly useful in scientific computing. The applications include the definition of generic functions, removing duplicated code, and automatic differentiation. The described techniques have been successfully employed in a project that implements a generic inverse ocean modeling system.

[1]  M. Rosing,et al.  A Programmable Preprocessor for Parallelizing Fortran-90 , 1999, ACM/IEEE SC 1999 Conference (SC'99).

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

[3]  Simon L. Peyton Jones,et al.  Scrap Your Boilerplate , 2003, APLAS.

[4]  Thomas Kaminski,et al.  Recipes for adjoint code construction , 1998, TOMS.

[5]  Martin Berz,et al.  The COSY language independent architecture: Porting COSY source files , 2005 .

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

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

[8]  Y. Zel’dovich Gravitational instability: An Approximate theory for large density perturbations , 1969 .

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

[10]  D. Durran Numerical methods for wave equations in geophysical fluid dynamics , 1999 .

[11]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[12]  Andreas Griewank,et al.  Automatic Differentiation of Algorithms: From Simulation to Optimization , 2000, Springer New York.

[13]  Martin Erwig,et al.  Generic programming in Fortran , 2006, PEPM '06.

[14]  F. Clarke Optimization And Nonsmooth Analysis , 1983 .

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

[16]  Zhang,et al.  Dynamic scaling of growing interfaces. , 1986, Physical review letters.

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

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

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

[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]  Jimy Dudhia,et al.  Development of a next-generation regional weather research and forecast model. , 2001 .

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

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