2차원 탄성 골격 기하학적 비선형 분석

프로그램 개요

  • 이 프로그램은 원소의 미세한 위치 이동을 가설한 다음에 2차원 탄성 평면 골격에 대해 기하학적 비선형 분석을 한다.
  • 를 요소로 하고 1요소 2노드, 1노드 3자유도(수평위치, 수직위치, 회전)를 가진 양요소를 사용한다.
  • 부하로 노드 외력 증가량만 처리할 수 있습니다.
  • 균형조건을 계산하는 분석 방법으로 호형 길이 증량법을 사용한다. 이렇게 하면 위치가 커지지만 부하가 감소하는 현상도 추적할 수 있다.
  • 좌표계에서 오른쪽 방향은 x축이고 위 방향은 y축이며 시계 반대 방향은 양의 회전 방향이다.
  • 일차 양식을 연립하다.linalg.Solve(A,b)로 풀고 있어요.
  • 입력 데이터 파일, 출력 데이터 파일은 공백 구분자로 기록해야 하며, 파일 이름은 명령행 매개 변수로 입력해야 한다.
  • 처리 가능한 경계 조건
    항목
    설명
    노드 외력 증가
    마운트 노드 수, 마운트 노드 번호, 부하 증가 값 지정
    노드 변위 제한
    변위 제한 노드 수, 제한 노드 번호 지정(전체 제한: 변위 제한=0)

    FEM 해결자


    Program name
    Description
    py_fem_gfrmAL.py
    평면 골격 기하학적 비선형 구조 분석 프로그램

    FEM 분석 실행 스크립트

    python3 py_fem_gfrmAL.py inp.txt out.txt nnmax
    
    inp.txt
    : 데이터 파일 입력(공백 구분자 데이터)
    out.txt
    : 출력 데이터 파일(공백 구분자 데이터)
    nnmax
    : 마운트 단계

    입력 데이터 형식

    npoin  nele  nsec  npfix  nlod  # Basic values for analysis
    E  A  I                         # Material properties
        ..... (1 to nsec) .....     # 
    node_1  node_2  isec            # Element connectivity, material set number
        ..... (1 to nele) .....     # 
    x  y                            # Node coordinate of node
        ..... (1 to npoin) .....    # 
    lp  fix_x  fix_y  fix_r         # Restricted node number
        ..... (1 to npfix) .....    # 
    lp  df_x  df_y  df_r            # Loaded node and loading conditions (load increment)
        ..... (1 to nlod) .....     #     (omit data input if nlod=0)
    
    npoin, nele, nsec
    : 노드수, 요소수, 단면 특성수
    npfix, nlod
    : 잡기 노드 수, 장착 노드 수
    E, A, I
    : 탄성 계량, 횡단면, 단면 2차 반경
    node_1, node_2, isec
    : 노드 1, 노드 2, 단면 특성 번호
    x, y
    : x 좌표, y 좌표
    lp, fix_x, fix_y, fix_r
    : 노드 번호, x/y/회전 방향 무제한 (0: 자유, 1: 완전 구속)
    lp, df_x, df_y, df_r
    : 노드 번호, x・y・회전 방향 하중

    출력 데이터 형식

    npoin  nele  nsec npfix  nlod  nnmax
        (Each value of above)
    sec  E  A  I
        sec   : Material number
        E     : Elastic modulus
        A     : Section area
        I     : Moment of inertia
        ..... (1 to nsec) .....
    node  x  y  fx  fy  fr  kox  koy  kor
        node   : Node number
        x      : x-coordinate
        y      : y-coordinate
        fx     : Load in x-direction
        fy     : Load in y-direction
        fr     : Moment load
        kox    : Index of restriction in x-direction (0: free, 1: fixed)
        koy    : Index of restriction in y-direction (0: free, 1: fixed)
        kor    : Index of restriction in rotation    (0: free, 1: fixed)
        ..... (1 to npoin) .....
    elem  i  j  sec
        elem : Element number
        i    : Node number of start point
        j    : Node number of end point
        sec  : Material number
        ..... (1 to nele) .....
    * nnn=0 iii=0 lam=0.0
    node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
        node  : Node number
        fp-x  : Total load in x-direction
        fp-y  : Total load in y-direction
        fp-r  : Total load in rotation
        dis-x : Displacement in x-direction
        dis-y : Displacement in y-direction
        dis-r : Displacement in rotation
        dr-x  : Un-balanced force in x-direction
        dr-y  : Un-balanced force in y-direction
        dr-r  : Un-balanced force in rotation
        ..... (1 to npoin) .....
    elem  N_i  S_i  M_i  N_j  S_j  M_j
        elem : Element number
        N_i  : Axial force of node-i
        S_i  : Shear force of node-i
        M_i  : Moment of node-i
        N_j  : Axial force of node-j
        S_j  : Shear force of node-j
        M_j  : Moment of node-j
        ..... (1 to nele) .....
    * nnn=1 iii=xx lam=xxx
    node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
        node  : Node number
        fp-x  : Total load in x-direction
        fp-y  : Total load in y-direction
        fp-r  : Total load in rotation
        dis-x : Displacement in x-direction
        dis-y : Displacement in y-direction
        dis-r : Displacement in rotation
        dr-x  : Un-balanced force in x-direction
        dr-y  : Un-balanced force in y-direction
        dr-r  : Un-balanced force in rotation
        ..... (1 to npoin) .....
    elem  N_i  S_i  M_i  N_j  S_j  M_j
        elem : Element number
        N_i  : Axial force of node-i
        S_i  : Shear force of node-i
        M_i  : Moment of node-i
        N_j  : Axial force of node-j
        S_j  : Shear force of node-j
        M_j  : Moment of node-j
        ..... (1 to nele) .....
    
    .... .... ....
    
    * nnn=nnmax-1 iii=xx lam=xxx
    node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
        ..... (1 to npoin) .....
    elem  N_i  S_i  M_i  N_j  S_j  M_j
        ..... (1 to nele) .....
    n=(total degrees of freedom)  time=(calculation time)
    
    fp-x, fp-y, fp-r
    : x방향 하중, y방향 하중, 회전방향 하중
    dis-x, dis-y, dis-r
    : x 방향 이동, y 방향 이동, 회전 방향 이동
    dr-x, dr-y, dr-r
    : x방향 불균형력, y방향 불균형력, 회전방향 불균형력
    N, S, M
    : 축력, 절단력, 모멘트
    n
    : 전자유도 (연립 방정식의 원)
    time
    : 시간 계산

    수출 사례


    Program name
    Description
    inp_gfrm_canti.txt
    현수막 FEM 분석 입력 데이터
    inp_gfrm_cable.txt
    케이블이 있는 현수막 FEM 분석 입력 데이터
    inp_gfrm_arch.txt
    아치형 FEM 해석 입력 데이터
    inp_gfrm_lee.txt
    프레임 FEM 분석 입력 데이터
    py_fig_gfrm.py
    부하-위치 곡선 작도 프로그램(matplotlib)
    py_fig_gfrm_mode.py
    비트맵 제작 프로그램 (matplotlib)

    부하-위치 곡선 그리기 프로그램pyfig_gfrm.py


    부하 이동 곡선 제작 프로그램pyfig_gfrm.py에서는 통용성을 보여야 하기 때문에 명령줄에서 입력할 때 상당한 혼란이 발생할 수 있습니다.

    위치 이동 모드맵 제작 프로그램pyfig_gfrm_mode.py


    위치 이동 모드맵 제작 프로그램pyfig_gfrm_mode.py에서는 위치 이동 모드에서만 통용되는 도표를 쉽게 만들 수 있지만 경계 조건을 넣으려면 상당히 복잡해진다. 따라서 만들고자 하는 도표는 4장에 불과하기 때문에 프로그램에서 입력 파일을 지정하고 파일마다 개별적으로 처리한다.

    (하중을 나타내는 화살표)


    부하를 나타내는 화살표,arow로 쓰여 있다
    ax.arrow(x,y,u,v,head_length=hl,  ....)
    
    이런 명령은
    예를 들어, 세로 화살표를 그릴 때는 화살표의 꼬리에서 끝까지의 길이가 (v+head length)라는 점에 유의해야 합니다.
    uu=0.0
    vv=(ymax-ymin)*0.1
    x1=xx[lnod-1]
    y1=yy[lnod-1]+vv
    hl=vv*0.4
    hw=hl*0.5
    ax.arrow(x1,y1,uu,-(vv-hl), lw=2.0,head_width=hw, head_length=hl, fc='#555555', ec='#555555')
    

    (고정 끝을 나타내는 기호)


    수직 편도 빔의 밑에 있는 고정단을 나타내는 기호를 fill(...hatch='//')로 묘사합니다.
    여기fill은 직사각형 영역을 지정하지만 경계선이 필요하지 않기 때문에fill에서 linewidth=0.0을 지정하면 경계선을 그리지 않습니다.
    lp=1; x1=x[lp-1]; y1=y[lp-1]
    px=[x1-2*scl,x1+2*scl,x1+2*scl,x1-2*scl]
    py=[y1,y1,y1-1*scl,y1-1*scl]
    ax.fill(px,py,fill=False,linewidth=0.0,hatch='///')
    ax.plot([x1-2*scl,x1+2*scl],[y1,y1],color='#000000',linestyle='-',linewidth=1.5)
    

    FEM 계산 실행 / 부하 변위 곡선 작도 프로그램 실행용 스크립트

    # FEM calculation by Arc-Length method
    python py_fem_gfrmAL.py inp_gfrm_canti.txt out_gfrm_canti.txt 70
    python py_fem_gfrmAL.py inp_gfrm_cable.txt out_gfrm_cable.txt 290
    python py_fem_gfrmAL.py inp_gfrm_arch.txt out_gfrm_arch.txt 310
    python py_fem_gfrmAL.py inp_gfrm_lee.txt out_gfrm_lee.txt 160
    
    # Drawing of Load-displacement curve
    python py_fig_gfrm.py out_gfrm_canti.txt 11 11 -411.07 1000 1000 \$u/L\$ $\v/L\$ \$u/L\$\,$\v/L\$ \$P/P_{cr}\$ LL
    python py_fig_gfrm.py out_gfrm_cable.txt 12 11 -1644.3 1000 1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P/P_{cr}\$ LL
    python py_fig_gfrm.py out_gfrm_arch.txt 21 21 -666.4 -500 -500 \$u/R\$ \$v/R\$ \$u/R\$\,\$v/R\$ \$P\\cdot\(R^2/EI\)\$ UL
    python py_fig_gfrm.py out_gfrm_lee.txt 13 13 -166.6 1000 -1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P\\cdot\(L^2/EI\)\$ LL
    
    # Drawing of displacement mode
    python py_fig_gfrm_mode.py
    
    python py_fig_gfrm.py out.txt node-L node-D nd-L nd-u nd-v leg-u leg-v x-Label y-Label loc
    
    out.txt
    : FEM 출력 데이터 파일(공백 구분 데이터)
    node-L
    : 하중 변위 커브를 그릴 하중 노드 번호
    node-D
    : 로드 변위 곡선의 변위 그리기 노드 번호
    nd-L
    : 하중 무량강화용 수치(기호 포함)
    nd-u
    : x방향 변위 무량강화에 사용되는 수치(기호 포함)
    nd-v
    : 기호 포함 Y 방향 변위 무량강화 수치입니다.
    leg-u
    : x 방향 이동 태그(범례용)
    leg-v
    : y 방향 이동 레이블(범례용)
    x-Label
    : X축 레이블(Displacement)
    y-Label
    : y 축 레이블(Load)
    loc
    : 범례 드로잉 위치

    위치 이동 모드 및 부하-위치 곡선 출력 사례


    축의 압축력을 받는 현수막 (inp gfrm canti.txt)
    L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
    Initial deflection $v_0$=1mm
    Buckling load $P_{cr}=\pi^2 EI/4 L^2$=411.07N


    케이블로 앞부분의 팔걸이 빔 당기기 (inp gfrm cable.txt)
    Column: L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
    Cable: L=1,000mm, E=200,000MPa, A=28.3$^2$
    Initial deflection $v_0$=5mm
    Buckling load $P_{cr}=\pi^2 EI/L^2$=1644.3NN


    수직 집중 부하를 받는 비대칭 지지 아치형 (inp gfrm arch.txt)
    R=500mm, Center angle=215$^\circ$, E=200,000MPa, A=100m$^2$, I=833m$^4$


    수직 집중 부하를 받는 프레임 (inp gfrm lee.txt)
    L=1000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$


    이상

    좋은 웹페이지 즐겨찾기