python으로 유한요소법(FEM)~vba→python 번역편~

시리즈 카탈로그

  • python으로 유한원법(FEM)~vba→python 번역편~
  • 만들기
  • pythhon으로 유한요소법(FEM)~damyarou의 장난편~
  • python으로 유한원법(FEM)~행렬을 만드는 해법편~(예정)
  • vba→python 번역편의 개요


    구상을 대강 설명하다
    FEM python 작성
    우선, ~vba→ptyhon 번역편~이 책의 Excel 샘플5-1 三次元骨組解析.xls(이하 샘플)로python으로 다시 써보고 싶습니다.

    Excel 유한요소법 입문 골조 구조 해석 편(Excel 토목 강좌)
    번역은 아래견본python로 한다.
    5-1 3차원 골격 분석.xls
    
    Private Sub cmd計算_Click()
    
        Dim I As Long
        Dim NEQ As Integer
    
        For I = 1 To 配列上限
            AJCB(I) = 0
        Next
    
        Call データ入力
        Call SKYマトリックス(NEQ)
        For I = 1 To NEQ
            FORCE(I) = 0
        Next I
        Call 分布荷重振り分け
        Call 外力add
        Call decomp(NEQ)
        Call redbak(NEQ)
        Call 変位計算
        Call 力とモーメントの計算
    
        Call 結果出力
    
        MsgBox "解析が終わりました"
    
    End Sub
    
    framecalc.py
    from Calcrate import Calcrate
    
    if __name__ == "__main__":
    
        cal = Calcrate()
        NEQ = 0
    
        cal.データ入力()
        cal.SKYマトリックス(NEQ)
        cal.分布荷重振り分け()
        cal.外力add()
        cal.decomp(NEQ)
        cal.redbak(NEQ)
        cal.変位計算()
        cal.力とモーメントの計算()
    
        cal.結果出力()
    
        print("解析が終わりました")
    

    환경 조건


    나의 환경은 아래와 같다.

    OS

  • windows 7 Home premium Sp1
  • 개발 환경

  • python 3.5.2
  • Anaconda 4.2.0(64-bit)
  • pandas 0.18.1
  • numpy 1.12.0
  • tensorflow 0.12.0re1
  • 일단 한번 돌려보도록 하겠습니다.


    먼저 소스 코드를 다운로드합니다.
    견본5-1 三次元骨組解析.xls는 이 안내서에 따라 다운로드하십시오.
    이 Excel VBA를python으로 번역하세요.
    python으로 번역된 원본 파일을 여기에 놓으십시오.
    $ git clone -b "#1" https://github.com/sasaco/FramePython.git
    환경이 준비되면 원본 코드 디렉터리, 프레임 콜로 이동합니다.py를 치면 해석이 시작됩니다.
    해석이 끝났다고 답하면 해석이 정확하게 진행된다.
    $ cd FramePython
    
    $ python framecalc.py
    
    $ 解析が終わりました
    

    프로그램 사양


    데이터 입출력 정보


    견본 Excel은 워크시트[입력 1][입력 2]를 입력 데이터로
    워크시트 [계산/출력]에 해석 결과를 저장합니다.

    번역된python 프로그램이 Excel 워크시트와 협업하지 않음
    견본 Excel의 워크시트 [입력 1] [입력 2] [계산·출력]을 csv로 변환한 파일을 입력과 출력에 사용합니다.
  • 1 을 입력합니다.csv
  • 2를 입력합니다.csv
  • 출력을 계산하다.csv
  • 정렬된 색인 정보


    vba의 배열은 1~
    5-1 3차원 골격 분석.xls
    Range(1,1)
    
    python의 배열은 0~입니다
    Calcrate.py
    Range[0][0]
    
    따라서 번역할 때 주의해야 한다.

    드로잉 기능 정보


    견본 Excel의 드로잉 기능이python에 마이그레이션되지 않음

    비교 분석 결과


    당분간 vba→ptyhon의 번역 작업이 끝났고 이들의 분석 결과를 비교해 보았다
    거의 0의 작은 값은 오차가 있지만 재현도는 괜찮죠

    샘플 Excel 분석 결과(발췌문)


    변위
    REACT
    원소.
    X
    Y
    Z
    angX
    angY
    angZ
    Rx
    Ry
    Rz
    Mx
    My
    Mz
    노트
    Fx
    Fy
    Fz
    Mx
    My
    Mz
    1
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    1
    3.49E+01
    408.073
    20.088
    31.400
    1.73E-16
    -17.837
    1
    1
    408.073
    -34.929
    20.088
    1.73E-16
    -31.400
    -17.837
    2
    2.30E-03
    -2.59E-02
    -1.23E-04
    1.17E-04
    -6.91E-21
    -2.08E-03
    2
    -5.00E-15
    -76.000
    0.000
    48.000
    1.28E-14
    -75.000
    2
    -408.073
    34.929
    -20.088
    -1.73E-16
    -48.953
    -121.877
    3
    1.17E-02
    -4.30E-02
    2.04E-04
    2.42E-04
    4.04E-19
    -3.80E-03
    3
    -1.46E-13
    -78.000
    0.000
    48.000
    -3.70E-14
    -75.000
    2
    2
    269.653
    -44.737
    22.027
    -1.03E-14
    -34.644
    -46.608
    4
    2.76E-02
    -5.04E-02
    1.19E-03
    4.20E-04
    -5.62E-19
    -5.41E-03
    4
    9.19E-14
    -56.000
    0.000
    42.667
    3.56E-13
    -66.667
    3
    -269.653
    44.737
    -22.027
    1.03E-14
    -53.464
    -132.339
    5
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    0.00E+00
    5
    7.02E+00
    623.968
    20.088
    31.400
    -6.73E-15
    29.101
    3
    3
    116.788
    -45.660
    18.809
    2.42E-14
    -24.329
    -50.990

    python 프로그램의 해석 결과 (발췌)


    변위
    REACT
    원소.
    X
    Y
    Z
    angX
    angY
    angZ
    Rx
    Ry
    Rz
    Mx
    My
    Mz
    노트
    Fx
    Fy
    Fz
    Mx
    My
    Mz
    1
    0
    0
    0
    0
    0
    0
    1
    34.9286048
    408.0727049
    20.08821182
    31.40032555
    -9.49E-15
    -17.83716034
    1
    1
    408.0727049
    -34.9286048
    20.08821182
    -9.49E-15
    -31.40032555
    -17.83716034
    2
    0.002298747
    -0.025909378
    -0.000123095
    0.000117015
    3.79E-19
    -0.002080804
    2
    -1.91E-14
    -76
    -3.11E-15
    48
    1.46E-14
    -75
    2
    -408.0727049
    34.9286048
    -20.08821182
    9.49E-15
    -48.95252174
    -121.8772589
    3
    0.011665227
    -0.043030177
    0.000204306
    0.000242481
    8.13E-19
    -0.003795417
    3
    -6.95E-14
    -78
    -6.66E-15
    48
    -1.17E-13
    -75
    2
    2
    269.6525828
    -44.73675837
    22.02695187
    -1.08E-14
    -34.64397073
    -46.60823232
    4
    0.027638145
    -0.050445274
    0.001194231
    0.000419675
    6.78E-19
    -0.005408655
    4
    -2.39E-13
    -56
    3.55E-14
    42.66666667
    -2.39E-13
    -66.66666667
    3
    -269.6525828
    44.73675837
    -22.02695187
    1.08E-14
    -53.46383676
    -132.3388011
    5
    0
    0
    0
    0
    0
    0
    5
    7.022385521
    623.9683925
    20.08821182
    31.40032555
    -4.93E-15
    29.10143338
    3
    3
    116.7877789
    -45.66043605
    18.80913902
    3.39E-15
    -24.32874619
    -50.9899696

    다음번


    어쨌든 비슷한 결과가 나올 때까지 해냈어요.
    다음번
    - 분석 섹션의 범주 구분
    - 행렬 해법
    등 고민했다.
    이 기사는 현재 진행 중인 기획입니다.
    아직 완성되지 않았다.
    현재 프로그램 상태는 마스터 지점입니다.
    https://github.com/sasaco/FramePython/tree/master
    상술한 내용 중에는 이미 약간의 수정이 시작되었을 것이다
    관심 있으신 분은 연락 주세요.

    좋은 웹페이지 즐겨찾기