interfacegrids_gene.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:tango 作者: LLNL 项目源码 文件源码
def make_extrapolator_fixed_slope(xSmall, fSmall, outwardSlope):
    """Create an extrapolator that uses cubic interpolation within the given domain xSmall, and an
    imposed linear fit with imposed slope outside the given domain xSmall.  Data must be sorted.

    Inputs:
      xSmall           independent variable on the smaller domain (array)
      fSmall           dependent variable on the smaller domain (array)
      outwardSlope      imposed slope outside the domain xSmall
    Outputs:
      extrapolator      function that can be evaluated on a domain, like interpolators
    """
    def extrapolator(xLarge):
        fLarge = np.zeros_like(xLarge, dtype=np.float)
        # exterior region: left side
        indLeftExterior = xLarge < xSmall[0]
        fLarge[indLeftExterior] = outwardSlope * (xLarge[indLeftExterior] - xSmall[0]) + fSmall[0]

        #exterior region: right side
        indRightExterior = xLarge > xSmall[-1]
        fLarge[indRightExterior] = outwardSlope * (xLarge[indRightExterior] - xSmall[-1]) + fSmall[-1]

        # interpolated points in the interior using cubic interpolation
        interpolatorInterior = scipy.interpolate.InterpolatedUnivariateSpline(xSmall, fSmall, k=3) # cubic 
        indInterior = (xLarge >= xSmall[0]) & (xLarge <= xSmall[-1])
        fLarge[indInterior] = interpolatorInterior(xLarge[indInterior])
        return fLarge
    return extrapolator
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号