|
Sierra Toolkit Version of the Day
|
00001 /*------------------------------------------------------------------------*/ 00002 /* Copyright 2010 Sandia Corporation. */ 00003 /* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */ 00004 /* license for use of this work by or on behalf of the U.S. Government. */ 00005 /* Export of this program may require a license from the */ 00006 /* United States Government. */ 00007 /*------------------------------------------------------------------------*/ 00008 #ifndef stk_mesh_FieldDeclarations_deprecated_hpp 00009 #define stk_mesh_FieldDeclarations_deprecated_hpp 00010 00011 #ifndef SKIP_DEPRECATED_STK_MESH_TOPOLOGY_HELPERS 00012 00013 #include <stk_mesh/base/MetaData.hpp> 00014 #include <stk_mesh/fem/EntityRanks.hpp> 00015 #include <stk_mesh/fem/CoordinateSystems.hpp> 00016 00017 namespace stk { 00018 namespace mesh { 00019 00020 typedef Field<double> ScalarField ; 00021 typedef Field<int> ScalarIntField ; 00022 typedef Field<double, Cartesian> VectorField ; 00023 typedef Field<double, FullTensor> FullTensorField ; 00024 typedef Field<double, SymmetricTensor> SymmetricTensorField ; 00025 00026 //---------------------------------------------------------------------- 00027 // Declaring fields of these fundemental types: 00028 00029 ScalarField & 00030 declare_scalar_field_on_all_nodes( MetaData & , const std::string & ); 00031 00032 ScalarIntField & 00033 declare_scalar_int_field_on_all_nodes( MetaData & , const std::string & ); 00034 00035 ScalarField & 00036 declare_scalar_field_on_all_elements( MetaData & , const std::string & ); 00037 00038 VectorField & 00039 declare_vector_field_on_all_nodes( MetaData & , const std::string & , unsigned ); 00040 00041 VectorField & 00042 declare_vector_field_on_all_elements( MetaData & , const std::string & , unsigned ); 00043 00044 FullTensorField & 00045 declare_full_tensor_field_on_all_nodes( MetaData & , const std::string & , unsigned ); 00046 00047 FullTensorField & 00048 declare_full_tensor_field_on_all_elements( MetaData & , const std::string & , unsigned ); 00049 00050 SymmetricTensorField & 00051 declare_symmetric_tensor_field_on_all_nodes( MetaData & , const std::string & , unsigned ); 00052 00053 SymmetricTensorField & 00054 declare_symmetric_tensor_field_on_all_elements( MetaData & , const std::string & , unsigned ); 00055 00056 //---------------------------------------------------------------------- 00057 00058 template< typename Type, class T1, class T2, class T3, 00059 class T4, class T5, class T6, class T7 > 00060 inline 00061 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00062 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p ) 00063 { put_field( f , Node , p ); return f ; } 00064 00065 template< typename Type, class T1, class T2, class T3, 00066 class T4, class T5, class T6, class T7 > 00067 inline 00068 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00069 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00070 unsigned n1 ) 00071 { put_field( f , Node , p , n1 ); return f ; } 00072 00073 template< typename Type, class T1, class T2, class T3, 00074 class T4, class T5, class T6, class T7 > 00075 inline 00076 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00077 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00078 unsigned n1 , unsigned n2 ) 00079 { put_field( f , Node , p , n1 , n2 ); return f ; } 00080 00081 template< typename Type, class T1, class T2, class T3, 00082 class T4, class T5, class T6, class T7 > 00083 inline 00084 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00085 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00086 unsigned n1 , unsigned n2 , unsigned n3 ) 00087 { put_field( f , Node , p , n1 , n2 , n3 ); return f ; } 00088 00089 template< typename Type, class T1, class T2, class T3, 00090 class T4, class T5, class T6, class T7 > 00091 inline 00092 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00093 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00094 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 ) 00095 { 00096 put_field( f , Node , p , n1 , n2 , n3 , n4 ); 00097 return f ; 00098 } 00099 00100 template< typename Type, class T1, class T2, class T3, 00101 class T4, class T5, class T6, class T7 > 00102 inline 00103 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00104 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00105 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00106 unsigned n5 ) 00107 { 00108 put_field( f, Node, p, n1, n2, n3, n4, n5 ); 00109 return f ; 00110 } 00111 00112 template< typename Type, class T1, class T2, class T3, 00113 class T4, class T5, class T6, class T7 > 00114 inline 00115 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00116 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00117 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00118 unsigned n5 , unsigned n6 ) 00119 { 00120 put_field( f, Node, p, n1, n2, n3, n4, n5, n6 ); 00121 return f ; 00122 } 00123 00124 template< typename Type, class T1, class T2, class T3, 00125 class T4, class T5, class T6, class T7 > 00126 inline 00127 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00128 put_field_on_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , Part & p , 00129 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00130 unsigned n5 , unsigned n6 , unsigned n7 ) 00131 { 00132 put_field( f, Node, p, n1, n2, n3, n4, n5, n6, n7 ); 00133 return f ; 00134 } 00135 00136 //---------------------------------------------------------------------- 00137 00138 template< typename Type, class T1, class T2, class T3, 00139 class T4, class T5, class T6, class T7 > 00140 inline 00141 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00142 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f ) 00143 { 00144 MetaData & md = f.mesh_meta_data(); 00145 put_field( f, Node, md.universal_part() ); 00146 return f ; 00147 } 00148 00149 template< typename Type, class T1, class T2, class T3, 00150 class T4, class T5, class T6, class T7 > 00151 inline 00152 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00153 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00154 unsigned n1 ) 00155 { 00156 MetaData & md = f.mesh_meta_data(); 00157 put_field( f, Node, md.universal_part(), n1 ); 00158 return f ; 00159 } 00160 00161 template< typename Type, class T1, class T2, class T3, 00162 class T4, class T5, class T6, class T7 > 00163 inline 00164 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00165 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00166 unsigned n1 , unsigned n2 ) 00167 { 00168 MetaData & md = f.mesh_meta_data(); 00169 put_field( f, Node, md.universal_part(), n1, n2 ); 00170 return f ; 00171 } 00172 00173 template< typename Type, class T1, class T2, class T3, 00174 class T4, class T5, class T6, class T7 > 00175 inline 00176 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00177 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00178 unsigned n1 , unsigned n2 , unsigned n3 ) 00179 { 00180 MetaData & md = f.mesh_meta_data(); 00181 put_field( f, Node, md.universal_part(), n1, n2, n3 ); 00182 return f ; 00183 } 00184 00185 template< typename Type, class T1, class T2, class T3, 00186 class T4, class T5, class T6, class T7 > 00187 inline 00188 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00189 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00190 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 ) 00191 { 00192 MetaData & md = f.mesh_meta_data(); 00193 put_field( f, Node, md.universal_part(), n1, n2, n3, n4 ); 00194 return f ; 00195 } 00196 00197 template< typename Type, class T1, class T2, class T3, 00198 class T4, class T5, class T6, class T7 > 00199 inline 00200 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00201 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00202 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00203 unsigned n5 ) 00204 { 00205 MetaData & md = f.mesh_meta_data(); 00206 put_field( f, Node, md.universal_part(), n1, n2, n3, n4, n5 ); 00207 return f ; 00208 } 00209 00210 template< typename Type, class T1, class T2, class T3, 00211 class T4, class T5, class T6, class T7 > 00212 inline 00213 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00214 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00215 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00216 unsigned n5 , unsigned n6 ) 00217 { 00218 MetaData & md = f.mesh_meta_data(); 00219 put_field( f, Node, md.universal_part(), n1, n2, n3, n4, n5, n6 ); 00220 return f ; 00221 } 00222 00223 template< typename Type, class T1, class T2, class T3, 00224 class T4, class T5, class T6, class T7 > 00225 inline 00226 Field<Type,T1,T2,T3,T4,T5,T6,T7> & 00227 put_field_on_all_nodes( Field<Type,T1,T2,T3,T4,T5,T6,T7> & f , 00228 unsigned n1 , unsigned n2 , unsigned n3 , unsigned n4 , 00229 unsigned n5 , unsigned n6 , unsigned n7 ) 00230 { 00231 MetaData & md = f.mesh_meta_data(); 00232 put_field( f, Node, md.universal_part(), n1, n2, n3, n4, n5, n6, n7 ); 00233 return f ; 00234 } 00235 00236 //---------------------------------------------------------------------- 00237 00238 template< typename Type > 00239 Field<Type> & put_field_on_all_elements( Field<Type> & ); 00240 00241 template< typename Type > 00242 Field<Type> & put_field_on_elements( Field<Type> &, Part & ); 00243 00244 //---------------------------------------------------------------------- 00245 00246 template< typename Type , class T1 > 00247 Field<Type,T1> & put_field_on_all_elements( Field<Type,T1> & , unsigned n1 ); 00248 00249 template< typename Type , class T1 > 00250 Field<Type,T1> & put_field_on_elements( Field<Type,T1> &, Part &, unsigned n1 ); 00251 00252 //---------------------------------------------------------------------- 00253 00254 template< typename Type , class T1 , class T2 > 00255 Field<Type,T1,T2> & 00256 put_field_on_all_elements( Field<Type,T1,T2> &, unsigned n1, unsigned n2); 00257 00258 template< typename Type , class T1 , class T2 > 00259 Field<Type,T1,T2> & 00260 put_field_on_elements( Field<Type,T1,T2> &, Part &, unsigned n1, unsigned n2 ); 00261 00262 } // namespace mesh 00263 } 00264 00265 //---------------------------------------------------------------------- 00266 //---------------------------------------------------------------------- 00267 // Template implementations follow: 00268 //---------------------------------------------------------------------- 00269 00270 namespace stk { 00271 namespace mesh { 00272 00273 //---------------------------------------------------------------------- 00274 00275 template< typename Type > 00276 inline 00277 Field<Type> & put_field_on_elements( Field<Type> & f , Part & p ) 00278 { put_field( f , Element , p ); return f ; } 00279 00280 template< typename Type , class T1 > 00281 inline 00282 Field<Type,T1> & 00283 put_field_on_elements( Field<Type,T1> & f , Part & p , unsigned n1 ) 00284 { put_field( f , Element , p , n1 ); return f ; } 00285 00286 template< typename Type , class T1 , class T2 > 00287 inline 00288 Field<Type,T1,T2> & 00289 put_field_on_elements( Field<Type,T1,T2> & f , Part & p , 00290 unsigned n1 , unsigned n2 ) 00291 { put_field( f , Element , p , n1 , n2 ); return f ; } 00292 00293 //---------------------------------------------------------------------- 00294 00295 template< typename Type > 00296 inline 00297 Field<Type> & put_field_on_all_elements( Field<Type> & f ) 00298 { put_field_on_elements( f , f.mesh_meta_data().universal_part() ); return f ; } 00299 00300 template< typename Type , class T1 > 00301 inline 00302 Field<Type,T1> & put_field_on_all_elements( Field<Type,T1> & f , unsigned n1 ) 00303 { put_field_on_elements( f , f.mesh_meta_data().universal_part() , n1 ); return f ; } 00304 00305 template< typename Type , class T1 , class T2 > 00306 inline 00307 Field<Type,T1,T2> & put_field_on_all_elements( Field<Type,T1,T2> & f , 00308 unsigned n1 , unsigned n2 ) 00309 { put_field_on_elements( f , f.mesh_meta_data().universal_part() , n1 , n2 ); return f ; } 00310 00311 //---------------------------------------------------------------------- 00312 00313 inline 00314 ScalarField & 00315 declare_scalar_field_on_all_nodes( MetaData & md , const std::string & n ) 00316 { 00317 return put_field( md.declare_field<ScalarField>(n) , 00318 Node , md.universal_part() ); 00319 } 00320 00321 inline 00322 ScalarIntField & 00323 declare_scalar_int_field_on_all_nodes( MetaData & md , const std::string & n ) 00324 { 00325 return put_field( md.declare_field<ScalarIntField>(n) , 00326 Node , md.universal_part() ); 00327 } 00328 00329 inline 00330 ScalarField & 00331 declare_scalar_field_on_all_elements( MetaData & md , 00332 const std::string & n ) 00333 { 00334 return put_field( md.declare_field<ScalarField>(n) , 00335 Element , md.universal_part() ); 00336 } 00337 00338 inline 00339 VectorField & 00340 declare_vector_field_on_all_nodes( 00341 MetaData & md , const std::string & s , unsigned n1 ) 00342 { 00343 return put_field( md.declare_field<VectorField>(s), 00344 Node , md.universal_part() , n1 ); 00345 } 00346 00347 inline 00348 VectorField & 00349 declare_vector_field_on_all_elements( 00350 MetaData & md , const std::string & s , unsigned n1 ) 00351 { 00352 return put_field( md.declare_field<VectorField>(s), 00353 Element , md.universal_part() , n1 ); 00354 } 00355 00356 inline 00357 FullTensorField & 00358 declare_full_tensor_field_on_all_nodes( 00359 MetaData & md , const std::string & s , unsigned n1 ) 00360 { 00361 return put_field( md.declare_field<FullTensorField>(s), 00362 Node , md.universal_part() , n1 ); 00363 } 00364 00365 inline 00366 FullTensorField & 00367 declare_full_tensor_field_on_all_elements( 00368 MetaData & md , const std::string & s , unsigned n1 ) 00369 { 00370 return put_field( md.declare_field<FullTensorField>(s), 00371 Element , md.universal_part() , n1 ); 00372 } 00373 00374 inline 00375 SymmetricTensorField & 00376 declare_symmetric_tensor_field_on_all_nodes( 00377 MetaData & md , const std::string & s , unsigned n1 ) 00378 { 00379 return put_field( md.declare_field<SymmetricTensorField>(s), 00380 Node , md.universal_part() , n1 ); 00381 } 00382 00383 inline 00384 SymmetricTensorField & 00385 declare_symmetric_tensor_field_on_all_elements( 00386 MetaData & md , const std::string & s , unsigned n1 ) 00387 { 00388 return put_field( md.declare_field<SymmetricTensorField>(s) , 00389 Element , md.universal_part() , n1 ); 00390 } 00391 00392 } // namespace mesh 00393 } 00394 00395 #endif // SKIP_DEPRECATED_STK_MESH_TOPOLOGY_HELPERS 00396 00397 #endif // stk_mesh_FieldDeclarations_deprecated_hpp