constant.py 1.69 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.
Martin Reinecke's avatar
Martin Reinecke committed
18 19

from __future__ import absolute_import, division, print_function
20

Martin Reinecke's avatar
Martin Reinecke committed
21
from ..compat import *
Martin Reinecke's avatar
Martin Reinecke committed
22
from ..operators.null_operator import NullOperator
Philipp Arras's avatar
Philipp Arras committed
23
from .model import Model
24 25


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

29 30 31 32 33 34
    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
35

Martin Reinecke's avatar
Martin Reinecke committed
36 37
    Notes
    -----
Julian Ruestig's avatar
Julian Ruestig committed
38 39
    Since there is no model-function associated:
        - Position has no influence on value.
Martin Reinecke's avatar
Martin Reinecke committed
40
        - The Jacobian is a null matrix.
41
    """
Philipp Arras's avatar
Philipp Arras committed
42

43
    def __init__(self, position, constant):
Philipp Arras's avatar
Philipp Arras committed
44
        super(Constant, self).__init__(position)
45 46 47
        self._constant = constant

        self._value = self._constant
Martin Reinecke's avatar
typo  
Martin Reinecke committed
48
        self._jacobian = NullOperator(position.domain, constant.domain)
49 50 51

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