• Ei tuloksia

Elementin jäykkyysmatriisi ja geometrinen jäykkyysmatriisi

1 Yleistä Pilari-ohjelmasta

2.5 CJa ko Dig

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.

2.5 CJa ko Dig

Dialogissa kysytään, kuinka tiheästi käyttäjä haluaa momenttien ja jännitysten arvoja esitettävän.

Stabiiliuden laskemisessa x-suun täistä jakoa käytetään elementtien lukumääränä. Toiminnolla void OnOletusO saadaan dialogiin oletusarvot näkyviin. CJakoDlg-luokkaa kutsutaan suoraan luokasta CMainFrame.

2.6 CJannitykset

2.6.1 Luokan asema

CJannitykset-luokan kautta tapahtuu kaikki ohjelman laskenta. Luokkaa kutsutaan suoraan luokasta CMainFrame.

2.6.2 Tiedot intjakoX;

Luku kertoo, kuinka moneen osaan pilari jaetaan pituussuunnassa j anne välillä, int jakoS;

Luku kertoo, kuinka moneen osaan poikkileikkauksen levyt jaetaan.

Liite 3 int aukot;

Jännevälien lukumäärä.

double * P;

Taulukossa on jännevälien normaalivoimat.

double * momenttiZ;

double * momenttiY;

double * leikkVoimaY;

double * leikkVoimaZ;

double * taipumaY;

double * taipumaZ;

double * bimomentti;

double * estMomentti;

double * vapMomentti;

Taulukoissa on momenttien ym. arvot laskettuna solmupisteissä. Taulukon koko on aukot*jakoX+l.

double * normJannitys;

double * leikkJannitys;

double * vertJannitys;

Taulukoissa on jännitykset solmupisteissä. Taulukon koko on (aukot*jakoX+l)*3*(jakoS+l).

double ominaisarvo;

Epästabiiliuskerroin.

CTaivutusY mTaivY;

CTaivutusZ mTaivZ;

CVaanto mVaanto;

CNurjahdus mNurj;

Näissä luokissa tapahtuu varsinainen laskenta.

CArray<CAukko, CAukko&> mAukko;

CArray<CTuki, CTuki&> mTuki;

Jännevälitiedot ja tukien jousivakiot ovat näissä taulukoissa.

CProfiili mProfiili;

CMateriaali mMateriaali;

Poikkileikkaus- ja materiaalitiedot.

2.6.3 Luokan sisäiset toiminnot void varaaO;

Tämä funktio varaa tilaa kaikille luokan taulukoille. Funktiota kutsutaan funktiosta Laske().

void arvotO;

Tässä funktiossa annetaan jäsenmuuttujille mTaivY, mTaivZ ja mVaanto niiden tarvitsemia arvoja.

Funktiota kutsutaan funktiosta Laske().

void momentitO;

Liite 3

Tässä funktiossa kootaan kaikki momentit, leikkausvoimat, vääntömomentit jne. Taulukot täytetään jäijestyksessä pilarin alhaalta lähtien. Funktiota kutsutaan funktiosta Laskef).

void jännityksetO;

Tässä funktiossa täytetään jännitystaulukot. Taulukot täytetään levy kerrallaan, ensin ylälaippa, sitten alalaippa ja lopuksi uuma. Funktiota kutsutaan funktiosta LaskeQ.

void taipumatO;

Tässä funktiossa kootaan y- ja z-suuntaiset taipumat. Funktiota kutsutaan funktiosta LaskeQ.

void NurjArvotQ;

Funktiossa annetaan jäsenmuuttujalle mNuij sen tarvitsemat arvot. Funktiota kutsutaan funktiosta LaskeQ.

void SetPfdouble *taulu);

Täytetään normaalivoimataulukko taulun alkioilla. Funktiota kutsutaan funktiosta LaskeQ.

double Normaalijannitysfint aukko, double x, int levy, double s);

double Leikkausjannitysfint aukko, double x, int levy, double s);

double Vertailujannitysfint aukko, double x, int levy, double s);

Näissä funktioissa kootaan eri suuntien taivutuksesta ja väännöstä aiheutuvat jännitykset yhdessä pisteessä. Funktioita kutsutaan funktiosta jännityksetQ.

2.6.4 Luokan julkiset toiminnot virtual -CJannity ksetQ;

Luokan tuhoaja. Muisti vapautetaan normaalivoima-, momentti- ja jännitys taulukoista sekä aukko- ja tuki taulukoista.

virtual void Serialize (CArchive & ar);

Serialisointifuntkio. Jännitys-luokassa serialisoidaan elementtijako (jakoX jajakoS).

void LaskeQ;

Funktiossa käydään läpi kaikki laskenta, mitä tarvitaan taulukoiden täyttämiseen. Ensin ratkaistaan puristustaivutus- ja puristusvääntöongelmat murtotilassa ja lasketaan näistä momentit ja jännitykset ja täytetään normaalivoimataulukko. Täytettyjä taulukoita hyväksi käyttäen voidaan laskea CNuijahdus- luokassa epästabiiliuskerroin. Lopuksi täytetään taipumataulukot ratkaisemalla puristusta!vutus- ongelma käyttötilassa. Funktiota kutsutaan funktiosta CMainFrame::OnLaske().

double maxJannitysQ;

Funktiossa käydään vertailujännitystaulukko läpi ja etsitään itseisarvoltaan suurin jännitys ja palautetaan se. Funktiota kutsutaan funktiosta CTestiDlg::OnJannitysQ.

int lommKestavyysQ;

Lommahduskestävyyden mitoitusarvo lasketaan luokassa CLeikkLommahdus. Etsitään itseisarvoltaan suurin leikkausvoiman arvoja verrataan sitä mitoitusarvoon. Jos mitoitusarvo ylittyy, funktio palauttaa arvon LOMMAHTAA, muuten palautusarvo on 0. Funktiota kutsutaan funktiosta CMainFrame:: OnLaskeQ.

Liite 3

int hoikkuusO;

Levyjen hoikkuudet lasketaan luokassa CPLLuokka. Jos neljännen poikkileikkausluokan rajahoikkuus ylittyy jossain levyssä, funktio palauttaa arvon HOIKKA, muuten palautusarvo on 0. Funktiota kutsutaan funktiosta CMainFrame::OnLaske().

int GetJakoXO;

int GetJakoSO;

int GetAukotQ;

Palautusarvot ovat jakoX, jakoS ja aukot. Funktioita kutsutaan monessa paikassa, double * GetPO;

Palautusarvo on osoitin normaalivoimataulukkoon. Funktiota ei kutsuta mistään.

void SetJakoX(int jako);

void SetJakoSfint jako);

Asetetaan jakoX ja jakoS. Funktioita kutsutaan funktiosta CMainFrame::OnJako().

double* GetMomenttiZO;

double* GetMomenttiYO;

double* GetLeikkVoimaYO;

double* GetLeikkVoimaZO;

double* GetTaipumaYO;

double* GetTaipumaZO;

double* GetBimomenttiO;

double* GetEstMomenttiO;

double* GetVapMomenttiO;

double* GetNormJannitysQ;

double* GetLeikkJannitysQ;

double* GetVertJannitysO;

Palauttavat osoittimen taulukkoon. Funktioita kutsutaan luokasta CTestiDlg funktioista OnYSuuntaQ, OnZSuuntaO, OnVaantoQ ja OnJannitys().

double GetOminaisarvoO;

Palauttaa epästabiiliuskertoimen. Funktiota kutsutaan funktiosta CMainFrame::OnLaske().

2.7 CJannitysDIg

2.7.1 L uokan asema

Luokkaa kutsutaan luokasta CTestiDlg, kun halutaan nähdä jännitykset.

2.7.2 Jäsenmuuttujat CListBox m_ylalaippa;

CListBox m_alalaippa;

CListBox m_uuma;

Näihin listoihin kirjoitetaan dialogissa ylälaipan, alalaipan ja uuman jännitykset.

int aukot;

int jakoX;

int jakoS;

Jännevälien lukumäärää ja elementtijakoa tarvitaan taulukoiden lukemisessa.

Liite 3

CString normStr;

CString leikkStr;

CString vertStr;

Merkkijonot tulostustiedostoa varten.

2.7.3 Toiminnot

virtual void DoDataExchange(CDataEXchange* pDX);

Liitetään jäsenmuuttujat dialogin kenttiin, virtual BOOL OnInitDialogO;

Alustetaan dialogi. Tässä funktiossa ei kyllä tehdä juuri mitään, void tulosta (double * jännitykset);

Tämä on apufunktio jännitysten tulostamiseen. Joka rivillä on ensin jännevälin ja elementin numero pilkulla erotettuna. Sitten on tabulaattorilla erotettuna jännitykset levyn pisteissä. Jokaiselta levyltä tulostetaan merkkijono erilliseen puskuriin (CString strO, strl, str2). Lopuksi puskuri lisätään listaan.

Alalaippaa, ylälaippaa ja uumaa varten on merkkijonot (CString ala, ylä, uuma). Näihin lisätään joka riviltä vastaava puskuri, jonka perään lisätään vielä rivinvaihtomerkki. Lopuksi puskurit ylä, ala ja uuma lasketaan yhteen.

afx_msg void OnLeikkJannf);

afx_msg void OnNormJannf);

afx_msg void OnTehJannQ;

Näistä funktioista kutsutaan tulosta()-funktiota eri jännityksillä. Samalla määritetään otsikkorivi jännitysten tiedostotulostusta varten.