added: implement valueCoor in mixed spline fields
This commit is contained in:
parent
e479951031
commit
3dc01f07a4
@ -18,6 +18,7 @@
|
||||
#include "ItgPoint.h"
|
||||
#include "CoordinateMapping.h"
|
||||
#include "Utilities.h"
|
||||
#include "Vec3.h"
|
||||
|
||||
|
||||
LRSplineFields2Dmx::LRSplineFields2Dmx (const ASMu2Dmx* patch,
|
||||
@ -48,6 +49,18 @@ bool LRSplineFields2Dmx::valueNode (size_t node, Vector& vals) const
|
||||
}
|
||||
|
||||
|
||||
bool LRSplineFields2Dmx::valueCoor (const Vec4& x, Vector& vals) const
|
||||
{
|
||||
if (x.u)
|
||||
return this->valueFE(ItgPoint(x.u[0],x.u[1]),vals);
|
||||
|
||||
std::cerr << "** LRSplineFields2Dmx::valueCoor: "
|
||||
<< "not implemented without parameters\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool LRSplineFields2Dmx::valueFE (const ItgPoint& x, Vector& vals) const
|
||||
{
|
||||
if (!surf) return false;
|
||||
|
@ -52,6 +52,11 @@ public:
|
||||
//! \param[out] vals Node values
|
||||
bool valueNode(size_t node, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given global coordinate.
|
||||
//! \param[in] x Global/physical coordinate for point
|
||||
//! \param[out] vals Values in given physical coordinate
|
||||
bool valueCoor(const Vec4& x, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given local coordinate.
|
||||
//! \param[in] x Local coordinate of evaluation point
|
||||
//! \param[out] vals Values in local point in given element
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "ItgPoint.h"
|
||||
#include "CoordinateMapping.h"
|
||||
#include "Utilities.h"
|
||||
#include "Vec3.h"
|
||||
|
||||
|
||||
LRSplineFields3Dmx::LRSplineFields3Dmx (const ASMu3Dmx* patch,
|
||||
@ -48,6 +49,18 @@ bool LRSplineFields3Dmx::valueNode (size_t node, Vector& vals) const
|
||||
}
|
||||
|
||||
|
||||
bool LRSplineFields3Dmx::valueCoor (const Vec4& x, Vector& vals) const
|
||||
{
|
||||
if (x.u)
|
||||
return this->valueFE(ItgPoint(x.u[0],x.u[1],x.u[2]),vals);
|
||||
|
||||
std::cerr << "** LRSplineFields3Dmx::valueCoor: "
|
||||
<< "not implemented without parameters\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool LRSplineFields3Dmx::valueFE (const ItgPoint& x, Vector& vals) const
|
||||
{
|
||||
if (!vol) return false;
|
||||
|
@ -52,6 +52,11 @@ public:
|
||||
//! \param[out] vals Node values
|
||||
bool valueNode(size_t node, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given global coordinate.
|
||||
//! \param[in] x Global/physical coordinate for point
|
||||
//! \param[out] vals Values in given physical coordinate
|
||||
bool valueCoor(const Vec4& x, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given local coordinate.
|
||||
//! \param[in] x Local coordinate of evaluation point
|
||||
//! \param[out] vals Values in local point in given element
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "ItgPoint.h"
|
||||
#include "CoordinateMapping.h"
|
||||
#include "Utilities.h"
|
||||
#include "Vec3.h"
|
||||
|
||||
|
||||
SplineFields2Dmx::SplineFields2Dmx (const ASMs2Dmx* patch,
|
||||
@ -48,6 +49,21 @@ bool SplineFields2Dmx::valueNode (size_t node, Vector& vals) const
|
||||
}
|
||||
|
||||
|
||||
bool SplineFields2Dmx::valueCoor (const Vec4& x, Vector& vals) const
|
||||
{
|
||||
if (x.u)
|
||||
return this->valueFE(ItgPoint(x.u[0],x.u[1]),vals);
|
||||
|
||||
// Use with caution, very slow!
|
||||
Go::Point pt(x.x,x.y,x.z), clopt(3);
|
||||
double clo_u, clo_v, dist;
|
||||
#pragma omp critical
|
||||
surf->getBasis(1)->closestPoint(pt, clo_u, clo_v, clopt, dist, 1.0e-5);
|
||||
|
||||
return this->valueFE(ItgPoint(clo_u,clo_v),vals);
|
||||
}
|
||||
|
||||
|
||||
bool SplineFields2Dmx::valueFE (const ItgPoint& x, Vector& vals) const
|
||||
{
|
||||
if (!surf) return false;
|
||||
|
@ -52,6 +52,11 @@ public:
|
||||
//! \param[out] vals Node values
|
||||
bool valueNode(size_t node, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given global coordinate.
|
||||
//! \param[in] x Global/physical coordinate for point
|
||||
//! \param[out] vals Values in given physical coordinate
|
||||
virtual bool valueCoor(const Vec4& x, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given local coordinate.
|
||||
//! \param[in] x Local coordinate of evaluation point
|
||||
//! \param[out] vals Values in local point in given element
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "ItgPoint.h"
|
||||
#include "CoordinateMapping.h"
|
||||
#include "Utilities.h"
|
||||
#include "Vec3.h"
|
||||
|
||||
|
||||
SplineFields3Dmx::SplineFields3Dmx (const ASMs3Dmx* patch,
|
||||
@ -48,6 +49,21 @@ bool SplineFields3Dmx::valueNode (size_t node, Vector& vals) const
|
||||
}
|
||||
|
||||
|
||||
bool SplineFields3Dmx::valueCoor (const Vec4& x, Vector& vals) const
|
||||
{
|
||||
if (x.u)
|
||||
return this->valueFE(ItgPoint(x.u[0],x.u[1],x.u[2]),vals);
|
||||
|
||||
// Use with caution, very slow!
|
||||
Go::Point pt(x.x,x.y,x.z), clopt(3);
|
||||
double clo_u, clo_v, clo_w, dist;
|
||||
#pragma omp critical
|
||||
svol->getBasis(1)->closestPoint(pt, clo_u, clo_v, clo_w, clopt, dist, 1.0e-5);
|
||||
|
||||
return this->valueFE(ItgPoint(clo_u,clo_v,clo_w),vals);
|
||||
}
|
||||
|
||||
|
||||
bool SplineFields3Dmx::valueFE (const ItgPoint& x, Vector& vals) const
|
||||
{
|
||||
if (!svol) return false;
|
||||
|
@ -52,6 +52,11 @@ public:
|
||||
//! \param[out] vals Node values
|
||||
bool valueNode(size_t node, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given global coordinate.
|
||||
//! \param[in] x Global/physical coordinate for point
|
||||
//! \param[out] vals Values in given physical coordinate
|
||||
virtual bool valueCoor(const Vec4& x, Vector& vals) const;
|
||||
|
||||
//! \brief Computes the value at a given local coordinate.
|
||||
//! \param[in] x Local coordinate of evaluation point
|
||||
//! \param[out] vals Values in local point in given element
|
||||
|
Loading…
Reference in New Issue
Block a user