Glad I could help On Feb 16, 2016, at 9:53 AM, Djoeke Schoonenberg <[email protected]> wrote:
> Dear Jon, > > Thank you for your explanation about the residuals - it now makes sense to me > that the residuals are larger when using larger coefficients. > > My problem involves evaporation and condensation of ice - the source terms > are constructed such that the amount of ice that evaporates turns into > vapour, and the amount of vapour that condenses turns into ice - so indeed > total mass should be conserved. > > Thanks for the help! > > Best, > > Djoeke > > On 29 Jan 2016, at 20:04, Guyer, Jonathan E. Dr. <[email protected]> > wrote: > >> Djoeke - >> >> The residual returned by sweep is the L2 norm of (L x - b) (see >> https://github.com/usnistgov/fipy/blob/develop/fipy/solvers/solver.py#L143). >> In other words, it is the unscaled deviation from zero of the linear >> discretization of your non-linear PDEs. Because we don't scale the >> residuals, yes, you should expect larger absolute residuals for systems that >> have larger values or larger coefficients. Normalizing the the RHS vector or >> by the matrix diagonal is frequently done, but since there are variety of >> viable normalizations, we opted to leave that in the user's hands. >> >> Typically, when I'm exploring a new problem, I plot the residual for very >> large numbers of sweeps to see the trends of convergence. If the residual is >> not steadily decreasing, there's no point in sweeping longer (with the >> caveat that for some problems the residual increases before it decreases). >> Usually, the residual will bottom out at something related to the solver >> tolerance. Trading off time steps, residual cutoff and solver tolerance is >> pretty much trial and error, as far as I can tell. >> >> Note: Unless your source is constructed in a conservative way (e.g., as the >> divergence of a flux), then there's no reason to expect mass conservation. >> >> - Jon >> >> On Jan 29, 2016, at 10:41 AM, Djoeke Schoonenberg >> <[email protected]> wrote: >> >>> Dear FiPy developers, >>> >>> I am using FiPy to solve a coupled system of two partial >>> differential equations governing the >>> evolution of two surface densities, including convection, >>> diffusion and source terms. To check if >>> everything was going well, I checked if mass >>> was conserved in the system by checking if >>> the inflowing mass equals the outflowing mass. >>> This was only the case if I set the desired residual low enough in: >>> >>> res = 1e10 >>> nres = 0 >>> while res>1e-2: >>> res = Eq.sweep(dt=timestepduration) >>> nres += 1 >>> >>> But I have no clue how to determine the desired residual other than >>> by just checking if mass is >>> conserved in the solution. >>> >>> Could anybody explain to me what the residuals actually mean? >>> If one is working with very large numbers in FiPy, can the desired >>> residuals then also be larger >>> than if one is working with small numbers, >>> and get the same accuracy? >>> >>> Thanks a lot in advance! >>> >>> Best regards, >>> >>> Djoeke >>> >>> _______________________________________________ >>> fipy mailing list >>> [email protected] >>> http://www.ctcms.nist.gov/fipy >>> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] >> >> >> _______________________________________________ >> fipy mailing list >> [email protected] >> http://www.ctcms.nist.gov/fipy >> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] > > > _______________________________________________ > fipy mailing list > [email protected] > http://www.ctcms.nist.gov/fipy > [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] _______________________________________________ fipy mailing list [email protected] http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
