• Ei tuloksia

Tallennus ja lähtötietojen luku tiedostosta

Elementin jäykkyysmatriisi ja geometrinen jäykkyysmatriisi

1 Yleistä Pilari-ohjelmasta

1.3 Tallennus ja lähtötietojen luku tiedostosta

Tallennuksessa käytetään MFC.n valmista serialisointitoimintoa. Sama funktio sekä tallentaa tiedostoon että lukee sieltä. Ainoastaan lähtötiedot tallennetaan; tulokset voi aina laskea uudelleen.

2 Luokat

2.1 CAboutDIg

Luokka CAboutDIg on kääntäjästä tullut. About-dialogi kertoo ohjelman versionumeron ja vuosiluvun. Se avataan menussa olevasta helpistä.

2.2 CAukko

2.2.1 Luokan asema

CAukko-luokan oliot tallennetaan taulukoihin (CArray), joita tarvitaan monessa muussa luokassa.

2.2.2 Jäsenmuuttujat

CList<CPistekuo, CPistekuo&> pistekX;

CList<CPistekuo, CPistekuo&> pistekY;

CList<CPistekuo, CPistekuo&> pistekZ;

CList<CPistevaa, CPistevaa&> pistemX;

CList<CPistemom, CPistemom&> pistemY;

CList<CPistemom, CPistemom&> pistemZ;

CList<CJatkuva, CJatkuva&> jatk_kY;

CList<CJatkuva, CJatkuva&> jatk_kZ;

CList<CJatk_vaa, CJatk_vaa&> jatk_mX;

Jännevälillä olevat kuormat ovat näissä listoissa.

CArray<CKuormTapaus, CKuormTapaus&> kuormTapaukset;

Tässä taulukossa ovat kaikki kuormitustapaukset.

Liite 3

CEpatarkkuudet mEpatarkkaY;

CEpatarkkuudet mEpatarkkaZ;

CProfiili mProfiili;

Epätarkkuudet y- ja z-suunnassa sekä tiedot poikkileikkauksesta.

double pituus;

Jännevälin pituus.

int epaYmerkki;

int epaZmerkki;

Epätarkkuuksien merkit. Muuttujan arvo on joko +1 tai -1 riippuen alkutaipuman suunnasta.

2.2.3 Luokan sisäiset toiminnot void set (const CAukko & arvo);

Tässä funktiossa kopioidaan kuorma- ja kuormitustapaustiedot arvo-oliosta. Funktiota kutsutaan operator= -funktiosta.

void tyhjennaKuormatO;

Tämä funktio vapauttaa kaiken kuormalistoille varatun muistin. Funktiota kutsutaan operator= - funktiosta sekä luokan CAukko tuhoajasta.

2.2.4 Luokan julkiset toiminnot virtual -CAukkoQ;

Luokan tuhoaja. Funktio vapauttaa muistin kuormalistoilta ja kuormitustapaustaulukolta.

CAukko & operator= (const CAukko &);

Funktiossa kopioidaan operaattorin oikealla puolella olevasta CAukko-oliosta pituus, kuormalistat, kuormitustapaukset ja poikkileikkaus.

void SetPituus(double arvo);

Asettaa jännevälin pituuden. Funktiota kutsutaan luokasta CAukkoDlg.

double GetPituusO;

Palauttaa jännevälin pituuden. Tätä funktiota kutsutaan monessa paikassa.

void SetP_y(double P, double lambda);

void SetP_z(double P, double lambda);

void SetP_v(double P, double lambda);

Käydään kuormalistat läpi ja annetaan kaikille kuormille P:n ja lambdan arvot. SetP_y ja SetP_z antavat myös epätarkkuudelle lambdan arvon. Näitä funktioita kutsutaan luokasta CSuunta johdetuista luokista jäsenfunktiosta SetP().

void SetKuormatY(int rajatila);

void SetKuormatZ(int rajatila);

Annetaan epätarkkuuksille niiden tarvitsemat mitat sekä tieto taivutuksen suunnasta. Lisäksi käydään kaikki kyseisen taivutussuunnan kuormalistat läpi ja muutetaan niissä ominaiskuormat

Liite 3

laskentakuormiksi. Funktioita kutsutaan luokan CTaivutusY tai CTaivutusZ funktiosta LaskentakuormiksiQ.

void SetVaantokuormat(int rajatUa);

Käydään vääntökuormalistat läpi ja muutetaan ominaiskuormat laskentakuormiksi. Sen jälkeen käydään läpi taivutuskuormalistat, ja tarkastetaan, aiheutuuko taivutuskuormista vääntöä. Jos aiheutuu, kuorma lisätään vääntökuormalistaan ja muutetaan ominaiskuormasta laskenta-kuormaksi. Funktiota kutsutaan luokan CVaanto funktiosta LaskentakuormiksiQ.

