Dan,
Thanks for all of this help. Now, after a little tweaking of your
settings, I am getting quite sensible results that I can actually make use
of.
Seeing how your 'print' statements worked, I am now printing the elapsed
time as the solution evolves. I am tweaking the EFFECTIVE thermal
transport parameters
(conductivity, specific heat --> diffusivity) of the thick outer buffer
layers to get the peak temperature to come into line with experiment, and
it all appears to
be quite self-consistent.
Terry McDaniel
Seagate Research (209) 295-6735
Daniel Wheeler
<[EMAIL PROTECTED]
ist.gov> To
Available cc
Subject
08/07/2006 01:40 Re: Seeing solution on variable
PM mesh
Hi Terry,
Answers below.
Dan,
I've been poking around with my 1D thermal problem. The main
change
that I am trying to make is to expand the mesh GREATLY around the
solution
region. You may recall that originally the total
span of x was about 270 nm. Now, I want to add material on the low
and
high x sides so that the original thin film structure is embedded in
the
center (roughly) of a 10 mm long model.
I have solved problems with a great deal of different mesh sizes, the key
is to taper the mesh from course
to fine in a sensible way. Basically, adjacent elements should not have
massive size differences, it effects accuracy.
Also the matrix should not have rows that are numerically insignificant,
this can cause problems. I have worked with meshes
that vary from 5nm to 1 micron. You will probably be alright with the
dimensions you are suggesting since you are in 1D.
This code seems to run without errors. (See attached file:
Yukiko_DW3d.py)
However, the output plot is uninteresting, showing T=0 for all
visible
x. I realize that my "interesting" region is initially TINY in the
center
of the 10 mm wide model, BUT the heat should diffuse outward to a
noticeable degree during the solution. And what I really am after is
a
reliable peak temperature rise, given this extensive buffer material
surrounding the heated zone. Before, my peak temperature rise
was NOT reliable because my T=0 boundaries were far too close to the
heated
zone.
Can you see why I am not observing any non-zero temperature
rise? Is
the mesh size too variable for the solver to get a sensible
solution? Is
the plot resolution insufficient to discern anything?
Changed a few things and it seems to be doing something. Don't know if it
makes sense:
[attachment "Yukiko_DW3d.py" deleted by Terry W McDaniel/Seagate]
You were setting the source term to zero everywhere. The source in this
case is an implicitly defined variable that is
automatically updated if anything it depends on is changed, "time" in this
case. The element wise conditional
operations have to be part of the _expression_ in order to work correctly.
Also asking if "X > 0" returns an array if X is an
array and thus you can't very well use conditionals with an array of ones
and zeros.
One tricky thing that I had to do was define the non-zero SOURCE
term
only in the thin film region, lest I get some numerical overflow
(probably
from the exp function, I imagine). I got past that error using
your old SHIFT variable, along with my new BOT variable. But now I
don't
know if my source is actually non-zero anywhere, given the large
dynamic
range of my spatial variable x.
All you have to do is print its value to see.
>>> print ' my source term',source
Another thing here that is bit awkward for me is the
specification of
the mesh INTERVALS dx instead of the mesh nodes x. Can I just as
well
define the mesh nodes along x directly?
Yes, define X, the array of nodal positions, then do,
>>> dx = X[1:] - X[:-1]
to define dx.
I realize that FiPy
wants to use cell CENTERS in the solution, and that's OK. I would
just
like to specify my mesh nodes [x1, x2, ...., xn] directly for input
and for
plotting output.
You can ask the mesh for its vertex coordinates;
>>> mesh.getVertexCoords()
Thanks.
Terry McDaniel
Seagate Research (209) 295-6735
<Yukiko_DW3d.py>
Daniel Wheeler