constant.py 1.52 KB
Newer Older
Philipp Arras's avatar
Philipp Arras committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Copyright(C) 2013-2018 Max-Planck-Society
#
# NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik
# and financially supported by the Studienstiftung des deutschen Volkes.
Philipp Arras's avatar
Philipp Arras committed
18
from .model import Model
19
20


Philipp Arras's avatar
Philipp Arras committed
21
class Constant(Model):
22
    """A model with a constant (multi-)field as value.
23

24
25
26
27
28
29
    Parameters
    ----------
    position : Field or MultiField
        The current position in parameter space.
    constant : Field
        The value of the model.
Julian Ruestig's avatar
Julian Ruestig committed
30

Martin Reinecke's avatar
Martin Reinecke committed
31
32
    Notes
    -----
Julian Ruestig's avatar
Julian Ruestig committed
33
34
35
    Since there is no model-function associated:
        - Position has no influence on value.
        - There is no gradient.
36
    """
Philipp Arras's avatar
Cleanup  
Philipp Arras committed
37
    # TODO Remove position
38
    def __init__(self, position, constant):
Philipp Arras's avatar
Philipp Arras committed
39
        super(Constant, self).__init__(position)
40
41
42
        self._constant = constant

        self._value = self._constant
Philipp Arras's avatar
Philipp Arras committed
43
        self._gradient = 0.
44
45
46

    def at(self, position):
        return self.__class__(position, self._constant)