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))
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}")