|
Intrepid
|
00001 #ifndef INTREPID_HGRAD_HEX_I2_FEMDEF_HPP 00002 #define INTREPID_HGRAD_HEX_I2_FEMDEF_HPP 00003 // @HEADER 00004 // ************************************************************************ 00005 // 00006 // Intrepid Package 00007 // Copyright (2007) Sandia Corporation 00008 // 00009 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00010 // license for use of this work by or on behalf of the U.S. Government. 00011 // 00012 // Redistribution and use in source and binary forms, with or without 00013 // modification, are permitted provided that the following conditions are 00014 // met: 00015 // 00016 // 1. Redistributions of source code must retain the above copyright 00017 // notice, this list of conditions and the following disclaimer. 00018 // 00019 // 2. Redistributions in binary form must reproduce the above copyright 00020 // notice, this list of conditions and the following disclaimer in the 00021 // documentation and/or other materials provided with the distribution. 00022 // 00023 // 3. Neither the name of the Corporation nor the names of the 00024 // contributors may be used to endorse or promote products derived from 00025 // this software without specific prior written permission. 00026 // 00027 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00028 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00029 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00030 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00031 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00032 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00033 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00034 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00035 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00036 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00037 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00038 // 00039 // Questions? Contact Pavel Bochev (pbboche@sandia.gov) 00040 // Denis Ridzal (dridzal@sandia.gov), or 00041 // Kara Peterson (kjpeter@sandia.gov) 00042 // 00043 // ************************************************************************ 00044 // @HEADER 00045 00051 namespace Intrepid { 00052 00053 00054 template<class Scalar, class ArrayScalar> 00055 Basis_HGRAD_HEX_I2_FEM<Scalar,ArrayScalar>::Basis_HGRAD_HEX_I2_FEM() 00056 { 00057 this -> basisCardinality_ = 20; 00058 this -> basisDegree_ = 2; 00059 this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Hexahedron<8> >() ); 00060 this -> basisType_ = BASIS_FEM_DEFAULT; 00061 this -> basisCoordinates_ = COORDINATES_CARTESIAN; 00062 this -> basisTagsAreSet_ = false; 00063 } 00064 00065 00066 00067 template<class Scalar, class ArrayScalar> 00068 void Basis_HGRAD_HEX_I2_FEM<Scalar, ArrayScalar>::initializeTags() { 00069 00070 // Basis-dependent intializations 00071 int tagSize = 4; // size of DoF tag, i.e., number of fields in the tag 00072 int posScDim = 0; // position in the tag, counting from 0, of the subcell dim 00073 int posScOrd = 1; // position in the tag, counting from 0, of the subcell ordinal 00074 int posDfOrd = 2; // position in the tag, counting from 0, of DoF ordinal relative to the subcell 00075 00076 // An array with local DoF tags assigned to basis functions, in the order of their local enumeration 00077 int tags[] = { 0, 0, 0, 1, // Nodes 0 to 7 follow vertex order of the topology 00078 0, 1, 0, 1, 00079 0, 2, 0, 1, 00080 0, 3, 0, 1, 00081 0, 4, 0, 1, 00082 0, 5, 0, 1, 00083 0, 6, 0, 1, 00084 0, 7, 0, 1, 00085 1, 0, 0, 1, // Node 8 -> edge 0 00086 1, 1, 0, 1, // Node 9 -> edge 1 00087 1, 2, 0, 1, // Node 10 -> edge 2 00088 1, 3, 0, 1, // Node 11 -> edge 3 00089 1, 8, 0, 1, // Node 12 -> edge 8 00090 1, 9, 0, 1, // Node 13 -> edge 9 00091 1,10, 0, 1, // Node 14 -> edge 10 00092 1,11, 0, 1, // Node 15 -> edge 11 00093 1, 4, 0, 1, // Node 16 -> edge 4 00094 1, 5, 0, 1, // Node 17 -> edge 5 00095 1, 6, 0, 1, // Node 18 -> edge 6 00096 1, 7, 0, 1, // Node 19 -> edge 7 00097 }; 00098 00099 // Basis-independent function sets tag and enum data in tagToOrdinal_ and ordinalToTag_ arrays: 00100 Intrepid::setOrdinalTagData(this -> tagToOrdinal_, 00101 this -> ordinalToTag_, 00102 tags, 00103 this -> basisCardinality_, 00104 tagSize, 00105 posScDim, 00106 posScOrd, 00107 posDfOrd); 00108 } 00109 00110 00111 00112 template<class Scalar, class ArrayScalar> 00113 void Basis_HGRAD_HEX_I2_FEM<Scalar, ArrayScalar>::getValues(ArrayScalar & outputValues, 00114 const ArrayScalar & inputPoints, 00115 const EOperator operatorType) const { 00116 00117 // Verify arguments 00118 #ifdef HAVE_INTREPID_DEBUG 00119 Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues, 00120 inputPoints, 00121 operatorType, 00122 this -> getBaseCellTopology(), 00123 this -> getCardinality() ); 00124 #endif 00125 00126 // Number of evaluation points = dim 0 of inputPoints 00127 int dim0 = inputPoints.dimension(0); 00128 00129 // Temporaries: (x,y,z) coordinates of the evaluation point 00130 Scalar x = 0.0; 00131 Scalar y = 0.0; 00132 Scalar z = 0.0; 00133 00134 switch (operatorType) { 00135 00136 case OPERATOR_VALUE: 00137 for (int i0 = 0; i0 < dim0; i0++) { 00138 x = inputPoints(i0, 0); 00139 y = inputPoints(i0, 1); 00140 z = inputPoints(i0, 2); 00141 00142 // outputValues is a rank-2 array with dimensions (basisCardinality_, dim0) 00143 outputValues( 0, i0) = 0.125*(1.0 - x)*(1.0 - y)*(1.0 - z)*(-x - y - z - 2.0); 00144 outputValues( 1, i0) = 0.125*(1.0 + x)*(1.0 - y)*(1.0 - z)*( x - y - z - 2.0); 00145 outputValues( 2, i0) = 0.125*(1.0 + x)*(1.0 + y)*(1.0 - z)*( x + y - z - 2.0); 00146 outputValues( 3, i0) = 0.125*(1.0 - x)*(1.0 + y)*(1.0 - z)*(-x + y - z - 2.0); 00147 outputValues( 4, i0) = 0.125*(1.0 - x)*(1.0 - y)*(1.0 + z)*(-x - y + z - 2.0); 00148 outputValues( 5, i0) = 0.125*(1.0 + x)*(1.0 - y)*(1.0 + z)*( x - y + z - 2.0); 00149 outputValues( 6, i0) = 0.125*(1.0 + x)*(1.0 + y)*(1.0 + z)*( x + y + z - 2.0); 00150 outputValues( 7, i0) = 0.125*(1.0 - x)*(1.0 + y)*(1.0 + z)*(-x + y + z - 2.0); 00151 00152 outputValues( 8, i0) = 0.25*(1.0 - x*x)*(1.0 - y)*(1.0 - z); 00153 outputValues( 9, i0) = 0.25*(1.0 + x)*(1.0 - y*y)*(1.0 - z); 00154 outputValues(10, i0) = 0.25*(1.0 - x*x)*(1.0 + y)*(1.0 - z); 00155 outputValues(11, i0) = 0.25*(1.0 - x)*(1.0 - y*y)*(1.0 - z); 00156 00157 outputValues(12, i0) = 0.25*(1.0 - x)*(1.0 - y)*(1.0 - z*z); 00158 outputValues(13, i0) = 0.25*(1.0 + x)*(1.0 - y)*(1.0 - z*z); 00159 outputValues(14, i0) = 0.25*(1.0 + x)*(1.0 + y)*(1.0 - z*z); 00160 outputValues(15, i0) = 0.25*(1.0 - x)*(1.0 + y)*(1.0 - z*z); 00161 00162 outputValues(16, i0) = 0.25*(1.0 - x*x)*(1.0 - y)*(1.0 + z); 00163 outputValues(17, i0) = 0.25*(1.0 + x)*(1.0 - y*y)*(1.0 + z); 00164 outputValues(18, i0) = 0.25*(1.0 - x*x)*(1.0 + y)*(1.0 + z); 00165 outputValues(19, i0) = 0.25*(1.0 - x)*(1.0 - y*y)*(1.0 + z); 00166 } 00167 break; 00168 00169 case OPERATOR_GRAD: 00170 case OPERATOR_D1: 00171 for (int i0 = 0; i0 < dim0; i0++) { 00172 x = inputPoints(i0,0); 00173 y = inputPoints(i0,1); 00174 z = inputPoints(i0,2); 00175 00176 // outputValues is a rank-3 array with dimensions (basisCardinality_, dim0, spaceDim) 00177 outputValues(0, i0, 0) = -0.125*(1.0-y)*(1.0-z)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z); 00178 outputValues(0, i0, 1) = -0.125*(1.0-x)*(1.0-z)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z); 00179 outputValues(0, i0, 2) = -0.125*(1.0-x)*(1.0-y)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z); 00180 00181 outputValues(1, i0, 0) = 0.125*(1.0-y)*(1.0-z)*( x-y-z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0-z); 00182 outputValues(1, i0, 1) = -0.125*(1.0+x)*(1.0-z)*( x-y-z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0-z); 00183 outputValues(1, i0, 2) = -0.125*(1.0+x)*(1.0-y)*( x-y-z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0-z); 00184 00185 outputValues(2, i0, 0) = 0.125*(1.0+y)*(1.0-z)*( x+y-z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0-z); 00186 outputValues(2, i0, 1) = 0.125*(1.0+x)*(1.0-z)*( x+y-z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0-z); 00187 outputValues(2, i0, 2) = -0.125*(1.0+x)*(1.0+y)*( x+y-z-2.0) - 0.125*(1.0+x)*(1.0+y)*(1.0-z); 00188 00189 outputValues(3, i0, 0) = -0.125*(1.0+y)*(1.0-z)*(-x+y-z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0-z); 00190 outputValues(3, i0, 1) = 0.125*(1.0-x)*(1.0-z)*(-x+y-z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0-z); 00191 outputValues(3, i0, 2) = -0.125*(1.0-x)*(1.0+y)*(-x+y-z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0-z); 00192 00193 outputValues(4, i0, 0) = -0.125*(1.0-y)*(1.0+z)*(-x-y+z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0+z); 00194 outputValues(4, i0, 1) = -0.125*(1.0-x)*(1.0+z)*(-x-y+z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0+z); 00195 outputValues(4, i0, 2) = 0.125*(1.0-x)*(1.0-y)*(-x-y+z-2.0) + 0.125*(1.0-x)*(1.0-y)*(1.0+z); 00196 00197 outputValues(5, i0, 0) = 0.125*(1.0-y)*(1.0+z)*( x-y+z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0+z); 00198 outputValues(5, i0, 1) = -0.125*(1.0+x)*(1.0+z)*( x-y+z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0+z); 00199 outputValues(5, i0, 2) = 0.125*(1.0+x)*(1.0-y)*( x-y+z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0+z); 00200 00201 outputValues(6, i0, 0) = 0.125*(1.0+y)*(1.0+z)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z); 00202 outputValues(6, i0, 1) = 0.125*(1.0+x)*(1.0+z)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z); 00203 outputValues(6, i0, 2) = 0.125*(1.0+x)*(1.0+y)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z); 00204 00205 outputValues(7, i0, 0) = -0.125*(1.0+y)*(1.0+z)*(-x+y+z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0+z); 00206 outputValues(7, i0, 1) = 0.125*(1.0-x)*(1.0+z)*(-x+y+z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0+z); 00207 outputValues(7, i0, 2) = 0.125*(1.0-x)*(1.0+y)*(-x+y+z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0+z); 00208 00209 outputValues(8, i0, 0) = -0.5*x*(1.0-y)*(1.0-z); 00210 outputValues(8, i0, 1) = -0.25*(1.0-x*x)*(1.0-z); 00211 outputValues(8, i0, 2) = -0.25*(1.0-x*x)*(1.0-y); 00212 00213 outputValues(9, i0, 0) = 0.25*(1.0-y*y)*(1.0-z); 00214 outputValues(9, i0, 1) = -0.5*y*(1.0+x)*(1.0-z); 00215 outputValues(9, i0, 2) = -0.25*(1.0+x)*(1.0-y*y); 00216 00217 outputValues(10, i0, 0) = -0.5*x*(1.0+y)*(1.0-z); 00218 outputValues(10, i0, 1) = 0.25*(1.0-x*x)*(1.0-z); 00219 outputValues(10, i0, 2) = -0.25*(1.0-x*x)*(1.0+y); 00220 00221 outputValues(11, i0, 0) = -0.25*(1.0-y*y)*(1.0-z); 00222 outputValues(11, i0, 1) = -0.5*y*(1.0-x)*(1.0-z); 00223 outputValues(11, i0, 2) = -0.25*(1.0-x)*(1.0-y*y); 00224 00225 outputValues(12, i0, 0) = -0.25*(1.0-y)*(1.0-z*z); 00226 outputValues(12, i0, 1) = -0.25*(1.0-x)*(1.0-z*z); 00227 outputValues(12, i0, 2) = -0.5*z*(1.0-x)*(1.0-y); 00228 00229 outputValues(13, i0, 0) = 0.25*(1.0-y)*(1.0-z*z); 00230 outputValues(13, i0, 1) = -0.25*(1.0+x)*(1.0-z*z); 00231 outputValues(13, i0, 2) = -0.5*z*(1.0+x)*(1.0-y); 00232 00233 outputValues(14, i0, 0) = 0.25*(1.0+y)*(1.0-z*z); 00234 outputValues(14, i0, 1) = 0.25*(1.0+x)*(1.0-z*z); 00235 outputValues(14, i0, 2) = -0.5*z*(1.0+x)*(1.0+y); 00236 00237 outputValues(15, i0, 0) = -0.25*(1.0+y)*(1.0-z*z); 00238 outputValues(15, i0, 1) = 0.25*(1.0-x)*(1.0-z*z); 00239 outputValues(15, i0, 2) = -0.5*z*(1.0-x)*(1.0+y); 00240 00241 outputValues(16, i0, 0) = -0.5*x*(1.0-y)*(1.0+z); 00242 outputValues(16, i0, 1) = -0.25*(1.0-x*x)*(1.0+z); 00243 outputValues(16, i0, 2) = 0.25*(1.0-x*x)*(1.0-y); 00244 00245 outputValues(17, i0, 0) = 0.25*(1.0-y*y)*(1.0+z); 00246 outputValues(17, i0, 1) = -0.5*y*(1.0+x)*(1.0+z); 00247 outputValues(17, i0, 2) = 0.25*(1.0+x)*(1.0-y*y); 00248 00249 outputValues(18, i0, 0) = -0.5*x*(1.0+y)*(1.0+z); 00250 outputValues(18, i0, 1) = 0.25*(1.0-x*x)*(1.0+z); 00251 outputValues(18, i0, 2) = 0.25*(1.0-x*x)*(1.0+y); 00252 00253 outputValues(19, i0, 0) = -0.25*(1.0-y*y)*(1.0+z); 00254 outputValues(19, i0, 1) = -0.5*y*(1.0-x)*(1.0+z); 00255 outputValues(19, i0, 2) = 0.25*(1.0-x)*(1.0-y*y); 00256 00257 } 00258 break; 00259 00260 case OPERATOR_CURL: 00261 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument, 00262 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D"); 00263 break; 00264 00265 case OPERATOR_DIV: 00266 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument, 00267 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D"); 00268 break; 00269 00270 case OPERATOR_D2: 00271 for (int i0 = 0; i0 < dim0; i0++) { 00272 x = inputPoints(i0,0); 00273 y = inputPoints(i0,1); 00274 z = inputPoints(i0,2); 00275 00276 // outputValues is a rank-3 array with dimensions (basisCardinality_, dim0, D2Cardinality = 6) 00277 outputValues(0, i0, 0) = 0.25*(1.0 - y)*(1.0 - z); 00278 outputValues(0, i0, 1) = 0.125*(1.0 - z)*(-2.0*x - 2.0*y - z); 00279 outputValues(0, i0, 2) = 0.125*(1.0 - y)*(-2.0*x - y - 2.0*z); 00280 outputValues(0, i0, 3) = 0.25*(1.0 - x)*(1.0 - z); 00281 outputValues(0, i0, 4) = 0.125*(1.0 - x)*(-x - 2.0*y - 2.0*z); 00282 outputValues(0, i0, 5) = 0.25*(1.0 - x)*(1.0 - y); 00283 00284 outputValues(1, i0, 0) = 0.25*(1.0 - y)*(1.0 - z); 00285 outputValues(1, i0, 1) = -0.125*(1.0 - z)*(2.0*x - 2.0*y - z); 00286 outputValues(1, i0, 2) = -0.125*(1.0 - y)*(2.0*x - y - 2.0*z); 00287 outputValues(1, i0, 3) = 0.25*(1.0 + x)*(1.0 - z); 00288 outputValues(1, i0, 4) = 0.125*(1.0 + x)*(x - 2.0*y - 2.0*z); 00289 outputValues(1, i0, 5) = 0.25*(1.0 + x)*(1.0 - y); 00290 00291 outputValues(2, i0, 0) = 0.25*(1.0 + y)*(1.0 - z); 00292 outputValues(2, i0, 1) = 0.125*(1.0 - z)*(2.0*x + 2.0*y - z); 00293 outputValues(2, i0, 2) = -0.125*(1.0 + y)*(2.0*x + y - 2.0*z); 00294 outputValues(2, i0, 3) = 0.25*(1.0 + x)*(1.0 - z); 00295 outputValues(2, i0, 4) = -0.125*(1.0 + x)*(x + 2.0*y - 2.0*z); 00296 outputValues(2, i0, 5) = 0.25*(1.0 + x)*(1.0 + y); 00297 00298 outputValues(3, i0, 0) = 0.25*(1.0 + y)*(1.0 - z); 00299 outputValues(3, i0, 1) = -0.125*(1.0 - z)*(-2.0*x + 2.0*y - z); 00300 outputValues(3, i0, 2) = 0.125*(1.0 + y)*(-2.0*x + y - 2.0*z); 00301 outputValues(3, i0, 3) = 0.25*(1.0 - x)*(1.0 - z); 00302 outputValues(3, i0, 4) = -0.125*(1.0 - x)*(-x + 2.0*y - 2.0*z); 00303 outputValues(3, i0, 5) = 0.25*(1.0 - x)*(1.0 + y); 00304 00305 outputValues(4, i0, 0) = 0.25*(1.0 - y)*(1.0 + z); 00306 outputValues(4, i0, 1) = 0.125*(1.0 + z)*(-2.0*x - 2.0*y + z); 00307 outputValues(4, i0, 2) = -0.125*(1.0 - y)*(-2.0*x - y + 2.0*z); 00308 outputValues(4, i0, 3) = 0.25*(1.0 - x)*(1.0 + z); 00309 outputValues(4, i0, 4) = -0.125*(1.0 - x)*(-x - 2.0*y + 2.0*z); 00310 outputValues(4, i0, 5) = 0.25*(1.0 - x)*(1.0 - y); 00311 00312 outputValues(5, i0, 0) = 0.25*(1.0 - y)*(1.0 + z); 00313 outputValues(5, i0, 1) = -0.125*(1.0 + z)*(2.0*x - 2.0*y + z); 00314 outputValues(5, i0, 2) = 0.125*(1.0 - y)*(2.0*x - y + 2.0*z); 00315 outputValues(5, i0, 3) = 0.25*(1.0 + x)*(1.0 + z); 00316 outputValues(5, i0, 4) = -0.125*(1.0 + x)*(x - 2.0*y + 2.0*z); 00317 outputValues(5, i0, 5) = 0.25*(1.0 + x)*(1.0 - y); 00318 00319 outputValues(6, i0, 0) = 0.25*(1.0 + y)*(1.0 + z); 00320 outputValues(6, i0, 1) = 0.125*(1.0 + z)*(2.0*x + 2.0*y + z); 00321 outputValues(6, i0, 2) = 0.125*(1.0 + y)*(2.0*x + y + 2.0*z); 00322 outputValues(6, i0, 3) = 0.25*(1.0 + x)*(1.0 + z); 00323 outputValues(6, i0, 4) = 0.125*(1.0 + x)*(x + 2.0*y + 2.0*z); 00324 outputValues(6, i0, 5) = 0.25*(1.0 + x)*(1.0 + y); 00325 00326 outputValues(7, i0, 0) = 0.25*(1.0 + y)*(1.0 + z); 00327 outputValues(7, i0, 1) = -0.125*(1.0 + z)*(-2.0*x + 2.0*y + z); 00328 outputValues(7, i0, 2) = -0.125*(1.0 + y)*(-2.0*x + y + 2.0*z); 00329 outputValues(7, i0, 3) = 0.25*(1.0 - x)*(1.0 + z); 00330 outputValues(7, i0, 4) = 0.125*(1.0 - x)*(-x + 2.0*y + 2.0*z); 00331 outputValues(7, i0, 5) = 0.25*(1.0 - x)*(1.0 + y); 00332 00333 outputValues(8, i0, 0) = -0.5*(1.0 - y)*(1.0 - z); 00334 outputValues(8, i0, 1) = 0.5*x*(1.0 - z); 00335 outputValues(8, i0, 2) = 0.5*x*(1.0 - y); 00336 outputValues(8, i0, 3) = 0.0; 00337 outputValues(8, i0, 4) = 0.25*(1.0 - x*x); 00338 outputValues(8, i0, 5) = 0.0; 00339 00340 outputValues(9, i0, 0) = 0.0; 00341 outputValues(9, i0, 1) = -0.5*y*(1.0 - z); 00342 outputValues(9, i0, 2) = -0.25*(1.0 - y*y); 00343 outputValues(9, i0, 3) = -0.5*(1.0 + x)*(1.0 - z); 00344 outputValues(9, i0, 4) = 0.5*y*(1.0 + x); 00345 outputValues(9, i0, 5) = 0.0; 00346 00347 outputValues(10, i0, 0) = -0.5*(1.0 + y)*(1.0 - z); 00348 outputValues(10, i0, 1) = -0.5*x*(1.0 - z); 00349 outputValues(10, i0, 2) = 0.5*x*(1.0 + y); 00350 outputValues(10, i0, 3) = 0.0; 00351 outputValues(10, i0, 4) = -0.25*(1.0 - x*x); 00352 outputValues(10, i0, 5) = 0.0; 00353 00354 outputValues(11, i0, 0) = 0.0; 00355 outputValues(11, i0, 1) = 0.5*y*(1.0 - z); 00356 outputValues(11, i0, 2) = 0.25*(1.0 - y*y); 00357 outputValues(11, i0, 3) = -0.5*(1.0 - x)*(1.0 - z); 00358 outputValues(11, i0, 4) = 0.5*y*(1.0 - x); 00359 outputValues(11, i0, 5) = 0.0; 00360 00361 outputValues(12, i0, 0) = 0.0; 00362 outputValues(12, i0, 1) = 0.25*(1.0 - z*z); 00363 outputValues(12, i0, 2) = 0.5*z*(1.0 - y); 00364 outputValues(12, i0, 3) = 0.0; 00365 outputValues(12, i0, 4) = 0.5*z*(1.0 - x); 00366 outputValues(12, i0, 5) = -0.5*(1.0 - x)*(1.0 - y); 00367 00368 outputValues(13, i0, 0) = 0.0; 00369 outputValues(13, i0, 1) = -0.25*(1.0 - z*z); 00370 outputValues(13, i0, 2) = -0.5*z*(1.0 - y); 00371 outputValues(13, i0, 3) = 0.0; 00372 outputValues(13, i0, 4) = 0.5*z*(1.0 + x); 00373 outputValues(13, i0, 5) = -0.5*(1.0 + x)*(1.0 - y); 00374 00375 outputValues(14, i0, 0) = 0.0; 00376 outputValues(14, i0, 1) = 0.25*(1.0 - z*z); 00377 outputValues(14, i0, 2) = -0.5*z*(1.0 + y); 00378 outputValues(14, i0, 3) = 0.0; 00379 outputValues(14, i0, 4) = -0.5*z*(1.0 + x); 00380 outputValues(14, i0, 5) = -0.5*(1.0 + x)*(1.0 + y); 00381 00382 outputValues(15, i0, 0) = 0.0; 00383 outputValues(15, i0, 1) = -0.25*(1.0 - z*z); 00384 outputValues(15, i0, 2) = 0.5*z*(1.0 + y); 00385 outputValues(15, i0, 3) = 0.0; 00386 outputValues(15, i0, 4) = -0.5*z*(1.0 - x); 00387 outputValues(14, i0, 5) = -0.5*(1.0 - x)*(1.0 + y); 00388 00389 outputValues(16, i0, 0) = -0.5*(1.0 - y)*(1.0 + z); 00390 outputValues(16, i0, 1) = 0.5*x*(1.0 + z); 00391 outputValues(16, i0, 2) = -0.5*x*(1.0 - y); 00392 outputValues(16, i0, 3) = 0.0; 00393 outputValues(16, i0, 4) = -0.25*(1.0 - x*x); 00394 outputValues(16, i0, 5) = 0.0; 00395 00396 outputValues(17, i0, 0) = 0.0; 00397 outputValues(17, i0, 1) = -0.5*y*(1.0 + z); 00398 outputValues(17, i0, 2) = 0.25*(1.0 - y*y); 00399 outputValues(17, i0, 3) = -0.5*(1.0 + x)*(1.0 + z); 00400 outputValues(17, i0, 4) = -0.5*y*(1.0 + x); 00401 outputValues(17, i0, 5) = 0.0; 00402 00403 outputValues(18, i0, 0) = -0.5*(1.0 + y)*(1.0 + z); 00404 outputValues(18, i0, 1) = -0.5*x*(1.0 + z); 00405 outputValues(18, i0, 2) = -0.5*x*(1.0 + y); 00406 outputValues(18, i0, 3) = 0.0; 00407 outputValues(18, i0, 4) = 0.25*(1.0 - x*x); 00408 outputValues(18, i0, 5) = 0.0; 00409 00410 outputValues(19, i0, 0) = 0.0; 00411 outputValues(19, i0, 1) = 0.5*y*(1.0 + z); 00412 outputValues(19, i0, 2) = -0.25*(1.0 - y*y); 00413 outputValues(19, i0, 3) = -0.5*(1.0 - x)*(1.0 + z); 00414 outputValues(19, i0, 4) = -0.5*y*(1.0 - x); 00415 outputValues(19, i0, 5) = 0.0; 00416 00417 } 00418 break; 00419 00420 case OPERATOR_D3: 00421 for (int i0 = 0; i0 < dim0; i0++) { 00422 x = inputPoints(i0,0); 00423 y = inputPoints(i0,1); 00424 z = inputPoints(i0,2); 00425 00426 outputValues(0,i0, 0) = 0.0; 00427 outputValues(0,i0, 1) = -0.25*(1.0 - z); 00428 outputValues(0,i0, 2) = -0.25*(1.0 - y); 00429 outputValues(0,i0, 3) = -0.25*(1.0 - z); 00430 outputValues(0,i0, 4) = -0.125*(-2.0*x - 2.0*y - 2.0*z + 1.0); 00431 outputValues(0,i0, 5) = -0.25*(1.0 - y); 00432 outputValues(0,i0, 6) = 0.0; 00433 outputValues(0,i0, 7) = -0.25*(1.0 - x); 00434 outputValues(0,i0, 8) = -0.25*(1.0 - x); 00435 outputValues(0,i0, 9) = 0.0; 00436 00437 outputValues(1,i0, 0) = 0.0; 00438 outputValues(1,i0, 1) = -0.25*(1.0 - z); 00439 outputValues(1,i0, 2) = -0.25*(1.0 - y); 00440 outputValues(1,i0, 3) = 0.25*(1.0 - z); 00441 outputValues(1,i0, 4) = 0.125*(2.0*x - 2.0*y - 2.0*z + 1.0); 00442 outputValues(1,i0, 5) = 0.25*(1.0 - y); 00443 outputValues(1,i0, 6) = 0.0; 00444 outputValues(1,i0, 7) = -0.25*(1.0 + x); 00445 outputValues(1,i0, 8) = -0.25*(1.0 + x); 00446 outputValues(1,i0, 9) = 0.0; 00447 00448 outputValues(2,i0, 0) = 0.0; 00449 outputValues(2,i0, 1) = 0.25*(1.0 - z); 00450 outputValues(2,i0, 2) = -0.25*(1.0 + y); 00451 outputValues(2,i0, 3) = 0.25*(1.0 - z); 00452 outputValues(2,i0, 4) = -0.125*(2.0*x + 2.0*y - 2.0*z + 1.0); 00453 outputValues(2,i0, 5) = 0.25*(1.0 + y); 00454 outputValues(2,i0, 6) = 0.0; 00455 outputValues(2,i0, 7) = -0.25*(1.0 + x); 00456 outputValues(2,i0, 8) = 0.25*(1.0 + x); 00457 outputValues(2,i0, 9) = 0.0; 00458 00459 outputValues(3,i0, 0) = 0.0; 00460 outputValues(3,i0, 1) = 0.25*(1.0 - z); 00461 outputValues(3,i0, 2) = -0.25*(1.0 + y); 00462 outputValues(3,i0, 3) = -0.25*(1.0 - z); 00463 outputValues(3,i0, 4) = 0.125*(-2.0*x + 2.0*y - 2.0*z + 1.0); 00464 outputValues(3,i0, 5) = -0.25*(1.0 + y); 00465 outputValues(3,i0, 6) = 0.0; 00466 outputValues(3,i0, 7) = -0.25*(1.0 - x); 00467 outputValues(3,i0, 8) = 0.25*(1.0 - x); 00468 outputValues(3,i0, 9) = 0.0; 00469 00470 outputValues(4,i0, 0) = 0.0; 00471 outputValues(4,i0, 1) = -0.25*(1.0 + z); 00472 outputValues(4,i0, 2) = 0.25*(1.0 - y); 00473 outputValues(4,i0, 3) = -0.25*(1.0 + z); 00474 outputValues(4,i0, 4) = 0.125*(-2.0*x - 2.0*y + 2.0*z + 1.0); 00475 outputValues(4,i0, 5) = -0.25*(1.0 - y); 00476 outputValues(4,i0, 6) = 0.0; 00477 outputValues(4,i0, 7) = 0.25*(1.0 - x); 00478 outputValues(4,i0, 8) = -0.25*(1.0 - x); 00479 outputValues(4,i0, 9) = 0.0; 00480 00481 outputValues(5,i0, 0) = 0.0; 00482 outputValues(5,i0, 1) = -0.25*(1.0 + z); 00483 outputValues(5,i0, 2) = 0.25*(1.0 - y); 00484 outputValues(5,i0, 3) = 0.25*(1.0 + z); 00485 outputValues(5,i0, 4) = -0.125*(2.0*x - 2.0*y + 2.0*z + 1.0); 00486 outputValues(5,i0, 5) = 0.25*(1.0 - y); 00487 outputValues(5,i0, 6) = 0.0; 00488 outputValues(5,i0, 7) = 0.25*(1.0 + x); 00489 outputValues(5,i0, 8) = -0.25*(1.0 + x); 00490 outputValues(5,i0, 9) = 0.0; 00491 00492 outputValues(6,i0, 0) = 0.0; 00493 outputValues(6,i0, 1) = 0.25*(1.0 + z); 00494 outputValues(6,i0, 2) = 0.25*(1.0 + y); 00495 outputValues(6,i0, 3) = 0.25*(1.0 + z); 00496 outputValues(6,i0, 4) = 0.125*(2.0*x + 2.0*y + 2.0*z + 1.0); 00497 outputValues(6,i0, 5) = 0.25*(1.0 + y); 00498 outputValues(6,i0, 6) = 0.0; 00499 outputValues(6,i0, 7) = 0.25*(1.0 + x); 00500 outputValues(6,i0, 8) = 0.25*(1.0 + x); 00501 outputValues(6,i0, 9) = 0.0; 00502 00503 outputValues(7,i0, 0) = 0.0; 00504 outputValues(7,i0, 1) = 0.25*(1.0 + z); 00505 outputValues(7,i0, 2) = 0.25*(1.0 + y); 00506 outputValues(7,i0, 3) = -0.25*(1.0 + z); 00507 outputValues(7,i0, 4) = -0.125*(-2.0*x + 2.0*y + 2.0*z + 1.0); 00508 outputValues(7,i0, 5) = -0.25*(1.0 + y); 00509 outputValues(7,i0, 6) = 0.0; 00510 outputValues(7,i0, 7) = 0.25*(1.0 - x); 00511 outputValues(7,i0, 8) = 0.25*(1.0 - x); 00512 outputValues(7,i0, 9) = 0.0; 00513 00514 outputValues(8,i0, 0) = 0.0; 00515 outputValues(8,i0, 1) = 0.5*(1.0 - z); 00516 outputValues(8,i0, 2) = 0.5*(1.0 - y); 00517 outputValues(8,i0, 3) = 0.0; 00518 outputValues(8,i0, 4) = -0.5*x; 00519 outputValues(8,i0, 5) = 0.0; 00520 outputValues(8,i0, 6) = 0.0; 00521 outputValues(8,i0, 7) = 0.0; 00522 outputValues(8,i0, 8) = 0.0; 00523 outputValues(8,i0, 9) = 0.0; 00524 00525 outputValues(9,i0, 0) = 0.0; 00526 outputValues(9,i0, 1) = 0.0; 00527 outputValues(9,i0, 2) = 0.0; 00528 outputValues(9,i0, 3) = -0.5*(1.0 - z); 00529 outputValues(9,i0, 4) = 0.5*y; 00530 outputValues(9,i0, 5) = 0.0; 00531 outputValues(9,i0, 6) = 0.0; 00532 outputValues(9,i0, 7) = 0.5*(1.0 + x); 00533 outputValues(9,i0, 8) = 0.0; 00534 outputValues(9,i0, 9) = 0.0; 00535 00536 outputValues(10,i0, 0) = 0.0; 00537 outputValues(10,i0, 1) = -0.5*(1.0 - z); 00538 outputValues(10,i0, 2) = 0.5*(1.0 + y); 00539 outputValues(10,i0, 3) = 0.0; 00540 outputValues(10,i0, 4) = 0.5*x; 00541 outputValues(10,i0, 5) = 0.0; 00542 outputValues(10,i0, 6) = 0.0; 00543 outputValues(10,i0, 7) = 0.0; 00544 outputValues(10,i0, 8) = 0.0; 00545 outputValues(10,i0, 9) = 0.0; 00546 00547 outputValues(11,i0, 0) = 0.0; 00548 outputValues(11,i0, 1) = 0.0; 00549 outputValues(11,i0, 2) = 0.0; 00550 outputValues(11,i0, 3) = 0.5*(1.0 - z); 00551 outputValues(11,i0, 4) = -0.5*y; 00552 outputValues(11,i0, 5) = 0.0; 00553 outputValues(11,i0, 6) = 0.0; 00554 outputValues(11,i0, 7) = 0.5*(1.0 - x); 00555 outputValues(11,i0, 8) = 0.0; 00556 outputValues(11,i0, 9) = 0.0; 00557 00558 outputValues(12,i0, 0) = 0.0; 00559 outputValues(12,i0, 1) = 0.0; 00560 outputValues(12,i0, 2) = 0.0; 00561 outputValues(12,i0, 3) = 0.0; 00562 outputValues(12,i0, 4) = -0.5*z; 00563 outputValues(12,i0, 5) = 0.5*(1.0 - y); 00564 outputValues(12,i0, 6) = 0.0; 00565 outputValues(12,i0, 7) = 0.0; 00566 outputValues(12,i0, 8) = 0.5*(1.0 - x); 00567 outputValues(12,i0, 9) = 0.0; 00568 00569 outputValues(13,i0, 0) = 0.0; 00570 outputValues(13,i0, 1) = 0.0; 00571 outputValues(13,i0, 2) = 0.0; 00572 outputValues(13,i0, 3) = 0.0; 00573 outputValues(13,i0, 4) = 0.5*z; 00574 outputValues(13,i0, 5) = -0.5*(1.0 - y); 00575 outputValues(13,i0, 6) = 0.0; 00576 outputValues(13,i0, 7) = 0.0; 00577 outputValues(13,i0, 8) = 0.5*(1.0 + x); 00578 outputValues(13,i0, 9) = 0.0; 00579 00580 outputValues(14,i0, 0) = 0.0; 00581 outputValues(14,i0, 1) = 0.0; 00582 outputValues(14,i0, 2) = 0.0; 00583 outputValues(14,i0, 3) = 0.0; 00584 outputValues(14,i0, 4) = -0.5*z; 00585 outputValues(14,i0, 5) = -0.5*(1.0 + y); 00586 outputValues(14,i0, 6) = 0.0; 00587 outputValues(14,i0, 7) = 0.0; 00588 outputValues(14,i0, 8) = -0.5*(1.0 + x); 00589 outputValues(14,i0, 9) = 0.0; 00590 00591 outputValues(15,i0, 0) = 0.0; 00592 outputValues(15,i0, 1) = 0.0; 00593 outputValues(15,i0, 2) = 0.0; 00594 outputValues(15,i0, 3) = 0.0; 00595 outputValues(15,i0, 4) = 0.5*z; 00596 outputValues(15,i0, 5) = 0.5*(1.0 + y); 00597 outputValues(15,i0, 6) = 0.0; 00598 outputValues(15,i0, 7) = 0.0; 00599 outputValues(15,i0, 8) = -0.5*(1.0 - x); 00600 outputValues(15,i0, 9) = 0.0; 00601 00602 outputValues(16,i0, 0) = 0.0; 00603 outputValues(16,i0, 1) = 0.5*(1.0 + z); 00604 outputValues(16,i0, 2) = -0.5*(1.0 - y); 00605 outputValues(16,i0, 3) = 0.0; 00606 outputValues(16,i0, 4) = 0.5*x; 00607 outputValues(16,i0, 5) = 0.0; 00608 outputValues(16,i0, 6) = 0.0; 00609 outputValues(16,i0, 7) = 0.0; 00610 outputValues(16,i0, 8) = 0.0; 00611 outputValues(16,i0, 9) = 0.0; 00612 00613 outputValues(17,i0, 0) = 0.0; 00614 outputValues(17,i0, 1) = 0.0; 00615 outputValues(17,i0, 2) = 0.0; 00616 outputValues(17,i0, 3) = -0.5*(1.0 + z); 00617 outputValues(17,i0, 4) = -0.5*y; 00618 outputValues(17,i0, 5) = 0.0; 00619 outputValues(17,i0, 6) = 0.0; 00620 outputValues(17,i0, 7) = -0.5*(1.0 + x); 00621 outputValues(17,i0, 8) = 0.0; 00622 outputValues(17,i0, 9) = 0.0; 00623 00624 outputValues(18,i0, 0) = 0.0; 00625 outputValues(18,i0, 1) = -0.5*(1.0 + z); 00626 outputValues(18,i0, 2) = -0.5*(1.0 + y); 00627 outputValues(18,i0, 3) = 0.0; 00628 outputValues(18,i0, 4) = -0.5*x; 00629 outputValues(18,i0, 5) = 0.0; 00630 outputValues(18,i0, 6) = 0.0; 00631 outputValues(18,i0, 7) = 0.0; 00632 outputValues(18,i0, 8) = 0.0; 00633 outputValues(18,i0, 9) = 0.0; 00634 00635 outputValues(19,i0, 0) = 0.0; 00636 outputValues(19,i0, 1) = 0.0; 00637 outputValues(19,i0, 2) = 0.0; 00638 outputValues(19,i0, 3) = 0.5*(1.0 + z); 00639 outputValues(19,i0, 4) = 0.5*y; 00640 outputValues(19,i0, 5) = 0.0; 00641 outputValues(19,i0, 6) = 0.0; 00642 outputValues(19,i0, 7) = -0.5*(1.0 - x); 00643 outputValues(19,i0, 8) = 0.0; 00644 outputValues(19,i0, 9) = 0.0; 00645 00646 } 00647 break; 00648 00649 case OPERATOR_D4: 00650 { 00651 // Intitialize array by zero and then fill only non-zero entries. 00652 int DkCardinality = Intrepid::getDkCardinality(operatorType, this -> basisCellTopology_.getDimension() ); 00653 for(int dofOrd = 0; dofOrd < this -> basisCardinality_; dofOrd++) { 00654 for (int i0 = 0; i0 < dim0; i0++) { 00655 for(int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){ 00656 outputValues(dofOrd, i0, dkOrd) = 0.0; 00657 } 00658 } 00659 } 00660 00661 for (int i0 = 0; i0 < dim0; i0++) { 00662 x = inputPoints(i0,0); 00663 y = inputPoints(i0,1); 00664 z = inputPoints(i0,2); 00665 00666 outputValues( 0, i0, 4) = 0.25; 00667 outputValues( 0, i0, 7) = 0.25; 00668 outputValues( 0, i0, 8) = 0.25; 00669 00670 outputValues( 1, i0, 4) = 0.25; 00671 outputValues( 1, i0, 7) = -0.25; 00672 outputValues( 1, i0, 8) = -0.25; 00673 00674 outputValues( 2, i0, 4) = -0.25; 00675 outputValues( 2, i0, 7) = -0.25; 00676 outputValues( 2, i0, 8) = 0.25; 00677 00678 outputValues( 3, i0, 4) = -0.25; 00679 outputValues( 3, i0, 7) = 0.25; 00680 outputValues( 3, i0, 8) = -0.25; 00681 00682 outputValues( 4, i0, 4) = -0.25; 00683 outputValues( 4, i0, 7) = -0.25; 00684 outputValues( 4, i0, 8) = 0.25; 00685 00686 outputValues( 5, i0, 4) = -0.25; 00687 outputValues( 5, i0, 7) = 0.25; 00688 outputValues( 5, i0, 8) = -0.25; 00689 00690 outputValues( 6, i0, 4) = 0.25; 00691 outputValues( 6, i0, 7) = 0.25; 00692 outputValues( 6, i0, 8) = 0.25; 00693 00694 outputValues( 7, i0, 4) = 0.25; 00695 outputValues( 7, i0, 7) = -0.25; 00696 outputValues( 7, i0, 8) = -0.25; 00697 00698 outputValues( 8, i0, 4) = -0.5; 00699 outputValues( 9, i0, 7) = 0.5; 00700 outputValues(10, i0, 4) = 0.5; 00701 outputValues(11, i0, 7) = -0.5; 00702 outputValues(12, i0, 8) = -0.5; 00703 outputValues(13, i0, 8) = 0.5; 00704 outputValues(14, i0, 8) = -0.5; 00705 outputValues(15, i0, 8) = 0.5; 00706 outputValues(16, i0, 4) = 0.5; 00707 outputValues(17, i0, 7) = -0.5; 00708 outputValues(18, i0, 4) = -0.5; 00709 outputValues(19, i0, 7) = 0.5; 00710 } 00711 } 00712 break; 00713 00714 case OPERATOR_D5: 00715 case OPERATOR_D6: 00716 case OPERATOR_D7: 00717 case OPERATOR_D8: 00718 case OPERATOR_D9: 00719 case OPERATOR_D10: 00720 { 00721 // outputValues is a rank-3 array with dimensions (basisCardinality_, dim0, DkCardinality) 00722 int DkCardinality = Intrepid::getDkCardinality(operatorType, 00723 this -> basisCellTopology_.getDimension() ); 00724 for(int dofOrd = 0; dofOrd < this -> basisCardinality_; dofOrd++) { 00725 for (int i0 = 0; i0 < dim0; i0++) { 00726 for(int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){ 00727 outputValues(dofOrd, i0, dkOrd) = 0.0; 00728 } 00729 } 00730 } 00731 } 00732 break; 00733 00734 default: 00735 TEUCHOS_TEST_FOR_EXCEPTION( !( Intrepid::isValidOperator(operatorType) ), std::invalid_argument, 00736 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): Invalid operator type"); 00737 } 00738 } 00739 00740 00741 00742 template<class Scalar, class ArrayScalar> 00743 void Basis_HGRAD_HEX_I2_FEM<Scalar, ArrayScalar>::getValues(ArrayScalar& outputValues, 00744 const ArrayScalar & inputPoints, 00745 const ArrayScalar & cellVertices, 00746 const EOperator operatorType) const { 00747 TEUCHOS_TEST_FOR_EXCEPTION( (true), std::logic_error, 00748 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): FEM Basis calling an FVD member function"); 00749 } 00750 00751 template<class Scalar, class ArrayScalar> 00752 void Basis_HGRAD_HEX_I2_FEM<Scalar, ArrayScalar>::getDofCoords(ArrayScalar & DofCoords) const { 00753 #ifdef HAVE_INTREPID_DEBUG 00754 // Verify rank of output array. 00755 TEUCHOS_TEST_FOR_EXCEPTION( !(DofCoords.rank() == 2), std::invalid_argument, 00756 ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_I2_FEM::getDofCoords) rank = 2 required for DofCoords array"); 00757 // Verify 0th dimension of output array. 00758 TEUCHOS_TEST_FOR_EXCEPTION( !( DofCoords.dimension(0) == this -> basisCardinality_ ), std::invalid_argument, 00759 ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_I2_FEM::getDofCoords) mismatch in number of DoF and 0th dimension of DofCoords array"); 00760 // Verify 1st dimension of output array. 00761 TEUCHOS_TEST_FOR_EXCEPTION( !( DofCoords.dimension(1) == (int)(this -> basisCellTopology_.getDimension()) ), std::invalid_argument, 00762 ">>> ERROR: (Intrepid::Basis_HGRAD_HEX_I2_FEM::getDofCoords) incorrect reference cell (1st) dimension in DofCoords array"); 00763 #endif 00764 00765 DofCoords(0,0) = -1.0; DofCoords(0,1) = -1.0; DofCoords(0,2) = -1.0; 00766 DofCoords(1,0) = 1.0; DofCoords(1,1) = -1.0; DofCoords(1,2) = -1.0; 00767 DofCoords(2,0) = 1.0; DofCoords(2,1) = 1.0; DofCoords(2,2) = -1.0; 00768 DofCoords(3,0) = -1.0; DofCoords(3,1) = 1.0; DofCoords(3,2) = -1.0; 00769 DofCoords(4,0) = -1.0; DofCoords(4,1) = -1.0; DofCoords(4,2) = 1.0; 00770 DofCoords(5,0) = 1.0; DofCoords(5,1) = -1.0; DofCoords(5,2) = 1.0; 00771 DofCoords(6,0) = 1.0; DofCoords(6,1) = 1.0; DofCoords(6,2) = 1.0; 00772 DofCoords(7,0) = -1.0; DofCoords(7,1) = 1.0; DofCoords(7,2) = 1.0; 00773 00774 DofCoords(8,0) = 0.0; DofCoords(8,1) = -1.0; DofCoords(8,2) = -1.0; 00775 DofCoords(9,0) = 1.0; DofCoords(9,1) = 0.0; DofCoords(9,2) = -1.0; 00776 DofCoords(10,0) = 0.0; DofCoords(10,1) = 1.0; DofCoords(10,2) = -1.0; 00777 DofCoords(11,0) = -1.0; DofCoords(11,1) = 0.0; DofCoords(11,2) = -1.0; 00778 DofCoords(12,0) = -1.0; DofCoords(12,1) = -1.0; DofCoords(12,2) = 0.0; 00779 DofCoords(13,0) = 1.0; DofCoords(13,1) = -1.0; DofCoords(13,2) = 0.0; 00780 DofCoords(14,0) = 1.0; DofCoords(14,1) = 1.0; DofCoords(14,2) = 0.0; 00781 DofCoords(15,0) = -1.0; DofCoords(15,1) = 1.0; DofCoords(15,2) = 0.0; 00782 DofCoords(16,0) = 0.0; DofCoords(16,1) = -1.0; DofCoords(16,2) = 1.0; 00783 DofCoords(17,0) = 1.0; DofCoords(17,1) = 0.0; DofCoords(17,2) = 1.0; 00784 DofCoords(18,0) = 0.0; DofCoords(18,1) = 1.0; DofCoords(18,2) = 1.0; 00785 DofCoords(19,0) = -1.0; DofCoords(19,1) = 0.0; DofCoords(19,2) = 1.0; 00786 } 00787 00788 }// namespace Intrepid 00789 #endif
1.7.6.1