Smoke Test Case

I have tried running the SMOKE test case for version 4.5 on Ubuntu. I try running the scripts in tcsh, but when I enter any of the scripts to run them after changing the directory to $SCRIPTS/run I get an error. I tried putting “smk_area_nctox.csh” put it returns with “command not found”. I also tried “./smk_area_nctox.csh” which did allow the scripts to run but after invoking all the scripts and following the rest of the instructions for the test case it comes back with errors. Any help would be greatly appreciated.

Thanks,
Scott

Please check the run instructions for SMOKE available here:
https://www.cmascenter.org/smoke/documentation/4.5/html/ch04s03.html
SMOKE requires setting an environment variable first, and also sourcing an assign file that will set additional environment variables that are required by the run scripts.

setenv SMK_HOME
cd $SMK_HOME/subsys/smoke/assigns
source ASSIGNS.nctox.cmaq.cb05_soa.us12-nc

To find any errors:
Change directory (cd) to the log file directory using the environment variable $LOGS:

cd $LOGS

Use the grep command to look for the word ERROR in all of the log files by using the * wildcard and the option -A 3 to show 3 lines after the the match

grep -A 3 ERROR *

Please report back with the error messages that you find.

Hello Scott:
Did you change your environment to csh?? SMOKE is designed to work in csh environment. Maybe that step you forgot. If csh environment is not set, than the command “SETENV” is not recognized.
Tell us about it.

Yes, Ernesto is right. All the run scripts and instructions are based on c-shell (no bash shell). Please check your environment to tcsh and let us know how it goes.

1 Like

Thanks for responding so quickly. I went back and tried running it again and made sure that the environment was set to tcsh. The SMK_HOME environment was set using “setenv”. Then, the directory was changed and set up the nctox case using “source ASSIGNS.nctox.cmaq.cb05_soa.us12-nc”. I attached a screenshot of the terminal window with these steps and the error that followed that it could not find the command when invoking the scripts.

In UNIX, although you are in the directory where that script is located, it won’t be found unless you use the following syntax. The ./ indicates look in this directory for the script

./smk_area_nctox.csh

That did enable me to run the script. I did come back with some errors. I used “grep -A 3 ERROR *” syntax that you recommended above and attached what it came back with.!

The log files that are there include more than what you just ran for the area source.
To see the errors associated with that sector, use the wildcard * to filter out some of the log files.

grep ERROR *area*.log

You can see that there is an **ERROR ABORT in the
smkmerge.point.nctox.*log file

It is related to a missing PELV input file. It will need to be created. I will look into this and get back to you.

It looks like the PELV.point.nctox.txt is created when you run the smk_point_nctox.csh script if you have the following environment variables set.

setenv RUN_ELEVPOINT Y # run elevated/PinG sources selection program sources for CMAQ inline processing
setenv SMK_ELEV_METHOD 2 # 2 uses PELVCONFIG file to determine elevated sources for CMAQ inline processing

I can’t tell if the elevpoint.point.nctox.log file was created when you ran the point sector, and if it created the PELV.point.nctox.txt file that the smkreport.point.elevpoint.*log and smkmerge.point.nctox*.log files are looking for.

The smk_point_nctox.csh script should be set up to run the following programs in this order:

SMKINVEN
SPCMAT
GRDMAT
SMKREPORT
TEMPORAL
SMKREPORT
ELEVPOINT
SMKMERGE

These programs will create the following log files:

smkinven.point.nctox.log
spcmat.point.nctox.cmaq_cb05_soa.log
grdmat.point.nctox.us12-nc.log
smkreport.point.inv.nctox.log
temporal.point.nctox.20050710.log
smkreport.point.temporal.nctox.2005191.log
elevpoint.point.nctox.log
smkreport.point.elevpoint.nctox.2005191.log
smkmerge.point.nctox.20050710.us12-nc.log

When you run the a sector, it is important to verify that each log files is successfully completed, as a failure in one program will cause a cascade of failures in the subsequent programs. One way to check is if you get a Normal Completion statement at the end of each program in the LOG directory.

cd $SMK_HOME/data/run_nctox/static/logs
grep ‘Normal Completion’ *point*.log

Checking the smk_point_nctox.csh script the environment variables that you mentioned were configured correctly (RUN_ELEVPOINT & SMK_ELEV_METHOD were both set to Y and 2, respectively)

Checking through the log files that didn’t have a normal completion were…

  1. elevpoint.point.nctox.log
  2. smkmerge.point.nctox.20050710.us12-nc.log
  3. mrggrid.abmp.nctox.20050710.us12-nc.log
  4. smkreport.point.elevpoint.nctox.2005191.log

I was able to find a elevpoint.point.nctox.log file, but as mentioned above it did not have a normal completion. However, I was not able to find a PELV.point.nctox.txt file. I assume that this file wasn’t created and that was at least part of the abnormal completion that elevpoint.point.nctox.log experienced.

Hi Scott,

Please take a look at the error messages in the elevpoint.point.nctox.log. Once we fix this program, the other programs will likely run without a problem.

Liz

From the “smkreportpoint.elevpoint.nctox.2005191.log” the error that was given back was…

ERROR: input file not found: PELV
/home/scotthg/SMK_HOME/data/run_nctox/static/PELV.point.nctox.txt

 Could not open input file "PELV".
 
 *** ERROR ABORT in subroutine OPENREPIN
 Ending program "OPENREPIN".

