Intrepid
http://trilinos.sandia.gov/packages/docs/r11.2/packages/intrepid/src/Discretization/FunctionSpaceTools/Intrepid_FunctionSpaceToolsInPlace.hpp
Go to the documentation of this file.
00001 // @HEADER
00002 // ************************************************************************
00003 //
00004 //                           Intrepid Package
00005 //                 Copyright (2007) Sandia Corporation
00006 //
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Pavel Bochev  (pbboche@sandia.gov)
00038 //                    Denis Ridzal  (dridzal@sandia.gov), or
00039 //                    Kara Peterson (kjpeter@sandia.gov)
00040 //
00041 // ************************************************************************
00042 // @HEADER
00043 
00049 #ifndef INTREPID_FUNCTIONSPACETOOLSINPLACE_HPP
00050 #define INTREPID_FUNCTIONSPACETOOLSINPLACE_HPP
00051 
00052 #include "Intrepid_ConfigDefs.hpp"
00053 #include "Intrepid_ArrayTools.hpp"
00054 #include "Intrepid_RealSpaceTools.hpp"
00055 #include "Intrepid_FieldContainer.hpp"
00056 #include "Intrepid_CellTools.hpp"
00057 
00058 
00059 namespace Intrepid {
00060 
00078 class FunctionSpaceToolsInPlace {
00079   public:
00115   template<class Scalar, class ArrayType>
00116   static void HGRADtransformVALUE(ArrayType       & inOutVals );
00117 
00120   template<class Scalar, class ArrayType>
00121   static void HGRADtransformVALUEDual(ArrayType       & inOutVals );
00122 
00159   template<class Scalar, class ArrayType, class ArrayTypeJac>
00160   static void HGRADtransformGRAD(ArrayType          & inOutVals,
00161                                  const ArrayTypeJac & jacobianInverse,
00162                                  const char           transpose = 'T');
00163 
00166   template<class Scalar, class ArrayType, class ArrayTypeJac>
00167   static void HGRADtransformGRADDual(ArrayType       & inOutVals,
00168                                      const ArrayTypeJac & jacobianInverse,
00169                                      const char           transpose = 'T');
00170 
00206   template<class Scalar, class ArrayType, class ArrayTypeJac>
00207   static void HCURLtransformVALUE(ArrayType        & inOutVals,
00208                                   const ArrayTypeJac  & jacobianInverse,
00209                                   const char            transpose = 'T');
00210 
00212   template<class Scalar, class ArrayType, class ArrayTypeJac>
00213   static void HCURLtransformVALUEDual(ArrayType           & outVals,
00214                                       const ArrayTypeJac  & jacobianInverse,
00215                                       const char            transpose = 'T');
00216 
00254   template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
00255   static void HCURLtransformCURL(ArrayType           & inOutVals,
00256                                  const ArrayTypeJac  & jacobian,
00257                                  const ArrayTypeDet  & jacobianDet,
00258                                  const char            transpose = 'N');
00259 
00261   template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
00262   static void HCURLtransformCURLDual(ArrayType           & outVals,
00263                                      const ArrayTypeJac  & jacobian,
00264                                      const ArrayTypeDet  & jacobianDet,
00265                                      const char            transpose = 'N');
00266 
00304   template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
00305   static void HDIVtransformVALUE(ArrayType           & inOutVals,
00306                                  const ArrayTypeJac  & jacobian,
00307                                  const ArrayTypeDet  & jacobianDet,
00308                                  const char            transpose = 'N');
00309 
00311   template<class Scalar, class ArrayType, class ArrayTypeJac, class ArrayTypeDet>
00312   static void HDIVtransformVALUEDual(ArrayType           & outVals,
00313                                      const ArrayTypeJac  & jacobian,
00314                                      const ArrayTypeDet  & jacobianDet,
00315                                      const char            transpose = 'N');
00316 
00353   template<class Scalar, class ArrayType, class ArrayTypeDet>
00354   static void HDIVtransformDIV(ArrayType           & inOutVals,
00355                                const ArrayTypeDet  & jacobianDet);
00356 
00358   template<class Scalar, class ArrayType, class ArrayTypeDet>
00359   static void HDIVtransformDIVDual(ArrayType           & inOutVals,
00360                                    const ArrayTypeDet  & jacobianDet);
00361 
00398   template<class Scalar, class ArrayType, class ArrayTypeDet>
00399   static void HVOLtransformVALUE(ArrayType           & inOutVals,
00400                                  const ArrayTypeDet  & jacobianDet);
00401 
00403   template<class Scalar, class ArrayType, class ArrayTypeDet>
00404   static void HVOLtransformVALUEDual(ArrayType           & inOutVals,
00405                                      const ArrayTypeDet  & jacobianDet);
00406   
00407   template<class Scalar, class ArrayType, class ArrayTypeMeasure>
00408   static void multiplyMeasure(ArrayType                & inOutVals,
00409                               const ArrayTypeMeasure   & inMeasure);
00410 
00411 
00412 };  // end FunctionSpaceToolsInPlace
00413 
00414 } // end namespace Intrepid
00415 
00416 // include templated definitions
00417 #include <Intrepid_FunctionSpaceToolsInPlaceDef.hpp>
00418 
00419 #endif
00420 
00421 
00422 
00423 
00424 
00425 
00426 
00427 
00428 
00429 
00430 
00431 
00432 
00433 
00434 
00435 
00436 
00437 
00438 
00439 
00440