On Mon, Dec 16, 2013 at 2:40 PM, Charles Reid <charlesre...@gmail.com> wrote:
> Hi Daniel,
>
> Thanks very much for your response. I am interested in using the class for
> solving a catalysis problem, where surface species coverages evolve with
> time. From the documentation, I've gathered that the class solves the same
> equations I'm using to model my system (& I'm interested in extending the
> class to three or more surface variables).

I've solved for three surface variable in some of my electrochemistry
work. Getting the interactions right can be quite difficult.

> Is the time-evolution tied to the interface's/zero-level-set's
> time-evolution, such that for each change in location of the interface, a
> steady-state equation is solved, and the time-evolution of the equation is
> kind of "implicit" with the interface's time-evolution (which is how I
> interpret your comment about material being pushed by the zero level set)?

Yes. That is exactly how it works.

> If this is the case, why would there be a transient term in the equation
> defined in the AdsorbingSurfactantEquation class, instead of solving a
> steady-state equation and calling solve() when the interface moves?

Basically, the equation is multiplied through by "dt" so the transient
term is just a sort of update term. Take a look at the following

    https://docs.google.com/file/d/0B4101gT3tHveVUhZZHRwXzlCSDg/edit

Equation 26 does not have a time step associated with it. The time is
only needed in the adsorption term.

> More numerical experiments have raised more questions. I tried varying the
> timestep, to see what effect it had, and it ended up changing the solution.

It will, but it isn't doing anything sensible if the time step is
anything other than 1. It should probably use source terms instead of
a transient term. It would make this a lot less confusing.

> I've attached a simple example (ASE.py contains the
> AdsorbingSurfactantEquation class, same as in the git repository but with
> the patch applied so that dt can be changed, and simpleExample.py contains a
> simple 1D example with a 10-cell one-dimensional domain, and a zero-level at
> the middle of the domain) and its output (output.png). The simple example
> plots the interface variable value with time; it increases, but at a
> decreasing rate, which makes sense physically, since as the surface coverage
> increases, the rate at which the surface species is adsorbed decreases. I've
> run it for several values of timesteps, and the timestep apparently affects
> the solution. I'm confused as to what makes a value of dt=1.0 (the
> hard-coded dt value in AdsorbingSurfactantEquation in the git repository)
> special?

It is totally confusing. Hopefully reading the above link will help
explain. Adding the time step as you have done essentially means that
your time step is 'dt**2'.

> And why do you think it shouldn't take a timestep at all?

It needs a time step for the rate of adsorption. No time step is
needed simply for evolving a fixed surfactant quantity, which is
neither desorbing or adsorbing. The problem is that the equation
doesn't really fit neatly into the FiPy framework very well. It
probably belongs more with the level set module.

> Thanks for the help!

I hope it does help.

-- 
Daniel Wheeler
_______________________________________________
fipy mailing list
fipy@nist.gov
http://www.ctcms.nist.gov/fipy
  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]

Reply via email to