Intrepid
Intrepid_FunctionSpaceToolsInPlace.hpp
Go to the documentation of this file.
1// @HEADER
2// ************************************************************************
3//
4// Intrepid Package
5// Copyright (2007) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Pavel Bochev (pbboche@sandia.gov)
38// Denis Ridzal (dridzal@sandia.gov), or
39// Kara Peterson (kjpeter@sandia.gov)
40//
41// ************************************************************************
42// @HEADER
43
49#ifndef INTREPID_FUNCTIONSPACETOOLSINPLACE_HPP
50#define INTREPID_FUNCTIONSPACETOOLSINPLACE_HPP
51
52#include "Intrepid_ConfigDefs.hpp"
57
58
59namespace Intrepid {
60
79 public:
115 template<class Scalar, class ArrayType>
116 static void HGRADtransformVALUE(ArrayType & inOutVals );
117
120 template<class Scalar, class ArrayType>
121 static void HGRADtransformVALUEDual(ArrayType & inOutVals );
122
159 template<class Scalar, class ArrayType, class ArrayTypeJac>
160 static void HGRADtransformGRAD(ArrayType & inOutVals,
161 const ArrayTypeJac & jacobianInverse,
162 const char transpose = 'T');
163
166 template<class Scalar, class ArrayType, class ArrayTypeJac>
167 static void HGRADtransformGRADDual(ArrayType & inOutVals,
168 const ArrayTypeJac & jacobianInverse,
169 const char transpose = 'T');
170
206 template<class Scalar, class ArrayType, class ArrayTypeJac>
207 static void HCURLtransformVALUE(ArrayType & inOutVals,
208 const ArrayTypeJac & jacobianInverse,
209 const char transpose = 'T');
210
212 template<class Scalar, class ArrayType, class ArrayTypeJac>
213 static void HCURLtransformVALUEDual(ArrayType & outVals,
214 const ArrayTypeJac & jacobianInverse,
215 const char transpose = 'T');
216
254 template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
255 static void HCURLtransformCURL(ArrayType & inOutVals,
256 const ArrayTypeJac & jacobian,
257 const ArrayTypeDet & jacobianDet,
258 const char transpose = 'N');
259
261 template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
262 static void HCURLtransformCURLDual(ArrayType & outVals,
263 const ArrayTypeJac & jacobian,
264 const ArrayTypeDet & jacobianDet,
265 const char transpose = 'N');
266
304 template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
305 static void HDIVtransformVALUE(ArrayType & inOutVals,
306 const ArrayTypeJac & jacobian,
307 const ArrayTypeDet & jacobianDet,
308 const char transpose = 'N');
309
311 template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
312 static void HDIVtransformVALUEDual(ArrayType & outVals,
313 const ArrayTypeJac & jacobian,
314 const ArrayTypeDet & jacobianDet,
315 const char transpose = 'N');
316
353 template<class Scalar, class ArrayType, class ArrayTypeDet>
354 static void HDIVtransformDIV(ArrayType & inOutVals,
355 const ArrayTypeDet & jacobianDet);
356
358 template<class Scalar, class ArrayType, class ArrayTypeDet>
359 static void HDIVtransformDIVDual(ArrayType & inOutVals,
360 const ArrayTypeDet & jacobianDet);
361
398 template<class Scalar, class ArrayType, class ArrayTypeDet>
399 static void HVOLtransformVALUE(ArrayType & inOutVals,
400 const ArrayTypeDet & jacobianDet);
401
403 template<class Scalar, class ArrayType, class ArrayTypeDet>
404 static void HVOLtransformVALUEDual(ArrayType & inOutVals,
405 const ArrayTypeDet & jacobianDet);
406
407 template<class Scalar, class ArrayType, class ArrayTypeMeasure>
408 static void multiplyMeasure(ArrayType & inOutVals,
409 const ArrayTypeMeasure & inMeasure);
410
411
412}; // end FunctionSpaceToolsInPlace
413
414} // end namespace Intrepid
415
416// include templated definitions
418
419#endif
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442#if defined(Intrepid_SHOW_DEPRECATED_WARNINGS)
443#ifdef __GNUC__
444#warning "The Intrepid package is deprecated"
445#endif
446#endif
447
Header file for utility class to provide array tools, such as tensor contractions,...
Header file for the Intrepid::CellTools class.
Header file for utility class to provide multidimensional containers.
Definition file for the Intrepid::FunctionSpaceToolsInPlace class.
Header file for classes providing basic linear algebra functionality in 1D, 2D and 3D.
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
static void HCURLtransformCURL(ArrayType &inOutVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose='N')
Transformation of a curl field in the H-curl space, defined at points on a reference cell,...
static void HGRADtransformVALUE(ArrayType &inOutVals)
Transformation of a (scalar) value field in the H-grad space, defined at points on a reference cell,...
static void HVOLtransformVALUE(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Transformation of a (scalar) value field in the H-vol space, defined at points on a reference cell,...
static void HDIVtransformVALUE(ArrayType &inOutVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose='N')
Transformation of a (vector) value field in the H-div space, defined at points on a reference cell,...
static void HDIVtransformDIVDual(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Applies the dual of HDIVtransformDIV, which is the same.
static void HCURLtransformVALUE(ArrayType &inOutVals, const ArrayTypeJac &jacobianInverse, const char transpose='T')
Transformation of a (vector) value field in the H-curl space, defined at points on a reference cell,...
static void HCURLtransformCURLDual(ArrayType &outVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose='N')
Applies the dual of the HCURLtransformCURL transformation.
static void HCURLtransformVALUEDual(ArrayType &outVals, const ArrayTypeJac &jacobianInverse, const char transpose='T')
Applies the dual of the HCURLtransformVALUE transformation.
static void HDIVtransformDIV(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Transformation of a divergence field in the H-div space, defined at points on a reference cell,...
static void HDIVtransformVALUEDual(ArrayType &outVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose='N')
Applies the dual of HDIVtransformVALUE.
static void HGRADtransformVALUEDual(ArrayType &inOutVals)
Since there is no matrix involved, this is the same transformation as HGRADtransformVALUE.
static void HVOLtransformVALUEDual(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Applies the dual of HVOLtransformVALUE.
static void HGRADtransformGRADDual(ArrayType &inOutVals, const ArrayTypeJac &jacobianInverse, const char transpose='T')
Applies the transpose of the HGRADtransformGRAD to the data.
static void HGRADtransformGRAD(ArrayType &inOutVals, const ArrayTypeJac &jacobianInverse, const char transpose='T')
Transformation of a gradient field in the H-grad space, defined at points on a reference cell,...