warp.fem.AdaptiveNanogrid#
- class warp.fem.AdaptiveNanogrid(
- cell_grid,
- cell_level,
- level_count,
- temporary_store,
- scalar_type=warp.float32,
Adaptive sparse grid.
- Parameters:
cell_grid (Volume)
cell_level (array)
level_count (int)
temporary_store (TemporaryStore)
scalar_type (type)
- __init__(
- cell_grid,
- cell_level,
- level_count,
- temporary_store,
- scalar_type=warp.float32,
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
scalar_type (type) – Scalar type for coordinate and weight computations (
warp.float32orwarp.float64)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()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()fill_cell_arg(arg, device)fill_side_arg(arg, device)fill_side_index_arg(arg, device)make_filtered_cell_lookup([filter_func])reference_cell()reference_side()side_arg_value(device)side_count()side_deformation_gradient(args, s)Device function returning the gradient of world position with respect to reference side
side_index_arg_value(device)side_normal(args, s)Device function returning the element normal at a sample point
supports_cell_lookup(device)update_bvh([device])Refit the geometry's BVH if it exists on
device, or build it from scratch otherwise.vertex_count()Attributes
FACE_AXIS_MASKFACE_INNER_OFFSET_BITFACE_OUTER_OFFSET_BITGRID_AXIS_FLAGSideIndexArgStructure 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_gridcell_lookupDevice function for looking up the closest cell to a position.
cell_measure_ratiocoords_typeWarp vector type for element coordinates matching this geometry's scalar precision.
Dimension of the embedding space.
face_gridnameName of the geometry, including scalar type suffix for non-default precision.
sample_typeWarp struct type for samples matching this geometry's scalar precision.
scalar_typetransformTransform matrix mapping index to world space.
vertex_gridCellArgStructure containing arguments to be passed to device functions evaluating cell-related quantities.
SideArgStructure containing arguments to be passed to device functions evaluating side-related quantities.
- cell_position = <Function AdaptiveNanogrid__cell_position(args: Any, s: Any)>#
- cell_deformation_gradient = <Function AdaptiveNanogrid__cell_deformation_gradient(args: Any, s: Any)>#
- cell_inverse_deformation_gradient = <Function AdaptiveNanogrid__cell_inverse_deformation_gradient(args: Any, s: Any)>#
- cell_measure = <Function AdaptiveNanogrid__cell_measure(args: Any, s: Any)>#
- cell_normal = <Function AdaptiveNanogrid__cell_normal(args: Any, s: Any)>#
- cell_coordinates = <Function AdaptiveNanogrid__cell_coordinates(args: Any, cell_index: int, pos: Any)>#
- cell_closest_point = <Function AdaptiveNanogrid__cell_closest_point(args: Any, cell_index: int, pos: Any)>#
- side_position = <Function AdaptiveNanogrid__side_position(args: Any, s: Any)>#
- side_inner_inverse_deformation_gradient = <Function AdaptiveNanogrid__side_inner_inverse_deformation_gradient(args: Any, s: Any)>#
- side_outer_inverse_deformation_gradient = <Function AdaptiveNanogrid__side_outer_inverse_deformation_gradient(args: Any, s: Any)>#
- side_measure = <Function AdaptiveNanogrid__side_measure(args: Any, s: Any)>#
- side_measure_ratio = <Function AdaptiveNanogrid__side_measure_ratio(args: Any, s: Any)>#
- side_inner_cell_index = <Function AdaptiveNanogrid__side_inner_cell_index(args: Any, side_index: int)>#
- side_outer_cell_index = <Function AdaptiveNanogrid__side_outer_cell_index(args: Any, side_index: int)>#
- side_inner_cell_coords = <Function AdaptiveNanogrid__side_inner_cell_coords(args: Any, side_index: int, side_coords: Any)>#
- side_outer_cell_coords = <Function AdaptiveNanogrid__side_outer_cell_coords(args: Any, side_index: int, side_coords: Any)>#
- side_from_cell_coords = <Function AdaptiveNanogrid__side_from_cell_coords(args: Any, side_index: int, element_index: int, element_coords: Any)>#
- side_to_cell_arg = <Function AdaptiveNanogrid__side_to_cell_arg(side_arg: Any)>#
- Parameters:
side_arg (Any)
- side_coordinates = <Function AdaptiveNanogrid__side_coordinates(args: Any, side_index: int, pos: Any)>#
- side_closest_point = <Function AdaptiveNanogrid__side_closest_point(args: Any, side_index: int, pos: Any)>#
- 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)>#