neml2 1.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. neml2-1.3.1/.clang-format +31 -0
  2. neml2-1.3.1/.github/workflows/build_docs.yml +49 -0
  3. neml2-1.3.1/.github/workflows/python.yml +146 -0
  4. neml2-1.3.1/.github/workflows/tests.yml +179 -0
  5. neml2-1.3.1/.gitignore +40 -0
  6. neml2-1.3.1/.gitmodules +13 -0
  7. neml2-1.3.1/CMakeLists.txt +94 -0
  8. neml2-1.3.1/LICENSE +23 -0
  9. neml2-1.3.1/PKG-INFO +42 -0
  10. neml2-1.3.1/README.md +33 -0
  11. neml2-1.3.1/cmake/Modules/FindTorch.cmake +66 -0
  12. neml2-1.3.1/cmake/Modules/NEML2TorchConfig.cmake +17 -0
  13. neml2-1.3.1/cmake/Modules/NEML2UnityGroup.cmake +46 -0
  14. neml2-1.3.1/cmake/detect_torch_cxx11_abi/CMakeLists.txt +11 -0
  15. neml2-1.3.1/cmake/detect_torch_cxx11_abi/main.cxx +33 -0
  16. neml2-1.3.1/cmake-variants.yaml +61 -0
  17. neml2-1.3.1/doc/.gitignore +1 -0
  18. neml2-1.3.1/doc/CMakeLists.txt +73 -0
  19. neml2-1.3.1/doc/config/ANLReportExtra.sty +119 -0
  20. neml2-1.3.1/doc/config/ANLReportFooter.tex +20 -0
  21. neml2-1.3.1/doc/config/ANLReportHeader.tex +529 -0
  22. neml2-1.3.1/doc/config/Doxyfile.in +70 -0
  23. neml2-1.3.1/doc/config/DoxygenLayout.xml +213 -0
  24. neml2-1.3.1/doc/config/HTML.in +13 -0
  25. neml2-1.3.1/doc/config/LATEX.in +15 -0
  26. neml2-1.3.1/doc/content/_01_install.md +152 -0
  27. neml2-1.3.1/doc/content/_02_math.md +79 -0
  28. neml2-1.3.1/doc/content/_03_impl.md +270 -0
  29. neml2-1.3.1/doc/content/_04_devel.md +278 -0
  30. neml2-1.3.1/doc/content/asset/anl.png +0 -0
  31. neml2-1.3.1/doc/content/asset/doe.png +0 -0
  32. neml2-1.3.1/doc/content/asset/timings.png +0 -0
  33. neml2-1.3.1/doc/requirements.txt +1 -0
  34. neml2-1.3.1/extern/hit/CMakeLists.txt +28 -0
  35. neml2-1.3.1/include/neml2/base/CrossRef.h +114 -0
  36. neml2-1.3.1/include/neml2/base/DependencyDefinition.h +48 -0
  37. neml2-1.3.1/include/neml2/base/DependencyResolver.h +376 -0
  38. neml2-1.3.1/include/neml2/base/Factory.h +181 -0
  39. neml2-1.3.1/include/neml2/base/HITParser.h +58 -0
  40. neml2-1.3.1/include/neml2/base/NEML2Object.h +104 -0
  41. neml2-1.3.1/include/neml2/base/OptionCollection.h +56 -0
  42. neml2-1.3.1/include/neml2/base/OptionSet.h +451 -0
  43. neml2-1.3.1/include/neml2/base/Parser.h +54 -0
  44. neml2-1.3.1/include/neml2/base/Registry.h +91 -0
  45. neml2-1.3.1/include/neml2/base/Storage.h +182 -0
  46. neml2-1.3.1/include/neml2/base/config.h.in +42 -0
  47. neml2-1.3.1/include/neml2/drivers/Driver.h +61 -0
  48. neml2-1.3.1/include/neml2/drivers/TransientDriver.h +152 -0
  49. neml2-1.3.1/include/neml2/drivers/solid_mechanics/LargeDeformationIncrementalSolidMechanicsDriver.h +83 -0
  50. neml2-1.3.1/include/neml2/drivers/solid_mechanics/SolidMechanicsDriver.h +80 -0
  51. neml2-1.3.1/include/neml2/misc/error.h +95 -0
  52. neml2-1.3.1/include/neml2/misc/math.h +250 -0
  53. neml2-1.3.1/include/neml2/misc/parser_utils.h +106 -0
  54. neml2-1.3.1/include/neml2/misc/types.h +52 -0
  55. neml2-1.3.1/include/neml2/misc/utils.h +327 -0
  56. neml2-1.3.1/include/neml2/models/BackwardEulerTimeIntegration.h +69 -0
  57. neml2-1.3.1/include/neml2/models/BufferStore.h +158 -0
  58. neml2-1.3.1/include/neml2/models/ComposedModel.h +81 -0
  59. neml2-1.3.1/include/neml2/models/Data.h +68 -0
  60. neml2-1.3.1/include/neml2/models/ForceRate.h +60 -0
  61. neml2-1.3.1/include/neml2/models/ForwardEulerTimeIntegration.h +64 -0
  62. neml2-1.3.1/include/neml2/models/ImplicitUpdate.h +50 -0
  63. neml2-1.3.1/include/neml2/models/Interpolation.h +85 -0
  64. neml2-1.3.1/include/neml2/models/LinearInterpolation.h +125 -0
  65. neml2-1.3.1/include/neml2/models/Model.h +298 -0
  66. neml2-1.3.1/include/neml2/models/NonlinearParameter.h +64 -0
  67. neml2-1.3.1/include/neml2/models/ParameterStore.h +161 -0
  68. neml2-1.3.1/include/neml2/models/RotationMatrix.h +52 -0
  69. neml2-1.3.1/include/neml2/models/SR2Invariant.h +49 -0
  70. neml2-1.3.1/include/neml2/models/StateRate.h +60 -0
  71. neml2-1.3.1/include/neml2/models/SumModel.h +51 -0
  72. neml2-1.3.1/include/neml2/models/VariableStore.h +338 -0
  73. neml2-1.3.1/include/neml2/models/WR2ExplicitExponentialTimeIntegration.h +67 -0
  74. neml2-1.3.1/include/neml2/models/WR2ImplicitExponentialTimeIntegration.h +69 -0
  75. neml2-1.3.1/include/neml2/models/crystallography/CrystalGeometry.h +163 -0
  76. neml2-1.3.1/include/neml2/models/crystallography/CubicCrystal.h +45 -0
  77. neml2-1.3.1/include/neml2/models/crystallography/MillerIndex.h +57 -0
  78. neml2-1.3.1/include/neml2/models/crystallography/crystallography.h +62 -0
  79. neml2-1.3.1/include/neml2/models/crystallography/user_tensors/FillMillerIndex.h +56 -0
  80. neml2-1.3.1/include/neml2/models/crystallography/user_tensors/SymmetryFromOrbifold.h +52 -0
  81. neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativeIsotropicPlasticHardening.h +53 -0
  82. neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativeKinematicPlasticHardening.h +47 -0
  83. neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativePlasticFlow.h +47 -0
  84. neml2-1.3.1/include/neml2/models/solid_mechanics/ChabochePlasticHardening.h +56 -0
  85. neml2-1.3.1/include/neml2/models/solid_mechanics/ElasticStrain.h +52 -0
  86. neml2-1.3.1/include/neml2/models/solid_mechanics/Elasticity.h +67 -0
  87. neml2-1.3.1/include/neml2/models/solid_mechanics/FlowRule.h +41 -0
  88. neml2-1.3.1/include/neml2/models/solid_mechanics/GTNYieldFunction.h +69 -0
  89. neml2-1.3.1/include/neml2/models/solid_mechanics/GursonCavitation.h +51 -0
  90. neml2-1.3.1/include/neml2/models/solid_mechanics/IsotropicHardening.h +45 -0
  91. neml2-1.3.1/include/neml2/models/solid_mechanics/IsotropicMandelStress.h +42 -0
  92. neml2-1.3.1/include/neml2/models/solid_mechanics/KinematicHardening.h +45 -0
  93. neml2-1.3.1/include/neml2/models/solid_mechanics/LinearIsotropicElasticity.h +47 -0
  94. neml2-1.3.1/include/neml2/models/solid_mechanics/LinearIsotropicHardening.h +47 -0
  95. neml2-1.3.1/include/neml2/models/solid_mechanics/LinearKinematicHardening.h +48 -0
  96. neml2-1.3.1/include/neml2/models/solid_mechanics/MandelStress.h +42 -0
  97. neml2-1.3.1/include/neml2/models/solid_mechanics/Normality.h +50 -0
  98. neml2-1.3.1/include/neml2/models/solid_mechanics/OverStress.h +50 -0
  99. neml2-1.3.1/include/neml2/models/solid_mechanics/PerzynaPlasticFlowRate.h +47 -0
  100. neml2-1.3.1/include/neml2/models/solid_mechanics/PlasticFlowRate.h +45 -0
  101. neml2-1.3.1/include/neml2/models/solid_mechanics/RateIndependentPlasticFlowConstraint.h +54 -0
  102. neml2-1.3.1/include/neml2/models/solid_mechanics/TotalStrain.h +52 -0
  103. neml2-1.3.1/include/neml2/models/solid_mechanics/VoceIsotropicHardening.h +44 -0
  104. neml2-1.3.1/include/neml2/models/solid_mechanics/YieldFunction.h +54 -0
  105. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.h +59 -0
  106. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/FixOrientation.h +59 -0
  107. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.h +45 -0
  108. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/OrientationRate.h +60 -0
  109. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.h +60 -0
  110. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PlasticVorticity.h +60 -0
  111. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.h +49 -0
  112. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/ResolvedShear.h +60 -0
  113. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipHardeningRule.h +49 -0
  114. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.h +50 -0
  115. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SlipRule.h +57 -0
  116. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SlipStrengthMap.h +48 -0
  117. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SumSlipRates.h +63 -0
  118. neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.h +49 -0
  119. neml2-1.3.1/include/neml2/solvers/Newton.h +73 -0
  120. neml2-1.3.1/include/neml2/solvers/NewtonWithLineSearch.h +63 -0
  121. neml2-1.3.1/include/neml2/solvers/NewtonWithTrustRegion.h +99 -0
  122. neml2-1.3.1/include/neml2/solvers/NonlinearSolver.h +66 -0
  123. neml2-1.3.1/include/neml2/solvers/NonlinearSystem.h +128 -0
  124. neml2-1.3.1/include/neml2/solvers/Solver.h +51 -0
  125. neml2-1.3.1/include/neml2/solvers/TrustRegionSubProblem.h +71 -0
  126. neml2-1.3.1/include/neml2/tensors/BatchTensor.h +114 -0
  127. neml2-1.3.1/include/neml2/tensors/BatchTensorBase.h +473 -0
  128. neml2-1.3.1/include/neml2/tensors/FixedDimTensor.h +184 -0
  129. neml2-1.3.1/include/neml2/tensors/LabeledAxis.h +253 -0
  130. neml2-1.3.1/include/neml2/tensors/LabeledAxisAccessor.h +125 -0
  131. neml2-1.3.1/include/neml2/tensors/LabeledMatrix.h +61 -0
  132. neml2-1.3.1/include/neml2/tensors/LabeledTensor.h +298 -0
  133. neml2-1.3.1/include/neml2/tensors/LabeledTensor3D.h +55 -0
  134. neml2-1.3.1/include/neml2/tensors/LabeledVector.h +58 -0
  135. neml2-1.3.1/include/neml2/tensors/Quaternion.h +64 -0
  136. neml2-1.3.1/include/neml2/tensors/R2.h +58 -0
  137. neml2-1.3.1/include/neml2/tensors/R2Base.h +148 -0
  138. neml2-1.3.1/include/neml2/tensors/R3.h +56 -0
  139. neml2-1.3.1/include/neml2/tensors/R4.h +69 -0
  140. neml2-1.3.1/include/neml2/tensors/R5.h +41 -0
  141. neml2-1.3.1/include/neml2/tensors/Rot.h +90 -0
  142. neml2-1.3.1/include/neml2/tensors/SFFR4.h +41 -0
  143. neml2-1.3.1/include/neml2/tensors/SFR3.h +42 -0
  144. neml2-1.3.1/include/neml2/tensors/SR2.h +126 -0
  145. neml2-1.3.1/include/neml2/tensors/SSFR5.h +42 -0
  146. neml2-1.3.1/include/neml2/tensors/SSR4.h +88 -0
  147. neml2-1.3.1/include/neml2/tensors/SWR4.h +46 -0
  148. neml2-1.3.1/include/neml2/tensors/Scalar.h +179 -0
  149. neml2-1.3.1/include/neml2/tensors/TensorValue.h +80 -0
  150. neml2-1.3.1/include/neml2/tensors/Transformable.h +64 -0
  151. neml2-1.3.1/include/neml2/tensors/Variable.h +273 -0
  152. neml2-1.3.1/include/neml2/tensors/Vec.h +55 -0
  153. neml2-1.3.1/include/neml2/tensors/VecBase.h +123 -0
  154. neml2-1.3.1/include/neml2/tensors/WR2.h +60 -0
  155. neml2-1.3.1/include/neml2/tensors/WSR4.h +46 -0
  156. neml2-1.3.1/include/neml2/tensors/WWR4.h +49 -0
  157. neml2-1.3.1/include/neml2/tensors/list_tensors.h +56 -0
  158. neml2-1.3.1/include/neml2/tensors/macros.h +54 -0
  159. neml2-1.3.1/include/neml2/tensors/tensors.h +45 -0
  160. neml2-1.3.1/include/neml2/tensors/user_tensors/EmptyBatchTensor.h +49 -0
  161. neml2-1.3.1/include/neml2/tensors/user_tensors/EmptyFixedDimTensor.h +56 -0
  162. neml2-1.3.1/include/neml2/tensors/user_tensors/Fill3DVec.h +53 -0
  163. neml2-1.3.1/include/neml2/tensors/user_tensors/FillR2.h +53 -0
  164. neml2-1.3.1/include/neml2/tensors/user_tensors/FillRot.h +53 -0
  165. neml2-1.3.1/include/neml2/tensors/user_tensors/FillSR2.h +53 -0
  166. neml2-1.3.1/include/neml2/tensors/user_tensors/FillWR2.h +53 -0
  167. neml2-1.3.1/include/neml2/tensors/user_tensors/FullBatchTensor.h +49 -0
  168. neml2-1.3.1/include/neml2/tensors/user_tensors/FullFixedDimTensor.h +56 -0
  169. neml2-1.3.1/include/neml2/tensors/user_tensors/IdentityBatchTensor.h +49 -0
  170. neml2-1.3.1/include/neml2/tensors/user_tensors/LinspaceBatchTensor.h +49 -0
  171. neml2-1.3.1/include/neml2/tensors/user_tensors/LinspaceFixedDimTensor.h +56 -0
  172. neml2-1.3.1/include/neml2/tensors/user_tensors/LogspaceBatchTensor.h +49 -0
  173. neml2-1.3.1/include/neml2/tensors/user_tensors/LogspaceFixedDimTensor.h +56 -0
  174. neml2-1.3.1/include/neml2/tensors/user_tensors/OnesBatchTensor.h +49 -0
  175. neml2-1.3.1/include/neml2/tensors/user_tensors/OnesFixedDimTensor.h +56 -0
  176. neml2-1.3.1/include/neml2/tensors/user_tensors/Orientation.h +77 -0
  177. neml2-1.3.1/include/neml2/tensors/user_tensors/UserBatchTensor.h +49 -0
  178. neml2-1.3.1/include/neml2/tensors/user_tensors/UserFixedDimTensor.h +56 -0
  179. neml2-1.3.1/include/neml2/tensors/user_tensors/ZerosBatchTensor.h +49 -0
  180. neml2-1.3.1/include/neml2/tensors/user_tensors/ZerosFixedDimTensor.h +56 -0
  181. neml2-1.3.1/pyproject.toml +50 -0
  182. neml2-1.3.1/python/CMakeLists.txt +43 -0
  183. neml2-1.3.1/python/neml2/__init__.py +32 -0
  184. neml2-1.3.1/python/neml2/base/Factory.cxx +42 -0
  185. neml2-1.3.1/python/neml2/base/HITParser.cxx +39 -0
  186. neml2-1.3.1/python/neml2/base/OptionCollection.cxx +37 -0
  187. neml2-1.3.1/python/neml2/base/OptionSet.cxx +36 -0
  188. neml2-1.3.1/python/neml2/base/Storage.h +55 -0
  189. neml2-1.3.1/python/neml2/base/base.cxx +43 -0
  190. neml2-1.3.1/python/neml2/misc/indexing.h +117 -0
  191. neml2-1.3.1/python/neml2/misc/math.cxx +58 -0
  192. neml2-1.3.1/python/neml2/misc/types.h +84 -0
  193. neml2-1.3.1/python/neml2/models/Model.cxx +58 -0
  194. neml2-1.3.1/python/neml2/models/models.cxx +40 -0
  195. neml2-1.3.1/python/neml2/tensors/BatchTensor.cxx +126 -0
  196. neml2-1.3.1/python/neml2/tensors/BatchTensorBase.h +282 -0
  197. neml2-1.3.1/python/neml2/tensors/FixedDimTensor.h +110 -0
  198. neml2-1.3.1/python/neml2/tensors/LabeledAxis.cxx +57 -0
  199. neml2-1.3.1/python/neml2/tensors/LabeledAxisAccessor.cxx +59 -0
  200. neml2-1.3.1/python/neml2/tensors/LabeledMatrix.cxx +39 -0
  201. neml2-1.3.1/python/neml2/tensors/LabeledTensor.h +77 -0
  202. neml2-1.3.1/python/neml2/tensors/LabeledVector.cxx +39 -0
  203. neml2-1.3.1/python/neml2/tensors/MillerIndex.cxx +33 -0
  204. neml2-1.3.1/python/neml2/tensors/Quaternion.cxx +33 -0
  205. neml2-1.3.1/python/neml2/tensors/R2.cxx +36 -0
  206. neml2-1.3.1/python/neml2/tensors/R2Base.h +63 -0
  207. neml2-1.3.1/python/neml2/tensors/R3.cxx +33 -0
  208. neml2-1.3.1/python/neml2/tensors/R4.cxx +33 -0
  209. neml2-1.3.1/python/neml2/tensors/R5.cxx +33 -0
  210. neml2-1.3.1/python/neml2/tensors/Rot.cxx +52 -0
  211. neml2-1.3.1/python/neml2/tensors/SFFR4.cxx +33 -0
  212. neml2-1.3.1/python/neml2/tensors/SFR3.cxx +33 -0
  213. neml2-1.3.1/python/neml2/tensors/SR2.cxx +33 -0
  214. neml2-1.3.1/python/neml2/tensors/SSFR5.cxx +33 -0
  215. neml2-1.3.1/python/neml2/tensors/SSR4.cxx +33 -0
  216. neml2-1.3.1/python/neml2/tensors/SWR4.cxx +33 -0
  217. neml2-1.3.1/python/neml2/tensors/Scalar.cxx +54 -0
  218. neml2-1.3.1/python/neml2/tensors/TensorValue.cxx +58 -0
  219. neml2-1.3.1/python/neml2/tensors/Vec.cxx +38 -0
  220. neml2-1.3.1/python/neml2/tensors/VecBase.h +95 -0
  221. neml2-1.3.1/python/neml2/tensors/WR2.cxx +38 -0
  222. neml2-1.3.1/python/neml2/tensors/WSR4.cxx +33 -0
  223. neml2-1.3.1/python/neml2/tensors/WWR4.cxx +33 -0
  224. neml2-1.3.1/python/neml2/tensors/tensors.cxx +99 -0
  225. neml2-1.3.1/python/requirements.txt +5 -0
  226. neml2-1.3.1/requirements.txt +7 -0
  227. neml2-1.3.1/scripts/analyze_timings.py +78 -0
  228. neml2-1.3.1/scripts/benchmark.sh +31 -0
  229. neml2-1.3.1/scripts/check_copyright.py +166 -0
  230. neml2-1.3.1/scripts/coverage.sh +41 -0
  231. neml2-1.3.1/scripts/extract_timings.py +111 -0
  232. neml2-1.3.1/scripts/generate_stub_docs.py +50 -0
  233. neml2-1.3.1/scripts/requirements.txt +2 -0
  234. neml2-1.3.1/scripts/syntax_to_md.py +89 -0
  235. neml2-1.3.1/src/neml2/CMakeLists.txt +66 -0
  236. neml2-1.3.1/src/neml2/base/CrossRef.cxx +80 -0
  237. neml2-1.3.1/src/neml2/base/Factory.cxx +77 -0
  238. neml2-1.3.1/src/neml2/base/HITParser.cxx +161 -0
  239. neml2-1.3.1/src/neml2/base/NEML2Object.cxx +41 -0
  240. neml2-1.3.1/src/neml2/base/OptionCollection.cxx +58 -0
  241. neml2-1.3.1/src/neml2/base/OptionSet.cxx +134 -0
  242. neml2-1.3.1/src/neml2/base/Parser.cxx +28 -0
  243. neml2-1.3.1/src/neml2/base/Registry.cxx +89 -0
  244. neml2-1.3.1/src/neml2/drivers/Driver.cxx +42 -0
  245. neml2-1.3.1/src/neml2/drivers/TransientDriver.cxx +307 -0
  246. neml2-1.3.1/src/neml2/drivers/solid_mechanics/LargeDeformationIncrementalSolidMechanicsDriver.cxx +127 -0
  247. neml2-1.3.1/src/neml2/drivers/solid_mechanics/SolidMechanicsDriver.cxx +137 -0
  248. neml2-1.3.1/src/neml2/misc/error.cxx +42 -0
  249. neml2-1.3.1/src/neml2/misc/math.cxx +354 -0
  250. neml2-1.3.1/src/neml2/misc/parser_utils.cxx +137 -0
  251. neml2-1.3.1/src/neml2/misc/types.cxx +52 -0
  252. neml2-1.3.1/src/neml2/misc/utils.cxx +75 -0
  253. neml2-1.3.1/src/neml2/models/BackwardEulerTimeIntegration.cxx +99 -0
  254. neml2-1.3.1/src/neml2/models/BufferStore.cxx +51 -0
  255. neml2-1.3.1/src/neml2/models/ComposedModel.cxx +187 -0
  256. neml2-1.3.1/src/neml2/models/Data.cxx +41 -0
  257. neml2-1.3.1/src/neml2/models/ForceRate.cxx +100 -0
  258. neml2-1.3.1/src/neml2/models/ForwardEulerTimeIntegration.cxx +91 -0
  259. neml2-1.3.1/src/neml2/models/ImplicitUpdate.cxx +123 -0
  260. neml2-1.3.1/src/neml2/models/LinearInterpolation.cxx +87 -0
  261. neml2-1.3.1/src/neml2/models/Model.cxx +441 -0
  262. neml2-1.3.1/src/neml2/models/NonlinearParameter.cxx +46 -0
  263. neml2-1.3.1/src/neml2/models/ParameterStore.cxx +112 -0
  264. neml2-1.3.1/src/neml2/models/RotationMatrix.cxx +58 -0
  265. neml2-1.3.1/src/neml2/models/SR2Invariant.cxx +106 -0
  266. neml2-1.3.1/src/neml2/models/StateRate.cxx +100 -0
  267. neml2-1.3.1/src/neml2/models/SumModel.cxx +76 -0
  268. neml2-1.3.1/src/neml2/models/VariableStore.cxx +174 -0
  269. neml2-1.3.1/src/neml2/models/WR2ExplicitExponentialTimeIntegration.cxx +80 -0
  270. neml2-1.3.1/src/neml2/models/WR2ImplicitExponentialTimeIntegration.cxx +83 -0
  271. neml2-1.3.1/src/neml2/models/crystallography/CrystalGeometry.cxx +239 -0
  272. neml2-1.3.1/src/neml2/models/crystallography/CubicCrystal.cxx +59 -0
  273. neml2-1.3.1/src/neml2/models/crystallography/MillerIndex.cxx +59 -0
  274. neml2-1.3.1/src/neml2/models/crystallography/crystallography.cxx +174 -0
  275. neml2-1.3.1/src/neml2/models/crystallography/user_tensors/FillMillerIndex.cxx +57 -0
  276. neml2-1.3.1/src/neml2/models/crystallography/user_tensors/SymmetryFromOrbifold.cxx +49 -0
  277. neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativeIsotropicPlasticHardening.cxx +74 -0
  278. neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativeKinematicPlasticHardening.cxx +79 -0
  279. neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativePlasticFlow.cxx +76 -0
  280. neml2-1.3.1/src/neml2/models/solid_mechanics/ChabochePlasticHardening.cxx +85 -0
  281. neml2-1.3.1/src/neml2/models/solid_mechanics/ElasticStrain.cxx +73 -0
  282. neml2-1.3.1/src/neml2/models/solid_mechanics/Elasticity.cxx +50 -0
  283. neml2-1.3.1/src/neml2/models/solid_mechanics/FlowRule.cxx +42 -0
  284. neml2-1.3.1/src/neml2/models/solid_mechanics/GTNYieldFunction.cxx +347 -0
  285. neml2-1.3.1/src/neml2/models/solid_mechanics/GursonCavitation.cxx +76 -0
  286. neml2-1.3.1/src/neml2/models/solid_mechanics/IsotropicHardening.cxx +44 -0
  287. neml2-1.3.1/src/neml2/models/solid_mechanics/IsotropicMandelStress.cxx +55 -0
  288. neml2-1.3.1/src/neml2/models/solid_mechanics/KinematicHardening.cxx +44 -0
  289. neml2-1.3.1/src/neml2/models/solid_mechanics/LinearIsotropicElasticity.cxx +68 -0
  290. neml2-1.3.1/src/neml2/models/solid_mechanics/LinearIsotropicHardening.cxx +59 -0
  291. neml2-1.3.1/src/neml2/models/solid_mechanics/LinearKinematicHardening.cxx +60 -0
  292. neml2-1.3.1/src/neml2/models/solid_mechanics/MandelStress.cxx +44 -0
  293. neml2-1.3.1/src/neml2/models/solid_mechanics/Normality.cxx +85 -0
  294. neml2-1.3.1/src/neml2/models/solid_mechanics/OverStress.cxx +68 -0
  295. neml2-1.3.1/src/neml2/models/solid_mechanics/PerzynaPlasticFlowRate.cxx +70 -0
  296. neml2-1.3.1/src/neml2/models/solid_mechanics/PlasticFlowRate.cxx +44 -0
  297. neml2-1.3.1/src/neml2/models/solid_mechanics/RateIndependentPlasticFlowConstraint.cxx +85 -0
  298. neml2-1.3.1/src/neml2/models/solid_mechanics/TotalStrain.cxx +73 -0
  299. neml2-1.3.1/src/neml2/models/solid_mechanics/VoceIsotropicHardening.cxx +59 -0
  300. neml2-1.3.1/src/neml2/models/solid_mechanics/YieldFunction.cxx +82 -0
  301. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.cxx +76 -0
  302. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/FixOrientation.cxx +68 -0
  303. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.cxx +56 -0
  304. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/OrientationRate.cxx +75 -0
  305. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.cxx +81 -0
  306. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PlasticVorticity.cxx +75 -0
  307. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.cxx +73 -0
  308. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/ResolvedShear.cxx +78 -0
  309. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipHardeningRule.cxx +51 -0
  310. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.cxx +60 -0
  311. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SlipRule.cxx +59 -0
  312. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SlipStrengthMap.cxx +52 -0
  313. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SumSlipRates.cxx +73 -0
  314. neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.cxx +61 -0
  315. neml2-1.3.1/src/neml2/solvers/Newton.cxx +130 -0
  316. neml2-1.3.1/src/neml2/solvers/NewtonWithLineSearch.cxx +94 -0
  317. neml2-1.3.1/src/neml2/solvers/NewtonWithTrustRegion.cxx +171 -0
  318. neml2-1.3.1/src/neml2/solvers/NonlinearSolver.cxx +46 -0
  319. neml2-1.3.1/src/neml2/solvers/NonlinearSystem.cxx +196 -0
  320. neml2-1.3.1/src/neml2/solvers/Solver.cxx +42 -0
  321. neml2-1.3.1/src/neml2/solvers/TrustRegionSubProblem.cxx +78 -0
  322. neml2-1.3.1/src/neml2/tensors/BatchTensor.cxx +158 -0
  323. neml2-1.3.1/src/neml2/tensors/BatchTensorBase.cxx +361 -0
  324. neml2-1.3.1/src/neml2/tensors/FixedDimTensor.cxx +23 -0
  325. neml2-1.3.1/src/neml2/tensors/LabeledAxis.cxx +471 -0
  326. neml2-1.3.1/src/neml2/tensors/LabeledAxisAccessor.cxx +147 -0
  327. neml2-1.3.1/src/neml2/tensors/LabeledMatrix.cxx +83 -0
  328. neml2-1.3.1/src/neml2/tensors/LabeledTensor.cxx +243 -0
  329. neml2-1.3.1/src/neml2/tensors/LabeledTensor3D.cxx +76 -0
  330. neml2-1.3.1/src/neml2/tensors/LabeledVector.cxx +67 -0
  331. neml2-1.3.1/src/neml2/tensors/Quaternion.cxx +75 -0
  332. neml2-1.3.1/src/neml2/tensors/R2.cxx +51 -0
  333. neml2-1.3.1/src/neml2/tensors/R2Base.cxx +255 -0
  334. neml2-1.3.1/src/neml2/tensors/R3.cxx +54 -0
  335. neml2-1.3.1/src/neml2/tensors/R4.cxx +96 -0
  336. neml2-1.3.1/src/neml2/tensors/R5.cxx +29 -0
  337. neml2-1.3.1/src/neml2/tensors/Rot.cxx +142 -0
  338. neml2-1.3.1/src/neml2/tensors/SFFR4.cxx +29 -0
  339. neml2-1.3.1/src/neml2/tensors/SFR3.cxx +29 -0
  340. neml2-1.3.1/src/neml2/tensors/SR2.cxx +223 -0
  341. neml2-1.3.1/src/neml2/tensors/SSFR5.cxx +29 -0
  342. neml2-1.3.1/src/neml2/tensors/SSR4.cxx +161 -0
  343. neml2-1.3.1/src/neml2/tensors/SWR4.cxx +37 -0
  344. neml2-1.3.1/src/neml2/tensors/Scalar.cxx +53 -0
  345. neml2-1.3.1/src/neml2/tensors/Transformable.cxx +69 -0
  346. neml2-1.3.1/src/neml2/tensors/Variable.cxx +117 -0
  347. neml2-1.3.1/src/neml2/tensors/Vec.cxx +49 -0
  348. neml2-1.3.1/src/neml2/tensors/VecBase.cxx +107 -0
  349. neml2-1.3.1/src/neml2/tensors/WR2.cxx +97 -0
  350. neml2-1.3.1/src/neml2/tensors/WSR4.cxx +37 -0
  351. neml2-1.3.1/src/neml2/tensors/WWR4.cxx +44 -0
  352. neml2-1.3.1/src/neml2/tensors/user_tensors/EmptyBatchTensor.cxx +47 -0
  353. neml2-1.3.1/src/neml2/tensors/user_tensors/EmptyFixedDimTensor.cxx +50 -0
  354. neml2-1.3.1/src/neml2/tensors/user_tensors/Fill3DVec.cxx +53 -0
  355. neml2-1.3.1/src/neml2/tensors/user_tensors/FillR2.cxx +72 -0
  356. neml2-1.3.1/src/neml2/tensors/user_tensors/FillRot.cxx +75 -0
  357. neml2-1.3.1/src/neml2/tensors/user_tensors/FillSR2.cxx +60 -0
  358. neml2-1.3.1/src/neml2/tensors/user_tensors/FillWR2.cxx +55 -0
  359. neml2-1.3.1/src/neml2/tensors/user_tensors/FullBatchTensor.cxx +49 -0
  360. neml2-1.3.1/src/neml2/tensors/user_tensors/FullFixedDimTensor.cxx +53 -0
  361. neml2-1.3.1/src/neml2/tensors/user_tensors/IdentityBatchTensor.cxx +47 -0
  362. neml2-1.3.1/src/neml2/tensors/user_tensors/LinspaceBatchTensor.cxx +57 -0
  363. neml2-1.3.1/src/neml2/tensors/user_tensors/LinspaceFixedDimTensor.cxx +59 -0
  364. neml2-1.3.1/src/neml2/tensors/user_tensors/LogspaceBatchTensor.cxx +55 -0
  365. neml2-1.3.1/src/neml2/tensors/user_tensors/LogspaceFixedDimTensor.cxx +61 -0
  366. neml2-1.3.1/src/neml2/tensors/user_tensors/OnesBatchTensor.cxx +47 -0
  367. neml2-1.3.1/src/neml2/tensors/user_tensors/OnesFixedDimTensor.cxx +50 -0
  368. neml2-1.3.1/src/neml2/tensors/user_tensors/Orientation.cxx +195 -0
  369. neml2-1.3.1/src/neml2/tensors/user_tensors/UserBatchTensor.cxx +62 -0
  370. neml2-1.3.1/src/neml2/tensors/user_tensors/UserFixedDimTensor.cxx +65 -0
  371. neml2-1.3.1/src/neml2/tensors/user_tensors/ZerosBatchTensor.cxx +47 -0
  372. neml2-1.3.1/src/neml2/tensors/user_tensors/ZerosFixedDimTensor.cxx +50 -0
  373. neml2-1.3.1/tests/CMakeLists.txt +237 -0
  374. neml2-1.3.1/tests/benchmark/chaboche/chaboche.cxx +47 -0
  375. neml2-1.3.1/tests/benchmark/chaboche/model.i +162 -0
  376. neml2-1.3.1/tests/benchmark/main.cxx +28 -0
  377. neml2-1.3.1/tests/benchmark/taylor_rolling_fcc/model.i +196 -0
  378. neml2-1.3.1/tests/benchmark/taylor_rolling_fcc/taylor_rolling_fcc.cxx +49 -0
  379. neml2-1.3.1/tests/benchmark/taylor_single_orientation/model.i +193 -0
  380. neml2-1.3.1/tests/benchmark/taylor_single_orientation/taylor_single_orientation.cxx +49 -0
  381. neml2-1.3.1/tests/include/J2FlowDirection.h +48 -0
  382. neml2-1.3.1/tests/include/ModelUnitTest.h +99 -0
  383. neml2-1.3.1/tests/include/SampleNonlinearSystems.h +65 -0
  384. neml2-1.3.1/tests/include/SampleParserTestingModel.h +39 -0
  385. neml2-1.3.1/tests/include/SampleRateModel.h +52 -0
  386. neml2-1.3.1/tests/include/TabulatedPolynomialModel.h +126 -0
  387. neml2-1.3.1/tests/include/TransientRegression.h +58 -0
  388. neml2-1.3.1/tests/include/VTestParser.h +52 -0
  389. neml2-1.3.1/tests/include/VTestTimeSeries.h +46 -0
  390. neml2-1.3.1/tests/include/VTestVerification.h +60 -0
  391. neml2-1.3.1/tests/include/utils.h +110 -0
  392. neml2-1.3.1/tests/profiling/main.cxx +45 -0
  393. neml2-1.3.1/tests/profiling/model.i +161 -0
  394. neml2-1.3.1/tests/python/base/test_HITParser.i +19 -0
  395. neml2-1.3.1/tests/python/base/test_HITParser.py +33 -0
  396. neml2-1.3.1/tests/python/models/test_Model.i +19 -0
  397. neml2-1.3.1/tests/python/models/test_Model.py +113 -0
  398. neml2-1.3.1/tests/python/models/test_ParameterStore.i +7 -0
  399. neml2-1.3.1/tests/python/models/test_ParameterStore.py +84 -0
  400. neml2-1.3.1/tests/python/tensors/common.py +73 -0
  401. neml2-1.3.1/tests/python/tensors/test_BatchTensor.py +92 -0
  402. neml2-1.3.1/tests/python/tensors/test_BatchTensorBase.py +265 -0
  403. neml2-1.3.1/tests/python/tensors/test_FixedDimTensor.py +65 -0
  404. neml2-1.3.1/tests/python/tensors/test_LabeledAxisAccessor.py +85 -0
  405. neml2-1.3.1/tests/python/tensors/test_Scalar.py +84 -0
  406. neml2-1.3.1/tests/regression/main.cxx +27 -0
  407. neml2-1.3.1/tests/regression/solid_mechanics/crystal_plasticity/basic_single_crystal/gold/result.pt +0 -0
  408. neml2-1.3.1/tests/regression/solid_mechanics/crystal_plasticity/basic_single_crystal/model.i +217 -0
  409. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/gurson/gold/result.pt +0 -0
  410. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/gurson/model.i +172 -0
  411. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isoharden/gold/result.pt +0 -0
  412. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isoharden/model.i +135 -0
  413. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isokinharden/gold/result.pt +0 -0
  414. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isokinharden/model.i +149 -0
  415. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/kinharden/gold/result.pt +0 -0
  416. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/kinharden/model.i +136 -0
  417. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/perfect/gold/result.pt +0 -0
  418. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/perfect/model.i +122 -0
  419. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/radial_return/gold/result.pt +0 -0
  420. neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/radial_return/model.i +189 -0
  421. neml2-1.3.1/tests/regression/solid_mechanics/regression_solid_mechanics.cxx +74 -0
  422. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/alt_composition/gold/result.pt +0 -0
  423. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/alt_composition/model.i +137 -0
  424. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/chaboche/gold/result.pt +0 -0
  425. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/chaboche/model.i +167 -0
  426. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isoharden/gold/result.pt +0 -0
  427. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isoharden/model.i +134 -0
  428. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isokinharden/gold/result.pt +0 -0
  429. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isokinharden/model.i +148 -0
  430. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/kinharden/gold/result.pt +0 -0
  431. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/kinharden/model.i +136 -0
  432. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/misc/polynomial/gold/result.pt +0 -0
  433. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/misc/polynomial/model.i +241 -0
  434. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/perfect/gold/result.pt +0 -0
  435. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/perfect/model.i +122 -0
  436. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/radial_return/gold/result.pt +0 -0
  437. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/radial_return/model.i +206 -0
  438. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/stress_control/gold/result.pt +0 -0
  439. neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/stress_control/model.i +153 -0
  440. neml2-1.3.1/tests/requirements.txt +4 -0
  441. neml2-1.3.1/tests/src/CMakeLists.txt +5 -0
  442. neml2-1.3.1/tests/src/J2FlowDirection.cxx +66 -0
  443. neml2-1.3.1/tests/src/ModelUnitTest.cxx +238 -0
  444. neml2-1.3.1/tests/src/SampleNonlinearSystems.cxx +127 -0
  445. neml2-1.3.1/tests/src/SampleParserTestingModel.cxx +73 -0
  446. neml2-1.3.1/tests/src/SampleRateModel.cxx +78 -0
  447. neml2-1.3.1/tests/src/TabulatedPolynomialModel.cxx +122 -0
  448. neml2-1.3.1/tests/src/TransientRegression.cxx +111 -0
  449. neml2-1.3.1/tests/src/VTestParser.cxx +85 -0
  450. neml2-1.3.1/tests/src/VTestTimeSeries.cxx +90 -0
  451. neml2-1.3.1/tests/src/VTestVerification.cxx +100 -0
  452. neml2-1.3.1/tests/src/utils.cxx +53 -0
  453. neml2-1.3.1/tests/unit/README.md +32 -0
  454. neml2-1.3.1/tests/unit/base/test_CrossRef.cxx +80 -0
  455. neml2-1.3.1/tests/unit/base/test_CrossRef_Scalar.i +21 -0
  456. neml2-1.3.1/tests/unit/base/test_CrossRef_empty_Scalar.i +7 -0
  457. neml2-1.3.1/tests/unit/base/test_CrossRef_empty_Tensor.i +8 -0
  458. neml2-1.3.1/tests/unit/base/test_Factory.cxx +54 -0
  459. neml2-1.3.1/tests/unit/base/test_HITParser.cxx +133 -0
  460. neml2-1.3.1/tests/unit/base/test_HITParser1.i +27 -0
  461. neml2-1.3.1/tests/unit/base/test_HITParser2.i +28 -0
  462. neml2-1.3.1/tests/unit/base/test_OptionSet.cxx +92 -0
  463. neml2-1.3.1/tests/unit/base/test_Registry.cxx +38 -0
  464. neml2-1.3.1/tests/unit/crystallography/test_CrystalGeometry.cxx +106 -0
  465. neml2-1.3.1/tests/unit/crystallography/test_CrystalGeometry.i +32 -0
  466. neml2-1.3.1/tests/unit/crystallography/test_CubicCrystal.cxx +106 -0
  467. neml2-1.3.1/tests/unit/crystallography/test_CubicCrystal.i +23 -0
  468. neml2-1.3.1/tests/unit/crystallography/test_MillerIndex.cxx +67 -0
  469. neml2-1.3.1/tests/unit/crystallography/user_tensors/test_FillMillerIndex.cxx +47 -0
  470. neml2-1.3.1/tests/unit/crystallography/user_tensors/test_FillMillerIndex.i +18 -0
  471. neml2-1.3.1/tests/unit/crystallography/user_tensors/test_SymmetryFromOrbifold.cxx +170 -0
  472. neml2-1.3.1/tests/unit/crystallography/user_tensors/test_SymmetryFromOrbifold.i +50 -0
  473. neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver.cxx +47 -0
  474. neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver_strain.i +71 -0
  475. neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver_stress.i +74 -0
  476. neml2-1.3.1/tests/unit/main.cxx +27 -0
  477. neml2-1.3.1/tests/unit/misc/test_parser_utils.cxx +88 -0
  478. neml2-1.3.1/tests/unit/misc/test_utils.cxx +126 -0
  479. neml2-1.3.1/tests/unit/models/ComposedModel1.i +32 -0
  480. neml2-1.3.1/tests/unit/models/ComposedModel2.i +51 -0
  481. neml2-1.3.1/tests/unit/models/ComposedModel3.i +70 -0
  482. neml2-1.3.1/tests/unit/models/ImplicitUpdate.i +58 -0
  483. neml2-1.3.1/tests/unit/models/SR2Invariant_I1.i +33 -0
  484. neml2-1.3.1/tests/unit/models/SR2Invariant_I2.i +33 -0
  485. neml2-1.3.1/tests/unit/models/SR2Invariant_VONMISES.i +34 -0
  486. neml2-1.3.1/tests/unit/models/SR2LinearInterpolation1.i +62 -0
  487. neml2-1.3.1/tests/unit/models/SR2LinearInterpolation2.i +62 -0
  488. neml2-1.3.1/tests/unit/models/SR2LinearInterpolation3.i +64 -0
  489. neml2-1.3.1/tests/unit/models/SR2LinearInterpolation4.i +72 -0
  490. neml2-1.3.1/tests/unit/models/SR2SumModel.i +34 -0
  491. neml2-1.3.1/tests/unit/models/ScalarBackwardEulerTimeIntegration.i +19 -0
  492. neml2-1.3.1/tests/unit/models/ScalarForceRate.i +19 -0
  493. neml2-1.3.1/tests/unit/models/ScalarForwardEulerTimeIntegration.i +19 -0
  494. neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation1.i +38 -0
  495. neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation2.i +38 -0
  496. neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation3.i +48 -0
  497. neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation4.i +48 -0
  498. neml2-1.3.1/tests/unit/models/ScalarStateRate.i +19 -0
  499. neml2-1.3.1/tests/unit/models/ScalarSumModel.i +19 -0
  500. neml2-1.3.1/tests/unit/models/WR2ExplicitExponentialTimeIntegration.i +38 -0
  501. neml2-1.3.1/tests/unit/models/WR2ImplicitExponentialTimeIntegration.i +43 -0
  502. neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativeIsotropicPlasticHardening.i +18 -0
  503. neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativeKinematicPlasticHardening.i +31 -0
  504. neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativePlasticFlow.i +31 -0
  505. neml2-1.3.1/tests/unit/models/solid_mechanics/ChabochePlasticHardening.i +39 -0
  506. neml2-1.3.1/tests/unit/models/solid_mechanics/ElasticStrain.i +32 -0
  507. neml2-1.3.1/tests/unit/models/solid_mechanics/ElasticStrainRate.i +33 -0
  508. neml2-1.3.1/tests/unit/models/solid_mechanics/GTNYieldFunction.i +24 -0
  509. neml2-1.3.1/tests/unit/models/solid_mechanics/GTNYieldFunctionStress.i +49 -0
  510. neml2-1.3.1/tests/unit/models/solid_mechanics/GursonCavitation.i +27 -0
  511. neml2-1.3.1/tests/unit/models/solid_mechanics/IsotropicMandelStress.i +28 -0
  512. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity.i +31 -0
  513. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_compliance.i +31 -0
  514. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_compliance_rate.i +32 -0
  515. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_rate.i +31 -0
  516. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicHardening.i +18 -0
  517. neml2-1.3.1/tests/unit/models/solid_mechanics/LinearKinematicHardening.i +29 -0
  518. neml2-1.3.1/tests/unit/models/solid_mechanics/NonlinearParameter.i +59 -0
  519. neml2-1.3.1/tests/unit/models/solid_mechanics/Normality.i +64 -0
  520. neml2-1.3.1/tests/unit/models/solid_mechanics/OverStress.i +32 -0
  521. neml2-1.3.1/tests/unit/models/solid_mechanics/PerzynaPlasticFlowRate.i +19 -0
  522. neml2-1.3.1/tests/unit/models/solid_mechanics/RateIndependentPlasticFlowConstraint.i +35 -0
  523. neml2-1.3.1/tests/unit/models/solid_mechanics/TotalStrain.i +32 -0
  524. neml2-1.3.1/tests/unit/models/solid_mechanics/TotalStrainRate.i +33 -0
  525. neml2-1.3.1/tests/unit/models/solid_mechanics/VoceIsotropicHardening.i +20 -0
  526. neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_isoharden.i +40 -0
  527. neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_isokinharden.i +47 -0
  528. neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_kinharden.i +44 -0
  529. neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_perfect.i +38 -0
  530. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.i +42 -0
  531. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/FixOrientation.i +30 -0
  532. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.i +33 -0
  533. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/OrientationRate.i +42 -0
  534. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.i +73 -0
  535. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PlasticVorticity.i +73 -0
  536. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.i +70 -0
  537. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/ResolvedShear.i +69 -0
  538. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.i +51 -0
  539. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/SumSlipRates.i +50 -0
  540. neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.i +34 -0
  541. neml2-1.3.1/tests/unit/models/test_ParameterStore.cxx +130 -0
  542. neml2-1.3.1/tests/unit/models/test_models.cxx +75 -0
  543. neml2-1.3.1/tests/unit/solvers/test_NonlinearSolvers.cxx +99 -0
  544. neml2-1.3.1/tests/unit/solvers/test_NonlinearSystem.cxx +50 -0
  545. neml2-1.3.1/tests/unit/tensors/test_BatchTensor.cxx +62 -0
  546. neml2-1.3.1/tests/unit/tensors/test_BatchTensorBase.cxx +627 -0
  547. neml2-1.3.1/tests/unit/tensors/test_FixedDimTensor.cxx +226 -0
  548. neml2-1.3.1/tests/unit/tensors/test_LabeledAxis.cxx +343 -0
  549. neml2-1.3.1/tests/unit/tensors/test_LabeledAxisAccesor.cxx +95 -0
  550. neml2-1.3.1/tests/unit/tensors/test_LabeledTensor.cxx +197 -0
  551. neml2-1.3.1/tests/unit/tensors/test_Quaternion.cxx +57 -0
  552. neml2-1.3.1/tests/unit/tensors/test_R2.cxx +258 -0
  553. neml2-1.3.1/tests/unit/tensors/test_R3.cxx +95 -0
  554. neml2-1.3.1/tests/unit/tensors/test_R4.cxx +156 -0
  555. neml2-1.3.1/tests/unit/tensors/test_Rot.cxx +160 -0
  556. neml2-1.3.1/tests/unit/tensors/test_SR2.cxx +272 -0
  557. neml2-1.3.1/tests/unit/tensors/test_SSR4.cxx +226 -0
  558. neml2-1.3.1/tests/unit/tensors/test_Scalar.cxx +138 -0
  559. neml2-1.3.1/tests/unit/tensors/test_Vec.cxx +76 -0
  560. neml2-1.3.1/tests/unit/tensors/test_VecBase.cxx +123 -0
  561. neml2-1.3.1/tests/unit/tensors/test_WR2.cxx +210 -0
  562. neml2-1.3.1/tests/unit/tensors/test_WWR4.cxx +62 -0
  563. neml2-1.3.1/tests/unit/tensors/test_list_tensors.cxx +153 -0
  564. neml2-1.3.1/tests/unit/tensors/test_symmetry_operator_definitions.cxx +61 -0
  565. neml2-1.3.1/tests/unit/tensors/test_vector_transform.cxx +77 -0
  566. neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyBatchTensor.cxx +42 -0
  567. neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyBatchTensor.i +7 -0
  568. neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyFixedDimTensor.cxx +59 -0
  569. neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyFixedDimTensor.i +46 -0
  570. neml2-1.3.1/tests/unit/tensors/user_tensors/test_Fill3DVec.cxx +47 -0
  571. neml2-1.3.1/tests/unit/tensors/user_tensors/test_Fill3DVec.i +14 -0
  572. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillR2.cxx +51 -0
  573. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillR2.i +18 -0
  574. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillSR2.cxx +47 -0
  575. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillSR2.i +14 -0
  576. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullBatchTensor.cxx +43 -0
  577. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullBatchTensor.i +8 -0
  578. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullFixedDimTensor.cxx +61 -0
  579. neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullFixedDimTensor.i +57 -0
  580. neml2-1.3.1/tests/unit/tensors/user_tensors/test_IdentityBatchTensor.cxx +43 -0
  581. neml2-1.3.1/tests/unit/tensors/user_tensors/test_IdentityBatchTensor.i +7 -0
  582. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceBatchTensor.cxx +48 -0
  583. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceBatchTensor.i +21 -0
  584. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceFixedDimTensor.cxx +68 -0
  585. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceFixedDimTensor.i +199 -0
  586. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceBatchTensor.cxx +49 -0
  587. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceBatchTensor.i +21 -0
  588. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceFixedDimTensor.cxx +69 -0
  589. neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceFixedDimTensor.i +199 -0
  590. neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesBatchTensor.cxx +43 -0
  591. neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesBatchTensor.i +7 -0
  592. neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesFixedDimTensor.cxx +61 -0
  593. neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesFixedDimTensor.i +46 -0
  594. neml2-1.3.1/tests/unit/tensors/user_tensors/test_Orientation.cxx +92 -0
  595. neml2-1.3.1/tests/unit/tensors/user_tensors/test_Orientation.i +56 -0
  596. neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor.cxx +76 -0
  597. neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor.i +26 -0
  598. neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor_error.i +8 -0
  599. neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserFixedDimTensor.cxx +71 -0
  600. neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserFixedDimTensor.i +112 -0
  601. neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosBatchTensor.cxx +43 -0
  602. neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosBatchTensor.i +7 -0
  603. neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosFixedDimTensor.cxx +61 -0
  604. neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosFixedDimTensor.i +46 -0
  605. neml2-1.3.1/tests/verification/main.cxx +27 -0
  606. neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.i +151 -0
  607. neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.vtest +207 -0
  608. neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.xml +54 -0
  609. neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.i +162 -0
  610. neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.vtest +207 -0
  611. neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.xml +33 -0
  612. neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.i +169 -0
  613. neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.vtest +207 -0
  614. neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.xml +62 -0
  615. neml2-1.3.1/tests/verification/solid_mechanics/gurson/gurson.i +127 -0
  616. neml2-1.3.1/tests/verification/solid_mechanics/gurson/gurson.vtest +121 -0
  617. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/combined.i +131 -0
  618. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/combined.vtest +107 -0
  619. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_multiaxial.i +117 -0
  620. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_multiaxial.vtest +106 -0
  621. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_uniaxial.i +117 -0
  622. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_uniaxial.vtest +207 -0
  623. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/perzyna.xml +95 -0
  624. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/voce.i +118 -0
  625. neml2-1.3.1/tests/verification/solid_mechanics/perzyna/voce.vtest +107 -0
  626. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/perfect.i +105 -0
  627. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/perfect.vtest +107 -0
  628. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/ri.xml +49 -0
  629. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceiso.i +124 -0
  630. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceiso.vtest +107 -0
  631. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceisolinkin.i +138 -0
  632. neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceisolinkin.vtest +107 -0
  633. neml2-1.3.1/tests/verification/solid_mechanics/verification_solid_mechanics.cxx +74 -0
