diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 000000000..e996b362f
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,88 @@
+---
+Checks: "-*,\
+bugprone-*,\
+-bugprone-easily-swappable-parameters,\
+-bugprone-assignment-in-if-condition,\
+-bugprone-signed-char-misuse,\
+-bugprone-branch-clone,\
+-bugprone-narrowing-conversions,\
+-bugprone-macro-parentheses,\
+-bugprone-switch-missing-default-case,\
+-bugprone-suspicious-include,\
+-bugprone-reserved-identifier,\
+-bugprone-misplaced-widening-cast,\
+-bugprone-implicit-widening-of-multiplication-result,\
+-bugprone-suspicious-realloc-usage,\
+-bugprone-sizeof-expression,\
+cert*,\
+-cert-err33-c,\
+-cert-err34-c,\
+-cert-str34-c,\
+-cert-dcl03-c,\
+-cert-msc30-c,\
+-cert-msc50-cpp,\
+-cert-dcl37-c,\
+-cert-dcl51-cpp,\
+clang-analyzer-*,\
+-clang-analyzer-core.CallAndMessage,\
+-clang-analyzer-core.DivideZero,\
+-clang-analyzer-core.NonNullParamChecker,\
+-clang-analyzer-core.NullDereference,\
+-clang-analyzer-core.UndefinedBinaryOperatorResult,\
+-clang-analyzer-core.VLASize,\
+-clang-analyzer-core.uninitialized.ArraySubscript,\
+-clang-analyzer-core.uninitialized.Assign,\
+-clang-analyzer-core.uninitialized.Branch,\
+-clang-analyzer-cplusplus.Move,\
+-clang-analyzer-cplusplus.NewDelete,\
+-clang-analyzer-cplusplus.NewDeleteLeaks,\
+-clang-analyzer-cplusplus.PlacementNew,\
+-clang-analyzer-deadcode.DeadStores,\
+-clang-analyzer-optin.cplusplus.UninitializedObject,\
+-clang-analyzer-optin.cplusplus.VirtualCall,\
+-clang-analyzer-optin.mpi.MPI-Checker,\
+-clang-analyzer-optin.performance.Padding,\
+-clang-analyzer-optin.portability.UnixAPI,\
+-clang-analyzer-security.FloatLoopCounter,\
+-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,\
+-clang-analyzer-security.insecureAPI.rand,\
+-clang-analyzer-security.insecureAPI.strcpy,\
+-clang-analyzer-unix.Malloc,\
+-clang-analyzer-unix.MallocSizeof,\
+-clang-analyzer-unix.MismatchedDeallocator,\
+-clang-analyzer-unix.cstring.NullArg,\
+-clang-analyzer-valist.Unterminated,\
+misc-*,\
+-misc-header-include-cycle,\
+-misc-include-cleaner,\
+-misc-no-recursion,\
+-misc-unused-parameters,\
+-misc-static-assert,\
+-misc-redundant-expression,\
+modernize-*,\
+-modernize-macro-to-enum,\
+mpi-*,\
+openmp-*,\
+performance-*,\
+-performance-no-int-to-ptr,\
+portability-*,\
+readability-*,\
+-readability-identifier-length,\
+-readability-isolate-declaration,\
+-readability-braces-around-statements,\
+-readability-magic-numbers,\
+-readability-else-after-return,\
+-readability-function-cognitive-complexity,\
+-readability-function-size,\
+-readability-non-const-parameter,\
+-readability-inconsistent-declaration-parameter-name,\
+-readability-avoid-unconditional-preprocessor-if,\
+-readability-named-parameter,\
+-readability-duplicate-include,\
+-readability-misleading-indentation,\
+-readability-avoid-const-params-in-decls,\
+-readability-redundant-declaration,\
+-readability-redundant-preprocessor,\
+"
+#WarningsAsErrors: "*"
+...