1.8 KiB
After a look and run through the debugger; I'm not sure how the nodal variable interpolation ever worked in the past. It looks totally wrong and I can understand why it isn’t working now; I just can't understand how it ever worked correctly for multi-element block models.
As I see it, it does the following for the interpolation:
- For all blocks
- For all time steps
* For all nodal variables
- Iterate all nodes in this block; map from A->B
- Write values for all B nodes at this step for this variable
- For all time steps
* For all element variables
- Iterate all elements in this block; map from A->B
- Write values for all elements in this block at this step for this variable
This works for element variables since the exodus API can output elements a block and variable at a time. For nodes, it doesn't work and you will end up with the values at the last step for all nodes/variables except for nodes which are only in the last element block which seems to be what you are seeing.
Fixing this would be a major undertaking and I'm not sure it would get prioritized (although you are welcome to try).
This should work OK if you only do a single timestep or if you only have a single element block. With a single timestep and multiple element blocks, there is an issue of what happens if the node is shared between multiple element blocks -- it will only get the interpolated value from the last block.
Now, what to do...
- I think that the Percept code can do some mapping from mesh to mesh...
- Klugy, but can do a timestep at a time and then rejoin all timesteps using
conjoin
- Klugy, but can subset down to one block / mesh and then run mapvar on each submesh and then join using
ejoin
Sorry for the bearer of bad news, but hopefully there is a path to get done what you need...