Let me add that if you performed such an analysis, that would be a welcome 
addition to the example, especially if it shows that your decomposition scheme 
is superior.

On Feb 23, 2015, at 8:44 AM, Guyer, Jonathan E. Dr. <[email protected]> 
wrote:

> I don't know. The form you write down in "split plan 1" is what we write as 
> eq3, but you can see that we don't use eq3 in our solution. As I said the 
> other day, the form of eq2 in our example is chosen because that Taylor 
> expansion has generally better convergence properties than other forms of 
> that source. 
> 
> There are a multitude of ways to decompose the problem. Your "split plan 2" 
> might be better. Run time is one metric, although not a great one. I'd look 
> at the convergence rate on the residuals, as well as compare the solutions 
> from the different schemes to see if they're solving to the same accuracy.
> 
> On Feb 23, 2015, at 4:47 AM, Ronghai Wu <[email protected]> wrote:
> 
>> If "psi = epsilon**2*laplace phi"(Split plan 2 in codes) is a better choice 
>> than "psi = dfdphi - epsilon**2*laplace phi"(Split plan 1 in codes)? Because 
>> "Split plan 2" runs much faster than "Split plan 1". Is there any hidden 
>> trouble using "Split plan 2"?
>> 
>> 
>> import fipy as fp
>> nx = 64
>> ny = 64
>> mesh = fp.Grid2D(nx=nx, ny=ny, dx=1., dy=1.)
>> 
>> psi = fp.CellVariable( hasOld=1,mesh=mesh )
>> phi = fp.CellVariable( mesh = mesh, value =
>>      fp.GaussianNoiseVariable(mesh=mesh, mean=0.5,
>>      variance=0.01).value, hasOld=1 )
>> 
>> 
>> D = a = 1.
>> epsilon = 0.5
>> dfdphi_ = a**2 * (1 - phi) * (1 - 2 * phi)
>> d2fdphi2 = a**2 * (1 - 6 * phi * (1 - phi))
>> 
>> #Split plan 1
>> eq1 = (fp.TransientTerm(coeff=1.,var=phi) ==
>>      fp.ImplicitDiffusionTerm(coeff=D, var=psi))
>> 
>> eq2 = (fp.ImplicitSourceTerm(coeff=1., var=psi)
>>      == fp.ImplicitSourceTerm(coeff=dfdphi_, var=phi) -
>>      fp.DiffusionTerm(coeff=epsilon**2, var=phi))
>> 
>> 
>> #Split plan 2
>> #eq1 = (fp.TransientTerm(coeff=1.,var=phi) ==
>>      fp.ImplicitDiffusionTerm(coeff=d2fdphi2, var=phi) +
>>      fp.ImplicitDiffusionTerm(coeff=-D, var=psi))
>> 
>> #eq2 = (fp.ImplicitSourceTerm(coeff=1.,
>>      var=psi) == fp.DiffusionTerm(coeff=epsilon**2, var=phi))
>> 
>> 
>> eq = eq1 & eq2
>> dt = 0.5
>> viewer = fp.Viewer(vars=(phi, psi))
>> for t in range(1000): 
>> phi.updateOld()
>> psi.updateOld()
>> res = 1.e5
>> while res > 1.e-1:
>> res = eq.sweep(dt=dt)
>> print res
>> viewer.plot()
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> On 20/02/15 19:22, Guyer, Jonathan E. Dr. wrote:
>>> On Feb 20, 2015, at 6:39 AM, Ronghai Wu <[email protected]>
>>> wrote:
>>> 
>>> 
>>>> (1) The 4th-order is split by "psi = d2fdphi2(phi-phiold) + dfdphi - 
>>>> epsilon**2*laplace phi". I do not understand why we need 
>>>> d2fdphi2(phi-phiold)?
>>>> 
>>> See the discussion on linearization of the source in 
>>> 
>>> 
>>> http://www.ctcms.nist.gov/fipy/examples/phase/generated/examples.phase.simple.html
>>> 
>>> 
>>> You could write "psi = dfdphi - epsilon**2*laplace phi", but dfdphi would 
>>> be a fully explicit source. By expanding 
>>> 
>>>  source = source_old + d(source)/d(phi) (phi - phi_old)
>>> 
>>> you get a more implicit version of the same term, with better convergence 
>>> properties.
>>> 
>>> 
>>> _______________________________________________
>>> fipy mailing list
>>> 
>>> [email protected]
>>> http://www.ctcms.nist.gov/fipy
>>> 
>>>  [ NIST internal ONLY: 
>>> https://email.nist.gov/mailman/listinfo/fipy
>>> ]
>>> 
>> 
>> -- 
>> ------------------------------------------
>> Ronghai Wu
>> 
>> Institute of Materials Simulation (WW8)
>> Department of Materials Science and Engineering
>> University of Erlangen-Nürnberg
>> Dr.-Mack-Str. 77, 90762 Fürth, Germany
>> 
>> Tel. +49 (0)911 65078-65064
>> 
>> _______________________________________________
>> 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 ]

Reply via email to