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.
- neml2-1.3.1/.clang-format +31 -0
- neml2-1.3.1/.github/workflows/build_docs.yml +49 -0
- neml2-1.3.1/.github/workflows/python.yml +146 -0
- neml2-1.3.1/.github/workflows/tests.yml +179 -0
- neml2-1.3.1/.gitignore +40 -0
- neml2-1.3.1/.gitmodules +13 -0
- neml2-1.3.1/CMakeLists.txt +94 -0
- neml2-1.3.1/LICENSE +23 -0
- neml2-1.3.1/PKG-INFO +42 -0
- neml2-1.3.1/README.md +33 -0
- neml2-1.3.1/cmake/Modules/FindTorch.cmake +66 -0
- neml2-1.3.1/cmake/Modules/NEML2TorchConfig.cmake +17 -0
- neml2-1.3.1/cmake/Modules/NEML2UnityGroup.cmake +46 -0
- neml2-1.3.1/cmake/detect_torch_cxx11_abi/CMakeLists.txt +11 -0
- neml2-1.3.1/cmake/detect_torch_cxx11_abi/main.cxx +33 -0
- neml2-1.3.1/cmake-variants.yaml +61 -0
- neml2-1.3.1/doc/.gitignore +1 -0
- neml2-1.3.1/doc/CMakeLists.txt +73 -0
- neml2-1.3.1/doc/config/ANLReportExtra.sty +119 -0
- neml2-1.3.1/doc/config/ANLReportFooter.tex +20 -0
- neml2-1.3.1/doc/config/ANLReportHeader.tex +529 -0
- neml2-1.3.1/doc/config/Doxyfile.in +70 -0
- neml2-1.3.1/doc/config/DoxygenLayout.xml +213 -0
- neml2-1.3.1/doc/config/HTML.in +13 -0
- neml2-1.3.1/doc/config/LATEX.in +15 -0
- neml2-1.3.1/doc/content/_01_install.md +152 -0
- neml2-1.3.1/doc/content/_02_math.md +79 -0
- neml2-1.3.1/doc/content/_03_impl.md +270 -0
- neml2-1.3.1/doc/content/_04_devel.md +278 -0
- neml2-1.3.1/doc/content/asset/anl.png +0 -0
- neml2-1.3.1/doc/content/asset/doe.png +0 -0
- neml2-1.3.1/doc/content/asset/timings.png +0 -0
- neml2-1.3.1/doc/requirements.txt +1 -0
- neml2-1.3.1/extern/hit/CMakeLists.txt +28 -0
- neml2-1.3.1/include/neml2/base/CrossRef.h +114 -0
- neml2-1.3.1/include/neml2/base/DependencyDefinition.h +48 -0
- neml2-1.3.1/include/neml2/base/DependencyResolver.h +376 -0
- neml2-1.3.1/include/neml2/base/Factory.h +181 -0
- neml2-1.3.1/include/neml2/base/HITParser.h +58 -0
- neml2-1.3.1/include/neml2/base/NEML2Object.h +104 -0
- neml2-1.3.1/include/neml2/base/OptionCollection.h +56 -0
- neml2-1.3.1/include/neml2/base/OptionSet.h +451 -0
- neml2-1.3.1/include/neml2/base/Parser.h +54 -0
- neml2-1.3.1/include/neml2/base/Registry.h +91 -0
- neml2-1.3.1/include/neml2/base/Storage.h +182 -0
- neml2-1.3.1/include/neml2/base/config.h.in +42 -0
- neml2-1.3.1/include/neml2/drivers/Driver.h +61 -0
- neml2-1.3.1/include/neml2/drivers/TransientDriver.h +152 -0
- neml2-1.3.1/include/neml2/drivers/solid_mechanics/LargeDeformationIncrementalSolidMechanicsDriver.h +83 -0
- neml2-1.3.1/include/neml2/drivers/solid_mechanics/SolidMechanicsDriver.h +80 -0
- neml2-1.3.1/include/neml2/misc/error.h +95 -0
- neml2-1.3.1/include/neml2/misc/math.h +250 -0
- neml2-1.3.1/include/neml2/misc/parser_utils.h +106 -0
- neml2-1.3.1/include/neml2/misc/types.h +52 -0
- neml2-1.3.1/include/neml2/misc/utils.h +327 -0
- neml2-1.3.1/include/neml2/models/BackwardEulerTimeIntegration.h +69 -0
- neml2-1.3.1/include/neml2/models/BufferStore.h +158 -0
- neml2-1.3.1/include/neml2/models/ComposedModel.h +81 -0
- neml2-1.3.1/include/neml2/models/Data.h +68 -0
- neml2-1.3.1/include/neml2/models/ForceRate.h +60 -0
- neml2-1.3.1/include/neml2/models/ForwardEulerTimeIntegration.h +64 -0
- neml2-1.3.1/include/neml2/models/ImplicitUpdate.h +50 -0
- neml2-1.3.1/include/neml2/models/Interpolation.h +85 -0
- neml2-1.3.1/include/neml2/models/LinearInterpolation.h +125 -0
- neml2-1.3.1/include/neml2/models/Model.h +298 -0
- neml2-1.3.1/include/neml2/models/NonlinearParameter.h +64 -0
- neml2-1.3.1/include/neml2/models/ParameterStore.h +161 -0
- neml2-1.3.1/include/neml2/models/RotationMatrix.h +52 -0
- neml2-1.3.1/include/neml2/models/SR2Invariant.h +49 -0
- neml2-1.3.1/include/neml2/models/StateRate.h +60 -0
- neml2-1.3.1/include/neml2/models/SumModel.h +51 -0
- neml2-1.3.1/include/neml2/models/VariableStore.h +338 -0
- neml2-1.3.1/include/neml2/models/WR2ExplicitExponentialTimeIntegration.h +67 -0
- neml2-1.3.1/include/neml2/models/WR2ImplicitExponentialTimeIntegration.h +69 -0
- neml2-1.3.1/include/neml2/models/crystallography/CrystalGeometry.h +163 -0
- neml2-1.3.1/include/neml2/models/crystallography/CubicCrystal.h +45 -0
- neml2-1.3.1/include/neml2/models/crystallography/MillerIndex.h +57 -0
- neml2-1.3.1/include/neml2/models/crystallography/crystallography.h +62 -0
- neml2-1.3.1/include/neml2/models/crystallography/user_tensors/FillMillerIndex.h +56 -0
- neml2-1.3.1/include/neml2/models/crystallography/user_tensors/SymmetryFromOrbifold.h +52 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativeIsotropicPlasticHardening.h +53 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativeKinematicPlasticHardening.h +47 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/AssociativePlasticFlow.h +47 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/ChabochePlasticHardening.h +56 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/ElasticStrain.h +52 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/Elasticity.h +67 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/FlowRule.h +41 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/GTNYieldFunction.h +69 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/GursonCavitation.h +51 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/IsotropicHardening.h +45 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/IsotropicMandelStress.h +42 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/KinematicHardening.h +45 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/LinearIsotropicElasticity.h +47 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/LinearIsotropicHardening.h +47 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/LinearKinematicHardening.h +48 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/MandelStress.h +42 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/Normality.h +50 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/OverStress.h +50 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/PerzynaPlasticFlowRate.h +47 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/PlasticFlowRate.h +45 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/RateIndependentPlasticFlowConstraint.h +54 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/TotalStrain.h +52 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/VoceIsotropicHardening.h +44 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/YieldFunction.h +54 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.h +59 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/FixOrientation.h +59 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.h +45 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/OrientationRate.h +60 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.h +60 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PlasticVorticity.h +60 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.h +49 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/ResolvedShear.h +60 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipHardeningRule.h +49 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.h +50 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SlipRule.h +57 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SlipStrengthMap.h +48 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/SumSlipRates.h +63 -0
- neml2-1.3.1/include/neml2/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.h +49 -0
- neml2-1.3.1/include/neml2/solvers/Newton.h +73 -0
- neml2-1.3.1/include/neml2/solvers/NewtonWithLineSearch.h +63 -0
- neml2-1.3.1/include/neml2/solvers/NewtonWithTrustRegion.h +99 -0
- neml2-1.3.1/include/neml2/solvers/NonlinearSolver.h +66 -0
- neml2-1.3.1/include/neml2/solvers/NonlinearSystem.h +128 -0
- neml2-1.3.1/include/neml2/solvers/Solver.h +51 -0
- neml2-1.3.1/include/neml2/solvers/TrustRegionSubProblem.h +71 -0
- neml2-1.3.1/include/neml2/tensors/BatchTensor.h +114 -0
- neml2-1.3.1/include/neml2/tensors/BatchTensorBase.h +473 -0
- neml2-1.3.1/include/neml2/tensors/FixedDimTensor.h +184 -0
- neml2-1.3.1/include/neml2/tensors/LabeledAxis.h +253 -0
- neml2-1.3.1/include/neml2/tensors/LabeledAxisAccessor.h +125 -0
- neml2-1.3.1/include/neml2/tensors/LabeledMatrix.h +61 -0
- neml2-1.3.1/include/neml2/tensors/LabeledTensor.h +298 -0
- neml2-1.3.1/include/neml2/tensors/LabeledTensor3D.h +55 -0
- neml2-1.3.1/include/neml2/tensors/LabeledVector.h +58 -0
- neml2-1.3.1/include/neml2/tensors/Quaternion.h +64 -0
- neml2-1.3.1/include/neml2/tensors/R2.h +58 -0
- neml2-1.3.1/include/neml2/tensors/R2Base.h +148 -0
- neml2-1.3.1/include/neml2/tensors/R3.h +56 -0
- neml2-1.3.1/include/neml2/tensors/R4.h +69 -0
- neml2-1.3.1/include/neml2/tensors/R5.h +41 -0
- neml2-1.3.1/include/neml2/tensors/Rot.h +90 -0
- neml2-1.3.1/include/neml2/tensors/SFFR4.h +41 -0
- neml2-1.3.1/include/neml2/tensors/SFR3.h +42 -0
- neml2-1.3.1/include/neml2/tensors/SR2.h +126 -0
- neml2-1.3.1/include/neml2/tensors/SSFR5.h +42 -0
- neml2-1.3.1/include/neml2/tensors/SSR4.h +88 -0
- neml2-1.3.1/include/neml2/tensors/SWR4.h +46 -0
- neml2-1.3.1/include/neml2/tensors/Scalar.h +179 -0
- neml2-1.3.1/include/neml2/tensors/TensorValue.h +80 -0
- neml2-1.3.1/include/neml2/tensors/Transformable.h +64 -0
- neml2-1.3.1/include/neml2/tensors/Variable.h +273 -0
- neml2-1.3.1/include/neml2/tensors/Vec.h +55 -0
- neml2-1.3.1/include/neml2/tensors/VecBase.h +123 -0
- neml2-1.3.1/include/neml2/tensors/WR2.h +60 -0
- neml2-1.3.1/include/neml2/tensors/WSR4.h +46 -0
- neml2-1.3.1/include/neml2/tensors/WWR4.h +49 -0
- neml2-1.3.1/include/neml2/tensors/list_tensors.h +56 -0
- neml2-1.3.1/include/neml2/tensors/macros.h +54 -0
- neml2-1.3.1/include/neml2/tensors/tensors.h +45 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/EmptyBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/EmptyFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/Fill3DVec.h +53 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FillR2.h +53 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FillRot.h +53 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FillSR2.h +53 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FillWR2.h +53 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FullBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/FullFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/IdentityBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/LinspaceBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/LinspaceFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/LogspaceBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/LogspaceFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/OnesBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/OnesFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/Orientation.h +77 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/UserBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/UserFixedDimTensor.h +56 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/ZerosBatchTensor.h +49 -0
- neml2-1.3.1/include/neml2/tensors/user_tensors/ZerosFixedDimTensor.h +56 -0
- neml2-1.3.1/pyproject.toml +50 -0
- neml2-1.3.1/python/CMakeLists.txt +43 -0
- neml2-1.3.1/python/neml2/__init__.py +32 -0
- neml2-1.3.1/python/neml2/base/Factory.cxx +42 -0
- neml2-1.3.1/python/neml2/base/HITParser.cxx +39 -0
- neml2-1.3.1/python/neml2/base/OptionCollection.cxx +37 -0
- neml2-1.3.1/python/neml2/base/OptionSet.cxx +36 -0
- neml2-1.3.1/python/neml2/base/Storage.h +55 -0
- neml2-1.3.1/python/neml2/base/base.cxx +43 -0
- neml2-1.3.1/python/neml2/misc/indexing.h +117 -0
- neml2-1.3.1/python/neml2/misc/math.cxx +58 -0
- neml2-1.3.1/python/neml2/misc/types.h +84 -0
- neml2-1.3.1/python/neml2/models/Model.cxx +58 -0
- neml2-1.3.1/python/neml2/models/models.cxx +40 -0
- neml2-1.3.1/python/neml2/tensors/BatchTensor.cxx +126 -0
- neml2-1.3.1/python/neml2/tensors/BatchTensorBase.h +282 -0
- neml2-1.3.1/python/neml2/tensors/FixedDimTensor.h +110 -0
- neml2-1.3.1/python/neml2/tensors/LabeledAxis.cxx +57 -0
- neml2-1.3.1/python/neml2/tensors/LabeledAxisAccessor.cxx +59 -0
- neml2-1.3.1/python/neml2/tensors/LabeledMatrix.cxx +39 -0
- neml2-1.3.1/python/neml2/tensors/LabeledTensor.h +77 -0
- neml2-1.3.1/python/neml2/tensors/LabeledVector.cxx +39 -0
- neml2-1.3.1/python/neml2/tensors/MillerIndex.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/Quaternion.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/R2.cxx +36 -0
- neml2-1.3.1/python/neml2/tensors/R2Base.h +63 -0
- neml2-1.3.1/python/neml2/tensors/R3.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/R4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/R5.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/Rot.cxx +52 -0
- neml2-1.3.1/python/neml2/tensors/SFFR4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/SFR3.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/SR2.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/SSFR5.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/SSR4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/SWR4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/Scalar.cxx +54 -0
- neml2-1.3.1/python/neml2/tensors/TensorValue.cxx +58 -0
- neml2-1.3.1/python/neml2/tensors/Vec.cxx +38 -0
- neml2-1.3.1/python/neml2/tensors/VecBase.h +95 -0
- neml2-1.3.1/python/neml2/tensors/WR2.cxx +38 -0
- neml2-1.3.1/python/neml2/tensors/WSR4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/WWR4.cxx +33 -0
- neml2-1.3.1/python/neml2/tensors/tensors.cxx +99 -0
- neml2-1.3.1/python/requirements.txt +5 -0
- neml2-1.3.1/requirements.txt +7 -0
- neml2-1.3.1/scripts/analyze_timings.py +78 -0
- neml2-1.3.1/scripts/benchmark.sh +31 -0
- neml2-1.3.1/scripts/check_copyright.py +166 -0
- neml2-1.3.1/scripts/coverage.sh +41 -0
- neml2-1.3.1/scripts/extract_timings.py +111 -0
- neml2-1.3.1/scripts/generate_stub_docs.py +50 -0
- neml2-1.3.1/scripts/requirements.txt +2 -0
- neml2-1.3.1/scripts/syntax_to_md.py +89 -0
- neml2-1.3.1/src/neml2/CMakeLists.txt +66 -0
- neml2-1.3.1/src/neml2/base/CrossRef.cxx +80 -0
- neml2-1.3.1/src/neml2/base/Factory.cxx +77 -0
- neml2-1.3.1/src/neml2/base/HITParser.cxx +161 -0
- neml2-1.3.1/src/neml2/base/NEML2Object.cxx +41 -0
- neml2-1.3.1/src/neml2/base/OptionCollection.cxx +58 -0
- neml2-1.3.1/src/neml2/base/OptionSet.cxx +134 -0
- neml2-1.3.1/src/neml2/base/Parser.cxx +28 -0
- neml2-1.3.1/src/neml2/base/Registry.cxx +89 -0
- neml2-1.3.1/src/neml2/drivers/Driver.cxx +42 -0
- neml2-1.3.1/src/neml2/drivers/TransientDriver.cxx +307 -0
- neml2-1.3.1/src/neml2/drivers/solid_mechanics/LargeDeformationIncrementalSolidMechanicsDriver.cxx +127 -0
- neml2-1.3.1/src/neml2/drivers/solid_mechanics/SolidMechanicsDriver.cxx +137 -0
- neml2-1.3.1/src/neml2/misc/error.cxx +42 -0
- neml2-1.3.1/src/neml2/misc/math.cxx +354 -0
- neml2-1.3.1/src/neml2/misc/parser_utils.cxx +137 -0
- neml2-1.3.1/src/neml2/misc/types.cxx +52 -0
- neml2-1.3.1/src/neml2/misc/utils.cxx +75 -0
- neml2-1.3.1/src/neml2/models/BackwardEulerTimeIntegration.cxx +99 -0
- neml2-1.3.1/src/neml2/models/BufferStore.cxx +51 -0
- neml2-1.3.1/src/neml2/models/ComposedModel.cxx +187 -0
- neml2-1.3.1/src/neml2/models/Data.cxx +41 -0
- neml2-1.3.1/src/neml2/models/ForceRate.cxx +100 -0
- neml2-1.3.1/src/neml2/models/ForwardEulerTimeIntegration.cxx +91 -0
- neml2-1.3.1/src/neml2/models/ImplicitUpdate.cxx +123 -0
- neml2-1.3.1/src/neml2/models/LinearInterpolation.cxx +87 -0
- neml2-1.3.1/src/neml2/models/Model.cxx +441 -0
- neml2-1.3.1/src/neml2/models/NonlinearParameter.cxx +46 -0
- neml2-1.3.1/src/neml2/models/ParameterStore.cxx +112 -0
- neml2-1.3.1/src/neml2/models/RotationMatrix.cxx +58 -0
- neml2-1.3.1/src/neml2/models/SR2Invariant.cxx +106 -0
- neml2-1.3.1/src/neml2/models/StateRate.cxx +100 -0
- neml2-1.3.1/src/neml2/models/SumModel.cxx +76 -0
- neml2-1.3.1/src/neml2/models/VariableStore.cxx +174 -0
- neml2-1.3.1/src/neml2/models/WR2ExplicitExponentialTimeIntegration.cxx +80 -0
- neml2-1.3.1/src/neml2/models/WR2ImplicitExponentialTimeIntegration.cxx +83 -0
- neml2-1.3.1/src/neml2/models/crystallography/CrystalGeometry.cxx +239 -0
- neml2-1.3.1/src/neml2/models/crystallography/CubicCrystal.cxx +59 -0
- neml2-1.3.1/src/neml2/models/crystallography/MillerIndex.cxx +59 -0
- neml2-1.3.1/src/neml2/models/crystallography/crystallography.cxx +174 -0
- neml2-1.3.1/src/neml2/models/crystallography/user_tensors/FillMillerIndex.cxx +57 -0
- neml2-1.3.1/src/neml2/models/crystallography/user_tensors/SymmetryFromOrbifold.cxx +49 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativeIsotropicPlasticHardening.cxx +74 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativeKinematicPlasticHardening.cxx +79 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/AssociativePlasticFlow.cxx +76 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/ChabochePlasticHardening.cxx +85 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/ElasticStrain.cxx +73 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/Elasticity.cxx +50 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/FlowRule.cxx +42 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/GTNYieldFunction.cxx +347 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/GursonCavitation.cxx +76 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/IsotropicHardening.cxx +44 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/IsotropicMandelStress.cxx +55 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/KinematicHardening.cxx +44 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/LinearIsotropicElasticity.cxx +68 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/LinearIsotropicHardening.cxx +59 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/LinearKinematicHardening.cxx +60 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/MandelStress.cxx +44 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/Normality.cxx +85 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/OverStress.cxx +68 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/PerzynaPlasticFlowRate.cxx +70 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/PlasticFlowRate.cxx +44 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/RateIndependentPlasticFlowConstraint.cxx +85 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/TotalStrain.cxx +73 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/VoceIsotropicHardening.cxx +59 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/YieldFunction.cxx +82 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.cxx +76 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/FixOrientation.cxx +68 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.cxx +56 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/OrientationRate.cxx +75 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.cxx +81 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PlasticVorticity.cxx +75 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.cxx +73 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/ResolvedShear.cxx +78 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipHardeningRule.cxx +51 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.cxx +60 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SlipRule.cxx +59 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SlipStrengthMap.cxx +52 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/SumSlipRates.cxx +73 -0
- neml2-1.3.1/src/neml2/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.cxx +61 -0
- neml2-1.3.1/src/neml2/solvers/Newton.cxx +130 -0
- neml2-1.3.1/src/neml2/solvers/NewtonWithLineSearch.cxx +94 -0
- neml2-1.3.1/src/neml2/solvers/NewtonWithTrustRegion.cxx +171 -0
- neml2-1.3.1/src/neml2/solvers/NonlinearSolver.cxx +46 -0
- neml2-1.3.1/src/neml2/solvers/NonlinearSystem.cxx +196 -0
- neml2-1.3.1/src/neml2/solvers/Solver.cxx +42 -0
- neml2-1.3.1/src/neml2/solvers/TrustRegionSubProblem.cxx +78 -0
- neml2-1.3.1/src/neml2/tensors/BatchTensor.cxx +158 -0
- neml2-1.3.1/src/neml2/tensors/BatchTensorBase.cxx +361 -0
- neml2-1.3.1/src/neml2/tensors/FixedDimTensor.cxx +23 -0
- neml2-1.3.1/src/neml2/tensors/LabeledAxis.cxx +471 -0
- neml2-1.3.1/src/neml2/tensors/LabeledAxisAccessor.cxx +147 -0
- neml2-1.3.1/src/neml2/tensors/LabeledMatrix.cxx +83 -0
- neml2-1.3.1/src/neml2/tensors/LabeledTensor.cxx +243 -0
- neml2-1.3.1/src/neml2/tensors/LabeledTensor3D.cxx +76 -0
- neml2-1.3.1/src/neml2/tensors/LabeledVector.cxx +67 -0
- neml2-1.3.1/src/neml2/tensors/Quaternion.cxx +75 -0
- neml2-1.3.1/src/neml2/tensors/R2.cxx +51 -0
- neml2-1.3.1/src/neml2/tensors/R2Base.cxx +255 -0
- neml2-1.3.1/src/neml2/tensors/R3.cxx +54 -0
- neml2-1.3.1/src/neml2/tensors/R4.cxx +96 -0
- neml2-1.3.1/src/neml2/tensors/R5.cxx +29 -0
- neml2-1.3.1/src/neml2/tensors/Rot.cxx +142 -0
- neml2-1.3.1/src/neml2/tensors/SFFR4.cxx +29 -0
- neml2-1.3.1/src/neml2/tensors/SFR3.cxx +29 -0
- neml2-1.3.1/src/neml2/tensors/SR2.cxx +223 -0
- neml2-1.3.1/src/neml2/tensors/SSFR5.cxx +29 -0
- neml2-1.3.1/src/neml2/tensors/SSR4.cxx +161 -0
- neml2-1.3.1/src/neml2/tensors/SWR4.cxx +37 -0
- neml2-1.3.1/src/neml2/tensors/Scalar.cxx +53 -0
- neml2-1.3.1/src/neml2/tensors/Transformable.cxx +69 -0
- neml2-1.3.1/src/neml2/tensors/Variable.cxx +117 -0
- neml2-1.3.1/src/neml2/tensors/Vec.cxx +49 -0
- neml2-1.3.1/src/neml2/tensors/VecBase.cxx +107 -0
- neml2-1.3.1/src/neml2/tensors/WR2.cxx +97 -0
- neml2-1.3.1/src/neml2/tensors/WSR4.cxx +37 -0
- neml2-1.3.1/src/neml2/tensors/WWR4.cxx +44 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/EmptyBatchTensor.cxx +47 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/EmptyFixedDimTensor.cxx +50 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/Fill3DVec.cxx +53 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FillR2.cxx +72 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FillRot.cxx +75 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FillSR2.cxx +60 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FillWR2.cxx +55 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FullBatchTensor.cxx +49 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/FullFixedDimTensor.cxx +53 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/IdentityBatchTensor.cxx +47 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/LinspaceBatchTensor.cxx +57 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/LinspaceFixedDimTensor.cxx +59 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/LogspaceBatchTensor.cxx +55 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/LogspaceFixedDimTensor.cxx +61 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/OnesBatchTensor.cxx +47 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/OnesFixedDimTensor.cxx +50 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/Orientation.cxx +195 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/UserBatchTensor.cxx +62 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/UserFixedDimTensor.cxx +65 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/ZerosBatchTensor.cxx +47 -0
- neml2-1.3.1/src/neml2/tensors/user_tensors/ZerosFixedDimTensor.cxx +50 -0
- neml2-1.3.1/tests/CMakeLists.txt +237 -0
- neml2-1.3.1/tests/benchmark/chaboche/chaboche.cxx +47 -0
- neml2-1.3.1/tests/benchmark/chaboche/model.i +162 -0
- neml2-1.3.1/tests/benchmark/main.cxx +28 -0
- neml2-1.3.1/tests/benchmark/taylor_rolling_fcc/model.i +196 -0
- neml2-1.3.1/tests/benchmark/taylor_rolling_fcc/taylor_rolling_fcc.cxx +49 -0
- neml2-1.3.1/tests/benchmark/taylor_single_orientation/model.i +193 -0
- neml2-1.3.1/tests/benchmark/taylor_single_orientation/taylor_single_orientation.cxx +49 -0
- neml2-1.3.1/tests/include/J2FlowDirection.h +48 -0
- neml2-1.3.1/tests/include/ModelUnitTest.h +99 -0
- neml2-1.3.1/tests/include/SampleNonlinearSystems.h +65 -0
- neml2-1.3.1/tests/include/SampleParserTestingModel.h +39 -0
- neml2-1.3.1/tests/include/SampleRateModel.h +52 -0
- neml2-1.3.1/tests/include/TabulatedPolynomialModel.h +126 -0
- neml2-1.3.1/tests/include/TransientRegression.h +58 -0
- neml2-1.3.1/tests/include/VTestParser.h +52 -0
- neml2-1.3.1/tests/include/VTestTimeSeries.h +46 -0
- neml2-1.3.1/tests/include/VTestVerification.h +60 -0
- neml2-1.3.1/tests/include/utils.h +110 -0
- neml2-1.3.1/tests/profiling/main.cxx +45 -0
- neml2-1.3.1/tests/profiling/model.i +161 -0
- neml2-1.3.1/tests/python/base/test_HITParser.i +19 -0
- neml2-1.3.1/tests/python/base/test_HITParser.py +33 -0
- neml2-1.3.1/tests/python/models/test_Model.i +19 -0
- neml2-1.3.1/tests/python/models/test_Model.py +113 -0
- neml2-1.3.1/tests/python/models/test_ParameterStore.i +7 -0
- neml2-1.3.1/tests/python/models/test_ParameterStore.py +84 -0
- neml2-1.3.1/tests/python/tensors/common.py +73 -0
- neml2-1.3.1/tests/python/tensors/test_BatchTensor.py +92 -0
- neml2-1.3.1/tests/python/tensors/test_BatchTensorBase.py +265 -0
- neml2-1.3.1/tests/python/tensors/test_FixedDimTensor.py +65 -0
- neml2-1.3.1/tests/python/tensors/test_LabeledAxisAccessor.py +85 -0
- neml2-1.3.1/tests/python/tensors/test_Scalar.py +84 -0
- neml2-1.3.1/tests/regression/main.cxx +27 -0
- neml2-1.3.1/tests/regression/solid_mechanics/crystal_plasticity/basic_single_crystal/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/crystal_plasticity/basic_single_crystal/model.i +217 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/gurson/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/gurson/model.i +172 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isoharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isoharden/model.i +135 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isokinharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/isokinharden/model.i +149 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/kinharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/kinharden/model.i +136 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/perfect/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/perfect/model.i +122 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/radial_return/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/rate_independent_plasticity/radial_return/model.i +189 -0
- neml2-1.3.1/tests/regression/solid_mechanics/regression_solid_mechanics.cxx +74 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/alt_composition/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/alt_composition/model.i +137 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/chaboche/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/chaboche/model.i +167 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isoharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isoharden/model.i +134 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isokinharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/isokinharden/model.i +148 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/kinharden/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/kinharden/model.i +136 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/misc/polynomial/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/misc/polynomial/model.i +241 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/perfect/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/perfect/model.i +122 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/radial_return/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/radial_return/model.i +206 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/stress_control/gold/result.pt +0 -0
- neml2-1.3.1/tests/regression/solid_mechanics/viscoplasticity/stress_control/model.i +153 -0
- neml2-1.3.1/tests/requirements.txt +4 -0
- neml2-1.3.1/tests/src/CMakeLists.txt +5 -0
- neml2-1.3.1/tests/src/J2FlowDirection.cxx +66 -0
- neml2-1.3.1/tests/src/ModelUnitTest.cxx +238 -0
- neml2-1.3.1/tests/src/SampleNonlinearSystems.cxx +127 -0
- neml2-1.3.1/tests/src/SampleParserTestingModel.cxx +73 -0
- neml2-1.3.1/tests/src/SampleRateModel.cxx +78 -0
- neml2-1.3.1/tests/src/TabulatedPolynomialModel.cxx +122 -0
- neml2-1.3.1/tests/src/TransientRegression.cxx +111 -0
- neml2-1.3.1/tests/src/VTestParser.cxx +85 -0
- neml2-1.3.1/tests/src/VTestTimeSeries.cxx +90 -0
- neml2-1.3.1/tests/src/VTestVerification.cxx +100 -0
- neml2-1.3.1/tests/src/utils.cxx +53 -0
- neml2-1.3.1/tests/unit/README.md +32 -0
- neml2-1.3.1/tests/unit/base/test_CrossRef.cxx +80 -0
- neml2-1.3.1/tests/unit/base/test_CrossRef_Scalar.i +21 -0
- neml2-1.3.1/tests/unit/base/test_CrossRef_empty_Scalar.i +7 -0
- neml2-1.3.1/tests/unit/base/test_CrossRef_empty_Tensor.i +8 -0
- neml2-1.3.1/tests/unit/base/test_Factory.cxx +54 -0
- neml2-1.3.1/tests/unit/base/test_HITParser.cxx +133 -0
- neml2-1.3.1/tests/unit/base/test_HITParser1.i +27 -0
- neml2-1.3.1/tests/unit/base/test_HITParser2.i +28 -0
- neml2-1.3.1/tests/unit/base/test_OptionSet.cxx +92 -0
- neml2-1.3.1/tests/unit/base/test_Registry.cxx +38 -0
- neml2-1.3.1/tests/unit/crystallography/test_CrystalGeometry.cxx +106 -0
- neml2-1.3.1/tests/unit/crystallography/test_CrystalGeometry.i +32 -0
- neml2-1.3.1/tests/unit/crystallography/test_CubicCrystal.cxx +106 -0
- neml2-1.3.1/tests/unit/crystallography/test_CubicCrystal.i +23 -0
- neml2-1.3.1/tests/unit/crystallography/test_MillerIndex.cxx +67 -0
- neml2-1.3.1/tests/unit/crystallography/user_tensors/test_FillMillerIndex.cxx +47 -0
- neml2-1.3.1/tests/unit/crystallography/user_tensors/test_FillMillerIndex.i +18 -0
- neml2-1.3.1/tests/unit/crystallography/user_tensors/test_SymmetryFromOrbifold.cxx +170 -0
- neml2-1.3.1/tests/unit/crystallography/user_tensors/test_SymmetryFromOrbifold.i +50 -0
- neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver.cxx +47 -0
- neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver_strain.i +71 -0
- neml2-1.3.1/tests/unit/drivers/solid_mechanics/test_SolidMechanicsDriver_stress.i +74 -0
- neml2-1.3.1/tests/unit/main.cxx +27 -0
- neml2-1.3.1/tests/unit/misc/test_parser_utils.cxx +88 -0
- neml2-1.3.1/tests/unit/misc/test_utils.cxx +126 -0
- neml2-1.3.1/tests/unit/models/ComposedModel1.i +32 -0
- neml2-1.3.1/tests/unit/models/ComposedModel2.i +51 -0
- neml2-1.3.1/tests/unit/models/ComposedModel3.i +70 -0
- neml2-1.3.1/tests/unit/models/ImplicitUpdate.i +58 -0
- neml2-1.3.1/tests/unit/models/SR2Invariant_I1.i +33 -0
- neml2-1.3.1/tests/unit/models/SR2Invariant_I2.i +33 -0
- neml2-1.3.1/tests/unit/models/SR2Invariant_VONMISES.i +34 -0
- neml2-1.3.1/tests/unit/models/SR2LinearInterpolation1.i +62 -0
- neml2-1.3.1/tests/unit/models/SR2LinearInterpolation2.i +62 -0
- neml2-1.3.1/tests/unit/models/SR2LinearInterpolation3.i +64 -0
- neml2-1.3.1/tests/unit/models/SR2LinearInterpolation4.i +72 -0
- neml2-1.3.1/tests/unit/models/SR2SumModel.i +34 -0
- neml2-1.3.1/tests/unit/models/ScalarBackwardEulerTimeIntegration.i +19 -0
- neml2-1.3.1/tests/unit/models/ScalarForceRate.i +19 -0
- neml2-1.3.1/tests/unit/models/ScalarForwardEulerTimeIntegration.i +19 -0
- neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation1.i +38 -0
- neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation2.i +38 -0
- neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation3.i +48 -0
- neml2-1.3.1/tests/unit/models/ScalarLinearInterpolation4.i +48 -0
- neml2-1.3.1/tests/unit/models/ScalarStateRate.i +19 -0
- neml2-1.3.1/tests/unit/models/ScalarSumModel.i +19 -0
- neml2-1.3.1/tests/unit/models/WR2ExplicitExponentialTimeIntegration.i +38 -0
- neml2-1.3.1/tests/unit/models/WR2ImplicitExponentialTimeIntegration.i +43 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativeIsotropicPlasticHardening.i +18 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativeKinematicPlasticHardening.i +31 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/AssociativePlasticFlow.i +31 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/ChabochePlasticHardening.i +39 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/ElasticStrain.i +32 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/ElasticStrainRate.i +33 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/GTNYieldFunction.i +24 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/GTNYieldFunctionStress.i +49 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/GursonCavitation.i +27 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/IsotropicMandelStress.i +28 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity.i +31 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_compliance.i +31 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_compliance_rate.i +32 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicElasticity_rate.i +31 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearIsotropicHardening.i +18 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/LinearKinematicHardening.i +29 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/NonlinearParameter.i +59 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/Normality.i +64 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/OverStress.i +32 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/PerzynaPlasticFlowRate.i +19 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/RateIndependentPlasticFlowConstraint.i +35 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/TotalStrain.i +32 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/TotalStrainRate.i +33 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/VoceIsotropicHardening.i +20 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_isoharden.i +40 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_isokinharden.i +47 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_kinharden.i +44 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/YieldFunction_perfect.i +38 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/ElasticStrainRate.i +42 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/FixOrientation.i +30 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/LinearSingleSlipHardeningRule.i +33 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/OrientationRate.i +42 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PlasticDeformationRate.i +73 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PlasticVorticity.i +73 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/PowerLawSlipRule.i +70 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/ResolvedShear.i +69 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/SingleSlipStrengthMap.i +51 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/SumSlipRates.i +50 -0
- neml2-1.3.1/tests/unit/models/solid_mechanics/crystal_plasticity/VoceSingleSlipHardeningRule.i +34 -0
- neml2-1.3.1/tests/unit/models/test_ParameterStore.cxx +130 -0
- neml2-1.3.1/tests/unit/models/test_models.cxx +75 -0
- neml2-1.3.1/tests/unit/solvers/test_NonlinearSolvers.cxx +99 -0
- neml2-1.3.1/tests/unit/solvers/test_NonlinearSystem.cxx +50 -0
- neml2-1.3.1/tests/unit/tensors/test_BatchTensor.cxx +62 -0
- neml2-1.3.1/tests/unit/tensors/test_BatchTensorBase.cxx +627 -0
- neml2-1.3.1/tests/unit/tensors/test_FixedDimTensor.cxx +226 -0
- neml2-1.3.1/tests/unit/tensors/test_LabeledAxis.cxx +343 -0
- neml2-1.3.1/tests/unit/tensors/test_LabeledAxisAccesor.cxx +95 -0
- neml2-1.3.1/tests/unit/tensors/test_LabeledTensor.cxx +197 -0
- neml2-1.3.1/tests/unit/tensors/test_Quaternion.cxx +57 -0
- neml2-1.3.1/tests/unit/tensors/test_R2.cxx +258 -0
- neml2-1.3.1/tests/unit/tensors/test_R3.cxx +95 -0
- neml2-1.3.1/tests/unit/tensors/test_R4.cxx +156 -0
- neml2-1.3.1/tests/unit/tensors/test_Rot.cxx +160 -0
- neml2-1.3.1/tests/unit/tensors/test_SR2.cxx +272 -0
- neml2-1.3.1/tests/unit/tensors/test_SSR4.cxx +226 -0
- neml2-1.3.1/tests/unit/tensors/test_Scalar.cxx +138 -0
- neml2-1.3.1/tests/unit/tensors/test_Vec.cxx +76 -0
- neml2-1.3.1/tests/unit/tensors/test_VecBase.cxx +123 -0
- neml2-1.3.1/tests/unit/tensors/test_WR2.cxx +210 -0
- neml2-1.3.1/tests/unit/tensors/test_WWR4.cxx +62 -0
- neml2-1.3.1/tests/unit/tensors/test_list_tensors.cxx +153 -0
- neml2-1.3.1/tests/unit/tensors/test_symmetry_operator_definitions.cxx +61 -0
- neml2-1.3.1/tests/unit/tensors/test_vector_transform.cxx +77 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyBatchTensor.cxx +42 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyBatchTensor.i +7 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyFixedDimTensor.cxx +59 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_EmptyFixedDimTensor.i +46 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_Fill3DVec.cxx +47 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_Fill3DVec.i +14 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillR2.cxx +51 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillR2.i +18 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillSR2.cxx +47 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FillSR2.i +14 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullBatchTensor.cxx +43 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullBatchTensor.i +8 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullFixedDimTensor.cxx +61 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_FullFixedDimTensor.i +57 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_IdentityBatchTensor.cxx +43 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_IdentityBatchTensor.i +7 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceBatchTensor.cxx +48 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceBatchTensor.i +21 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceFixedDimTensor.cxx +68 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LinspaceFixedDimTensor.i +199 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceBatchTensor.cxx +49 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceBatchTensor.i +21 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceFixedDimTensor.cxx +69 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_LogspaceFixedDimTensor.i +199 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesBatchTensor.cxx +43 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesBatchTensor.i +7 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesFixedDimTensor.cxx +61 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_OnesFixedDimTensor.i +46 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_Orientation.cxx +92 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_Orientation.i +56 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor.cxx +76 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor.i +26 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserBatchTensor_error.i +8 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserFixedDimTensor.cxx +71 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_UserFixedDimTensor.i +112 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosBatchTensor.cxx +43 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosBatchTensor.i +7 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosFixedDimTensor.cxx +61 -0
- neml2-1.3.1/tests/unit/tensors/user_tensors/test_ZerosFixedDimTensor.i +46 -0
- neml2-1.3.1/tests/verification/main.cxx +27 -0
- neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.i +151 -0
- neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.vtest +207 -0
- neml2-1.3.1/tests/verification/solid_mechanics/chaboche/chaboche.xml +54 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.i +162 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.vtest +207 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_basic/cp_basic.xml +33 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.i +169 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.vtest +207 -0
- neml2-1.3.1/tests/verification/solid_mechanics/cp_taylor/cp_taylor.xml +62 -0
- neml2-1.3.1/tests/verification/solid_mechanics/gurson/gurson.i +127 -0
- neml2-1.3.1/tests/verification/solid_mechanics/gurson/gurson.vtest +121 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/combined.i +131 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/combined.vtest +107 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_multiaxial.i +117 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_multiaxial.vtest +106 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_uniaxial.i +117 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/isolinear_uniaxial.vtest +207 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/perzyna.xml +95 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/voce.i +118 -0
- neml2-1.3.1/tests/verification/solid_mechanics/perzyna/voce.vtest +107 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/perfect.i +105 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/perfect.vtest +107 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/ri.xml +49 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceiso.i +124 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceiso.vtest +107 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceisolinkin.i +138 -0
- neml2-1.3.1/tests/verification/solid_mechanics/rate_independent/voceisolinkin.vtest +107 -0
- 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
|
neml2-1.3.1/.gitmodules
ADDED
|
@@ -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
|
+
[](https://reverendbedford.github.io/neml2/) [](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
|
+
[](https://reverendbedford.github.io/neml2/) [](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.
|