Dendriet kristallen |
Datum: Maart 2008 - Maart 2009
Inleiding:
Op 30 maart 2008 heb ik het Geologisch Evenement in Amsterdam bezocht en kwam daar een zogenaamd dendriet kristal structuur tegen. Ik moest onmiddellijk denken aan een elektrodepositie experiment dat ik in het verleden heb uitgevoerd waarbij soortgelijke structuren ontstaan. Ook vond ik een tijdschrift van de Stichting Geologische Activiteiten dat dit onderwerp uitgebreid behandelde. Het leek me leuk om hier iets meer in te verdiepen. |
Materiaal:
|
|
Uitvoering:
Naked Eye Inspection (NEI) en Penscope:
|
Fractale dimensie bepalen mbv ImageJ:
|
Simuleren mbv de programmeertalen Python en Visual Basic: |
Het is mogelijk om fractale patronen te maken
door ze te laten tekenen op een computer. In de tijd dat veel computers
nog onder MS-DOS draaiden had men daar een programmeertaal, GWBASIC of
QUICKBASIC, voor beschikbaar. Indertijd kwamen veel boeken uit over chaos
theorie waarin dan listings van programma's stonden in die talen. In een
van die boeken die ik nog in mijn bezit heb, het boek van Lauwerier,
stonden voorbeelden van programma's om dit soort patronen te tekenen.
Tegenwoordig kan men gratis
Microsoft
Visual Basic downloaden, hetgeen ook voor dit doel gebruikt kan
worden. Ik zocht echter ook naar een mogelijkheid om mijn Acer Aspire One voor dit doel te
gebruiken. Deze draait echter onder Linux draait en daar is Basic niet
echt een veel voorkomend programmeertaal. Na wat onderzoek kwam ik tot de
conclusie dat Python een zeer
geschikte programmeertaal was waarin deze Basic programma's in overgezet
konden worden. De taal is erg Basic achtig en men kan van een graphics
module gebruik maken die erg lijkt op die van QuickBasic. Python is ook
standaard binnen Linux aanwezig, men hoeft dus geen ruimte op te offeren
(hetgeen ik voor een Netbook wel belangrijk vindt). Python is ook
beschikbaar binnen een Windows omgeving. Een van de programma's uit het
boek van Lauwerier heb ik vervolgens overgezet naar Python. Met het resultaat van die simulatie was ik echter niet helemaal tevreden en heb daarom besloten een iets realistischer simulatie te bouwen in Visual Basic. |
Resultaat:
NEI en Penscope: | |
Onderstaande details zijn 50x vergroot mbv de PenScope digitale microscoop. | |
Bovenstaande foto is een resultaat van mijn koper-elektrodepositie experiment. | |
Alhoewel er duidelijk verschillen zijn is de overeenkomst in
struktuur ook erg groot. In dit geval gaat het duidelijk om een mangaan-dendriet. |
|
Tijdens de vrieskou in januari 2009 viel het mij op dat op de ruit van het schuurtje ijskristallen soortgelijke patronen vormden zoals op nevenstaande foto te zien is. | |
ImageJ analyse: |
|
De naar een zwart wit (binair) geconverteerde afbeelding. | |
De analyse volgens de box count methode: | |
|
|
Het resultaat is weergegeven in onderstaand screenshot. | |
De bijbehorende python code van stoffractal.py: | |
from graphics import * # custom
graphics #### Open a graphics window
similar to SCREEN 3 in BASIC ### Redefine the coordinate
system #### define some constants ### define functions def rotation2(): def spiegeling1(): def spiegeling2(): ### starting point ### picture building j = random.random() #### Draw a point object k = k + 1 #### Wait for a signal before
exiting | |
Bovenstaand programma kan men door een eenvoudige aanpassingen met spiegelingen, rotaties of een combinatie daarvan de fractals genereren. | |
De resultaten van de simulatie m.b.v. Visual Basic
zijn weergegeven in onderstaande screenshots die verschillende simulaties op
verschillende tijdstippen weergeven. In deze simulatie hebben we een ander
principe toegepast dan in het python programma. In het midden van het scherm is
een "seed" crystal (pixel) neergezet dat als aggregaat start dient en het is ook
mogelijk om op de wanden van de rechthoek aggregaten te laten groeien.
Vervolgens plaatsen we op een willekeurige positie in het scherm een kristal
(pixel) en laten die willekeurig voortbewegen op een manier die overeenkomt met
een Browniaanse beweging. Zodra dit kristal een aggregaat
(of wand of seed kristal) tegenkomt plakt het eraan vast. De DLA cluster groeit
door de agglomeratie van de diffunderende Browniaanse deeltjes. De VB code is langer dan de Python code en kan men terugvinden onder achtergrondinformatie. | |
Discussie:
De meeste dendrieten, zoals hierboven getoond, die in de natuur voorkomen zijn maangaanoxides alhoewel er ook zijn gebaseerd op ijzerhydroxide, silicalitische mineralen, etc. Zoals het elektrodepositie experiment eigenlijk al demonstreert kunnen ook kristallen dendritische structuren vormen (denk bv aan sneeuwkristallen). In dat geval wordt de vorm echter bepaald door de kristalbouw. De vorm van de hier getoonde structuur wordt echter niet bepaald door de kristalbouw. | |
De dendrieten zoals ze hierboven zijn
afgebeeld komen voornamelijk in twee soorten voort de mangaanoxyde
dendrieten (Mn-dendrieten) en de ijzerhydroxide dendrieten (Fe-dendrieten)
die weer vnl. opgebouwd zijn uit goethiet (FeO(OH)). De Mn-dendrieten zijn
gewoonlijk pekzwart terwijl de Fe-dendrieten allerlei schakeringen van
bruin, oranje en geel. De takken van de Fe-dendrieten zijn meestal ook
breder en grover van structuur dan de Mn-dendrieten, bovendien zijn ze langs
de buitenzijde van de takjes meestal sterker gekleurd dan binnenin. De
dendrieten hebben een vnl. amorfe structuur hetgeen, zoals hierboven vermeld,
ondersteund dat de vorm niet bepaald wordt door de kristalstructuur van de
moleculen. De hoek die de aftakkingje maken ligt tussen de 30° en 70°, en
meestal zelfs tussen 35° en 55°. Men heeft verschillende managaanoxide en hydroxide mineralen geïdentificeerd die betrokken zijn bij de dendrietvorming. Enkele van deze mineralen zijn:
|
|
Mn-dendrieten worden op veel plaatsen gevonden maar vnl in kalkgesteentes en dolomieten. Fe-dendrieten komen minde vaak voor en lijken beperkt te zijn tot kalkgesteentes en dolomitische gesteentes. Erg bevorderlijk voor de vorming van de dendrietstrukturen is de aanwezigheid van laagvlakken (scheidingsvlakken tussen twee opeenvolgend lagen). | |
|
Dendrietvorming op een laagvlak |
Een voorwaarde voor de dendrietvorming lijkt te zijn dat de barstdiameter niet te groot is. Het binnendringen van de mangaan- en ijzerverbindingen niet zozeer het gevolg van het oplossen van kalk als wel het gevolg van precipitatie in de poriën tussen de calcietkristallen van het gesteente. | |
Deze poriën zijn slechts enkele µm breed. Door
de sterke kleuring van het mangaanoxide en door de doorzichtigheid van de
kleine calcietkristallen lijkt het of de dendrieten
mineralogisch zuivere precipitaten zijn maar in werkelijkheid zijn het dus
vertakte stelsels van door Mn- en Fe-verbindingen gecementeerde kalk.
Doordat de binnendringing van het discontinuïteitsvlak uit in beide
richtingen plaatsvindt resulteert vaneensplijting van lagen in
dendrietvormen die nauwkeurig elkaars spiegelbeeld zijn.
Het meest verbreide type laagvlakdendriet heeft een boomvorm, waarbij een duidelijke hoofdgroeirichting ontwikkeld is. De boompjes beginnen in de meeste gevallen op de "randen" van laagvlakken waar deze door diaklezen doorsneden worden. Van de barsten uit groeien de boompjesdendrieten naar beide kanten, waarbij de hoofdgroeirichting steeds ongeveer loodrecht op de barst staat. |
|
De groei van de laagvlakdendrieten vindt
plaats door stoftoevoer die niet (direct) uit de diaklazen komt maar
(overwegend) uit de tegenovergestelde richtingen. Het proces speelt zich af
in twee fasen: a. het binnendringen van een oplossing tussen op elkaar liggende lagen, tot op een zekere afstand van de diaklazen, en b. het afzetten van dit materiaal, eerst op kiemen op de randen van de laagvlakken en vervolgens op de aangroeiende uiteinden van de dendriettakjes. Met dit mechanisme kan men verklaren waarom de dendrieten een constante takdikte vertonen (de afzettingsduur is overal ongeveer even lang), maar ook waarom de afsplitsingshoeken nooit meer dan 70° bedragen, en de groei naar voren gericht is: groei in achterwaartse richtingen is (in normale gevallen) niet mogelijk omdat de moederoplossing al uitgeput is. |
|
Tegenwoordig zijn er modellen ontwikkeld waarmee de vorm van de dendrieten beschreven wordt. Deze dendrieten zijn random fractals en kunnen beschreven worden met diffusie gelimiteerde aggregatie modellen (DLA). DLA is een proces waarbij deeltjes een "random walk" ondergaan die wordt bepaald door de Browniaanse beweging, vervolgens samensmelten en zo aggregaten van dit soort deeltjes vormen. De theorie is toepasbaar op vele systemen waar diffusie het primaire transport mechanisme vormt. DLA kan men waarnemen is systemen zoals elektrodepositie, Hele-Shaw flow patronen en, zoals in dit geval, minerale afzettingen. | |
We
kunnen de fractale dimensie van deze dendrieten bepalen m.b.v. software die
foor dit doel ontwikkeld is. In dit geval hebben we gebruik gemaakt van het
programma ImageJ. Hiermee hebben we een waarde van D=1.69 gevonden. De vraag is
dan nu hoe betrouwbaar dit resultaat is en om dat te kunnen beoordelen moeten we
het vergelijken met de waardes zoals we die in de literatuur kunnen vinden. In de literatuur kunnen we waardes voor dendrieten vinden:
De door onze gevonden waarde past dus perfect in de range die voor dit soort Dendrieten in de literatuur gegeven wordt. |
|
Betreffende de Python simulatie die gedaan is het noodzakelijk dat men zich realiseert dat alhoewel men met de code zoals we uit het boek van Lauwerier gehaald hebben een figuur maken die lijkt op de figuren zoals we ze in de natuur waarnemen we hier niet hetzelfde patroon creëren als we in het gesteente waargenomen hebben. In het model dat we hier simuleren gaan we uit van een puntbron die zich in alle richtingen kan verspreiden. Het is echter geen simulatie van het proces zoals dat plaatsvindt in de natuur waarbij een dendriet vorm gecreëerd wordt oftewel het DLA proces wordt niet echt gesimuleerd met deze programmacode. In het gesteente zien we geen startpunt maar iets wat meer op een startlijn lijkt. We passen als het ware alleen maar een wiskundig truckje toe, we simuleren niet echt zaken zoals chemische reacties en transportverschijnselen. | |
Dat bezwaar hebben we proberen te ondervangen m.b.v. de simulatie die we in VB hebben geschreven. Deze is ook realistischer in het nabootsen van het proces zoals het werkelijk plaatsvindt. Desalniettemin is het niet een perfecte match. Het is interessant om te zien dat groei vanaf de wanden vnl in het midden plaatsvindt. Dit is verklaarbaar als men zich realiseert dat als er eenmaal wat aangroei heeft plaatsgevonden de kans groter is dat een zich willekeurig voortbewegend deeltje in het midden een aangroeipunt vindt voordat het in de hoekpunten is aangekomen. |
Conclusies:
|
Literatuur:
|
Relevante websites:
Minder relevante websites:
Opmerkingen:
|
Achtergrondinformatie:
Wat is een fractal?
Een fractal is een meetkundige figuur waarin eenzelfde motief zich steeds op kleinere schaal herhaalt. Dit patroon kan men in de natuur zeer vaak herkennen. Een goed voorbeeld is een boom met een stam die zich splitst in twee kleinere zijtakken, die zich op hun beurt weer splitsen in twee kleinere zijtakken die zich op hun beurt weer... ad infinitum. De specifieke kenmerk van gelijkvormigheid die fractals hebben heeft ook als gevolg dat als we maar een klein stukje van een fractal kennen van daaruit de gehele structuur kunnen herleiden. Een ander kenmerk van fractals is dat ze gebroken dimensies hebben. Waar een punt een dimensie 0 heeft, een lijn een dimensie 1, een vierkant een dimensie 2 en een kubus een dimensie 3 hebben fractals dimensies die daartussen liggen. Bij een foto reduceert men een fractal naar een tweedimensionale vorm en voor een fractal geldt dan vaak dat deze een dimensie tussen 0 en 2 krijgt. Het laatste specifieke kenmerk van een fractal is dat deze in principe ontstaat door oneindige iteratie. Uitgaande van een basisfiguur voert men daar een bewerking op uit. Op het resultaat van die bewerking laat men weer dezelfde bewerking los, ad infinitum. De fractale dimensie kunnen we bepalen m.b.v. de formule van Hausdorff-Besicovitch die luidt:
Hierin is D de dimensie en N(h) het aantal schijven van grootte h dat nodig is om een object te bedekken. Passen we de formule toe op een lijn dan krijgen we de volgende analyse: 1 schijf van grootte 1, 2 schijven van grootte 0.5, 4 schijven van grootte 0.25 etc. In de limiet vinden we dan een dimensie van:
Passen we deze formule toe op de driehoek van Sierpinsky.
De schaal van
de uitvergroting is 2 is en dat de driehoek komt telkens 2 keer voor in de
oorspronkelijke driehoek. In de box count methode (vierkantjes tellen) legt men een grid van vierkantjes van verschillende groottes over het plaatje dat het object bevat. Het aantal vierkantjes N(h) dat een deel van de fractal bevatten wordt geteld. De fractale (box) dimensie D wordt gegeven door de hellingshoek van de lijn die men krijgt als men log(N(h)) tegen log(1/h) uitzet. Aangezien er geen vastgelegde grootte is voor de vierkantjes t.o.v. het aantal pixels in de afbeelding zijn meerdere metingen van N(h) voor verschillende groottes nodig. De grafische waarde van N(h) is meestal een gemiddelde voor verschillende groottes. |
Visual Basic 2008 Code: |
Public Class
frmSimulatie 'Simulation of Diffusion limited aggregation (DLA) 'We start with an immobile seed on the plane. 'A walker is then launched from a random position and 'is allowed to diffuse. If it touches the seed, it is immobilized 'instantly and becomes part of the aggregate. We then launch similar 'walkers one-by-one and each of them stops upon hitting the cluster. 'After launching a few hundred particles, a cluster with intricate 'branch structures results. Dim counter As Integer 'simulation loop counter
Sub DLASimulation(ByVal frmTst As Form, ByVal
counterMax As Integer) |
22/12/2009