31 #ifndef CORE_DATATYPES_GENERICFIELD_H
32 #define CORE_DATATYPES_GENERICFIELD_H 1
56 template <
class Mesh,
class Basis,
class FData>
67 typedef boost::shared_ptr<GenericField<Mesh, Basis, FData> >
handle_type;
91 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
93 virtual void mesh_detach();
120 static const std::string
type_name(
int n = -1);
148 template<
class FIELD>
156 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
180 else if (field->basis_order() > -1)
is_scalar_ =
true;
195 template <
class Mesh,
class Basis,
class FData>
202 template <
class Mesh,
class Basis,
class FData>
206 return boost::make_shared<GenericField<Mesh, Basis, FData>>();
210 template <
class Mesh,
class Basis,
class FData>
216 return boost::make_shared<GenericField<Mesh, Basis, FData>>(mesh_handle);
222 template <
class Mesh,
class Basis,
class FData>
226 template <
class Mesh,
class Basis,
class FData>
230 template <
class Mesh,
class Basis,
class FData>
241 if (stream.
error())
return;
248 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
259 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
272 vfield_->update_mesh_pointer(mesh_.get());
276 template <
class Mesh,
class Basis,
class FData>
283 mesh_dimensionality_(-1)
296 template <
class Mesh,
class Basis,
class FData>
303 basis_order_(copy.basis_order_),
304 mesh_dimensionality_(copy.mesh_dimensionality_)
316 template <
class Mesh,
class Basis,
class FData>
323 mesh_dimensionality_(-1)
336 template <
class Mesh,
class Basis,
class FData>
340 if (vfield_)
delete vfield_;
343 template <
class Mesh,
class Basis,
class FData>
350 template <
class Mesh,
class Basis,
class FData>
355 copy->
mesh_.reset(mesh_->clone());
356 copy->vfield_->update_mesh_pointer(copy->mesh_.get());
360 template <
class Mesh,
class Basis,
class FData>
367 template <
class Mesh,
class Basis,
class FData>
371 if (mesh_)
return mesh_->vmesh();
375 template <
class Mesh,
class Basis,
class FData>
382 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
383 template <
class Mesh,
class Basis,
class FData>
390 vfield_->update_mesh_pointer(mesh_.get_rep());
394 template <
class Mesh,
class Basis,
class FData>
397 ASSERT((n >= -1) && n <= 3);
405 static const std::string nm(
"GenericField");
422 template <
class Mesh,
class Basis,
class FData>
426 static std::string
name(type_name(0));
427 static std::string namesp(
"SCIRun");
428 static std::string path(__FILE__);
448 case FIELD_NAME_ONLY_E:
474 template<
class T,
class MESH>
480 template<
class T,
class MESH>
493 #endif // Datatypes_GenericField_h
Definition: GenericField.h:57
SCIRun::index_type index_type
Definition: GenericField.h:68
fdata_type fdata_
Data container.
Definition: GenericField.h:138
boost::shared_ptr< GenericField< Mesh, Basis, FData > > handle_type
Definition: GenericField.h:67
Mesh * mesh_
Definition: VField.h:698
Interface to statically allocated std::vector class.
bool reading() const
Definition: Persistent.h:164
bool backwards_compat_id() const
Definition: Persistent.h:169
int basis_order_
Definition: VField.h:708
bool is_vector_
Definition: VField.h:716
Taken from old LatVolField.h ...
specializations of template<class T> find_type_name() function for build-in and simple types not deri...
int element_dim_
Definition: VField.h:711
static Persistent * maker()
Static functions to instantiate the field from Pio or using CreateField()
Definition: GenericField.h:197
virtual ~VGenericField()
Definition: GenericField.h:183
Basis & get_basis()
Definition: GenericField.h:105
FieldHandle field()
get a handle to the field
Definition: VField.h:92
Definition: Persistent.h:89
Mesh mesh_type
Definition: GenericField.h:63
Definition: Persistent.h:187
VMesh * vmesh_
Definition: VField.h:704
Definition: TypeDescription.h:45
std::vector< const TypeDescription * > td_vec
Definition: TypeDescription.h:56
bool is_pair_
Definition: VField.h:715
boost::shared_ptr< Mesh > MeshHandle
Definition: DatatypeFwd.h:67
VGenericField(FIELD *field, VFData *vfdata)
Definition: GenericField.h:151
#define ASSERT(condition)
Definition: Assert.h:110
virtual MeshHandle mesh() const =0
virtual int begin_class(const std::string &name, int current_version)
Definition: Persistent.cc:143
Definition: TypeDescription.h:52
bool error() const
Definition: Persistent.h:166
const string find_type_name(float *)
Definition: TypeName.cc:63
bool is_tensor_
Definition: VField.h:717
int element_dofs_
Definition: VField.h:712
Basis basis_
Definition: GenericField.h:139
int mesh_dimensionality_
Definition: GenericField.h:144
Forward declarations of Mesh get_type_description.
const char * name[]
Definition: BoostGraphExampleTests.cc:87
long long size_type
Definition: Types.h:40
static FieldTypeID field_id
Tag the constructor of this class and put it in the Field DataBase.
Definition: GenericField.h:117
std::string data_type_
Definition: VField.h:720
Persistent i/o for STL containers.
std::string type
Definition: Persistent.h:72
virtual MeshHandle mesh() const
Obtain a Handle to the Mesh.
Definition: GenericField.h:362
GenericField()
only Pio should use this constructor
Definition: GenericField.h:277
virtual const TypeDescription * get_type_description(td_info_e td=FULL_TD_E) const
Definition: GenericField.h:424
PropertyManager * pm_
Definition: VField.h:701
virtual void io(Piostream &stream)
Get the mesh describing how the elements fit together.
Definition: GenericField.h:231
virtual VMesh * vmesh()
Definition: Mesh.cc:413
void resize_values()
Definition: VField.h:138
bool is_scalar_
Definition: VField.h:714
int number_of_enodes_
Definition: VField.h:710
int basis_order_
Definition: GenericField.h:143
static const std::string make_template_id(const std::string &templateName, const std::string &templateParam)
Definition: TypeName.h:62
Definition: GenericField.h:149
static PersistentTypeID type_id
Tag the constructor of this class and put it in the Pio DataBase.
Definition: GenericField.h:114
GenericField< Mesh, Basis, FData > field_type
Typedefs to support the Field concept.
Definition: GenericField.h:61
static FieldHandle field_maker()
Definition: GenericField.h:204
Field * field_
Definition: VField.h:697
FData fdata_type
Definition: GenericField.h:66
VFData * vfdata_
Definition: VField.h:705
static FieldHandle field_maker_mesh(MeshHandle mesh)
Definition: GenericField.h:212
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
Basis basis_type
Definition: GenericField.h:65
virtual VField * vfield() const
Definition: GenericField.h:377
const int GENERICFIELD_VERSION
Definition: GenericField.h:192
virtual void end_class()
Definition: Persistent.cc:178
boost::shared_ptr< mesh_type > mesh_handle_type
Definition: GenericField.h:64
virtual void io(Piostream &stream)
Definition: Field.cc:60
SCIRun::size_type size_type
Definition: GenericField.h:69
long long index_type
Definition: Types.h:39
virtual int basis_order() const
Definition: GenericField.h:101
VFData * CreateVFData(FData2d< T, MESH > &fdata, std::vector< T > &lfdata, std::vector< std::vector< T > > &hfdata)
Definition: GenericField.h:475
Symmetric, positive definite tensors (diffusion, conductivity)
boost::shared_ptr< Field > FieldHandle
Definition: DatatypeFwd.h:65
Definition: Persistent.h:64
virtual GenericField< Mesh, Basis, FData > * clone() const
Definition: GenericField.h:345
virtual ~GenericField()
Definition: GenericField.h:337
FData::value_type value_type
Definition: GenericField.h:62
int n
Definition: eab.py:9
virtual std::string dynamic_type_name() const
Definition: GenericField.h:121
#define DEBUG_CONSTRUCTOR(type)
Definition: Debug.h:64
VField * vfield_
Definition: GenericField.h:141
int number_of_nodes_
Definition: VField.h:709
virtual VMesh * vmesh() const
Definition: GenericField.h:369
virtual std::string type_name() const
Definition: Field.cc:116
mesh_handle_type mesh_
A (generic) mesh.
Definition: GenericField.h:136
td_info_e
Type Description to retrieve information on the actual type of the field.
Definition: Field.h:70
#define DEBUG_DESTRUCTOR(type)
Definition: Debug.h:65
const TypeDescription * get_type_description(Core::Basis::ConstantBasis< T > *)
Definition: Constant.h:209
virtual GenericField< Mesh, Basis, FData > * deep_clone() const
Clone everything, field data and mesh.
Definition: GenericField.h:352