Skip to content

Latest commit

 

History

History
68 lines (52 loc) · 3.02 KB

README.md

File metadata and controls

68 lines (52 loc) · 3.02 KB

UCL ARC Fortran Tooling Recommendations and Examples

This repository aims to improve Fortran best practices within UCL and the wider Fortran community by documenting a growing list of Fortran tools recommended by UCL ARC.

Topics covered

  • benchmarking
  • building
  • compiling
  • debugging
  • documentation
  • formatting
  • interfaces
  • libraries
  • package management
  • profiling and tracing
  • testing

ARC Fortran projects

Name Start End Repo Opportunity Tools Lessons
LFRic Sept 2024 March 2025 GitHub #594 Rose, Cylc
CONQUEST May 2023 May 2024 GitHub #781 Make, VTune, Advisor
ALPS Aug 2022 Jul 2023 GitHub #691 Autotools, Ford
FruitDemand Apr 2021 Mar 2023 #382 Make, Ford, PFUnit
Trove Jan 2021 Aug 2021 GitHub #404 Make, pFUnit (see the PR)
Zacros Jan 2021 Sep 2022 #349 & older CMake, CTest

src code

There are two src codes within this repository mesh_generator and poisson. These are designed to work together.

  • mesh_generator generates a basic square 2D triangular mesh (see mesh_generator.f90 for more details).
  • poisson is a solver which finds the solution of the steady-state heat conduction equation represented by the Poisson equation over a 2D traingular mesh (see poisson.f90 for more details).

Building

We are utilising cmake (see CMakeLists.txt) for our build system. Therefore, to build this repository, please run the following

cmake -B build 

This will create a build directory from within which the project can be compiled...

cd build
make

This will produce executables for the two src codes, fortran-tooling-mesh-generator and fortran-tooling-poisson.

Running the src

Mesh generator

./build/fortran-tooling-mesh-generator <box_size> <edge_size>

Poisson solver

./build/fortran-tooling-poisson # then respond to prompt with the mesh name, likely to be `square_mesh`

Running the tests

To run the tests, from within the build directory, run the following.

$ ctest