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"
53 #include "Intrepid_ArrayTools.hpp"
56 #include "Intrepid_CellTools.hpp"
57 
58 
59 namespace 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 
static void HVOLtransformVALUEDual(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Applies the dual of HVOLtransformVALUE.
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.
Header file for the Intrepid::CellTools class.
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 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...
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
Header file for utility class to provide multidimensional containers.
Header file for utility class to provide array tools, such as tensor contractions, etc.
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...
Definition file for the Intrepid::FunctionSpaceToolsInPlace class.
Header file for classes providing basic linear algebra functionality in 1D, 2D and 3D...
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 HDIVtransformDIVDual(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Applies the dual of HDIVtransformDIV, which is the same.
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 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 HGRADtransformGRADDual(ArrayType &inOutVals, const ArrayTypeJac &jacobianInverse, const char transpose='T')
Applies the transpose of the HGRADtransformGRAD to the data.
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...