예제 #1
0
    def _to_vtk_helper(self,
                       filename=None,
                       field_select="field",
                       fieldname="field"):  # pragma: no cover
        """Create a VTK/PyVista grid of the stored field or save a VTK dataset
        to a file.

        This is an internal helper that will handle saving or creating objects

        Parameters
        ----------
        filename : :class:`str`
            Filename of the file to be saved, including the path. Note that an
            ending (.vtr or .vtu) will be added to the name. If ``None`` is
            passed, a PyVista dataset of the appropriate type will be returned.
        field_select : :class:`str`, optional
            Field that should be stored. Can be:
            "field", "raw_field", "krige_field", "err_field" or "krige_var".
            Default: "field"
        fieldname : :class:`str`, optional
            Name of the field in the VTK file. Default: "field"
        """
        if self.value_type is None:
            raise ValueError("Field value type not set! " +
                             "Specify 'scalar' or 'vector' before plotting.")
        elif self.value_type == "vector":
            if hasattr(self, field_select):
                field = getattr(self, field_select)
            else:
                field = None
            if not (self.pos is None or field is None
                    or self.mesh_type is None):
                suf = ["_X", "_Y", "_Z"]
                fields = {}
                for i in range(self.model.dim):
                    fields[fieldname + suf[i]] = field[i]
                if filename is None:
                    return to_vtk(self.pos, fields, self.mesh_type)
                else:
                    return vtk_export(filename, self.pos, fields,
                                      self.mesh_type)
        elif self.value_type == "scalar":
            if hasattr(self, field_select):
                field = getattr(self, field_select)
            else:
                field = None
            if not (self.pos is None or field is None
                    or self.mesh_type is None):
                if filename is None:
                    return to_vtk(self.pos, {fieldname: field}, self.mesh_type)
                else:
                    return vtk_export(filename, self.pos, {fieldname: field},
                                      self.mesh_type)
            else:
                print("Field.to_vtk: No " + field_select +
                      " stored in the class.")
        else:
            raise ValueError("Unknown field value type: {}".format(
                self.value_type))
예제 #2
0
파일: tools.py 프로젝트: gcalinak/GSTools
def to_vtk_helper(
    f_cls, filename=None, field_select="field", fieldname="field"
):  # pragma: no cover
    """Create a VTK/PyVista grid of the field or save it as a VTK file.

    This is an internal helper that will handle saving or creating objects

    Parameters
    ----------
    f_cls : :any:`Field`
        Field class in use.
    filename : :class:`str`
        Filename of the file to be saved, including the path. Note that an
        ending (.vtr or .vtu) will be added to the name. If ``None`` is
        passed, a PyVista dataset of the appropriate type will be returned.
    field_select : :class:`str`, optional
        Field that should be stored. Can be:
        "field", "raw_field", "krige_field", "err_field" or "krige_var".
        Default: "field"
    fieldname : :class:`str`, optional
        Name of the field in the VTK file. Default: "field"
    """
    if f_cls.value_type == "vector":
        if hasattr(f_cls, field_select):
            field = getattr(f_cls, field_select)
        else:
            field = None
        if not (f_cls.pos is None or field is None or f_cls.mesh_type is None):
            suf = ["_X", "_Y", "_Z"]
            fields = {}
            for i in range(f_cls.model.dim):
                fields[fieldname + suf[i]] = field[i]
            if filename is None:
                return to_vtk(f_cls.pos, fields, f_cls.mesh_type)
            return vtk_export(filename, f_cls.pos, fields, f_cls.mesh_type)
        raise ValueError(f"Field.to_vtk: '{field_select}' not available.")
    if f_cls.value_type == "scalar":
        if hasattr(f_cls, field_select):
            field = getattr(f_cls, field_select)
        else:
            field = None
        if not (f_cls.pos is None or field is None or f_cls.mesh_type is None):
            if filename is None:
                return to_vtk(f_cls.pos, {fieldname: field}, f_cls.mesh_type)
            return vtk_export(
                filename, f_cls.pos, {fieldname: field}, f_cls.mesh_type
            )
        raise ValueError(f"Field.to_vtk: '{field_select}' not available.")
    raise ValueError(f"Unknown field value type: {f_cls.value_type}")