OpenCMISS-Zinc C++ API Documentation
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Pages
fieldfiniteelement.hpp
Go to the documentation of this file.
1 
4 /* OpenCMISS-Zinc Library
5 *
6 * This Source Code Form is subject to the terms of the Mozilla Public
7 * License, v. 2.0. If a copy of the MPL was not distributed with this
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 #ifndef CMZN_FIELDTYPESFINITEELEMENT_HPP__
10 #define CMZN_FIELDTYPESFINITEELEMENT_HPP__
11 
12 #include "opencmiss/zinc/fieldfiniteelement.h"
13 #include "opencmiss/zinc/field.hpp"
14 #include "opencmiss/zinc/fieldcache.hpp"
15 #include "opencmiss/zinc/fieldmodule.hpp"
16 #include "opencmiss/zinc/element.hpp"
17 #include "opencmiss/zinc/node.hpp"
18 
19 namespace OpenCMISS
20 {
21 namespace Zinc
22 {
23 
31 class FieldFiniteElement : public Field
32 {
33 public:
34 
36  { }
37 
38  // takes ownership of C handle, responsibility for destroying it
39  explicit FieldFiniteElement(cmzn_field_finite_element_id field_finite_element_id) :
40  Field(reinterpret_cast<cmzn_field_id>(field_finite_element_id))
41  { }
42 
48  inline cmzn_field_finite_element_id getDerivedId()
49  {
50  return reinterpret_cast<cmzn_field_finite_element_id>(this->id);
51  }
52 
74  int getNodeParameters(const Fieldcache& cache, int componentNumber,
75  Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, double *valuesOut)
76  {
77  return cmzn_field_finite_element_get_node_parameters(this->getDerivedId(),
78  cache.getId(), componentNumber, static_cast<cmzn_node_value_label>(nodeValueLabel),
79  versionNumber, valuesCount, valuesOut);
80  }
81 
103  int setNodeParameters(const Fieldcache& cache, int componentNumber,
104  Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, const double *valuesIn)
105  {
106  return cmzn_field_finite_element_set_node_parameters(this->getDerivedId(),
107  cache.getId(), componentNumber, static_cast<cmzn_node_value_label>(nodeValueLabel),
108  versionNumber, valuesCount, valuesIn);
109  }
110 };
111 
124 {
125 private:
127  const Field& sourceField);
128 
129 public:
130 
132  { }
133 
134  // takes ownership of C handle, responsibility for destroying it
135  explicit FieldEdgeDiscontinuity(cmzn_field_edge_discontinuity_id field_edge_discontinuity_id) :
136  Field(reinterpret_cast<cmzn_field_id>(field_edge_discontinuity_id))
137  { }
138 
144  inline cmzn_field_edge_discontinuity_id getDerivedId()
145  {
146  return reinterpret_cast<cmzn_field_edge_discontinuity_id>(id);
147  }
148 
153  enum Measure
154  {
155  MEASURE_INVALID = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_INVALID,
158  MEASURE_C1 = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_C1,
162  MEASURE_G1 = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_G1,
167  MEASURE_SURFACE_NORMAL = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_SURFACE_NORMAL
171  };
172 
182  {
183  return Field(cmzn_field_edge_discontinuity_get_conditional_field(getDerivedId()));
184  }
185 
197  int setConditionalField(const Field& conditionalField)
198  {
199  return cmzn_field_edge_discontinuity_set_conditional_field(getDerivedId(), conditionalField.getId());
200  }
201 
211  {
212  return static_cast<Measure>(cmzn_field_edge_discontinuity_get_measure(getDerivedId()));
213  }
214 
224  int setMeasure(Measure measure)
225  {
226  return cmzn_field_edge_discontinuity_set_measure(getDerivedId(),
227  static_cast<cmzn_field_edge_discontinuity_measure>(measure));
228  }
229 
230 };
231 class FieldEmbedded : public Field
239 {
240 private:
241  // takes ownership of C handle, responsibility for destroying it
242  explicit FieldEmbedded(cmzn_field_id field_id) : Field(field_id)
243  { }
244 
245  friend FieldEmbedded Fieldmodule::createFieldEmbedded(const Field& sourceField,
246  const Field& embeddedLocationField);
247 
248 public:
249 
250  FieldEmbedded() : Field(0)
251  { }
252 
253 };
254 
262 {
263 public:
264 
266  { }
267 
268  // takes ownership of C handle, responsibility for destroying it
269  explicit FieldFindMeshLocation(cmzn_field_find_mesh_location_id field_find_mesh_location_id) :
270  Field(reinterpret_cast<cmzn_field_id>(field_find_mesh_location_id))
271  { }
272 
278  {
279  SEARCH_MODE_INVALID = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_INVALID,
282  SEARCH_MODE_EXACT = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_EXACT,
286  SEARCH_MODE_NEAREST = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_NEAREST
289  };
290 
297  {
298  return Mesh(cmzn_field_find_mesh_location_get_mesh(
299  reinterpret_cast<cmzn_field_find_mesh_location_id>(id)));
300  }
301 
309  {
310  return static_cast<SearchMode>(cmzn_field_find_mesh_location_get_search_mode(
311  reinterpret_cast<cmzn_field_find_mesh_location_id>(id)));
312  }
313 
321  int setSearchMode(SearchMode searchMode)
322  {
323  return cmzn_field_find_mesh_location_set_search_mode(
324  reinterpret_cast<cmzn_field_find_mesh_location_id>(id),
325  static_cast<cmzn_field_find_mesh_location_search_mode>(searchMode));
326  }
327 };
328 class FieldNodeValue : public Field
335 {
336 private:
337  // takes ownership of C handle, responsibility for destroying it
338  explicit FieldNodeValue(cmzn_field_id field_id) : Field(field_id)
339  { }
340 
341  friend FieldNodeValue Fieldmodule::createFieldNodeValue(const Field& sourceField,
342  Node::ValueLabel nodeValueLabel, int versionNumber);
343 
344 public:
345 
346  FieldNodeValue() : Field(0)
347  { }
348 
349 };
350 
358 {
359 public:
360 
362  { }
363 
364  // takes ownership of C handle, responsibility for destroying it
365  explicit FieldStoredMeshLocation(cmzn_field_stored_mesh_location_id field_stored_mesh_location_id) :
366  Field(reinterpret_cast<cmzn_field_id>(field_stored_mesh_location_id))
367  { }
368 };
369 class FieldStoredString : public Field
376 {
377 public:
378 
379  FieldStoredString() : Field(0)
380  { }
381 
382  // takes ownership of C handle, responsibility for destroying it
383  explicit FieldStoredString(cmzn_field_stored_string_id field_stored_string_id) :
384  Field(reinterpret_cast<cmzn_field_id>(field_stored_string_id))
385  { }
386 };
387 class FieldIsExterior : public Field
396 {
397 private:
398  // takes ownership of C handle, responsibility for destroying it
399  explicit FieldIsExterior(cmzn_field_id field_id) : Field(field_id)
400  { }
401 
402  friend FieldIsExterior Fieldmodule::createFieldIsExterior();
403 
404 public:
405 
406  FieldIsExterior() : Field(0)
407  { }
408 };
409 class FieldIsOnFace : public Field
418 {
419 private:
420  // takes ownership of C handle, responsibility for destroying it
421  explicit FieldIsOnFace(cmzn_field_id field_id) : Field(field_id)
422  { }
423 
424  friend FieldIsOnFace Fieldmodule::createFieldIsOnFace(Element::FaceType face);
425 
426 public:
427 
428  FieldIsOnFace() : Field(0)
429  { }
430 };
431 class FieldNodeLookup : public Field
440 {
441 private:
442  // takes ownership of C handle, responsibility for destroying it
443  explicit FieldNodeLookup(cmzn_field_id field_id) : Field(field_id)
444  { }
445 
446  friend FieldNodeLookup Fieldmodule::createFieldNodeLookup(const Field& sourceField,
447  const Node& lookupNode);
448 
449 public:
450 
451  FieldNodeLookup() : Field(0)
452  { }
453 
454 };
455 
456 
458 {
459  return FieldFiniteElement(reinterpret_cast<cmzn_field_finite_element_id>(
460  cmzn_fieldmodule_create_field_finite_element(id,numberOfComponents)));
461 }
462 
464 {
465  return FieldFiniteElement(cmzn_field_cast_finite_element(id));
466 }
467 
469  const Field& sourceField)
470 {
471  return FieldEdgeDiscontinuity(reinterpret_cast<cmzn_field_edge_discontinuity_id>(
472  cmzn_fieldmodule_create_field_edge_discontinuity(id, sourceField.getId())));
473 }
474 
476 {
477  return FieldEdgeDiscontinuity(cmzn_field_cast_edge_discontinuity(id));
478 }
479 
480 inline FieldEmbedded Fieldmodule::createFieldEmbedded(const Field& sourceField, const Field& embeddedLocationField)
481 {
482  return FieldEmbedded(cmzn_fieldmodule_create_field_embedded(id,
483  sourceField.getId(), embeddedLocationField.getId()));
484 }
485 
487  const Field& sourceField, const Field& meshField, const Mesh& mesh)
488 {
489  return FieldFindMeshLocation(reinterpret_cast<cmzn_field_find_mesh_location_id>(
490  cmzn_fieldmodule_create_field_find_mesh_location(id, sourceField.getId(), meshField.getId(), mesh.getId())));
491 }
492 
494 {
495  return FieldFindMeshLocation(cmzn_field_cast_find_mesh_location(id));
496 }
497 
499  Node::ValueLabel nodeValueLabel, int versionNumber)
500 {
501  return FieldNodeValue(cmzn_fieldmodule_create_field_node_value(id,
502  sourceField.getId(), static_cast<cmzn_node_value_label>(nodeValueLabel),
503  versionNumber));
504 }
505 
507 {
508  return FieldStoredMeshLocation(reinterpret_cast<cmzn_field_stored_mesh_location_id>(
509  cmzn_fieldmodule_create_field_stored_mesh_location(id, mesh.getId())));
510 }
511 
513 {
514  return FieldStoredMeshLocation(cmzn_field_cast_stored_mesh_location(id));
515 }
516 
518 {
519  return FieldStoredString(reinterpret_cast<cmzn_field_stored_string_id>(
520  cmzn_fieldmodule_create_field_stored_string(id)));
521 }
522 
524 {
525  return FieldStoredString(cmzn_field_cast_stored_string(id));
526 }
527 
529 {
530  return FieldIsExterior(cmzn_fieldmodule_create_field_is_exterior(id));
531 }
532 
534 {
535  return FieldIsOnFace(cmzn_fieldmodule_create_field_is_on_face(
536  id, static_cast<cmzn_element_face_type>(face)));
537 }
538 
540  const Node& lookupNode)
541 {
542  return FieldNodeLookup(cmzn_fieldmodule_create_field_node_lookup(
543  id, sourceField.getId(), lookupNode.getId()));
544 }
545 
546 } // namespace Zinc
547 }
548 #endif /* CMZN_FIELD_TYPES_FINITE_ELEMENT_HPP__ */
FieldFiniteElement createFieldFiniteElement(int numberOfComponents)
Definition: fieldfiniteelement.hpp:457
A real-valued interpolated field.
Definition: fieldfiniteelement.hpp:31
ValueLabel
Definition: node.hpp:84
Base field type: an abstraction of a mathematical field.
Definition: field.hpp:50
FieldStoredString castStoredString()
Definition: fieldfiniteelement.hpp:523
int setSearchMode(SearchMode searchMode)
Definition: fieldfiniteelement.hpp:321
int setMeasure(Measure measure)
Definition: fieldfiniteelement.hpp:224
FieldFindMeshLocation castFindMeshLocation()
Definition: fieldfiniteelement.hpp:493
FieldStoredMeshLocation createFieldStoredMeshLocation(const Mesh &mesh)
Definition: fieldfiniteelement.hpp:506
FieldIsOnFace createFieldIsOnFace(Element::FaceType face)
Definition: fieldfiniteelement.hpp:533
FieldEmbedded createFieldEmbedded(const Field &sourceField, const Field &embeddedLocationField)
Definition: fieldfiniteelement.hpp:480
FieldStoredString createFieldStoredString()
Definition: fieldfiniteelement.hpp:517
FieldFiniteElement castFiniteElement()
Definition: fieldfiniteelement.hpp:463
A field which stores and returns string values at nodes.
Definition: fieldfiniteelement.hpp:375
FieldNodeValue createFieldNodeValue(const Field &sourceField, Node::ValueLabel nodeValueLabel, int versionNumber)
Definition: fieldfiniteelement.hpp:498
A field which represents and returns node values/derivatives.
Definition: fieldfiniteelement.hpp:334
FieldIsExterior createFieldIsExterior()
Definition: fieldfiniteelement.hpp:528
FieldEdgeDiscontinuity castEdgeDiscontinuity()
Definition: fieldfiniteelement.hpp:475
A field returning a value of a source field at an embedded location.
Definition: fieldfiniteelement.hpp:238
int getNodeParameters(const Fieldcache &cache, int componentNumber, Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, double *valuesOut)
Definition: fieldfiniteelement.hpp:74
cmzn_field_finite_element_id getDerivedId()
Definition: fieldfiniteelement.hpp:48
cmzn_field_id getId() const
Definition: field.hpp:102
SearchMode
Definition: fieldfiniteelement.hpp:277
A field measuring discontinuity between surface elements.
Definition: fieldfiniteelement.hpp:123
Field getConditionalField()
Definition: fieldfiniteelement.hpp:181
Mesh getMesh()
Definition: fieldfiniteelement.hpp:296
A field storing locations within a mesh.
Definition: fieldfiniteelement.hpp:357
Definition: fieldfiniteelement.hpp:155
cmzn_field_edge_discontinuity_id getDerivedId()
Definition: fieldfiniteelement.hpp:144
Measure
Definition: fieldfiniteelement.hpp:153
FieldEdgeDiscontinuity createFieldEdgeDiscontinuity(const Field &sourceField)
Definition: fieldfiniteelement.hpp:468
cmzn_mesh_id getId() const
Definition: element.hpp:844
Definition: fieldfiniteelement.hpp:162
cmzn_node_id getId() const
Definition: node.hpp:140
int setNodeParameters(const Fieldcache &cache, int componentNumber, Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, const double *valuesIn)
Definition: fieldfiniteelement.hpp:103
FieldStoredMeshLocation castStoredMeshLocation()
Definition: fieldfiniteelement.hpp:512
Cache for setting domain locations at which fields are evaluated or assigned.
Definition: fieldcache.hpp:33
Definition: fieldfiniteelement.hpp:158
A field which returns 1 on 2-D faces and 1-D lines considered to lie on a specified face of their top...
Definition: fieldfiniteelement.hpp:417
A field which returns 1 on 2-D faces and 1-D lines considered as exterior to their top-level element...
Definition: fieldfiniteelement.hpp:395
SearchMode getSearchMode()
Definition: fieldfiniteelement.hpp:308
A field whose value equals source field calculated at the lookup node instead of the domain location ...
Definition: fieldfiniteelement.hpp:439
FieldNodeLookup createFieldNodeLookup(const Field &sourceField, const Node &lookupNode)
Definition: fieldfiniteelement.hpp:539
Point object used to represent finite element nodes.
Definition: node.hpp:38
cmzn_fieldcache_id getId() const
Definition: fieldcache.hpp:86
FaceType
Definition: element.hpp:284
A finite element mesh consisting of a set of elements of fixed dimension.
Definition: element.hpp:791
Measure getMeasure()
Definition: fieldfiniteelement.hpp:210
Definition: fieldfiniteelement.hpp:282
A field that computes the location in a mesh.
Definition: fieldfiniteelement.hpp:261
int setConditionalField(const Field &conditionalField)
Definition: fieldfiniteelement.hpp:197
FieldFindMeshLocation createFieldFindMeshLocation(const Field &sourceField, const Field &meshField, const Mesh &mesh)
Definition: fieldfiniteelement.hpp:486