遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。 显示详细资料
[](https://www.bestpractices.dev/projects/3895)
<a href="https://www.bestpractices.dev/projects/3895"><img src="https://www.bestpractices.dev/projects/3895/badge"></a>
preCICE (Precise Code Interaction Coupling Environment) is a coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations. Partitioned means that preCICE couples existing programs (solvers) capable of simulating a subpart of the complete physics involved in a simulation. This allows for the high flexibility that is needed to keep a decent time-to-solution for complex multi-physics scenarios. preCICE runs efficiently on a wide spectrum of systems, from low-end workstations up to complete compute clusters and has proven scalability on 10000s of MPI Ranks.
The software offers methods for transient equation coupling, communication means, and data mapping schemes. preCICE is written in C++ and offers additional bindings for C, Fortran, Matlab, and Python. Ready-to-use adapters for well-known commercial and open-source solvers, such as OpenFOAM, deal.II, FEniCS, SU2, or CalculiX, are available. Due to the minimally-invasive approach of preCICE, adapters for in-house codes can be implemented and validated in only a few weeks.
https://github.com/precice/precice/blob/develop/docs/CONTRIBUTING.md
https://precice.org/fundamentals-roadmap
The doxygen documentation contains a high level overview of the software components and their responsibilities. https://precice.org/doxygen/develop/
https://precice.org/quickstart
The preCICE website is in sync with the latest release of preCICE. Documentation of subcomponents is stored along the code.
The preCICE website https://precice.org links to academic results (literature guide) and results from users (user stories).
The website aims to fulfil accessibility standards imposed by the Google Console. The preCICE software produces primarily textual output.
To reduce maintenance overhead and keep accessibility as high as possible, we decided to stick exclusively to English.
Websites don't store passwords.
Only the latest version is actively maintained. Maintenance of older versions is possible via support licences: https://precice.org/community-support-precice.html#2-support-license
Detailed porting guides are available between every subsequent major releases. https://precice.org/couple-your-code-porting-overview.html
GitHub issue tracker https://github.com/precice/precice/issues
Vulnerabilities are handled the same as issues and are mentioned in release notes and release posts.
Vulnerabilities are handled the same as issues. https://github.com/precice/precice/issues
The coding conventions are documented and supported by tooling. https://precice.org/dev-docs-dev-conventions
The project uses pre-commit with auto-formatters clang-format for C and C++, and black for Python.
CMake handles this natively.
Handled by CMake
There are no cross-dependencies.
CMake and the selected Generator are responsible for this.
Aside make install, the project provides Debian packages for supported versions and spack package for clusters.
The CMake installation uses GNUInstallDirs to allow overriding installation paths.
CMake presets and the spack package allow for quick local installations.
This is integrated into the build system via CMake.
警告:需要URL,但找不到URL。
Externally maintained components are part of the thirdparty folder in the project or use system-provided versions. Updating is a simple manual process. https://github.com/precice/precice/tree/develop/thirdparty
The project doesn't use deprecated functions and updates deprecations as soon as possible.
The project uses GitHub Actions to build and run a range of tests. https://github.com/precice/precice/actions/workflows/build-and-test.yml
Bugs in the preCICE library itself are generally first reproduced and narrowed down using tests. While we cannot provide a concrete number, we are positive that it is far above 50%.
The statement coverage is above 90%. https://app.codecov.io/gh/precice/precice
This is part of the review process and pull request template.
The contribution guide states that tests are required.
preCICE uses -Wall -Wextra -Wno-unused-parameter for C and C++ code.
-Wall -Wextra -Wno-unused-parameter
preCICE doesn't require authentication or similar practises.
Release tags are signed by the release managers. A project-wide key is a possibility in the future.
API calls are considered untrusted by default. Provided arguments are checked and data is sanitized.
Not yet implemented
A limited set of clang-tidy checks is applied to every commit. Additionally, Coverity is run weekly on the develop version of preCICE.
Massive amounts of false-positives via MPI implementations and Boost.Log makes sanitizers currently unactionable.
后退