/BATCH FINISH /CLEAR,ALL /PREP7 /VIEW,1,1,1,1 /AUTO ! *********** MAIN PROGRAM FOR PARAMETRIC STUDY *********** NUM_CHORD_SIZE=4 ! Specify number of chord size that we want to run NUM_WEB_SIZE=4 ! Specify number of web size that we want to run NUM_PCR=336 ! all of Model = 4032 *DIM,CHORD_SEC_DATA,ARRAY,6,NUM_CHORD_SIZE !*DIM,NAME,TYPE,ROW(นอน),COLUMN(ตั้ง) *DIM,WEB_SEC_DATA,ARRAY,6,NUM_WEB_SIZE CHORD_SEC_DATA(1,1)=100,100,100,8,8,6 ! W 100X100 mm. CHORD_SEC_DATA(1,2)=125,125,150,14,14,8.5 ! W 150x125 mm. CHORD_SEC_DATA(1,3)=125,125,250,19,19,10 ! W 250x125 mm. CHORD_SEC_DATA(1,4)=150,150,300,22,22,11.5 ! W 300x150 mm. ! CHORD_SEC_DATA(Row 1 ,Column 1 ) เริ่ม => (Row 2 , Column 1),(3,1),(4,1),... ถ้าเป็นเหล็กกล่องให้ดูการใส่ที่ SECDATA WEB_SEC_DATA(1,1)=100,100,100,8,8,6 ! W 100X100 mm. WEB_SEC_DATA(1,2)=125,125,150,14,14,8.5 ! W 150x125 mm. WEB_SEC_DATA(1,3)=125,125,250,19,19,10 ! W 250x125 mm. WEB_SEC_DATA(1,4)=150,150,300,22,22,11.5 ! W 300x150 mm. *DIM,TABLEPCR,TABLE,NUM_PCR,1 *TREAD,TABLEPCR,data_pcr,CSV,,0 KKK=0 *DO,LOADPCR,1,NUM_PCR,1 PCRMODEL%LOADPCR%=TABLEPCR(LOADPCR,1) /COM, ! PASS PCR *CFOPEN,PCRMODE1,TXT,,APPEND *VWRITE,PCRMODEL%LOADPCR% (' PCRMODEL = ',F15.5) /COM, ! PASS VWRITE PCR *CFCLOS *ENDDO *DO,LENGTH,12000,24000,2000 ! LENGTH = SPAN LENGTH 12000, 16000, 18000, 20000, 24000 mm. *DO,NJOINT,13,21,4 ! 13 17 21 NJOINT = NUMBER OF JOINT TRUSS_DEPTH=1200 ! TRUSS DEPTH = 1200 mm. *DO,NUM_CHORD,1,NUM_CHORD_SIZE,1 *DO,P2,1,6,1 ! เอาค่าจาก CHORD_SEC_DATA มาเก็บไว้ใน CHORD_SEC_DATA%P2% โดยที่ละตัว CHORD_SEC_DATA%P2%=CHORD_SEC_DATA(P2,NUM_CHORD) ! เช่น CHORD_SEC_DATA 1 = CHORD_SEC_DATA(1,1) = 100 mm. *ENDDO ! เช่น CHORD_SEC_DATA 2 = CHORD_SEC_DATA(2,1) = 100 mm. *DO,WEB_SIZE,1,NUM_WEB_SIZE,1 *DO,Q2,1,6,1 ! PULL DATA FROM THE BRACE TABLE FOR THE INPUT FOR BRACE INFORMATION WEB_SEC_DATA%Q2%=WEB_SEC_DATA(Q2,WEB_SIZE) *ENDDO *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND ! add comment for the analysis here *VWRITE, (' Any comment: ') ! Type any comments that want to show in text file in the blancket *CFCLOS /COM, !----------------------------INPUT PART-------------------------------- ANAL_TYPE=5 ! 5 = Large displacement analysis LOAD_TYPE=4 ! 1 = Point load at one-third point ! 2 = Uniform load at every joint on either top or bottom chord ! 4 = Point load at midspan (Ip-plane load case only) LOAD_CHORD=2 ! FOR EIGEN VALUE BUCKLING ANALYSIS AND STATIC IN-PLANE ANALYSIS ONLY ! 2 = TOP CHORD APPLY_P=1 ! Any value for static analysis /COM, !------------------------ END OF INPUT PART --------------------------- /COM, !-------------------START OF CONTROLLED VARIABLE----------------------- TRUSS_TYPE=1 ! 0 = VIERENDEEL TRUSS ! 1 = HOWE TRUSS ! 2 = PRATT TRUSS /COM, ! -------- LATERAL STIFFNESS TEST ONLY ------- HOR_LOAD_POS=2 ! FOR HORIZONTAL STATIC LOAD ANALYSIS ONLY ! 1 = HORIZONTAL LOAD APPLY AT BOTTOM CHORD ! 2 = HORIZONTAL LOAD APPLY AT TOP CHORD ! 3 = HORIZONTAL LOAD APPLY AT BOTH CHORDS MID_SPN_LD=1 ! 0 = LOAD APPLIED AT ONE AND TWO THIRD POINTS (out-of-plane case only) ! 1 = LOAD APPLIED AT MIDSPAN ! 2 = LOAD APPLIED AT All TOP CHORD LAT_STOP=1 ! 0 = NO LATERAL STOP ! 1 = LATERAL STOP AT THE UNLOADED CHORD AT ONE AND TWO THIRDS ! 2 = LATERAL STOP AT THE UNLOADED CHORD AT MIDSPAN /COM, ! ------------------------- /COM, ! TRUSS PROPERTIES PANEL_LGTH=LENGTH/(NJOINT-1) DIAG_DIST=SQRT(PANEL_LGTH**2+TRUSS_DEPTH**2) VER_LGTH=TRUSS_DEPTH DIAG_LGTH=DIAG_DIST ! ****************************************************************************** /COM, ! SECTION PROPERTY ET,1,BEAM188 /COM, ! ------------------ Chord --------------------- SECTYPE,1,BEAM,I,CHORD,3 ! ถ้าเป็นเหล็กกล่อง ตรง I จะเป็น HREC SECDATA,CHORD_SEC_DATA1,CHORD_SEC_DATA2,CHORD_SEC_DATA3,CHORD_SEC_DATA4,CHORD_SEC_DATA5,CHORD_SEC_DATA6 /COM, ! --------------Vertical and diagonal ------------------- SECTYPE,2,BEAM,I,VER_DIAG,3 ! SECTION FOR web vertical and diagonal SECDATA,WEB_SEC_DATA1,WEB_SEC_DATA2,WEB_SEC_DATA3,WEB_SEC_DATA4,WEB_SEC_DATA5,WEB_SEC_DATA6 /COM, ! --------------------------------------- MP,EX,1,20389.019 ! FOR CHORD AND WEB (Ey, Ez -> kg/mm^2 แปลงหน่วยจาก 200 GPA ) MP,PRXY,1,0.3 ! MP,GXY,1,7841.9304 ! kg/mm^2 ET,2,LINK180 SECTYPE,3,LINK,RECT,BRACE,3 SECDATA,BRACE_DATA1,BRACE_DATA2,BRACE_DATA3,BRACE_DATA4 S1=1 !************************************************************************************* S2=3 S3=1 *DO,A1,S1,S2,S3 ! Do loop for Ex BRACE *************************************************************** MP,EX,2,1 !A1 ! FOR BRACE (kg/mm^2) ******************************************************************* ! ****************************************************************************** ! CREATE ARRAY FOR STORING DATA *DIM,CHORD_KP_NUM1,ARRAY,NJOINT,4 ! ARRAY 1 = KP ON BOTTOM CHORD ! ARRAY 2 = KP ON TOP CHORD ! ARRAY 3 = ORIENTATION KP FOR BOTTOM CHORD ! ARRAY 4 = ORIENTATION KP FOR TOP CHORD *DIM,CHORD_NODE_NUM1,ARRAY,NJOINT,2 ! Store node number at joints (At KP location) ! 1ST COLUMN = NODE NUMBER ON KP AT BOTTOM CHORD ! 2ND COLUMN = NODE NUMBER ON KP AT TOP CHORD *DIM,CHORD_LINE_NUM1,ARRAY,NJOINT-1,2 ! ARRAY 1 = BOTTOM CHORD ! ARRAY 2 = TOP CHORD *DIM,VER_WEB_LINE_NUM1,ARRAY,NJOINT,1 ! ARRAY 1 = VERTICAL WEB LINE NUMBER *DIM,DIAG_WEB_LINE_NUM1,ARRAY,NJOINT-1,1 ! ARRAY 1 = DIAGONAL WEB LINE NUMBER *DIM,VER_WEB_KP_NUM1,ARRAY,NJOINT,4 ! ARRAY 1 = KP OF VERTICAL WEB AT BOTTOM CHORD ! ARRAY 2 = KP OF VERTICAL WEB AT TOP CHORD ! ARRAY 3 = ORIENTATION KP FOR VERTICAL WEB AT BOTTOM CHORD ! ARRAY 4 = ORIENTATION KP FOR VERTICAL WEB AT TOP CHORD *DIM,DIAG_WEB_KP_NUM1,ARRAY,NJOINT-1,5 ! ARRAY 1 = KP ON PANEL 1 NEAR BOTTOM CHORD ! ARRAY 2 = KP ON PANEL 1 NEAR TOP CHORD ! ARRAY 3 = REFERENCE KP ON PANEL 1 NEAR BOTTOM CHORD ! ARRAY 4 = ORIENTATION KP FOR BOTTOM CHORD ! ARRAY 5 = ORIENTATION KP FOR TOP CHORD ! ****************************************************************************** ! +++++++++++++ GENERATE VARIABLE REPORT ++++++++++++++ *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE (' =========== VARIABLE REPORT ============= ') *IF,ANAL_TYPE,EQ,1,THEN *VWRITE (' EIGEN VALUE BUCKLING ANALYSIS ') *ELSEIF,ANAL_TYPE,EQ,3,THEN ! IF, ค่าตัวแปรเริ่ม , เท่ากับ , ค่าตัวแปรสุดท้าย , ถ้าใช่ให้เขียน *VWRITE (' STATIC ANALYSIS - IN-PLANE ANALYSIS') ! เขียน STATIC ANALYSIS - IN-PLANE ANALYSIS ในไฟล์ *ELSEIF,ANAL_TYPE,EQ,5,THEN *VWRITE (' LARGE DISPLACEMENT ANALYSIS ') *ELSEIF,ANAL_TYPE,EQ,4,THEN *IF,HOR_LOAD_POS,EQ,1,THEN *VWRITE (' STATIC ANALYSIS - HORIZONTAL LOAD - LOADS APPLIED AT BOTTOM CHORD') *ELSEIF,HOR_LOAD_POS,EQ,2 *VWRITE (' STATIC ANALYSIS - HORIZONTAL LOAD - LOADS APPLIED AT TOP CHORD') *ELSEIF,HOR_LOAD_POS,EQ,3 *VWRITE (' STATIC ANALYSIS - HORIZONTAL LOAD - LOADS APPLIED AT BOTH CHORD') *ENDIF *ELSEIF,ANAL_TYPE,EQ,5,THEN *VWRITE (' LARGE DISPLACEMENT ANALYSIS ') *ENDIF *IF,ANAL_TYPE,EQ,4,THEN *IF,MID_SPN_LD,EQ,0,THEN *VWRITE (' HORIZONTAL LOAD APPLIED AT ONE AND TWO THIRD POINTS ') *ELSEIF,MID_SPN_LD,EQ,1 *VWRITE (' HORIZONTAL LOAD APPLIED AT MIDSPAN ') *ENDIF *ENDIF *VWRITE,NUM_CHORD (' NUM_CHORD = ',F5.1) *VWRITE,CHORD_SEC_DATA1,CHORD_SEC_DATA2,CHORD_SEC_DATA3,CHORD_SEC_DATA4,CHORD_SEC_DATA5,CHORD_SEC_DATA6 (' CHORD_DIAMETER = ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' MM.') *VWRITE,WEB_SIZE (' WEB_SIZE = ',F5.1) *VWRITE,WEB_SEC_DATA1,WEB_SEC_DATA2,WEB_SEC_DATA3,WEB_SEC_DATA4,WEB_SEC_DATA5,WEB_SEC_DATA6 (' WEB_DIAMETER = ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' ',F5.1,' MM.') *VWRITE,ANAL_TYPE (' ANAL_TYPE = ',F5.1) *VWRITE,LOAD_TYPE (' LOAD_TYPE = ',F5.1) *VWRITE,APPLY_P (' APPLIED LOAD = ',F8.3) *VWRITE,LENGTH (' SPAN LENGTH = ',F10.1,' MM. ') *VWRITE,NJOINT (' NJOINT = ',F5.1,' JOINT. ') *VWRITE,TRUSS_DEPTH (' TRUSS_DEPTH = ',F10.1,' MM. ') *IF,TRUSS_TYPE,EQ,0,THEN *VWRITE ('TRUSS TYPE= VIERENDEEL TRUSS ') *ELSEIF,TRUSS_TYPE,EQ,1,THEN *VWRITE ('TRUSS TYPE = HOWE TRUSS ') *ELSEIF,TRUSS_TYPE,EQ,2 *VWRITE ('TRUSS TYPE = PRATT TRUSS ') *ENDIF *VWRITE (' ============ END OF VARIABLES REPORT ============ ') *CFCLOS ! +++++++++++++ END OF VARIABLES REPORT ++++++++++++++ ! ****************************************************************************** /COM, ! ------ Create CHORD KP ------- (สร้างจุดที่สนใจ) K,1,0,0,0 ! K , ค่าเริ่ม = 0 and 1 , ตำแหน่ง coordinate system x , y , z KGEN,NJOINT,1,1,1,PANEL_LGTH ! KGEN, ITIME, NP1, NP2, NINC K,,0,TRUSS_DEPTH,0 MAXKP=_RETURN KGEN,NJOINT,MAXKP,,,PANEL_LGTH /COM, ! ------ STORE ALL OF THE KP IN ARRAY ------ (เก็บค่า KP เป็น ARRAY) ALLSEL,ALL *DO,I1,1,NJOINT,1 CHORD_KP_NUM1(I1,1)=KP((I1-1)*PANEL_LGTH,0,0) ! KP AT BOTTOM CHORD CHORD_KP_NUM1(I1,2)=KP((I1-1)*PANEL_LGTH,TRUSS_DEPTH,0) ! KP AT TOP CHORD *ENDDO ! ------ FINISH STORING ALL KP IN THE ARRAY ------ /COM, ! --- GENERATE LINE BY USING KP FROM CHORD_KP_NUM1 --- (สร้างเส้นใช้ KP จาก CHORD_KP_NUM1) *DO,I1,1,NJOINT ! WEB VERTICAL LINE L,CHORD_KP_NUM1(I1,1),CHORD_KP_NUM1(I1,2) *ENDDO *DO,I1,1,NJOINT-1 ! BOTTOM CHORD LINE L,CHORD_KP_NUM1(I1,1),CHORD_KP_NUM1(I1+1,1) *ENDDO *DO,I1,1,NJOINT-1 ! TOP CHORD LINE L,CHORD_KP_NUM1(I1,2),CHORD_KP_NUM1(I1+1,2) *ENDDO *IF,TRUSS_TYPE,EQ,1,THEN *DO,I1,1,(NJOINT-1)/2 ! WEB DIAGONAL LINE 0 to L/2 L,CHORD_KP_NUM1(I1,1),CHORD_KP_NUM1(I1+1,2) *ENDDO *DO,I1,(NJOINT-1)/2+1,NJOINT-1 ! WEB DIAGONAL LINE L/2 TO L L,CHORD_KP_NUM1(I1+1,1),CHORD_KP_NUM1(I1,2) *ENDDO *ELSEIF,TRUSS_TYPE,EQ,2,THEN *DO,I1,1,(NJOINT-1)/2 ! WEB DIAGONAL LINE 0 to L/2 L,CHORD_KP_NUM1(I1+1,1),CHORD_KP_NUM1(I1,2) *ENDDO *DO,I1,(NJOINT-1)/2+1,NJOINT-1 ! WEB DIAGONAL LINE L/2 TO L L,CHORD_KP_NUM1(I1,1),CHORD_KP_NUM1(I1+1,2) *ENDDO *ENDIF ! ------- END OF GEOMETRY FOR TRUSS 1 -------- ! ***************************************************************************** ! --------- GROUP ALL LINES WITH THE SAME TYPES IN TRUSS ---------- LSEL,S,LOC,X,0,0.001 ! VERTICAL WEB LINE *DO,I1,2,NJOINT LSEL,A,LOC,X,(I1-1)*PANEL_LGTH,(I1-1)*PANEL_LGTH+.001 *ENDDO LSEL,R,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 CM,ALL_WEB,LINE LSEL,S,LOC,Y,0,0.001 ! BOTTOM CHORD LINE LSEL,U,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 CM,ALL_BOT_CHORD,LINE LSEL,S,LOC,Y,TRUSS_DEPTH,TRUSS_DEPTH+0.001 ! TOP CHORD LINE LSEL,U,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 CM,ALL_TOP_CHORD,LINE LSEL,S,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+0.001 ! DIAGONAL LINE *DO,I1,1,NJOINT LSEL,U,LOC,X,(I1-1)*PANEL_LGTH,(I1-1)*PANEL_LGTH+.001 *ENDDO CM,ALL_DIAG,LINE ! ****************************************************************************** ! ATTACH LINE ATTRIBUTE TO ALL LINES *DO,I1,1,NJOINT-1 ! LATT BOTTOM AND TOP CHORDS LSEL,S,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 LSEL,R,LOC,Y,0,0.001 K_REF=CHORD_KP_NUM1(I1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,1 LSEL,S,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 LSEL,R,LOC,Y,TRUSS_DEPTH,TRUSS_DEPTH+0.001 K_REF=CHORD_KP_NUM1(I1,4) ! REFERENCE KP AT TOP CHORD LATT,1,1,1,,K_REF,,1 *ENDDO *DO,I1,1,NJOINT ! LATT VERTICAL WEB LINE LSEL,S,LOC,X,(I1-1)*PANEL_LGTH,(I1-1)*PANEL_LGTH+0.001 LSEL,R,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 K_REF=CHORD_KP_NUM1(I1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,2 *ENDDO *IF,TRUSS_TYPE,EQ,1,THEN *DO,I1,1,(NJOINT-1)/2 ! LATT DIAGONAL LINE (FIRST HALF) LSEL,S,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 LSEL,R,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 K_REF=CHORD_KP_NUM1(I1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,2 *ENDDO *DO,I1,(NJOINT-1)/2+1,NJOINT-1 ! LATT DIAGONAL LINE (SECOND HALF) LSEL,S,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 LSEL,R,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 K_REF=CHORD_KP_NUM1(I1+1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,2 *ENDDO *ELSEIF,TRUSS_TYPE,EQ,2,THEN *DO,I1,1,(NJOINT-1)/2 ! LATT DIAGONAL LINE (FIRST HALF) LSEL,S,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 LSEL,R,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 K_REF=CHORD_KP_NUM1(I1+1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,2 *ENDDO *DO,I1,(NJOINT-1)/2+1,NJOINT-1 ! LATT DIAGONAL LINE (SECOND HALF) LSEL,S,LOC,Y,TRUSS_DEPTH/2,TRUSS_DEPTH/2+.001 LSEL,R,LOC,X,(I1-0.5)*PANEL_LGTH,(I1-0.5)*PANEL_LGTH+0.001 K_REF=CHORD_KP_NUM1(I1,3) ! REFERENCE KP AT BOTTOM CHORD OFFSET LATT,1,1,1,,K_REF,,2 *ENDDO *ENDIF ! ****************************************************************************** ! MESH ALL THE TRUSS LINES ALLSEL,ALL LSEL,S,LENGTH,,0,1000 LESIZE,ALL,10 LSEL,S,LENGTH,,1000,20000 LESIZE,ALL,40 ALLSEL,ALL LMESH,ALL ! ****************************************************************************** /COM, ! ----------------- STORE NODE AT CHORD KP LOCATION IN ARRAY TRUSS 1 ------------------ *DO,I1,1,NJOINT,1 KSEL,S,KP,,CHORD_KP_NUM1(I1,1) NSLK,S *GET,CHORD_NODE_NUM1(I1,1),NODE,0,NUM,MIN ! NODE ASSOCIATE WITH KP AT BOTTOM CHORD KSEL,S,KP,,CHORD_KP_NUM1(I1,2) NSLK,S *GET,CHORD_NODE_NUM1(I1,2),NODE,0,NUM,MIN ! NODE ASSOCIATE WITH KP AT TOP CHORD *ENDDO *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE (' Node location ') *VWRITE (' BOTTOM CHORD ') ! Z COORDINATE SHOULD BE ZERO *VWRITE (' JOINT_NO. NODE NUMBER X_COORDINATE Y_COORDINATE Z_COORDINATE ') *DIM,NODE_COOR_BC,ARRAY,NJOINT,4 *DIM,NODE_COOR_TC,ARRAY,NJOINT,4 ALLSEL,ALL *DO,I11,1,NJOINT,1 NODE_COOR_BC(I11,1)=CHORD_NODE_NUM1(I11,1) *GET,NODE_COOR_BC(I11,2),NODE,CHORD_NODE_NUM1(I11,1),LOC,X *GET,NODE_COOR_BC(I11,3),NODE,CHORD_NODE_NUM1(I11,1),LOC,Y *GET,NODE_COOR_BC(I11,4),NODE,CHORD_NODE_NUM1(I11,1),LOC,Z *ENDDO *VWRITE,SEQU,NODE_COOR_BC(1,1),NODE_COOR_BC(1,2),NODE_COOR_BC(1,3),NODE_COOR_BC(1,4) (' ',F7.2,' ',F7.2,' ',F12.2,' ',F12.2,' ',F12.2) *VWRITE (' Node location ') *VWRITE (' TOP CHORD ') ! Z COORDINATE SHOULD BE ZERO *VWRITE (' JOINT_NO. NODE NUMBER X_COORDINATE Y_COORDINATE Z_COORDINATE ') ALLSEL,ALL *DO,I12,1,NJOINT,1 NODE_COOR_TC(I12,1)=CHORD_NODE_NUM1(I12,2) *GET,NODE_COOR_TC(I12,2),NODE,CHORD_NODE_NUM1(I12,2),LOC,X *GET,NODE_COOR_TC(I12,3),NODE,CHORD_NODE_NUM1(I12,2),LOC,Y *GET,NODE_COOR_TC(I12,4),NODE,CHORD_NODE_NUM1(I12,2),LOC,Z *ENDDO *VWRITE,SEQU,NODE_COOR_TC(1,1),NODE_COOR_TC(1,2),NODE_COOR_TC(1,3),NODE_COOR_TC(1,4) (' ',F7.2,' ',F7.2,' ',F12.2,' ',F12.2,' ',F12.2) ALLSEL,ALL ! ----------------------- SOLUTION PART -------------------------- /SOLU ! ---------------------- BOUNDARY -------------------------------- NSEL,ALL FDELE,ALL,ALL DDELE,ALL,ALL D,CHORD_NODE_NUM1(1,1),UX,0 D,CHORD_NODE_NUM1(1,1),UY,0 D,CHORD_NODE_NUM1(1,1),UZ,0 D,CHORD_NODE_NUM1(1,2),UZ,0 D,CHORD_NODE_NUM1(NJOINT,1),UY,0 D,CHORD_NODE_NUM1(NJOINT,1),UZ,0 D,CHORD_NODE_NUM1(NJOINT,2),UZ,0 ! ****************************************************************************** ALLSEL,ALL /COM, ! ----------------------------- LARGE DISPLACEMENT ANALYSIS ------------------------------ *IF,ANAL_TYPE,EQ,5,THEN ! Large displacement analysis /SOLU ALLSEL,ALL FDELE,ALL,ALL ! DELETE PREVIOUS APPLIED FORCES ON NODES, IF EXIST PI=3.14159265359 *DO,N1,1,NJOINT,1 *GET,NODE_COOR_TC(N1,2),NODE,CHORD_NODE_NUM1(N1,2),LOC,X *GET,NODE_COOR_TC(N1,3),NODE,CHORD_NODE_NUM1(N1,2),LOC,Y *GET,NODE_COOR_TC(N1,4),NODE,CHORD_NODE_NUM1(N1,2),LOC,Z Z%N1%=(LENGTH/500)*(sin((PI*(N1-1)*(LENGTH/(NJOINT-1)))/LENGTH)) *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE,Z%N1% ('DIFLECTION PROFILE =',F15.3) *CFCLOS D,CHORD_NODE_NUM1(N1,2),UZ,Z%N1% *ENDDO *DO,N11,2,NJOINT-1,1 D,CHORD_NODE_NUM1(N11,1),UZ,0 *ENDDO ALLSEL,ALL SOLVE FINISH /PREP7 !UPGEOM,0,LAST,LAST,,rst UPCOORD,1,OFF FINISH /PREP7 *DIM,BRACE_DATA,ARRAY,5,1 BRACE_DATA(1,1)=100,100,100,2,2 ! RECT => B=100 mm ,H=100 mm ,Nb=2,Nh=2 *DO,B1,1,5,1 BRACE_DATA%B1%=BRACE_DATA(B1,1) *ENDDO /COM, !PASS1 /COM, !PASS2 *DIM,BRACE_LO,ARRAY,2,1 ! Location of brace at mid top chord K,,PANEL_LGTH*(NJOINT-1)/2,TRUSS_DEPTH,-1000 !K,,(NJOINT-1)/2,TRUSS_DEPTH,0 BRACE_LO(1,1)=KP(PANEL_LGTH*(NJOINT-1)/2,TRUSS_DEPTH,0) BRACE_LO(2,1)=KP(PANEL_LGTH*(NJOINT-1)/2,TRUSS_DEPTH,-1000) L,BRACE_LO(1,1),BRACE_LO(2,1) /COM, !PASS3 !*GET,BRACE_LO(1,1),KP,0,NUM,MIN !*GET,BRACE_LO(2,1),KP,0,NUM,MIN !LSEL,S,1000,0,0,1000 LATT,2,2,2,,K_REF,,3 LESIZE,ALL,10 !A,BRACE_LO(1,1),BRACE_LO(2,1) !ALLSEL,ALL LMESH,ALL ksel,s,KP,,BRACE_LO(2,1) NSLK,S *GET,BRACE_LO1,NODE,0,NUM,MIN *IF,AAsdlsokfidj,EQ,3,THEN *IF,AAsdsdsdsdssdlsokfidj,EQ,3,THEN *IF,AAsdlsaeweqwewqfsfokfidj,EQ,3,THEN /COM, !PASS4 FINISH /SOLU AllSEL,ALL FDELE,ALL,ALL DDELE,ALL,ALL D,CHORD_NODE_NUM1(1,1),UX,0 D,CHORD_NODE_NUM1(1,1),UY,0 D,CHORD_NODE_NUM1(1,1),UZ,0 D,CHORD_NODE_NUM1(1,2),UZ,0 D,CHORD_NODE_NUM1(NJOINT,1),UY,0 D,CHORD_NODE_NUM1(NJOINT,1),UZ,0 D,CHORD_NODE_NUM1(NJOINT,2),UZ,0 D,BRACE_LO1,UX,0 D,BRACE_LO1,UY,0 D,BRACE_LO1,UZ,0 *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE ('INPUT INITIAL IMPERFECTION') *VWRITE (' JOINT NUMBER BC DEFLECTION TC DEFLECTION') *VWRITE (' UX UY UZ UX UY UZ ') *DO,N11,1,NJOINT,1 *GET,UX_NODE_BC,NODE,CHORD_NODE_NUM1(N11,1),U,X *GET,UY_NODE_BC,NODE,CHORD_NODE_NUM1(N11,1),U,Y *GET,UZ_NODE_BC,NODE,CHORD_NODE_NUM1(N11,1),U,Z *GET,UX_NODE_TC,NODE,CHORD_NODE_NUM1(N11,2),U,X *GET,UY_NODE_TC,NODE,CHORD_NODE_NUM1(N11,2),U,Y *GET,UZ_NODE_TC,NODE,CHORD_NODE_NUM1(N11,2),U,Z *VWRITE,N11,UX_NODE_BC,UY_NODE_BC,UZ_NODE_BC,UX_NODE_TC,UY_NODE_TC,UZ_NODE_TC (' ',F5.1,' ',F6.3,' ',F6.3,' ',F6.3,' ',F6.3,' ',F6.3,' ',F6.3) *ENDDO *CFCLOS *IF,KKK,EQ,0,THEN !เพื่อให้ค่าเริ่มต้นของแรง II=1 *ENDIF ALLSEL,ALL FDELE,ALL,ALL ! DELETE PREVIOUS APPLIED FORCES ON NODES, IF EXIST ANTYPE,STATIC,NEW PSTRES,ON NLGEOM,ON SSTIF,ON NCNV,2 PT_LD_JOINT1=(NJOINT-1)/2+1 loadsteps=120 *DO,L111,1,loadsteps,1 !TIME,L111 *IF,L111,LT,7,THEN F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-0.1*PCRMODEL%II%*L111 *ELSEIF,L111,LT,11,THEN F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.6*PCRMODEL%II%+0.05*PCRMODEL%II%*(L111-6)) *ELSEIF,L111,LT,21,THEN F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.8*PCRMODEL%II%+0.01*PCRMODEL%II%*(L111-10)) *ELSEIF,L111,GT,20,THEN F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.9*PCRMODEL%II%+0.005*PCRMODEL%II%*(L111-20)) *ENDIF LSWRITE,L111 *ENDDO ! *DO,L112,1,4,1 ! F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.6*PCRMODEL%II%+0.05*PCRMODEL%II%*L112) ! LSWRITE,6+L112 ! *ENDDO ! *DO,L113,1,10,1 ! F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.8*PCRMODEL%II%+0.01*PCRMODEL%II%*L113) ! LSWRITE,10+L113 ! *ENDDO ! *DO,L114,1,100,1 ! F,CHORD_NODE_NUM1(PT_LD_JOINT1,2),FY,-(0.9*PCRMODEL%II%+0.005*PCRMODEL%II%*L114) ! LSWRITE,20+L114 ! *ENDDO LSSOLVE,1,loadsteps,1 FINISH /POST1 *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE,L111 (' L111 = ',F5.1) *VWRITE,PCRMODEL%II% (' MODE 1 PCR = ',F15.5) *VWRITE (' LOAD-DEFLECTION_CURVE_ALONG_TRUSS_SPAN ') *VWRITE,TRUSS_DEPTH (' TRUSS DEPTH = ',F10.2) *VWRITE,NUM_CHORD (' TOTAL CHORD NUMBER = ',F12.2) *VWRITE,WEB_SIZE (' TOTAL WEB NUMBER = ',F12.2) *CFCLOS *GET,LOAD111,NODE,CHORD_NODE_NUM1(PT_LD_JOINT1,2),F,FY /COM, !PASS *DO,L115,1,loadsteps,1 SET,L115 *GET,LOAD111,NODE,CHORD_NODE_NUM1(PT_LD_JOINT1,2),F,FY *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%,TXT,,APPEND *VWRITE,L115 (' NUMBER OF LOAD STEP = ',F5.1) *VWRITE,LOAD111 (' APPLY FORCE = ',F12.2) *VWRITE (' JOINT NUMBER BC DEFLECTION TC DEFLECTION') *VWRITE (' UX UY UZ UX UY UZ ') *DO,I111,1,NJOINT,(NJOINT-1)/2 *GET,UX_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(I111,1),U,X *GET,UY_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(I111,1),U,Y *GET,UZ_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(I111,1),U,Z *GET,UX_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(I111,2),U,X *GET,UY_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(I111,2),U,Y *GET,UZ_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(I111,2),U,Z *VWRITE,I111,UX_NODE_DEF_BC,UY_NODE_DEF_BC,UZ_NODE_DEF_BC,UX_NODE_DEF_TC,UY_NODE_DEF_TC,UZ_NODE_DEF_TC (' ',F5.1,' ',F15.5,' ',F15.5,' ',F15.5,' ',F15.5,' ',F15.5,' ',F15.5) *ENDDO *CFCLOS *CFOPEN,TRUSS_%LENGTH%_%NJOINT%_%TRUSS_DEPTH%_%NUM_CHORD%_%WEB_SIZE%_COPY,TXT,,APPEND *GET,LOAD111,NODE,CHORD_NODE_NUM1(PT_LD_JOINT1,2),F,FY *GET,UX_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,1),U,X *GET,UY_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,1),U,Y *GET,UZ_NODE_DEF_BC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,1),U,Z *GET,UX_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,2),U,X *GET,UY_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,2),U,Y *GET,UZ_NODE_DEF_TC,NODE,CHORD_NODE_NUM1(((NJOINT-1)/2)+1,2),U,Z NODE123=((NJOINT-1)/2)+1 *VWRITE,L115,LOAD111,NODE123,UX_NODE_DEF_BC,UY_NODE_DEF_BC,UZ_NODE_DEF_BC,UX_NODE_DEF_TC,UY_NODE_DEF_TC,UZ_NODE_DEF_TC (' NUMBER OF LOAD STEP = ',F5.1,'APPLY FORCE = ',F12.2,' NODE = ',F5.1,' BC (UX,UY,UZ) = ',F15.5,' ',F15.5,' ',F15.5,' TC (UX,UY,UZ) = ',F15.5,' ',F15.5,' ',F15.5) *CFCLOS *ENDDO FINISH II=II+1 KKK=KKK+1 *ENDIF *IF,AAsdlsokfidj,EQ,3,THEN *IF,AAsdsdsdsdss,EQ,3,THEN *IF,AAsdlsaeweqw,EQ,3,THEN *IF,AAAA,EQ,3,THEN PARSAV,ALL /COM, ! PASS FINISH /CLEAR,ALL /COM, ! PASS /PREP7 PARRES,NEW /COM, ! PASS *ENDDO ! ENDDO FOR EX BARCE *ENDDO ! ENDDO FOR WEB_SIZE *ENDDO ! ENDDO FOR NUM_CHORD *ENDDO ! ENDDO FOR njoint *ENDDO ! ENDDO FOR TRUSS LENGTH FINISH