EDFM Coupled DP (A Unified Framework for Flow Simulation in Fractured Reservoirs)

201 views
Skip to first unread message

Haiyang Deng

unread,
Mar 19, 2022, 10:47:56 AM3/19/22
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Dear MRST Developers,

In 'ADVANCED MODELING WITH THE MATLAB
RESERVOIR SIMULATION TOOLBOX', Chapter 11.3.2 of the book  contains the following sentence: 'Hence, the implementation of EDFM in the fractures module would follow very closely the structure of the DFM code.'. For EDFM coupled DP, this multicontinuum and discrete fracture and matrix model is of great interest. However, 'type' in the class 'addFracturedDomain' does not have the option of EDFM or pEDFM. Is DFM still written in 'type' when doing EDFN or pEDFM.

I very much hope that in a later version, an example of EDFM or  coupled DP can be added to the 'fracture' model.

Thank you very much to all MRST developers.

I hope you can give me some tips.

Best regards,

Haiyang Deng

Knut-Andreas Lie

unread,
Mar 29, 2022, 1:27:55 PM3/29/22
to Haiyang Deng, MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Dear Haiyang Deng,

I forward the answer from Rafael March & Christine Maier, who developed the fractures module.

________________________________________________________________________________________________

 

 

The fractures module currently has only DFM (2D) and dual-porosity model implementations. These options are considered when passing the argument type=”dfm” and type=”multi_continuum”, respectively.

 

If one proceeds to implement support to EDFM, it would be natural to implement the behavior in the addFracturedDomain method of FracturedDomainManager, as follows:

 

function model = addFracturedDomain(obj, model, type, region, rock, fluid, varargin)

           

            opt = struct('transfer_model', [], 'connection_cell_list', []);

            opt = merge_options(opt, varargin{:});

           

            %% Initializing fractured domain

            if(~isfield(model.G,'FracturedDomains'))

                model.G.FracturedDomains = struct();

                model.G.FracturedDomains.number_virtual_cells = 0;

                model.G.FracturedDomains.number_virtual_connections = 0;

                model.G.FracturedDomains.domains = {};

                model.G.FracturedDomains.half_trans = computeTrans(model.G, model.rock);

            end

           

            %% Creating domain

            if strcmp(type,'multi_continuum')

                transfer_model = opt.transfer_model;

                connection_cell_list = opt.connection_cell_list;

                fdom = obj.multiContinuumDomain(model, region, connection_cell_list, rock, fluid, transfer_model);

                fdom.type = 'multi_continuum';

            elseif strcmp(type,'dfm')

                fdom = obj.dfmDomain(model, region, rock, fluid);

                fdom.type = 'dfm';

            elseif strcmp(type, ‘edfm’)

                  %% HERE GOES EDFM CODE TO CREATE A FRACTURED DOMAIN

            end

 

Hence, EDFM or pEDFM support is still not implemented in this module, but it could probably be straightforwardly done given the general structure of the hwu-fractures package.

________________________________________________________________________________________________

 


--
Knut-Andreas Lie, Professor, PhD
Chief Scientist, SINTEF Digital, Mathematics & Cybernetics, Oslo
Phone: +47 930 58 721 (mobile)
http://folk.ntnu.no/andreas

From: sinte...@googlegroups.com <sinte...@googlegroups.com> on behalf of Haiyang Deng <dhy1507...@gmail.com>
Sent: Saturday, March 19, 2022 3:47 PM
To: MRST-users: The Matlab Reservoir Simulation Toolbox User Group <sinte...@googlegroups.com>
Subject: [MRST Users] EDFM Coupled DP (A Unified Framework for Flow Simulation in Fractured Reservoirs)
 
--
You received this message because you are subscribed to the Google Groups "MRST-users: The Matlab Reservoir Simulation Toolbox User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sintef-mrst...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sintef-mrst/cac4a436-95b1-4a7c-ae89-581d1c30e976n%40googlegroups.com.

Haiyang Deng

unread,
Mar 30, 2022, 3:30:43 AM3/30/22
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Dear  Knut-Andreas Lie, Rafael March & Christine Maier,

First of all, thank you very much for your reply.

 if strcmp(type,'multi_continuum')
    transfer_model = opt.transfer_model;
    connection_cell_list = opt.connection_cell_list;
    fdom = obj.multiContinuumDomain(model, region, connection_cell_list, rock, fluid, transfer_model);
    fdom.type = 'multi_continuum';
elseif strcmp(type,'dfm')
    fdom = obj.dfmDomain(model, region, rock, fluid);
    fdom.type = 'dfm';
elseif strcmp(type, 'edfm')
    fdom = obj.dfmDomain(model, region, rock, fluid);
    fdom.type = 'edfm';
 end

I wrote this part in this way. I don't know whether it is reasonable or not.

 Another point is about the determination of the 'region' part, where DP is through G.cells.centroids determine their spatial location, DFM is through G.faces.centroids determine their spatial location,  and their G is the grid structure of the matrix. However, EDFM is embedded into the matrix grid G through fracplanes.points to determine its spatial location. 

If the above code about edfm is correct (red part), then all about obj.dfmDomain(model, region, rock, fluid). I don't know how to determine the region.

Thank you very much for your help.

Best regards,

Haiyang Deng

Reply all
Reply to author
Forward
0 new messages