java İle kafes sistem Çözümü
TRANSCRIPT
-
8/15/2019 Java İle Kafes Sistem Çözümü
1/20
İSTANBUL ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
İNŞAAT MÜHENDİSLİĞİ BÖLÜMÜ
HAZİRAN, 2016 İSTANBUL
Hazırlayanlar:
Hamed FARAJZADEH (2602130074)
Rouhollah NASİRZADEHDİZAJİ (2602150082)Serdar ULUSOY (2602150141)
Vefa OKUMUŞ (2602150142)
İNŞAAT MÜHENDİSLİĞİNDE JAVA PROGRAMLAMA
FİNAL ÇALIŞMASI
-
8/15/2019 Java İle Kafes Sistem Çözümü
2/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 2 -
…. Final Çalışması.…
İÇİNDEKİLER
İÇİNDEKİLER .........................................................................................................................2
ŞEKİL LİSTESİ .......................................................................................................................3
1 GİRİŞ VE YÖNTEM........................................................................................................ 4
1.1 GİRİŞ..........................................................................................................................4
1.2 YAZILIM...................................................................................................................4
1.2.1 Sınıflar ................................................................................................................... 5
1.2.2 NodeData Metodu..................................................................................................5
1.2.3 FrameData Metodu ................................................................................................ 6
1.2.4 Kg Metodu.............................................................................................................8
1.2.5 ForceVector Metodu.............................................................................................. 8
1.2.6 Restraint Metodu ................................................................................................... 9
1.2.7 Displacement Metodu............................................................................................ 9
1.2.8 FrameForces Metodu........................................................................................... 10
1.2.9 Reactions Metodu ................................................................................................ 11
1.2.10 Invert Metodu ...................................................................................................... 12
2 ÖRNEK SİSTEM............................................................................................................ 16
2.1 SİSTEMİN TANIMI ............................................................................................... 16
2.2 VERİ DOSYALARI ................................................................................................ 16
2.3 SONUÇLAR ............................................................................................................. 17
3 DEĞERLENDİRME VE SONUÇ .................................................................................19
KAYNAKLAR........................................................................................................................20
-
8/15/2019 Java İle Kafes Sistem Çözümü
3/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 3 -
…. Final Çalışması.…
ŞEKİL LİSTESİ
Şekil 2.1 : Örnek sistem geometrisi ve yüklemesi ........................................................... 16Şekil 2.2 : Örnek sistem düğüm noktası data dosyası ...................................................... 16Şekil 2.3 : Örnek sistem çubuk data dosyası ....................................................................17Şekil 2.4 : Sistemin çözülmüş hali ...................................................................................17Şekil 2.5 : Örnek sistemin yazılımla çözülen sonuçları ................................................... 18
-
8/15/2019 Java İle Kafes Sistem Çözümü
4/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 4 -
…. Final Çalışması.…
1 GİRİŞ VE YÖNTEM
1.1 GİRİŞ
Kafes sistemlerin matris-deplasman yöntemiyle analizini konu edinen bu çalışma kapsamında
Java platformunda çalışan bir yazılım hazırlanmıştır. Çalışmada öncelikle programın genel
yapısı ve kodları sunulmuş sonrasında ise örnek bir sistemin çözümü verilmiştir.
1.2 YAZILIM
Yazılımın main metodu aşağıda sunulmuştur. Yazılım 8 farklı metod ile çalışmaktadır. Bunlar
nokta bilgilerini data dosyasından alan “nodeData” metodu, frame bilgilerini data dosyasından
alan “frameData” metodu, global rijitlik matrisini kuran “kg” metodu, kuvvet vektörünü kuran
“forceVector ” metodu, mesnet koşullarını global matrise işleyen “restraint” metodu,
deplasmanları hesaplayan “displacements” metodu, çubuk kuvvetlerini hesaplayan
“frameforces” metodu ve reaksiyonları hesaplayan “reactions” metodu.
static node node[] = new node[100];static frame frame[] = new frame[100];static double kg [][];static double kgunrest[][];static double f [][];static int r [][];static int nn;static double disp[][];
public static void main(String[] args) throws IOException {
// Call nodeData function to get node informationnodeData();// Call nodeData function to get frame informationframeData();// Call kg function to build global stiffness matrixkg ();// Call restraint function to build force vectorforceVector ();// Call restraint function to modify kg for restraintsrestraint();// Call displacement function for calculation of displacementsdisplacements();// Call frameforces function for calculation of frame forces
frameforces();// Call reactions function for calculation of frame forcesreactions();}
-
8/15/2019 Java İle Kafes Sistem Çözümü
5/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 5 -
…. Final Çalışması.…
1.2.1 Sınıflar
Programda MSA01 ana sınıfının yanında node ve frame isimli iki farklı sınıf bulunmaktadır.
public class node {
int nodeNo, nodeResX, nodeResY;double nodeX, nodeY, nodeFx, nodeFy;
}
public class frame {
int frameNo, frameNodei, frameNodej;double frameiX, frameiY, framejX, framejY;
double frameE, frameA, frameL;double frameSM[][] = new double[4][4];
}
1.2.2 NodeData Metodu
Bu metod veri dosyasından düğüm noktası bilgilerini okur.
public static void nodeData() throws IOException {
// This method opens text file and parses element dataint i=0;
File file = new File("C:/java/nodes.txt");
FileReader fileReader = new FileReader(file);String line;
BufferedReader br = new BufferedReader(fileReader);
while ((line = br.readLine()) != null) {
node[i] = new node();
String[] values = line.split("\\t");
node[i].nodeNo = Integer. parseInt(values[0]);node[i].nodeX = Double. parseDouble(values[1]);node[i].nodeY = Double. parseDouble(values[2]);node[i].nodeResX = Integer. parseInt(values[3]);node[i].nodeResY = Integer. parseInt(values[4]);node[i].nodeFx = Integer. parseInt(values[5]);node[i].nodeFy = Integer. parseInt(values[6]);
i=i+1;
}
// number of nodesnn = i;
-
8/15/2019 Java İle Kafes Sistem Çözümü
6/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 6 -
…. Final Çalışması.…
br.close();
}
Düğüm noktası bilgileri “C:\java” klasöründe bulunan “nodes.txt” dosyasından okunmaktadır.
Dosyanın data yapısı aşağıdaki şekilde olmalıdır. Veriler aynı satırda ve tab karakteriyle
ayrılmış olmalıdır.
Node numarası
X Koordinatı
Y Koordinatı
X Yönünde Mesnetlenme Y Yönünde Mesnetlenme
X Yönünde Kuvvet
Y Yönünde Kuvvet
1.2.3 FrameData Metodu
Bu metod veri dosyasından çubuk bilgilerini okur.
public static void frameData() throws IOException {// This method opens text file and parses element dataint i=0;double c, s;
File file = new File("C:/java/frames.txt");FileReader fileReader = new FileReader(file);String line;BufferedReader br = new BufferedReader(fileReader);
while ((line = br.readLine()) != null) {
//Get frame dataframe[i] = new frame();
String[] values = line.split("\\t");
frame[i].frameNo = Integer. parseInt(values[0]);frame[i].frameNodei = Integer. parseInt(values[1]);frame[i].frameNodej = Integer. parseInt(values[2]);
frame[i].frameE = Double. parseDouble(values[3]);frame[i].frameA = Double. parseDouble(values[4]);
// Get frame coordinates
frame[i].frameiX = node[frame[i].frameNodei].nodeX;frame[i].frameiY = node[frame[i].frameNodei].nodeY;
frame[i].framejX = node[frame[i].frameNodej].nodeX;
-
8/15/2019 Java İle Kafes Sistem Çözümü
7/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 7 -
…. Final Çalışması.…
frame[i].framejY = node[frame[i].frameNodej].nodeY;
// Calculate frame lengthframe[i].frameL = Math.sqrt(Math. pow ((frame[i].framejX-frame[i].frameiX),2) + Math. pow ((frame[i].framejY-frame[i].frameiY),2));
// Calculate cos and sinc = (frame[i].framejX-frame[i].frameiX)/frame[i].frameL;s = (frame[i].framejY-frame[i].frameiY)/frame[i].frameL;
frame[i].frameSM[0][0] =c*c*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[0][1] =c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[0][2] = -1*c*c*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[0][3] = -1*c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;
frame[i].frameSM[1][0] =c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[1][1] =s*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[1][2] = -1*c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[1][3] = -1*s*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;
frame[i].frameSM[2][0] = -1*c*c*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[2][1] = -
1*c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[2][2] =c*c*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[2][3] =c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;
frame[i].frameSM[3][0] = -1*c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[3][1] = -1*s*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[3][2] =c*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;frame[i].frameSM[3][3] =
s*s*frame[i].frameE*frame[i].frameA/frame[i].frameL;
i=i+1;}
br.close();
}
Çubuk bilgileri “C:\java” klasöründe bulunan “frames.txt” dosyasından okunmaktadır.
Dosyanın data yapısı aşağıdaki şekilde olmalıdır. Veriler aynı satırda ve tab karakteriyle
ayrılmış olmalıdır.
Çubuk numarası
-
8/15/2019 Java İle Kafes Sistem Çözümü
8/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 8 -
…. Final Çalışması.…
i Nokta Numarası
j Nokta Numarası
Çubuk elastisite modülü
Çubuk alanı
1.2.4 Kg Metodu
Bu metod global rijitlik matrisini kurar.
public static void kg() throws IOException {
// This method builds global stiffness matrixMSA01.kg = new double[2*nn][2*nn];MSA01.kgunrest = new double[2*nn][2*nn];
int i = 0, j = 0, t=0;int iNode = 0, jNode = 0;
while (i < nn-1) {
//Get frame node numbersiNode = frame[i].frameNodei;jNode = frame[i].frameNodej;
int DOFs[] = {2*iNode, 2*iNode+1, 2*jNode, 2*jNode+1};
for(j=0; j
-
8/15/2019 Java İle Kafes Sistem Çözümü
9/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 9 -
…. Final Çalışması.…
1.2.6 Restraint Metodu
Bu metod nokta mesnetlerinin rijitlik matrisine etkisini ayarlar.
public static void restraint() throws IOException {
MSA01.r = new int[2*nn][1];
for(int i=0; i
-
8/15/2019 Java İle Kafes Sistem Çözümü
10/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 10 -
…. Final Çalışması.…
File file = new File("C:/java/results.txt");if (!file.exists()) {file.createNewFile();}
FileWriter fileWriter = new FileWriter(file, true);BufferedWriter bWriter = new BufferedWriter(fileWriter);
MSA01.disp = new double[mA][nB];
bWriter.write("Displacements");bWriter.write(System.lineSeparator ());
if (nA != mB) throw new RuntimeException("Illegal matrixdimensions.");
for (int i = 0; i < mA; i++){for (int j = 0; j < nB; j++){
for (int k = 0; k < nA; k++){disp[i][j] += f [i][k] * kg_inv[k][j];
}
bWriter.write(String.valueOf (disp[0][j]));bWriter.write(System.lineSeparator ());
}}
bWriter.close();}
1.2.8 FrameForces Metodu
Bu metod çubuk kuvvetlerini hesaplar .
public static void frameforces() throws IOException {
int i = 0;int iNode = 0, jNode = 0;double c=0, s=0, E = 0, A = 0, L = 0;double dix = 0, diy=0, djx=0, djy=0;double F = 0;
File file = new File("C:/java/results.txt");if (!file.exists()) {file.createNewFile();}
FileWriter fileWriter = new FileWriter(file, true);BufferedWriter bWriter = new BufferedWriter(fileWriter);
bWriter.write(System.lineSeparator ());bWriter.write("Frame Forces");bWriter.write(System.lineSeparator ());
-
8/15/2019 Java İle Kafes Sistem Çözümü
11/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 11 -
…. Final Çalışması.…
while (i < nn-1) {
//Get frame node numbersiNode = frame[i].frameNodei;
jNode = frame[i].frameNodej;
E = frame[i].frameE;A = frame[i].frameA;L = frame[i].frameL;
// Calculate cos and sinc = (frame[i].framejX-frame[i].frameiX)/frame[i].frameL;s = (frame[i].framejY-frame[i].frameiY)/frame[i].frameL;
dix = MSA01.disp[0][2*iNode];diy = MSA01.disp[0][2*iNode+1];djx = MSA01.disp[0][2*jNode];
djy = MSA01.disp[0][2*jNode+1];
F = (E*A/L)*(c*(djx-dix) + s*(djy-diy));bWriter.write("Frame" + String.valueOf (i) +": " +
String.valueOf (F));bWriter.write(System.lineSeparator ());
i++;}
bWriter.close();
}
1.2.9 Reactions Metodu
Bu nokta reaksiyonlarını hesaplar.
public static void reactions() throws IOException {
int mA = disp.length;int nA = disp[0].length;int mB = kgunrest.length;int nB = kgunrest[0].length;
File file = new File("C:/java/results.txt");if (!file.exists()) {file.createNewFile();}
FileWriter fileWriter = new FileWriter(file, true);BufferedWriter bWriter = new BufferedWriter(fileWriter);
bWriter.write(System.lineSeparator ());bWriter.write("Reactions");bWriter.write(System.lineSeparator ());
if (nA != mB) throw new RuntimeException("Illegal matrixdimensions.");
-
8/15/2019 Java İle Kafes Sistem Çözümü
12/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 12 -
…. Final Çalışması.…
for (int i = 0; i < mA; i++){for (int j = 0; j < nB; j++){
for (int k = 0; k < nA; k++){
f [i][j] += disp[i][k] * kgunrest[k][j];}
bWriter.write(String.valueOf (f [0][j]));bWriter.write(System.lineSeparator ());
}}
bWriter.close();}
1.2.10 Invert Metodu
Bu metod bir matrisin tersini almaya yarar. Bu metod tarafımızca yazılmış olmayıp internet
kaynaklıdır.
public static double[][] invert(double a[][])
{int n = a.length;
double x[][] = new double[n][n];
double b[][] = new double[n][n];
int index[] = new int[n];
for (int i=0; i
-
8/15/2019 Java İle Kafes Sistem Çözümü
13/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 13 -
…. Final Çalışması.…
// Perform backward substitutions
for (int i=0; i=0; --j)
{x[j][i] = b[index[j]][i];
for (int k=j+1; k
-
8/15/2019 Java İle Kafes Sistem Çözümü
14/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 14 -
…. Final Çalışması.…
}
c[i] = c1;
}
// Search the pivoting element from each column
int k = 0;
for (int j=0; j
-
8/15/2019 Java İle Kafes Sistem Çözümü
15/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 15 -
…. Final Çalışması.…
// Modify other elements accordingly
for (int l=j+1; l
-
8/15/2019 Java İle Kafes Sistem Çözümü
16/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 16 -
…. Final Çalışması.…
2 ÖRNEK SİSTEM
2.1 SİSTEMİN TANIMI
Sistem geometrisi ve yükleme aşağıda verildiği gibidir . Çubuk elastisite modülü 200 kN/mm2,
çubuk alanı ise 100 mm2’dir.
Şekil 2.1 : Örnek sistem geometrisi ve yüklemesi
2.2 VERİ DOSYALARI
Sistem düğüm noktası data dosyası aşağıdaki şekildedir:
Şekil 2.2 : Örnek sistem düğüm noktası data dosyası
-
8/15/2019 Java İle Kafes Sistem Çözümü
17/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 17 -
…. Final Çalışması.…
Sistem çubuk data dosyası aşağıdaki şekildedir:
Şekil 2.3 : Örnek sistem çubuk data dosyası
2.3 SONUÇLAR
Şekil 2.4 : Sistemin çözülmüş hali
Buna göre sistem tepe noktasında – y yönünde 100 mm deplasman yapmıştır. Sistem simetrik
olduğundan çubuk kuvveti 50√ 2 kN (70kN), mesnet reaksiyonları da her iki yönde 50
kN’dur.
Yazılımdan elde edilen sonuçlar aşağıdaki şekildedir:
-
8/15/2019 Java İle Kafes Sistem Çözümü
18/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 18 -
…. Final Çalışması.…
Şekil 2.5 : Örnek sistemin yazılımla çözülen sonuçları
-
8/15/2019 Java İle Kafes Sistem Çözümü
19/20
İnşaat Mühendisliğinde Java ProgramlamaFinal Çalışması 02.06.2016
- 19 -
…. Final Çalışması.…
3 DEĞERLENDİRME VE SONUÇ
Bu çalışma kapsamında matris-deplasman yöntemiyle kafes sistem çözümü yapan bir Java
programı hazırlanmış ve örnek bir sistem programla çözülmüştür. Programın örnek
çözümdeki sonuçlarla aynı değeri verdiği görülmüştür.
-
8/15/2019 Java İle Kafes Sistem Çözümü
20/20
- 20 -
…. Final Çalışması.…
KAYNAKLAR
Structural Analysis IV, Dr. C Caprani Lecture Notes,
http://www.colincaprani.com/files/notes/SAIV/4%20-20Matrix%20Stiffness%20Method.pdf
http://www.colincaprani.com/files/notes/SAIV/4%20-20Matrix%20Stiffness%20Method.pdf