Lab 07 2011 2012 Suplement

background image

Informatyka I – Lab 07, r.a. 2011/2012

prow. Sławomir Czarnecki

Przykład – Algorytm – Zadanie na laboratorium nr. 7. Suplement


Opisany algorytm obliczania sił w kratownicach statycznie wyznaczalnych wyjaśniony będzie
dodatkowo na przykładzie 8-prętowej kratownicy statycznie wyznaczalnej – por. Rys.1.

Krok 1. Globalny układ kartezjański 0XY przyjęto jak na rysunku Rys.1.

Krok 2. Numeracja globalna węzłów

w = 0, 1,…, N = 5

, numeracja globalna prętów

p = 0,

1,…, M = 7

, liczba odebranych stopni swobody Z = 4 (pionowy stopień swobody w węźle

3

,

poziomy stopień swobody w węźle

4

, poziomy i pionowy stopień swobody w węźle

5

).


Definiowanie dynamiczne w programie macierzy i wektorów:

2

M ×

ALOK

,

2

N ×

X

,

T

Q ,

Z

R

zaleca się poprzedzić utworzeniem w dowolnym katalogu, plików tekstowych o
przykładowych nazwach: alok.txt, cart.txt, force.txt, bondary.txt (kojarzących się z
przeznaczeniem danych przechowywanych w tych plikach). Proponuje się następujący zapis
danych do tych plików:

 topologię połączeń prętów kratownicy (relacje definiujące dla każdego numeru pręta

numery węzłów na jego końcach) –

plik

alok.txt,

 geometrię (współrzędne kartezjańskie węzłów) –

plik

cart.txt,

 obciążenia (składowe kartezjańkie sił przyłożonych do węzłów) –

plik

force.txt

 warunki podparcia (numery odebranych stopnii swobody w kierunku poziomym i/lub

pionowym) –

plik

bondary.txt

dla 8-prętowej kratownicy statycznie wyznaczalnej przedstawionej na Rys.1. Przyjmujemy:

[ ]

1.5

l

h

m

=

=

,

[ ]

3

1.0 10

Q

N

=

.



0

1

2

3

4

5

0

1

2

3

4

7

5

6

Q

l

l

l

h

X

Y

Rys.1.








background image

plik

: alok.txt

plik

: cart.txt

plik

: force.txt

w pierwszym wierszu

w pierwszym wierszu

w kolejnych wierszach

liczba prętów (równa 8)

liczba węzłów (równa 6)

wszystkie składowe

a następnie w kolejnych

a następnie w kolejnych

wektorów obciążenia

wierszach wszystkie

wierszach wszystkie

węzłów w układzie 0XY

składowe macierzy

składowe kartezjańskie

przy czym nieznane

alokacji oddzielone

położeń węzłów w

składowe reakcji

spacją

przyjętym układzie 0XY

przyjąć równe 0

8

6

0.0 0.0

4 5

1.5 0.0

0.0 0.0

0 5

3.0 1.5

0.0 -1.0e3

0 4

4.5 1.5

0.0 0.0

0 1

3.0 0.0

0.0 0.0

1 3

0.0 0.0

0.0 0.0

1 2

0.0 1.5

2 3
0 3

plik

: boundary.txt

Uwaga !

Przyjmujemy numerację stopni swobody

w pierwszym wierszu

,

x

y

i i

w kierunku odpowiednio osi X i Y w węźle i-tym

liczba odebranych

następująco:

stopni swobody (równa 4)

2

x

i

i

= ⋅

(w kierunku poziomym X)

a następnie w kolejnych

2

1

y

i

i

= ⋅ +

(w kierunku pionowym Y)

wierszach wszystkie
numery odebranych
stopni swobody

4

7
8
10
11

W

pliku

alok.txt pierwszą liczbą jest liczba prętów M. Kolejność pozostałych zapisywanych

danych musi odpowiadać kolejności przyjętej numeracji prętów (od 0 do 7).
W

pliku

cart.txt pierwszą liczbą jest liczba węzłów N. Kolejność pozostałych zapisywanych

danych musi odpowiadać kolejności przyjętej numeracji węzłów (od 0 do 5).
W

pliku

force.txt nie ma już konieczności zapisu liczby węzłów N jeśli założymy, że w

programie plik ten będzie czytany po wczytaniu pliku cart.txt. Kolejność zapisywanych
danych musi odpowiadać kolejności przyjętej numeracji węzłów (od 0 do 5).
W

pliku

bondary.txt pierwszą liczbą jest liczba odebranych stopni swobody Z. Kolejność

pozostałych zapisywanych danych nie jest w tym przypadku istotna pod warunkiem, że po
wczytaniu tych danych w programie do wektora R, będzie on posortowany od najmniejszej
do największej wartości.


background image

