Hi again FiPy, 

What is the easiest/most efficient way to make the distinction between the 
“outer” exterior faces and the “inner” exterior faces of the annulus?
I would like to enforce to different boundary conditions at the outer and inner 
radii.

Can I use the where=() function? Or something like it within the 
phi.constrain() function?
I’ve seen this used to specify different coefficient regions in the 
1D-Diffusion example. 
Which was used as D.setValue(0.1, where=(specify some ranges)).

Look forward to hearing more. :)

Best, Kyle. 

On Nov 19, 2014, at 3:43 PM, Kyle Briton Lawlor <[email protected]> wrote:

> Thanks Daniel and Jonathan,
> All of this information helps very much. 
> It is now working properly, so here is the code.
> In case it is useful to anyone. 
> It is basic, but I figure its nice to share.
> 
> cellSize=0.05
> radius=1.
> from fipy import *
> mesh = Gmsh2D('''cellSize = %(cellSize)g;
>        radius = %(radius)g;
>        Point(1) = {0, 0, 0, cellSize};
>        Point(2) = {radius, 0, 0, cellSize};
>        Point(3) = {0, radius, 0, cellSize};
>        Point(5) = {-radius, 0, 0, cellSize};
>        Point(6) = {0, -radius, 0, cellSize};
>        Circle(1) = {2, 1, 3};
>        Circle(2) = {3, 1, 5};
>        Circle(3) = {5, 1, 6};
>        Circle(4) = {6, 1, 2};
>        Line Loop(1) = {1, 2, 3, 4};
>        Point(200) = {radius/3, 0, 0, cellSize};
>        Point(300) = {0, radius/3, 0, cellSize};
>        Point(500) = {-radius/3, 0, 0, cellSize};
>        Point(600) = {0, -radius/3, 0, cellSize};
>        Circle(100) = {200, 1, 300};
>        Circle(200) = {300, 1, 500};
>        Circle(300) = {500, 1, 600};
>        Circle(400) = {600, 1, 200};
>        Line Loop(100) = {100, 200, 300, 400};
>        Plane Surface(1)={1,100};
>        ''' % locals())
> phi=CellVariable(name="solution",mesh=mesh,value=0.)
> D=1
> eq=TransientTerm()==DiffusionTerm(coeff=D)
> X,Y=mesh.faceCenters
> phi.constrain(1,mesh.exteriorFaces)
> timeStepDuration=10*0.9*cellSize**2/(2*D)
> steps=10
> for step in range(steps):
>    eq.solve(var=phi,dt=timeStepDuration)
>    TSVViewer(vars=(phi)).plot(filename="diffusion.annulus."+str(step)+".tsv”)
> 
> Thanks!
> Kyle.
> 
> On Nov 19, 2014, at 2:16 PM, Guyer, Jonathan E. Dr. <[email protected]> 
> wrote:
> 
>> Just to clarify: as far as FiPy is concerned, "interiorFaces" have a cell on 
>> either side of them, whereas "exteriorFaces" have a cell on only one side; 
>> the other side is "outside" the mesh. It doesn't matter whether the mesh has 
>> simple topological connectivity (square, sphere, etc.) or complex 
>> topological connectivity (torus). "interiorFaces" separate "mesh" from "more 
>> mesh"; "exteriorFaces" separate "mesh" from "not mesh".
>> 
>> 
>> On Nov 19, 2014, at 10:53 AM, Daniel Wheeler <[email protected]> 
>> wrote:
>> 
>>> Hi Kyle,
>>> 
>>> #Boundary Conditions
>>> phi.constrain(X,mesh.exteriorFaces)
>>> phi.constrain(X,mesh.interiorFaces)
>>> 
>>> The above is the problem. You are constraining the internal faces, which 
>>> makes no sense in FiPy. I am not even sure how FiPy behaves when that 
>>> constraint is added. However, I assume that is not what you want to do. If 
>>> you remove that constraint the result seems to look nice. BTW, 
>>> "exteriorFaces" refers to both the inner and outer external faces of the 
>>> annulus. Perhaps you thought "interiorFaces" referred to the interior 
>>> annulus faces that are external to the mesh.
>>> 
>>> Also, you don't need to import the results into Mathematica. You can just 
>>> use "viewer = fipy.Viewer(phi); viewer.plot()" to look at the results.
>>> 
>>> Cheers,
>>> 
>>> Daniel
>>> 
>>> -- 
>>> Daniel Wheeler
>>> _______________________________________________
>>> fipy mailing list
>>> [email protected]
>>> http://www.ctcms.nist.gov/fipy
>>> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
>> 
>> 
>> _______________________________________________
>> fipy mailing list
>> [email protected]
>> http://www.ctcms.nist.gov/fipy
>> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
> 


_______________________________________________
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