Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Classical Fortran : programming for engineering and scientific applications (2nd ed.)
Kupferschmid M., CRC Press, Inc., Boca Raton, FL, 2017. 576 pp. Type: Book (978-1-138116-43-6)
Date Reviewed: Jan 19 2018

My immediate question was: “What is Classical Fortran?” The author notes that most Fortran programmers use a rather small working Fortran vocabulary, and most of them use the same subset of statements. Based on my own background, I would probably have said: “OK, he means Fortran-66.” However, there are not many current compilers that can correctly handle the do-loop behavior of that version, so he has instead chosen a subset of the Fortran-77 statements.

Chapters are arranged in ascending levels of skill required, with the first six chapters being suitable for readers needing an elementary understanding of the language structure and capabilities. The first couple of these chapters explain how statements should be entered in fixed-source form, how variables can be named, and what operations can be performed on such variables. There are short example programs on almost every page illustrating how things should be done and, just as importantly, how they should not be done. A comprehensive set of exercises is included at the end of every chapter.

A program that solves a simple quadratic equation is used to demonstrate the use of conditional statements, where different paths are taken according to the sign of the discriminant. Simple if statements are used in the first incarnation of this program, and these are replaced with if-then blocks in a subsequent version. At the end of this chapter (and other chapters), the author includes an “Omissions” paragraph; in this instance, he notes that he has skipped showing the arithmetic if statement that was commonly used in Fortran 2 programs.

Of course the quadratic equation solver could have been more easily written using the COMPLEX data declarative, and this issue is fully explored in the “Scalar Data Types” chapter. Special attention is given to data length declaratives (like REAL*8) and to the mechanisms for reducing round-off errors.

Arrays and DO loops are introduced in the fifth chapter, and a matrix multiplication program is used as a case study. This is expanded in the following chapter where the reader is shown how to create and use matrix arithmetic subroutines, as well as how to create functions.

Chapters 7 through 10 are intended to acquaint readers with all the remaining language elements they are likely to need in programming numerical calculations for engineering and scientific applications. The topics covered include adjustable dimensions, “COMMON” blocks, input and output directives, and character variables. Each of these is covered with a degree of detail that is more than adequate to satisfy the author’s intent.

If the reader has got this far in the book, he has read about 40 percent of its 500 pages. So would they really want to read what is in the “Advanced” topics covered in its remaining pages? My immediate answer is: “Eventually!” Classical Fortran uses static memory allocation, so you may find programs in which “COMMON” areas have been reused for temporary storage from several subprograms. The “Memory Management Techniques” chapter provides some useful suggestions concerning array definitions, sparse matrices, and linked lists.

If you have ever had to update a program written by another person, you will appreciate the importance of the design process. In the “Design, Documentation and Coding Style” chapter, the author suggests what he calls a “least astonishment” approach such that (from a maintenance perspective) a program always appears to do the least surprising thing. Guidelines are given for in-program documentation and also for “man” page contents. Coding styles are also outlined, with some emphasis on complexity reduction in branching operations and long statements.

Subsequent chapters illustrate compile options on Unix and Solaris machines, with some detail about the make and dbx utilities. Mechanisms for timing and improving program execution speeds are also discussed.

Those who use high-performance computing (HPC) facilities will be especially interested in the “Vector and Parallel Processing” chapter, which shows how code can be tuned for processing on machines with vector instructions. Programs can also be made to execute on multiple processors using the message passing interface (MPI) library, and some examples are discussed.

In the penultimate chapter, the author observes that Fortran-90 is able to perform matrix operations using single statements whose operands are the names of entire matrices. It is also able to allocate storage on demand and deallocate it when the associated variables go out of scope. Parallelization can be accomplished simply by inserting “CHPF$” comments appropriately within a program so that MPI routines are invoked automatically as required.

If you are working with classical Fortran programs, you will find this an excellent reference; there are not many other Fortran books that provide the same level of coverage for compilation, debugging, and documentation utilities. Fortran 2018 is due for release in mid-2018, so you might also want to start looking now for books that will describe the features likely to be included therein.

More reviews about this item: Amazon

Reviewer:  G. K. Jenkins Review #: CR145792 (1804-0163)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Fortran (D.3.2 ... )
 
 
Sequential Programming (D.1.4 )
 
Would you recommend this review?
yes
no
Other reviews under "Fortran": Date
FORTRAN for the ’90s
Edgar S., Computer Science Press, Inc., New York, NY, 1992. Type: Book (9780716782476)
Apr 1 1993
Array features in FORTRAN-8X
Crowley T.  Tools, methods and languages for scientific and engineering computation (, Paris, France,2621984. Type: Proceedings
Aug 1 1985
A FORTRAN extension for scientific computation
Kulisch U.  A new approach to scientific computation (, IBM Thomas J. Watson Research Center, Yorktown Heights, NY,2231983. Type: Proceedings
Feb 1 1985
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy