Työraportti 98-71 Kalliomallin lohkotustekniikka Jorma Nummela Marraskuu 1998 POSIVA OY Mikonkatu 15 A, FIN-001 00 HELSINKI, FINLAND Tel. +358-9-2280 30 Fax +358-9-2280 3719
------- Työraportti 98-71 Ka II i oma II i n lohkotustekniikka Jorma Nummela Marraskuu 1998
TEKIJÄORGANISAA TIO: Fintact Oy Hopeatie 1 B 00440 Helsinki TILAAJA: Posiva Oy Mikonkatu 15 A 00 1 00 Helsinki TILAUSNUMERO: Fintact Oy 9550/98/ AJH TILAAJAN YHDYSHENKILÖ: Aimo Hautajärvi Posiva Oy TEKIJÄORGANISAATION YHDYSHENKILÖ: Pauli Saksa Fintact Oy TYÖRAPORTTI 98-71 KALLIOMALLIN LOHKOTUSTEKNIIKKA TEKIJÄ: ~\~ Jo~ Nummela TARKASTAJA: Pauli Saksa Fintact Oy
Työ r a p o r t t i 9 8-7 1 Kalliomallin lohkotustekniikka Jorma Nummela Fintact Oy Marraskuu 1998 Pesivan työraporteissa käsitellään käynnissä olevaa tai keskeneräistä työtä. Esitetyt tulokset ovat alustavia. Raportissa esitetyt johtopäätökset ja näkökannat ovat kirjoittajien omia, eivätkä välttämättä vastaa Posiva Oy:n kantaa.
2 TIIVISTELMÄ Nummela, J. 1998. Kalliomallin lohkotustekniikka. Työraportti 98-71. Posiva Oy, Helsinki. 23 s. Lohkot ovat kappaleita, jotka muodostuvat kun tutkittava perustilavuus leikataan levymäisillä rakenteilla. Siten lohkoa voidaan kuvata rikkonaisuusrakenteiden väliin jääväksi ehjäksi osaksi. Perustilavuuden piste voi kuulua vain yhteen lohkoon tai leikkaavaan rakenteeseen, joten lohko voidaan yksilöidä yhden tunnetun pisteen kautta. Ohjelmallinen lohkoihin jakaminen on monivaiheinen prosessi, jossa haluttu lohko haetaan kohdepisteen perusteella. Jokaisen leikkauksen yhteydessä lohkomäärä enintään kaksinkertaistuu. Menetelmässä tiedetään leikkaako kyseinen rakenne lohkoa, mutta valmis lohko ei välttämättä sisällä ko. rakenteen leikkaamaa pintaa. ROCK CAD-mallin muokkaamiseksi lohkoihin kehitettiin ohjelmisto, jonka avulla rakenteiden perustyypit voidaan muuttaa leikkaamiseen sopiviksi kappaleiksi. ROCK -CADobjekteista ovat tärkeimpiä tyypit 'prisma' ja 'polyhedron'. Ne ovat luonteeltaan valmiiksi levymäisiä ja niiden jatkaminen ulottumaan koko leikattavalle alueelle on verrattain yksiselitteistä. Poikkeavat objektit voidaan palauttaa likimääräistämällä näihin tyyppeihin. Lopputuloksena syntyy tilavuusmalli, jota voidaan jatkokäsitellä 3dmallintajalla. A vainsanat: Kalliomalli, lohko jako, tekniikka, atk-ohjelma
------------------------------ - 3 ABSTRACT Nummela, J. 1998. Block decomposition of the bedrock models. Working Report 98-71. Posiva Oy, Helsinki. 23 p. (in Finnish). Rock blocks are bodies formed by sectioning volume ( of interest) with structural plates. Blocks can be described as unbroken bodies lying in space between fracture zones. A point in basic volume can only belong to one block or to sectioning structure thus a block can be identified by one known point. Sectioning with computer program is a multiphase process in which block is seeked through this one known point. Every time volume is sectioned block count is multiplied by two at most. In this method it is known whether a structure is sectioning the block but at the end this block does not necessarily include the faces of this structure any more. Program was made to handle the ROCK-CAD-model, by which the basic types can be converted to bodies suitable for splitting. The most important ROCK-CAD-classes are 'prism' and 'polyhedron'. They are already platelike by their basic character and extenting them to cover whole volume is rather unambiguous. Divergent classes can be simplified to these two. As a result a 3d-model is generated which can be further manipulated and viewed by 3dmodeller. Keywords: Bedrock model, block decomposition, technique, computer software
4 SISÄLLYSLUETTELO TIIVISTELMÄ... 2 ABSTRACT... 3 1 SUUNNITTELU... 5 1.1 LOHKOJEN KÄSITTELYSTÄ... 5 1.2 RAJOITUKSET... 6 2 TOTEUTUS... 9 2.1 RAJAUS... 9 2.2 LOHKOTUKSEN ESIV ALMISTELU... 9 2.3 PUOLIA V ARUUKSIEN LUONTI.... 9 2.4 LOHKOTUKSEN SUORITUS... 10 3 PRISMA... 11 3.1 PRISMAN MÄÄRITTELY... 11 3.2 YHDESSÄ TASOSSA MÄÄRITELTY PRISMA... 11 3.3 YLEINEN PRISMA... 12 3.4 MALLINNUKSESTA... 13 4 POLYHEDRONMALLIT... 14 4.1 POLYHEDRONMALLIEN RAJAAMINEN... 14 4.2 MALLIN LEVYMÄISYYS... 14 4.3 KÄSITTELY TASOSSA... 14 4.4 MALLIN LAAJENNUS... 15 4.5 VOLUMIN MUODOSTAMINEN... 15 5 DISK-MALLIT... 17 5.1 TILANNE... 17 6 OHJELMOINTITEKNIIKKA... 18 6.1 YMPÄRISTÖ... 18 6.2 OHJELMA TIEDOSTOT... 18 6.3 TESTAUS... 18 7 MUUT OSATEHTÄVÄT... 22 7.1 BOOLEAN-T Ä YDENNYS, "BWN"... 22 7.2 RATATIEDOSTON UUDELLEEN GENEROINTI, "RATA.C"... 22 LIITE 1... 23
5 1 SUUNNITTELU 1.1 Lohkojen käsittelystä Lohkoanalyysia varten kalliomalli jaetaan lohkoihin. Lohkoilla tarkoitetaan sulkeutuvia kappaleita, jotka muodostuvat, kun kallion perusmassaa leikataan levymäisillä rakenteilla. Lohkojaon lähtökohtana oli neljän tutkimusalueen sen hetkiset kallion rakennemallit. Tässä raportissa kuvataan työtapa ja sovellusohjelmisto, joka kehitettiin kalliomallin muokkaamiseksi lohkoihin Lohkoihin jako on kallion kannalta yksinkertaistus, jossa kallioperä jaetaan rako- ja rikkonaisuusvyöhykkeiden muodostamiin rakenteisiin ja rakenteiden jakamiin ehjää kalliota sisältäviin lohkoihin, joiden ominaisuuksia voidaan edelleen analysoidaan rakennettavuuden kannalta. Luokitteluperiaatteen käyttäminen lohkoihin sisältää useita olettamuksia. Tärkeimpiä ovat, että a) lohkomalli vastaa todellisuutta ja että b) tarkasteltavien kallio-ominaisuuksien vaihtelu on lohkon tilavuudessa sille tyypillistä ja poikkeaa muista lohkoista tai koko sijoituskallion tilavuudesta. Käytännön kriteerinä on myös, että kustakin lohkosta tulisi olla riittävästi tietoa niiden kallio-ominaisuuksien arvioimiseksi. Lohkot ovat kappaleita, jotka muodostuvat kun perusmassa leikataan tasomaisilla rakenteilla. Jokaisen leikkauksen yhteydessä syntyy enintään kaksi lohkoa, joten lohkojen lukumäärä on m < 2 * n, kun n on leikkaavien rakenteiden määrä Ohjelmallinen lohkoihin jakaminen (kuva 1) edellyttää esikäsittelyä. Leikkaavia rakenteita laajennetaan siten, että niiden reunat ovat perusmassan ulkopuolella (1 b ). Rakennetta "lihotetaan" vuoroin molemmilta puolilta ( c) ylittämään perusmassan jolloin booleanvähennys tuottaa joko yhden tai ei yhtään lohkoa ( d). Jos lohkominen suoritetaan varmuusjärjestyksessä, saadaan loppupäähän lohkot, jotka vaativat manuaalista ohjausta. Epävarmojen rakenteiden vaikutusta voidaan testata suhteellisesti varmempien rakenteiden lohkoihin. Lohkomisen yhteydessä talletetaan sitä leikanneiden rakenteiden nimet, ne voidaan esittää rakenteiden nimessä esim. R5 _ R1_ R3 (kuva 2). Käytännössä listataan leikkaavat rakenteet tiedostoon. Myös leikkauspinnat ovat tässä vaiheessa tiedossa, perusmallintaja
6 ei kuitenkaan kykene ryhmittelemään volumin pintoja eikä tallettamaan niille atribuutteja. Tutkimusreiän osuminen lohkoon voidaan todeta normaalisti boolean-menetelmillä. Jos lohkojen sivut halutaan visualisoida leikkaavan rakenteen mukaan, se olisi tehtävä pintamallintajalla. Pintojen generointi tehtäisiin tällöin omalla rutiinilla. Voxel-malli syntyy tekemällä tarvittava määrä vaakaleikkauksia Medusa viewerillä. Leikkauspintaa pintoja kuvaavien viivojen avulla voidaan voxel-malli muodostaa Medusan ulkopuolella. Edelleen joukko-operaatiot ovat tällöin toteutettavissa. 1.2 Rajoitukset Toistuvat boolean-operaatiot voivat tuottaa menetelmässä ongelmia, uudemmat mallintajat ovat tässä mielessä testaamatta. Kappaleiden tasomaisuus on oltava myös sen verran selkeä, että jatkettavat päät voidaan löytää. Samaan asiaan liittyen kappaleelta löydyttävä kaksi kylkeä, jotka tuottavat lohkoille pinnat. Jos vaaditaan, että lohkon pinnat ovat tunnistettavissa Ieikkaajan mukaan, on käytettävä kahta mallia. Volumia luodessa otetaan leikkaus pinta talteen pintamalliin. Tällöin pintamallia käytetään vain visualisointiin.
,... 0 L-----------~~~~ Kuva 1. Lohkoihinjakamisen vaiheet. 7,... ~ L-----------~~~~
Kuva 2. Havaintokuva lohkosta rajaavine rakenteineen. 8
9 2 TOTEUTUS 2.1 Rajaus Teknisen toteutus edellyttää ongelman rajausta. Oletetaan, että lohkovat kappaleet ovat levymäisiä tai ainakin niiden tulisi olla. Ne voivat olla alkuperältään graafisesti tuotettuja tai parametrein luotuja ns. Rocky-malleja. Graafisten objektien käsittely suoritetaan manuaalisesti, koska objektit on luotu vastaavalla tavalla. Rocky-objektien osuus on rikkonaisuusmallissa hallitsevaa. Niiden käsittelyn automatisointi on sekä toteutettavissa että kannattavaa. Rocky-malleista käsitellään seuraavassa objektityypit prisma, polyhedron ja disk. 2.2 Lohkotuksen esivalmistelu Listataan objektit, joilla lohkominen halutaan suorittaa. Järjestyksellä on merkitys, objekti saattaa 'päästä' leikkaajien listaan, vaikka sen leikkauspinta vielä leikkautuu pois. Valitaan haluttu lohko määrittämällä yksi piste, piste 'lp', lohkon sisältä. 2.3 Puoliavaruuksien luonti Leikkaajaobjektit ulotetaan joka suunnassa tarkasteltavan alueen yli, käytännössä kattamaan vähintään yli ROCK-CAD kalliomallissa määritellyn mallinnusalueen. Yksityiskohtainen menetelmä on tyyppikohtainen ja siihen palataan jäljempänä. Syntyneestä levymäisestä kappaleesta valitaan yksi pinta, toinen pinta korvataan tarkasteltavan alueen yli ulottuvalla rakenteella. Jos piste lp nyt osoittautuu olevan syntyneen leikkaavan kappaleen sisällä, vaihdetaan leikkauspintoja ja kappale luodaan uudelleen (kuva 3).
10 Kuva 3. Puolen valinta, kun piste IP jää leikkaavan kappaleen ulkopuolelle. 2.4 Lohkotuksen suoritus Leikkaajakappaleet ajetaan yksitellen mallintajalla ja suoritetaan boolean-vähennysoperaatio. Syntyneen mallitiedoston kokoa verrataan kokoon ennen operaatiota. Joskoko on muuttunut päätellään, että tapahtui leikkautuminen ja objektin nimi liitetään leikkaajaluetteloon.
11 3 PRISMA 3.1 Prisman määrittely Prisma määritellään kahdella pisteellä, jotka ovat samalla korkeustasolla. Pisteiden välinen jana muodostaa prisman yläreunan. Alareunan pisteet määritellään päätepisteiden kaateilla ja korkeusasemalla. 3.2 Yhdessä tasossa määritelty prisma Malli ulotetaan tutkimusalueen yli venyttämällä prisman päitä (kuva 4 ). z l:v xp I 1 1 1 i 'z 1 t::x xp 1 Kuva 4. Prismamalli yksinkertaisimmillaan. Yläreunaa joudutaan kohottamaan siinä tapauksessa, ettei se ulotu valmiiksi tutkimusalueen yläreunaan. Yläreunan korottaminen on yksiselitteistä, kun segmenttien molemmat kaateet ovat samat (kuva 5).
12 z L::-y --1..1.---J 1 1 1 1 1 1 : 1 pl l h 1 f 1 Kuva 5. Prismamalli korotettuna (maanpintaan). 3.3 Yleinen prisma Kun kaateet poikkeavat toisistaan ovat jatkopalatkin eri kaateisia (kuva 6). Sekä ylä- että alareunaajatketaan määrittelylinjan suunnassa. Kaateen muutos ei siisjatkuvaan kaadejatkuu. pl 1 1 pi 1! '1: ~~x Kuva 6. Prismamalli, kun päissä eri kaateet.
13 Yleisessä tapauksessa prisman kaikkia reunoja jatketaan kuvan 7 mukaisesti. Yläreunan korotuksessa käytetään keskimääräistä kaadetta. Prismamalliin lisätään siten viisi nelinurkkaisista tasoelementtiä. Lisäksi alareuna ulotetaan vastaamaan tutkimusaluetta. -'" 1 \ 1 \ \n'. \\ _PI 1 '\1 1 \ :, 1 X \\ t..:khllaat.u. rala.l 1 1 ~-~-- --t------ /Ii/ ~ L /4/1.P Le.-y --L-------' 1 1 1_ --[3' -- w I I 1 1 PI 1 f X f 1 l ~ J t_::x ' ' 1 Kuva 7. Prismamalli yleisimmillään. 3.4 Mallinnuksesta Prisman mallinnus tapahtuu samoilla rutiineilla, joita käytetään monipuolisemman 'polyhedron'-mallin luomiseen. Mallinnus on käsitelty seuraavassa kappaleessa.
14 4 POL YHEDRONMALLIT 4.1 Polyhedronmallien rajaaminen Polyhedronmalli (monisärmiömalli) eroaa prismamallista vapaamuotoisuudellaan. Pisteiden lukumäärää ei ole rajattu ja levymäisyys toteutuu vain jos kappale on haluttu määritellä ohueksi. Useamman tasoiset määrittelyt on tässä jätetty työn ulkopuolelle, koska niitä ei ole käytetty tarkasteltavissa kalliomalleissa. 4.2 Mallin levymäisyys Määrittely viivan levymäisyys etsitään minimoimaha valittujen pisteparien etäisyyttä. Siten esimerkiksi ensimmäisen pisteen läheisyydestä löytyy todennäköisesti viimeinen, toisen pisteen läheisyydestä toiseksi viimeinen jne (kuva 8). Kuva 8. Polyhedron mallin levymäisyys. 4.3 Käsittely tasossa Levymäisestä viivasta valitaan toinen kylki jatkokäsittelyyn. Viiva projisoidaan halutulle tasolle kehitetyillä rutiineilla. Kaateet määräävät syntyvän muodon. Päiden jatkaminen tapahtuu syntyneen viivan päiden välisessä suunnassa. Voimakkailla kaarevuuksilla ja isoilla kaateilla saadaan ennalta arvaamattomia malleja.
15 Rutiinin 2d-And avulla viiva levitetään tasoalueeksi (kuva 9). Kuva 9. 2d-And operaatio satunnaisilla murtoviivoilla. 4.4 Mallin laajennus Viiva kuvataan mainituilla menetelmillä pisteen lp tasolle. Jälleen tarkastetaan onko puoli oikein valittu ja vaihdetaan tarvittaessa. Viiva projisoidaan ala- ja ylätasolle ja poistolohko kirjoitetaan näiden aluetta kuvaavien viivojen avulla. Samankaltaisten viivojen luomista hankaloittaa se, että poistolohkon ylä-, ala- tai määrittelypintaa kuvaavat viivat poikkeavat toisistaan pisteiden lukumäärän tai vastaavuuden osalta toisistaan. Tilanne syntyy, kun kaade aiheuttaa osarakenteen ajautumisen tutkimusalueen sisä/ulkopuolelle. 4.5 Volumin muodostaminen Koska käsittely tapahtuu pääosin kaupallisen mallintajan ulkopuolella, on oltava olemassa tapa, jolla malli voidaan siirtää mallintajalle.
16 Tässä tapauksessa murtoviivat yhdistetään toisiinsa F ACE-elementein, jotka oikein indeksoituna voidaan siirtää Medusa-mallintajalle volumiksi. Mitään estettä mallintajan vaihtumiselle ei ole asetettu. Kuvassa 10 on murtoviivan esitelty kuvautumista volumina. Ylä ja alapinnan välissä näkyy määrittelytaso. Kuva 10. Murtoviivan mallinnus tilavuudeksi.
17 5 DISK-MALLIT 5.1 Tilanne Disk-kappaleet ovat ympyrämäisiä tai elliptisiä levyjä, joiden kaadesuunta, kaade, isoja pikkuakselin pituudet ja paksuus on määritelty. Tällaisia kappaleita käytetään paikalliseksi tulkittujen tai monista yksittäisistä osista muodostuvien rakenteiden kuvaamiseen. Disk-kappaleiden määrä on kalliomalleissa pieni, suurin se on Olkiluodon ja Hästholmenin kuvauksissa, joissa esiintyy moniosaisia loivakaateisia rakenteita. Aikataulusyistä disk-mallin toteutus jätettiin myöhempään vaiheeseen eikä tätä esitetä tässä raportissa. Ensimmäisenä käsitelty Romuvaaran alue ei sisällä kriittisiä diskejä.
18 6 OHJELMOINTITEKNIIKKA 6.1 Ympäristö Ohjelmointi on suoritettu GNU :n C++ kääntäjällä, versio 2. 7.2.2. Laitealustana oli Sun/Solaris 2.6 ja ohjelmistona Computervision Medusa 14. 6.2 Ohjelmatiedostot Kokonaan lohkotusta varten luodut lähdekoodit löytyvät nimillä 11.cc, 12.cc, prisma.cc, polyhedron.cc ja disk.cc. Vastaavat '.h'-tiedostot sisältävät tarpeelliset määrittelyt. Tiedostojen pääasiallinen sisältö on seuraava: 11.cc Main-funktio ja tulosten kirjoitus. 12.cc Projektikohtaisia luokkia ja funktioita. prisma.cc Prisma-muotoisen 'rocky'-mallin käsittely. polyhedron.cc Polyhedron-muotoisen 'rocky'-mallin käsittely. Kaavio ohjelman toiminnoista on liitteenä 1. 6.3 Testaus Ohjelmointityön aikana suoritettiin normaali koodin testaus.
19 Kuva 12. Kivetyn prismoilla R19B, R19C, R19D, R21, R19A, R1B, R2 on kuvassa lohkotettu piste IP=(3433250 6968750-1 00). Ylemmässä kuvassa on xy-tason projektioja alemmassa aksonometrinen kuva.
20....,.... Kuva 14. Volumin pintojen numeroinliperiaate ja toteutuma, kun n = 6.
Kuva 15. Lohkotuksen eteneminen kuvina. 21
22 7 MUUT OSATEHTÄVÄT 7.1 Beelean-täydennys,.. bwn.. Tilavuuksiin kohdistuvat Boolean-operaatior vaativat lisätoiminnon ohjelmoimista. Medusa:n boolean-operaatio hukkaa objektien nimet. Kun lista objekteja ajetaan esim. 'laatikon sisään' eivät objektit ole enää tunnistettavissa. Rutiini tekee booleanleikkauksen moniobjektisen ja yksiobjektisen mallin välillä hukkaamatta objektinimiä. Tällä rutiinilla voidaan lopullisen lohkon sisälle jäävät kappaleet tunnistaa. Usage:bwn <multiobjectmodel> <singleobjectmodel> <modelout> bwnbwn (1) - create boolean-section of multiobjectmodel against singleobjectmodel 7.2 Ratatiedesten uudelleen genereinti,.. rata.c.. Uncert-ohjelmalle syötettävien tietojen syöttöön tarvitaan kairanreikätiedosto, jossa rata pisteitä on tietyllä välillä. Tehty rutiini interpoloi ratatiedoston halutulla askeleella ja siirtää myös jaksoa. Usage: rata <source> [ <target> [ <step> [ <shift> ]]] source: target: step: target: ratatiedosto tuotettava ratatiedosto etenemän askel siirto
Kaaviokuva ohjelmatoiminnoista env Tarkista parametrit virheet main() Lue 'Rocky' tiedostot virheet N w ReadRockyFile() virheet poisto-osa model in memory ReadPolyHedron() ReadPrisma() {ReadDisk()...} Kirjoita tulokset TempFiles() TempFiles2() ShowlnterestingPoint() Mallinnustiedostot asc-files scripts logs 1--"