On Feb 26, 2008, at 7:16 AM, Etienne Rivard wrote:

After looking at the classes of various terms in the examples, I couldn't find a way to represent $\frac{\partial}{\partial \xi}$. The module examples.phase.impingement.mesh40x1.input has a similar term but it uses the absolute, or magnitude of theta and this is not exactly what I have. I have tried removing the getMag() part so that I define theta.getGrad(), but that doesn't work, it's not the right class.

It's clearer (to me, at least) to represent the spatial derivatives consistently, either as $\frac{\partial}{\partial \xi}$ or as $\nabla $, but not mixed. My preference is for $\nabla$, because it highlights the vector relationships that are tripping you up, I think. E.g.,

\[ \xi^2 \frac{\partial}{\partial t} (cy_F) - \xi^3 \frac{\dot{R}}{R}
   \cdot \nabla (cy_F) + \frac{1}{R} \nabla \cdot
   (\xi^2 c \vec{v} y_F) = \frac{1}{R^2} \nabla \cdot (\xi^2 c \bar{D}
   \nabla y_F) \]


\[ \xi^2 \frac{\partial}{\partial t} (cy_F \theta) - \xi^3
   \frac{\dot{R}}{R} \cdot \nabla (cy_F \theta) +
\frac{1}{R} \nabla \cdot (\xi^2 c \vec{v} y_F \theta) = \frac{1} {R^2}
   \nabla \cdot (\xi^2 c \tilde{D} y_F \nabla \theta) + \frac{1}{R^2}
   \nabla \cdot (\xi^2 c \tilde{D} \theta \nabla y_F) \]

\[ \xi^2 \frac{\partial}{\partial t} (cy_F \Psi) - \xi^3
   \frac{\dot{R}}{R} \cdot \nabla (cy_F \Psi) +
\frac{1}{R} \nabla \cdot (\xi^2 c \vec{v} y_F \Psi) = \frac{1} {R^2} \nabla
   \cdot (\xi^2 c \hat{D} y_F \nabla \Psi) + \frac{1}{R^2} \nabla \cdot
   (\xi^2 c \hat{D} \Psi \nabla y_F) \]

so that you can see that the second term, resulting from the material derivative, is a velocity vector $\xi \frac{\dot{R}}{R}$ dotted with a field gradient $\nabla (cy_F)$, etc. When you multiplied theta.getGrad() times the scalar quantity xi**3 * Rdot / R, you got a vector source, which is incompatible with your scalar governing equation. As far as FiPy is concerned, even in 1D, a scalar field and a vector field are different, even if they hold the same values. So, the first step is to make a vector variable to hold your velocity, and then dot that with the gradient. Assuming you're using FiPy 1.2, the simplest (but not best) way is:

xi = mesh.getCellCenters()[...,0]
velocity = VectorCellVariable(mesh=mesh)
velocity[...,0] = xi * Rdot / R

and then represent the second term of the first equation as

xi**2 * velocity.dot(c * yF.getGrad())

I didn't set the "velocity" to xi**3 * Rdot / R because it isn't dimensionally accurate, but you might find that it makes things a little easier.


Although the dot form will work, we don't recommend it. It's a first- order difference and, depending on magnitude, it can destabilize your equations. In my own work, I've made the transformation $\vec{v} \cdot \nabla \phi \rightarrow \nabla \cdot \vec{v} \phi + \phi \cdot \nabla \cdot \vec{v}$, which allows you to use an implicit convection term and an implicit source term, instead of an explicit source. To do this, you'll need to evaluate "velocity" on the faces:

xiF = mesh.getFaceCenters()[...,0]
velocityF = VectorFaceVariable(mesh=mesh)
velocityF[...,0] = xiF * Rdot / R

and then represent the second term as

PowerLawConvectionTerm(coeff=c * xiF**2 * velocity) - ImplicitSourceTerm(coeff=c * (xiF**2 * velocity).getDivergence())

Please let me know if I've misunderstood what you're trying to do, or if this doesn't work for you.


If you want to transform your results in $\xi$ back into the $r$ frame, we did some similar transformations between laboratory and reference frames in a recent paper

@Article{Boettinger:2007p33,
author = {W. J Boettinger and J. E Guyer and C. E Campbell and G. B McFadden},
journal = {P R Soc A},
pages = {3347--3373},
volume = {463},
year = {2007},
month = {Jan},
language = {English},
keywords = {Similarity Solution, Diffusion, Plane, Deformation, Interdiffusion, Migration, Boltzmann-Matano, Phase Field, Dictra},
doi = {10.1098/rspa.2007.1904},
URL = {http://journals.royalsociety.org/content/n37t3346g7g17787/},
}

We included the heavily-commented FiPy script that we used for the phase field portion in the electronic supplementary material.

Let me know if you can't obtain it and I'll send you a copy.


Reply via email to