"The cell used for the displacements and the composite cell contain the same vertices. "
... does the vertex list contain more vertices than the displacements, or do they contain the same number of vertices, of which some (many) are not referenced by cells in the displacement field? Here's a 1-D case. A, C and E are vertices of the coarse mesh and A, b, C, D and E are vertices of the fine mesh:
A----b----C----d----E
You might have a single vertex list:
Vertex list A,b,C,d,E
Coarse data d0,d1,d2,d3,d4 -- d1 and d3 are meaningless
Coarse cells (0,2),(2,4) -- b and d are not referenced
Fine data c0,c1,c2,c3,c4
Fine cells (0,1),(1,2),(2,3),(3,4)
Or you could have two vertex lists:
Coarse vertex list: A,C,E
Coarse data d0,d1,d2
Coarse cells (0,1),(1,2)
Fine vertex list: A,b,C,d,E
Fine data c0,c1,c2,c3,c4
Fine cells (0,1),(1,2),(2,3),(3,4)
In the first case you could simply use result = Compute(disp + comp). Compute would be happy since there are the same number of elements in the two vertex (and data) components. The results at b and d would still be meaningless, but since the output would have the same grid as the coarse mesh, those vertices wouldn't be referenced by the cells.
In the second case, you need to put the two data onto the same grid - which Map will do for you. You can interpolate either field onto the other, depending on the result you want: coarseFine = Map(coarse, Fine) to
map (eg. interpolate) the fine data onto the coarse mesh, followed by coarseResult = Compute(coarseFine + coarse) to create a coarse result, or fineCoarse = Map(fine, coarse) to interpolate the coarse data onto the fine mesh, then
fineResult = Compute(fineCoarse + fine) to get a fine result.
Hope this helps.
Greg
| Brent Bailey <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED] 02/06/2004 01:26 PM
|
To: DX <[email protected]> cc: Subject: [opendx-users] Overlapping grids |
I have two sets of output from a finite element program that I want to
display, but as opendx doesn't handle non-linear interpolations in
cells, they are of different grids. The first output is displacements,
which has the same cells in the finite element program and opendx. The
second set of data is based on the division of the finite element cell
into a composite cell containing 12 different cells, as given below:
_______
|\__|__/|
| | | | |
---------
| |_|_| |
|/__|__\|
(sorry about the ascii art...)
This gives me an approximation to the higher order interpolation, as it
includes more points within the cell. The cell used for the
displacements and the composite cell contain the same vertices. I want
to show how the grid is deformed. Is there a way to that allows me to
interpolate the displacement values of the composite cell inside dx?
ie. I want the vertices used in the composite cell to be:
vertex_undeformed + displacement (shows displacement of grid)
and the vertices for all the cells contained in the composite cell to be
a linear interpolation of these displacements.
Can I do this within dx? Or will I have to do this in my finite element
code itself?
Thanks,
--
Brent Bailey <[EMAIL PROTECTED]>
