Commit 0dcb85ee authored by Martin Reinecke's avatar Martin Reinecke

merge from master

parents 5ee3f23d d11f0851
Pipeline #15170 passed with stage
in 8 minutes and 34 seconds
......@@ -53,24 +53,28 @@ class CriticalPowerEnergy(Energy):
default : None
"""
# ---Overwritten properties and methods---
def __init__(self, position, m, D=None, alpha=1.0, q=0.,
smoothness_prior=0., logarithmic=True, samples=3, w=None):
super(CriticalPowerEnergy, self).__init__(position=position)
self.m = m
self.D = D
self.samples = samples
self.smoothness_prior = np.float(smoothness_prior)
self.alpha = Field(self.position.domain, val=alpha)
self.q = Field(self.position.domain, val=q)
self.T = SmoothnessOperator(domain=self.position.domain[0],
strength=self.smoothness_prior,
strength=smoothness_prior,
logarithmic=logarithmic)
self.rho = self.position.domain[0].rho
self._w = w if w is not None else None
def at(self, position): #MR what about logarithmic?
# ---Mandatory properties and methods---
def at(self, position):
return self.__class__(position, self.m, D=self.D, alpha=self.alpha,
q=self.q, smoothness_prior=self.smoothness_prior,
logarithmic=self.logarithmic,
w=self.w, samples=self.samples)
@property
......@@ -94,6 +98,16 @@ class CriticalPowerEnergy(Energy):
T=self.T)
return curvature
# ---Added properties and methods---
@property
def logarithmic(self):
return self.T.logarithmic
@property
def smoothness_prior(self):
return self.T.strength
@property
def w(self):
if self._w is None:
......
......@@ -48,7 +48,9 @@ class LaplaceOperator(EndomorphicOperator):
if not isinstance(self.domain[0], PowerSpace):
raise TypeError("The domain must contain exactly one PowerSpace.")
if logarithmic:
self._logarithmic = bool(logarithmic)
if self.logarithmic:
self.positions = self.domain[0].kindex.copy()
self.positions[1:] = np.log(self.positions[1:])
self.positions[0] = -1.
......@@ -78,6 +80,10 @@ class LaplaceOperator(EndomorphicOperator):
def self_adjoint(self):
return False
@property
def logarithmic(self):
return self._logarithmic
def _times(self, x, spaces):
spaces = utilities.cast_axis_to_tuple(spaces, len(x.domain))
if spaces is None:
......
......@@ -20,7 +20,7 @@ class SmoothnessOperator(EndomorphicOperator):
Parameters
----------
sigma: float,
strength: float,
Specifies the strength of the SmoothnessOperator
logarithmic : boolean,
Whether smoothness is calculated on a logarithmic scale or linear scale
......@@ -83,6 +83,10 @@ class SmoothnessOperator(EndomorphicOperator):
# ---Added properties and methods---
@property
def logarithmic(self):
return self._laplace.logarithmic
@property
def strength(self):
return self._strength
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment