def add_data(self, silo, variables=[], scalars=[], vectors=[], expressions=[], time=None, step=None, scale_factor=1): if scalars or vectors: import warnings warnings.warn("`scalars' and `vectors' arguments are deprecated", DeprecationWarning) variables = scalars + vectors from pyvisfile.silo import DB_NODECENT, DBOPT_DTIME, DBOPT_CYCLE # put mesh coordinates mesh_opts = {} if time is not None: mesh_opts[DBOPT_DTIME] = float(time) if step is not None: mesh_opts[DBOPT_CYCLE] = int(step) if self.dim == 1: for name, field in variables: from hedge.tools import is_obj_array if is_obj_array(field): AXES = ["x", "y", "z", "w"] for i, f_i in enumerate(field): silo.put_curve(name + AXES[i], self.xvals, scale_factor * f_i, mesh_opts) else: silo.put_curve(name, self.xvals, scale_factor * field, mesh_opts) else: self.fine_mesh.put_mesh(silo, "finezonelist", "finemesh", mesh_opts) self.coarse_mesh.put_mesh(silo, "coarsezonelist", "mesh", mesh_opts) from hedge.tools import log_shape # put data for name, field in variables: ls = log_shape(field) if ls != () and ls[0] > 1: assert len(ls) == 1 silo.put_ucdvar( name, "finemesh", ["%s_comp%d" % (name, i) for i in range(ls[0])], scale_factor * field, DB_NODECENT) else: if ls != (): field = field[0] silo.put_ucdvar1(name, "finemesh", scale_factor * field, DB_NODECENT) if expressions: silo.put_defvars("defvars", expressions)
def __call__(self): var = self.getter() from hedge.tools import log_shape if len(log_shape(var)) == 1: return sum(self.discr.integral(np.abs(v)) for v in var) else: return self.discr.integral(var)
def apply_mask(field): from hedge.tools import log_shape ls = log_shape(field) result = discr.volume_empty(ls) from pytools import indices_in_shape for i in indices_in_shape(ls): result[i] = mask * field[i] return result
def add_data(self, silo, variables=[], scalars=[], vectors=[], expressions=[], time=None, step=None, scale_factor=1): if scalars or vectors: import warnings warnings.warn("`scalars' and `vectors' arguments are deprecated", DeprecationWarning) variables = scalars + vectors from pyvisfile.silo import DB_NODECENT, DBOPT_DTIME, DBOPT_CYCLE # put mesh coordinates mesh_opts = {} if time is not None: mesh_opts[DBOPT_DTIME] = float(time) if step is not None: mesh_opts[DBOPT_CYCLE] = int(step) if self.dim == 1: for name, field in variables: from hedge.tools import is_obj_array if is_obj_array(field): AXES = ["x", "y", "z", "w"] for i, f_i in enumerate(field): silo.put_curve(name+AXES[i], self.xvals, scale_factor*f_i, mesh_opts) else: silo.put_curve(name, self.xvals, scale_factor*field, mesh_opts) else: self.fine_mesh.put_mesh(silo, "finezonelist", "finemesh", mesh_opts) self.coarse_mesh.put_mesh(silo, "coarsezonelist", "mesh", mesh_opts) from hedge.tools import log_shape # put data for name, field in variables: ls = log_shape(field) if ls != () and ls[0] > 1: assert len(ls) == 1 silo.put_ucdvar(name, "finemesh", ["%s_comp%d" % (name, i) for i in range(ls[0])], scale_factor*field, DB_NODECENT) else: if ls != (): field = field[0] silo.put_ucdvar1( name, "finemesh", scale_factor*field, DB_NODECENT) if expressions: silo.put_defvars("defvars", expressions)
def split(self, whole_vol_vector): from pytools import indices_in_shape from hedge.tools import log_shape ls = log_shape(whole_vol_vector) if ls != (): result = [numpy.zeros(ls, dtype=object) for part_emb in self._embeddings()] for p, part_emb in enumerate(self._embeddings()): for i in indices_in_shape(ls): result[p][i] = whole_vol_vector[part_emb] return result else: return [whole_vol_vector[part_emb] for part_emb in self._embeddings()]
def split(self, whole_vol_vector): from pytools import indices_in_shape from hedge.tools import log_shape ls = log_shape(whole_vol_vector) if ls != (): result = [ numpy.zeros(ls, dtype=object) for part_emb in self._embeddings() ] for p, part_emb in enumerate(self._embeddings()): for i in indices_in_shape(ls): result[p][i] = whole_vol_vector[part_emb] return result else: return [ whole_vol_vector[part_emb] for part_emb in self._embeddings() ]
def reassemble(self, parts_vol_vectors): from pytools import single_valued, indices_in_shape from hedge.tools import log_shape ls = single_valued(log_shape(pvv) for pvv in parts_vol_vectors) def remap_scalar_field(idx): result = self.whole_discr.volume_zeros() for part_emb, part_vol_vector in zip(self._embeddings(), parts_vol_vectors): result[part_emb] = part_vol_vector[idx] return result if ls != (): result = numpy.zeros(ls, dtype=object) for i in indices_in_shape(ls): result[i] = remap_scalar_field(i) return result else: return remap_scalar_field(())
def reassemble(self, parts_vol_vectors): from pytools import single_valued, indices_in_shape from hedge.tools import log_shape ls = single_valued(log_shape(pvv) for pvv in parts_vol_vectors) def remap_scalar_field(idx): result = self.whole_discr.volume_zeros() for part_emb, part_vol_vector in zip( self._embeddings(), parts_vol_vectors): result[part_emb] = part_vol_vector[idx] return result if ls != (): result = numpy.zeros(ls, dtype=object) for i in indices_in_shape(ls): result[i] = remap_scalar_field(i) return result else: return remap_scalar_field(())