From cda76ad64cfd2ad25f8da401a8ea419da9bc09b7 Mon Sep 17 00:00:00 2001 From: lijas Date: Mon, 23 Oct 2023 16:27:35 +0200 Subject: [PATCH] Check material direction for TransverselyIsotropic material --- src/transverselyisotropic.jl | 3 +++ test/test_transversely.jl | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/transverselyisotropic.jl b/src/transverselyisotropic.jl index c8afbeb..f87b9e5 100644 --- a/src/transverselyisotropic.jl +++ b/src/transverselyisotropic.jl @@ -56,6 +56,9 @@ struct TransverselyIsotropicState <: MaterialModels.AbstractMaterialState end function initial_material_state(::TransverselyIsotropic, a3::Vec{3,Float64} = Vec{3,Float64}((1.0, 0.0, 0.0))) + if !(norm(a3) ≈ 1.0) + throw(ArgumentError("The material direction vector is not a unit vector (norm(a3) = $(norm(a3)))")) + end return TransverselyIsotropicState(a3) end diff --git a/test/test_transversely.jl b/test/test_transversely.jl index 17d4fcc..f89dd32 100644 --- a/test/test_transversely.jl +++ b/test/test_transversely.jl @@ -45,6 +45,8 @@ C = tovoigt(inv(∂σ∂ε), offdiagscale=2.0) @test _C ≈ C + + @test_throws ArgumentError initial_material_state(m, Vec((-0.5, 0.0, 0.0))) #=components = ((1,1),(2,2),(3,3),(2,3),(1,3),(1,2)) for (I,(i,j)) in pairs(components), (J,(k,l)) in pairs(components) if !( _C[I,J] ≈ C[i,j,k,l] )