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
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,...