I went and found the PELVCONFIG file (pelvconfig.inline.txt) so that file is created. From the user manual it seems that the PELV file should be created from the Elevpoint program. I am confused why the error says “PELV” is an input file. Do i need to create a PELV file that would be input to the Elevpoint program? Thanks again for your help!

I think the confusion stems from the PELV file being generated as output by the ELEVPOINT program, but used as input in the SMKREPORT.

Please look first at any ERROR statement in the ELEVPOINT log file:

elevpoint.point.nctox.log

The ELEVPOINT program reads in the PELVCONFIG file and outputs the PELV.point.nctox.txt file.

This is the section of the log file for when I successfully ran ELEVPOINT:

Use PELVCONFIG file to determine PinG sources
File “PELVCONFIG” opened for input on unit: 96
/netscr/lizadams/SMOKE4.5/data/inventory/nei2005/point/pelvconfig.inline.txt
File “PELV” opened for output on unit: 94
/netscr/lizadams/SMOKE4.5/data/run_nctox/static/PELV.point.nctox.txt

Hi Scott,

If you are still having a missing PELV output file from Elevpoing, it means Elevpoint did not run successfully. There has a known issue from Elevpoint causing a segmentation due to the limit of stacksize. You can set your ~/.cshrc input file to set your stacksize to unlimited for a proper Elevpoint run. Please add this following comman in your .cshrc input file and then log out and log back in.

set stacksize unlimited

Give another try on running $SCRIPTS/run/smk_point_nctox.csh and check the Elevpoint log file located at $LOGS directory.

Let us know how it goes.

I added “set stacksize unlimited” to the .cshrc fule and ran the test case, but it came back with the same problem. Reading through the log file it says…

NOTE: Elevated source approach is…
Use PELVCONFIG file to determine srcs for in-line plume rise
NOTE: Plume-in-grid (PinG) approach is…
Use PELVCONFIG file to determine PinG sources
Value for PROMPTFLAG: N returning FALSE

Then, farther down in the file after the “PNTS” & “PSRC” files are opened it continues…

File “PELVCONFIG” opened for input on unit: 96
/home/scotthg/SMK_HOME/data/inventory/nei2005/point/pelvconfig.inline.txt

However, it does not mention the last two lines that you mentioned it should output if it ran correctly. instead, “GRIDDESC” is opened for input on unit 94.
Also, there is a warning for the output file REPPELV mentioned below…

WARNING: output file already exists: REPPELV
/home/scotthg/SMK_HOME/data/reports/nctox/static/reppelv.point.nctox.rpt

 File "REPPELV" opened for output on unit:  95
 /home/scotthg/SMK_HOME/data/reports/nctox/static/reppelv.point.nctox.rpt

When you invoke smk_point_nctox.csh, you should get some kind of error message from Elevpoint run. I am interested in the message from the run. Not the log file. Can you turn off all programs except from Elevpoint and let me know what kind of error you are getting?

To turn off all other programs, change the setting of RUN_* to N

Time-independent programs

setenv RUN_SMKINVEN N # run inventory import program
setenv RUN_SPCMAT N # run speciation matrix program
setenv RUN_GRDMAT N # run gridding matrix program

Time-dependent programs

setenv RUN_TEMPORAL N # run temporal allocation program
setenv RUN_ELEVPOINT Y # run elevated/PinG sources selection program
setenv RUN_LAYPOINT N # run layer fractions program
setenv RUN_SMKMERGE N # run merge program

Let me know what kind of error message you are getting from your terminal screen.

Made the changes to the smk_point_nctox.csh script listed above and ran the script again.

Right before running part 3 it printed…
IOAPIDIR: Undefined variable.

While running part 3 it printed…
Segmentation fault (core dumped)
0.292u 0.004s 0:00.42 69.0% 0+0k 13192+32io 39pf+0w

Then, while for part 4 all that was printed was…
Running part 4, for 20050710…
SCRIPT NOTE: exiting qa_run.csh without running QA.
QA_TYPE = all
RUN_PART1= N
RUN_PART2= N
RUN_PART3= N
RUN_PART4= Y

These seemed to be the only errors that I found from what was printed to the terminal after invoking the script.

Based on my knowledge, that segmentation fault is coming from your stacksize limit. Do you login as bash or tcsh? Make sure you set your stacksize to unlimited correctly. What is your ram memory spec? How much memory you can access for this run?

Hi Scott!

B.H. is right that the segmentation fault is caused by the stacksize limit. I encountered the same problem as you and I solved it by adding “limit stacksize unlimited” to the “Run Elevpoint” section of the smk_point_nctox.csh script (see below):

##Run Elevpoint

setenv RUN_PART3 Y
limit stacksize unlimited
setenv G_STDATE $g_stdate_sav
setenv ESDATE $IOAPIDIR/datshift $G_STDATE 0
source $ASSIGNS_FILE # Invoke Assigns file to set new dates
source smk_run.csh # Run programs
source qa_run.csh # Run QA for part 3
setenv RUN_PART3 N

Hi Scott,

What is your ram memory spec? How much memory you can access for this run? I think you may need a better spec computer for SMOKE run. What kind of linux machine are you running SMOKE?