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
