I/O API installation LINUX 3.10.0-1127.19.1.el7.x86_64

I am trying to install I/O API (my target is to work on CMAQ, CAMx output). I have Linux 3 86*64 (attached image) and netcdf v, and also gfortran 4.8.5 and pgf90 compiler.

In ioapi make file, I don’t see any makefile for Linux 3. Please see the error:
[root@adeq ioapi]# make fixed_src
Makefile:85: /root/web31/ioapi/Makeinclude.Linux3: No such file or directory
make: *** No rule to make target `/root/web31/ioapi/Makeinclude.Linux3’. Stop.

What exact command I need to use to install it?

Thanks in advance

You can use the Makeinclude.Linux2_x86_64gfort as a starting place.

cp Makeinclude.Linux2_x86_64gfort Makeinclude.Linux3

BTW, you will also need netCDF-Fortran (UCAR decided to split apart the C, the C++, and the Fortran bindings into three separate libraries, starting with netCDF-4.

And be aware that unless you’re using “gfortran” as your Fortran compiler, you should build these netCDF libraries yourself using the same compiler that you’re using for the I/O API and CMAQ (and SMOKE…): differences in run-time libraries tend to mean that libraries built with one compiler are not compatible with executables built with a different one.

Thank you so much for your reply. I am kind of lost here and I couldn’t figure out how to install it from the https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html#build
Here is what I am doing step by step as mentioned in the above link:

Step 1 & 2: The directory where ‘gtar xvfz ioapi-3.1.tar.gz’ applied is /root/Documents/softwares/ioapi_install

Step-3: I have used PGI compiler for CAMx/CMAQ compiling and trying to use PGI compiler for the I/O API. So, in the ‘ioapi’ directory , I applied
cp Makeinclude.Linux2_x86_64pg Makeinclude.Linux3
Then from /root/Documents/softwares/ioapi_install/ioapi, I modified BASEDIR in ‘makefile.nocpl’. And copied that modified ‘makefile.nocpl’ to /root/Documents/softwares/ioapi_install/m3tools
Step-4, 5 & 6: Skipped

Step 7: Then I generated BIN by using setenv BIN uname -s``uname -r | cut -d. -f1
I don’t understand what this line is suggesting "
and then modify the result by appending any compiler specifics, e.g., for F90, debug- or profile-compiled configurations" in the above link

Step- 8: I have netcdf already installed (attached screenshot). How can I “Acquire and build the netCDF library, libnetcdf.a (and libnetcdff.a for netCDF-4.1 or later), for each configuration”

Would you please help me to finish the process?

Thank you so much. I have installed netCDF from Linux Centos 7 by using following commands
yum install netcdf-devel
yum install netcdf-fortran-devel

I am using PGI compiler for the I/O API which is Makeinclude2_86_64pg. How do I figure out which compiler was used while I installed netcdf from centos 7 command?. For the gfortran, is the make file "Makeinclude_86_64gfort’?.

Could you please help me how to proceed step-8 of the installation process (https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html#ncf4) if I use gfortran for I/O API?.

Thanks in advance


I/O API 3.2 is the current version. 3.1 is in legacy-only maintenance mode.

One of the reasons for 3.2 was changes in netCDF, version 4.1 and later: they eliminated the older CALL NC_... interfaces in favor of newer IERR=NF_... ones. More than 700 such calls in version 3.1 were replaced in version 3.2. If you insist on I/O API 3.1, then go back to netCDF 3.6.2.

(7): As stated, Linux versions 2,3,4 are all syscall-compatible (but different from 1), so Linux2 is the standard “root” for $BIN values, which then have suffixes for compiler-set (or separately for C and Fortran compilers, e.g., for a mixed gcc-pgf90 build), debug-or-optimized, profiling-or-not, small- or medium-memory model, climatology-year, etc.

(8) netCDF is from UniDATA; this item gives the netCDF home page; or for downloads, see https://www.unidata.ucar.edu/downloads/netcdf/

(9), (10), (11) should be straightforward; (12) applies only for version 3.1.

As your suggestion, I am installing I/O API v3.2 because my netCDF is 4.1 version. I have done following so far according to the readme.tx file from I/O API (attached):
I have completed Step:1 to Step: 6 successfully.
Then I copied libnetcdf.a and libnetcdff.a in the $BIN folder. (Step-8)
Then I ran ‘make’ command in the $BASEDIR/ioapi, and It was successful (Step-7). which generated libioapi.a
Then I ran ‘make’ command in $BASEDIR/m3tools, and it was sucessful (Step-9) which created bunch of files in $BIN (attached screenshot).
Then when I tried step-10 to ensure that everything is working correctly, by using the command ‘make test’ in $BASEDIR, Its giving me the output
[root@adeq m3tools]# cd $BASEDIR
[root@adeq ioapi-3.2-20200828]# make test
make: *** No rule to make target `test’. Stop.

Also, in Step -7, when I tried ‘make fixed_src’ for the CMAQ, It gave me the
make : Nothing to be done for ‘fixed_src’

So, would you please help to understand why step-10 is not working and ‘make fixed_src’ ?

README.txt (7.7 KB)

That means *ioapi/fixed_*src is up-to-date. If you did a git pull -a that resulted in new versions of the INCLUDE-files, then that make command would actually have work to do…

Hi @cjcoats,
That means for CMAQ, CAMX , I don’t have to do anything else, is that right?.

that is right.

[More characters to make the forum software happy…]

1 Like