/usr/include/gmsh/ParamCoord.h is in libgmsh-dev 2.8.3+dfsg-4ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | // Copyright (C) 2013 ULg-UCL
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, and/or sell copies of the
// Software, and to permit persons to whom the Software is furnished
// to do so, provided that the above copyright notice(s) and this
// permission notice appear in all copies of the Software and that
// both the above copyright notice(s) and this permission notice
// appear in supporting documentation.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE
// COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR
// ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
// DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
// OF THIS SOFTWARE.
//
// Please report all bugs and problems to the public mailing list
// <gmsh@geuz.org>.
//
// Contributors: Thomas Toulorge, Jonathan Lambrechts
#ifndef _PARAMCOORD_H_
#define _PARAMCOORD_H_
class ParamCoord
{
public:
virtual void exportParamCoord(MVertex *v, const SPoint3 &uvw) {};
// Number of parametric coordinates for vertex
virtual int nCoord(MVertex* vert) = 0;
// Get parametric coordinates of vertex
virtual SPoint3 getUvw(MVertex* vert) = 0;
// Calculate physical coordinates from parametric coordinates of vertex
virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw) = 0;
// Calculate derivatives w.r.t parametric coordinates
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw,
const SPoint3 &gXyz, SPoint3 &gUvw) = 0;
// Calculate derivatives w.r.t parametric coordinates
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw,
const std::vector<SPoint3> &gXyz, std::vector<SPoint3> &gUvw) = 0;
virtual ~ParamCoord() {}
};
class ParamCoordPhys3D : public ParamCoord
{
public:
int nCoord(MVertex* vert) { return 3; }
virtual SPoint3 getUvw(MVertex* vert) { return vert->point(); }
virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw) { return uvw; }
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw, const SPoint3 &gXyz,
SPoint3 &gUvw){ gUvw = gXyz; }
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw,
const std::vector<SPoint3> &gXyz, std::vector<SPoint3> &gUvw)
{
std::vector<SPoint3>::iterator itUvw=gUvw.begin();
for (std::vector<SPoint3>::const_iterator itXyz=gXyz.begin(); itXyz != gXyz.end();
itXyz++) {
*itUvw = *itXyz;
itUvw++;
}
}
};
class ParamCoordPhys2D : public ParamCoord
{
public:
int nCoord(MVertex* vert) { return 2; }
virtual SPoint3 getUvw(MVertex* vert) { return vert->point(); }
virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw) { return uvw; }
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw, const SPoint3 &gXyz,
SPoint3 &gUvw) { gUvw = gXyz; }
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw,
const std::vector<SPoint3> &gXyz, std::vector<SPoint3> &gUvw)
{
std::vector<SPoint3>::iterator itUvw=gUvw.begin();
for (std::vector<SPoint3>::const_iterator itXyz=gXyz.begin(); itXyz != gXyz.end();
itXyz++) {
*itUvw = *itXyz;
itUvw++;
}
}
};
class ParamCoordParent : public ParamCoord
{
public:
int nCoord(MVertex* vert) { return vert->onWhat()->haveParametrization() ? vert->onWhat()->dim() : 0; }
virtual void exportParamCoord(MVertex *v, const SPoint3 &uvw);
virtual SPoint3 getUvw(MVertex* vert);
virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw);
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw, const SPoint3 &gXyz,
SPoint3 &gUvw);
virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw,
const std::vector<SPoint3> &gXyz, std::vector<SPoint3> &gUvw);
};
#endif
|