Daniel -

Two things going on here:

- Your constraint is being applied at the tip of the wedge of the cylindrical 
coordinates. Since this "face" has no area, that Dirichlet condition doesn't 
generate any flux in or out of the domain. Offsetting the cylinder slightly 
from the origin resolves this:

    mesh = CylindricalGrid1D(Lr = L,nr=nx) + [[L/nx]]

I recommend giving some thought as to whether it even makes sense to apply a 
Dirichlet condition along the centerline of a cylinder.

- Because you've introduced coefficients which change with temperature, your 
equation is now nonlinear and so sweeping is required (2 is apparently enough). 
At each time step, execute:

    for sweep in range(2):
        res = eq.sweep(dt=dt)

        rho.setValue(rho_l,where = PCM & (T>350) )
        k.setValue(k_l,where = PCM & (T>350))
        Cp.setValue(Cp_l,where = PCM & (T>350))

With these changes, the evolution seems generally similar to your Grid1D case.

- Jon

> On Apr 15, 2019, at 1:28 PM, Daniel DeSantis <desan...@gmail.com> wrote:
> 
> Jonathan,
> 
> I have just a few follow up questions. Namely, regarding to working within 
> cylindrical coordinates. If I switch the mesh to cylindrical, it seems the 
> temperature profile never changes, unless I go to extremely small time steps. 
> That strikes me as odd. What do you think?
> 
> Also, the shifting profile seems to reverse, with the left boundary condition 
> dropping to ~300K over time while in Cartesian coordinates, the temperature 
> rises to 600K over time (a result I would expect). I've included a copy of 
> the work with the changes you've suggested previously. If you look at lines 
> 23/24, you can toggle the cylindrical grid on and off, and in lines 30-34, 
> I've included options for the time steps that work for each respective 
> coordinate system. Do you have any suggestions?
> 
> Finally, in reference to the velocity I would like to incorporate, I 
> understand the difference between Cell Variables and Face Variables, but why 
> is the rank of the velocity -1? What does the Face Variable rank indicate?
> 
> Thank you,
> Dan
> 
> On Thu, Apr 11, 2019 at 8:14 AM Guyer, Jonathan E. Dr. (Fed) via fipy 
> <fipy@nist.gov> wrote:
> 
> 
> > On Apr 10, 2019, at 4:42 PM, Daniel DeSantis <desan...@gmail.com> wrote:
> > 
> > 1) Set a different Cp, rho, and k in just the PCM domain when the 
> > temperature in that domain crosses over a certain melt temperature (350K). 
> > I tried an if statement inside the solving loop and I think that has 
> > worked, based on some print testing I did in the loop. I just wanted to get 
> > your opinion and see if that was the right way to go.
> 
> Seems reasonable, as long as you're calling `.setValue()` and not redefining 
> Cp, rho, and k. 
> 
> In fact, I wouldn't use an `if`:
> 
> >>> for step in range(steps):
> ...     T.updateOld()
> ...     eq.solve(dt=dt)
> ...     rho.setValue(rho_melt, where=PCM & (T > 350))
> 
> 
> > 2) I'd like to move this to cylindrical coordinates with the lengths being 
> > radii. I'm not sure if the cylindrical grid is working though. And if it 
> > isn't, is there a way to convert the diffusion equation into something that 
> > would solve the problem in Cartesian? More specifically, how would you 
> > write an appropriate equation for the heat transfer of a radial system in 
> > Cartesian coordinates? In short, how would you write this:
> > <image.png>
> > in FiPy?
> 
> The CylindricalGrids work fine, except for taking the gradient of the field, 
> which is an unusual need.
> 
> > 
> > 3) Ideally, I would move this to a 2D system which is the most confusing to 
> > me. In a 2D system, heat would be transmitted radially while air would be 
> > flowing axially. The air would cool as it passes through the tube. The 
> > diffusion term in the axial direction would be significantly lower than the 
> > convection term. Can I use the same heat transfer equation you've suggested 
> > slightly modified? I would guess the equation to be something like this:
> > 
> > eq = TransientTerm(coeff = rho*Cp,var = T) + 
> > PowerLawConvectionTerm(coeff=rho*Cp*v,var = T) == DiffusionTerm(coeff=k,var 
> > = T)
> > 
> > s.t. v = velocity of the air.
> 
> Looks OK
> 
> > I would also think that I would have to set the value of v to 0 at the wall 
> > and beyond, which means v would be a CellVariable like rho and k. 
> 
> Actually, v should be a rank-1 FaceVariable.
> 
> Anisotropic diffusion is supported in FiPy (see 
> https://www.ctcms.nist.gov/fipy/examples/diffusion/generated/examples.diffusion.anisotropy.html),
>  but are you really sure you have lower axial diffusivity? It seems to me 
> more likely that transport is simply dominated by axial flow.
> 
> > I also guess this equation would be subject to any changes that would be 
> > made in question 2, regarding writing a cylindrical equation in a cartesian 
> > system. What do you think?
> 
> Use a CylindricalGrid and don't change the equation at all.
> 
> > Again, thank you so much for your help and I hope I haven't taken up too 
> > much of your time. 
> 
> Happy to help.
> 
> 
> _______________________________________________
> fipy mailing list
> fipy@nist.gov
> http://www.ctcms.nist.gov/fipy
>   [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
> 
> 
> -- 
> Daniel DeSantis
> 
> 
> <PCM_thermal_v2-SendOut.py>


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

Reply via email to