OPM / opm-parser

http://www.opm-project.org
11 stars 44 forks source link

Fatal error processing COPY keyword. #1115

Open OPMUSER opened 7 years ago

OPMUSER commented 7 years ago

Fatal error processing COPY keyword. when trying to copy MULTNUM in REGIONS section, using the following keywords:

-- CREATE FIPNUM BASED ON PETREL ZONES AS PER MULTNUM
-- 
-- -- SOURCE   DESTIN. --   ---------- BOX ---------                
--                          I1  I2   J1  J2   K1  K2                
COPY                                                                
   'MULTNUM'   'FIPNUM'     1*  1*   1*  1*   1*  1* / CREATE FIPNUM
/                                                                   

Note when running in parallel mode this causes a segmentation fault with no warning messages, if one then runs the same deck in serial mode one sees the message - see the attached file. PAS-P50-C55.zip

joakim-hove commented 7 years ago

OK - I think the problem is that the MULTNUM keyword is not defined; when processing COPYrecords like:

COPY                                                                
   'MULTNUM'   'FIPNUM'     1*  1*   1*  1*   1*  1* / CREATE FIPNUM
/

the parser expects the source keyword - i.e. MULTNUM in this case, to be explicitly defined in the deck. This restriction makes sense IMO in the case of keywords like e.g. PERMX where no sensible default is defined - i.e. I would consider this:

COPY
   'PERMX'   'PERMY' /
/

to be a user error if the PERMX has not been defined in the deck. However - in the case you mention there is a well defined default for the MULTNUM keyword, and automatic creation would be a valid alternative. So all in all - yes I agree this is a bug; although quite easy to work around by either assigning values to MULTNUM or assigning directly to FIPNUM

OPMUSER commented 7 years ago

@joakim-hove The MULTNUM keyword is defined in the GRID section, so it should be available in the REGIONS section to duplicate Eclipse's behavior. So this is a bug as the array is defined.

I agree the work around is straight forward, but we should try to fix this if we can. Most engineers will just take their existing Eclipse decks and run them with OPM Flow to compare the results, if there are too many issues they will just give up.

joakim-hove commented 7 years ago

The MULTNUM keyword is defined in the GRID section, so it should be available in the REGIONS section to duplicate Eclipse's behavior. So this is a bug as the array is defined.

OK - I agree. I understand what the bug is - slightly uncertain about the fix.

joakim-hove commented 7 years ago

This: https://github.com/OPM/opm-parser/pull/1116 should have fixed the MULTNUMissue - can you try it?

OPMUSER commented 7 years ago

How do I to get the binary - I'm not a developer so I don't have a build system.

akva2 commented 7 years ago

continuous deployment is on the road map, but it is not there right now. i can quickly build some packages for you, which platform ?

OPMUSER commented 7 years ago

DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

akva2 commented 7 years ago

took a bit longer than anticipated. due to substantial changes in libecl and opm-parser since last release i had to butcher packaging somewhat. thus these packages have not gone through my usual quality control, but i think they should do the job. for this reason i did not want to push them to a ppa, we do not want others using these by accident.

note you have to remove the stable packages before install, it will NOT update cleanly (due to things above and i had to cut some corners). there is no upscaling package as that shouldn't be needed here.

i have sent a dropbox link to your gmail with the tarball.

0) sudo apt-get remove libopm libert.ecl 1) tar jxvf opm-2017.08.10.tar.bz2 2) cd opm-2017.08.10 3) sudo dpkg -i *deb

note the packages are unsigned so it may complain about that.

you will also have to manually remove these before you can reinstall the stable packages.

OPMUSER commented 7 years ago

@qkva2: When I go to extract the tar file I get this error:

ls
opm-2017.10.08.tar.bz2
baxendale@baxendale-VirtualBox:~/Downloads$ sudo tar jxvf opm-2017.08.10.tar.bz2tar (child): opm-2017.08.10.tar.bz2: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
baxendale@baxendale-VirtualBox:~/Downloads$ pwd
/home/baxendale/Downloads
baxendale@baxendale-VirtualBox:~/Downloads$
OPMUSER commented 7 years ago

