Re: Time varying boundary conditions

2017-06-23 Thread Daniel Wheeler
Hi Adrian,

It's a little bit of a hack, but I got something to work, see below.
Unfortunately, I think you need to explicitly delete the fixed value
constraint from the CellVariable's faceConstraints list, which
requires some knowledge of FiPy's internals and remember the order in
which the constraints were added. I would be nice if "var.constrain"
returned some sort of constraint object which could be deleted.

Cheers,

Daniel


import fipy as fp

mesh = fp.Grid1D(nx=10)

var = fp.CellVariable(mesh=mesh, value=0.)

var.constrain(1., mesh.facesLeft)
var.constrain(0., mesh.facesRight)
eqn = fp.TransientTerm() == fp.DiffusionTerm()

viewer = fp.Viewer(var)

dt = 0.1

for _ in range(100):
eqn.solve(var, dt=dt)
viewer.plot()

del var.faceConstraints[0]

var.faceGrad.constrain(1., mesh.facesLeft)

for _ in range(1000):
eqn.solve(var, dt=dt)
viewer.plot()


On Wed, Jun 21, 2017 at 2:56 PM, Adrian Jacobo
 wrote:
> Hi All,
>
>   I have a problem where I would want to specify fixed value boundary
> conditions for times t conditions for t>=t0. The way I've implemented this is:
>
>
> a.constrain(a_0,(mesh.exteriorFaces))
>
> while t  if t > = t0:
>  a.faceGrad.constrain(0.,mesh.exteriorFaces)
>  eq.solve(dt=timeStepDuration)
>  t+=dt
>
> But what it seems to be happening is that the fixed value bc is not
> being overwritten by the fixed gradient one. How can I do to remove the
> fixed value bc? Is there a way to check the boundary conditions on a
> variable?
>
> Thanks,
> Adrian.
>
> ___
> fipy mailing list
> fipy@nist.gov
> http://www.ctcms.nist.gov/fipy
>   [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]



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


Time varying boundary conditions

2017-06-21 Thread Adrian Jacobo
Hi All,

  I have a problem where I would want to specify fixed value boundary 
conditions for times t=t0. The way I've implemented this is:


a.constrain(a_0,(mesh.exteriorFaces))

while t = t0:
 a.faceGrad.constrain(0.,mesh.exteriorFaces)
 eq.solve(dt=timeStepDuration)
 t+=dt

But what it seems to be happening is that the fixed value bc is not 
being overwritten by the fixed gradient one. How can I do to remove the 
fixed value bc? Is there a way to check the boundary conditions on a 
variable?

Thanks,
Adrian.

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