Abstract

This paper discusses the concept, application, and usefulness of software design patterns for scientific programming in Fortran 90/95. An example from the discipline of object-oriented design patterns, that of a game based on navigation through a maze, is used to describe how some important patterns can be implemented in Fortran 90/95 and how the progressive introduction of design patterns can usefully restructure Fortran software as it evolves. This example is complemented by a discussion of how design patterns have been used in a real-life simulation of Particle-in-Cell plasma physics. The following patterns are mentioned in this paper: Factory, Strategy, Template, Abstract Factory and Facade. Program summary Program title: mazev1, mazev2, mazev3 Catalogue identifier: AEAI_v1_0 Program summary URL: http://cpc.cs.qub.ac.uk/summaries/AEAI_v1_0.html Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland Licensing provisions: Standard CPC licence, http://cpc.cs.qub.ac.uk/licence/licence.html No. of lines in distributed program, including test data, etc.: 1958 No. of bytes in distributed program, including test data, etc.: 17 100 Distribution format: tar.gz Programming language: Fortran 95 Computer: PC/Mac Operating system: Unix/Linux/Mac (FreeBSD)/Windows (Cygwin) RAM: These are interactive programs with small (KB) memory requirements Classification: 6.5, 20 Nature of problem: A sequence of programs which demonstrate the use of object oriented design patterns for the restructuring of Fortran 90/95 software. The programs implement a simple maze game similar to that described in [1]. Solution method: Restructuring uses versions of the Template, Strategy and Factory design patterns. Running time: Interactive.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.