Hello,


Following the closed PR: https://github.com/OPM/opm-parser/pull/241 I have 
tried to read and understand how the MULT([XYZ])-? and FAULTS/MULTFLT keywords 
interact. This is my summary of the situation, comments and critique highly 
welcome.



MULTX: This keyword is a multiplier for the transmissibility on the x-face 
between cells (i,j,k) and (i+1,j,k).



MULTX-: This keyword is a multiplier for the transmissibility on the x-face 
between cells (i-1,j,k) and (i,j,k).



Faults: The geometric concept of faults and the resulting NNCs is inferred 
automatically by inspecting the COORDS and ZCORN keywords. The FAULTS keyword 
is not related fault geometry in any way, it is only a convenient way to group 
many cell faces under a common name. The MULTFLT keyword is used to manipulate 
the transmissibilities for all the faces in a fault. The MULTFLT keyword works 
by manipulating the MULT([XY])-? keyword directly. So for these two keywords:



FAULTS

   'F1' 10  10   1 10 1 10 'X'/

   'F1  20  20   1 10 1 10 'X-'/

/



MULTFLT

   'F1' 0.10/

/





The effect will be as



BOX

   10  10 1 10 1 10 /



MULTX

   100*0.10  /





BOX

   20  20 1 10 1 10 /



MULTX-

   100*0.10  /



Well - what about the NNCs created by the faults? I find it quite difficult to 
read this from the manual but my interpretation is as follows:



1.       Assume that cells (i,j,k1) and (i+1,j,k2) have become connected via a 
fault induced NNC. Normal transmissibility calculations involving the 
permeabilities in the two cells and the face area overlap will give an initial 
transmissibility T0 between the two cells.

2.       Through the MULTFLT keyword the MULTX/MULTX- arrays have been updated.

3.       Depending on how the face between (i,j,k1) and (i+1,j,k2) is specified 
in the FAULTS keyword we will either look in MULTX(i,j,k1) or MULTX-(i+1,j,k2) 
for a transmissibility multiplier:



...

                'F1'   I        I        J  J  K1  K1   'X'/    ---   => We use 
MULTX(I,J,K1)

                'F1'   I+1   I+1   J  J K2  K2   'X-'/    ---  => We use 
MULTX-(I+1,J,K2)



                When we have determined the correct MULT array we use the final 
transmissibility T0 * M





So my conclusion from this fencing is:



1.       The full support of MULTFLT behavior requires geometric NNC relations 
when assembling the grid. Actually calculating the final transmissibilities 
mainly involves inspecting the FAULTS keyword and then looking up in the 
correct MULT([XYZ])-? array.

2.       Got to think more about a good way to internalize this in the parser 
code; a pointer to the FAULT/NNC related callsites in opm-core would be good. I 
am moderately optimistic that the approach suggested in the original PR can 
still be used?





Again: any comments critique on this would be highly appreciated - I might be 
messing about completely?!



Joakim


























-------------------------------------------------------------------
The information contained in this message may be CONFIDENTIAL and is
intended for the addressee only. Any unauthorised use, dissemination of the
information or copying of this message is prohibited. If you are not the
addressee, please notify the sender immediately by return e-mail and delete
this message.
Thank you
_______________________________________________
Opm mailing list
[email protected]
http://www.opm-project.org/mailman/listinfo/opm

Reply via email to