drwells / fiddle

4 stars 3 forks source link

Always disable optimizations for Triangle. #210

Closed drwells closed 1 year ago

drwells commented 1 year 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 1 year 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.