Class MiPointProbeIjk

java.lang.Object
com.openinventor.meshvizxlm.extractors.pointprobe.MiPointProbeIjk
All Implemented Interfaces:
MiBaseExtractor, MiExtractorIjk
Direct Known Subclasses:
MiPointProbeHexahedronIjk

public abstract class MiPointProbeIjk extends Object implements MiExtractorIjk
Probe at a given location in a structured volume mesh.

This class can be used to evaluate the value of a data set in the given mesh at any location. The probe is internally building an octree onto volume meshes.
This octree can be optimized by setting three environment variables (see SoPreferences and MiPointProbeUnstructured ).

  • Method Details

    • getNewInstance

      public static <T extends MiTopologyIjk, G extends MiGeometryHexahedronIjk> MiPointProbeIjk getNewInstance(MiVolumeMeshVertexHexahedronIjk<T,G> mesh)
      Create an instance of a probe for non indexed hexahedron volume mesh IJK.
      Parameters:
      mesh - the input mesh
      Returns:
      a probe for non indexed hexahedron volume mesh IJK.
    • setLocation

      public abstract boolean setLocation(double[] point, MiCellFilterIjk cellFilter)
      Sets the current probe location at the given point and looks for the cell containing this point.
      If the probe location is inside a cell not accepted by the optional filter, this methods returns false
      Parameters:
      point - the destination point of the probe
      cellFilter - the cell filter
      Returns:
      true if this location is inside the mesh, false otherwise
    • moveLocation

      public abstract boolean moveLocation(double[] point, int cellIdI, int cellIdJ, int cellIdK, MiCellFilterIjk cellFilter)
      Moves the current probe location at the given point.

      This method is similar and gives the same result as setLocation(double[], MiCellFilterIjk). But, first it looks for the containing cell in the neighborhood of the cell having id ( cellIdI,cellIdJ,cellIdK). Then, if the neighborhood of this given cell does not contain the given point this method searches in the whole mesh like the method setLocation.

      For instance, moveLocation could be used instead of setLocation when the cell containing the point is already known, or when the displacement of the probe is not too large compared to the cell's size at the previous location of the probe. In this case, use getCellId() as input cellId argument.

      Parameters:
      point - the destination point of the probe
      cellIdI - input cell I used as initial search criteria. If MxMeshViz.UNDEFINED_ID, this method is equivalent to setLocation.
      cellIdJ - input cell J used as initial search criteria. If MxMeshViz.UNDEFINED_ID, this method is equivalent to setLocation.
      cellIdK - input cell K used as initial search criteria. If MxMeshViz.UNDEFINED_ID, this method is equivalent to setLocation.
      cellFilter - the cell filter
      Returns:
      true if this location is inside the mesh, false otherwise
    • isFound

      public abstract boolean isFound()
      Checks if the current probe location is inside the mesh.
      Returns:
      true if the current probe location is inside the mesh, false otherwise
    • getCellId

      public abstract int[] getCellId()
      Gets the ids of the cell of the mesh containing the current location of the probe.

      i, j and k are set to MxMeshViz.UNDEFINED_ID if the current location of the probe is outside the mesh.

      Returns:
      the {i, j, k} ids of the cell.
    • getValue

      public abstract double getValue(MiScalardSetIjk dataset)
      Gets the scalar value at the current probe location in the given PER_CELL scalar set.
      The returned value is meaningless if the probe location is outside the mesh (when isFound() is false
      Parameters:
      dataset - the input scalar set
      Returns:
      scalar value at the current probe location
      Throws:
      UnsupportedOperationException - if binding of scalar set is not PER_CELL
    • getValue

      public abstract double[] getValue(MiVec3dSetIjk dataset)
      Gets the vector value at the current probe location in the given PER_CELL vector set.
      The returned value is null if the probe location is outside the mesh (when isFound() is false).
      Parameters:
      dataset - the input vector set
      Returns:
      the vector coordinates {x,y,z} at the current probe location or null if the probe location is outside the mesh
      Throws:
      UnsupportedOperationException - if binding of vector set is not PER_CELL