Amaury Johnen (0e824361) at 19 Dec 12:55
fix compile error on remote rep
Amaury Johnen (c7838a05) at 19 Dec 08:38
Merge branch 'master' (early part) into curveBL
... and 84 more commits
Sorry, I cannot debug the benchmark because I do not have OCC installed (and I will soon have a new computer so I do not plan to install it before).
But I see that the benchmark TrimmedSurface.geo
also calls the plugin for a planar surface and does not generate the error. So I am guessing that there is a bug in the orientation of the edge loop for the concerned benchmark.
I have pushed the branch pluginMeshQuality where I created the function normalToPlanarMesh
in GFace.cpp
since I think I will need it for curving boundary layers.
The function check if the mesh vertices are all in the same plane and give the normal to the plane if it is the case. The normal is of the same orientation than the surface when it is possible to determine it.
To check the orientation of the surface, I try to find three adjacent GVertex on the boundary that are not aligned and I take the normal of the corresponding triangle as the orientation, is that correct and general? (Maybe not for Discretesurface?)
Benchmark OptimizationRotatedSurface.geo
generates an error that I will check.
Amaury Johnen (6e6a8342) at 30 Nov 11:05
add function normalToPlanarMesh in GFace class + use of it in plugi...
... and 2 more commits
Currently, the validity of 2d planar elements that is computed by the plugin AnalyseMeshQuality
is correct only in a specific case: if the geometric surface is a GEntity::DiscreteSurface
in the xy-plane and oriented in +z direction... (If the orientation is -z, the opposite of the validity is currently computed, see ticket 736.)
To compute the true validity of an element, it must be planar and a normal should be given to define its correct orientation. If no normal is given, the element will always be considered as valid. Currently, the normal is not computed for general planar surfaces and incorrectly defined for the basic case given above.
Before, a normal was computed also for GEntity::Plane
surfaces, but it was not working in general because I took an arbitrary parametric point that could not be inside the surface (see commit f76c4936).
Two questions :
if(geomType() == GEntity::Plane)
?