This file is indexed.

/usr/include/trilinos/Rythmos_InterpolatorBase.hpp is in libtrilinos-rythmos-dev 12.10.1-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
//@HEADER
// ***********************************************************************
//
//                     Rythmos Package
//                 Copyright (2006) Sandia Corporation
//
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
// license for use of this work by or on behalf of the U.S. Government.
//
// This library 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 2.1 of the
// License, or (at your option) any later version.
//
// This library 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 this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
// USA
// Questions? Contact Todd S. Coffey (tscoffe@sandia.gov)
//
// ***********************************************************************
//@HEADER

#ifndef Rythmos_INTERPOLATOR_BASE_H
#define Rythmos_INTERPOLATOR_BASE_H

#include "Rythmos_DataStore.hpp"
#include "Rythmos_InterpolationBufferHelpers.hpp"


namespace Rythmos {


/** \brief Base strategy class for interpolation functionality.
 *
 * ToDo: Finish documentation!
 */
template<class Scalar> 
class InterpolatorBase
  : virtual public Teuchos::Describable
  , virtual public Teuchos::ParameterListAcceptor
  , virtual public Teuchos::VerboseObject<InterpolatorBase<Scalar> >
{
public:

  /** \brief Return if this interpolator supports cloning or not.
   *
   * If <tt>returnVal==true</tt>, then <tt>cloneInterpolator()</tt> will clone
   * <tt>*this</tt> object and return an non-null RCP.
   *
   * The default implementation of this function simply returns false.
   */
  virtual bool supportsCloning() const;

  /** \brief Clone the interpolator object if supported.
   *
   * <b>Postconditions:</b><ul>
   * <tt>[<tt>supportsCloning()==true</tt>] <tt>returnVal != Teuchos::null</tt>
   * <tt>[<tt>supportsCloning()==false</tt>] <tt>returnVal == Teuchos::null</tt>
   * </ul>
   *
   * The default implementation returns <tt>Teuchos::null</tt> which is
   * consistent with the default implementation of <tt>supportsCloning()</tt>.
   * If this function is overridden in a base class to support cloning, then
   * <tt>supportsCloning()</tt> must be overridden to return <tt>true</tt>.
   */
  virtual Teuchos::RCP<InterpolatorBase<Scalar> > cloneInterpolator() const;

  /** \brief Store pointer to interpolation nodes
   * 
   * This function represent a persisting relationship between the
   * interpolation nodes and the interpolator.  For simple interpolators like
   * linear and Hermite, this is not needed, but for interpolators like cubic
   * splines where there is some computational work in assembling the
   * interpolant, this is important.
   *
   * <b>Preconditions:</b><ul>
   * <li><tt>nodes</tt> must have unique time values and be sorted in ascending time order
   * </ul>
   *
   * <b>Postconditions:</b><ul>
   * <li>If this function is called twice and <tt>nodes</tt> is a different
   * pointer than was previously called, then it is possible that the
   * interpolant will be recomputed when <tt>interpolate</tt> is next called.
   * </ul>
   */
  virtual void setNodes(
    const RCP<const typename DataStore<Scalar>::DataStoreVector_t> & nodes
    ) =0;

  /** \brief Perform an interpolation.
   *
   * This function must support passing node values back out directly,
   * handling when only one node value is passed in, and dealing with
   * <tt>xdot==Teuchos::null</tt>.  
   *
   * <b>Preconditions:</b><ul>
   * <li>if <tt>nodes->size()==1</tt> then <tt>t_values[0] == (*nodes)[0].time</tt>
   * <li><tt>t_values</tt> must have unique and sorted values in ascending order
   * <li><tt>nodes->front().time <= t_values[i] <= nodes->back().time</tt> for
   *     all <tt>t=0..time_values.size()-1</tt>
   * <li><tt>(*nodes)[i].x != Teuchos::null</tt> for all <tt>i=0..nodes->size()-1</tt>
   * </ul>
   *
   * <b>Postconditions:</b><ul>
   * <li><tt>data_out</tt> will come out sorted in ascending time order
   * <li>if <tt>(*nodes)[i].xdot == Teuchos::null</tt> then all t_values in the
   *    interval <tt>(*nodes)[i-1]..(*nodes)[i+1]</tt> will have <tt>xdot =
   *    Tuechos::null</tt>.
   * </ul>
  */
  virtual void interpolate(
    const Array<Scalar> &t_values,
    typename DataStore<Scalar>::DataStoreVector_t *data_out
    ) const =0;

  /** \brief Return the order of the interpolation.
   *
   * 2007/05/18: rabartl: ToDo: Define what "order" means.
   */
  virtual int order() const =0;

};



// ///////////////////////////////
// Implementations


template<class Scalar>
bool InterpolatorBase<Scalar>::supportsCloning() const
{
  return false;
}


template<class Scalar>
Teuchos::RCP<InterpolatorBase<Scalar> >
InterpolatorBase<Scalar>::cloneInterpolator() const
{
  return Teuchos::null;
}


} // namespace Rythmos


#endif //Rythmos_INTERPOLATOR_BASE_H