ReactionMechanismGenerator / RMG-Java

The Java version of RMG: Reaction Mechanism Generator
http://rmg.sourceforge.net/
MIT License
29 stars 36 forks source link

Program hangs when running the make test example (waiting for GATPFit) #300

Open jjoly opened 10 years ago

jjoly commented 10 years ago

I've recently installed version 4 of RMG for one of our students, as she was using still using version 3.3. The installation completed successfully (but I had to remove some residual .mod files that were in the source folders). The problem comes when running the example through the "make test" command.

The program hangs just after the "Reading Lennard-Jones database from (...)" line. When I kill it the error: ^CERROR: jing.chem.GATPFitException: no output from GATPFit at jing.chem.GATPFit.callGATPFit(GATPFit.java:206) comes up. Now, version 3.3 runs just fine with the same compiler/libraries (gfortran 4.4.6).

nickvandewiele commented 10 years ago

Thanks for posting this issue! We will look into this. For now, some questions:

1) are you using Windows or a linux platform and which version? In the past, I experienced some trouble with gfortran 4.6 on Ubuntu 12.04. If on Ubuntu, upgrading gfortran maybe helpful (see instructions in https://github.com/GreenGroup/RMG-Java/issues/251)

2) If using Windows, did you install RMG v4 using the installer on sourceforge (rmg-4.0.1-win32-setup.exe) or did you compile RMG v4 using the source code?

jjoly commented 10 years ago

Ah sorry, I should've been more specific.

This is on a linux cluster (of which I'm not the admin) and the distribution is CentOS 6.3. Now the gfortran version is pretty old (4.4.6) so I'll contact the admin and ask him if he can upgrade the compiler.

But is the GATPFit code changed in version 4 vs version 3.3? As it seems to work fine in version 3.3. I'm thinking maybe this is a named pipe problem?

rwest commented 10 years ago

It's very likely (I can't remember the detailed timeline) that we changed the way RMG interacts with GATPFit between those two versions, so you will need to rebuild GATPFit when you upgrade RMG, even if the old one looked like it was working fine. There is no guarantee the Makefiles will take care of this correctly, so I'd advise you to delete it entirely and start again with the GATPFit (and other things, like DASSL etc) that comes with RMG 4. (Unless you tried that already?)

jjoly commented 10 years ago

Ah, yes. I didn't use anything from RMG 3.3 while compiling RMG 4. My question was a response to the comment about the compiler version. Sorry for the confusion. I did compiled RMG 4 from scratch (with GATPFit, etc).

rwest commented 10 years ago

Looks very much like this problem, that was indeed GFortran's fault: https://github.com/GreenGroup/RMG-Java/pull/257 I had assumed the bug was fixed in Gfortran 4.4.6 (based on the time of the release and when they closed the bug) but am not sure I've ever had that exact version to test. If an upgrade fixes it we should change the "ok versions of GFortran" test in the Makefile.

jjoly commented 10 years ago

Ok, thank you. I'll try to get the compiler upgraded.

chatelak commented 10 years ago

I had exactly the same issue at one point on our cluster and local jobs. I can't be sure about your case, in mine this problem was due to environment variable which were wrong when switching from RMG3 and RMG4 or from RMG4 to RMG3. Have you try to run on the main instead of using the the submission card? Just to check if it is going further. I hope it will help.

jjoly commented 10 years ago

I tried to run the example on the login node too but still the same problem. The $RMG environment variable is set properly, are there more of them? (if so I don't see any mention of them in the documentation).

rwest commented 10 years ago

If you have a GATPfit input file (gatpfit/INPUT.txt from the failed test run?) you could try piping it into GATPfit.exe to see what happens. I think it should behave something like this:

 cat INPUT.txt INPUT.txt INPUT.txt | $RMG/bin/GATPFit.exe

has the output

 The Chemkin polynomial coefficients calculated:
HXD13(1)                C   6H  10          G   250.000  5000.000   995.043    1
 1.55037432E+01 2.40816693E-02-7.98801045E-06 1.22182140E-09-7.05265992E-14    2
-4.75741434E+02-5.55127354E+01 2.98693590E+00 2.85850393E-02 5.42855737E-05    3
-8.67716327E-08 3.36627863E-11 4.28322045E+03 1.62079676E+01                   4
 GATPFIT_HAS_FINISHED_ONE_INPUT
 The Chemkin polynomial coefficients calculated:
HXD13(1)                C   6H  10          G   250.000  5000.000   995.043    1
 1.55037432E+01 2.40816693E-02-7.98801045E-06 1.22182140E-09-7.05265992E-14    2
-4.75741434E+02-5.55127354E+01 2.98693590E+00 2.85850393E-02 5.42855737E-05    3
-8.67716327E-08 3.36627863E-11 4.28322045E+03 1.62079676E+01                   4
 GATPFIT_HAS_FINISHED_ONE_INPUT
 The Chemkin polynomial coefficients calculated:
HXD13(1)                C   6H  10          G   250.000  5000.000   995.043    1
 1.55037432E+01 2.40816693E-02-7.98801045E-06 1.22182140E-09-7.05265992E-14    2
-4.75741434E+02-5.55127354E+01 2.98693590E+00 2.85850393E-02 5.42855737E-05    3
-8.67716327E-08 3.36627863E-11 4.28322045E+03 1.62079676E+01                   4
 GATPFIT_HAS_FINISHED_ONE_INPUT
jjoly commented 10 years ago

Actually, it did not create an input file but I added a print statement in the GATPFit.java file so that it outputs the inputString before calling the program.

This is the output: SPEC HXD13(1) ELEM C 6 ELEM H 10 H298 13.45 S298 86.36705738241646 DLTH 13.45 MWEI 82.0 TEMP 1000.0 TMIN 250.0 TMAX 5000.0 CHEM TEM2 2000.0 NONLINEAR 16 3 TECP 300 29.490000000000002 TECP 400 37.67 TECP 500 44.54 TECP 600 50.12 TECP 800 58.66 TECP 1000 64.95 TECP 1500 74.71000000000001 END

and running GATPFit.exe on it gives The Chemkin polynomial coefficients calculated: HXD13(1) C 6H 10 G 250.000 5000.000 995.043 1 1.55037432E+01 2.40816693E-02-7.98801045E-06 1.22182140E-09-7.05265992E-14 2 -4.75741434E+02-5.55127354E+01 2.98693590E+00 2.85850393E-02 5.42855737E-05 3 -8.67716327E-08 3.36627863E-11 4.28322045E+03 1.62079676E+01 4 GATPFIT_HAS_FINISHED_ONE_INPUT

So then GATPFit seems to work.