On 15.11.19 17:16, lc wrote:
Dear Dumux team,

I'd like to ask whether is available in the last version of Dumux to simulate the presence of surfactant in water/oil. Specifically:
1. Relative permeability curve depending on surfactant concentration;

2. Water viscosity depending on surfactant concentration;

3. Adsorption/desorption:  mass of surfactant ad/de-sorbed to a unit mass of rock (typically Langmuir-like type model)


As I see, such features are not directly available, maybe through the use of tables? Anyway, could you, comment about it and in case point me somewhere or to some development branch, please?

Dear Lorenzo,

you are right that these things are not "directly" available since the required constitutive relations are highly problem dependent. However all three things you want are possible with relatively little work. Here is a suggestion on how to implement them:

1) You have to introduce a custom "MaterialLaw" that has the surfactant concentration as additional parameter in the correponding "MaterialLawParams" class. The function "materialLawParams" in the spatial parameter class has an argument "elemSol" which gives the access to all solution values in your element. Hence, you will have access to the surfactant concentration (directly if it's a primary variable, or by computing it), so you can create your materialLawParameter object, with this parameter set and return.

2) You have to implement your custom "FluidSystem" class that can, e.g., inherits from whatever fluid system you used before and overload the viscosity function. You can use the surfactant concentration passed in through the fluidState from the VolumeVariables class.

3) Depends on if you want to model an equilibrium process or a non-equilibrium process. For non-equilibrium, you can use the mineralization models in Dumux (e.g. 2pncmin). They add another equation for balancing the mass of surfactant adsorbed on the solid matrix. The exchange between solid and fluid is implemented as a regular source term in the "Problem" class. If you want an equilibrium process, you probably just want to add something to your storage term. To this end, you can implement a custom "LocalResidual" and add the term in the function "computeStorage".

I know that some DuMux users already implemented all 3 things successfully but I don't if there is code and if these people want to share it. So maybe someone else could answer here?

Best wishes

Timo




Best regards,

Lorenzo Campoli

_______________________________________________
Dumux mailing list
Dumux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

--
_______________________________________________________________

Timo Koch                              phone: +49 711 685 64676
IWS, Universität Stuttgart             fax:   +49 711 685 60430
Pfaffenwaldring 61        email: timo.k...@iws.uni-stuttgart.de
D-70569 Stuttgart            url: www.hydrosys.uni-stuttgart.de
_______________________________________________________________

_______________________________________________
Dumux mailing list
Dumux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to