Thanks Jon and Daniel. I got the idea now. I'll put all relation definition
outside of sweep and have the coefficients updated for each sweep.

Best regards,
Rose


On Tue, Feb 18, 2014 at 6:30 PM, Guyer, Jonathan E. Dr. <
[email protected]> wrote:

> The expression I wrote before:
>
>   kp['NO3'] = (k['R2'] * k_O2_NO3/(k_O2_NO3 + O2.var)) * (Qcc != 0)
>
> is a lazily evaluated binop that will be set to zero whenever Qcc == 0,
> but is the desired expression otherwise.
>
>
> As to your code, it's too complicated for me to analyze in detail. I
> *strongly* recommend you work out the structure of your code with two or,
> at most, three reactions.
>
> I can say, thought, that none of the coefficients you are setting between
> 307-373 have any bearing on your solution because m.eqI has already been
> defined in terms of the initial values of those coefficients. Writing
>
>   kp['FeS'] = k['R13'] * O2.var
>
> (or whatever), simply creates a new thing and puts it in the dictionary kp
> with key 'FeS'. It discards the reference to whatever was in that dict slot
> before. m.eqI doesn't see that, though; it's still defined in terms of
> references to what was originally in the dict.
>
> P.S. Please keep these questions on the list. We don't have the resources
> to provide private help.
>
> On Feb 15, 2014, at 4:14 PM, yuan wang <[email protected]> wrote:
>
> > Dear Jon and Daniel,
> >
> > Sorry I didn't make myself clear about the objective. What I want to do
> is to update the nonlinear source term for each sweep. I would like to use
> the lazy evaluation, but the problem is that the nonlinear coefficient is
> dependent on another cellvariable (Qcc). (If Qcc is zero, the reaction
> stops.) So, I feel I have to put that within the sweeping loop to update
> it, because it is within the loop that I could get a real time Qcc
> evaluation.
> >
> > Please find my code attached. Line 307-373 are updating the coefficients
> for implicit source term and explicit source term. It is running and
> converges after 18 sweeps. I think there should be a way to improve the
> efficiency, but as a beginner I'm not sure how to do that. Would you please
> advise me how it could be improved?
> >
> > Thanks for your support!
> >
> > Best regards,
> > Rose
> >
> >
> >
> > On Tue, Feb 11, 2014 at 2:21 PM, Guyer, Jonathan E. Dr. <
> [email protected]> wrote:
> >
> > On Feb 11, 2014, at 11:39 AM, Daniel Wheeler <[email protected]>
> wrote:
> >
> > > On Mon, Feb 10, 2014 at 9:02 PM, yuan wang <[email protected]>
> wrote:
> > > My guess is that "copy()" just returns a plain old CellVariable
> > > without its dependencies. Basically, the "copy()" is not exactly the
> > > same object as the original.
> > >
> > > Unfortunately, I'm not sure what you are trying to do above, I think
> > > I'd need to see the full traceback to debug it. My hunch is that you
> > > should be doing either
> > >
> > >    kp['NO3'][:] = numerix.array((k['R2'] * k_O2_NO3/(k_O2_NO3 +
> O2.var)))
> > >
> > > to cast the RHS to be an array rather than a variable, if you want to
> > > not have kp['NO3'] updated via lazy evaluation.
> >
> > Likewise, I don't understand what the actual objective is, here.
> >
> > I suspect you *do* want lazy evaluation and that what should be written
> is something like
> >
> >   kp['NO3'] = (k['R2'] * k_O2_NO3/(k_O2_NO3 + O2.var)) * (Qcc != 0)
> >
> > and then *never re-write kp['NO3'] again*!!! If you are using FiPy
> properly, there should never be a "when it hits to the next time" because
> you only write expressions like this once and you let lazy evaluation take
> care of updating the values.
> >
> > .copy() is a red herring. It apparently does produce a CellVariable, but
> I don't think it should.
> >
> > Please work through some of FiPy's examples that involve non-linear
> coefficients. These would be some good ones to start with:
> >
> >
> http://www.ctcms.nist.gov/fipy/examples/diffusion/generated/examples.diffusion.mesh1D.html
> >
> http://www.ctcms.nist.gov/fipy/examples/phase/generated/examples.phase.simple.html
> >
> http://www.ctcms.nist.gov/fipy/examples/phase/generated/examples.phase.quaternary.html
> > _______________________________________________
> > fipy mailing list
> > [email protected]
> > http://www.ctcms.nist.gov/fipy
> >   [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
> >
> >
> >
> > --
> > Yuan (Rose) Wang
> > PhD Candidate, Tufts University
> > Cellphone: 617-699-8006
> > <Sed2K_15_Feb_Monod.py>
>
>
> _______________________________________________
> fipy mailing list
> [email protected]
> http://www.ctcms.nist.gov/fipy
>   [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
>



-- 
Yuan (Rose) Wang
PhD Candidate, Tufts University
Cellphone: 617-699-8006
_______________________________________________
fipy mailing list
[email protected]
http://www.ctcms.nist.gov/fipy
  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]

Reply via email to