Thanks, I now defined h as a variable that automatically updates and the speed is much better now. I'm still getting unexact results... Besides sweeping (which we established doesn't help in my case) and using smaller timesteps/higher grid resolution is there any way to improve the accuracy?
On Wed, May 23, 2012 at 5:56 PM, Jonathan Guyer <[email protected]> wrote: > > On May 23, 2012, at 9:28 AM, Matej Svejda wrote: > >> I want for the H(\alpha, t) function to be automatically updated as >> the Variable t changes. But I have a problem: The value of H is >> defined piecewise, meaning that I have a treshold \epsilon. Depending >> on whether \alpha <= \epsilon or the value of H is calculated >> differently. How do I implement this? I tried something like: >> >> H[0:10] = h1(\alpha, t) >> H[10:] = h2(\alpha, t) >> >> But in this case H is not being updated... Any ideas? > > H = h1(alpha, t) * (alpha < epsilon) + h2(alpha, t) * (alpha >= epsilon) > >> Is it possible that sweeps don't change the value of my variable at >> all? > > Sure. Many problems don't require sweeping. > >> I have the following code: >> >> phi = CellVariable(name="Probability for angle", mesh=mesh, rank=0, hasOld=1) >> for step in range(steps): >> phi.updateOld() >> for sweep in range(sweeps): >> eq.sweep(var=phi, boundaryConditions=BCs, dt=timeStepDuration) >> #normalize >> sum = (phi.getValue() * dAlpha).sum() >> phi.setValue(phi.getValue() / sum) >> .... >> >> With this I get exactly the same result as when I directly use solve. >> Am I doing something wrong? Is the normalization done in the right >> way? > > I would use phi.getCellVolumeAverage() * mesh.getNumberOfCells(), but yes > your normalization seems OK to me. > > I think sweeping doesn't change anything because the equation you have given > us is conservative, so the normalization doesn't do anything. Further, none > of your coefficients are a function of phi, so there are no nonlinearities > that require sweeping. > > > > _______________________________________________ > 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 ]
