From 02647cdcfec11ced9faa471fd62ccb4bb55a840e Mon Sep 17 00:00:00 2001 From: Theo Steininger <theos@mpa-garching.mpg.de> Date: Thu, 16 Feb 2017 09:42:20 +0100 Subject: [PATCH] Optimized set_diagonal in DiagonalOperator. --- nifty/field.py | 2 +- .../diagonal_operator/diagonal_operator.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/nifty/field.py b/nifty/field.py index 8a01b690a..3f2802536 100644 --- a/nifty/field.py +++ b/nifty/field.py @@ -90,7 +90,7 @@ class Field(Loggable, Versionable, object): elif isinstance(val, Field): distribution_strategy = val.distribution_strategy else: - self.logger.info("Datamodel set to default!") + self.logger.debug("Datamodel set to default!") distribution_strategy = gc['default_distribution_strategy'] elif distribution_strategy not in DISTRIBUTION_STRATEGIES['global']: raise ValueError( diff --git a/nifty/operators/diagonal_operator/diagonal_operator.py b/nifty/operators/diagonal_operator/diagonal_operator.py index 9ad0e2f19..3000ecaa4 100644 --- a/nifty/operators/diagonal_operator/diagonal_operator.py +++ b/nifty/operators/diagonal_operator/diagonal_operator.py @@ -90,10 +90,15 @@ class DiagonalOperator(EndomorphicOperator): @property def symmetric(self): + if self._symmetric is None: + self._symmetric = (self._diagonal.val.imag == 0).all() return self._symmetric @property def unitary(self): + if self._unitary is None: + self._unitary = (self._diagonal.val * + self._diagonal.val.conjugate() == 1).all() return self._unitary # ---Added properties and methods--- @@ -134,11 +139,11 @@ class DiagonalOperator(EndomorphicOperator): # Otherwise, inplace weightening would change the external field f.weight(inplace=copy, power=-1) - # check if the operator is symmetric: - self._symmetric = (f.val.imag == 0).all() + # Reset the symmetric property: + self._symmetric = None - # check if the operator is unitary: - self._unitary = (f.val * f.val.conjugate() == 1).all() + # Reset the unitarity property + self._unitary = None # store the diagonal-field self._diagonal = f -- GitLab