-- _________________________________________________ Timo Koch phone: +49 711 685 64676 IWS, Universität Stuttgart fax: +49 711 685 60430 Pfaffenwaldring 61 email: [email protected] D-70569 Stuttgart url: www.iws.uni-stuttgart.de/en/lh2/ _________________________________________________
> On 15. May 2020, at 18:25, Dmitry Pavlov <[email protected]> wrote: > > Hello, > > I am struggling to do a simulation in DuMux 3.1 with a two-phase flow in > porous medium (oil + aqueous solution containing a polymer and a surfactant). > I am using the 2pnc model and the Box method, because it allows a fully > implicit solution taking into account the dependence of material parameters > on the pressure gradient. I am using a numeric FVAssembler and UMFPack as the > linear backend of the Newton method. > > The simulation works, but is hugely impractical because the time convergence > is slow. The time step goes down to the length of a few seconds. > > So I am considering using an analytical Jacobian here. Why so? Because of two > clues: > > 1. I once had trouble with a numerical Jacobian causing the method to > diverge, and analytical Jacobian helped (after a bug in its implementation > was fixed) [1]. > > 2. There are not many software packages claiming to be able to do this kind > of simulation. One of those who do is MRST, and it advertises its automatic > differentiation approach [2]. (It also says that it uses TPFA, but it is not > a good option with DuMux in this case because there is no possibility with > TPFA to account for the pressure gradient on the current step [3]). > > > Now, I can not compile my program with FVAssembler<TypeTag, > DiffMethod::analytic>, because the addFluxDerivatives method that I am using > gives an error, saying "Only fluids with constant viscosities are allowed!". > The viscosity of aqueous phase in my case is not constant because it depends > on polymer concentration. Is there any example of analytic flux derivatives > implementation for this case? If not, what would be the general > recommendations on how I can implement such a thing myself? > > If you think that I am not on the right path and the numeric differentiation > should not be a problem, and the problem is something else, feel free to let > me know, too. Thank you. Hi Dmitry, bad Newton convergence can have many reasons. Could depend on the BC or general problem setup. The derivatives could also be a problem but there is now way to find the exact reason without a close investigation of the actual setup. You may get better convergence if you think about how you can maybe remove some non-linearities and couplings in your equations. Maybe (I have no idea) some couplings in your specific model are quite weak but not very important. Then the approximation of the Jacobian could be bad and you would be better off removing the coupling completely. As for analytical Jacobian: as the error suggests, the TwoPIncompressibleLocalResidual you are using assumes constant viscosity. This is because it’s not generally possible to get the exact derivative because we don’t know what Fluid System is used. (AD would be an option but currently not implemented in Dumux). In your case, if you know the derivative of the viscosity with respect to all primary variables, you can provide your own implementation of TwoPIncompressibleLocalResidual. Basically use product rule in terms where the viscosity occurs. I personally don’t know of any example implementation. Then, just set your custom class as the “LocalResidual” property. If the derivative is very complicated you could also use numeric differentiation for the viscosity or try to locally use an AD library to evaluate the derivative. Good luck Timo > > > Best regards, > > Dmitry > > > [1] https://listserv.uni-stuttgart.de/pipermail/dumux/2020q2/002492.html > [2] https://www.sintef.no/projectweb/mrst/modules/ad-eor/ > [3] https://listserv.uni-stuttgart.de/pipermail/dumux/2020q2/002516.html > > _______________________________________________ > Dumux mailing list > [email protected] > https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
_______________________________________________ Dumux mailing list [email protected] https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
