Re: Question regarding Boundary Condition Implementation

2019-04-10 Thread Daniel DeSantis
Jonathan,

Thank you very much for you help. It wouldn't be the first time I've over
complicated a system. I understand how you set up the system a little bit
better now. I had set things up the way I had before because I had expected
to expand the system a bit. I was hoping to do the following:

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.

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: image.png]
in FiPy?

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.

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.

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?

Again, thank you so much for your help and I hope I haven't taken up too
much of your time.

Thank you,

Dan



On Mon, Apr 8, 2019 at 5:37 PM Guyer, Jonathan E. Dr. (Fed) via fipy <
fipy@nist.gov> wrote:

> You're over-complicating things trying to have three different
> temperatures. There's one temperature in three different domains, with
> different material properties in each domain. FiPy (and physics) takes care
> of matching fluxes for you at the internal boundaries.
>
>
> The changes I made are at
> https://gist.github.com/guyer/d86ee6f085e9832df781286099a73800/revisions
>
> The primary changes I made:
>
> - I defined three domains, `air`, `wall`, and `PCM`, and then defined `T`,
> `rho`, `Cp`, and `k` to have different values in those different domains.
>
> - sweeps are for getting better convergence of non-linear equations.
> Your equations are linear and from your usage you want time steps, not
> sweeps.
> See:
> https://www.ctcms.nist.gov/fipy/documentation/FAQ.html#iterations-timesteps-and-sweeps-oh-my
>
> - Internal boundary conditions need to be defined very differently (see:
> https://www.ctcms.nist.gov/fipy/documentation/USAGE.html#applying-internal-boundary-conditions
> )
> Importantly, you don't need internal boundary conditions.
>
> - All field variables and coefficients should be floats, not integers.
>
>
> Note: Your wall thickness `tw = 0.001` is smaller than your grid spacing
> `dx = 0.061 / 50 = 0.00122`, your your numerics will be terrible. Increase
> your wall thickness or decrease your grid size.
>
> > On Apr 8, 2019, at 2:44 PM, Daniel DeSantis  wrote:
> >
> > Hello,
> >
> > I am trying to model heat diffusion through a wall using FiPy.
> Essentially, hot air on one side of the wall would heat the wall, and the
> wall would subsequently heat a phase change material on the other side (See
> picture below). The eventual goal would be to have the phase change
> material properties change as the heat increases. I am having a few issues
> with setting boundary conditions however.
> >
> > The goal of the model would be to have the heat flux at the wall be
> equal to the heat flux of the fluid on each respective side. Further, the
> heat flux of one of the fluids (a phase change material) would be 0 at the
> side not in contact with the wall. (I've included a copy of my FiPy code as
> is, and a series of equations and boundary conditions below).
> >
> > Right now, the temperature for the air and wall are staying constant,
> while the phase change material temperature drops. I think how I've defined
> the boundary conditions are to blame, but I'm not sure what I'm doing
> wrong. Any help here would be greatly appreciated.
> >
> > Thank you,
> >
> > --
> > Daniel DeSantis
> >
> > 
> > 
> > 
> > 
> >
> >
> ___
> > fipy mailing list
> > fipy@nist.gov
> > http://www.ctcms.nist.gov/fipy
> >  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
>
>
>

Re: Setting CellVariable values

2019-04-10 Thread Guyer, Jonathan E. Dr. (Fed) via fipy
> On Apr 10, 2019, at 11:12 AM, Dario Panada  wrote:
> 
> In my case, as I just have only one dimension, using sourceGrid.value[i] or 
> sourceGrid[...,i] should be equivalent though?

Yes


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


Re: Setting CellVariable values

2019-04-10 Thread Dario Panada
Thanks, makes sense.

In my case, as I just have only one dimension, using sourceGrid.value[i] or
sourceGrid[...,i] should be equivalent though?

On Tue, Apr 9, 2019 at 3:32 PM Guyer, Jonathan E. Dr. (Fed) via fipy <
fipy@nist.gov> wrote:

> > On Apr 8, 2019, at 6:38 PM, Dario Panada  wrote:
>
> > DP: I guess what confuses me here is the [..., i] syntax on the
> CellVariable object thought.
>
> FiPy is built on NumPy. `...` or Ellipsis means "all the indices except
> for the one specified". FiPy stores cells in the last index of the internal
> NumPy array. A CellVariable can potentially be a field of vectors or
> tensors, so there could be more leading dimensions. Writing `[..., i]`
> ensures you're inserting data where you want.
>
>
> https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html?highlight=ellipsis%20expand
>
>
> > Between this approach and .value, which one would you recommend?
>
> >>> i = np.ravel_multi_index([coordinate[0], coordinate[1],
> coordinate[2]], (20, 20, 20))
> >>> sourceGrid[..., i] = sourceRate
>
>
> ___
> fipy mailing list
> fipy@nist.gov
> http://www.ctcms.nist.gov/fipy
>   [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
>
___
fipy mailing list
fipy@nist.gov
http://www.ctcms.nist.gov/fipy
  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]