diff --git a/benchmarks/extrude/periodic_extruded_layers.geo b/benchmarks/extrude/periodic_extruded_layers.geo index c1530daa64d3015695e797ff927a20af6c85ad2d..4cc8960636533263a599c648cda1d3b82d86092a 100644 --- a/benchmarks/extrude/periodic_extruded_layers.geo +++ b/benchmarks/extrude/periodic_extruded_layers.geo @@ -6,6 +6,6 @@ s[] = Extrude{0, 1, 0} { Line{l[1]}; Layers{10}; Recombine; }; -// explicit periodic constraint to store node correspondance on the extruded +// explicit periodic constraint to store node correspondence on the extruded // entity, even for a structured mesh Periodic Line{s[0]} = {l[1]} Translate{0, 1, 0}; diff --git a/contrib/HighOrderMeshOptimizer/HighOrderMeshFastCurving.cpp b/contrib/HighOrderMeshOptimizer/HighOrderMeshFastCurving.cpp index 3f16dc8c6b72bc9e44fdc4f58039dbab7d99656a..35494edad14c55679bef950e61d6bb5376205d6c 100644 --- a/contrib/HighOrderMeshOptimizer/HighOrderMeshFastCurving.cpp +++ b/contrib/HighOrderMeshOptimizer/HighOrderMeshFastCurving.cpp @@ -452,7 +452,7 @@ namespace { } } - // Build top face from max face (with right correspondance) + // Build top face from max face (with right correspondence) MVertex *maxVert[3] = {elMaxFace.getVertex(0), elMaxFace.getVertex(1), elMaxFace.getVertex(2)}; std::vector<MVertex *> topVert(3, static_cast<MVertex *>(nullptr)); diff --git a/contrib/QuadMeshingTools/qmtCrossField.cpp b/contrib/QuadMeshingTools/qmtCrossField.cpp index 5f36bb0542273bcc377562ead1d03b4184e1b129..ad4febf001fecf80c96216e563b75de98d32ff41 100644 --- a/contrib/QuadMeshingTools/qmtCrossField.cpp +++ b/contrib/QuadMeshingTools/qmtCrossField.cpp @@ -580,7 +580,7 @@ namespace QMT { vector<double> x(2 * uIEdges.size(), 0.); /* Initial Dirichlet boundary conditions - * alignement of crosses with edges (relative angle = 0) + * alignment of crosses with edges (relative angle = 0) * theta_e = 0 => (cos4t/sin4t) = (1,0) */ size_t nbc = 0; vector<bool> dirichletEdge(uIEdges.size(), false); diff --git a/examples/api/onelab_run.py b/examples/api/onelab_run.py index 75c0e1838e21a6a6512715142184230a879be6f6..9af3178ad50de617397b1945e969c24e848658a2 100644 --- a/examples/api/onelab_run.py +++ b/examples/api/onelab_run.py @@ -3,7 +3,7 @@ import threading import sys # This shows how ONELAB clients that communicate with the ONELAB server through -# sockets can be executed using the Gmsh API, by explicitely specying the +# sockets can be executed using the Gmsh API, by explicitly specying the # command to run the client # One such example is the GetDP finite element solver (https://getdp.info). diff --git a/examples/api/tube_boundary_layer.py b/examples/api/tube_boundary_layer.py new file mode 100644 index 0000000000000000000000000000000000000000..410708aa78e5652b74e8406b3f7f2a25e042839a --- /dev/null +++ b/examples/api/tube_boundary_layer.py @@ -0,0 +1,58 @@ +import gmsh +import sys +import math +import numpy as np + +gmsh.initialize(sys.argv) +gmsh.model.add("Tube boundary layer") + +# meshing constraints +gmsh.option.setNumber("Mesh.MeshSizeMax", 0.1) +order2 = False + +# fuse 2 cylinders and only keep outside shell +c1 = gmsh.model.occ.addCylinder(0,0,0, 5,0,0, 0.5) +c2 = gmsh.model.occ.addCylinder(2,0,-2, 0,0,2, 0.3) +s = gmsh.model.occ.fuse([(3, c1)], [(3, c2)]) +gmsh.model.occ.remove(gmsh.model.occ.getEntities(3)) +gmsh.model.occ.remove([(2,2), (2,3), (2,5)]) # fixme: automate this +gmsh.model.occ.synchronize() + +# create boundary layer extrusion, and make extrusion only return "top" surfaces +# and volumes, not lateral surfaces +gmsh.option.setNumber('Geometry.ExtrudeReturnLateralEntities', 0) +n = np.linspace(1, 1, 5) +d = np.logspace(-3, -1, 5) +e = gmsh.model.geo.extrudeBoundaryLayer(gmsh.model.getEntities(2), + n, -d, True) + +# get "top" surfaces created by extrusion +top_ent = [s for s in e if s[0] == 2] +top_surf = [s[1] for s in top_ent] + +# get boundary of top surfaces, i.e. boundaries of holes +gmsh.model.geo.synchronize() +bnd_ent = gmsh.model.getBoundary(top_ent) +bnd_curv = [c[1] for c in bnd_ent] + +# create plane surfaces filling the holes +loops = gmsh.model.geo.addCurveLoops(bnd_curv) +for l in loops: + top_surf.append(gmsh.model.geo.addPlaneSurface([l])) + +# create the inner volume +gmsh.model.geo.addVolume([gmsh.model.geo.addSurfaceLoop(top_surf)]) +gmsh.model.geo.synchronize() + +# generate the mesh +gmsh.model.mesh.generate(3) + +# 2nd order + fast curving of the boundary layer +if order2: + gmsh.model.mesh.setOrder(2) + gmsh.model.mesh.optimize('HighOrderFastCurving') + +if '-nopopup' not in sys.argv: + gmsh.fltk.run() + +gmsh.finalize() diff --git a/src/geo/CGNSZoneStruct.cpp b/src/geo/CGNSZoneStruct.cpp index b62d729ff72f072a7184e44cdc17e38d7dd46f55..c709822fccef398be53b2c784dd3727873267905 100644 --- a/src/geo/CGNSZoneStruct.cpp +++ b/src/geo/CGNSZoneStruct.cpp @@ -606,7 +606,7 @@ int CGNSZoneStruct<DIM>::readOneInterface( // zone.masterVert.push_back(std::vector<MVertex *>()); // zone.masterVert.back().reserve(nbNode); - // // store periodic node correspondance + // // store periodic node correspondence // int ijk[3], ijkD[3]; // for(int k = 0; k < nijk[2]; k++) { // ijk[2] = ijkMin[2] + k; diff --git a/src/geo/GModel.cpp b/src/geo/GModel.cpp index d671ab19fe326cf9fb0e0c74f184efc73cf8440b..2b9b42ec6593330aca3d83658d8e1670f04c271e 100644 --- a/src/geo/GModel.cpp +++ b/src/geo/GModel.cpp @@ -2944,9 +2944,8 @@ void GModel::alignPeriodicBoundaries() if(!tgtFace.computeCorrespondence(srcFace, rotation, swap)) { Msg::Debug( - "Could not find correspondance between mesh face %d-%d-%d " - "(slave) " - "and %d-%d-%d (master)", + "Could not find correspondence between mesh face %d-%d-%d " + "(slave) and %d-%d-%d (master)", tgtElmt->getVertex(0)->getNum(), tgtElmt->getVertex(1)->getNum(), tgtElmt->getVertex(2)->getNum(), srcElmt->getVertex(0)->getNum(), srcElmt->getVertex(1)->getNum(), srcElmt->getVertex(2)->getNum()); diff --git a/src/geo/GModelIO_MSH4.cpp b/src/geo/GModelIO_MSH4.cpp index 83b8e2a6394dab23491bd933cd1f6161548f1193..0fd59119e2391e8dd3d4450031e19fcb274e7881 100644 --- a/src/geo/GModelIO_MSH4.cpp +++ b/src/geo/GModelIO_MSH4.cpp @@ -2517,7 +2517,7 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned, static void writeMSH4PeriodicNodes(GModel *const model, FILE *fp, bool binary, double version) { - // To avoid saving correspondances bwteen nodes that are not saved (either in + // To avoid saving correspondences bwteen nodes that are not saved (either in // the same file or not at all, e.g. in the partitioned case, or simply if // some physical entities are not defined), we could only apply the code below // to the entities returned by getEntitiesForNodes(). diff --git a/src/geo/GModelIO_OCC.cpp b/src/geo/GModelIO_OCC.cpp index 7d08ebeee063c702117882172f43f4e6b59940d5..2db336bb290da98498168cfa5b6fe7c32ed5c250 100644 --- a/src/geo/GModelIO_OCC.cpp +++ b/src/geo/GModelIO_OCC.cpp @@ -3633,7 +3633,7 @@ bool OCC_Internals::booleanOperator( _toPreserve.clear(); } - // return input/output correspondance maps + // return input/output correspondence maps for(std::size_t i = 0; i < inDimTags.size(); i++) { int dim = inDimTags[i].first; int tag = inDimTags[i].second; diff --git a/src/mesh/Generator.cpp b/src/mesh/Generator.cpp index 85c1dc4a18d497bef3efe933dee1ccfdd2b5ef95..15cbaf84e52168bcd17fef75cb385a887a685528 100644 --- a/src/mesh/Generator.cpp +++ b/src/mesh/Generator.cpp @@ -1600,7 +1600,7 @@ void GenerateMesh(GModel *m, int ask) } // make sure periodic meshes are actually periodic and store periodic node - // correspondances + // correspondences FixPeriodicMesh(m); Msg::Info("%d nodes %d elements", m->getNumMeshVertices(), diff --git a/src/mesh/meshGEdgeExtruded.cpp b/src/mesh/meshGEdgeExtruded.cpp index 515b5feaa49c43963380a16a71e8686a61147332..c493be60f21b93477b307a4522cbe89ce1194180 100644 --- a/src/mesh/meshGEdgeExtruded.cpp +++ b/src/mesh/meshGEdgeExtruded.cpp @@ -121,7 +121,7 @@ int MeshExtrudedCurve(GEdge *ge) copyMesh(from, ge); if(ge->getMeshMaster() == from) { - // explicit periodic constraint, to store node correspondance + // explicit periodic constraint, to store node correspondence ge->setMeshMaster(from, ge->affineTransform); } } diff --git a/src/mesh/meshGFaceExtruded.cpp b/src/mesh/meshGFaceExtruded.cpp index 3e6b2454cf6ac94aeda7eacd9ece27b32549f3fe..c94dca01e0e9df21df9e41ee8eb3ed580197e30f 100644 --- a/src/mesh/meshGFaceExtruded.cpp +++ b/src/mesh/meshGFaceExtruded.cpp @@ -334,7 +334,7 @@ int MeshExtrudedSurface( } copyMesh(from, gf, pos); if(gf->getMeshMaster() == from) { - // explicit periodic constraint, to store node correspondance + // explicit periodic constraint, to store node correspondence gf->setMeshMaster(from, gf->affineTransform); } } diff --git a/src/mesh/meshGFacePack.cpp b/src/mesh/meshGFacePack.cpp index cffc059cd467d590d13a1ab549188b0c8d9528a6..623af7401d9e16fdd6e3bd2842400a29ef2d99e0 100644 --- a/src/mesh/meshGFacePack.cpp +++ b/src/mesh/meshGFacePack.cpp @@ -189,10 +189,10 @@ static double closest(double t, double u) return u + 2 * D; } -static double p2triangle_alignement_quality_measure(double *xa, double *xb, - double *xc, double *xab, - double *xbc, double *xca, - int VIEW_TAG) +static double p2triangle_alignment_quality_measure(double *xa, double *xb, + double *xc, double *xab, + double *xbc, double *xca, + int VIEW_TAG) { double xis[6] = {0, .2, .4, .6, .8, 1}; double etas[6] = {0, 0, 0, 0., 0., 0.}; @@ -623,7 +623,7 @@ triangleQualityP2(int VIEW_TAG, PolyMesh::HalfEdge *hea, double validity = triangleValidityP2(hea, midPoints); if(validity < 0) return validity; - return p2triangle_alignement_quality_measure( + return p2triangle_alignment_quality_measure( hea->v->position, heb->v->position, hec->v->position, ab, bc, ca, VIEW_TAG); } @@ -786,7 +786,7 @@ double bestParabola(double x0, double y0, double x1, double y1, double &xmid, double xi = XI_MIN + (XI_MAX - XI_MIN) * t; SPoint2 X(xmid - xi * direction[0], ymid - xi * direction[1]); double Q = - p2triangle_alignement_quality_measure(P0, P1, P0, PM, PM, PM, VIEW_TAG); + p2triangle_alignment_quality_measure(P0, P1, P0, PM, PM, PM, VIEW_TAG); if(Q > QMAX) { QMAX = Q; CUR = X; diff --git a/src/mesh/meshRefine.cpp b/src/mesh/meshRefine.cpp index a5f07c29ab6fe1a0de85e0dab5c481bbae9d46cf..c57ce845cc7d6c7c8f8ad354ced6368149c7598f 100644 --- a/src/mesh/meshRefine.cpp +++ b/src/mesh/meshRefine.cpp @@ -480,7 +480,7 @@ void RefineMesh(GModel *m, bool linear, bool splitIntoQuads, if(CTX::instance()->mesh.hoOptimize == 4) OptimizeMesh(m, "HighOrderFastCurving"); - // store periodic node correspondances + // store periodic node correspondences FixPeriodicMesh(m); // only used when splitting tets into hexes diff --git a/src/plugin/VoroMetal.cpp b/src/plugin/VoroMetal.cpp index 859d3879dbf4f9f1a358ceb9c455788351fcdfb8..5b9bacd5b4374454ffd33422a272afc42a78d7df 100644 --- a/src/plugin/VoroMetal.cpp +++ b/src/plugin/VoroMetal.cpp @@ -464,7 +464,7 @@ void voroMetal3D::print_geo_face_loop(int index, std::vector<int> &indices, file << "};\n"; } -void voroMetal3D::correspondance(double e, double xMax, double yMax, +void voroMetal3D::correspondence(double e, double xMax, double yMax, double zMax) { std::size_t i; @@ -573,7 +573,7 @@ void voroMetal3D::correspondance(double e, double xMax, double yMax, delta_y = std::abs(p2.y() - p1.y()); delta_z = std::abs(p2.z() - p1.z()); flag = - correspondance(delta_x, delta_y, delta_z, e, val, xMax, yMax, zMax); + correspondence(delta_x, delta_y, delta_z, e, val, xMax, yMax, zMax); if(flag) { it5 = markings.find(faces[i]); it6 = markings.find(faces[j]); @@ -843,17 +843,17 @@ void voroMetal3D::correspondance(double e, double xMax, double yMax, for(it8 = edges2.begin(); it8 != edges2.end(); it8++, it10++) { v3 = (*it8)->getBeginVertex(); v4 = (*it8)->getEndVertex(); - correspondance(fabs(v3->x() - v1->x()), fabs(v3->y() - v1->y()), + correspondence(fabs(v3->x() - v1->x()), fabs(v3->y() - v1->y()), fabs(v3->z() - v1->z()), e, categories[i], flag1, xMax, yMax, zMax); - correspondance(fabs(v4->x() - v2->x()), fabs(v4->y() - v2->y()), + correspondence(fabs(v4->x() - v2->x()), fabs(v4->y() - v2->y()), fabs(v4->z() - v2->z()), e, categories[i], flag2, xMax, yMax, zMax); - correspondance(fabs(v4->x() - v1->x()), fabs(v4->y() - v1->y()), + correspondence(fabs(v4->x() - v1->x()), fabs(v4->y() - v1->y()), fabs(v4->z() - v1->z()), e, categories[i], flag3, xMax, yMax, zMax); - correspondance(fabs(v3->x() - v2->x()), fabs(v3->y() - v2->y()), + correspondence(fabs(v3->x() - v2->x()), fabs(v3->y() - v2->y()), fabs(v3->z() - v2->z()), e, categories[i], flag4, xMax, yMax, zMax); if(flag1 && flag2) { @@ -917,7 +917,7 @@ void voroMetal3D::correspondance(double e, double xMax, double yMax, file4 << "};\n"; } -bool voroMetal3D::correspondance(double delta_x, double delta_y, double delta_z, +bool voroMetal3D::correspondence(double delta_x, double delta_y, double delta_z, double e, int &val, double xMax, double yMax, double zMax) { @@ -966,7 +966,7 @@ bool voroMetal3D::correspondance(double delta_x, double delta_y, double delta_z, return flag; } -void voroMetal3D::correspondance(double delta_x, double delta_y, double delta_z, +void voroMetal3D::correspondence(double delta_x, double delta_y, double delta_z, double e, int val, bool &flag, double xMax, double yMax, double zMax) { @@ -1046,7 +1046,7 @@ static void microstructure(const char *filename) vm1.execute(properties, radical, 0.1, xMax, yMax, zMax); GModel::current()->load("MicrostructurePolycrystal3D.geo"); voroMetal3D vm2; - vm2.correspondance(0.00001, xMax, yMax, zMax); + vm2.correspondence(0.00001, xMax, yMax, zMax); } } @@ -1349,7 +1349,7 @@ static void computeBestSeeds(const char *filename) vm1.execute(properties, radical, 0.1, xMax, yMax, zMax); GModel::current()->load("MicrostructurePolycrystal3D.geo"); voroMetal3D vm2; - vm2.correspondance(0.00001, xMax, yMax, zMax); + vm2.correspondence(0.00001, xMax, yMax, zMax); for(std::size_t iTmp = 0; iTmp < listDistances.size(); iTmp++) { std::cout << "distMinGlobal " << iTmp << " egale a " << listDistances[iTmp] << std::endl; diff --git a/src/plugin/VoroMetal.h b/src/plugin/VoroMetal.h index 94c046e427a469eec088856badec794890100919..d4c37d976bd014f4d361b7182b3d6e321add83f1 100644 --- a/src/plugin/VoroMetal.h +++ b/src/plugin/VoroMetal.h @@ -59,10 +59,10 @@ public: void print_geo_line_loop(int, std::vector<int> &, std::vector<int> &, std::ofstream &); void print_geo_face_loop(int, std::vector<int> &, std::ofstream &); - void correspondance(double, double, double, double); - bool correspondance(double, double, double, double, int &, double, double, + void correspondence(double, double, double, double); + bool correspondence(double, double, double, double, int &, double, double, double); - void correspondance(double, double, double, double, int, bool &, double, + void correspondence(double, double, double, double, int, bool &, double, double, double); bool equal(double, double, double); }; diff --git a/tutorials/c++/x4.cpp b/tutorials/c++/x4.cpp index da5a23c5cbc7cde19d17c788a62abff305447b49..e7b8eb24e69ff4194b7d844fe1adf27238b03929 100644 --- a/tutorials/c++/x4.cpp +++ b/tutorials/c++/x4.cpp @@ -18,7 +18,7 @@ int main(int argc, char **argv) // one model (per step). Post-processing data stored in MSH files create such // model-based views. - // Let's create a first model-based view using a simple mesh contructed by + // Let's create a first model-based view using a simple mesh constructed by // hand. We create a model with a discrete surface gmsh::model::add("simple model"); int surf = gmsh::model::addDiscreteEntity(2); diff --git a/tutorials/python/x4.py b/tutorials/python/x4.py index 04f1213230e59d44b08484e44297c12175178b5f..f85ce367f9876f794738011b4655e1687bc2a5cc 100644 --- a/tutorials/python/x4.py +++ b/tutorials/python/x4.py @@ -16,7 +16,7 @@ gmsh.initialize(sys.argv) # model (per step). Post-processing data stored in MSH files create such # model-based views. -# Let's create a first model-based view using a simple mesh contructed by +# Let's create a first model-based view using a simple mesh constructed by # hand. We create a model with a discrete surface gmsh.model.add("simple model") surf = gmsh.model.addDiscreteEntity(2)