Disclaimer : This post is not finished and has NOT been fully reviewed. Feedback are welcome, but no arguments (yet) please!
Fortran is a programming language at the base of many computational softwares, especially in the field of CFD.
While its popularity in scientific software development has decreased over the years, many legacy codes rely on Fortran and are still being actively developed. Example of such codes are FUN3D, VULCAN, NEK5000, UCNS3D and AVBP. AVBP is CERFACS’s go to CFD solver for combustion and does play a major role in the developments at COOP. This post will present, in a succinct manner, the Fortran related tools and activities in our group.
Tools
An overview of in-house developed tools is now provided. Note that the tools are not limited by their usage to AVBP.
Flinter
Flinter is an open-source Fortran linter that was developed with the end user in mind as discussed in this post. A linter analyses a source code and indicates mismatches with respect to a pre-defined set of rules.
Different Fortan linters do already exist as discussed in the above post, but a lot of attention is directed toward the compilers and no general rules for coding in Fortran are existing. Flinter is a lightweight tool that could prove to be useful in evaluating a certain project or compare different projects. It currently follows a set of guidelines inspired by the Colorado State Coding Style and the Python PEP-0008, but customization possibilities are under development.
Codemetrics and Lizard
A part of the COOP activities explored the use of codemetrics in order to mine, from the version control system (e.g. git), useful data that can be used to evaluate and improve coding practices, code structure as well as general code development. An exploration of the tool is discussed in an introductory sense. Further activties will include the use of codemetrics to compare different projects.
Codemetrics relies on Lizard to evaluate the complexity of a project. Several programming languages are supported by Lizard except Fortran. As COOP’s interest involve Fortran codes, the use of Lizard has been made possible by adding a Fortran plugin which was developed by COOP’s team member and has, of recently, been included in the Python package.
Activties
The activities at COOP are not limited to development of various tool sets. On the contrary, initiatives are taken to interact with the scientific community. Our blog is a perfect example of this. Other activities are listed below.
Modern Fortran seminar
While Fortran has the connotation to be outdated and lost popularity to other languages including C++ and Java, it has continued evolving over the years. In order to discuss the evolution that lead to what one may call “modern Fortran”, a webinar was organised on the 4th of May 2021 within the Excellerat framework. A dedicated blog post discusses this activity and the interesting Q&A session.
AVBP Fortran coding rules
Unlike, for instance, Python, Fortran does not have an agreed upon set of rules or guidelines for coding. Typically, each developers group adheres to in-house rules. The set of coding rules for AVBP are discussed in this post(TBD).
Useful links
-
Articles on Fortran from Fortran wiki
-
Everything functional, a large collection of smart ideas about Fortran programming.
-
The Fortran Discourse of Fortran Lang.