|
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... | |
| virtual void | snap (Mesh &mesh, const Reals &old_coords, const Reals &warp)=0 |
| Transfer fields during vertex snap. More... | |
Application hook for custom field transfer during mesh adaptation.
UserTransfer provides callbacks invoked during refinement, coarsening, snapping, 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 vertex snap.
Called after edge lengths are satisfied. Might be called multiple times if snapping could not complete in one step. To be used to update fields that depend on the position of the verticies.
| mesh | [in/out] Mesh after snapping |
| old_coords | [in] Coordinates of each vertex before snapping |
| warp | [in] Amount of movement applied to each vertex |
|
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) |