Compiling GEOS-Chem Classic
GEOS-Chem Classic. Consult the official documentation for details on building.[1] GCClassic is (single-node) multithreaded (using OpenMP[2]) code.
Prerequisites
Modules to load
intel/composerxe/2020u4
netcdf-fortran/intel/2020/4.5.4
(this is a “serial” version even though not designated in the modulefile name, i.e. not MPI-enabled; if in doubt, pick a “serial” version)cmake
(only used for building)git
(optional; may be needed if GitHub-related errors are shown)
netcdf-fortran
will also pull in other dependencies.
If you need a version of NetCDF not currently on Picotte, you can build
it yourself. N.B. netcdf-c
can be built with cmake, but
netcdf-fortran
’s cmake configuration seems to have errors. It should
be built using the “configure ; make ; make install” method.
Download Sources
Download from Git, checking out the desired tag. The tag here is
“13.4.0
”.
[juser@picotte001 ~]$ cd /ifs/groups/myrsrchGrp
[juser@picotte001 myrsrchGrp]$ mkdir software
[juser@picotte001 myrsrchGrp]$ cd software
[juser@picotte001 software]$ git clone https://github.com/geoschem/GCClassic
...
[juser@picotte001 software]$ cd GCClassic
[juser@picotte001 GCClassic]$ git checkout 13.4.0
[juser@picotte001 GCClassic]$ git submodule update --init --recursive
If you want the latest “head”, omit the “git checkout 13.4.0” command.
Configure and Build
We use ccmake
, the text-based user interface (TUI) for CMake.[3]
Configure
[juser@picotte001 GCClassic]$ mkdir BUILD
[juser@picotte001 GCClassic]$ cd BUILD
[juser@picotte001 BUILD]$ ccmake ..
Page 0 of 1
EMPTY CACHE
...
EMPTY CACHE:
Keys: [enter] Edit an entry [d] Delete an entry CMake Version 3.22.2
[l] Show log output [c] Configure
[h] Help [q] Quit without generating
[t] Toggle advanced mode (currently off)
Type “c” to configure.
The Fortran compiler identification is Intel 19.1.3.20200925
Detecting Fortran compiler ABI info
Detecting Fortran compiler ABI info - done
Check for working Fortran compiler: /ifs/opt/intel/2020/compilers_and_libraries_2020.4.304/linux/bin/intel64/ifort - skipped
=================================================================
GCClassic 13.4.0 (superproject wrapper)
Current status: 13.4.0
=================================================================
Found NetCDF: /ifs/opt/netcdf-fortran/intel/2020/4.5.4/lib/libnetcdff.so
Useful CMake variables:
+ CMAKE_PREFIX_PATH: /ifs/opt/netcdf/intel/2020/4.8.1
... /ifs/opt/netcdf-fortran/intel/2020/4.5.4
+ CMAKE_BUILD_TYPE: Release
Run directory setup:
Threading:
* OMP: [32mON[m OFF
Found OpenMP_Fortran: -qopenmp (found version "5.0")
Found OpenMP: TRUE (found version "5.0")
General settings:
* MECH: [32mfullchem[m Hg custom
* BPCH_DIAG: ON [32mOFF[m
* USE_REAL8: [32mON[m OFF
Components:
* TOMAS: ON [32mOFF[m
* TOMAS_BINS: [32mNA[m 15 40
* APM: ON [32mOFF[m
* RRTMG: ON [32mOFF[m
* GTMM: ON [32mOFF[m
* HCOSA: ON [32mOFF[m
* LUO_WETDEP: ON [32mOFF[m
=================================================================
HEMCO 3.4.0
Current status: 3.4.0
=================================================================
=================================================================
GEOS-Chem 13.4.0 (science codebase)
Current status: 13.4.0
=================================================================
Creating /ifs/groups/myrsrchGrp/softwear/GCClassic/src/GEOS-Chem/Interfaces/GCClassic/gc_classic_version.H
Configuring done
A successful configuration step should show “Configuring done”.
Type “e” to exit the messages screen.
Modify install location
Use the arrow keys to go down to the line:
CMAKE_INSTALL_PREFIX */ifs/groups/myrsrchGrp/software/GCClassic/BUILD/install
We suggest changing this value. To change it, hit the Enter key, and type in the desired installation location:
CMAKE_INSTALL_PREFIX */ifs/groups/myrsrchGrp/software
If this value is used, the resulting gcclassic
executable will be
installed as /ifs/groups/myrsrchGrp/software/bin/gcclassic
Choose a
value which fits the way you currently work. Or leave it unchanged.
Hit “c” again to configure. Then, “e” to exit messages.
Build a.k.a. compile a.k.a. make
Hit “g” to generate the makefile. The status line in Ccmake should show “Generating...” and will return you to the shell when done.
Now, run the compilation:
[juser@picotte001 BUILD]$ make -j 24 | tee Make.out 2>&1
The “-j 24
” tells make to run up to 24 simultaneous compilations. The
“tee” command splits input into two, one to the terminal and one to the
file Make.out
. The “2>&1
” joins stderr (i.e. error output) to stdout
(i.e. normal output).
The build will take a few minutes. If successful, it should show the following at the end:
...
Scanning dependencies of target gcclassic
[ 98%] Building Fortran object src/CMakeFiles/gcclassic.dir/GEOS-Chem/Interfaces/GCClassic/main.F90.o
[100%] Linking Fortran executable ../bin/gcclassic
[100%] Built target gcclassic
Check the executable is there:
[juser@picotte001 BUILD]$ ls -l bin
total 17704
-rwxrwxr-x 1 juser myrsrchGrp 14904144 May 12 16:23 gcclassic
Run it just to see its “hello” message:
[juser@picotte001 BUILD]$ ./bin/gcclassic
************* S T A R T I N G G E O S - C H E M *************
===> Mode of operation : GEOS-Chem "Classic"
===> GEOS-Chem version : 13.4.0
===> Compiler : Intel Fortran Compiler (aka ifort)
===> Flexible precision set to : 8-byte real (aka REAL*8)
===> Parallelization w/ OpenMP : ON
===> Binary punch diagnostics : OFF
===> netCDF diagnostics : ON
===> netCDF file compression : SUPPORTED
===> Luo et al (2019) wetdep? : OFF
===> SIMULATION START TIME: 2022/05/12 16:24 <===
===============================================================================
G E O S - C H E M U S E R I N P U T
READ_INPUT_FILE: Opening ./input.geos
===============================================================================
GEOS-CHEM I/O ERROR 29 in file unit 11
Encountered at routine:location read_input_file:1
Error 29: File not found
...
Then, install it to the location specified above:
[juser@picotte001 BUILD]$ make install | tee Make.install.out 2>&1
See Also
References
[1] GEOS-Chem Classic documentation
[3] CMake Documentation - ccmake (also available as a man page)