FrameCE Structural Engineering Software
  • Home
  • About
  • Downloads
  • Users gallery
  • Pricing
  • Purchase
  • Contact us
  • What they say?
    • My blogs
  • Frequently asked questions
  • Contact us
  • Home
  • About
  • Downloads
  • Users gallery
  • Pricing
  • Purchase
  • Contact us
  • What they say?
    • My blogs
  • Frequently asked questions
  • Contact us
Of all structural analysis software I have used, this is the most user friendly !
                                                                                                            Dennes T.
FrameCE amazed me! I can edit load values by clicking the load itself !
                                                                                                            Jun (Perth, WA, Australia)     

Editing beam section properties is very cool, it is like playing PC games....
                                                                                                            Ana

This is first time I have experienced a structural engineering software where the user have the control which beam to show results without hiding other members! Great stuff...
                                                                                                            Neth

Performing dynamic analysis is quick and easy...
                                                                                                            Ribie (Melbourne, VIC, Australia) 

FrameCE graphics are excellent, beam, nodes and loads are highlighted when mouse hovers over them, just like Autoccad.....never seen structural software like this before.
                                                                                                             Bebot

I've been using another software for many years, I was hesitant to use FrameCE. But when I tried it once, I really liked it, because of its powerful graphics.                                                                                                           Name withheld (Melbourne, VIC)      

FrameCE support to users is the best!!! I want other egnineers to know how you value your users. Can't be more thankful to you.
                                                                                                            Rob ( NSW, Aus)         


Public Function EIFS_1(CrackSize, FH, A, B)
     ' get the FH of Crack size in the MCG
     Dim x As Double
     x = (Log(CrackSize) - Log(A)) / B
     
     'Get EIFS
     Dim x0 As Double
     x0 = x - FH
     ' Get EIFS
     EIFS_1 = A * Exp(B * x0)
 
End Function

Public Function EIFS_2(CrackSize, FH, A, B, A2, B2, DTA_a0)
     ' get the FH of Crack size in the MCG
     Dim x As Double
     x = (Log(CrackSize) - Log(A)) / B
     
     'Get the FH under the curve1
     Dim EIFS_1, x0, x2 As Double
     x0 = x - FH
     ' Get EIFS
     EIFS_1 = A * Exp(B * x0)
     ' Get the FH inside the DTA curve
     
     Dim FH2, FH_DTA, DTA_FH0 As Double
    If EIFS_1 < DTA_a0 Then
         ' Get the FH0 in the DTA
         DTA_FH0 = (Log(DTA_a0) - Log(A2)) / B2
         
         ' Get the flight hours under the back extrapolated curve
         x0 = x - DTA_FH0
               
        ' Get the FH under the second curve
        x2 = FH - x0
                 
        ' get the FH coordinate
        x2 = DTA_FH0 - x2
        EIFS_2 = A2 * Exp(B2 * x2)
        
        Else
        
        EIFS_2 = EIFS_1
    End If
End Function

Public Function GetPMF(inputRange As Range, A As Single, B As Single) As Integer
Dim size As Integer, val As Single
Dim inputValue() As Variant, outputArray() As Variant

    ' inputValue will either be an variant array for ranges with more than 1 cell
    ' or a single variant value for range will only 1 cell
    inputValue = inputRange

    On Error Resume Next
    size = UBound(inputValue)
    
 '     MsgBox (inputValue(2, 1))
    Dim i, Count As Integer
    
    Count = 0
    For i = 1 To size
      val = inputValue(i, 1)
         If val > A And val <= B Then
           Count = Count + 1
         End If
    Next i

  GetPMF = Count

End Function


Public Function RangeToArray(inputRange As Range, A As Single, B As Single) As Variant()
Dim size As Integer
Dim inputValue() As Variant, outputArray() As Variant

    ' inputValue will either be an variant array for ranges with more than 1 cell
    ' or a single variant value for range will only 1 cell
    inputValue = inputRange

    On Error Resume Next
    size = UBound(inputValue)
    
  '    MsgBox (inputValue(1, 1))

    If Err.Number = 0 Then
        RangeToArray = inputValue
        
    Else
        On Error GoTo 0
        ReDim outputArray(1 To 1, 1 To 1)
        outputArray(1, 1) = inputValue
        RangeToArray = outputArray
    End If

    On Error GoTo 0

End Function


Public Function GetRangeCount(A As Single, B As Single) As Integer
  Dim val As Single
  Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("C4:C700")
  val = cell.Value
   If val > A And val <= B Then
     Count = Count + 1
  End If
Next cell
GetRangeCount = Count
End Function


Public Function GetRangeCount2(A As Single, B As Single) As Integer
  Dim val As Single
  Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("D4:D700")
  val = cell.Value
   If val > A And val <= B Then
     Count = Count + 1
  End If
Next cell
GetRangeCount2 = Count
End Function



Public Function GetRangeCount_CrackDist1(A As Single, B As Single) As Integer
  Dim val As Single
  Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("E4:E700")
  val = cell.Value
   If val > A And val <= B Then
     Count = Count + 1
  End If
Next cell
GetRangeCount_CrackDist1 = Count
End Function




Public Function GetRangeCount_CrackDist2(A As Single, B As Single) As Integer
  Dim val As Single
  Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("F4:F700")
  val = cell.Value
   If val > A And val <= B Then
     Count = Count + 1
  End If
Next cell
GetRangeCount_CrackDist2 = Count
End Function

Public Function Solve_B_given_A(DTA_a0, DTA_FH0, A) As Single
  
  Solve_B_given_A = (Log(DTA_a0) - Log(A)) / DTA_FH0

End Function




Public Function GrowCrack2(EIFS As Single, DT As Single, A1 As Single, B1 As Single, A2 As Single, B2 As Single, DTA_a0 As Single, DTA_FH0 As Single)

   ' Get the location of a0
   Dim FH0, T, T0, DT1, DT2 As Single
   FH0 = (Log(EIFS) - Log(A1)) / B1
   If EIFS > DTA_a0 Then
       T = FH0 + DT
       GrowCrack2 = A1 * Exp(B1 * T)
     Else ' use second curve for first step
        T0 = (Log(EIFS) - Log(A2)) / B2
        DT1 = DTA_FH0 - T0
          If DT1 > DT Then  ' DTA CURVE NOT NEEDED
                GrowCrack2 = A2 * Exp(B2 * (T0 + DT))
              Else  ' USE TWO CURVES
                DT2 = DT - DT1
                GrowCrack2 = A1 * Exp(B1 * (DTA_FH0 + DT2))
          End If
  
    End If

End Function



Public Function GrowCrack1(EIFS As Single, DT As Single, A1 As Single, B1 As Single)

   ' Get the location of a0
   Dim DTA_FH0, T, T0, DT1, DT2 As Single
       
       DTA_FH0 = (Log(EIFS) - Log(A1)) / B1
       T = DTA_FH0 + DT
       GrowCrack1 = A1 * Exp(B1 * T)

End Function
​
                                                                                                        
  • Home
  • About
  • Downloads
  • Users gallery
  • Pricing
  • Purchase
  • Contact us
  • What they say?
    • My blogs
  • Frequently asked questions
  • Contact us