void SetPistemomZO;

void SetPistemomYO;

Käydään pistekX-lista läpi ja tarkistetaan kuorman epäkeskisyydet. SetPistemomZ()-funktiossa etsitään nollasta eroavia y-etäisyyksiä ja SetPistemomY()-funktiossa nollasta eroavia z-etäisyyksiä.

Epäkeskisistä purismskuormista mlevat pistemomentit lisätään pistemomenttilistaan ja niille annetaan alkupisteeksi jännevälin pituus. Funktioita kutsutaan luokan CTaivutusY tai CTaivutusZ funktiosta Laskentakuormiksi().

double TaipumaY(double x);

double TaipumaZ(double x);

double VapMomentti(doublex);

double Bimomentti(double x);

double MomenttiY(double x);

double MomenttiZ(double x);

double EstMomentti(double x);

double LeikkausvoimaY(double x);

double LeikkausvoimaZ(double x);

Funktioissa käydään läpi kyseessä olevan suunnan kuormalistat ja lasketaan kaikista kuormista aiheutuvat taipumat tms. yhteen pisteessä x. Summaan lisätään epätarkkuuksien aiheuttamat rasitukset.

Funktioita kutsutaan (jäijestyksessä) funktioista CTaivutusY: :Taipuma(), CTaivutusZ: :Taipuma(), CVaanto: :VapMomentti(), CVaanto::Bimomentti(), CTaivutusZ: :Momentti(), CT ai vutus Y:: Momentti(), CVaanto:: EstMomentti(), CT aivutus Y:: Leikkaus voima(), CTaivutusZ: :Leikkausvoima().

double TukiMomenttiY(double x);

double TukiMomenttiZ(double x);

Edellisissä momenttifunktioissa momenttia ei otettu huomioon, jos pistemomentti oli sauvan jommassakummassa päässä. Näissä funktioissa otetaan huomioon nimenomaan .päissä olevat pistemomentit. Funktioita kutsutaan luokkien CTaivutusZ ja CTaivutusY funktiosta SetAlfatQ.

double GetP(int rajatila);

Käydään koko pistekX-lista läpi ja muutetaan siinä ominaiskuormat laskentakuormiksi ja lasketaan kaikki laskentakuormat yhteen. Tätä funktiota kutsutaan luokasta CTaivutus funktiossa SetPQ.

double GetAlfaTaivutusY(int paa);

double GetAlfaTaivutusZ(int paa);

double Get Alfa Vaanto(int paa);

Funktioissa käydään läpi kaikki kyseisen suunnan kuormalistat ja lasketaan yhteen kaikista kuormista tulevat sauvanpääkiertymät tai -vääntymät. Epätarkkuuksien merkit valitaan siten, että sauvanpääkiertymä yhteensä on mahdollisimman suuri, eli epätarkkuus kasvattaa kuormien aiheuttamaa sauvanpääkiertymää sauvan alkupäässä. Funktioita kutsutaan CSuunta-luokasta johdettujen luokkien funktioissa SetAlfat().

Liite 3

virtual void Serialize (CArchive& ar);

Serialisointi. Serialisoidaan jännevälin pituus ja kaikkien kuormalistojen koot. Kokojen perusteella käydään listat läpi ja kutsutaan jokaisen alkion serialisointifunktiota.

2.3 CAukkoDIg

2.3.1 Luokan asema

CAukkoDlg-luokkaa kutsutaan suoraan luokasta CMainFrame.

2.3.2 Jäsenmuuttujat

Dialogiluokan jäsenmuuttujat ovat m_aukkoLista (CListBox) ja m_pituus (double). Arvot tallennetaan taulukkoon aukot (CList<CAukko, CAukko&>).

2.3.3 Luokan sisäiset toiminnot

virtual void DoDataExchange(CDataExchange* pDX);

Tässä funktiossa yhdistetään jäsenmuuttujat dialogin kenttiin. Samalla annetaan jännevälin pituudelle ääriarvot (0,10000).

virtual BOOL OnInitDialogO;

Täytetään dialogin m_aukkoLista aukkotiedoilla, jos sellaisia jo on. Listassa on jännevälin numero ja pituus. Ensimmäinen jänneväli on alin ja se on myös listassa alimpana, eli uusi aukko lisätään aina ylimmäksi listalla.

void LisaaAukko(double pituus, int aukkoNro, int nSel = -1);

Tämän funktion avulla täytetään m_aukkoLista. Jos nSel annetaan, uusi aukko lisätään listalle nSel- arvon yläpuolelle. Muussa tapauksessa uusi aukko lisätään ylimmäiseksi. Funktiota kutsutaan funktioista OnLisaa() ja OnLisaaEteenQ.

afx_msg void OnLisaaQ;

Lisätään uusi arvo m_aukkoListaan ylimmäksi ja aukot-taulukkoon viimeiseksi.

afx_msg void OnLisaaEteenQ;

Lisätään uusi arvo m_aukkoListaan valitun aukon alapuolelle ja aukot-taulukkoon valitun aukon eteen, afxjmsg void OnPoistaQ;

Poistetaan valittu aukko m_aukkoListasta ja aukot-taulukosta.

afx_msg void OnSelchangeAukkoLstO;

Päivitetään dialogin m_pituus valimn aukon pituudella.

2.4 CEpatarkkuudet

2.4.1 Luokan asema

CEpatarkkuudet-luokasta tarvitaan kaksi oliota, yksi kummankin suuntaista taivutusta varten. Olioita kutsutaan CAukko-luokasta.

Liite 3

2.4.2 Jäsenmuuttujat int n_c;

int n_s;

Rakenteen pilarien lukumäärä ja kerrosten lukumäärä.

double e_nolla;

double fli;

double alfa;

Alkukäyryys, alkuvinous ja nurjahdusmuodosta riippuva kerroin.

double W_el;

double A;

double alasuhde;

double L;

double I;

Kimmoinen taivutus vastus, pinta-ala, tehollisen ja koko pinta-alan suhde, jännevälin pituus ja j äyhyysmomentti.

double lambda;

double lam;

Hoikkuus ja P/EI.

CMateriaali mMateriaali;

Materiaalitiedot.

2.4.3 Luokan sisäiset toiminnot

void SetAlfa(double levyn_paksuus, int suunta);

void SetLambda(double pituus, double jayhyysmomentti);

double lambda_viivaO;

double k_yO;

double k_deltaO;

double lambdalO;

Lasketaan Eurocode 3:n kaavoilla kaikki alkuvinouden ja alkukäyryyden laskemiseen tarvittavat suureet.

void alkuvinousO;

void alkukayryysO;

Lasketaan alkuvinous ja alkukäyryys edellä lueteltujen funktioiden avulla.

2.4.4 Luokan julkiset toiminnot void SetFiifdouble arvo);

Funktio ei ole tällä hetkellä käytössä, mutta sillä voitaisiin antaa suoraan alkuvinous.

void Set_nc(double arvo);

void Set_ns(double arvo);

Asetetaan alkuvinouden laskemista varten n_c ja n_s. Set_nc()-fiinktiota kutsutaan funktiossa CMainFrame: :OnRakenne(). Set_ns()-funktiota kutsutaan funktiossa CMainFrame::OnAukko().

Liite 3

\

void SetArvot(int suunta, double t, double W_el, double A, double Aeff, double L, double I);

Asetetaan kaikki alkukäyryyden laskemiseen luokan ulkopuolelta saatavat arvot. Tässä funktiossa kutsutaan funktioita SetAIfaQ, SetLambdaQ, alkukayryys() ja alkuvinous(). Epä-tarkkuudet ovat sekä y- että z-suunnassa. Suunta-tietoa tarvitaan alfan määrittämisessä. Taivutusvastus ja jäyhyysmomentti aimetaan luokan ulkopuolelta oikean suunnan poikkileikkaustiedoista. Funktiota kutsutaan luokan CAukko funktioista SetKuormatYO ja SetKuormatZ().

void SetLam(double);

Asetetaan taipuman ym. lausekkeita varten lambdan arvo, joka tässä luokassa on nimeltään lam.

Funktiota kutsutaan luokan CAukko funktioista SetP_y() ja SetP_z().

double alfat (int paa);

double taipuma (double x);

double momentti (double x);

double leikkVoima (double x);

Funktioissa lasketaan alkukäyryydestä aiheutuvat sauvanpääkiertymät, taipumat, momentit ja leikkausvoimat. Funktioita kutsutaan luokan CAukko vastaavista funktioista.

double GetFiiO;

double Get_e_nollaO;

int Get_ncO;

Palautetaan luokan ulkopuolelle alkuvinous, alkukäyryys ja pilarien lukumäärä. Funktiota GetFiiQ kutsutaan funktioista C Aukko: :GetAlfaTaivutusY (), CAukko: :GetAlfaTaivutusZ(), CTaivutusY::GetAlfat(), CTaivutusZ::GetAlfat(). Funktiota Get_e_nolla() ei kutsuta mistään.

Funktiota Get_ncQ kutsutaan funktiossa CMainFrame::OnRakenne().

virtual void Serialize(CArchive& ar);

Serialisointifunktio.