drwells / fiddle

4 stars 3 forks source link

Always disable optimizations for Triangle. #210

Closed drwells closed 10 months ago

drwells commented 10 months ago

Just clearing compilation flags on a target isn't enough - CMAKE_CXX_FLAGS will still be used to populate it. This change decouples the input C++ flags from those used to compile triangle - that will make triangle's output more reliable since it relies a lot on very precise floating point tricks.

That being said - this isn't done yet since the surface_tria_01_2d.input test still produces different output with -march=native.

drwells commented 10 months ago

One problem is that deal.II (via its householder transformation code) produces slightly different results in optimized mode, which in and of itself is enough to throw off Triangle. I added some extra regularization to fix this - the combination of regularization and picking compilation flags seems to be enough.