THM-MALLIN NUMERIIKKA Antti Niemistö, Janne Martikainen Numerola oy 1
THM-mallin Numerrin-toteutus pohjana Petri Jussilan väitöstyössä esitetty THM-malli 3D toteutus Numerrin4 mallinnusalustalle numeerisen mallin muuttujat: faasien (kiintoaine, vesi, ilma, höyry) tilavuusosuudet höyryn paine lämpötila kiintoaineen siirtymä 2
THM-mallin Numerrin-toteutus mallin paikkadiskretointi: voluumielementtimenetelmä (FVEM) massan ja energian säilymisyhtälöille äärellisten elementtien menetelmä (FEM) kiintoaineen liikemäärän säilymisyhtälöille trilineaarinen funktioaproksimaatio tulosten vertailukohtana Petri Jussilan väitöstyössä dokumentoitu simulointiajo 3
Esimerkkinä rakennetehtävä Integral(Omega,FEM_IntegralFormula,FEM_IntegrationDegree) phi=basisfunction(v) Gradphi=BasisGradient(V) tilde_rho_v=hat_b(.)*m_v/(r*t(.)) tilde_rho_a=hat_b(.)*m_a/(r*t(.)) rho=xi_s(.)*tilde_rho_s+xi_l(.)*tilde_rho_l +xi_v(.)*tilde_rho_v+xi_a(.)*tilde_rho_a Z Ω σ i ϕ ρg iϕdω = 0 ϕ, σ = 2ξsGǫ D ( ˆB ξsktrǫ + Π v max ξ sf Π ˆB0 )I SL=xi_s(.)/xi_l(.) E_=fE(SL,SL_init,nu,K_init,b) G_=fG(SL,SL_init,nu,K_init,b) fk_=fk(sl,sl_init,k_init,b) f_pi_sl=f_pi(sl, a_3, a_4, a_5) varepsilon=get_strain(u) varepsilon D=varepsilon-tr_varepsilon(.)/3.0*I sigma=2.0*xi_s(.)*g_*varepsilon D - (hat_b(.)-xi_s(.)*fk_*tr_varepsilon(.) -xi_s(.)*f_pi_sl*hat_b_0+pi v_max)*i res[5] <- sigma[0,:] dot Gradphi - rho*g[0]*phi res[6] <- sigma[1,:] dot Gradphi - rho*g[1]*phi res[7] <- sigma[2,:] dot Gradphi - rho*g[2]*phi EndIntegral 4
Esimerkkinä rakennetehtävä Constraint(dOmega2,V) res[7] <- u[2](.)-0.0 EndConstraint Constraint(dOmega3,V) res[5] <- u[0](.)-0.0 res[6] <- u[1](.)-0.0 EndConstraint Constraint(dOmega4,V) res[7] <- u[2](.)-0.0 EndConstraint Constraint(dOmega5,V) res[5] <- u[0](.)-0.0 res[6] <- u[1](.)-0.0 EndConstraint Constraint(dOmega6,V) res[7] <- u[2](.)-0.0 EndConstraint 5
Rinnakkaistukset on tehty laskentaohjelmistoon mallien kirjoittamisessa sitä ei tarvitse huomioida käyttäjä määrittelee käynnistyksen yhteydessä käytettävien prosessoriytimien maksimimäärän Rinnakkaisuus on rakennettu säikeistyksellä tietokoneen on oltava shared memory laskenta käynnistää ja sammuttaa säikeet dynaamisesti itse 6
Tärkeimmät rinnakkaistetut rutiinit ovat ODY:jen kasaus ja lineaaristen yhtälösysteemien ratkaiseminen iteratiivisesti kasauksessa alue on jaettu elementtimäärien mukaan saman kokoisiin viipaleisiin viipaleet kasataan rinnakkain osamatriisit lasketaan rinnakkain yhteen tehtävälle on valittu iteratiiviseksi ratkaisijaksi GMRes pohjustin on blokkidiagonaalinen ILU, jonka rakentaminen ja käyttö on rinnakkaista ilman synkronointia 7
ODY:jen rinnakkaisessa kasauksessa tarvitaan enemmän muistia osamatriisien tallettamiseen. Toteutus on tehtävä tarkasti muistin sirpaloitumisen estämiseksi. Blokkidiagonaalisen ILU:n laatu riippuu käytettävien prosessoriytimien määrästä. 8
Tehtävän kasauksen rinnakkaistehokkuuksia, 310420 tuntematonta np t [s] par. eff. % 1 2177.63 100 2 1219.52 89 3 877.85 83 4 758.50 72 6 638.07 57 8 602.13 45 12 597.20 30 16 629.29 22 9
Lineaarisen yhtälöryhmän ratkaisemisen rinnakkaistehokkuuksia, 310420 tuntematonta np t [s] iter t/iter [s] par. eff. % 1 465.28 304 1.50 100 2 252.38 308 0.82 92 3 195.69 298 0.66 76 4 146.65 306 0.48 78 6 122.12 360 0.34 74 8 99.63 326 0.31 61 12 94.25 367 0.26 49 16 89.00 376 0.24 40 10
Suurin ajettu simulointi 3D:ssa sisälsi n. 2.2 miljoonaa tuntematonta, jolloin tarvittu muistin määrä 8 prosessorilla oli 30 Gt ja laskenta-ajan kertaluokka 18 h simuloinnille kolmella askeleella viikonloppu. Laskentakone on HP DL585G5, prosessorit 4 x Opteron 8378 (Quad-Core, 2.4 GHz), 64Gt 800MHz muistia. 11
Diskretointi Faasien tilavuusosuuksien positiivisuuden säilyttämiseksi on tutkittu diskretointeja matala-asteista konservatiivista aproksimaatiota suureiden vuotermeille aktiivijoukkomenetelmää faasimuutoksen rajoittamiseksi Menetelmät säilyttävät positiivisuuden, mutta matala-asteinen aproksimaatio aiheuttaa epätarkkuutta faasimuutoksen vaikeuttaa epälineaarisen tehtävän ratkaisemista 12
Toteutettavia asioita uudet fysiikkamallit positiivisuuden säilyttävät tekniikat varsinaiseen laskentakoodiin korkea-asteiset aikaintegroinnit multilevel -tyyppiset rinnakkaiset pohjustimet simulointi oikeassa sijoitustilanteessa 13
14
15