Krok 2. Przed dynamicznym utworzeniem macierzy

2

M ×

ALOK

zaleca się najpierw

wczytanie pierwszej danej – liczby prętów M z pliku alok.txt, a następnie zdefiniowanie
dynamiczne macierzy

2

M ×

ALOK

i kontynuowanie wczytywania danych z pliku alok.txt z

jednoczesnym inicjalizowaniem odpowiednich składowych macierzy

2

M ×

ALOK

.


Krok 3.
Przed dynamicznym utworzeniem wektora

Z

R zaleca się najpierw wczytanie z pliku

boundary.txt pierwszej danej – liczby odebranych stopni swobody Z, a następnie
zdefiniowanie dynamiczne wektora

Z

R i kontynuowanie wczytywania danych z pliku

boundary.txt z jednoczesnym inicjalizowaniem odpowiednich składowych wektora

Z

R .


Krok 4.
W celu posortowania utworzonego w ten sposób wektora można wywołać funkcję
quick_sort(…) lub bubble_sort(…) z biblioteki bibs.h.

Krok 5.
Przed dynamicznym utworzeniem macierzy

2

N ×

X

zaleca się najpierw wczytanie z

pliku cart.txt pierwszej danej – liczby węzłów N, a następnie zdefiniowanie dynamiczne
macierzy

2

N ×

X

i kontynuowanie wczytywania danych z pliku cart.txt z jednoczesnym

inicjalizowaniem odpowiednich składowych macierzy

2

N ×

X

.


Krok 6.
W przyjętej powyżej kolejności wczytywania danych, możliwe jest dynamiczne
utworzenie wektora

T

Q dla T = 2N, a następnie rozpoczęcie wczytywanie danych z pliku

force.txt z jednoczesnym inicjalizowaniem odpowiednich składowych wektora

T

Q .


Krok 7.
Należy dynamicznie zdefiniować wektor

M

L oraz macierz

M

T

×

B

i postępować

zgodnie z opisanym algorytmem w celu zainicjalizowania składowych wektora

M

L i

macierzy

M

T

×

B

.


Krok 8.
Należy dynamicznie zdefiniować macierz

T

M

×

D

i w odpowiedni sposób ją

zainicjalizować.

Krok 9.
Należy dynamicznie zdefiniować macierze

,

g

d

D

D

, wektor F oraz wektory

,

g

d

Q

Q

o wymiarach podanych w kroku 9 i postępować zgodnie z opisanym algorytmem w celu
zainicjalizowania składowych obu macierzy

,

g

d

D

D

i wektora

g

Q

.

Krok 10. Należy sprawdzić warunek

?

T

Z

M

=

i w przypadku jego spełnienia obliczyć siły

w prętach kratownicy rozwiązując układ równań liniowych

g

g

=

D F

Q

(każda kratownica

będzie zdefiniowana jako statycznie wyznaczalna, stąd traktować należy warunek

?

T

Z

M

=

jedynie jako formalne sprawdzenie poprawności przyjmowanych/wczytywanych/obliczanych
danych). Do rozwiązania układu równań można na przykład wywołać funkcję gauss(…) z
biblioteki bibs.h . Należy pamiętać, że macierz

g

D

układu równań nie jest symetryczna. Po

znalezieniu wektora F, reakcje zewnętrzne

d

Q obliczamy z formuły

d

d

=

Q

D F .



background image

Dodatkowe uwagi

• Po uruchomieniu programu, na ekranie monitora konieczne jest wyświetlenie

wszystkich dynamicznie definiowanych wektorów i macierzy. W tym celu można
wywoływać funkcję display(…) z biblioteki bibs.h .

• Dodatkowo, należy zapisać do pliku tekstowego sily.txt oraz reakcje.txt wartości

składowych wektorów odpowiednio F i

d

Q .

• Po utworzeniu się plików sily.txt oraz reakcje.txt (sprawdzić czy się utworzyły i czy

zapisane zostały do nich poprawne wartości) należy wywołać program Wizualizacja
Kratownicy.exe
napisany w C#. Program ten będzie dostępny w odpowiednim
katalogu. Po wywołaniu programu wizualizacji, na ekranie pojawić powinna się
analizowana kratownica oraz obliczone siły podłużne.

background image


Wyszukiwarka

Podobne podstrony:
Lab 02 2011 2012
Lab 06 2011 2012
Lab 09 2011 2012
Lab 06 2011 2012 NWD
Lab 10 2011 2012
Lab 05 2011 2012
Lab 04 2011 2012
Lab 09 2011 2012
Lab 03 2011 2012
Lab 03 2011 2012
Lab 08 2011 2012
Lab 02 2011 2012
Lab 06 2011 2012
Lab 09 2011 2012
Lab 06 2011 2012 NWD

więcej podobnych podstron