Page MenuHomec4science

kernel.py
No OneTemporary

File Metadata

Created
Sat, Apr 27, 21:54

kernel.py

# Copyright (C) 2018-2020 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy 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 Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
import numpy as np
from rrompy.utilities.base.decorators import threshold
from rrompy.utilities.base.types import Np1D
from rrompy.utilities.exception_manager import RROMPyAssert
__all__ = ['kernels']
thresholdGaussian = -2. * np.log(np.finfo(float).eps)
@threshold(thresholdGaussian)
def radialGaussian(r2:Np1D, der : int = 0,
apply_threshold : bool = True) -> Np1D:
RROMPyAssert(der, 0, "Radial basis derivative")
if apply_threshold: r2[r2 > thresholdGaussian] = thresholdGaussian
return np.exp(-.5 * r2)
thresholdMultiQuadric = np.finfo(float).eps ** -2.
@threshold(thresholdMultiQuadric)
def multiQuadric(r2:Np1D, der : int = 0,
apply_threshold : bool = True) -> Np1D:
RROMPyAssert(der, 0, "Radial basis derivative")
if apply_threshold: r2[r2 > thresholdMultiQuadric] = thresholdMultiQuadric
return (r2 + 1.) ** -.5
@threshold(1.)
def localWendland(r2:Np1D, der : int = 0,
apply_threshold : bool = True) -> Np1D:
RROMPyAssert(der, 0, "Radial basis derivative")
if apply_threshold: r2[r2 > 1.] = 1.
rm1 = 1. - r2 ** .5
return rm1 ** 4. * (5. - 4. * rm1)
kernels = {"GAUSSIAN" : radialGaussian, "MULTIQUADRIC" : multiQuadric,
"WENDLAND" : localWendland}

Event Timeline