Feel free to add any relevant comments to the issue, https://github.com/usnistgov/fipy/issues/690.
On Mon, Jan 13, 2020 at 1:36 PM Daniel Wheeler <daniel.wheel...@gmail.com> wrote: > > Hi Chaitanya, > > I think you're correct. It seems that term should be multiplied by the > time step. The tests all pass with your change. Would you like to > submit a pull-request for that change? > > The way time stepping works is a bit weird in that equation so it > wasn't clear to me what my intention was when I wrote that code. > Anyway, I'll add it as an issue in FiPy. > > Thanks! > > On Thu, Jan 9, 2020 at 9:13 PM Chaitanya Joshi <chaitanya.4...@gmail.com> > wrote: > > > > Hi, > > > > I am working with the leveler.py script in the level set examples. The > > script chooses dt value for solving the equations based on the maximum > > velocity of the interface at any given instant and the CFL number. > > > > Script: leveler.py > > dt = cflNumber * cellSize / extOnInt.max() > > > > I changed that to a user specified fixed dt. To test the changes I made, I > > ran the script for a flat interface and plotted acceleratorVar.interfaceVar > > as a function of time for different dt values. Unfortunately, I was unable > > to get dt convergence. By trial and error, I found out that if I call > > AdsorbingSurfactantEquation with consumptionCoeff=None, > > I get dt convergence. I then went through the > > AdsorbingSurfactantEquation.py to see if I can find something. I think > > there is a dt term missing in the AdsorbingSurfactantEquation.py. > > > > Script: AdsorbingSurfactantEquation.py > > self.eq = TransientTerm(coeff = 1) - > > ExplicitUpwindConvectionTerm(SurfactantConvectionVariable(distanceVar)) > > self.dt = Variable(0.) > > mesh = distanceVar.mesh > > adsorptionCoeff = self.dt * bulkVar * rateConstant #dt > > multiplication > > spCoeff = adsorptionCoeff * distanceVar._cellInterfaceFlag > > scCoeff = adsorptionCoeff * distanceVar.cellInterfaceAreas / > > mesh.cellVolumes > > self.eq += ImplicitSourceTerm(spCoeff) - scCoeff > > if otherVar is not None: > > otherSpCoeff = self.dt * otherBulkVar * otherRateConstant * > > distanceVar._cellInterfaceFlag #dt multiplication > > otherScCoeff = -otherVar.interfaceVar * scCoeff > > self.eq += ImplicitSourceTerm(otherSpCoeff) - otherScCoeff > > > > if consumptionCoeff is not None: > > self.eq += ImplicitSourceTerm(consumptionCoeff) #This is > > where I think a dt term is missing > > > > I believe the line should be > > if consumptionCoeff is not None: > > self.eq += ImplicitSourceTerm(consumptionCoeff*self.dt) > > > > Please let me know if I am thinking on the right lines. > > > > Regards, > > Chaitanya > > > > > > > > _______________________________________________ > > fipy mailing list > > fipy@nist.gov > > http://www.ctcms.nist.gov/fipy > > [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] > > > > -- > Daniel Wheeler -- Daniel Wheeler _______________________________________________ fipy mailing list fipy@nist.gov http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]