optimad/bitpit-private

Bug in collapseCoincidentVertices

Closed this issue · 4 comments

L'errore (o almeno un errore) è alla riga 1447 del file patch_kernel.cpp. Quella riga deve diventare "ConstProxyVector cellVertexIds = cell.getVertexIds();" (poi qualche riga dopo cellConnect va sostituito con cellVertexIds).

E' difficile che la funzione getVertexIds possa restituire vertici doppi, la lista dei vertici viene costruita passando da un set. Se succede, probabilmente c'è un bug da qualche altra parte (es. scrittura fuori da un vettore o simili). In questo caso potrebbe aiutare far girare il caso con valgrind.

Non so bene dove sia l'errore, ho solo messo un link alla prima riga del metodo. Se ho ben capito però il metodo deve modificare direttamente la connettività dell'elemento, cosa che con la chiamata a getVertexIds() non potrebbe fare, o sbaglio?

Il secondo problema in verità era un mio sospetto, ma sicuramente la magagna era da un'altra parte.

A occhio gli errori sono due: uno è che alla riga 1447 è necessario usare getVertexIds e l'altro è legato a come l'indice dei vertici duplicati viene modificato nella connettività dei poliedri. Domani cerco di risolvere.

@edoardolombardi Si può chiudere?