Hello,
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 4.3.3.1, 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.
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.
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 4.3.3.1 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”
Thank you so much. I have installed netCDF 4.3.3.1 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’?.
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.
Hello,
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’ ?
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…