slimgroup / JutulDarcyRules.jl

JutulDarcyRules: ChainRules extension to Jutul and JutulDarcy
https://doi.org/10.5281/zenodo.7587716
MIT License
11 stars 3 forks source link

number of injection wells #32

Open zhen0z opened 1 month ago

zhen0z commented 1 month ago

Hi,

I’m impressed with this package and was wondering if it supports multiple injection wells. It seems that the examples are focusing on single well scenarios.

Thanks, Zhen

ziyiyin97 commented 1 month ago

Hi Zhen,

Thanks for your interest. Yes this should support multiple injection wells if you use this structure (but I haven't tested it yet and I am currently busy with something else) https://github.com/slimgroup/JutulDarcyRules.jl/blob/8f8f197a0ad4e03bfec5f60b6bb4ce431cd14903/src/FlowRules/Types/jutulVWell.jl#L3C1-L10C1. For example, the code below is expected to give you a multi-injection well with the same injection rate. It might need some light work (probably in this file https://github.com/slimgroup/JutulDarcyRules.jl/blob/8f8f197a0ad4e03bfec5f60b6bb4ce431cd14903/src/FlowRules/Types/type_utils.jl#L31) to enable different injection rates for different wells.

multi_inj_q = jutulVWell(inj_rate, [:Injector, :Injector], [loc1, loc2], startz, endz)

This code base should be maintained by some of my lab mates. @haoyunl2 @apgahlot @gbruer15 could you take a look and see if my proposed solution works? Thanks!

ziyiyin97 commented 1 month ago

And https://github.com/sintefmath/JutulDarcy.jl surely supports multi injection wells.

haoyunl2 commented 1 month ago

Hi Zhen and Francis,

Francis, thanks for the reply. Right now, JutulDarcyRules only supports multiple injection wells with the same injection rate. The example code for the setup is attached below.


using JutulDarcyRules
d = (1.0, 20.0, 3.0)
inj_loc1 = (3, 1) .* d[1:2]
inj_loc2 = (10, 1) .* d[1:2]
prod_loc = (28, 1) .* d[1:2]
irate = rand()
q = jutulVWell{3, Float64}(irate, [:Injector, :Injector], [inj_loc1, inj_loc2], [5 * d[3]], [6 * d[3]])

Can you explain your condition for using the multiple injection wells? I think I can modify the code to adapt different injection rates for different injection wells.

ziyiyin97 commented 1 month ago

@haoyunl2 Can you add a unit test to the test suite to verify e.g. mass conservation when multiple injection well is used, before we reach the conclusion that the multi-injection-well setup is supported?

zhen0z commented 1 month ago

Hi Francis and Haoyun,

Thank you for the fantastic explanation! It was very helpful. I'm also wondering how to set different rates for the production and injection wells. For example, if we have two injection wells and three production wells. It might be more realistic if the total injection rates matched the total production rates. Thanks again!

haoyunl2 commented 1 month ago

Hello Zhen,

Thanks for explaining your situation and suggestions. Currently, JutulDarcyRules does not support different rates for the the multiple wells. But, I will modify the code to support different rates. After the changes are pushed, I will let you know!

zhen0z commented 1 month ago

That'll be great, thanks for the kind support!