Commit Graph

81 Commits

Author SHA1 Message Date
Abdullah Tahiri
28415f53d4 GCS: renaming parameters to make them more descriptive 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
7f006e2c75 GCS: Augment information provided by GCS with groups of dependent parameters 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
270b0cbc33 GCS: Interface to query whether the used diagnose matrix is empty
=================================================================

Diagnose constraints do not include among others driven constraints. This
function allows to know whether the solver is considering an empty matrix.
2020-12-19 11:58:54 +01:00
Abdullah Tahiri
996f006de3 GCS: Deactivate Debug code and fix warnings in non-Debug mode 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
b2fd91c333 GCS: Asynchronous full geometry parameter identification for Dense QR 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
5e2a2cbbbb GCS: Make QR decompositions for constraints and parameters run asynchronously 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
9f2d34ac4b GCS: QR profiling debug code 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
ac7f6b8ceb GCS: Rewrite diagnose() so that it has a single return point 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
474d5550cf GCS: Diagnose() - Separate DenseQR and SparseQR 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
c635b4b954 GCS: Refactor new SparseQR Dependent Parameter detection code and const correctness 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
2d37d7194a GCS: Detect dependent parameters (geometry) during diagnosis using two SparseQR factorisations 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
982591b0d4 GCS: makeSparseQRDecomposition generalise for transposed and non-transposed matrices 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
820b02b295 GCS: SparseQR compilation guards 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
0f9af72f25 GCS: reduce input parameters in makeDenseQRDecomposition 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
dd4b29333a GCS: Refactor Non-Zero elimination over pivot 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
ed5af06d14 GCS: Refactor diagnose identification of conflicting and redundant constraints 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
a5927e1a61 GCS: Refactor dependent parameters identification which is only available for DenseQR 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
25d94d00cb GCS: Refactor QR decomposition into separate functions for Sparse and Dense 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
d9bca3e8c1 GCS: Increase documentation of diagnose() routine 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
7055b5ef0f GCS: Prevent that reference constraints affect the result of a redundant solving
================================================================================

