From cdae1d101088b5be2f1a0f1160c96629e99bbf15 Mon Sep 17 00:00:00 2001 From: Taylor McDonnell Date: Tue, 23 Aug 2022 12:24:17 -0600 Subject: [PATCH] add conversion methods --- src/afmesh.jl | 3 +++ src/section.jl | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/afmesh.jl b/src/afmesh.jl index 86556bf4d..bd6babfa0 100644 --- a/src/afmesh.jl +++ b/src/afmesh.jl @@ -20,6 +20,9 @@ end Base.eltype(::Layer{TF}) where {TF} = TF Base.eltype(::Type{Layer{TF}}) where {TF} = TF +Layer{TF}(l::Layer) where {TF} = Layer{TF}(l.material, l.t, l.theta) +Base.convert(::Type{Layer{TF}}, l::Layer) where {TF} = Layer{TF}(l) + # from https://discourse.julialang.org/t/findnearest-function/4143/4 function searchsortednearest(a, x) idx = searchsortedfirst(a, x) diff --git a/src/section.jl b/src/section.jl index 8325811d5..1cec4dbf0 100644 --- a/src/section.jl +++ b/src/section.jl @@ -27,6 +27,10 @@ end Base.eltype(::Material{TF}) where TF = TF Base.eltype(::Type{Material{TF}}) where TF = TF +Material{TF}(m::Material) where {TF} = Material{TF}(m.E1, m.E2, m.E3, m.G12, m.G13, m.G23, + m.nu12, m.nu13, m.nu23, m.rho) +Base.convert(::Type{Material{TF}}, m::Material) where {TF} = Material{TF}(m) + """ Node(x, y) @@ -44,6 +48,9 @@ end Base.eltype(::Node{TF}) where TF = TF Base.eltype(::Type{Node{TF}}) where TF = TF +Node{TF}(n::Node) where {TF} = Node{TF}(n.x, n.y) +Base.convert(::Type{Node{TF}}, n::Node) where {TF} = Node{TF}(n) + """ MeshElement(nodenum, material, theta) @@ -64,6 +71,9 @@ end Base.eltype(::MeshElement{VI, TF}) where {VI, TF} = TF Base.eltype(::Type{MeshElement{VI, TF}}) where {VI, TF} = TF +MeshElement{VI,TF}(e::MeshElement) where {VI,TF} = MeshElement{VI,TF}(e.nodenum, e.material, e.theta) +Base.convert(::Type{MeshElement{VI,TF}}, e::MeshElement) where {VI,TF} = MeshElement{VI,TF}(e) + """ internal cache so allocations happen only once upfront """