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 "zinc/fieldfiniteelement.h"
13 #include "zinc/field.hpp"
14 #include "zinc/fieldcache.hpp"
15 #include "zinc/fieldmodule.hpp"
16 #include "zinc/element.hpp"
17 
18 namespace OpenCMISS
19 {
20 namespace Zinc
21 {
22 
30 class FieldFiniteElement : public Field
31 {
32 public:
33 
35  { }
36 
37  // takes ownership of C handle, responsibility for destroying it
38  explicit FieldFiniteElement(cmzn_field_finite_element_id field_finite_element_id) :
39  Field(reinterpret_cast<cmzn_field_id>(field_finite_element_id))
40  { }
41 
47  inline cmzn_field_finite_element_id getDerivedId()
48  {
49  return reinterpret_cast<cmzn_field_finite_element_id>(this->id);
50  }
51 
73  int getNodeParameters(const Fieldcache& cache, int componentNumber,
74  Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, double *valuesOut)
75  {
76  return cmzn_field_finite_element_get_node_parameters(this->getDerivedId(),
77  cache.getId(), componentNumber, static_cast<cmzn_node_value_label>(nodeValueLabel),
78  versionNumber, valuesCount, valuesOut);
79  }
80 
102  int setNodeParameters(const Fieldcache& cache, int componentNumber,
103  Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, const double *valuesIn)
104  {
105  return cmzn_field_finite_element_set_node_parameters(this->getDerivedId(),
106  cache.getId(), componentNumber, static_cast<cmzn_node_value_label>(nodeValueLabel),
107  versionNumber, valuesCount, valuesIn);
108  }
109 };
110 
123 {
124 private:
126  const Field& sourceField);
127 
128 public:
129 
131  { }
132 
133  // takes ownership of C handle, responsibility for destroying it
134  explicit FieldEdgeDiscontinuity(cmzn_field_edge_discontinuity_id field_edge_discontinuity_id) :
135  Field(reinterpret_cast<cmzn_field_id>(field_edge_discontinuity_id))
136  { }
137 
143  inline cmzn_field_edge_discontinuity_id getDerivedId()
144  {
145  return reinterpret_cast<cmzn_field_edge_discontinuity_id>(id);
146  }
147 
152  enum Measure
153  {
154  MEASURE_INVALID = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_INVALID,
157  MEASURE_C1 = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_C1,
161  MEASURE_G1 = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_G1,
166  MEASURE_SURFACE_NORMAL = CMZN_FIELD_EDGE_DISCONTINUITY_MEASURE_SURFACE_NORMAL
170  };
171 
181  {
182  return Field(cmzn_field_edge_discontinuity_get_conditional_field(getDerivedId()));
183  }
184 
196  int setConditionalField(const Field& conditionalField)
197  {
198  return cmzn_field_edge_discontinuity_set_conditional_field(getDerivedId(), conditionalField.getId());
199  }
200 
210  {
211  return static_cast<Measure>(cmzn_field_edge_discontinuity_get_measure(getDerivedId()));
212  }
213 
223  int setMeasure(Measure measure)
224  {
225  return cmzn_field_edge_discontinuity_set_measure(getDerivedId(),
226  static_cast<cmzn_field_edge_discontinuity_measure>(measure));
227  }
228 
229 };
230 class FieldEmbedded : public Field
238 {
239 private:
240  // takes ownership of C handle, responsibility for destroying it
241  explicit FieldEmbedded(cmzn_field_id field_id) : Field(field_id)
242  { }
243 
244  friend FieldEmbedded Fieldmodule::createFieldEmbedded(const Field& sourceField,
245  const Field& embeddedLocationField);
246 
247 public:
248 
249  FieldEmbedded() : Field(0)
250  { }
251 
252 };
253 
261 {
262 public:
263 
265  { }
266 
267  // takes ownership of C handle, responsibility for destroying it
268  explicit FieldFindMeshLocation(cmzn_field_find_mesh_location_id field_find_mesh_location_id) :
269  Field(reinterpret_cast<cmzn_field_id>(field_find_mesh_location_id))
270  { }
271 
277  {
278  SEARCH_MODE_INVALID = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_INVALID,
281  SEARCH_MODE_EXACT = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_EXACT,
285  SEARCH_MODE_NEAREST = CMZN_FIELD_FIND_MESH_LOCATION_SEARCH_MODE_NEAREST
288  };
289 
296  {
297  return Mesh(cmzn_field_find_mesh_location_get_mesh(
298  reinterpret_cast<cmzn_field_find_mesh_location_id>(id)));
299  }
300 
308  {
309  return static_cast<SearchMode>(cmzn_field_find_mesh_location_get_search_mode(
310  reinterpret_cast<cmzn_field_find_mesh_location_id>(id)));
311  }
312 
320  int setSearchMode(SearchMode searchMode)
321  {
322  return cmzn_field_find_mesh_location_set_search_mode(
323  reinterpret_cast<cmzn_field_find_mesh_location_id>(id),
324  static_cast<cmzn_field_find_mesh_location_search_mode>(searchMode));
325  }
326 };
327 class FieldNodeValue : public Field
334 {
335 private:
336  // takes ownership of C handle, responsibility for destroying it
337  explicit FieldNodeValue(cmzn_field_id field_id) : Field(field_id)
338  { }
339 
340  friend FieldNodeValue Fieldmodule::createFieldNodeValue(const Field& sourceField,
341  Node::ValueLabel nodeValueLabel, int versionNumber);
342 
343 public:
344 
345  FieldNodeValue() : Field(0)
346  { }
347 
348 };
349 
357 {
358 public:
359 
361  { }
362 
363  // takes ownership of C handle, responsibility for destroying it
364  explicit FieldStoredMeshLocation(cmzn_field_stored_mesh_location_id field_stored_mesh_location_id) :
365  Field(reinterpret_cast<cmzn_field_id>(field_stored_mesh_location_id))
366  { }
367 };
368 class FieldStoredString : public Field
375 {
376 public:
377 
378  FieldStoredString() : Field(0)
379  { }
380 
381  // takes ownership of C handle, responsibility for destroying it
382  explicit FieldStoredString(cmzn_field_stored_string_id field_stored_string_id) :
383  Field(reinterpret_cast<cmzn_field_id>(field_stored_string_id))
384  { }
385 };
386 
387 class FieldIsExterior : public Field
388 {
389 private:
390  // takes ownership of C handle, responsibility for destroying it
391  explicit FieldIsExterior(cmzn_field_id field_id) : Field(field_id)
392  { }
393 
394  friend FieldIsExterior Fieldmodule::createFieldIsExterior();
395 
396 public:
397 
398  FieldIsExterior() : Field(0)
399  { }
400 };
401 
402 class FieldIsOnFace : public Field
403 {
404 private:
405  // takes ownership of C handle, responsibility for destroying it
406  explicit FieldIsOnFace(cmzn_field_id field_id) : Field(field_id)
407  { }
408 
409  friend FieldIsOnFace Fieldmodule::createFieldIsOnFace(Element::FaceType face);
410 
411 public:
412 
413  FieldIsOnFace() : Field(0)
414  { }
415 };
416 
418 {
419  return FieldFiniteElement(reinterpret_cast<cmzn_field_finite_element_id>(
420  cmzn_fieldmodule_create_field_finite_element(id,numberOfComponents)));
421 }
422 
424 {
425  return FieldFiniteElement(cmzn_field_cast_finite_element(id));
426 }
427 
429  const Field& sourceField)
430 {
431  return FieldEdgeDiscontinuity(reinterpret_cast<cmzn_field_edge_discontinuity_id>(
432  cmzn_fieldmodule_create_field_edge_discontinuity(id, sourceField.getId())));
433 }
434 
436 {
437  return FieldEdgeDiscontinuity(cmzn_field_cast_edge_discontinuity(id));
438 }
439 
440 inline FieldEmbedded Fieldmodule::createFieldEmbedded(const Field& sourceField, const Field& embeddedLocationField)
441 {
442  return FieldEmbedded(cmzn_fieldmodule_create_field_embedded(id,
443  sourceField.getId(), embeddedLocationField.getId()));
444 }
445 
447  const Field& sourceField, const Field& meshField, const Mesh& mesh)
448 {
449  return FieldFindMeshLocation(reinterpret_cast<cmzn_field_find_mesh_location_id>(
450  cmzn_fieldmodule_create_field_find_mesh_location(id, sourceField.getId(), meshField.getId(), mesh.getId())));
451 }
452 
454 {
455  return FieldFindMeshLocation(cmzn_field_cast_find_mesh_location(id));
456 }
457 
459  Node::ValueLabel nodeValueLabel, int versionNumber)
460 {
461  return FieldNodeValue(cmzn_fieldmodule_create_field_node_value(id,
462  sourceField.getId(), static_cast<cmzn_node_value_label>(nodeValueLabel),
463  versionNumber));
464 }
465 
467 {
468  return FieldStoredMeshLocation(reinterpret_cast<cmzn_field_stored_mesh_location_id>(
469  cmzn_fieldmodule_create_field_stored_mesh_location(id, mesh.getId())));
470 }
471 
473 {
474  return FieldStoredMeshLocation(cmzn_field_cast_stored_mesh_location(id));
475 }
476 
478 {
479  return FieldStoredString(reinterpret_cast<cmzn_field_stored_string_id>(
480  cmzn_fieldmodule_create_field_stored_string(id)));
481 }
482 
484 {
485  return FieldStoredString(cmzn_field_cast_stored_string(id));
486 }
487 
488 inline FieldIsExterior Fieldmodule::createFieldIsExterior()
489 {
490  return FieldIsExterior(cmzn_fieldmodule_create_field_is_exterior(id));
491 }
492 
493 inline FieldIsOnFace Fieldmodule::createFieldIsOnFace(Element::FaceType face)
494 {
495  return FieldIsOnFace(cmzn_fieldmodule_create_field_is_on_face(
496  id, static_cast<cmzn_element_face_type>(face)));
497 }
498 
499 } // namespace Zinc
500 }
501 #endif /* CMZN_FIELD_TYPES_FINITE_ELEMENT_HPP__ */
FieldFiniteElement createFieldFiniteElement(int numberOfComponents)
Definition: fieldfiniteelement.hpp:417
A real-valued interpolated field.
Definition: fieldfiniteelement.hpp:30
ValueLabel
Definition: node.hpp:84
Base field type: an abstraction of a mathematical field.
Definition: field.hpp:49
FieldStoredString castStoredString()
Definition: fieldfiniteelement.hpp:483
int setSearchMode(SearchMode searchMode)
Definition: fieldfiniteelement.hpp:320
int setMeasure(Measure measure)
Definition: fieldfiniteelement.hpp:223
FieldFindMeshLocation castFindMeshLocation()
Definition: fieldfiniteelement.hpp:453
FieldStoredMeshLocation createFieldStoredMeshLocation(const Mesh &mesh)
Definition: fieldfiniteelement.hpp:466
FieldEmbedded createFieldEmbedded(const Field &sourceField, const Field &embeddedLocationField)
Definition: fieldfiniteelement.hpp:440
FieldStoredString createFieldStoredString()
Definition: fieldfiniteelement.hpp:477
FieldFiniteElement castFiniteElement()
Definition: fieldfiniteelement.hpp:423
A field which stores and returns string values at nodes.
Definition: fieldfiniteelement.hpp:374
FieldNodeValue createFieldNodeValue(const Field &sourceField, Node::ValueLabel nodeValueLabel, int versionNumber)
Definition: fieldfiniteelement.hpp:458
A field which represents and returns node values/derivatives.
Definition: fieldfiniteelement.hpp:333
FieldEdgeDiscontinuity castEdgeDiscontinuity()
Definition: fieldfiniteelement.hpp:435
A field returning a value of a source field at an embedded location.
Definition: fieldfiniteelement.hpp:237
int getNodeParameters(const Fieldcache &cache, int componentNumber, Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, double *valuesOut)
Definition: fieldfiniteelement.hpp:73
cmzn_field_finite_element_id getDerivedId()
Definition: fieldfiniteelement.hpp:47
cmzn_field_id getId() const
Definition: field.hpp:101
SearchMode
Definition: fieldfiniteelement.hpp:276
A field measuring discontinuity between surface elements.
Definition: fieldfiniteelement.hpp:122
Field getConditionalField()
Definition: fieldfiniteelement.hpp:180
Mesh getMesh()
Definition: fieldfiniteelement.hpp:295
A field storing locations within a mesh.
Definition: fieldfiniteelement.hpp:356
Definition: fieldfiniteelement.hpp:154
cmzn_field_edge_discontinuity_id getDerivedId()
Definition: fieldfiniteelement.hpp:143
Measure
Definition: fieldfiniteelement.hpp:152
FieldEdgeDiscontinuity createFieldEdgeDiscontinuity(const Field &sourceField)
Definition: fieldfiniteelement.hpp:428
cmzn_mesh_id getId() const
Definition: element.hpp:840
Definition: fieldfiniteelement.hpp:161
int setNodeParameters(const Fieldcache &cache, int componentNumber, Node::ValueLabel nodeValueLabel, int versionNumber, int valuesCount, const double *valuesIn)
Definition: fieldfiniteelement.hpp:102
FieldStoredMeshLocation castStoredMeshLocation()
Definition: fieldfiniteelement.hpp:472
Cache for setting domain locations at which fields are evaluated or assigned.
Definition: fieldcache.hpp:33
Definition: fieldfiniteelement.hpp:157
Definition: fieldfiniteelement.hpp:402
Definition: fieldfiniteelement.hpp:387
SearchMode getSearchMode()
Definition: fieldfiniteelement.hpp:307
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:787
Measure getMeasure()
Definition: fieldfiniteelement.hpp:209
Definition: fieldfiniteelement.hpp:281
A field that computes the location in a mesh.
Definition: fieldfiniteelement.hpp:260
int setConditionalField(const Field &conditionalField)
Definition: fieldfiniteelement.hpp:196
FieldFindMeshLocation createFieldFindMeshLocation(const Field &sourceField, const Field &meshField, const Mesh &mesh)
Definition: fieldfiniteelement.hpp:446