Solves the part of this described bug relating to reference constraints affecting the diagnosis of redundant constraints:
https://forum.freecadweb.org/viewtopic.php?p=410195#p410195
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
ffaa92d29b GCS: Add debug code to identify the popularity contest selected redundant that is removed 2020-07-01 14:04:25 +02:00
wmayer
27b6066beb clang/gcc/cmake: move handling of suppressed deprecated-copy warnings from source file to CMake file to more easily support gcc 10 2020-06-09 15:30:42 +02:00
wmayer
300e887480 Handle clang 10 warnings:
+ fix -Wtautological-bitwise-compare
+ fix -Wimplicit-int-float-conversion
+ fix -Wmisleading-indentation
+ fix -Wrange-loop-construct
+ suppress -Wdeprecated-copy of 3rd party libs
2020-05-25 15:34:43 +02:00
DeepSOIC
bdc23aabcf Sketcher: Fix #3658 Levenberg-Marquardt solver precision issues 2020-03-24 08:03:53 +01:00
luz.paz
b2ffebf1c0 Sketcher: [skip ci] fix header uniformity
This PR fixes header uniformity across all Sketcher WB files
2019-12-22 01:00:29 +01:00
asapelkin
e9814d9183 used in-built methods instead of external algoritms 2019-11-21 18:57:06 +01:00
luz.paz
7b7797f4f3 Fix various (doxy) typos and whitespace issues
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,currenty,dof,doubleclick,dum,eiter,elemente,feld,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml`
2019-10-03 07:57:13 +02:00
Abdullah Tahiri
87b46e3fb3 GCS: Refactor and additional debug information
==============================================

In maximum verbose debug mode, information is given about the groups of Sketcher Constraints that the solver is considering for redundancy or conflict.

This is before the popularity contest selects the constraint shown in the solver messages.

The main reason for showing this is to enable to diagnose problems with sketches in which the constraint indicated as the redundant one appears not to
be the right one. Intended for power users with "iteration level" debug mode.
2019-06-17 14:05:24 +02:00
Abdullah Tahiri
d21cf68b8a GCS: Partial refactoring of diagnose() and debug improvements 2019-04-24 17:56:37 +02:00
Abdullah Tahiri
af9492b790 GCS: use at for map reading 2019-04-24 17:56:37 +02:00
wmayer
465152bcc9 fix crash in debug mode in sketcher in case the equation matrix has rank zero 2018-10-28 14:51:14 +01:00
Abdullah Tahiri
96f6c46949 GCS: Bug fixes
==============

- Zero initialization of the jacobian matrix
- Correct notification of redundant/conflicting in presence of non-driving constraints.

fixes #3529
2018-08-26 20:54:01 +02:00
luz.paz
781d007321 Misc. typos
Found via `codespell`
Trivial typos

Found via `codespell`
2018-08-18 21:48:42 +02:00
Abdullah Tahiri
424d68085e GCS: Diameter constraint emulation through ConstraintEqual 2018-07-30 00:47:19 +02:00
wmayer
3cb6890bcc suppress warning C4996 2018-05-31 13:42:35 +02:00
Abdullah Tahiri
61b1a15524 Fix MatrixIndexType 2018-05-31 11:41:37 +02:00
Abdullah Tahiri
03c3539dbf GCS: Improvement in redundant constraint detection
==================================================

The solver uses some heuristics to determine the "redundant to remove" and notify it to the user.

Basically it would pick the solver redundant constraint that affects most groups of redundants (popularity contest).

In the simple cases, all the redundants are equally popular and the popularity contest is untied by using the tagid (let say for simplicity it is the number at sketcher level Constraint3, the tagid=3).

This means that in simple cases, the solver systematically decides that the redundant constraint to handle from those showing a linear dependency is the one appearing the last.

This commits changes the way to untie the popularity contest, by giving more priority to those sketcher constraints that need a lower number of solver constraints (in other words,
those constraints that remove a lower amount of DoF). In case of tie, the tagid is then used to break the tie.

At least:
fixes #3434
fixes #1557
2018-05-31 11:41:26 +02:00
Abdullah Tahiri
9e901dbc59 GCS: Fix report view formating and duplicated endline 2018-05-31 11:41:16 +02:00
Abdullah Tahiri
858f4cb85b GCS: Full detection of dependent parameters with Dense Full Household pivoting QR decomposition
- Improve Debug information.
- Support for addition of constraints with driving information for the solver constraints.
- Removal of the driven constraints from the Jacobian for QR decomposition
- Removal of the value freewheeling parameter from the Jacobian for QR decomposition
- Full detection of dependent parameters where DoF are present for Dense QR.
2018-05-31 11:40:05 +02:00
Abdullah Tahiri
2e70d9c75f GCS: Solver dependent parameters retrieval 2018-05-31 11:39:02 +02:00
Abdullah Tahiri
63ce5df76b Sketcher: Solver bypass of knotpoints
Internal geometry knot points, which were added as fixed parameters to the solver according to a previous commit, are tracked in the corresponding bspline as solver level,
without being a parameter to the solver, and upon solving, the position thereof is updated by means of OCC functionality.

This allows to show the knot points and solidarily move them when moving a bspline.
2017-04-08 12:58:06 +02:00
Abdullah Tahiri
2369112fb5 Sketcher: Bspline solver knot support - unfinished 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
1155022a82 Sketcher: BSpline Weights internal geometry support 2017-01-11 01:17:07 +01:00
Abdullah Tahiri
d949f52878 Sketcher: BSpline solver Internal Geometry for poles 2017-01-10 23:34:49 +01:00
Abdullah Tahiri
5c9cc6221b Sketcher: Parabola solver equality constraint 2016-12-24 02:39:02 +01:00
Abdullah Tahiri
0d93c45d70 Sketcher: Point on Object solver constraint 2016-12-24 01:14:15 +01:00
Abdullah Tahiri
3e76189f19 Sketcher: Focus solver internal geometry 2016-12-22 16:10:52 +01:00
Abdullah Tahiri
61fe4bcaee Sketcher: Parabola Arc rules solver constraint 2016-12-22 16:10:33 +01:00
DeepSOIC
95043e58ea Sketcher: Hyperbola: fix minor diameter ends swapping
Quick and dirty, but seems to work.
2016-11-27 18:45:33 +01:00
Abdullah Tahiri
fb12cb83fc Solver InternalAlignment: Change to diameters instead of radii to be able to draw asymptotes
GCS and Sketch.cpp support
2016-11-27 18:45:33 +01:00