Hello,

On Mon, Feb 2, 2009 at 5:48 PM,  <[email protected]> wrote:

> OK, this is the problem. fDerivative is a FaceVariable. To get the proper
> order for the discretization, you want the second derivative of f(\phi) to
> be a FaceVariable, so fDerivative needs to be a CellVariable. So, either
>
>  fDerivative = exp(-var) - (b / var**3)
>  (h**3 * fDerivative.getFaceGrad()).getDivergence()
>
> or, better,
>
>  fSecondDerivative = -exp(-faceVar) + (3 * b / faceVar**4)
>  DiffusionTerm(coeff=fSecondDerivative)
>
>


Thank you for your help, but I still have a "small" problem with my
script. Here is the complete script:

======
#!/usr/bin/env python

from fipy import *

nx = ny = 300
mesh = Grid2D(nx=nx, ny=ny, dx=0.25, dy=0.25)

var = CellVariable(name="variable", mesh=mesh)
var.setValue(GaussianNoiseVariable(mesh=mesh,
                                   mean=0.5,
                                   variance=0.01))

#faceVar = var.getArithmeticFaceValue()

if __name__ == "__main__":
    viewer = Viewer(vars=(var,), datamin=0., datamax=1.)

b = 0.5
h = 5.0
steps = 1000

fDerivative = exp(-var)-(b / var**3)
#fSecondDerivative = -exp(-faceVar) + (3 * b / faceVar**4)

diffTerm4 = - DiffusionTerm((h**3, 1))
eq = TransientTerm() == -DiffusionTerm((h**3, 1)) +
(fDerivative.getFaceGrad() * h**3).getDivergence()
#eq = TransientTerm() == -DiffusionTerm((h**3, 1)) +
DiffusionTerm(coeff=fSecondDerivative)

dexp = -5
for step in range(steps):
    dt = min(100, exp(dexp))
    dexp += 0.01
    eq.solve(var, dt = dt)

    if __name__ == '__main__':
        viewer.plot(filename="output_%d.png" %step)
        print 'step',step,'dt',dt

======
but when I am trying to run it, I obtain the following: (after 2 steps
I can see something useful but nothing after step 3, 4, ...)
..
/fipy/solvers/pysparse/linearPCGSolver.py:70: DeprecationWarning:
PyArray_As1D: use PyArray_AsCArray.
  info, iter, relres = itsolvers.pcg(A, b, x, self.tolerance,
self.iterations, Assor)
/fipy/solvers/pysparse/linearPCGSolver.py:70: DeprecationWarning:
PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.
  info, iter, relres = itsolvers.pcg(A, b, x, self.tolerance,
self.iterations, Assor)
step 0 dt 0.00673794699909
step 1 dt 0.00680566449223
thinfilm3.py:33: StagnatedSolverWarning: The solver stagnated.
Iterations: 1. Relative error: nan
  eq.solve(var, dt = dt)
step 2 dt 0.0068740625575
step 3 dt 0.00694314803475
step 4 dt 0.00701292783259
.......

I saw in mail archives that some people obtained the same error and I
tried  to decrese/increase the time step, or to consider
bigger/smaller lattice, but the error still persist.
Maybe I did something wrong, but I can no spot the mistake.

Thank you again,
Ionut

Reply via email to