Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Jul 05 2018 08:12
    ahojukka5 reopened #1
  • Jul 05 2018 08:12
    ahojukka5 closed #1
  • Jul 04 2018 20:13
    femtocleaner[bot] opened #1
  • Jul 04 2018 20:13

    femtocleaner[bot] on deps

    Fix deprecations (compare)

  • Jul 04 2018 12:35

    ahojukka5 on v0.1.2

    (compare)

  • Jul 04 2018 12:29

    ahojukka5 on v0.1.0

    (compare)

  • Jul 04 2018 12:24

    ahojukka5 on master

    Rename package (#4) Better nam… (compare)

  • Jul 04 2018 12:24
    ahojukka5 closed #4
  • Jul 04 2018 11:46
    ahojukka5 synchronize #4
  • Jul 04 2018 11:46

    ahojukka5 on rename_package

    Rename package Better name is … (compare)

  • Jul 04 2018 11:37
    ahojukka5 reopened #4
  • Jul 04 2018 11:37
    ahojukka5 closed #4
  • Jul 04 2018 08:50
    ahojukka5 opened #4
  • Jul 04 2018 08:49

    ahojukka5 on rename_package

    Rename file Rename package Better name is … (compare)

  • Jul 03 2018 18:40

    ahojukka5 on master

    Fix + example (#3) * Fix updat… (compare)

  • Jul 03 2018 18:40
    ahojukka5 closed #3
  • Jul 03 2018 15:46
    coveralls commented #3
  • Jul 03 2018 15:22
    ahojukka5 opened #3
  • Jul 03 2018 15:22

    ahojukka5 on fix

    Fix + example * Fix updating f… (compare)

  • Jul 03 2018 14:32

    ahojukka5 on gh-pages

    Initial empty commit for docs build based on 3e391f5 (compare)

Jukka Aho
@ahojukka5
Voi olla kahdella solmupisteellä sama koordinaatti. Ne elementit tai niiden solmupisteet ja vapausasteet ei silloin vaan kytkeydy toisiinsa.
Marja Rapo
@maikkirapo
Tietenkin, mutta niillä solmukoordinaateilla on sillon eri solmupistenumerot, joten on päivänselvää, että niitä koordinaatteja ei voi löytää saman solmunumeron avulla, kun eihän ne silloin ole sama solmu.
Jukka Aho
@ahojukka5
DKT-laattaelementin implementointi oli yllättävän opettavainen harjoitus.
Siinä kantafunktioihin rakennellaan tietynlaisia kinemaattisia ehtoja ja näiden toteuttaminen edellyttää elementin geometrian tuntemista, joten kantafunktioita ei voi ohjelmoida etukäteen vaan ne pitää rakennella lennosta elementtikohtaisesti.
Jukka Aho
@ahojukka5
Samahan on myös kontaktimekaniikassa, jossa ei edes riitä se, että tuntee orjaelementin geometrian, vaan lisäksi pitää tuntea master-elementtien geometria jotta bi-ortogonaalisen kannan rakentaminen onnistuu.
Tom Gustafsson
@kinnala
onkohan se vähän saman tyyppinen kun Argyris-kantafunktiot laatoille
mulla on implementoitu se niin, että kantafunktioiden sijaan määrittelen pelkät vapausasteet ja sitten rakennetaan kannanvaihtomatriisi yleisen viidennen asteen polynomikannan ja vapausasteiden avulla
Jukka Aho
@ahojukka5
Hmm. Olisiko tuosta esimerkkiä?
Tuon Kicrhhoffin laatan voi tehdä Argyris-kantafunktioillakin jolloin se on konformi. Nämä on sinänsä mielenkiintoisia kantoja kun tavoitteena olis että tuolla FEMBasis.jl-paketilla voisi lennosta generoida kaikenlaisia kantoja eikä pelkästään näitä noodipohjaisia Lagrangen kantafunktioita.
Nämä kannat nyt vaan kun ne riippuu geometriasta niin ne pitäis olla periaatteessa elementtikohtaisia jos ne haluaisi ohjelmoida etukäteen. Kyykkääköhän Julia jos siihen generoidaan lennosta vaikka 10 miljoonaa anonymous-funktiota.
Sitten vielä sellainen, että jos nämä kannat riippuu geometriasta ja lasketaan nlgeom päällä niin ei edes riitä että ne kuvataan referenssikonfiguraatiossa. Nämä biortogonaaliset kannat finite sliding formulaatiolla on juuri sellaisia. Eli se kanta pitää rakennella deformoituneessa konfiguraatiossa kaiken lisäksi.
Jukka Aho
@ahojukka5
Niin ja kun se ehto vielä kaiken lisäksi on integraalimuodossa niin pitää lisäksi vielä numeerisesti integroida, ei löydy semmosta eksplisiittistä esitystapaa kuin korkeintaan lineaarisille elementeille. Jos tämmösen kannan käsittelyyn löytyy hyvä tapa niin siinä on kyllä kaikki mahdolliset hankaluudet leivottu sisälle.
Tom Gustafsson
@kinnala
https://github.com/kinnala/scikit-fem/blob/master/skfem/element.py#L109 lyhyesti: init_pbasis tekee yleisen N asteisen polynomikannan joka esitetään matriisina, eval_dofs evaluoi kyseisen yleisen kannan kaikkien elementtien DOFeissa samalla kertaa ja muodostaa kannanvaihtomatriisin V jokaiseen elementtiin, ja gbasis'ssa kannanvaihtomatriisi käännetään, jolloin käänteismatriisin sarakkeista voi lukea kantafunktioiden
kertoimet
tämän jälkeen uuden elementin määrittely on hyvinki simppeliä https://github.com/kinnala/scikit-fem/blob/master/skfem/element.py#L340 en tiedä miten tehokas ratkaisu o kyseessä ja kuulemma jossain tilanteissa voi olla numeerisia ongelmia matriisin V kääntämisessä, mutta o toiminut mulle ihan hyvin
Jukka Aho
@ahojukka5
Pitääpä tutustua!
Sulta puuttuu 27-solmuinen hexa :)
Tom Gustafsson
@kinnala
juu ne on vielä vähän vaiheessa. sain vasta pari viikkoa sitten tehtyä r
Jukka Aho
@ahojukka5
https://github.com/JuliaFEM/FEMBasis.jl/blob/master/src/create_basis.jl#L58 JuliaFEMissä on tämmönen taktiikka että generoidaan metaohjelmoinnilla muotofunktiot ja niiden osittaisderivaatat ennenku käännetään konekieliseksi. Käytännössä annetaan siis tuo riittävän korkea-asteinen yleinen polynomi ja rakennellaan tuolla Vandermonden matriisilla semmoset kertoimet että kannalle asetetut vaatimukset ovat voimassa. Käytännössä nämä määrittelyt sitten on tämän tapaisia: https://github.com/JuliaFEM/FEMBasis.jl/blob/master/src/lagrange_tetrahedrons.jl
Nyt tätä voisi tietenkin vähän kehitellä eteenpäin niin että voisi kehitellä vähän erikoisempiakin kantoja.
Jukka Aho
@ahojukka5
Sympystä löytyy lambdify, joku tuon tapanen voisi kyllä Pythonillakin onnistua. Ei oikein houkuttele juurikin jonku 27-solmuisen elementin muotofunktioiden ja osittaisderivaattojen käsin naputtelu, menee todennäköisyydellä 1 väärin.
Tom Gustafsson
@kinnala
mielenkiintoinen lähestymistapa. julia on kyllä näppärä kieli
Joona Vaara
@jvaara
@ovainola @ahojukka5 jossei materiaali-interface tule FEMBase:en niin kuinka ajattelit että se saatais tuossa perus frameworkissa toimimaan? Problem(Continuum)?
Jukka Aho
@ahojukka5
Tulee kunhan ehtii.. Ei ole vielä edes tägätty paketti.
Mut FEMBase.jl:ään ja siitä sitten.

@jvaara:

struct Mamo
    params
    stress
    other
end

function Mamo()
    params = zeros(12)
    stress = reshape(view(params, 1:9), 3, 3)
    other = view(params, 10:12)
    return Mamo(params, stress, other)
end

Tämä muuten itse asiassa toimii. Eli muistia käytetään vain tuo 12 alkiota, mutta sulla on stress 3x3 matriisi joka ottaa parametrivektorista ensimmäiset 9 lukua ja other ottaa kolme viimeistä vektoriin. Kaikista voi päivittää ja kaikkia voi lukea. Tuo params voi sitten mennä epälineaariseen iteraatioon parametrivektorina. Tässä näin esimerkkinä mitenkä saa koodia sievemmäksi.

Joona Vaara
@jvaara
niin että integrointipistedataa (lähtötilanne iteraatiolle) olis viewillä otettu sinne material containeriin?
tai toisinpäin
Jukka Aho
@ahojukka5
Noo voisihan sen niinkin tehdä, hyvä havainto. Mutta ajattelin lähinnä, että kun sulla on se get_nonlinear_system_of_equations tmv, niin sä voit samaan dataan saada useampia esitysmuotoja jotka sitten helpottaa sitä käsittelyä
Todennäköisesti voi rakentaa jopa sellaisen viewin 6-pituinen vektori näkyy 3x3 symmetrisenä tensorina.
Joona Vaara
@jvaara
niin että lähettäisin sinne vaan pointterin sieltä integrate_material!-tasolta?
ajattelin refaktoroida sen chaboche.jl:n kunhan tajuan että kuinka mun pitäs toimia ton gitin kans :)
vektorinotaatioon laskenta jne turhat tensorit pois kun on harjoteltu ja on testi etc
Jukka Aho
@ahojukka5
Niin, tai sitten Tensors.jl.
Joona Vaara
@jvaara
vaihe kerrallaan
ihan mielenkiintosta nähdä kun benchmarkkaa että minkälaista nopeutusta tulee esim. siihen simulaattori testiin
Joona Vaara
@jvaara
hep, jos allokoin vektorin vektoreista näin: simulator.stresses = similar(strains)
niin sitten kun haluaisin alkaa täyttämään sinne tavaraa niin kun laitan simulator.stresses[1][:] .= copy(material.stress) niin tulee ERROR: UndefRefError: access to undefined refence
Jukka Aho
@ahojukka5
simulator.stresses = [zeros(6) for j in 1:length(strains)]
Joona Vaara
@jvaara
mjoo
Jukka Aho
@ahojukka5
Tässä tulee semmonen ongelma että esim. Poi1-elementteihin jotka laittaa reunaehtoja pitäis laittaa youngs modulus jos ne ovat samassa ongelmassa kuin minkä materiaalimalli tarvii ko. fieldiä.
set materiaalimalli pitänee määritellä problemissa
nyt on solverissa mutta sehän on täysin hassua.
vai pitäiskö määritellä malli elementissä. element.material_model = :IdealPlastic jne.
Joona Vaara
@jvaara
Integrointipiste on se loogisin paikka sille
Tai pienin yksikkö missä sitä myös kutsutaan
Joona Vaara
@jvaara
alotin tekee tuota yhden elementin simulaattoria
@ahojukka5
@ovainola voit sitten käyttää sitä testeissä kunhan saan sen valmiiksi