On May 12, 2013, at 10:23 PM, Chuck Holbert <[email protected]> wrote:
> I'm looking for a bit of assistance in how to organize a FiPy script I am > trying to write. I am trying to model transient 1D diffusion into and out of > soil with an exponentially decaying boundary condition. I assuming a > starting concentration and that diffusion occurs for an initial using a low > first-order rate constant (-0.05/yr). After this period, an increased rate > is applied (-1.0/yr) for three years and then the rate decreases back to the > initial value (-0.05/yr). > > The script I have is below. I'm not sure the way I am setting my left > boundary condition is correct. Any advice we be greatly appreciated. I see two issues with the way you calculate the boundary condition: valueLeft = phi[0] * numerix.exp(-1.0*(time-43)) The most significant one is that `phi[0]` returns a Variable quantity, so the precursor of the exponential will change at every timestep as phi changes. You can fix that by using `phi[0].value`. The other issue is more a matter of generality. `phi[0]` happens to work because this is a 1D problem and the Grid1D topology has the left-most cell in index 0. FiPy is intended to deal with multidimensional domains and unstructured meshes, so if you ever wanted to do this problem on a different mesh, you'd find that `phi[0]` wouldn't work at all. I recommend always writing it the "correct" way, even in 1D: valueLeft = phi.faceValue[mesh.facesLeft.value].value * numerix.exp(-1.0*(time-43)) i.e., you want the left-most face value and you want the static value at the beginning of the time period. It would probably be slightly more accurate to get the value from the previous boundary condition: phi0 = phi.faceValue[mesh.facesLeft.value].value del phi.faceConstraints valueLeft = phi0 * numerix.exp(-1.0*(time-43)) If you calculate the prefactor after you delete the face constraints, then you get the leftmost cell value, which is not quite the same as the leftmost face value. _______________________________________________ fipy mailing list [email protected] http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
