On Thu, Mar 21, 2019 at 1:14 PM Meier Quintin <quintin.me...@mat.ethz.ch> wrote: > > Dear Daniel, > Thanks a lot for the help. I got it to work by adding a transientterm(). > > If I try to use your second trick though: > > eq = (DiffusionTerm(coeff=(1.0), var=phi) - numerix.sin(phi) + phi * > numerix.cos(phi)-ImplicitSourceTerm(numerix.cos(phi)) == > TransientTerm(var=phi))
I think this has the parentheses in the wrong place. Does the code that I included in my last email work for you as is? This (without the line break) ~~~~ eq = TransientTerm() == DiffusionTerm() - numerix.sin(phi) + phi * numerix.cos(phi) - ImplicitSourceTerm(numerix.cos(phi)) ~~~~ > I get the error: > > ExplicitVariableError: Terms with explicit Variables cannot mix with Terms > with implicit Variables. That's because of the parentheses I think. > Also, I dont fully understand the expression: I assume the implicit term is > to neutralize the phi * numerix.cos(phi), so should it not be: > phi*ImplicitSourceTerm(numerix.cos(phi))? ImplicitSourceTerm includes the extra variable multiplier automatically. It put the source into the matrix diagonal to stabilize the solution. > Also: if I would want a second derivative in time in there to solve the > time-dependent problem, would the best way to do that to define a second > variable: > > dphidt=TransientTerm(var=phi) > > and solve the coupled equations or is there a different way? Yes, right, it can be split into two hyperbolic equations, but FiPy doesn't do well with those types of equations. It doesn't have the correct numerical schemes. I think CLAWPACK might be a better bet for that. -- Daniel Wheeler _______________________________________________ fipy mailing list fipy@nist.gov http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]