@@ -0,0 +1,31 @@
1
+ BasedOnStyle: LLVM
2
+
3
+ TabWidth: 2
4
+ ColumnLimit: 100
5
+ UseTab: Never
6
+
7
+ CommentPragmas: "^/"
8
+ ReflowComments: true
9
+ AlignTrailingComments: true
10
+ SpacesBeforeTrailingComments: 1
11
+
12
+ SpaceBeforeParens: ControlStatements
13
+ SpacesInSquareBrackets: false
14
+ BreakBeforeBraces: Allman
15
+ PointerAlignment: Middle
16
+
17
+ BinPackParameters: false
18
+ BinPackArguments: false
19
+ PackConstructorInitializers: Never
20
+ AllowShortBlocksOnASingleLine: false
21
+ AllowShortFunctionsOnASingleLine: true
22
+ AllowShortIfStatementsOnASingleLine: false
23
+ AllowShortLoopsOnASingleLine: false
24
+
25
+ SortIncludes: false
26
+ IndentCaseLabels: true
27
+ ConstructorInitializerIndentWidth: 2
28
+ AlwaysBreakAfterDefinitionReturnType: TopLevel
29
+ AlwaysBreakTemplateDeclarations: true
30
+
31
+ FixNamespaceComments: false
@@ -0,0 +1,49 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ # Triggers the workflow on push or pull request
5
+ push:
6
+ branches: [main]
7
+ pull_request:
8
+ branches: [main]
9
+ # Allows you to run this workflow manually from the Actions tab
10
+ workflow_dispatch:
11
+
12
+ # Newer commits should cancel old runs
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ submodules: recursive
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.8"
27
+ - run: pip install -r requirements.txt
28
+ - run: |
29
+ cmake \
30
+ -DCMAKE_BUILD_TYPE=Release \
31
+ -DCMAKE_UNITY_BUILD=OFF \
32
+ -DNEML2_UNIT=ON \
33
+ -DNEML2_REGRESSION=OFF \
34
+ -DNEML2_VERIFICATION=OFF \
35
+ -DNEML2_BENCHMARK=OFF \
36
+ -DNEML2_PROFILING=OFF \
37
+ -DNEML2_PYBIND=OFF \
38
+ -DNEML2_DOC=ON \
39
+ .
40
+ - run: make doc-syntax -j 2
41
+ - run: make doc-html
42
+ - run: cat doc/doxygen.log
43
+ - name: Deploy to GitHub Pages
44
+ if: ${{ github.event_name == 'push' }}
45
+ uses: JamesIves/github-pages-deploy-action@v4.4.1
46
+ with:
47
+ branch: gh-pages
48
+ folder: doc/build/html
49
+ single-commit: true
@@ -0,0 +1,146 @@
1
+ name: python
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ # Allows you to run this workflow manually from the Actions tab
9
+ workflow_dispatch:
10
+ release:
11
+ types:
12
+ - published
13
+
14
+ permissions:
15
+ contents: read # Required when overriding permissions
16
+ pull-requests: write # For posting coverage report
17
+ checks: write
18
+
19
+ # Newer commits should cancel old runs
20
+ concurrency:
21
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
22
+ cancel-in-progress: true
23
+
24
+ jobs:
25
+ black:
26
+ name: Formatting Check
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ - uses: psf/black@stable
31
+ with:
32
+ options: "--check -v"
33
+ src: "python/neml2 tests/python"
34
+ build-test:
35
+ name: Build and test Python bindings
36
+ needs: black
37
+ strategy:
38
+ fail-fast: false
39
+ matrix:
40
+ os: [ubuntu-latest, macos-latest]
41
+ runs-on: ${{ matrix.os }}
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+ with:
45
+ submodules: recursive
46
+ - uses: jwlawson/actions-setup-cmake@v2
47
+ with:
48
+ cmake-version: "3.23"
49
+ - uses: actions/setup-python@v5
50
+ with:
51
+ python-version: "3.8"
52
+ - name: Install Python dependencies
53
+ run: pip install -r requirements.txt
54
+ - name: Install PyTorch
55
+ run: pip install torch==2.2.1
56
+ - run: |
57
+ cmake \
58
+ -DCMAKE_BUILD_TYPE=Debug \
59
+ -DCMAKE_UNITY_BUILD=ON \
60
+ -DNEML2_UNIT=OFF \
61
+ -DNEML2_REGRESSION=OFF \
62
+ -DNEML2_VERIFICATION=OFF \
63
+ -DNEML2_BENCHMARK=OFF \
64
+ -DNEML2_PROFILING=OFF \
65
+ -DNEML2_PYBIND=ON \
66
+ -DNEML2_DOC=OFF \
67
+ -B build \
68
+ .
69
+ - run: cd build && make -j 2
70
+ - run: PYTHONPATH=build/python pytest --junitxml=build/python/pytest.xml tests
71
+ - name: Publish Test Results
72
+ uses: EnricoMi/publish-unit-test-result-action@v2
73
+ if: matrix.os == 'ubuntu-latest'
74
+ with:
75
+ files: build/python/pytest.xml
76
+ check_name: Python Binding Test Results (${{ matrix.os }})
77
+ - name: Publish Test Results
78
+ uses: EnricoMi/publish-unit-test-result-action/composite@v2
79
+ if: matrix.os == 'macos-latest'
80
+ with:
81
+ files: build/python/pytest.xml
82
+ check_name: Python Binding Test Results (${{ matrix.os }})
83
+ sdist:
84
+ name: Build source distribution
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - uses: actions/checkout@v4
88
+ - name: Build SDist
89
+ run: pipx run build --sdist
90
+ - name: Upload SDist
91
+ uses: actions/upload-artifact@v4
92
+ if: github.event_name == 'release' && github.event.action == 'published'
93
+ with:
94
+ name: package-sdist
95
+ path: dist/*.tar.gz
96
+ wheels:
97
+ needs: build-test
98
+ strategy:
99
+ fail-fast: false
100
+ matrix:
101
+ os: [ubuntu-latest, macos-latest]
102
+ runs-on: ${{ matrix.os }}
103
+ steps:
104
+ - name: Backup docker
105
+ if: matrix.os == 'ubuntu-latest'
106
+ run: sudo mv /var/lib/docker ${GITHUB_WORKSPACE}/docker
107
+ - name: Maximize build space
108
+ if: matrix.os == 'ubuntu-latest'
109
+ uses: easimon/maximize-build-space@master
110
+ with:
111
+ remove-dotnet: "true"
112
+ remove-android: "true"
113
+ remove-haskell: "true"
114
+ remove-codeql: "true"
115
+ build-mount-path: "/var/lib/docker/"
116
+ - name: Remount docker
117
+ if: matrix.os == 'ubuntu-latest'
118
+ run: sudo sh -c "mv ${GITHUB_WORKSPACE}/docker/* /var/lib/docker"
119
+ - uses: actions/checkout@v4
120
+ with:
121
+ submodules: recursive
122
+ - uses: jwlawson/actions-setup-cmake@v2
123
+ with:
124
+ cmake-version: "3.23"
125
+ - name: Build wheels
126
+ uses: pypa/cibuildwheel@v2.16.5
127
+ - name: Upload wheels
128
+ if: github.event_name == 'release' && github.event.action == 'published'
129
+ uses: actions/upload-artifact@v4
130
+ with:
131
+ name: package-wheels-${{ matrix.os }}-${{ strategy.job-index }}
132
+ path: ./wheelhouse/*.whl
133
+ PyPI:
134
+ needs: [sdist, wheels]
135
+ environment: pypi
136
+ permissions:
137
+ id-token: write
138
+ runs-on: ubuntu-latest
139
+ if: github.event_name == 'release' && github.event.action == 'published'
140
+ steps:
141
+ - uses: actions/download-artifact@v4
142
+ with:
143
+ pattern: package-*
144
+ path: dist
145
+ merge-multiple: true
146
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,179 @@
1
+ name: tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ # Allows you to run this workflow manually from the Actions tab
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read # Required when overriding permissions
13
+ pull-requests: write # For posting coverage report
14
+ checks: write
15
+
16
+ # Newer commits should cancel old runs
17
+ concurrency:
18
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ clang-format:
23
+ name: Formatting Check
24
+ runs-on: ubuntu-latest
25
+ strategy:
26
+ matrix:
27
+ path:
28
+ - "src"
29
+ - "include"
30
+ - "tests"
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+ - name: Run clang-format style check
34
+ uses: jidicula/clang-format-action@v4.11.0
35
+ with:
36
+ clang-format-version: "17"
37
+ check-path: ${{ matrix.path }}
38
+ copyright:
39
+ name: Copyright check
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.8"
46
+ - name: Check to see if source files have the correct copyright header
47
+ run: ./scripts/check_copyright.py
48
+ build-test:
49
+ needs: clang-format
50
+ strategy:
51
+ matrix:
52
+ os: [ubuntu-latest, macos-latest]
53
+ btype: [Release, Debug]
54
+ unity: [ON, OFF]
55
+ runs-on: ${{ matrix.os }}
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ with:
59
+ submodules: recursive
60
+ - uses: jwlawson/actions-setup-cmake@v2
61
+ with:
62
+ cmake-version: "3.23"
63
+ - run: |
64
+ cmake \
65
+ -DCMAKE_BUILD_TYPE=${{ matrix.btype }} \
66
+ -DCMAKE_UNITY_BUILD=${{ matrix.unity }} \
67
+ -DNEML2_UNIT=ON \
68
+ -DNEML2_REGRESSION=ON \
69
+ -DNEML2_VERIFICATION=ON \
70
+ -DNEML2_BENCHMARK=OFF \
71
+ -DNEML2_PROFILING=OFF \
72
+ -DNEML2_PYBIND=OFF \
73
+ -DNEML2_DOC=OFF \
74
+ .
75
+ - run: make -j 2
76
+ - run: cd tests && ./unit_tests -r junit > unit_tests.xml
77
+ continue-on-error: true
78
+ - run: cd tests && ./regression_tests -r junit > regression_tests.xml
79
+ continue-on-error: true
80
+ - run: cd tests && ./verification_tests -r junit > verification_tests.xml
81
+ continue-on-error: true
82
+ - name: Publish Test Results
83
+ uses: EnricoMi/publish-unit-test-result-action@v2
84
+ if: matrix.os == 'ubuntu-latest'
85
+ with:
86
+ files: tests/*.xml
87
+ check_name: Test Results (${{ matrix.os }}-${{ matrix.btype }}-${{ matrix.unity }})
88
+ - name: Publish Test Results
89
+ uses: EnricoMi/publish-unit-test-result-action/composite@v2
90
+ if: matrix.os == 'macos-latest'
91
+ with:
92
+ files: tests/*.xml
93
+ check_name: Test Results (${{ matrix.os }}-${{ matrix.btype }}-${{ matrix.unity }})
94
+ build-all:
95
+ needs: clang-format
96
+ runs-on: ubuntu-latest
97
+ strategy:
98
+ matrix:
99
+ btype: [Release, Debug]
100
+ unity: [ON, OFF]
101
+ steps:
102
+ - uses: actions/checkout@v4
103
+ with:
104
+ submodules: recursive
105
+ - run: |
106
+ cmake \
107
+ -DCMAKE_BUILD_TYPE=${{ matrix.btype }} \
108
+ -DCMAKE_UNITY_BUILD=${{ matrix.unity }} \
109
+ -DNEML2_UNIT=ON \
110
+ -DNEML2_REGRESSION=ON \
111
+ -DNEML2_VERIFICATION=ON \
112
+ -DNEML2_BENCHMARK=ON \
113
+ -DNEML2_PROFILING=ON \
114
+ -DNEML2_PYBIND=OFF \
115
+ -DNEML2_DOC=OFF \
116
+ .
117
+ - run: make -j 2
118
+ coverage:
119
+ name: Code coverage check
120
+ needs: build-test
121
+ runs-on: ubuntu-latest
122
+ if: github.event_name == 'pull_request'
123
+ steps:
124
+ - uses: actions/checkout@v4
125
+ with:
126
+ submodules: recursive
127
+ - run: sudo apt install lcov
128
+ - run: |
129
+ cmake \
130
+ -DCMAKE_BUILD_TYPE=Coverage \
131
+ -DCMAKE_UNITY_BUILD=OFF \
132
+ -DNEML2_UNIT=ON \
133
+ -DNEML2_REGRESSION=ON \
134
+ -DNEML2_VERIFICATION=ON \
135
+ -DNEML2_BENCHMARK=OFF \
136
+ -DNEML2_PROFILING=OFF \
137
+ -DNEML2_DOC=OFF \
138
+ .
139
+ - run: make -j 2
140
+ - run: ./scripts/coverage.sh
141
+ - uses: romeovs/lcov-reporter-action@v0.3.1
142
+ with:
143
+ lcov-file: ./coverage/coverage.info
144
+ github-token: ${{ secrets.PR_ACTION }}
145
+ delete-old-comments: true
146
+ cmake-integration:
147
+ name: Test CMake integration as a subproject
148
+ needs: clang-format
149
+ runs-on: ubuntu-latest
150
+ steps:
151
+ - uses: actions/checkout@v4
152
+ with:
153
+ submodules: recursive
154
+ path: neml2
155
+ - name: Create a source file for testing purposes
156
+ run: |
157
+ echo -e "\
158
+ #include \"neml2/base/Registry.h\"\n\
159
+ int main() {\n\
160
+ neml2::Registry::print(std::cout);\n\
161
+ return 0;\n\
162
+ }\
163
+ " > main.cxx
164
+ - run: cat main.cxx
165
+ - name: Create a CMakeLists.txt file for testing purposes
166
+ run: |
167
+ echo -e "\
168
+ cmake_minimum_required(VERSION 3.5)
169
+ project(FOO)\n\
170
+ add_subdirectory(neml2)\n\
171
+ add_executable(foo main.cxx)\n\
172
+ target_link_libraries(foo neml2)\n\
173
+ " > CMakeLists.txt
174
+ - run: cat CMakeLists.txt
175
+ - name: Configure with CMake
176
+ run: cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DNEML2_DOC=OFF -B build .
177
+ - name: Compile
178
+ run: cd build && make -j 2
179
+ - run: cd build && ./foo
neml2-1.3.1/.gitignore ADDED
@@ -0,0 +1,40 @@
1
+ CMakeCache.txt
2
+ CMakeFiles
3
+ cmake_install.cmake
4
+ CMakeDoxyfile.in
5
+ detect_cuda*
6
+ *.swp
7
+ Makefile
8
+ *.a
9
+ src/test
10
+ CTestTestfile.cmake
11
+ DartConfiguration.tcl
12
+ Testing
13
+ *.cmake
14
+ tests/*tests
15
+ .cache
16
+ compile_commands.json
17
+ coverage
18
+ doc/class-doc
19
+ *.html
20
+ .vscode
21
+ doc/doctrees
22
+ doc/html
23
+ !cmake/Modules/*
24
+ *.log
25
+ *.so
26
+ *.dylib
27
+ *.pt
28
+ !**/gold/*.pt
29
+ **/syntax.yml
30
+ build
31
+ _deps
32
+ __pycache__
33
+ config.h
34
+ conftest.py
35
+ *.pyi
36
+ neml2.egg-info
37
+ .pytest_cache
38
+ src/neml2/base/config.h
39
+ install
40
+ conftest.py
@@ -0,0 +1,13 @@
1
+ [submodule "extern/Catch2"]
2
+ path = extern/Catch2
3
+ url = https://github.com/catchorg/Catch2.git
4
+ ignore = dirty
5
+ [submodule "extern/doxygen-awesome-css"]
6
+ path = extern/doxygen-awesome-css
7
+ url = https://github.com/jothepro/doxygen-awesome-css.git
8
+ [submodule "extern/hit/hit"]
9
+ path = extern/hit/hit
10
+ url = https://github.com/idaholab/hit.git
11
+ [submodule "extern/gperftools"]
12
+ path = extern/gperftools
13
+ url = https://github.com/gperftools/gperftools.git
@@ -0,0 +1,94 @@
1
+ cmake_minimum_required(VERSION 3.23)
2
+
3
+ project(NEML2 LANGUAGES CXX)
4
+
5
+ # Setup modules
6
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${NEML2_SOURCE_DIR}/cmake/Modules/")
7
+
8
+ # Ninja only: limit number of jobs in a CI build
9
+ set_property(GLOBAL PROPERTY JOB_POOLS CI=6)
10
+
11
+ # FindPython should return the first matching Python
12
+ if(POLICY CMP0094)
13
+ cmake_policy(SET CMP0094 NEW)
14
+ endif()
15
+
16
+ # Suppress the warning related to the new policy on fetch content's timestamp
17
+ if(POLICY CMP0135)
18
+ cmake_policy(SET CMP0135 NEW)
19
+ endif()
20
+
21
+ # Suppress the warning related to the new policy on FindPythonXXX
22
+ if(POLICY CMP0148)
23
+ cmake_policy(SET CMP0148 NEW)
24
+ endif()
25
+
26
+ # Accept Release, Debug, and RelWithDebInfo, add Coverage build types
27
+ set(CMAKE_CXX_FLAGS_COVERAGE
28
+ "-O0 -fprofile-arcs -ftest-coverage"
29
+ CACHE STRING "Flags used by C++ compiler during coverage builds."
30
+ FORCE)
31
+
32
+ # Set the default build type
33
+ if(NOT CMAKE_BUILD_TYPE)
34
+ set(CMAKE_BUILD_TYPE "Debug" CACHE
35
+ STRING "Choose the type of build." FORCE)
36
+
37
+ # Set the possible values of build type for cmake-gui
38
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
39
+ "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage")
40
+ endif()
41
+
42
+ # Add the unity option to the cache
43
+ option(CMAKE_UNITY_BUILD "Use a unity build" OFF)
44
+
45
+ # c++ 17 support
46
+ set(CMAKE_CXX_STANDARD 17)
47
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
48
+
49
+ find_package(Torch)
50
+
51
+ # Install rpath, important for a relocatable install
52
+ option(NEML2_WHEELS "Customize the build for Python wheels" OFF)
53
+
54
+ if(NEML2_WHEELS)
55
+ if(UNIX)
56
+ if(APPLE)
57
+ set(CMAKE_INSTALL_RPATH "@loader_path;@loader_path/lib;@loader_path/../torch/lib;@loader_path/../../torch/lib")
58
+ else()
59
+ set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/lib;$ORIGIN/../torch/lib;$ORIGIN/../../torch/lib")
60
+ endif()
61
+ endif()
62
+ else()
63
+ if(UNIX)
64
+ if(APPLE)
65
+ set(CMAKE_INSTALL_RPATH "@loader_path;@loader_path/lib;${Torch_LINK_DIRECTORIES}")
66
+ else()
67
+ set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/lib;${Torch_LINK_DIRECTORIES}")
68
+ endif()
69
+ endif()
70
+ endif()
71
+
72
+ # base library
73
+ add_subdirectory(src/neml2)
74
+
75
+ # testing
76
+ option(NEML2_TESTS "Build NEML2 tests" ON)
77
+
78
+ if(NEML2_TESTS)
79
+ add_subdirectory(tests)
80
+ endif()
81
+
82
+ # Doxygen
83
+ option(NEML2_DOC "Build NEML2 documentation: doxygen" OFF)
84
+
85
+ if(NEML2_DOC)
86
+ add_subdirectory(doc)
87
+ endif()
88
+
89
+ # Python binding
90
+ option(NEML2_PYBIND "Build NEML2 Python binding" OFF)
91
+
92
+ if(NEML2_PYBIND)
93
+ add_subdirectory(python)
94
+ endif()
neml2-1.3.1/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright 2023, UChicago Argonne, LLC
2
+ All Rights Reserved
3
+ Software Name: NEML2 -- the New Engineering material Model Library, version 2
4
+ By: Argonne National Laboratory
5
+ OPEN SOURCE LICENSE (MIT)
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
neml2-1.3.1/PKG-INFO ADDED
@@ -0,0 +1,42 @@
1
+ Metadata-Version: 2.1
2
+ Name: neml2
3
+ Version: 1.3.1
4
+ Summary: GPU-enabled vectorized material modeling library
5
+ Author-Email: Mark Messner <messner@anl.gov>, Gary Hu <thu@anl.gov>
6
+ Requires-Python: >=3.8
7
+ Requires-Dist: torch==2.2.1
8
+ Description-Content-Type: text/markdown
9
+
10
+ # Overview
11
+
12
+ [![Documentation](https://github.com/reverendbedford/neml2/actions/workflows/build_docs.yml/badge.svg?branch=main)](https://reverendbedford.github.io/neml2/) [![tests](https://github.com/reverendbedford/neml2/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/reverendbedford/neml2/actions/workflows/tests.yml)
13
+
14
+ ### The New Engineering Material model Library, version 2
15
+
16
+ NEML2 is an offshoot of [NEML](https://github.com/Argonne-National-Laboratory/neml), an earlier constitutive modeling code developed at Argonne National Laboratory.
17
+ Like NEML, NEML2 provides a flexible, modular way to build constitutive models from smaller blocks.
18
+ Unlike NEML, NEML2 vectorizes the constitutive update to efficiently run on GPUs. NEML2 is built on top of [PyTorch](https://pytorch.org/cppdocs/)
19
+ to provide GPU support, but this also means that NEML2 models have all the features of a PyTorch module. So, for example, users can take derivatives of the model with respect to parameters using automatic differentiation.
20
+
21
+ NEML2 is provided as open source software under a MIT [license](https://raw.githubusercontent.com/reverendbedford/neml2/main/LICENSE).
22
+
23
+ ### Build and installation
24
+
25
+ Building should be as easy as cloning the repository, configuring with CMake, building with `make`, and testing with `make test`.
26
+
27
+ By default NEML2 will download the current CPU-only version of torch. To instead use a system torch set CMake options `-DLIBTORCH_DIR=/path/to/your/torch`. If you use the default build you will get a CPU-only version of torch and performance might suffer compared to a CUDA version.
28
+
29
+ ### NEML2 features and design philosophy
30
+
31
+ - **Modular constitutive models**: NEML2 material models are modular – they are built up from smaller pieces into a complete model. For example, a model might piece together a temperature-dependent elasticity model, a yield surface, a flow rule, and several hardening rules. Each of these submodels is independent of the other objects so that, for example, switching from conventional J2 plasticity to a non J2 theory requires only a one line change in an input file, if the model is already implemented, or a relatively small amount of coding to add the new yield surface if it has not been implemented. All of these objects are interchangeable. For example, the damage, viscoplastic, and rate-independent plasticity models all use the same yield (flow) surfaces, hardening rules, elasticity models, and so on.
32
+ - **Extensible constitutive models**: The library is structured so that adding a new feature to an existing material model should be as simple as possible and require as little code as possible. As part of this philosophy, the library only requires new components provide a few partial derivatives and NEML uses this information to assemble the Jacobian needed to do a fully implement, backward Euler integration of the ordinary differential equations comprising the model form and to provide the algorithmic tangent needed to integrate the model into an implicit finite element framework. Moreover, in NEML2 implementations can forgo providing these partial derivatives and NEML2 will calculate them with automatic differentiation -- albeit at a significant performance cost.
33
+ - **Friendly user interfaces**: There are two general ways to create and interface with NEML2 material models: the python bindings and the compiled library with [HIT](https://github.com/idaholab/moose/tree/next/framework/contrib/hit) input. The python bindings are generally used for creating, fitting, and debugging new material models. In python, a material model is built up object-by-object and assembled into a complete mathematical constitutive relation. NEML2 provides several python drivers for exercising these material models in simple loading configurations. These drivers include common test types, like uniaxial tension tests and strain-controlled cyclic fatigue tests along with more esoteric drivers supporting simplified models of high temperature pressure vessels, like n-bar models and generalized plane-strain axisymmetry. NEML2 provides a full Abaqus UMAT interface and examples of how to link the compiled library into C, C++, or Fortran codes. These interfaces can be used to call NEML2 models from finite element codes. When using the compiled library, NEML2 models can be created and archived using a hierarchical HIT format.
34
+ - **Strict quality assurance**: NEML2 is developed under a strict quality assurance program. Because the NEML2 distribution does not provide full, parameterized models for any actual materials, ensuring the quality of the library is a verification problem – testing to make sure that NEML2 is correctly implementing the mathematical models – rather than a validation problem of comparing the results of a model to an actual test. This verification is done with extensive unit testing. This unit testing verifies every mathematical function and every derivative in the library is correctly implemented.
35
+ - **CPU/GPU Vectorization**: NEML2 models can be vectorized, meaning that a large batch of constitutive models can be evaluated simultaneously. The vectorized model can be evaluated both on CPU and on GPU, with a unified, intuitive user interface.
36
+ - **Flexible model composition**: NEML2 offers a more flexible way of composing models. Each individual model only defines the forward operator (and optionally its derivative) with a given set of inputs and outputs, without knowing anything a priori about how it is going to be used. When a set of models are *composed* together to form a composite model, dependencies among different models are automatically detected, registered, and resolved. The user has *complete control* over how NEML2 evaluates a set of models.
37
+ - **Faster evaluation of chained models**: As a result the dependency resolution mentioned above, an optimal order of evaluating the composed model is used to perform the forward operation -- every model in the dependency graph is evaluated once and only once, avoiding any redundant calculations.
38
+ - **General implicit update**: NEML2 offers a general interface for defining implicit models, unlike NEML which requires the implicit function to be in the form of an ODE.
39
+
40
+ ### Disclaimer
41
+
42
+ NEML2 does not provide a database of models for any particular class of materials. There are many example materials contained in the library release. These models are included entirely for illustrative purposes and do not represent the response of any actual material. Right now these models are solid mechanics constitutive models, providing the stress/strain response of materials. However, NEML2 is general enough to build models of any type.
neml2-1.3.1/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Overview
2
+
3
+ [![Documentation](https://github.com/reverendbedford/neml2/actions/workflows/build_docs.yml/badge.svg?branch=main)](https://reverendbedford.github.io/neml2/) [![tests](https://github.com/reverendbedford/neml2/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/reverendbedford/neml2/actions/workflows/tests.yml)
4
+
5
+ ### The New Engineering Material model Library, version 2
6
+
7
+ NEML2 is an offshoot of [NEML](https://github.com/Argonne-National-Laboratory/neml), an earlier constitutive modeling code developed at Argonne National Laboratory.
8
+ Like NEML, NEML2 provides a flexible, modular way to build constitutive models from smaller blocks.
9
+ Unlike NEML, NEML2 vectorizes the constitutive update to efficiently run on GPUs. NEML2 is built on top of [PyTorch](https://pytorch.org/cppdocs/)
10
+ to provide GPU support, but this also means that NEML2 models have all the features of a PyTorch module. So, for example, users can take derivatives of the model with respect to parameters using automatic differentiation.
11
+
12
+ NEML2 is provided as open source software under a MIT [license](https://raw.githubusercontent.com/reverendbedford/neml2/main/LICENSE).
13
+
14
+ ### Build and installation
15
+
16
+ Building should be as easy as cloning the repository, configuring with CMake, building with `make`, and testing with `make test`.
17
+
18
+ By default NEML2 will download the current CPU-only version of torch. To instead use a system torch set CMake options `-DLIBTORCH_DIR=/path/to/your/torch`. If you use the default build you will get a CPU-only version of torch and performance might suffer compared to a CUDA version.
19
+
20
+ ### NEML2 features and design philosophy
21
+
22
+ - **Modular constitutive models**: NEML2 material models are modular – they are built up from smaller pieces into a complete model. For example, a model might piece together a temperature-dependent elasticity model, a yield surface, a flow rule, and several hardening rules. Each of these submodels is independent of the other objects so that, for example, switching from conventional J2 plasticity to a non J2 theory requires only a one line change in an input file, if the model is already implemented, or a relatively small amount of coding to add the new yield surface if it has not been implemented. All of these objects are interchangeable. For example, the damage, viscoplastic, and rate-independent plasticity models all use the same yield (flow) surfaces, hardening rules, elasticity models, and so on.
23
+ - **Extensible constitutive models**: The library is structured so that adding a new feature to an existing material model should be as simple as possible and require as little code as possible. As part of this philosophy, the library only requires new components provide a few partial derivatives and NEML uses this information to assemble the Jacobian needed to do a fully implement, backward Euler integration of the ordinary differential equations comprising the model form and to provide the algorithmic tangent needed to integrate the model into an implicit finite element framework. Moreover, in NEML2 implementations can forgo providing these partial derivatives and NEML2 will calculate them with automatic differentiation -- albeit at a significant performance cost.
24
+ - **Friendly user interfaces**: There are two general ways to create and interface with NEML2 material models: the python bindings and the compiled library with [HIT](https://github.com/idaholab/moose/tree/next/framework/contrib/hit) input. The python bindings are generally used for creating, fitting, and debugging new material models. In python, a material model is built up object-by-object and assembled into a complete mathematical constitutive relation. NEML2 provides several python drivers for exercising these material models in simple loading configurations. These drivers include common test types, like uniaxial tension tests and strain-controlled cyclic fatigue tests along with more esoteric drivers supporting simplified models of high temperature pressure vessels, like n-bar models and generalized plane-strain axisymmetry. NEML2 provides a full Abaqus UMAT interface and examples of how to link the compiled library into C, C++, or Fortran codes. These interfaces can be used to call NEML2 models from finite element codes. When using the compiled library, NEML2 models can be created and archived using a hierarchical HIT format.
25
+ - **Strict quality assurance**: NEML2 is developed under a strict quality assurance program. Because the NEML2 distribution does not provide full, parameterized models for any actual materials, ensuring the quality of the library is a verification problem – testing to make sure that NEML2 is correctly implementing the mathematical models – rather than a validation problem of comparing the results of a model to an actual test. This verification is done with extensive unit testing. This unit testing verifies every mathematical function and every derivative in the library is correctly implemented.
26
+ - **CPU/GPU Vectorization**: NEML2 models can be vectorized, meaning that a large batch of constitutive models can be evaluated simultaneously. The vectorized model can be evaluated both on CPU and on GPU, with a unified, intuitive user interface.
27
+ - **Flexible model composition**: NEML2 offers a more flexible way of composing models. Each individual model only defines the forward operator (and optionally its derivative) with a given set of inputs and outputs, without knowing anything a priori about how it is going to be used. When a set of models are *composed* together to form a composite model, dependencies among different models are automatically detected, registered, and resolved. The user has *complete control* over how NEML2 evaluates a set of models.
28
+ - **Faster evaluation of chained models**: As a result the dependency resolution mentioned above, an optimal order of evaluating the composed model is used to perform the forward operation -- every model in the dependency graph is evaluated once and only once, avoiding any redundant calculations.
29
+ - **General implicit update**: NEML2 offers a general interface for defining implicit models, unlike NEML which requires the implicit function to be in the form of an ODE.
30
+
31
+ ### Disclaimer
32
+
33
+ NEML2 does not provide a database of models for any particular class of materials. There are many example materials contained in the library release. These models are included entirely for illustrative purposes and do not represent the response of any actual material. Right now these models are solid mechanics constitutive models, providing the stress/strain response of materials. However, NEML2 is general enough to build models of any type.