Error: SMOKE v 4.7 installation using PGI compiler

I am trying to install SMOKEV4.7 by following this . As my system already has netcdf4.7 and iopai 3.2 installed (used pgf90 compiler), I tried to follow section 12.4 from the installation guide. Here is what I did:

  1. I downloaded and unzipped the ‘smoke_v47.Linux2_x86_64ifort.tar.gz’ and ‘’, which gave me ’ data’ and ‘subsys’ directories.

  2. Then I copied ‘iopai’ directory to $SMK_HOME/subsys

  3. I modified /subsys/smoke/assigns/ASSIGNS.nctox.cmaq.cb05_soa.us12-nc file as my $BIN was built in ioapi directory as Linux3 (Makeinclude.Linux3). Only modification is in assign file is
    setenv BIN Linux3
    (attached ASSIGNS.nctox.cmaq.cb05_soa.us12-nc.txt (22.8 KB) ). And then I use this command:
    source ASSIGNS.nctox.cmaq.cb05_soa.us12-nc
    which was successful.

  4. Then I modified Makeinclude file (attached Makeinclude.txt (3.9 KB) in /subys/smoke/src directory. Then when I tried ‘make’, It is giving me following error:

I would greatly appreicate your help.


This is a compiler-licensing issue. PGI offers one-year-only free licenses, and it would seem you have one of those; you can either get a new compiler-setup from them and install it, or use an alternate compiler (GNU gfortran/gcc is always freely available for Linux systems; Oracle (Sun) compilers are freely available “for commercial and non-commercial use”; see, and Intel’s compilers are available without charge for certain developers (I don’t know whether you’d qualify; you’d have to check).

Once you have a properly installed and licensed compiler set, you can go from there…

Hello @cjcoats ,

Okay I understand. But I have a question:

I can compile all of the software such as CAMx, IOAPI3.2, AMET etc. using this expired license.
that’s why I am not sure, if it is a expired license issue.

Along with what @cjcoats mentioned, you also need to set BIN with a proper name. Not just Linux3. You need to pick out the name based on your compiler as well as system. As an example, Linux2_x86_64ifort is designed for 64-bit intel compiler for x86 system

Hello @bbaek

So, I selected ‘Linux Portland Group Fortran 90’ in ‘what compiler will you use’ option while downloading SMOKE from
But The downloaded file is ’ smoke_v47.Linux2_x86_64ifort.tar.gz’.

While I was installing iopaiv3.2, I had used ‘Makeinclude.Linux2_x86_64pg’ and renamed it as ’ Makeinclude.Linux3’ and my $BIN was Linux3.

That’s why I set BIN as Linux3 in SMOKE ASSIGN file .

Is that what you suggesting? Sorry, If I am not understading clearly.

Also, I can compile other software (AMET, COMBINE, CAMx etc.) by using pgf90 expired license.

You should use the same name used in IOAPI v3.2 compilation.
setenv BIN Linux2_x86_64pg

Okay, I did that. Now, It is giving me the same problem:

PGF90-S-0034-Syntax error at or near & (/home/IqbalHossan/Documents/SMOKE/SMK/subsys/ioapi/ioapi/fixed_src/PARMS3.EXT: 104)
PGF90-S-0134-Illegal attribute - duplicate parameter (/home/IqbalHossan/Documents/SMOKE/SMK/subsys/ioapi/ioapi/fixed_src/PARMS3.EXT: 109)
PGF90-S-0038-Symbol, m3types, has not been explicitly declared (/home/IqbalHossan/Documents/SMOKE/SMK/subsys/smoke/src/lib/alocatbl.f)
** 0 inform, 0 warnings, 3 severes, 0 fatal for alocatbl**
make: *** [alocatbl.o] Error 2

I tried to find out the problem in /fixed_src/PARMS3.EXT file (line 104 and line 109), but couldn’t find out. Following are the lines (104-109) from PARMS3.EXT

INTEGER, PARAMETER :: M3TYPES( NM3TYPES ) =                             &
 &        (/ M3INT, M3REAL, M3DBLE, M3INT8 /)
    !!......  File storage modes:

    INTEGER, PARAMETER :: BUFFIL3 =  -1   !  "buffered-file" value for CDFID

Hello @cjcoats @bbaek

I deleted ‘&’ sign from line 104 in /fixed_src/PARMS3.EXT file. Then I ‘make’ again, which gave me no errors for SMOKE compilation (see screenshot

Then I tried to test my installation by following section 4.3. Running the SMOKE test case

When I ran the scripts from cd $SCRIPTS/run , I did not get any error , But

in cd $LOGS grep ERROR * is giving me lots of error:

[IqbalHossan@adeq logs]$ grep ERROR *
elevpoint.point.nctox.log: ERROR: input file not found: PNTS
elevpoint.point.nctox.log: *** ERROR ABORT in subroutine ELEVPOINT
grdmat.area.nctox.us12-nc.log: ERROR: input file not found: AREA
grdmat.area.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.nonroad.nctox.us12-nc.log: ERROR: input file not found: AREA
grdmat.nonroad.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.point.nctox.us12-nc.log: ERROR: input file not found: PNTS
grdmat.point.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.rateperdistance.nctox.us12-nc.log: ERROR: input file not found: MOBL
grdmat.rateperdistance.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.rateperhour.nctox.us12-nc.log: ERROR: input file not found: MOBL
grdmat.rateperhour.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.rateperprofile.nctox.us12-nc.log: ERROR: input file not found: MOBL
grdmat.rateperprofile.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
grdmat.ratepervehicle.nctox.us12-nc.log: ERROR: input file not found: MOBL
grdmat.ratepervehicle.nctox.us12-nc.log: *** ERROR ABORT in subroutine GRDMAT
movesmrg.rateperdistance.nctox.20050710.us12-nc.log: ERROR: input file not found: MOBL
movesmrg.rateperdistance.nctox.20050710.us12-nc.log: *** ERROR ABORT in subroutine OPENMRGIN
movesmrg.rateperhour.nctox.20050710.us12-nc.log: ERROR: input file not found: MOBL
movesmrg.rateperhour.nctox.20050710.us12-nc.log: *** ERROR ABORT in subroutine OPENMRGIN
movesmrg.rateperprofile.nctox.20050710.us12-nc.log: ERROR: input file not found: MOBL
movesmrg.rateperprofile.nctox.20050710.us12-nc.log: *** ERROR ABORT in subroutine OPENMRGIN
movesmrg.ratepervehicle.nctox.20050710.us12-nc.log: ERROR: input file not found: MOBL
movesmrg.ratepervehicle.nctox.20050710.us12-nc.log: *** ERROR ABORT in subroutine OPENMRGIN
mrggrid.abmp.nctox.20050710.us12-nc.log: *** ERROR ABORT in subroutine MRGGRID