warp.fem.AdaptiveNanogrid#
- class warp.fem.AdaptiveNanogrid(cell_grid, cell_level, level_count, temporary_store)[source]#
Adaptive sparse grid.
- Parameters:
cell_grid (Volume)
cell_level (array)
level_count (int)
temporary_store (TemporaryStore)
- __init__(
- cell_grid,
- cell_level,
- level_count,
- temporary_store,
Construct an adaptive sparse grid geometry from an in-memory NanoVDB volume and a list of levels.
It is not recommended to use this constructor directly; see the helper functions
warp.fem.adaptive_nanogrid_from_field()andwarp.fem.adaptive_nanogrid_from_hierarchy().- Parameters:
cell_grid (Volume) – A warp volume (ideally backed by an index grid) whose voxels coordinates correspond to the lowest fine-resolution voxel of each cell. The cell’s extent is then given by the
cell_levelarray. For instance, a voxel at coordinatesijkand level0corresponds to a fine cell at the same coordinates, a voxel at coordinates2*ijkand level1corresponds to a cell spanning2^3voxels from2*ijkto2*ijk + (1,1,1), etc.cell_level (array) – Refinement level for each voxel of the volume. Level 0 is the finest, level
level_count-1is the coarsest.level_count (int) – Number of levels in the grid
temporary_store (TemporaryStore)
Methods
__init__(cell_grid, cell_level, level_count, ...)Construct an adaptive sparse grid geometry from an in-memory NanoVDB volume and a list of levels.
boundary_side_count()Number of boundary sides in the grid.
build_bvh([device])Rebuild the geometry's Bounding Volume Hierarchy (BVH) for
devicefrom scratch.bvh_id(device)Return the BVH identifier for the given device, or
0if unavailable.cell_arg_value(device)cell_count()Number of cells in the grid.
fill_cell_arg(arg, device)Fill the arguments to be passed to cell-related device functions.
fill_side_arg(arg, device)Fill the arguments to be passed to side-related device functions.
fill_side_index_arg(arg, device)Fill the arguments to be passed to side-index device functions.
make_filtered_cell_lookup([filter_func])Create a filtered cell lookup function.
reference_cell()Reference element for grid cells.
reference_side()Reference element for grid sides.
side_arg_value(device)side_count()Number of sides in the grid.
side_index_arg_value(device)Number of stacked edges in the grid.
Number of stacked faces in the grid.
supports_cell_lookup(device)Return whether cell lookups are supported on the given device.
update_bvh([device])Refit the geometry's BVH if it exists on
device, or build it from scratch otherwise.vertex_count()Number of vertices in the grid.
Attributes
Structure containing arguments to be passed to device functions evaluating cell-related quantities.
FACE_AXIS_MASKFACE_INNER_OFFSET_BITFACE_OUTER_OFFSET_BITGRID_AXIS_FLAGStructure containing arguments to be passed to device functions evaluating side-related quantities.
SideIndexArgStructure containing arguments to be passed to device functions for indexing sides.
baseReturn the base geometry from which this geometry derives its topology.
boundary_side_indexcell_dimensionManifold dimension of the geometry cells
cell_gridNanoVDB volume storing cell voxels.
cell_lookupDevice function for looking up the closest cell to a position.
cell_measure_ratioface_gridNanoVDB volume storing face voxels.
nameName of the geometry.
NanoVDB volume storing stacked edge voxels.
NanoVDB volume storing stacked face voxels.
transformTransform matrix mapping index to world space.
vertex_gridNanoVDB volume storing vertex voxels.
- CellArg: Struct = <warp._src.codegen.Struct object>#
Structure containing arguments to be passed to device functions evaluating cell-related quantities.
- fill_cell_arg(arg, device)[source]#
Fill the arguments to be passed to cell-related device functions.
- Parameters:
arg (AdaptiveNanogridCellArg)
- cell_position = <Function AdaptiveNanogrid__cell_position(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridCellArg)
s (Sample)
- cell_deformation_gradient = <Function AdaptiveNanogrid__cell_deformation_gradient(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridCellArg)
s (Sample)
- cell_inverse_deformation_gradient = <Function AdaptiveNanogrid__cell_inverse_deformation_gradient(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridCellArg)
s (Sample)
- supports_cell_lookup(device)[source]#
Return whether cell lookups are supported on the given device.
- cell_coordinates = <Function AdaptiveNanogrid__cell_coordinates(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, cell_index: int, pos: vec3f)>#
- cell_closest_point = <Function AdaptiveNanogrid__cell_closest_point(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, cell_index: int, pos: vec3f)>#
- cell_measure = <Function AdaptiveNanogrid__cell_measure(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridCellArg)
s (Sample)
- cell_normal = <Function AdaptiveNanogrid__cell_normal(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridCellArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridCellArg)
s (Sample)
- SideArg: Struct = <warp._src.codegen.Struct object>#
Structure containing arguments to be passed to device functions evaluating side-related quantities.
- side_to_cell_arg = <Function AdaptiveNanogrid__side_to_cell_arg(side_arg: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg)>#
- Parameters:
side_arg (AdaptiveNanogridSideArg)
- fill_side_arg(arg, device)[source]#
Fill the arguments to be passed to side-related device functions.
- Parameters:
arg (AdaptiveNanogridSideArg)
- side_position = <Function AdaptiveNanogrid__side_position(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_deformation_gradient = <Function AdaptiveNanogrid__side_deformation_gradient(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_inner_inverse_deformation_gradient = <Function AdaptiveNanogrid__side_inner_inverse_deformation_gradient(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_outer_inverse_deformation_gradient = <Function AdaptiveNanogrid__side_outer_inverse_deformation_gradient(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_measure = <Function AdaptiveNanogrid__side_measure(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_measure_ratio = <Function AdaptiveNanogrid__side_measure_ratio(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_normal = <Function AdaptiveNanogrid__side_normal(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, s: warp._src.fem.types.Sample)>#
- Parameters:
args (AdaptiveNanogridSideArg)
s (Sample)
- side_inner_cell_index = <Function AdaptiveNanogrid__side_inner_cell_index(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int)>#
- Parameters:
args (AdaptiveNanogridSideArg)
side_index (int)
- side_outer_cell_index = <Function AdaptiveNanogrid__side_outer_cell_index(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int)>#
- Parameters:
args (AdaptiveNanogridSideArg)
side_index (int)
- side_inner_cell_coords = <Function AdaptiveNanogrid__side_inner_cell_coords(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int, side_coords: vec3f)>#
- side_outer_cell_coords = <Function AdaptiveNanogrid__side_outer_cell_coords(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int, side_coords: vec3f)>#
- side_from_cell_coords = <Function AdaptiveNanogrid__side_from_cell_coords(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int, element_index: int, element_coords: vec3f)>#
- side_coordinates = <Function AdaptiveNanogrid__side_coordinates(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int, pos: vec3f)>#
- side_closest_point = <Function AdaptiveNanogrid__side_closest_point(args: warp._src.fem.geometry.adaptive_nanogrid.AdaptiveNanogridSideArg, side_index: int, pos: vec3f)>#
- coarse_ijk = <Function AdaptiveNanogrid__coarse_ijk(ijk: vec3i, level: int)>#
- fine_ijk = <Function AdaptiveNanogrid__fine_ijk(ijk: vec3i, level: int)>#
- encode_axis_and_level = <Function AdaptiveNanogrid__encode_axis_and_level(ijk: vec3i, axis: int, level: int)>#