Generalized floating point type. So far, ex1 works for a serial build without lapack.
This commit is contained in:
+15
-15
@@ -31,7 +31,7 @@ H1Ser_QuadrilateralElement::H1Ser_QuadrilateralElement(const int p)
|
||||
TensorBasisElement::DofMapType::Sr_DOF_MAP);
|
||||
const Array<int> tp_dof_map = tbeTemp.GetDofMap();
|
||||
|
||||
const double *cp = poly1d.ClosedPoints(p, BasisType::GaussLobatto);
|
||||
const fptype *cp = poly1d.ClosedPoints(p, BasisType::GaussLobatto);
|
||||
|
||||
// Fixing the Nodes is exactly the same as the H1_QuadrilateralElement
|
||||
// constructor except we only use those values of the associated tensor
|
||||
@@ -57,7 +57,7 @@ void H1Ser_QuadrilateralElement::CalcShape(const IntegrationPoint &ip,
|
||||
Vector &shape) const
|
||||
{
|
||||
int p = (this)->GetOrder();
|
||||
double x = ip.x, y = ip.y;
|
||||
fptype x = ip.x, y = ip.y;
|
||||
|
||||
Poly_1D::Basis edgeNodalBasis(poly1d.GetBasis(p, BasisType::GaussLobatto));
|
||||
Vector nodalX(p+1);
|
||||
@@ -80,17 +80,17 @@ void H1Ser_QuadrilateralElement::CalcShape(const IntegrationPoint &ip,
|
||||
Vector bilinearsAtIP(4);
|
||||
bilinear.CalcShape(ip, bilinearsAtIP);
|
||||
|
||||
const double *edgePts(poly1d.ClosedPoints(p, BasisType::GaussLobatto));
|
||||
const fptype *edgePts(poly1d.ClosedPoints(p, BasisType::GaussLobatto));
|
||||
|
||||
// Next, set the shape function associated with vertex V, evaluated at (x,y)
|
||||
// to be: bilinear function associated to V, evaluated at (x,y) - sum (shape
|
||||
// function at edge point P, weighted by bilinear function for V evaluated at
|
||||
// P) where the sum is taken only for points P on edges incident to V.
|
||||
|
||||
double vtx0fix =0;
|
||||
double vtx1fix =0;
|
||||
double vtx2fix =0;
|
||||
double vtx3fix =0;
|
||||
fptype vtx0fix =0;
|
||||
fptype vtx1fix =0;
|
||||
fptype vtx2fix =0;
|
||||
fptype vtx3fix =0;
|
||||
for (int i = 0; i<p-1; i++)
|
||||
{
|
||||
vtx0fix += (1-edgePts[i+1])*(shape(4 + i) +
|
||||
@@ -111,8 +111,8 @@ void H1Ser_QuadrilateralElement::CalcShape(const IntegrationPoint &ip,
|
||||
// bubble functions.
|
||||
if (p > 3)
|
||||
{
|
||||
double *legX = new double[p-1];
|
||||
double *legY = new double[p-1];
|
||||
fptype *legX = new fptype[p-1];
|
||||
fptype *legY = new fptype[p-1];
|
||||
Poly_1D *storeLegendre = new Poly_1D();
|
||||
|
||||
storeLegendre->CalcLegendre(p-2, x, legX);
|
||||
@@ -139,7 +139,7 @@ void H1Ser_QuadrilateralElement::CalcDShape(const IntegrationPoint &ip,
|
||||
DenseMatrix &dshape) const
|
||||
{
|
||||
int p = (this)->GetOrder();
|
||||
double x = ip.x, y = ip.y;
|
||||
fptype x = ip.x, y = ip.y;
|
||||
|
||||
Poly_1D::Basis edgeNodalBasis(poly1d.GetBasis(p, BasisType::GaussLobatto));
|
||||
Vector nodalX(p+1);
|
||||
@@ -166,7 +166,7 @@ void H1Ser_QuadrilateralElement::CalcDShape(const IntegrationPoint &ip,
|
||||
DenseMatrix DbilinearsAtIP(4);
|
||||
bilinear.CalcDShape(ip, DbilinearsAtIP);
|
||||
|
||||
const double *edgePts(poly1d.ClosedPoints(p, BasisType::GaussLobatto));
|
||||
const fptype *edgePts(poly1d.ClosedPoints(p, BasisType::GaussLobatto));
|
||||
|
||||
dshape(0,0) = DbilinearsAtIP(0,0);
|
||||
dshape(0,1) = DbilinearsAtIP(0,1);
|
||||
@@ -199,10 +199,10 @@ void H1Ser_QuadrilateralElement::CalcDShape(const IntegrationPoint &ip,
|
||||
|
||||
if (p > 3)
|
||||
{
|
||||
double *legX = new double[p-1];
|
||||
double *legY = new double[p-1];
|
||||
double *DlegX = new double[p-1];
|
||||
double *DlegY = new double[p-1];
|
||||
fptype *legX = new fptype[p-1];
|
||||
fptype *legY = new fptype[p-1];
|
||||
fptype *DlegX = new fptype[p-1];
|
||||
fptype *DlegY = new fptype[p-1];
|
||||
Poly_1D *storeLegendre = new Poly_1D();
|
||||
|
||||
storeLegendre->CalcLegendre(p-2, x, legX, DlegX);
|
||||
|
||||
Reference in New Issue
Block a user