Found it wrong filename, :-)

akva2 commented 7 years ago

heh, sorry about that. doing non-norwegian dates is hard for me ;)

OPMUSER commented 7 years ago

@akva2: I re-ran my test case with the new version as shown below:

PS1='\W\$pwd
/media/sf_Linux/OPM Flow/Pasca-A
Pasca-A$ flow PAS-P50-C55.DATA |& tee PAS-P50-C55.LOG
**********************************************************************
*                                                                    *
*                 This is flow (version 2017.10-pre)                 *
*                                                                    *
* Flow is a simulator for fully implicit three-phase black-oil flow, *
*            and is part of OPM. For more information see:           *
*                       http://opm-project.org                       *
*                                                                    *
**********************************************************************

Reading the deck file 'PAS-P50-C55.DATA'
Pasca-A$ ls PAS-P50-C55.*
PAS-P50-C55.DATA  PAS-P50-C55.ERR1  PAS-P50-C55.ERR2  PAS-P50-C55.ERRS  PAS-P50-C55.LOG  PAS-P50-C55.zip
Pasca-A$ 

But the run still does not run and still does not produce a PRT or DBUG file.

joakim-hove commented 7 years ago

But the run still does not run and still does not produce a PRT or DBUG file.

OK - I must admit I thought this was more of a simulator problem than anything else; but maybe this is staill about the parser. Good if you can provide any error messages, or run flow in the debugger:

gdb flow_ebos
gdb> catch throw
gdb> run PAS-P50-C55.DATA

 **********************************************************************
 *                                                                    *
 *                 This is flow (version 2017.10-pre)                 *
 *                                                                    *
 * Flow is a simulator for fully implicit three-phase black-oil flow, *
 *            and is part of OPM. For more information see:           *
 *                       http://opm-project.org                       *
 *                                                                    *
 **********************************************************************

gdb> bt
OPMUSER commented 7 years ago

Joakim, Well a little bit more information :-)

gdb flow_ebos
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from flow_ebos...(no debugging symbols found)...done.
(gdb) catch throw
Catchpoint 1 (throw)
(gdb) run PAS-P50-C55.DATA
Starting program: /usr/bin/flow_ebos PAS-P50-C55.DATA
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffec406700 (LWP 14321)]
**********************************************************************
*                                                                    *
*                 This is flow (version 2017.10-pre)                 *
*                                                                    *
* Flow is a simulator for fully implicit three-phase black-oil flow, *
*            and is part of OPM. For more information see:           *
*                       http://opm-project.org                       *
*                                                                    *
**********************************************************************

Reading the deck file 'PAS-P50-C55.DATA'
[Thread 0x7ffff7fc4740 (LWP 14317) exited]

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb) bt
No stack.
(gdb) q
Pasca-A$ 
joakim-hove commented 7 years ago

Reading the deck file 'PAS-P50-C55.DATA' [Thread 0x7ffff7fc4740 (LWP 14317) exited]   Program terminated with signal SIGKILL, Killed.

OK - that was really brutal - can you share the input deck PAS-P50-C55 with me in some way?

OPMUSER commented 7 years ago

Yep, I thought you might say that. Unfortunately, I cannot share the model as it is a client's model and I'm under a CA.

If you know where this is happening and you wish to pursue this further, then if you put some debug in the code and send me a new version of Flow then I'll run it with the deck again. If you could write out the messages as the deck is being processed for example, then may be we can find which keywords are causing the problem and then may be I can build a test case with same issue. At the moment I have no idea what is causing this.

alfbr commented 7 years ago

I am afraid it necessary to be able to reproduce the problem in order to fix it. Sharing datasets is always very challenging since they are conceived as valuable and proprietary to the owner. However, I do believe it is possible to get around it. @OPMUSER since you have already identified the offending keyword, are you able to create a dummy deck (which is unproblematic to share) based on that keyword, or combination of keywords, that reproduces the bug? Sorry to impose this burden on you, but I am afraid that will be necessary here. Moreover, such test decks are very welcome to our test-suite.