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 ]

Reply via email to