/usr/include/trilinos/Sacado_Fad_LAPACK.hpp is in libtrilinos-sacado-dev 12.12.1-5.
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 | // $Id$
// $Source$
// @HEADER
// ***********************************************************************
//
// Sacado Package
// Copyright (2006) Sandia Corporation
//
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software.
//
// 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 David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
// (etphipp@sandia.gov).
//
// ***********************************************************************
// @HEADER
#ifndef SACADO_FAD_LAPACK_HPP
#define SACADO_FAD_LAPACK_HPP
#include "Teuchos_LAPACK.hpp"
#include "Sacado_No_Kokkos.hpp"
#include "Sacado_CacheFad_DFad.hpp"
#include "Sacado_dummy_arg.hpp"
namespace Sacado {
namespace Fad {
template <typename OrdinalType, typename FadType>
class ArrayTraits {
typedef typename Sacado::ValueType<FadType>::type ValueType;
typedef typename Sacado::ScalarType<FadType>::type scalar_type;
typedef typename Sacado::dummy<ValueType,scalar_type>::type ScalarType;
public:
ArrayTraits(bool use_dynamic = true,
OrdinalType workspace_size = 0);
ArrayTraits(const ArrayTraits& a);
~ArrayTraits();
void unpack() const;
void pack() const;
void free() const;
ValueType* allocate_array(OrdinalType size) const;
void free_array(const ValueType* ptr, OrdinalType size) const;
bool is_array_contiguous(const FadType* a, OrdinalType n,
OrdinalType n_dot) const;
protected:
//! Use dynamic memory allocation
bool use_dynamic;
//! Size of static workspace
OrdinalType workspace_size;
//! Workspace for holding contiguous values/derivatives
mutable ValueType *workspace;
//! Pointer to current free entry in workspace
mutable ValueType *workspace_pointer;
};
template <typename T> struct ArrayValueType { typedef T type; };
//! Fad specializations for Teuchos::LAPACK wrappers
template <typename OrdinalType, typename FadType>
class Fad_LAPACK {
typedef typename Teuchos::ScalarTraits<FadType>::magnitudeType MagnitudeType;
typedef typename Sacado::ValueType<FadType>::type ValueType;
typedef typename Sacado::ScalarType<FadType>::type scalar_type;
typedef typename Sacado::dummy<ValueType,scalar_type>::type ScalarType;
typedef Teuchos::LAPACK<OrdinalType,FadType> LAPACKType;
public:
//! @name Constructor/Destructor.
//@{
//! Default constructor.
Fad_LAPACK(bool use_default_impl = true,
bool use_dynamic = true,
OrdinalType static_workspace_size = 0);
//! Copy constructor.
Fad_LAPACK(const Fad_LAPACK& x);
//! Destructor.
virtual ~Fad_LAPACK();
//@}
//! Computes the solution to a real system of linear equations
void GESV(const OrdinalType n, const OrdinalType nrhs, FadType* A, const OrdinalType lda,
OrdinalType* IPIV, FadType* B, const OrdinalType ldb, OrdinalType* info) const;
protected:
//! ArrayTraits for packing/unpacking value/derivative arrays
ArrayTraits<OrdinalType,FadType> arrayTraits;
//! LAPACK for values
Teuchos::LAPACK<OrdinalType, ValueType> lapack;
//! Use custom or default implementation
bool use_default_impl;
protected:
//! Implementation of GESV
void Fad_GESV() const;
}; // class FadLAPACK
} // namespace Fad
} // namespace Sacado
namespace Teuchos {
// Specialization of Teuchos::LAPACK for Sacado::Fad::DFad
template <typename OrdinalType, typename ScalarType>
class LAPACK< OrdinalType, Sacado::Fad::DFad<ScalarType> > :
public Sacado::Fad::Fad_LAPACK< OrdinalType, Sacado::Fad::DFad<ScalarType> > {};
}
#include "Sacado_Fad_LAPACKImp.hpp"
#endif // SACADO_FAD_LAPACK_HPP
|