Option Explicit
'http://www.efunda.com/formulae/solid_mechanics/composites/calc_ufrp_cs_arbitrary.cfm
' E1 = Young 's Modulus along Fibers
' E2 = Young 's Modulus Normal to Fibers
' V12 = Poisson 's Ratio
' G12 = Shear Modulus
Function Stiffness_Compliance_Orient(OrientationDegrees As Double, E1 As Double, E2 As Double, V12 As Double, G12 As Double) As Variant
Const cPI As Double = 3.14159265358979
Dim T(1 To 3, 1 To 3) As Double, T_Inverse As Variant, T_Transpose As Variant
Dim R(1 To 3, 1 To 3) As Double, R_Inverse As Variant
Dim Stiffness(1 To 3, 1 To 3) As Double, Compliance(1 To 3, 1 To 3) As Double
Dim C_Bar As Variant, S_Bar As Variant
Dim i As Long, j As Long
Dim Answer(1 To 3, 1 To 6) As Double
Dim SinRad As Double, CosRad As Double, v21 As Double
SinRad = Sin(OrientationDegrees * cPI / 180#)
CosRad = Cos(OrientationDegrees * cPI / 180#)
'coordinate transformation matrix [T]
T(1, 1) = CosRad ^ 2
T(1, 2) = SinRad ^ 2
T(1, 3) = 2 * SinRad * CosRad
T(2, 1) = SinRad ^ 2
T(2, 2) = CosRad ^ 2
T(2, 3) = -2 * SinRad * CosRad
T(3, 1) = -SinRad * CosRad
T(3, 2) = SinRad * CosRad
T(3, 3) = CosRad ^ 2 - SinRad ^ 2
T_Inverse = Application.WorksheetFunction.MInverse(T)
T_Transpose = Application.WorksheetFunction.Transpose(T_Inverse)
'engineering-tensor interchange matrix [R]
R(1, 1) = 1#
R(1, 2) = 0#
R(1, 3) = 0#
R(2, 1) = 0#
R(2, 2) = 1#
R(2, 3) = 0#
R(3, 1) = 0#
R(3, 2) = 0#
R(3, 3) = 2#
R_Inverse = Application.WorksheetFunction.MInverse(R)
'stiffness matrix [C]
v21 = (E2 / E1) * V12
Stiffness(1, 1) = E1 / (1 - V12 * v21)
Stiffness(1, 2) = V12 * E2 / (1 - V12 * v21)
Stiffness(1, 3) = 0#
Stiffness(2, 1) = v21 * E1 / (1 - V12 * v21)
Stiffness(2, 2) = E2 / (1 - V12 * v21)
Stiffness(2, 3) = 0#
Stiffness(3, 1) = 0#
Stiffness(3, 2) = 0#
Stiffness(3, 3) = G12
'compliance matrix [S]
Compliance(1, 1) = 1 / E1
Compliance(1, 2) = -V12 / E1
Compliance(1, 3) = 0#
Compliance(2, 1) = -v21 / E2
Compliance(2, 2) = 1 / E2
Compliance(2, 3) = 0#
Compliance(3, 1) = 0#
Compliance(3, 2) = 0#
Compliance(3, 3) = 1 / G12
'The stiffness matrix for a lamina of arbitry orient can be expressed in terms of the stiffness matrix in the principal direction
'C_Bar
C_Bar = Application.WorksheetFunction.MMult(T_Inverse, Stiffness)
C_Bar = Application.WorksheetFunction.MMult(C_Bar, R)
C_Bar = Application.WorksheetFunction.MMult(C_Bar, T)
C_Bar = Application.WorksheetFunction.MMult(C_Bar, R_Inverse)
'The complicance matrix for a lamina of arbitry orient can be obtained in a similar manner.
'S_Bar
S_Bar = Application.WorksheetFunction.MInverse(C_Bar)
'put in answer
For i = 1 To 3
For j = 1 To 3
Answer(i, j) = C_Bar(i, j)
Answer(i, j + 3) = S_Bar(i, j)
Next j
Next i
Stiffness_Compliance_Orient = Answer
End Function