Skip to content
ElectrostaticsPublic

About

Fork of the Finite Element ToolKit from fetk.org.

Topics

Resources

Stars

4 stars

Watchers

11 watching

Forks

Repository files navigation

FETK

Mesh edge regression tests

Configure with -DFETK_BUILD_TESTS=ON, build the test_edge_order target, and run ctest --test-dir <build> -C Release --output-on-failure. The default is OFF, including when FETK is embedded in another project. The dedicated mesh-edge CI workflow demonstrates the dependency installation and configure commands for Linux, macOS, and Windows. The build/package workflow also sets CMAKE_POLICY_VERSION_MINIMUM=3.5 for the bundled legacy SuperLU CMake configuration. On modern Apple Clang it retains the legacy f2c implicit-int diagnostic as a warning. Windows uses the same C:/vcpkg dependency cache location in installation and configuration. The Windows build runner is pinned to windows-2022 to match the requested Visual Studio 2022 generator. CI failures terminate with logs rather than opening an interactive session; build/package jobs have a 25-minute timeout.

The tests call Gem_longestEdge and Gem_shortestEdge in the actual MC library. They check deterministic tie-breaking for triangles, tetrahedra, and tetrahedral faces under every vertex permutation, as well as unequal edge lengths. Vertex IDs cover small values, the signed 32-bit packed-key overflow boundary (IDs 21/22), and values near INT_MAX; no large mesh allocation is needed. Windows has a 32-bit long even in a 64-bit process. The expected result is determined by edge length, then the ordered pair of vertex IDs: ascending for longest-edge ties and descending for shortest-edge ties.

GitHub release (latest by date)

Welcome to a modified version of the FETK (The Finite Element Toolkit).

The reason that this exists is to deal with issues that we've discovered in the FETK. The FETK is open source software (see http://www.fetk.org), and yet it's not hosted in a manner that is conducive to forking and merge requests. At least not to our knowledge. Therefore we have created this "fork" until a more permanent solution presents itself.

In this file is a list of the changes that were made to the FETK, by library, file, function, and line number, along with a brief description of why the change was made. I have taken great pains to comment each modification in the code, describing the purpose for each update. I have also prefaced each comment with "APBS-KTS", so that they may be easily located.

MALOC

Spurious errors are emitted under all circumstances because APBS code uses MALOC's scanf, and expects it to hand back results until there are no more tokens. MALOC's version of scanf however prints error messages when it hits the end of the input. I changed it so that it notices EOF, it reports it thusly, and doesn't spew dumb messages.

  • vio.c, "initialization", 103: Added an error field to the ASC struct to track EOF.
  • vio.c, Vio_scanf, 1473-1480: Check the above error field to see if we are here because of an EOF. If that's the case then just silently continue. Otherwise, print the error because something really did go wrong.
  • vio.c, ascmem_create, 1918: Initialize the error field to 0.
  • vio.c, ascmem_destroy, 1938: Reset the error field to 0.
  • vio.c, asc_getToken, 2159-2163: Commentary on the function.
  • vio.c, asc_getToken, 2199-2205: More commentary.
  • vio.c, asc_getToken, 2229-2236: Commented out a bug/unnecessary line of code; with explanation.
  • vio.c, asc_getToken, 2248-2254: Remove unnecessary error message and set error field to EOF.

About

Fork of the Finite Element ToolKit from fetk.org.

Topics

Resources

Stars

4 stars

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages