IFEM  90A354
LRSplineField2D.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _LRSPLINE_FIELD_2D_H
15 #define _LRSPLINE_FIELD_2D_H
16 
17 #include "FieldBase.h"
18 
19 class ASMu2D;
20 
21 namespace LR {
22  class Element;
23  class LRSplineSurface;
24 }
25 
26 
34 class LRSplineField2D : public FieldBase
35 {
36 public:
44  LRSplineField2D(const ASMu2D* patch, const RealArray& v,
45  char basis = 1, char cmp = 1, const char* name = nullptr);
51  LRSplineField2D(const LR::LRSplineSurface* srf, const RealArray& v,
52  bool is_rational, const char* name = nullptr);
54  virtual ~LRSplineField2D() {}
55 
56  // Methods to evaluate the field
57  //==============================
58 
61  virtual double valueNode(size_t node) const;
62 
65  virtual double valueFE(const ItgPoint& x) const;
66 
69  virtual double valueCoor(const Vec4& x) const;
70 
74  virtual bool gradFE(const ItgPoint& x, Vector& grad) const;
75 
79  virtual bool hessianFE(const ItgPoint& x, Matrix& H) const;
80 
81 protected:
82  const LR::LRSplineSurface* basis;
83  const LR::LRSplineSurface* surf;
84 
85  bool is_rational;
86 };
87 
88 #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 unstructured 2D spline FE models.
Definition: ASMu2D.h:50
Base class for scalar fields.
Definition: FieldBase.h:30
Class representing an integration point.
Definition: ItgPoint.h:25
Class for LR spline-based finite element scalar fields in 2D.
Definition: LRSplineField2D.h:35
virtual double valueNode(size_t node) const
Computes the value in a given node/control point.
Definition: LRSplineField2D.C:63
const LR::LRSplineSurface * basis
Spline basis description.
Definition: LRSplineField2D.h:82
virtual double valueCoor(const Vec4 &x) const
Computes the value at a given global coordinate.
Definition: LRSplineField2D.C:91
const LR::LRSplineSurface * surf
Spline geometry description.
Definition: LRSplineField2D.h:83
virtual double valueFE(const ItgPoint &x) const
Computes the value at a given local coordinate.
Definition: LRSplineField2D.C:69
bool is_rational
Whether or not surfaces are rational.
Definition: LRSplineField2D.h:85
virtual bool gradFE(const ItgPoint &x, Vector &grad) const
Computes the gradient for a given local coordinate.
Definition: LRSplineField2D.C:104
virtual bool hessianFE(const ItgPoint &x, Matrix &H) const
Computes the hessian for a given local coordinate.
Definition: LRSplineField2D.C:129
LRSplineField2D(const ASMu2D *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: LRSplineField2D.C:24
virtual ~LRSplineField2D()
Empty destructor.
Definition: LRSplineField2D.h:54
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
Utilities for LR-splines.
Definition: AdaptiveSetup.h:22