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 HCURLtransformCURLDual(ArrayType &outVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose= 'N')
Applies the dual of the HCURLtransformCURL transformation.
static void HVOLtransformVALUEDual(ArrayType &inOutVals, const ArrayTypeDet &jacobianDet)
Applies the dual of HVOLtransformVALUE.
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...
Header file for the Intrepid::CellTools class.
static void HCURLtransformVALUEDual(ArrayType &outVals, const ArrayTypeJac &jacobianInverse, const char transpose= 'T')
Applies the dual of the HCURLtransformVALUE transformation.
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
Header file for utility class to provide multidimensional containers.
static void HDIVtransformVALUEDual(ArrayType &outVals, const ArrayTypeJac &jacobian, const ArrayTypeDet &jacobianDet, const char transpose= 'N')
Applies the dual of HDIVtransformVALUE.
Header file for utility class to provide array tools, such as tensor contractions, etc.
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...
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.
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...
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 HGRADtransformGRADDual(ArrayType &inOutVals, const ArrayTypeJac &jacobianInverse, const char transpose= 'T')
Applies the transpose of the HGRADtransformGRAD to the data.
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 HGRADtransformVALUEDual(ArrayType &inOutVals)
Since there is no matrix involved, this is the same transformation as HGRADtransformVALUE.