You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.8 KiB
41 lines
1.8 KiB
2 years ago
|
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...
|