diff --git a/src/mesh/blockMesh/Make/files b/src/mesh/blockMesh/Make/files index cda173e1f6..28410a1141 100644 --- a/src/mesh/blockMesh/Make/files +++ b/src/mesh/blockMesh/Make/files @@ -7,6 +7,7 @@ curvedEdges/curvedEdge.C curvedEdges/lineEdge.C curvedEdges/polyLineEdge.C curvedEdges/lineDivide.C +curvedEdges/BSplineEdge.C curvedEdges/splineEdge.C blockDescriptor/blockDescriptor.C diff --git a/src/mesh/blockMesh/curvedEdges/BSplineEdge.C b/src/mesh/blockMesh/curvedEdges/BSplineEdge.C new file mode 100644 index 0000000000..dca88f3194 --- /dev/null +++ b/src/mesh/blockMesh/curvedEdges/BSplineEdge.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "BSplineEdge.H" +#include "addToRunTimeSelectionTable.H" + + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(BSplineEdge, 0); + + addToRunTimeSelectionTable + ( + curvedEdge, + BSplineEdge, + Istream + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::BSplineEdge::BSplineEdge +( + const pointField& points, + const label start, + const label end, + const pointField& internalPoints +) +: + curvedEdge(points, start, end), + BSpline(appendEndPoints(points, start, end, internalPoints)) +{} + + +Foam::BSplineEdge::BSplineEdge(const pointField& points, Istream& is) +: + curvedEdge(points, is), + BSpline(appendEndPoints(points, start_, end_, pointField(is))) +{ + token t(is); + is.putBack(t); + + // discard unused start/end tangents + if (t == token::BEGIN_LIST) + { + vector tangent0Ignored(is); + vector tangent1Ignored(is); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::BSplineEdge::~BSplineEdge() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::point Foam::BSplineEdge::position(const scalar mu) const +{ + return BSpline::position(mu); +} + + +Foam::scalar Foam::BSplineEdge::length() const +{ + return BSpline::length(); +} + + +// ************************************************************************* // diff --git a/src/mesh/blockMesh/curvedEdges/BSplineEdge.H b/src/mesh/blockMesh/curvedEdges/BSplineEdge.H new file mode 100644 index 0000000000..bb1fc553cc --- /dev/null +++ b/src/mesh/blockMesh/curvedEdges/BSplineEdge.H @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::BSplineEdge + +Description + A curvedEdge interface for B-splines. + +SourceFiles + BSplineEdge.C + +\*---------------------------------------------------------------------------*/ + +#ifndef BSplineEdge_H +#define BSplineEdge_H + +#include "curvedEdge.H" +#include "BSpline.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class BSplineEdge Declaration +\*---------------------------------------------------------------------------*/ + +class BSplineEdge +: + public curvedEdge, + public BSpline +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + BSplineEdge(const BSplineEdge&); + + //- Disallow default bitwise assignment + void operator=(const BSplineEdge&); + + +public: + + //- Runtime type information + TypeName("BSpline"); + + + // Constructors + + //- Construct from components + BSplineEdge + ( + const pointField&, + const label start, + const label end, + const pointField& internalPoints + ); + + //- Construct from Istream, setting pointsList + BSplineEdge(const pointField&, Istream&); + + + //- Destructor + virtual ~BSplineEdge(); + + + // Member Functions + + //- Return the point position corresponding to the curve parameter + // 0 <= lambda <= 1 + virtual point position(const scalar) const; + + //- Return the length of the spline curve (not implemented) + virtual scalar length() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //