|
omega_h
Reliable mesh adaptation
|
Application hook for custom field transfer during mesh adaptation. More...
#include <Omega_h_adapt.hpp>
Public Member Functions | |
| virtual void | out_of_line_virtual_method () |
| virtual void | refine (Mesh &old_mesh, Mesh &new_mesh, LOs keys2edges, LOs keys2midverts, Int prod_dim, LOs keys2prods, LOs prods2new_ents, LOs same_ents2old_ents, LOs same_ents2new_ents)=0 |
| Transfer fields during edge refinement. More... | |
| virtual void | coarsen (Mesh &old_mesh, Mesh &new_mesh, LOs keys2verts, Adj keys2doms, Int prod_dim, LOs prods2new_ents, LOs same_ents2old_ents, LOs same_ents2new_ents)=0 |
| Transfer fields during edge collapse/coarsening. More... | |
| virtual void | swap (Mesh &old_mesh, Mesh &new_mesh, Int prod_dim, LOs keys2edges, LOs keys2prods, LOs prods2new_ents, LOs same_ents2old_ents, LOs same_ents2new_ents)=0 |
| Transfer fields during edge/face swaps. More... | |
| virtual void | swap_copy_verts (Mesh &old_mesh, Mesh &new_mesh)=0 |
| Transfer vertex fields during swaps when custom processing needed. More... | |
Application hook for custom field transfer during mesh adaptation.
UserTransfer provides callbacks invoked during refinement, coarsening, and swapping operations to customize how application-specific fields are transferred from the old mesh to the new mesh. Each adaptation operation loops over entity dimensions (0=VERT to mesh->dim()), calling the corresponding method after default field transfers (should_inherit, should_interpolate, conserve, etc.) complete for that dimension.
See UserTransfer Interface Guide for more info.
|
pure virtual |
Transfer fields during edge collapse/coarsening.
Called once per dimension (0 to mesh->dim()) after default transfers complete for dimension prod_dim.
| old_mesh | [in] Mesh before coarsening (read-only) |
| new_mesh | [in/out] Mesh after coarsening (modify tags here) |
| keys2verts | [in] Maps key indices to collapsing vertex IDs in old_mesh |
| keys2doms | [in] CSR graph (a2ab offsets, ab2b values) mapping keys to collapsing domain entity IDs |
| prod_dim | [in] Current entity dimension being processed |
| prods2new_ents | [in] Maps product indices to new entity IDs (empty for VERT dimension - no product vertices) |
| same_ents2old_ents | [in] Maps unchanged entity indices to old entity IDs |
| same_ents2new_ents | [in] Maps unchanged entity indices to new entity IDs |
|
pure virtual |
Transfer fields during edge refinement.
Called once per dimension (0 to mesh->dim()) after default transfers (inherit, interpolate, metric, conserve) complete for dimension prod_dim.
| old_mesh | [in] Mesh before refinement (read-only) |
| new_mesh | [in/out] Mesh after refinement (modify tags here) |
| keys2edges | [in] Maps key indices to refined edge IDs in old_mesh |
| keys2midverts | [in] Maps key indices to new midpoint vertex IDs in new_mesh |
| prod_dim | [in] Current entity dimension being processed (0=VERT, 1=EDGE, ...) |
| keys2prods | [in] CSR offset array: keys2prods[k] to keys2prods[k+1] gives product entity range for key k |
| prods2new_ents | [in] Maps product indices to new entity IDs in new_mesh |
| same_ents2old_ents | [in] Maps unchanged entity indices to old entity IDs |
| same_ents2new_ents | [in] Maps unchanged entity indices to new entity IDs |
|
pure virtual |
Transfer fields during edge/face swaps.
Called once per dimension (EDGE to mesh->dim()) after default transfers complete for dimension prod_dim. Not called for VERT dimension (use swap_copy_verts instead).
| old_mesh | [in] Mesh before swap (read-only) |
| new_mesh | [in/out] Mesh after swap (modify tags here) |
| prod_dim | [in] Current entity dimension being processed (1=EDGE or higher) |
| keys2edges | [in] Maps key indices to swapped edge IDs in old_mesh |
| keys2prods | [in] CSR offset array for product entities |
| prods2new_ents | [in] Maps product indices to new entity IDs |
| same_ents2old_ents | [in] Maps unchanged entity indices to old entity IDs |
| same_ents2new_ents | [in] Maps unchanged entity indices to new entity IDs |
|
pure virtual |
Transfer vertex fields during swaps when custom processing needed.
Called once per swap operation (not per dimension) at the end of transfer_copy(), after all vertex tags matching should_transfer_copy() are copied and before the dimensional loop begins.
| old_mesh | [in] Mesh before swap (read-only) |
| new_mesh | [in/out] Mesh after swap (modify VERT tags here) |