cad/gmsh: upgrade to 4.14
Changelog at https://gitlab.onelab.info/gmsh/gmsh/blob/master/CHANGELOG.txt
This commit is contained in:
+1
-2
@@ -1,6 +1,5 @@
|
||||
PORTNAME= gmsh
|
||||
DISTVERSION= 4.13.1
|
||||
PORTREVISION= 6
|
||||
DISTVERSION= 4.14.0
|
||||
CATEGORIES= cad
|
||||
MASTER_SITES= http://gmsh.info/src/
|
||||
DISTNAME= ${PORTNAME}-${PORTVERSION}-source
|
||||
|
||||
+3
-3
@@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1718914009
|
||||
SHA256 (gmsh/gmsh-4.13.1-source.tgz) = 77972145f431726026d50596a6a44fb3c1c95c21255218d66955806b86edbe8d
|
||||
SIZE (gmsh/gmsh-4.13.1-source.tgz) = 18383962
|
||||
TIMESTAMP = 1753978269
|
||||
SHA256 (gmsh/gmsh-4.14.0-source.tgz) = db4d7da2062e9a4356a820832138ab99f97af6388bfeb21599a2eadfb0b76a28
|
||||
SIZE (gmsh/gmsh-4.14.0-source.tgz) = 18458158
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- CMakeLists.txt.orig 2024-05-07 15:55:05 UTC
|
||||
+++ CMakeLists.txt
|
||||
@@ -834,7 +834,7 @@ if(ENABLE_TINYXML2)
|
||||
endif()
|
||||
|
||||
if(ENABLE_TINYXML2)
|
||||
- find_library(TINYXML2_LIB mathex PATH_SUFFIXES lib)
|
||||
+ find_library(TINYXML2_LIB tinyxml2 PATH_SUFFIXES lib)
|
||||
find_path(TINYXML2_INC "tinyxml2.h" PATH_SUFFIXES src include)
|
||||
if(ENABLE_SYSTEM_CONTRIB AND TINYXML2_LIB AND TINYXML2_INC)
|
||||
list(APPEND EXTERNAL_LIBRARIES ${TINYXML2_LIB})
|
||||
@@ -1,41 +0,0 @@
|
||||
--- contrib/HighOrderMeshOptimizer/HighOrderMeshElasticAnalogy.cpp.orig 2024-03-29 22:06:53 UTC
|
||||
+++ contrib/HighOrderMeshOptimizer/HighOrderMeshElasticAnalogy.cpp
|
||||
@@ -242,25 +242,25 @@ void highOrderTools::_computeMetricInfo(GFace *gf, MEl
|
||||
for(int j = 0; j < nbNodes; j++) {
|
||||
SPoint2 param;
|
||||
reparamMeshVertexOnFace(e->getVertex(j), gf, param);
|
||||
- Pair<SVector3, SVector3> der = gf->firstDer(param);
|
||||
+ std::pair<SVector3, SVector3> der = gf->firstDer(param);
|
||||
int XJ = j;
|
||||
int YJ = j + nbNodes;
|
||||
int ZJ = j + 2 * nbNodes;
|
||||
int UJ = j;
|
||||
int VJ = j + nbNodes;
|
||||
- J(XJ, UJ) = der.first().x();
|
||||
- J(YJ, UJ) = der.first().y();
|
||||
- J(ZJ, UJ) = der.first().z();
|
||||
- J(XJ, VJ) = der.second().x();
|
||||
- J(YJ, VJ) = der.second().y();
|
||||
- J(ZJ, VJ) = der.second().z();
|
||||
+ J(XJ, UJ) = der.first.x();
|
||||
+ J(YJ, UJ) = der.first.y();
|
||||
+ J(ZJ, UJ) = der.first.z();
|
||||
+ J(XJ, VJ) = der.second.x();
|
||||
+ J(YJ, VJ) = der.second.y();
|
||||
+ J(ZJ, VJ) = der.second.z();
|
||||
|
||||
- JT(UJ, XJ) = der.first().x();
|
||||
- JT(UJ, YJ) = der.first().y();
|
||||
- JT(UJ, ZJ) = der.first().z();
|
||||
- JT(VJ, XJ) = der.second().x();
|
||||
- JT(VJ, YJ) = der.second().y();
|
||||
- JT(VJ, ZJ) = der.second().z();
|
||||
+ JT(UJ, XJ) = der.first.x();
|
||||
+ JT(UJ, YJ) = der.first.y();
|
||||
+ JT(UJ, ZJ) = der.first.z();
|
||||
+ JT(VJ, XJ) = der.second.x();
|
||||
+ JT(VJ, YJ) = der.second.y();
|
||||
+ JT(VJ, ZJ) = der.second.z();
|
||||
|
||||
SVector3 ss = getSSL(e->getVertex(j));
|
||||
GPoint gp = gf->point(param);
|
||||
@@ -1,42 +0,0 @@
|
||||
--- contrib/MeshOptimizer/VertexCoord.cpp.orig 2024-03-29 22:06:54 UTC
|
||||
+++ contrib/MeshOptimizer/VertexCoord.cpp
|
||||
@@ -76,12 +76,12 @@ void VertexCoordParent::gXyz2gUvw(const SPoint3 &uvw,
|
||||
gUvw[0] = gXyz.x() * der.x() + gXyz.y() * der.y() + gXyz.z() * der.z();
|
||||
}
|
||||
else {
|
||||
- Pair<SVector3, SVector3> der =
|
||||
+ std::pair<SVector3, SVector3> der =
|
||||
static_cast<GFace *>(ge)->firstDer(SPoint2(uvw[0], uvw[1]));
|
||||
- gUvw[0] = gXyz.x() * der.first().x() + gXyz.y() * der.first().y() +
|
||||
- gXyz.z() * der.first().z();
|
||||
- gUvw[1] = gXyz.x() * der.second().x() + gXyz.y() * der.second().y() +
|
||||
- gXyz.z() * der.second().z();
|
||||
+ gUvw[0] = gXyz.x() * der.first.x() + gXyz.y() * der.first.y() +
|
||||
+ gXyz.z() * der.first.z();
|
||||
+ gUvw[1] = gXyz.x() * der.second.x() + gXyz.y() * der.second.y() +
|
||||
+ gXyz.z() * der.second.z();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,15 +101,15 @@ void VertexCoordParent::gXyz2gUvw(const SPoint3 &uvw,
|
||||
}
|
||||
}
|
||||
else {
|
||||
- Pair<SVector3, SVector3> der =
|
||||
+ std::pair<SVector3, SVector3> der =
|
||||
static_cast<GFace *>(ge)->firstDer(SPoint2(uvw[0], uvw[1]));
|
||||
auto itUvw = gUvw.begin();
|
||||
for(auto itXyz = gXyz.begin(); itXyz != gXyz.end(); itXyz++) {
|
||||
- (*itUvw)[0] = itXyz->x() * der.first().x() +
|
||||
- itXyz->y() * der.first().y() + itXyz->z() * der.first().z();
|
||||
- (*itUvw)[1] = itXyz->x() * der.second().x() +
|
||||
- itXyz->y() * der.second().y() +
|
||||
- itXyz->z() * der.second().z();
|
||||
+ (*itUvw)[0] = itXyz->x() * der.first.x() +
|
||||
+ itXyz->y() * der.first.y() + itXyz->z() * der.first.z();
|
||||
+ (*itUvw)[1] = itXyz->x() * der.second.x() +
|
||||
+ itXyz->y() * der.second.y() +
|
||||
+ itXyz->z() * der.second.z();
|
||||
itUvw++;
|
||||
}
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
--- contrib/domhex/BackgroundMesh2D.cpp.orig 2024-03-29 22:06:54 UTC
|
||||
+++ contrib/domhex/BackgroundMesh2D.cpp
|
||||
@@ -490,9 +490,9 @@ void frameFieldBackgroundMesh2D::computeCrossField(
|
||||
v[1] = (*it)->lines[i]->getVertex(1);
|
||||
SPoint2 p1, p2;
|
||||
reparamMeshEdgeOnFace(v[0], v[1], face, p1, p2);
|
||||
- Pair<SVector3, SVector3> der = face->firstDer((p1 + p2) * .5);
|
||||
- SVector3 t1 = der.first();
|
||||
- SVector3 t2 = der.second();
|
||||
+ std::pair<SVector3, SVector3> der = face->firstDer((p1 + p2) * .5);
|
||||
+ SVector3 t1 = der.first;
|
||||
+ SVector3 t2 = der.second;
|
||||
SVector3 n = crossprod(t1, t2);
|
||||
n.normalize();
|
||||
SVector3 d1(v[1]->x() - v[0]->x(), v[1]->y() - v[0]->y(),
|
||||
@@ -534,21 +534,21 @@ void frameFieldBackgroundMesh2D::eval_crossfield(doubl
|
||||
STensor3 &cf)
|
||||
{
|
||||
double quadAngle = angle(u, v);
|
||||
- Pair<SVector3, SVector3> dirs =
|
||||
+ std::pair<SVector3, SVector3> dirs =
|
||||
compute_crossfield_directions(u, v, quadAngle);
|
||||
- SVector3 n = crossprod(dirs.first(), dirs.second());
|
||||
+ SVector3 n = crossprod(dirs.first, dirs.second);
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
- cf(i, 0) = dirs.first()[i];
|
||||
- cf(i, 1) = dirs.second()[i];
|
||||
+ cf(i, 0) = dirs.first[i];
|
||||
+ cf(i, 1) = dirs.second[i];
|
||||
cf(i, 2) = n[i];
|
||||
}
|
||||
|
||||
// SVector3 t1,t2,n;
|
||||
// GFace *face = dynamic_cast<GFace*>(gf);
|
||||
- // Pair<SVector3, SVector3> der = face->firstDer(SPoint2(u,v));
|
||||
- // SVector3 s1 = der.first();
|
||||
- // SVector3 s2 = der.second();
|
||||
+ // std::pair<SVector3, SVector3> der = face->firstDer(SPoint2(u,v));
|
||||
+ // SVector3 s1 = der.first;
|
||||
+ // SVector3 s2 = der.second;
|
||||
// n = crossprod(s1,s2);
|
||||
// n.normalize();
|
||||
// s1.normalize();
|
||||
@@ -642,12 +642,12 @@ void frameFieldBackgroundMesh2D::exportCrossField(cons
|
||||
double angle_current = angle(v);
|
||||
GPoint p = get_GPoint_from_MVertex(v);
|
||||
for(int i = 0; i < 2; i++) {
|
||||
- Pair<SVector3, SVector3> dirs = compute_crossfield_directions(
|
||||
+ std::pair<SVector3, SVector3> dirs = compute_crossfield_directions(
|
||||
v->x(), v->y(), angle_current + deltas[i]);
|
||||
fprintf(f, "VP(%g,%g,%g) {%g,%g,%g};\n", p.x(), p.y(), p.z(),
|
||||
- dirs.first()[0], dirs.first()[1], dirs.first()[2]);
|
||||
+ dirs.first[0], dirs.first[1], dirs.first[2]);
|
||||
fprintf(f, "VP(%g,%g,%g) {%g,%g,%g};\n", p.x(), p.y(), p.z(),
|
||||
- dirs.second()[0], dirs.second()[1], dirs.second()[2]);
|
||||
+ dirs.second[0], dirs.second[1], dirs.second[2]);
|
||||
}
|
||||
}
|
||||
fprintf(f, "};\n");
|
||||
@@ -656,7 +656,7 @@ void frameFieldBackgroundMesh2D::exportCrossField(cons
|
||||
|
||||
// returns the cross field as a pair of othogonal vectors (NOT in parametric
|
||||
// coordinates, but real 3D coordinates)
|
||||
-Pair<SVector3, SVector3>
|
||||
+std::pair<SVector3, SVector3>
|
||||
frameFieldBackgroundMesh2D::compute_crossfield_directions(double u, double v,
|
||||
double angle_current)
|
||||
{
|
||||
@@ -664,12 +664,12 @@ frameFieldBackgroundMesh2D::compute_crossfield_directi
|
||||
GFace *face = dynamic_cast<GFace *>(gf);
|
||||
if(!face) {
|
||||
Msg::Error("Entity is not a face in background mesh");
|
||||
- return Pair<SVector3, SVector3>(SVector3(), SVector3());
|
||||
+ return std::pair<SVector3, SVector3>(SVector3(), SVector3());
|
||||
}
|
||||
|
||||
- Pair<SVector3, SVector3> der = face->firstDer(SPoint2(u, v));
|
||||
- SVector3 s1 = der.first();
|
||||
- SVector3 s2 = der.second();
|
||||
+ std::pair<SVector3, SVector3> der = face->firstDer(SPoint2(u, v));
|
||||
+ SVector3 s1 = der.first;
|
||||
+ SVector3 s2 = der.second;
|
||||
SVector3 n = crossprod(s1, s2);
|
||||
n.normalize();
|
||||
|
||||
@@ -687,8 +687,8 @@ frameFieldBackgroundMesh2D::compute_crossfield_directi
|
||||
SVector3 t2 = crossprod(n, t1);
|
||||
t2.normalize();
|
||||
|
||||
- return Pair<SVector3, SVector3>(SVector3(t1[0], t1[1], t1[2]),
|
||||
- SVector3(t2[0], t2[1], t2[2]));
|
||||
+ return std::pair<SVector3, SVector3>(SVector3(t1[0], t1[1], t1[2]),
|
||||
+ SVector3(t2[0], t2[1], t2[2]));
|
||||
}
|
||||
|
||||
bool frameFieldBackgroundMesh2D::compute_RK_infos(double u, double v, double x,
|
||||
@@ -711,9 +711,9 @@ bool frameFieldBackgroundMesh2D::compute_RK_infos(doub
|
||||
return false;
|
||||
}
|
||||
|
||||
- Pair<SVector3, SVector3> der = face->firstDer(SPoint2(u, v));
|
||||
- SVector3 s1 = der.first();
|
||||
- SVector3 s2 = der.second();
|
||||
+ std::pair<SVector3, SVector3> der = face->firstDer(SPoint2(u, v));
|
||||
+ SVector3 s1 = der.first;
|
||||
+ SVector3 s2 = der.second;
|
||||
SVector3 n = crossprod(s1, s2);
|
||||
n.normalize();
|
||||
SVector3 basis_u = s1;
|
||||
@@ -1,23 +0,0 @@
|
||||
--- contrib/domhex/BackgroundMesh2D.h.orig 2024-03-29 22:06:54 UTC
|
||||
+++ contrib/domhex/BackgroundMesh2D.h
|
||||
@@ -9,9 +9,7 @@
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
-#include "Pair.h"
|
||||
#include "STensor3.h"
|
||||
-
|
||||
#include "BGMBase.h"
|
||||
|
||||
class MTriangle;
|
||||
@@ -133,8 +131,8 @@ class frameFieldBackgroundMesh2D : public backgroundMe
|
||||
void eval_crossfield(MVertex *vert, STensor3 &cf);
|
||||
|
||||
void exportCrossField(const std::string &filename);
|
||||
- Pair<SVector3, SVector3> compute_crossfield_directions(double u, double v,
|
||||
- double angle_current);
|
||||
+ std::pair<SVector3, SVector3> compute_crossfield_directions(double u, double v,
|
||||
+ double angle_current);
|
||||
bool compute_RK_infos(double u, double v, double x, double y, double z,
|
||||
RK_form &infos);
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
--- contrib/domhex/surfaceFiller.cpp.orig 2024-03-29 22:06:54 UTC
|
||||
+++ contrib/domhex/surfaceFiller.cpp
|
||||
@@ -85,10 +85,10 @@ bool compute4neighbors(
|
||||
metricField = SMetric3(1. / (L * L));
|
||||
|
||||
// get the unit normal at that point
|
||||
- Pair<SVector3, SVector3> der =
|
||||
+ std::pair<SVector3, SVector3> der =
|
||||
gf->firstDer(SPoint2(midpoint[0], midpoint[1]));
|
||||
- SVector3 s1 = der.first();
|
||||
- SVector3 s2 = der.second();
|
||||
+ SVector3 s1 = der.first;
|
||||
+ SVector3 s2 = der.second;
|
||||
SVector3 n = crossprod(s1, s2);
|
||||
n.normalize();
|
||||
t1 -= n*dot(t1,n);
|
||||
@@ -259,10 +259,10 @@ bool compute4neighbors(
|
||||
// // 0
|
||||
|
||||
// // get the unit normal at that point
|
||||
-// Pair<SVector3, SVector3> der =
|
||||
+// std::pair<SVector3, SVector3> der =
|
||||
// gf->firstDer(SPoint2(midpoint[0], midpoint[1]));
|
||||
-// SVector3 s1 = der.first();
|
||||
-// SVector3 s2 = der.second();
|
||||
+// SVector3 s1 = der.first;
|
||||
+// SVector3 s2 = der.second;
|
||||
// SVector3 n = crossprod(s1, s2);
|
||||
// n.normalize();
|
||||
|
||||
@@ -490,7 +490,7 @@ void packingOfParallelograms(GFace *gf, std::vector<MV
|
||||
double du[4] = {0,0,0,0}, dv[4]= {0,0,0,0};
|
||||
|
||||
// printf("cop %d\n",(*it)->getNum());
|
||||
-
|
||||
+
|
||||
for (int i=0;i<2;i++){
|
||||
if (gf->periodic(i)){
|
||||
reparamMeshVertexOnFace(*it, gf, midpoint);
|
||||
@@ -513,7 +513,7 @@ void packingOfParallelograms(GFace *gf, std::vector<MV
|
||||
}
|
||||
|
||||
if (NP == 0)NP=1;
|
||||
-
|
||||
+
|
||||
for (int i=0;i<NP;i++){
|
||||
bool singular = !compute4neighbors(gf, *it, midpoint, newp, metricField, cross_field, du[i],dv[i],globalMult );
|
||||
// printf("there %d %g %g\n",singular,du[i],dv[i]);
|
||||
@@ -1,32 +0,0 @@
|
||||
--- src/common/gmsh.cpp.orig 2024-05-05 07:36:23 UTC
|
||||
+++ src/common/gmsh.cpp
|
||||
@@ -443,7 +443,7 @@ GMSH_API void gmsh::model::getEntitiesForPhysicalName(
|
||||
GModel::current()->getEntitiesForPhysicalName(name, entities);
|
||||
if(entities.size() != 0) {
|
||||
for(auto ge : entities) {
|
||||
- dimTags.push_back(std::pair<int, int >(ge->dim(), ge->tag()));
|
||||
+ dimTags.push_back(std::make_pair(ge->dim(), ge->tag()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -847,13 +847,13 @@ gmsh::model::getDerivative(const int dim, const int ta
|
||||
GFace *gf = static_cast<GFace *>(entity);
|
||||
for(std::size_t i = 0; i < parametricCoord.size(); i += 2) {
|
||||
SPoint2 param(parametricCoord[i], parametricCoord[i + 1]);
|
||||
- Pair<SVector3, SVector3> d = gf->firstDer(param);
|
||||
- deriv.push_back(d.left().x());
|
||||
- deriv.push_back(d.left().y());
|
||||
- deriv.push_back(d.left().z());
|
||||
- deriv.push_back(d.right().x());
|
||||
- deriv.push_back(d.right().y());
|
||||
- deriv.push_back(d.right().z());
|
||||
+ std::pair<SVector3, SVector3> d = gf->firstDer(param);
|
||||
+ deriv.push_back(d.first.x());
|
||||
+ deriv.push_back(d.first.y());
|
||||
+ deriv.push_back(d.first.z());
|
||||
+ deriv.push_back(d.second.x());
|
||||
+ deriv.push_back(d.second.y());
|
||||
+ deriv.push_back(d.second.z());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
--- src/geo/GFace.cpp.orig 2024-03-29 22:07:00 UTC
|
||||
+++ src/geo/GFace.cpp
|
||||
@@ -880,10 +880,10 @@ double GFace::curvatureDiv(const SPoint2 ¶m) const
|
||||
|
||||
const double eps = 1.e-5;
|
||||
|
||||
- Pair<SVector3, SVector3> der = firstDer(param);
|
||||
+ std::pair<SVector3, SVector3> der = firstDer(param);
|
||||
|
||||
- SVector3 du = der.first();
|
||||
- SVector3 dv = der.second();
|
||||
+ SVector3 du = der.first;
|
||||
+ SVector3 dv = der.second;
|
||||
SVector3 nml = crossprod(du, dv);
|
||||
|
||||
double detJ = norm(nml);
|
||||
@@ -937,19 +937,19 @@ double GFace::curvatures(const SPoint2 ¶m, SVector
|
||||
SVector3 &dirMin, double &curvMax,
|
||||
double &curvMin) const
|
||||
{
|
||||
- Pair<SVector3, SVector3> D1 = firstDer(param);
|
||||
+ std::pair<SVector3, SVector3> D1 = firstDer(param);
|
||||
|
||||
if(geomType() == Plane || geomType() == BoundaryLayerSurface) {
|
||||
- dirMax = D1.first();
|
||||
- dirMin = D1.second();
|
||||
+ dirMax = D1.first;
|
||||
+ dirMin = D1.second;
|
||||
curvMax = 0.;
|
||||
curvMin = 0.;
|
||||
return 0.;
|
||||
}
|
||||
|
||||
if(geomType() == Sphere) {
|
||||
- dirMax = D1.first();
|
||||
- dirMin = D1.second();
|
||||
+ dirMax = D1.first;
|
||||
+ dirMin = D1.second;
|
||||
curvMax = curvatureDiv(param);
|
||||
curvMin = curvMax;
|
||||
return curvMax;
|
||||
@@ -961,8 +961,8 @@ double GFace::curvatures(const SPoint2 ¶m, SVector
|
||||
// curvatures and main directions
|
||||
curvMax = fabs(eigVal[1]);
|
||||
curvMin = fabs(eigVal[0]);
|
||||
- dirMax = eigVec[1] * D1.first() + eigVec[3] * D1.second();
|
||||
- dirMin = eigVec[0] * D1.first() + eigVec[2] * D1.second();
|
||||
+ dirMax = eigVec[1] * D1.first + eigVec[3] * D1.second;
|
||||
+ dirMin = eigVec[0] * D1.first + eigVec[2] * D1.second;
|
||||
|
||||
return curvMax;
|
||||
}
|
||||
@@ -979,9 +979,9 @@ void GFace::getMetricEigenVectors(const SPoint2 ¶m
|
||||
double eigVec[4]) const
|
||||
{
|
||||
// first derivatives
|
||||
- Pair<SVector3, SVector3> D1 = firstDer(param);
|
||||
- SVector3 du = D1.first();
|
||||
- SVector3 dv = D1.second();
|
||||
+ std::pair<SVector3, SVector3> D1 = firstDer(param);
|
||||
+ SVector3 du = D1.first;
|
||||
+ SVector3 dv = D1.second;
|
||||
SVector3 nor = crossprod(du, dv);
|
||||
nor.normalize();
|
||||
|
||||
@@ -1088,13 +1088,13 @@ void GFace::XYZtoUV(double X, double Y, double Z, doub
|
||||
|
||||
while(err > tol && iter < MaxIter) {
|
||||
P = point(U, V);
|
||||
- Pair<SVector3, SVector3> der = firstDer(SPoint2(U, V));
|
||||
- mat[0][0] = der.left().x();
|
||||
- mat[0][1] = der.left().y();
|
||||
- mat[0][2] = der.left().z();
|
||||
- mat[1][0] = der.right().x();
|
||||
- mat[1][1] = der.right().y();
|
||||
- mat[1][2] = der.right().z();
|
||||
+ std::pair<SVector3, SVector3> der = firstDer(SPoint2(U, V));
|
||||
+ mat[0][0] = der.first.x();
|
||||
+ mat[0][1] = der.first.y();
|
||||
+ mat[0][2] = der.first.z();
|
||||
+ mat[1][0] = der.second.x();
|
||||
+ mat[1][1] = der.second.y();
|
||||
+ mat[1][2] = der.second.z();
|
||||
mat[2][0] = 0.;
|
||||
mat[2][1] = 0.;
|
||||
mat[2][2] = 0.;
|
||||
@@ -1193,15 +1193,15 @@ void bfgs_callback(const alglib::real_1d_array &x, dou
|
||||
// printf("func : %f\n", func);
|
||||
|
||||
// Value of the gradient
|
||||
- Pair<SVector3, SVector3> der = gf->firstDer(SPoint2(x[0], x[1]));
|
||||
- grad[0] = -(p.x() - pnt.x()) * der.left().x() -
|
||||
- (p.y() - pnt.y()) * der.left().y() -
|
||||
- (p.z() - pnt.z()) * der.left().z();
|
||||
- grad[1] = -(p.x() - pnt.x()) * der.right().x() -
|
||||
- (p.y() - pnt.y()) * der.right().y() -
|
||||
- (p.z() - pnt.z()) * der.right().z();
|
||||
+ std::pair<SVector3, SVector3> der = gf->firstDer(SPoint2(x[0], x[1]));
|
||||
+ grad[0] = -(p.x() - pnt.x()) * der.first.x() -
|
||||
+ (p.y() - pnt.y()) * der.first.y() -
|
||||
+ (p.z() - pnt.z()) * der.first.z();
|
||||
+ grad[1] = -(p.x() - pnt.x()) * der.second.x() -
|
||||
+ (p.y() - pnt.y()) * der.second.y() -
|
||||
+ (p.z() - pnt.z()) * der.second.z();
|
||||
// printf("func %22.15E Gradients %22.15E %22.15E der %g %g %g\n", func,
|
||||
- // grad[0], grad[1],der.left().x(),der.left().y(),der.left().z());
|
||||
+ // grad[0], grad[1],der.first.x(),der.first.y(),der.first.z());
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1296,8 +1296,8 @@ SVector3 GFace::normal(const SPoint2 ¶m) const
|
||||
{
|
||||
if(geomType() == BoundaryLayerSurface) return SVector3();
|
||||
|
||||
- Pair<SVector3, SVector3> der = firstDer(param);
|
||||
- SVector3 n = crossprod(der.first(), der.second());
|
||||
+ std::pair<SVector3, SVector3> der = firstDer(param);
|
||||
+ SVector3 n = crossprod(der.first, der.second);
|
||||
n.normalize();
|
||||
return n;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
--- src/geo/GFace.h.orig 2024-03-29 22:07:00 UTC
|
||||
+++ src/geo/GFace.h
|
||||
@@ -10,13 +10,13 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
+#include <utility>
|
||||
#include "GmshDefines.h"
|
||||
#include "GEntity.h"
|
||||
#include "GPoint.h"
|
||||
#include "GEdgeLoop.h"
|
||||
#include "SPoint2.h"
|
||||
#include "SVector3.h"
|
||||
-#include "Pair.h"
|
||||
#include "Numeric.h"
|
||||
#include "boundaryLayersData.h"
|
||||
|
||||
@@ -201,7 +201,7 @@ class GFace : public GEntity { (public)
|
||||
virtual SVector3 normal(const SPoint2 ¶m) const;
|
||||
|
||||
// return the first derivate of the face at the parameter location
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const = 0;
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const = 0;
|
||||
|
||||
// compute the second derivates of the face at the parameter location
|
||||
virtual void secondDer(const SPoint2 ¶m, SVector3 &dudu, SVector3 &dvdv,
|
||||
@@ -1,274 +0,0 @@
|
||||
--- src/geo/GeomMeshMatcher.cpp.orig 2024-03-29 22:07:00 UTC
|
||||
+++ src/geo/GeomMeshMatcher.cpp
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include "GeomMeshMatcher.h"
|
||||
-#include "Pair.h"
|
||||
#include "discreteVertex.h"
|
||||
#include "GmshMessage.h"
|
||||
#include "SOrientedBoundingBox.h"
|
||||
@@ -61,22 +60,22 @@ void getIntersection(std::vector<T> &res, std::vector<
|
||||
}
|
||||
}
|
||||
|
||||
-template <class T> T findMatching(std::vector<Pair<T, T> > &matching, T &entity)
|
||||
+template <class T> T findMatching(std::vector<std::pair<T, T> > &matching, T &entity)
|
||||
{
|
||||
for(auto pair = matching.begin(); pair != matching.end(); pair++) {
|
||||
- if((*pair).left() == entity) return ((*pair).right());
|
||||
+ if((*pair).first == entity) return ((*pair).second);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
// Matching vertices
|
||||
|
||||
-std::vector<Pair<GVertex *, GVertex *> > *
|
||||
+std::vector<std::pair<GVertex *, GVertex *> > *
|
||||
GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2, bool &ok)
|
||||
{
|
||||
// Vector that will be returned.
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v =
|
||||
- new std::vector<Pair<GVertex *, GVertex *> >;
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v =
|
||||
+ new std::vector<std::pair<GVertex *, GVertex *> >;
|
||||
int num_matched_vertices = 0;
|
||||
int num_total_vertices = m2->getNumVertices();
|
||||
|
||||
@@ -107,7 +106,7 @@ GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2,
|
||||
|
||||
if(choice && best_score != DBL_MAX) {
|
||||
choice->physicals = v1->physicals;
|
||||
- coresp_v->push_back(Pair<GVertex *, GVertex *>(v1, choice));
|
||||
+ coresp_v->push_back(std::make_pair(v1, choice));
|
||||
num_matched_vertices++;
|
||||
}
|
||||
}
|
||||
@@ -120,17 +119,17 @@ GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2,
|
||||
|
||||
// Matching edges
|
||||
|
||||
-std::vector<Pair<GEdge *, GEdge *> > *
|
||||
+std::vector<std::pair<GEdge *, GEdge *> > *
|
||||
GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v,
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v,
|
||||
bool &ok)
|
||||
{
|
||||
int num_matched_edges = 0;
|
||||
int num_total_edges = m2->getNumEdges();
|
||||
|
||||
// Vector that will be returned.
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e =
|
||||
- new std::vector<Pair<GEdge *, GEdge *> >;
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e =
|
||||
+ new std::vector<std::pair<GEdge *, GEdge *> >;
|
||||
|
||||
std::vector<GEdge *> closed_curves;
|
||||
|
||||
@@ -195,7 +194,7 @@ GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2,
|
||||
}
|
||||
}
|
||||
}
|
||||
- coresp_e->push_back(Pair<GEdge *, GEdge *>(e1, choice));
|
||||
+ coresp_e->push_back(std::make_pair(e1, choice));
|
||||
|
||||
// copy topological information
|
||||
if(choice) {
|
||||
@@ -213,16 +212,16 @@ GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2,
|
||||
|
||||
// Matching faces
|
||||
|
||||
-std::vector<Pair<GFace *, GFace *> > *
|
||||
+std::vector<std::pair<GFace *, GFace *> > *
|
||||
GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e,
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e,
|
||||
bool &ok)
|
||||
{
|
||||
int num_matched_faces = 0;
|
||||
int num_total_faces = m2->getNumFaces();
|
||||
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f =
|
||||
- new std::vector<Pair<GFace *, GFace *> >;
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f =
|
||||
+ new std::vector<std::pair<GFace *, GFace *> >;
|
||||
|
||||
for(auto fit = m1->firstFace(); fit != m1->lastFace(); fit++) {
|
||||
GFace *f1 = (GFace *)*fit;
|
||||
@@ -276,7 +275,7 @@ GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2,
|
||||
|
||||
if(choice) {
|
||||
Msg::Debug("Surfaces %i and %i match", f1->tag(), choice->tag());
|
||||
- coresp_f->push_back(Pair<GFace *, GFace *>(f1, choice));
|
||||
+ coresp_f->push_back(std::make_pair(f1, choice));
|
||||
// copy topological information
|
||||
choice->setTag(f1->tag());
|
||||
f1->physicals = choice->physicals;
|
||||
@@ -292,17 +291,17 @@ GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2,
|
||||
|
||||
// Matching regions
|
||||
|
||||
-std::vector<Pair<GRegion *, GRegion *> > *
|
||||
+std::vector<std::pair<GRegion *, GRegion *> > *
|
||||
GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f,
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f,
|
||||
bool &ok)
|
||||
|
||||
{
|
||||
int num_matched_regions = 0;
|
||||
int num_total_regions = 0;
|
||||
|
||||
- std::vector<Pair<GRegion *, GRegion *> > *coresp_r =
|
||||
- new std::vector<Pair<GRegion *, GRegion *> >;
|
||||
+ std::vector<std::pair<GRegion *, GRegion *> > *coresp_r =
|
||||
+ new std::vector<std::pair<GRegion *, GRegion *> >;
|
||||
|
||||
std::vector<GEntity *> m1_entities;
|
||||
m1->getEntities(m1_entities, 3);
|
||||
@@ -344,8 +343,7 @@ GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2,
|
||||
}
|
||||
|
||||
if(common_regions.size() == 1) {
|
||||
- coresp_r->push_back(
|
||||
- Pair<GRegion *, GRegion *>((GRegion *)*entity1, common_regions[0]));
|
||||
+ coresp_r->push_back(std::make_pair((GRegion *)*entity1, common_regions[0]));
|
||||
common_regions[0]->setTag(((GRegion *)*entity1)->tag());
|
||||
(*entity1)->physicals = common_regions[0]->physicals;
|
||||
num_matched_regions++;
|
||||
@@ -377,8 +375,7 @@ GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2,
|
||||
choice = (*candidate);
|
||||
}
|
||||
}
|
||||
- coresp_r->push_back(
|
||||
- Pair<GRegion *, GRegion *>((GRegion *)*entity1, choice));
|
||||
+ coresp_r->push_back(std::make_pair((GRegion *)*entity1, choice));
|
||||
if(choice) {
|
||||
choice->setTag(((GRegion *)*entity1)->tag());
|
||||
(*entity1)->physicals = choice->physicals;
|
||||
@@ -594,13 +591,13 @@ template <class GEType>
|
||||
}
|
||||
|
||||
template <class GEType>
|
||||
-static void copy_periodicity(std::vector<Pair<GEType *, GEType *> > &eCor,
|
||||
+static void copy_periodicity(std::vector<std::pair<GEType *, GEType *> > &eCor,
|
||||
std::map<MVertex *, MVertex *> &mesh_to_geom)
|
||||
{
|
||||
typename std::multimap<GEType *, GEType *> eMap; // (eCor.begin(),eCor.end());
|
||||
auto eIter = eCor.begin();
|
||||
for(; eIter != eCor.end(); ++eIter) {
|
||||
- eMap.insert(std::make_pair(eIter->second(), eIter->first()));
|
||||
+ eMap.insert(std::make_pair(eIter->second, eIter->first));
|
||||
}
|
||||
|
||||
auto srcIter = eMap.begin();
|
||||
@@ -651,12 +648,12 @@ template <class GEType>
|
||||
}
|
||||
|
||||
template <class GEType>
|
||||
-static bool apply_periodicity(std::vector<Pair<GEType *, GEType *> > &eCor)
|
||||
+static bool apply_periodicity(std::vector<std::pair<GEType *, GEType *> > &eCor)
|
||||
{
|
||||
typename std::multimap<GEType *, GEType *> eMap; // (eCor.begin(),eCor.end());
|
||||
auto eIter = eCor.begin();
|
||||
for(; eIter != eCor.end(); ++eIter) {
|
||||
- eMap.insert(std::make_pair(eIter->second(), eIter->first()));
|
||||
+ eMap.insert(std::make_pair(eIter->second, eIter->first));
|
||||
}
|
||||
|
||||
auto srcIter = eMap.begin();
|
||||
@@ -787,57 +784,57 @@ void copy_vertices(GModel *geom, GModel *mesh,
|
||||
|
||||
void copy_vertices(GModel *geom, GModel *mesh,
|
||||
std::map<MVertex *, MVertex *> &_mesh_to_geom,
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v,
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e,
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f,
|
||||
- std::vector<Pair<GRegion *, GRegion *> > *coresp_r)
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v,
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e,
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f,
|
||||
+ std::vector<std::pair<GRegion *, GRegion *> > *coresp_r)
|
||||
{
|
||||
// copy all elements
|
||||
for(std::size_t i = 0; i < coresp_v->size(); ++i)
|
||||
- copy_vertices((*coresp_v)[i].first(), (*coresp_v)[i].second(),
|
||||
+ copy_vertices((*coresp_v)[i].first, (*coresp_v)[i].second,
|
||||
_mesh_to_geom);
|
||||
for(std::size_t i = 0; i < coresp_e->size(); ++i)
|
||||
- copy_vertices((*coresp_e)[i].first(), (*coresp_e)[i].second(),
|
||||
+ copy_vertices((*coresp_e)[i].first, (*coresp_e)[i].second,
|
||||
_mesh_to_geom);
|
||||
for(std::size_t i = 0; i < coresp_f->size(); ++i)
|
||||
- copy_vertices((*coresp_f)[i].first(), (*coresp_f)[i].second(),
|
||||
+ copy_vertices((*coresp_f)[i].first, (*coresp_f)[i].second,
|
||||
_mesh_to_geom);
|
||||
for(std::size_t i = 0; i < coresp_r->size(); ++i)
|
||||
- copy_vertices((*coresp_r)[i].first(), (*coresp_r)[i].second(),
|
||||
+ copy_vertices((*coresp_r)[i].first, (*coresp_r)[i].second,
|
||||
_mesh_to_geom);
|
||||
}
|
||||
void copy_elements(GModel *geom, GModel *mesh,
|
||||
std::map<MVertex *, MVertex *> &_mesh_to_geom,
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v,
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e,
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f,
|
||||
- std::vector<Pair<GRegion *, GRegion *> > *coresp_r)
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v,
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e,
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f,
|
||||
+ std::vector<std::pair<GRegion *, GRegion *> > *coresp_r)
|
||||
{
|
||||
// copy all elements
|
||||
|
||||
for(std::size_t i = 0; i < coresp_v->size(); ++i) {
|
||||
- GVertex *dest = (*coresp_v)[i].first();
|
||||
- GVertex *orig = (*coresp_v)[i].second();
|
||||
+ GVertex *dest = (*coresp_v)[i].first;
|
||||
+ GVertex *orig = (*coresp_v)[i].second;
|
||||
copy_elements<MPoint>(dest->points, orig->points, _mesh_to_geom);
|
||||
}
|
||||
|
||||
for(std::size_t i = 0; i < coresp_e->size(); ++i) {
|
||||
- GEdge *dest = (*coresp_e)[i].first();
|
||||
- GEdge *orig = (*coresp_e)[i].second();
|
||||
+ GEdge *dest = (*coresp_e)[i].first;
|
||||
+ GEdge *orig = (*coresp_e)[i].second;
|
||||
copy_elements<MLine>(dest->lines, orig->lines, _mesh_to_geom);
|
||||
}
|
||||
|
||||
for(std::size_t i = 0; i < coresp_f->size(); ++i) {
|
||||
- GFace *dest = (*coresp_f)[i].first();
|
||||
- GFace *orig = (*coresp_f)[i].second();
|
||||
+ GFace *dest = (*coresp_f)[i].first;
|
||||
+ GFace *orig = (*coresp_f)[i].second;
|
||||
copy_elements<MTriangle>(dest->triangles, orig->triangles, _mesh_to_geom);
|
||||
copy_elements<MQuadrangle>(dest->quadrangles, orig->quadrangles,
|
||||
_mesh_to_geom);
|
||||
}
|
||||
|
||||
for(std::size_t i = 0; i < coresp_r->size(); ++i) {
|
||||
- GRegion *dest = (*coresp_r)[i].first();
|
||||
- GRegion *orig = (*coresp_r)[i].second();
|
||||
+ GRegion *dest = (*coresp_r)[i].first;
|
||||
+ GRegion *orig = (*coresp_r)[i].second;
|
||||
copy_elements<MTetrahedron>(dest->tetrahedra, orig->tetrahedra,
|
||||
_mesh_to_geom);
|
||||
copy_elements<MHexahedron>(dest->hexahedra, orig->hexahedra, _mesh_to_geom);
|
||||
@@ -857,10 +854,10 @@ int GeomMeshMatcher::match(GModel *geom, GModel *mesh)
|
||||
|
||||
bool ok = true;
|
||||
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v(nullptr);
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e(nullptr);
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f(nullptr);
|
||||
- std::vector<Pair<GRegion *, GRegion *> > *coresp_r(nullptr);
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v(nullptr);
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e(nullptr);
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f(nullptr);
|
||||
+ std::vector<std::pair<GRegion *, GRegion *> > *coresp_r(nullptr);
|
||||
|
||||
coresp_v = matchVertices(geom, mesh, ok);
|
||||
if(ok) {
|
||||
@@ -1,32 +0,0 @@
|
||||
--- src/geo/GeomMeshMatcher.h.orig 2024-03-29 22:07:00 UTC
|
||||
+++ src/geo/GeomMeshMatcher.h
|
||||
@@ -16,21 +16,20 @@
|
||||
#include "GEdge.h"
|
||||
#include "GFace.h"
|
||||
#include "GRegion.h"
|
||||
-#include "Pair.h"
|
||||
|
||||
class GeomMeshMatcher {
|
||||
private:
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *matchVertices(GModel *m1,
|
||||
- GModel *m2, bool &ok);
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *
|
||||
+ matchVertices(GModel *m1, GModel *m2, bool &ok);
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *
|
||||
matchEdges(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GVertex *, GVertex *> > *coresp_v, bool &ok);
|
||||
- std::vector<Pair<GFace *, GFace *> > *
|
||||
+ std::vector<std::pair<GVertex *, GVertex *> > *coresp_v, bool &ok);
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *
|
||||
matchFaces(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GEdge *, GEdge *> > *coresp_e, bool &ok);
|
||||
- std::vector<Pair<GRegion *, GRegion *> > *
|
||||
+ std::vector<std::pair<GEdge *, GEdge *> > *coresp_e, bool &ok);
|
||||
+ std::vector<std::pair<GRegion *, GRegion *> > *
|
||||
matchRegions(GModel *m1, GModel *m2,
|
||||
- std::vector<Pair<GFace *, GFace *> > *coresp_f, bool &ok);
|
||||
+ std::vector<std::pair<GFace *, GFace *> > *coresp_f, bool &ok);
|
||||
static GeomMeshMatcher *_gmm_instance;
|
||||
GeomMeshMatcher() {}
|
||||
~GeomMeshMatcher() {}
|
||||
@@ -1,19 +0,0 @@
|
||||
--- src/geo/OCCFace.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/OCCFace.cpp
|
||||
@@ -249,13 +249,13 @@ SVector3 OCCFace::normal(const SPoint2 ¶m) const
|
||||
return n;
|
||||
}
|
||||
|
||||
-Pair<SVector3, SVector3> OCCFace::firstDer(const SPoint2 ¶m) const
|
||||
+std::pair<SVector3, SVector3> OCCFace::firstDer(const SPoint2 ¶m) const
|
||||
{
|
||||
gp_Pnt pnt;
|
||||
gp_Vec du, dv;
|
||||
_occface->D1(param.x(), param.y(), pnt, du, dv);
|
||||
- return Pair<SVector3, SVector3>(SVector3(du.X(), du.Y(), du.Z()),
|
||||
- SVector3(dv.X(), dv.Y(), dv.Z()));
|
||||
+ return std::make_pair(SVector3(du.X(), du.Y(), du.Z()),
|
||||
+ SVector3(dv.X(), dv.Y(), dv.Z()));
|
||||
}
|
||||
|
||||
void OCCFace::secondDer(const SPoint2 ¶m, SVector3 &dudu, SVector3 &dvdv,
|
||||
@@ -1,11 +0,0 @@
|
||||
--- src/geo/OCCFace.h.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/OCCFace.h
|
||||
@@ -42,7 +42,7 @@ class OCCFace : public GFace { (public)
|
||||
virtual bool containsPoint(const SPoint3 &pt) const;
|
||||
virtual bool containsParam(const SPoint2 &pt);
|
||||
virtual SVector3 normal(const SPoint2 ¶m) const;
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
virtual void secondDer(const SPoint2 &, SVector3 &, SVector3 &,
|
||||
SVector3 &) const;
|
||||
virtual GEntity::GeomType geomType() const;
|
||||
@@ -1,29 +0,0 @@
|
||||
--- src/geo/Pair.h.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/Pair.h
|
||||
@@ -1,26 +0,0 @@
|
||||
-// Gmsh - Copyright (C) 1997-2024 C. Geuzaine, J.-F. Remacle
|
||||
-//
|
||||
-// See the LICENSE.txt file in the Gmsh root directory for license information.
|
||||
-// Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
|
||||
-
|
||||
-#ifndef PAIR_H
|
||||
-#define PAIR_H
|
||||
-
|
||||
-// A pair of values, the types of which can be different
|
||||
-template <class L, class R> class Pair {
|
||||
-private:
|
||||
- L Left;
|
||||
- R Right;
|
||||
-
|
||||
-public:
|
||||
- Pair() {}
|
||||
- Pair(const L &left, const R &right) : Left(left), Right(right) {}
|
||||
- L left() const { return Left; }
|
||||
- void left(const L &left) { Left = left; }
|
||||
- R right() const { return Right; }
|
||||
- void right(const R &right) { Right = right; }
|
||||
- L first() const { return Left; }
|
||||
- R second() const { return Right; }
|
||||
-};
|
||||
-
|
||||
-#endif
|
||||
@@ -1,33 +0,0 @@
|
||||
--- src/geo/discreteFace.cpp.orig 2024-04-18 14:52:42 UTC
|
||||
+++ src/geo/discreteFace.cpp
|
||||
@@ -363,16 +363,16 @@ double discreteFace::curvatures(const SPoint2 ¶m,
|
||||
return false;
|
||||
}
|
||||
|
||||
-Pair<SVector3, SVector3> discreteFace::firstDer(const SPoint2 ¶m) const
|
||||
+std::pair<SVector3, SVector3> discreteFace::firstDer(const SPoint2 ¶m) const
|
||||
{
|
||||
- if(_param.empty()) return Pair<SVector3, SVector3>(SVector3(), SVector3());
|
||||
+ if(_param.empty()) return std::make_pair(SVector3(), SVector3());
|
||||
|
||||
MElement *e = _param.oct->find(param.x(), param.y(), 0.0, -1, true);
|
||||
if(!e) {
|
||||
Msg::Info("Triangle not found for first derivative at uv=(%g,%g) on "
|
||||
"discrete surface %d",
|
||||
param.x(), param.y(), tag());
|
||||
- return Pair<SVector3, SVector3>(SVector3(1, 0, 0), SVector3(0, 1, 0));
|
||||
+ return std::make_pair(SVector3(1, 0, 0), SVector3(0, 1, 0));
|
||||
}
|
||||
|
||||
int position = (int)((MTriangle *)e - &_param.t2d[0]);
|
||||
@@ -403,8 +403,8 @@ Pair<SVector3, SVector3> discreteFace::firstDer(const
|
||||
}
|
||||
}
|
||||
|
||||
- return Pair<SVector3, SVector3>(SVector3(dxdu[0][0], dxdu[1][0], dxdu[2][0]),
|
||||
- SVector3(dxdu[0][1], dxdu[1][1], dxdu[2][1]));
|
||||
+ return std::make_pair(SVector3(dxdu[0][0], dxdu[1][0], dxdu[2][0]),
|
||||
+ SVector3(dxdu[0][1], dxdu[1][1], dxdu[2][1]));
|
||||
}
|
||||
|
||||
void discreteFace::secondDer(const SPoint2 ¶m, SVector3 &dudu,
|
||||
@@ -1,11 +0,0 @@
|
||||
--- src/geo/discreteFace.h.orig 2024-04-18 14:52:42 UTC
|
||||
+++ src/geo/discreteFace.h
|
||||
@@ -60,7 +60,7 @@ class discreteFace : public GFace { (public)
|
||||
double curvatures(const SPoint2 ¶m, SVector3 &dirMax, SVector3 &dirMin,
|
||||
double &curvMax, double &curvMin) const;
|
||||
GEntity::GeomType geomType() const { return DiscreteSurface; }
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
virtual void secondDer(const SPoint2 ¶m, SVector3 &dudu, SVector3 &dvdv,
|
||||
SVector3 &dudv) const;
|
||||
int createGeometry();
|
||||
@@ -1,27 +0,0 @@
|
||||
--- src/geo/gmshFace.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/gmshFace.cpp
|
||||
@@ -215,19 +215,19 @@ SVector3 gmshFace::normal(const SPoint2 ¶m) const
|
||||
}
|
||||
}
|
||||
|
||||
-Pair<SVector3, SVector3> gmshFace::firstDer(const SPoint2 ¶m) const
|
||||
+std::pair<SVector3, SVector3> gmshFace::firstDer(const SPoint2 ¶m) const
|
||||
{
|
||||
if(_s->Typ == MSH_SURF_PLAN && !_s->geometry) {
|
||||
double x, y, z, VX[3], VY[3];
|
||||
getMeanPlaneData(VX, VY, x, y, z);
|
||||
- return Pair<SVector3, SVector3>(SVector3(VX[0], VX[1], VX[2]),
|
||||
- SVector3(VY[0], VY[1], VY[2]));
|
||||
+ return std::make_pair(SVector3(VX[0], VX[1], VX[2]),
|
||||
+ SVector3(VY[0], VY[1], VY[2]));
|
||||
}
|
||||
else {
|
||||
Vertex vu = InterpolateSurface(_s, param[0], param[1], 1, 1);
|
||||
Vertex vv = InterpolateSurface(_s, param[0], param[1], 1, 2);
|
||||
- return Pair<SVector3, SVector3>(SVector3(vu.Pos.X, vu.Pos.Y, vu.Pos.Z),
|
||||
- SVector3(vv.Pos.X, vv.Pos.Y, vv.Pos.Z));
|
||||
+ return std::make_pair(SVector3(vu.Pos.X, vu.Pos.Y, vu.Pos.Z),
|
||||
+ SVector3(vv.Pos.X, vv.Pos.Y, vv.Pos.Z));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- src/geo/gmshFace.h.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/gmshFace.h
|
||||
@@ -26,7 +26,7 @@ class gmshFace : public GFace { (public)
|
||||
virtual bool containsPoint(const SPoint3 &pt) const;
|
||||
virtual double getMetricEigenvalue(const SPoint2 &);
|
||||
virtual SVector3 normal(const SPoint2 ¶m) const;
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
|
||||
virtual void secondDer(const SPoint2 &, SVector3 &, SVector3 &,
|
||||
SVector3 &) const;
|
||||
virtual GEntity::GeomType geomType() const;
|
||||
@@ -1,15 +0,0 @@
|
||||
--- src/geo/gmshSurface.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/gmshSurface.cpp
|
||||
@@ -23,10 +23,10 @@ SVector3 gmshSurface::normal(const SPoint2 ¶m) con
|
||||
return SVector3();
|
||||
}
|
||||
|
||||
-Pair<SVector3, SVector3> gmshSurface::firstDer(const SPoint2 ¶m)
|
||||
+std::pair<SVector3, SVector3> gmshSurface::firstDer(const SPoint2 ¶m)
|
||||
{
|
||||
Msg::Error("First derivative not implemented for this type of surface");
|
||||
- return Pair<SVector3, SVector3>();
|
||||
+ return std::pair<SVector3, SVector3>();
|
||||
}
|
||||
|
||||
double gmshSurface::getMetricEigenvalue(const SPoint2 &)
|
||||
@@ -1,19 +0,0 @@
|
||||
--- src/geo/gmshSurface.h.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/gmshSurface.h
|
||||
@@ -9,7 +9,6 @@
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <map>
|
||||
-#include "Pair.h"
|
||||
#include "Range.h"
|
||||
#include "SPoint2.h"
|
||||
#include "SPoint3.h"
|
||||
@@ -61,7 +60,7 @@ class gmshSurface { (public)
|
||||
// Return the normal to the face at the given parameter location.
|
||||
virtual SVector3 normal(const SPoint2 ¶m) const;
|
||||
// Return the first derivate of the face at the parameter location.
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m);
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m);
|
||||
virtual double getMetricEigenvalue(const SPoint2 &);
|
||||
};
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
--- src/geo/xyFace.h.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/geo/xyFace.h
|
||||
@@ -33,11 +33,11 @@ class xyFace : public GFace { (public)
|
||||
SVector3 n(0, 0, 1);
|
||||
return n;
|
||||
}
|
||||
- virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const
|
||||
+ virtual std::pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const
|
||||
{
|
||||
SVector3 t1(1, 0, 0);
|
||||
SVector3 t2(0, 1, 0);
|
||||
- return Pair<SVector3, SVector3>(t1, t2);
|
||||
+ return std::make_pair(t1, t2);
|
||||
}
|
||||
virtual void secondDer(const SPoint2 &, SVector3 &a, SVector3 &b,
|
||||
SVector3 &c) const
|
||||
@@ -1,26 +0,0 @@
|
||||
--- src/mesh/BackgroundMesh.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/mesh/BackgroundMesh.cpp
|
||||
@@ -304,8 +304,8 @@ void backgroundMesh::propagateCrossFieldByDistance(GFa
|
||||
SPoint2 p1, p2;
|
||||
reparamMeshEdgeOnFace(v[0], v[1], _gf, p1, p2);
|
||||
/* a correct way of computing angles */
|
||||
- Pair<SVector3, SVector3> der = _gf->firstDer((p1 + p2) * .5);
|
||||
- SVector3 t1 = der.first();
|
||||
+ std::pair<SVector3, SVector3> der = _gf->firstDer((p1 + p2) * .5);
|
||||
+ SVector3 t1 = der.first;
|
||||
SVector3 t2(v[1]->x() - v[0]->x(), v[1]->y() - v[0]->y(),
|
||||
v[1]->z() - v[0]->z());
|
||||
t1.normalize();
|
||||
@@ -459,9 +459,9 @@ void backgroundMesh::propagateCrossField(GFace *_gf,
|
||||
v[1] = (*it)->lines[i]->getVertex(1);
|
||||
SPoint2 p1, p2;
|
||||
reparamMeshEdgeOnFace(v[0], v[1], _gf, p1, p2);
|
||||
- Pair<SVector3, SVector3> der = _gf->firstDer((p1 + p2) * .5);
|
||||
- SVector3 t1 = der.first();
|
||||
- SVector3 t2 = der.second();
|
||||
+ std::pair<SVector3, SVector3> der = _gf->firstDer((p1 + p2) * .5);
|
||||
+ SVector3 t1 = der.first;
|
||||
+ SVector3 t2 = der.second;
|
||||
SVector3 n = crossprod(t1, t2);
|
||||
n.normalize();
|
||||
SVector3 d1(v[1]->x() - v[0]->x(), v[1]->y() - v[0]->y(),
|
||||
@@ -1,22 +0,0 @@
|
||||
--- src/mesh/meshGFace.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/mesh/meshGFace.cpp
|
||||
@@ -1269,7 +1269,7 @@ static bool improved_translate(GFace *gf, MVertex *ver
|
||||
SVector3 s1, s2;
|
||||
SVector3 normal;
|
||||
SVector3 basis_u, basis_v;
|
||||
- Pair<SVector3, SVector3> derivatives;
|
||||
+ std::pair<SVector3, SVector3> derivatives;
|
||||
|
||||
reparamMeshVertexOnFace(vertex, gf, point);
|
||||
x = point.x();
|
||||
@@ -1278,8 +1278,8 @@ static bool improved_translate(GFace *gf, MVertex *ver
|
||||
angle = backgroundMesh::current()->getAngle(x, y, 0.0);
|
||||
derivatives = gf->firstDer(point);
|
||||
|
||||
- s1 = derivatives.first();
|
||||
- s2 = derivatives.second();
|
||||
+ s1 = derivatives.first;
|
||||
+ s2 = derivatives.second;
|
||||
normal = crossprod(s1, s2);
|
||||
|
||||
basis_u = s1;
|
||||
@@ -1,24 +0,0 @@
|
||||
--- src/mesh/meshGFaceBamg.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/mesh/meshGFaceBamg.cpp
|
||||
@@ -49,14 +49,14 @@ static void computeMeshMetricsForBamg(GFace *gf, int n
|
||||
SMetric3 m = BGM_MeshMetric(gf, u, v, gp.x(), gp.y(), gp.z());
|
||||
|
||||
// compute the derivatives of the parametrization
|
||||
- Pair<SVector3, SVector3> der = gf->firstDer(SPoint2(u, v));
|
||||
+ std::pair<SVector3, SVector3> der = gf->firstDer(SPoint2(u, v));
|
||||
|
||||
- J(0, 0) = JT(0, 0) = der.first().x();
|
||||
- J(0, 1) = JT(1, 0) = der.first().y();
|
||||
- J(0, 2) = JT(2, 0) = der.first().z();
|
||||
- J(1, 0) = JT(0, 1) = der.second().x();
|
||||
- J(1, 1) = JT(1, 1) = der.second().y();
|
||||
- J(1, 2) = JT(2, 1) = der.second().z();
|
||||
+ J(0, 0) = JT(0, 0) = der.first.x();
|
||||
+ J(0, 1) = JT(1, 0) = der.first.y();
|
||||
+ J(0, 2) = JT(2, 0) = der.first.z();
|
||||
+ J(1, 0) = JT(0, 1) = der.second.x();
|
||||
+ J(1, 1) = JT(1, 1) = der.second.y();
|
||||
+ J(1, 2) = JT(2, 1) = der.second.z();
|
||||
|
||||
m.getMat(M);
|
||||
J.mult(M, W);
|
||||
@@ -1,18 +0,0 @@
|
||||
--- src/mesh/meshGFaceDelaunayInsertion.cpp.orig 2024-03-29 22:07:01 UTC
|
||||
+++ src/mesh/meshGFaceDelaunayInsertion.cpp
|
||||
@@ -331,11 +331,11 @@ void buildMetric(GFace *gf, double *uv, double *metric
|
||||
|
||||
void buildMetric(GFace *gf, double *uv, double *metric)
|
||||
{
|
||||
- Pair<SVector3, SVector3> der = gf->firstDer(SPoint2(uv[0], uv[1]));
|
||||
+ std::pair<SVector3, SVector3> der = gf->firstDer(SPoint2(uv[0], uv[1]));
|
||||
|
||||
- metric[0] = dot(der.first(), der.first());
|
||||
- metric[1] = dot(der.second(), der.first());
|
||||
- metric[2] = dot(der.second(), der.second());
|
||||
+ metric[0] = dot(der.first, der.first);
|
||||
+ metric[1] = dot(der.second, der.first);
|
||||
+ metric[2] = dot(der.second, der.second);
|
||||
}
|
||||
|
||||
static double computeTolerance(const double radius)
|
||||
@@ -46,6 +46,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/faces.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/flatten.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/flatten2.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/fractures.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/fragment_surfaces.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/get_data_perf.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/get_data_perf.py
|
||||
@@ -60,8 +61,10 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/import_perf.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/import_perf.jl
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/import_perf.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/julia_exception.jl
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/mesh_from_discrete_curve.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/mesh_quality.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/min_edge.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/mirror_mesh.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/msh_attributes.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/multi_process.py
|
||||
@@ -81,6 +84,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/open.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/open.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/opt.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/parametric_surface.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/partition.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/partition.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/periodic.py
|
||||
@@ -90,9 +94,12 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/poisson.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/prepro.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/prim_axis.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/raw_tetrahedralization.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/raw_tetrahedralization.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/raw_triangulation.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/relocate_nodes.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/remesh_cavity.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/remesh_partial_move.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/remesh_stl.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/remove_elements.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/renumbering.py
|
||||
@@ -125,6 +132,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/terrain_stl_data.stl
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/test.c
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/test.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/torus_bspline.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/trimmed.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/tube_boundary_layer.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view.cpp
|
||||
@@ -132,6 +140,9 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_adaptive_to_mesh.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_combine.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_element_size.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_list_isoparametric.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_list_subparametric.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_list_superparametric.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/view_renumbering.py
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/viewlist.cpp
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/api/viewlist.py
|
||||
@@ -145,6 +156,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/component8.step
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/compsolid.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/compsolid2.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/cylinder_with_hole.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/extend_field.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/extrude.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/extrude2.geo
|
||||
@@ -155,6 +167,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/fillet_chamfer.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/fleur.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/fragment_numbering.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/full_quad.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/hybrid_occ_builtin.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/hyperboloid.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/import.geo
|
||||
@@ -183,6 +196,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/spline.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/step_assembly.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/surface_filling.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/symmetry_test_occ_builtin.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/thicksolid.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/thrusections.geo
|
||||
%%PORTDOCS%%%%DOCSDIR%%/examples/boolean/transfinite.geo
|
||||
@@ -405,4 +419,7 @@ lib/libgmsh.so.%%VER%%
|
||||
%%PORTDOCS%%%%DOCSDIR%%/tutorials/view3.pos
|
||||
%%PORTDOCS%%%%DOCSDIR%%/tutorials/view4.pos
|
||||
%%PORTDOCS%%%%DOCSDIR%%/tutorials/view5.msh
|
||||
%%DATADIR%%/gmshConfig.cmake
|
||||
%%DATADIR%%/gmshTargets-%%CMAKE_BUILD_TYPE%%.cmake
|
||||
%%DATADIR%%/gmshTargets.cmake
|
||||
share/man/man1/gmsh.1.gz
|
||||
|
||||
Reference in New Issue
Block a user