@@ -24,44 +24,46 @@ const ElasticConstantsMatrix{T} = ElasticConstants{T,2}
24
24
struct TensorStress{T} <: Stress{T,2}
25
25
data:: MMatrix{3,3,T,9}
26
26
end
27
- TensorStress (data:: AbstractMatrix{T} ) where {T} = TensorStress {T} (MMatrix {3,3} (data))
28
- TensorStress (values... ) = TensorStress (SymmetricSecondOrderTensor {3} (values... ))
29
27
struct TensorStrain{T} <: Strain{T,2}
30
28
data:: MMatrix{3,3,T,9}
31
29
end
32
- TensorStrain (data:: AbstractMatrix{T} ) where {T} = TensorStrain {T} (MMatrix {3,3} (data))
33
- TensorStrain (values... ) = TensorStrain (SymmetricSecondOrderTensor {3} (values... ))
34
30
struct StiffnessTensor{T} <: Stiffness{T,4}
35
31
data:: SymmetricFourthOrderTensor{3,T}
36
32
end
37
- StiffnessTensor (data:: AbstractArray{T,4} ) where {T} =
38
- StiffnessTensor {T} (SymmetricFourthOrderTensor {3} (data))
39
33
struct ComplianceTensor{T} <: Compliance{T,4}
40
34
data:: SymmetricFourthOrderTensor{3,T}
41
35
end
42
- ComplianceTensor (data:: AbstractArray{T,4} ) where {T} =
43
- ComplianceTensor {T} (SymmetricFourthOrderTensor {3} (data))
44
36
struct EngineeringStress{T} <: Stress{T,1}
45
37
data:: MVector{6,T}
46
38
end
47
- EngineeringStress (data:: AbstractVector ) = EngineeringStress (MVector {6} (data))
48
- EngineeringStress (values... ) = EngineeringStress (MVector {6} (values... ))
49
39
struct EngineeringStrain{T} <: Strain{T,1}
50
40
data:: MVector{6,T}
51
41
end
52
- EngineeringStrain (data:: AbstractVector ) = EngineeringStrain (MVector {6} (data))
53
- EngineeringStrain (values... ) = EngineeringStrain (MVector {6} (values... ))
54
42
struct StiffnessMatrix{T} <: Stiffness{T,2}
55
43
data:: MMatrix{6,6,T,36}
56
44
end
57
- StiffnessMatrix (data:: AbstractMatrix{T} ) where {T} = StiffnessMatrix {T} (MMatrix {6,6} (data))
58
- StiffnessMatrix (values... ) = StiffnessMatrix (SymmetricSecondOrderTensor {6} (values... ))
59
45
struct ComplianceMatrix{T} <: Compliance{T,2}
60
46
data:: MMatrix{6,6,T,36}
61
47
end
62
- ComplianceMatrix (data:: AbstractMatrix{T} ) where {T} =
63
- ComplianceMatrix {T} (MMatrix {6,6} (data))
64
- ComplianceMatrix (values... ) = ComplianceMatrix (SymmetricSecondOrderTensor {6} (values... ))
48
+
49
+ # Constructors
50
+ for T in (:EngineeringStress , :EngineeringStrain )
51
+ @eval begin
52
+ $ T (data:: AbstractVector ) = $ T (MVector {6} (data))
53
+ $ T (values... ) = $ T (vec (values))
54
+ end
55
+ end
56
+ for (T, N) in
57
+ zip ((:TensorStress , :TensorStrain , :StiffnessMatrix , :ComplianceMatrix ), (3 , 3 , 6 , 6 ))
58
+ @eval begin
59
+ $ T (data:: AbstractMatrix{S} ) where {S} = $ T {S} (MMatrix {$N,$N} (data))
60
+ $ T (values... ) = $ T (SymmetricSecondOrderTensor {$N} (values... ))
61
+ end
62
+ end
63
+ for T in (:StiffnessTensor , :ComplianceTensor )
64
+ @eval $ T (data:: AbstractArray{S,4} ) where {S} =
65
+ $ T {S} (SymmetricFourthOrderTensor {3} (data))
66
+ end
65
67
66
68
Base. size (:: Type{<:TensorVariable} ) = (3 , 3 )
67
69
Base. size (:: Type{<:ElasticConstantsTensor} ) = (3 , 3 , 3 , 3 )
0 commit comments