IFEM  90A354
SplineField3D.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _SPLINE_FIELD_3D_H
15 #define _SPLINE_FIELD_3D_H
16 
17 #include "FieldBase.h"
18 
19 class ASMs3D;
20 
21 namespace Go {
22  class SplineVolume;
23 }
24 
25 
33 class SplineField3D : public FieldBase
34 {
35 public:
43  SplineField3D(const ASMs3D* patch, const RealArray& v,
44  char basis = 1, char cmp = 1, const char* name = nullptr);
49  SplineField3D(const Go::SplineVolume* svol, const RealArray& v,
50  const char* name = nullptr);
52  virtual ~SplineField3D() {}
53 
54  // Methods to evaluate the field
55  //==============================
56 
59  virtual double valueNode(size_t node) const;
60 
63  virtual double valueFE(const ItgPoint& x) const;
64 
67  virtual double valueCoor(const Vec4& x) const;
68 
72  virtual bool valueGrid(RealArray& val, const int* npe) const;
73 
77  virtual bool gradFE(const ItgPoint& x, Vector& grad) const;
78 
82  virtual bool hessianFE(const ItgPoint& x, Matrix& H) const;
83 
84 protected:
85  const Go::SplineVolume* basis;
86  const Go::SplineVolume* vol;
87 
88 private:
89  unsigned char nsd;
90 };
91 
92 #endif
Base class for scalar fields.
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
Driver for assembly of structured 3D spline FE models.
Definition: ASMs3D.h:39
Base class for scalar fields.
Definition: FieldBase.h:30
Class representing an integration point.
Definition: ItgPoint.h:25
Class for spline-based finite element scalar fields in 3D.
Definition: SplineField3D.h:34
virtual bool gradFE(const ItgPoint &x, Vector &grad) const
Computes the gradient for a given local coordinate.
Definition: SplineField3D.C:169
const Go::SplineVolume * vol
Spline geometry description.
Definition: SplineField3D.h:86
virtual double valueNode(size_t node) const
Computes the value in a given node/control point.
Definition: SplineField3D.C:71
virtual bool valueGrid(RealArray &val, const int *npe) const
Computes the value at a grid of visualization points.
Definition: SplineField3D.C:113
unsigned char nsd
Number of space dimensions.
Definition: SplineField3D.h:89
virtual double valueCoor(const Vec4 &x) const
Computes the value at a given global coordinate.
Definition: SplineField3D.C:98
const Go::SplineVolume * basis
Spline basis description.
Definition: SplineField3D.h:85
virtual bool hessianFE(const ItgPoint &x, Matrix &H) const
Computes the hessian for a given local coordinate.
Definition: SplineField3D.C:191
virtual double valueFE(const ItgPoint &x) const
Computes the value at a given local coordinate.
Definition: SplineField3D.C:77
virtual ~SplineField3D()
Empty destructor.
Definition: SplineField3D.h:52
SplineField3D(const ASMs3D *patch, const RealArray &v, char basis=1, char cmp=1, const char *name=nullptr)
The constructor sets the number of space dimensions and fields.
Definition: SplineField3D.C:28
Simple class for representing a point in 3D space and time.
Definition: Vec3.h:209
A vector class with some added algebraic operations.
Definition: matrix.h:64