We used to have the ability to multiply a term by another field, but this capability was removed some time ago because it didn't work properly a lot of the time.
Even if you could do it, I don't think it would help. Instead of dividing by zero on the b-vector, you'd be multiplying be zero on the matrix. I think you'd end up having the same problem. I think at least some of the problem is that your equation is attempting to directly obtain a stead-state solution. I had somewhat better luck when I introduced relaxation, i.e., add a TransientTerm to your equation and let it evolve in (possibly artificial) time to reach steady state. On Sep 29, 2015, at 4:33 AM, Francisco Vega Reyes <[email protected]> wrote: > Hello, > > I need to solve a non-linear PDE of this type: > > ******************** > eq = DiffusionTerm(coeff = numerix.sqrt(PHI)) == Gamma/numerix.sqrt(phi) > ******************** > > where Gamma is a constant. and the mesh is 2D. > > the problem is de 1/numerix.sqrt(phi), which gives me, depending on > baoundary conditions and system size, a lot of divergence problems. > > is there any way to put it in the other side of the equation, so it is > not a division? > > I do not know how would I express the diffusion term in that case > > Thanks a lot for your help > > > -- > Dr. Francisco Vega Reyes > Departamento de Fisica, Universidad de Extremadura > > > _______________________________________________ > 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 ]
