8 #ifndef stk_mesh_baseImpl_FieldRepository_hpp 9 #define stk_mesh_baseImpl_FieldRepository_hpp 12 #include <stk_util/util/SameType.hpp> 13 #include <stk_util/util/StaticAssert.hpp> 14 #include <stk_util/parallel/Parallel.hpp> 15 #include <stk_mesh/base/Types.hpp> 16 #include <stk_mesh/base/Part.hpp> 17 #include <stk_mesh/base/Field.hpp> 18 #include <stk_mesh/base/PropertyBase.hpp> 19 #include <stk_mesh/baseImpl/PartRepository.hpp> 21 #include <stk_mesh/baseImpl/FieldBaseImpl.hpp> 26 typedef std::vector<FieldBase *> FieldVector;
30 class FieldRepository {
37 const char * arg_method ,
38 const std::string & arg_name ,
39 const DataTraits & arg_traits ,
41 const shards::ArrayDimTag *
const * arg_dim_tags ,
42 unsigned arg_num_states
45 FieldBase * declare_field(
46 const std::string & arg_name ,
47 const DataTraits & arg_traits ,
49 const shards::ArrayDimTag *
const * arg_dim_tags ,
50 unsigned arg_num_states ,
51 MetaData * arg_meta_data
54 void verify_and_clean_restrictions(
55 const char * arg_method ,
56 const Part& superset,
const Part& subset,
59 const FieldVector & get_fields()
const {
65 declare_attribute_with_delete( FieldBase & f ,
const T * a )
67 return f.m_impl.declare_attribute_with_delete(a);
72 declare_attribute_no_delete( FieldBase & f ,
const T * a )
74 return f.m_impl.declare_attribute_no_delete(a);
77 void declare_field_restriction(
78 const char * arg_method,
79 FieldBase & arg_field ,
80 unsigned arg_entity_rank ,
81 const Part & arg_part ,
83 const unsigned * arg_stride ,
84 const void * arg_init_value = NULL)
86 arg_field.m_impl.insert_restriction( arg_method, arg_entity_rank, arg_part, arg_stride, arg_init_value);
89 void declare_field_restriction(
90 const char * arg_method,
91 FieldBase & arg_field ,
92 unsigned arg_entity_rank ,
93 const Selector & arg_selector ,
95 const unsigned * arg_stride ,
96 const void * arg_init_value = NULL)
98 arg_field.m_impl.insert_restriction( arg_method, arg_entity_rank, arg_selector, arg_stride, arg_init_value);
102 FieldVector m_fields;
105 FieldRepository(
const FieldRepository &);
106 FieldRepository & operator = (
const FieldRepository &);
113 #endif //stk_mesh_baseImpl_FieldRepository_hpp const stk_classic::mesh::FieldBase * get_field(const FieldIdMap &field_id_map, int field_id)
std::vector< Part *> PartVector
Collections of parts are frequently maintained as a vector of Part pointers.