Skip to content
Snippets Groups Projects
Commit 1763f1ca authored by Lukas Platz's avatar Lukas Platz
Browse files

move total_volume functionality to DomainTuple

parent 4a05f59b
No related branches found
No related tags found
1 merge request!359Add total_volume property to DomainTuple
Pipeline #62676 passed
...@@ -19,6 +19,8 @@ from functools import reduce ...@@ -19,6 +19,8 @@ from functools import reduce
from . import utilities from . import utilities
from .domains.domain import Domain from .domains.domain import Domain
import numpy as np
class DomainTuple(object): class DomainTuple(object):
"""Ordered sequence of Domain objects. """Ordered sequence of Domain objects.
...@@ -125,11 +127,28 @@ class DomainTuple(object): ...@@ -125,11 +127,28 @@ class DomainTuple(object):
""" """
return self._size return self._size
@property def total_volume(self, spaces=None):
def total_volume(self): """Returns the total volume of `self` or of a subspace of it.
Parameters
----------
spaces : int, tuple of int or None
Indices of the sub-domains of the domain to be considered.
If `None`, the total volume of the whole domain is returned.
Returns
-------
float
the total volume of the requested (sub-)domain.
"""
if np.isscalar(spaces):
return self._dom[spaces].total_volume
if spaces is None:
spaces = range(len(self._dom))
res = 1. res = 1.
for d in self._dom: for i in spaces:
res *= d.total_volume res *= self._dom[i].total_volume
return res return res
@property @property
......
...@@ -260,30 +260,20 @@ class Field(object): ...@@ -260,30 +260,20 @@ class Field(object):
return res return res
def total_volume(self, spaces=None): def total_volume(self, spaces=None):
"""Returns the total volume of a sub-domain of `self`. """Returns the total volume of the field's domain or of a subspace of it.
Parameters Parameters
---------- ----------
spaces : int, tuple of int or None spaces : int, tuple of int or None
Indices of the sub-domains of the field's domain to be considered. Indices of the sub-domains of the field's domain to be considered.
If `None`, the entire domain is used. If `None`, the total volume of the whole domain is returned.
Returns Returns
------- -------
float float
the total volume of the requested sub-domain. the total volume of the requested (sub-)domain.
""" """
if spaces is None: return self._domain.total_volume(spaces)
return self._domain.total_volume
if np.isscalar(spaces):
return self._domain[spaces].total_volume
# tuple of spaces given
res = 1.
for i in spaces:
res *= self._domain[i].total_volume
return res
def weight(self, power=1, spaces=None): def weight(self, power=1, spaces=None):
"""Weights the pixels of `self` with their invidual pixel volumes. """Weights the pixels of `self` with their invidual pixel volumes.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment