From 3f1d11d3412ba50c140870d23a44be0b4765e08a Mon Sep 17 00:00:00 2001 From: "J. S. Oishi" <jsoishi@gmail.com> Date: Tue, 26 Apr 2022 10:47:27 -0400 Subject: [PATCH] Fixed missing dimensions for tensor coordinate axes; added labels to scales as well as tasks. --- dedalus/core/evaluator.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/dedalus/core/evaluator.py b/dedalus/core/evaluator.py index f3b82e62..3762dcfa 100644 --- a/dedalus/core/evaluator.py +++ b/dedalus/core/evaluator.py @@ -631,6 +631,29 @@ def dset_metadata(self, task, task_num, dset, scale_group, gnc_shape, gnc_start, scale.make_scale(sn) dset.dims[0].attach_scale(scale) + # Tensor components + skip = 1 + for comp in op.tensorsig: + data = np.array(comp.names,dtype='S') + sn = 'coords' + if self.dist.comm_cart.rank == 0: + scale_hash = hashlib.sha1(data).hexdigest() + else: + scale_hash = None + if not virtual_file: + scale_hash = self.dist.comm_cart.bcast(scale_hash, root=0) + + lookup = 'hash_' + scale_hash + + if lookup not in scale_group: + scale_group.create_dataset(name=lookup, data=data) + scale_group[lookup].make_scale(sn) + + scale = scale_group[lookup] + dset.dims[skip].label = sn + dset.dims[skip].attach_scale(scale) + skip += 1 + # Spatial scales for axis in range(self.dist.dim): basis = op.domain.full_bases[axis] @@ -662,10 +685,10 @@ def dset_metadata(self, task, task_num, dset, scale_group, gnc_shape, gnc_start, if lookup not in scale_group: scale_group.create_dataset(name=lookup, data=data) - scale_group[lookup].make_scale() + scale_group[lookup].make_scale(sn) scale = scale_group[lookup] - dset.dims[axis+1].label = sn - dset.dims[axis+1].attach_scale(scale) + dset.dims[axis+skip].label = sn + dset.dims[axis+skip].attach_scale(scale) def process(self, world_time=0, wall_time=0, sim_time=0, timestep=0, iteration=0, **kw):