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