Sierra Toolkit Version of the Day
FieldDeclarations_deprecated.hpp
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends