Volumegroei van de hartspier Linden, van der, M.E.T.J. Gepubliceerd: 01/01/2001 Document Version Uitgevers PDF, ook bekend als Version of Record Please check the document version of this publication: • A submitted manuscript is the author's version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website. • The final author version and the galley proof are versions of the publication after peer review. • The final published version features the final layout of the paper including the volume, issue and page numbers. Link to publication Citation for published version (APA): Linden, van der, M. E. T. J. (2001). Volumegroei van de hartspier. (DCT rapporten; Vol. 2001.025). Eindhoven: Technische Universiteit Eindhoven. General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain • You may freely distribute the URL identifying the publication in the public portal ? Take down policy If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim. Download date: 18. Jul. 2017 Volumegroei van de hartspier DCT 2001.25 M.E.T.J. van der Linden Technische Universiteit Eindhoven Faculteit Werktuigbouwkunde, vakgroep Dynamics and Control Begeleiders: Dr. Ir. P.H.M. Bovendeerd Ir. L. Geerts-Ossevoort Eindhoven, 21-05-2001 Volurnegroeivan de hartspier Inhoudsopgave Inhoudsopgave ........................................................................................................................... 2 1. Inleiding .................................................................................................................................3 2. Literatuurstudie .....................................................................................................................4 2.1 Stimulus ........................................................................................................................... 4 2.2 Groeiwet ..........................................................................................................................4 2.3 Discussie !keuzes ............................................................................................................5 3. Mathematisch modei ..............................................................................................................7 3.1 Mechanisch model ...........................................................................................................7 3.2 Groeimodel ...................................................................................................................... 8 4 . Numeriek model .....................................................................................................................9 4.1 Mechanisch model ...........................................................................................................9 4.2 Groeiwet ...........................................................................................................................9 4.3 Groeimodel .................................................................................................................... 10 4.4 Testsituatie .....................................................................................................................11 5 . Resultaten ............................................................................................................................. 12 6. Conclusie..............................................................................................................................16 Literatuur..................................................................................................................................17 Bijlage 1: Mesh-bestand .......................................................................................................... 18 Volumegroei van de hartspier 1. Inleiding Het menselijk lichaam is continu bezig met zich aan te passen aan de omgeving. Op invloeden zoals temperatuur, druk en spanning, reageert het lichaam zodat het weer in balans komt of blijft. Elk lichaamsdeel reageert weer anders op deze invloeden. Om meer inzicht te krijgen over interactie tussen lichaam en invloeden moet er onderzoek verricht worden. Deze kennis kan dan gebruikt worden om te voorspellen hoe een lichaamsdeel gaat reageren. Neem bijvoorbeeld een hart dat een infarct krijgt. Dit hart zal zich gaan aanpassen om de Ll,,A,:,,.. 1,~:- , , ,..I.. +A L,..A,, ulu~uul~ula uy i l yljl ~ LC I~UUUG~~. In dit verslag wordt gekeken naar het hart en om precies te zijn naar het spienveefsel waaruit het het hart bestaat. Welke externe invloeden hebben allemaal effect op dit hartspienveefsel? En hoe past het hartspienveefsel zich aan deze externe invloeden en omstandigheden aan? In dit onderzoek wordt er van uitgegaan dat het weefsel zich aanpast door te gaan groeien of te gaan afbreken. Er wordt gekeken of dit groeigedrag in een mathematisch model weer te geven is. Dit mathematische model zal vervolgens ge'implementeerd worden om te bepalen of dhet groeigedrag nagebootst kan worden. In dit verslag wordt als eerste gekeken welke stimuli er invloed hebben op het hartspienveefsel en op welke wijze en mate deze stimuli het weefsel behvloeden. Daarna zal een mathematisch model besproken worden waarmee de groei bepaald kan worden als functie van de stimulus. In het daaropvolgende hoofdstuk zal mathematische model ge'implementeerd worden tot een numeriek model. Met dit numeriek model kan het groeiproces nagebootst worden. De resultaten van deze sirnulatie worden daarna gepresenteerd en besproken. Hierna worden uit de resultaten conclusies getrokken en aanbevelingen gedaan. Volumegroei van de hartspier 2. Literatuurstudie 2.1 Stimulus Onder groeien wordt vooral verstaan het groter worden van lichaamsdelen en organen. Dit gebeurt ongeveer de eerste 15 tot 20 jaar van een menselijk leven. Ook is het lichaam continu bezig met zich aan te passen aan veranderde omstandigheden. Dit groeien, ook we1 adapteren genoemd, bestaat uit het hypertroferen (groeien) en resorberen (afbreken) van cellen en weefsel. Een cel adapteert zich als deze daartoe gestiiil'deerd wordt ([3]). Elk type ce! heeft ander stimuli nodig om te adapteren en deze zijn vaak nog niet bekend. Om een mechanisch model voor het adapteren op te kunnen stellen is het nodig om te weten welke stimulus (of stimuli) nodig is om een cel aan te zetten tot hypertroferen of resorberen (Omens, 1998 [ 5 ] ) . Volgens Omens ([5]) mag verondersteld worden dat de stimulus voor adaptatie mechanisch gerelateerd is en afhangt van spanning of rek ([Grossman et al., 1975; Florenzano and Glantz, 1987; Nguyen et al. 19931). Omdat cellen op diverse manieren externe stimuli kunnen detecteren mag aangenomen worden dat de adaptatie zich afspeelt op cellulair niveau. Zo gaan bijvoorbeeld myocyten meer eiwitten aanmaken en hypertroferen als zij mechanisch worden belast (J.H. Omens, 1998 [5]). Over de mechano-chemische stappen die tot het adapteren leiden is nog weinig bekend. Rodriguez, Hoger en McCulloch ([6]) gebruiken in veel onderzoeken een drukgerelateerde stimulus, maar een goede argumentatie hiewoor wordt niet gegeven. Ook op het gebied van hartspienveefsel is weinig bekend over de stimuli die cardiomyocyten aanzet tot groei of afbraak. Volgens Watson (1991) en Yakazalu et al. (1993) is rek waarschijnlijk betrokken bij de adaptatie van cellen ([I]). Het celmembraan van de cardiomyocyten is volgens Omens (1998) een "sensor" voor externe belastingen ([5]). Het signaal kan, volgens Reneman et al. (1995), direct gekoppeld worden aan de celkern door het cytoskelet of indirect door een varieteit van andere moleculaire signalen ([5]). Voor deze indirecte mechanotransductie op celmembraan niveau zijn diverse hypothesen opgesteld. Een hypothese, opgesteld door Bustamante et a1. (1991) is bestaan van mechanogevoelige ionenkanalen ([5]). Door vervorming van het celmembraan openen of sluiten deze kanalen zich wat leidt tot mogelijk transport van ionen door het celmembraan heen. Omdat er geen organellen in de spiercel bekend zijn die direct spanning kunnen waarnemen (Arts et a1.,1995 [I]) is het waarschijnlijk dat de stimulus rek gerelateerd is. 2.2 Groeiwet Een groeiwet geefi aan hoe het hypertroferen of resorberen afhangt van de stimulus. De adaptatie kan plaatsvinden door een verandering in volume, van massa (en dus dichtheid) of een andere celeigenschap. Vooral bij onderzoek naar botremodellering leidt adaptatie tot een verandering van de dichtheid, omdat de matrix van het bot verdicht ([S]). Bij spienveefsel zal adaptatie leiden tot een toename van volume. Afhankelijk van de belasting worden de spiervezel dikker door een toename van myofibrillen edof collageen. Volumegroei van de hartspier Cellen streven naar een situatie waarbij ze in evenwicht zijn en zullen zich aanpassen om weer in een evenwichtspositie te komen. Als een cel uit zijn evenwichtspositieraakt door een stimulus, bijvoorbeeld een exteme belasting, dan cal de cel daarop reageren door zich te gaan aanpassen en proberen terug te keren naar de evenwichtspositie. Deze evenwichtspositie is een referentiewaarde van de stimulus. Wijkt de stimulus af van deze referentiewaarde dan zal de cel gaan adapteren. Wijkt de stimulus maar weinig af van de referentiewaarde dan zal de cel niet of nauwelijks adapteren, maar naarmate de stimulus verder van deze referentiewaarde ligt zal de cel daar sterker op reageren. Dit gaat door tot een bepaald waarde van de stimulus waarbij de cel zich niet sneller kan adapteren. In figuur 2.1 is een geeft een voorbeeld weer van een algemene groeiwet. Groeiwet I 1 3 1 I , , - ' - /' 1 ' ' Referentiewaarde Stimulus Figuur 2.1 Algemene groeiwet Over de vorm van de groeiwet, de referentiewaarde, de waarde waarop maximale groei plaatsvindt is niet veel bekend. Ook is nog niet bekend of het hypertroferen even snel gaat als het resorberen en of deze bij gelijke absolute afwijking beginnen. Verder is niet bekend of maximale hypertrofie gelijk is aan maximale resorptie. 2.3 Discussie / keuzes Uit paragraaf 2.1 komt naar voren dat het waarschijnlijk is dat de stimulus die aanzet tot adaptatie rek-gerelateerd is en dat dit adaptatie proces zich op celniveau afspeelt. In dit onderzoek is daar dus ook voor gekozen. Het proces van adaptatie wordt als volgt beschouwd: De adaptatie wordt op gang gezet door een exteme belasting. Deze belasting veroorzaaict een rek van het celmembraan. Doordat het celmembraan wordt opgerekt ontstaat er op een nog onbekende manier een stimulus die de cel aanzet zich aan te passen. Door de deze adaptatie Volumegroei van de hartspier veranderen de eigenschappen van de cel wat leidt tot een kleinere rek door de externe belasting en een kleinere stimulus. (Zie figuur 2.2) -2~'d eigenschappen cOnst~e'e fkd vervorming ~ t i m u i u s ~ e i w e~ t~ r o e i s t i m u i u ~s ~ Verandering Celeigenschappen a c Figuur 2.2 Flowchart van het adaptatieproces Dit proces zal diverse malen doorlopen worden opdat er een evenwicht ontstaat en er geen adaptatie meer zal plaatsvinden. Als einddoel wordt venvacht dat de situatie stabiel wordt. Omdat het niet mogelijk is om dit hele proces te modelleren op celniveau wordt het in dit onderzoek toegepast op macroscopisch niveau en wordt er uitgegaan van een homogeen materiaal. 1 ~ e Volumegroei van de hartspier 3. Mathematisch model Het model voor de volumegroei van hartspienveefsel kan worden opgedeeld in twee delen. In het eerste deel wordt een mechanisch probleem opgelost. Hierbij worden de vervorrningen en de rekken berekend die ontstaan door het opleggen van een externe belasting op het weefsel. In dit deel wordt de stimulus berekend, in dit geval de rek, die de adaptatie teweeg brengt. In het tweede deel wordt de volurnegroei van het weefsel bepaald dat ontstaat door de stimulus. Deze volurnegroei wordt dan op het weefsel aangebracht zodat er een nieuwe situatie ontstaat. 3.1 Mechanisch model In het mechanische model wordt gebruik gemaakt van een materiaalmodel dat het materiaalgedrag van biologisch weefsel benadert [2]. Bij dit materiaalmodel wordt uitgegaan van een rekenergiefunctie. Deze functie bestaat uit twee delen waarbij in het eerste deel, W,(E) gekeken wordt naar de energie die opgeslagen wordt in het materiaal door elasticiteit ewan. Het tweede deel W,(E), de incompressibiliteit van het materiaal, wordt beschreven door penaltyfunctie voor de volumeverandering. Hierin is : E : Green - Lagrange rektensor a, :Materiaalparameters I, :Eerste invariant Green - Lagrange rektensor I, : Tweede invariant Green - Lagrange rektensor E,, : Green - Lagrange rek in de richting van de belasting C :Rechter Cauchy - Green rektensor Be som van de afgeleide van het eerste deel van deze rekfunctie naar de Green-Lagrange rek en de afgeleide van het tweede deel van de rekfunctie naar de Cauchy-Green rek gee& de 2" Piola-Kirchhof spanningstensor. Hierin is : S : 2" Piola - Kirchhof spanningstensor E : Green - Lagrange rektensor C : Rechter Cauchy - Green rektensor De Cauchy spanmingstensor is te bepalen uit de 2e Piola-Kirchhof spanningstensor door middel van: Volurnegroei van de hartspier Hierin is : a : Cauchy spanningstensor F : Deforrnatietensor S : 2" Piola - Kirchhof spanningstensor Als deze Czuchy spanningstensor bekend is kamen de verplaatsingen en de rekken berekend worden die nodig zijn voor het probleem door gebruik te maken van de wet van behoud van impuls van stationaire gevallen: Hierin is : a : Chaucy spanningstensor 3.2 Groeimodel Voor het groeien wordt een model gebruikt dat analoog loopt met uitzetting van een materiaal door warrnte. Bij uitzetting van een materiaal door warmte ontstaat er door een of meerdere warrntebronnen een temperatuursveld in het materiaal. Dit temperatuursveld kan berekend worden uit de warmtebronnen door middel van de Poissonvergelijking. Door temperatuursveranderingen die ontstaan door het temperatuursveld gaat het materiaal krimpen of uitzetten. In het groeimodel wordt de rek als bronterm gebruikt. De rek wordt, met behulp van een groeiwet, omgezet in een groeistimulus f . Met behulp van de Poissonvergelijking wordt uit deze groeistimulus een groeiveld c bepaald. Uit dit groeiveld kunnen de verplaatsingen u berekend worden wat leidt tot het uitzetten (groeien) of krimpen (afbreken) van het materiaal. hierin is : f :groeistimulus c :groeiveld k :groeifactor u' :groeiverplaatsing Op deze wijze wordt dus bereikt dat er volumegroei plaatsvindt die afhankelijk is van de groeistimulus. Volumegroei van de hartspier 4. Numeriek model Voor het numerieke model is gebruik gemaakt van het EEM-pakket Sepran. Hierin is een 3Dmesh gegenereerd. De mesh bestaat uit een axi-syrnmetrische staaf die over de lengte van breed naar smal loopt zoals te zien is in figuur 4. l a en 4. lb. Figuur 4.la & 4.lb: De mesh in twee aanzichten 4.1 Mechanisch model Het smalle uiteinde (vlak S1) van de staaf wordt ingeklemd en aan het brede uiteinde (vlak S2) wordt een oppervlakte kracht aangebracht. Voor het mechanische probleem wordt gebruik gemaakt van 3D-linear elastische elementen. Er wordt uitgegaan van zowel fysische als geometrisch niet-lineair exponentieel materiaalgedrag zodat grote vervorrningen mogelijk zijn. Omdat er gebruik gemaakt wordt van een oppervlakte kracht moet het oppervlak S2 zo weinig mogelijke van grootte veranderen zodat de kracht constant blijft. Om dit te bereiken heeft het breedste uiteinde over een derde van de totale lengte een constante straal, opdat er geen rekverschillen ontstaan in dat uiteinde. Door de oppervlakte kracht zo te kiezen dat rek in het breedste uiteinde ontstaat dichtbij de referentiewaarde ligt zal er geen groei optreden en zal de totale kracht op de staaf constant blijven gedurende de simulatie. Omdat het een axi-syrnmetrisch probleem is en om starre verplaatsing te voorkomen wordt voorgeschreven dat de vlakken S1, S3 en S5 vastgezet. 4.2 Groeiwet De aangebrachte belasting leidt tot het ontstaan van spanningen en rekken en een vervorming van de mesh. E e rekken die in de lengte richting (x-richting) ontstaan worder, als invoer gebruikt voor de groeiwet. De groeiwet gaat uit van een referentiewaarde. Is de rek groter dan deze referentiewaarde dan is er een positieve stimulus voor groei en vice versa. Volumegvoeivan de hartspier Biologisch materiaal zal pas gaan adapteren nadat de stimulus daarvoor groot genoeg is. Er is daarom gekozen om een "lazy"-zone aan te brengen, in de groeiwet, waarbinnen het rekverschil met de referentiewaarde zo klein is dat dit geen groeistimulus ontstaat. Tevens is voor deze zone gekozen om er voor te zorgen dat er een eindsituatie ontstaat waarbij geen adaptatie meer plaatsvindt. De grootte van de stimulus wordt bepaald door de grootte van de rek en een groeifactor. De groeiwet is als volgt: hierin is : f :stimulus 5 : groeifactor E, : rek (in x - richting) :referentiewaarde E~~ :breedte " lazyv-zone Grafisch gezien komt dit overeen met figuur 4.2 Groeiwet I Referentiewaarde Rek Figuur 4.2 Groeiwet: relatie tussen rek en stimulus 4.3 Groeimodel Het groeien van het materiaal wordt numeriek bereikt door het te laten uitzetten. De stimulus die voor elk element in de groeiwet wordt berekend wordt in een Poissonprobleem gebruikt als bronterrn. Uit deze bronterm wordt de uitzetting van elk element bepaald. Om de mesh Volumegroei van de hartspier axisymmetrisch te houden wordt er randvoonvaarde opgelegd dat er geen groei mag optreden in de symmetrievlakken (S3 en S5) in de richting van de normalen. Zou dit we1 gebeuren dan sluit de mesh rond deze symrnetrievlakken niet meer aan en ontstaan er holtes. Er mag alleen groei plaatsvinden in radiale richting. De elementen met een rek ongelijk aan de referentiewaarde veranderen van volume. Door deze volume verandering ontstaat er een gewijzigd rekveld in de staaf. Als dit proces wordt herhaald convergeren de rekken naar de referentiewaarde. In figuur 4.3 is te zien hoe het heel proces wordt doorlopen. Belasting, Randvoorwaarden & Materiaaleigenschappen I Mesh aanpassen ,--------------- Groeistirnulus Per element Groeiwet Referentie-waarde Figuw 4.3 Flowchart van het gehele proces 4.4 Testsituatie Voor dit probleem zijn de volgende waarde voor de mesh genomen: 1 = 3 [m] rmax = 1 [m] rmin = 0,5 [m] De oppewlakte kracht die wordt opgelegd is gelijk aan: F, = 0,25 ~ . m - ~ ] Voor de groeiwet zijn de volgende waarden gekozen: &ef = 0,04 [-I Elazy = 0,005 [-] ("lazyn-zone: 0,04 0,005 [-I) E=O,ll [-I * Met bovenstaande waarden is de simulatie gestart en is de loop 500 maal doorlopen. Volumegroei van de hartspier 5. Resultaten model is ge'implementeerd zoals in hoofdstuk 4 is verrneld. De reksituaties zijn als volgt: ya,*y in 0 . 1 ria1.x 10 0 'i Figuur 5.1 Rekveld (x-richting) beginsituatie Figuur 5.2 Rekveld (x-richting) na 5 iteraties Figuur 5.3 Rekveld (x-richting) na 10 iteraties Figuur 5.4 Rekveld (x-richting) na 15 iteraties Figuur 5.5 Rekveld (x-richting) na 20 iteraties Figuur 5.6 Rekveld (x-richting) na 25 iteraties Volumegroei van de hartspier Figuur 5.7 Rekveld (x-richting) na 30 Iteraties Figuw 5.8 Rekveld (x-richting) na 35 Iteraties Figuur 5.9 Rekveld (x-richting) na 40 iteraties Figuur 5.10 Rekveld (x-richting) na 45 iteraties Iill", rraiex 9 11-2 9 (93 Figuur 5.1 1 Rekveld (x-richting) na 50 iteraties Figuur 5.12 Rekveld (x-richting) na 100 iteraties Volurnegroei van de hartspier Zoals kan worden gezien in de figuren 5.1 tlm 5.12 vindt de meeste groei plaats in de eerste 50 iteraties. Daarna verandert de situatie maar weinig. Ook a1 zijn er geen resultaten van iteraties groter dan 100 weergegeven, gemeld kan worden dat na 392 iteraties een situatie ontstaan waarbij de rekken van 282 van de 286 knooppunten binnen de "lazy"-zone vallen. Bij de 393 iteratie doet er zich een probleem voor bij het oplossen van het poisson-probleem en kan de Jacobiaan niet bepaald worden. Waar dit aan ligt is niet bekend. Zoals in de laatste afbeeldingen (Figuur 5.12) te zien is zijn de syrnmetrievlakkenniet precies recht ook a1 wordt dit geeist in de randvoorwaarden. De mesh is dan dus niet meer axisyrnmetrisch. lteratie [-I Figuur 4.13: Totale volume van de mesh als functie van de iteraties In figuur 4.13 is het totale volume van de mesh weergegeven als functie van de iteratiestap Hierin is duidelijk te zien dat na 392 iteraties er nog geen volledig stabiele eindsituatie is ontstaan, maar dat er nog steeds een constante volumetoename plaatsvindt. Deze volume groei komt doordat er rekken ontstaan door de groei van de elementen en de randvoonvaarden. Eet gaai hierbij om de knooppunten 253, 257, 275 en 279. Deze zijn deels aangeven in figuur 4.14. De andere 2 punten liggen op dezelfde plek maar dan ken element temg in de x-richting. 4 i y Figuur 4.14: Mesh na 392 iteraties Volumegroei van de hartspier Met uitzondering van deze 4 knooppunten is duidelijk in figuur 4.15 te zien dat de stimulus, rek in de x-richting, afneemt en uitkomt in de "lazyv-zone. In deze figuur zijn grafieken weergegeven van de knooppunten die de hoogste of laagste stimuluswaarde hadden aan het begin of het einde van de simulatie. De grafieken van alle andere knooppunten liggen tussen deze 4 grafieken in. De "lazy"-zone is aangegeven met gestreepte lijnen en loopt van 0.035 tot Het hele proces van adaptatie gaat, net als in werkelijkheid, geleidelijk. Adapteert het materiaal te snel eindigt de simulatie. De waarde voor de groeifactor 6 in de groeiwet kan dus ook niet te groot gekozen worden. Volumegroei van de hartspier 6. Conclusie De resultaten van de simulatie komen grotendeels overeen met de situatie die venvacht wordt. Het is dus mogelijk om op deze wijze adaptatie te simuleren. Toch zijn er punten waarop deze verbeterd kunnen worden. Zo moet er gekeken worden naar de axisyrnmetrie van de mesh. Om deze te waarborgen moeten de randvoonvaarden beter gesteld worden of moet de mesh aangepast worden zodat er geen problemen ontstaan met randen en vlakken die niet aansluiten. Het is eenvoudig om de mesh aan te passen zodat deze volledig is (cirkelvormige dwarsdoorsnede). Dit heeft als bijkomend voordeel dat ook voor het mechanische probleem de r a ~ d v o o n v a m i est& ~ vereeworadigen. Het mige nadeei is dat de mesh 4 maai zo groot wordt wat leidt tot 4 maal zoveel ellementen. De rekentijd van sirnulatie zal dus ook behoorlijk toenemen. Als de problemen rond de randvoonvaarden opgelost zijn zullen er ook geen rekken ontstaat door deze voonvaarden. De simulatie zal dan ook zeer waarschijnlijk eindigen in een statische situatie met alle knooppunten binnen de "lazyn-zone. In dit onderzoek is uitgegaan van dat de rek in de x-richting de stimulus is voor adaptatie, maar dat is zeer onwaarschjnlijk. Andere stimuli, bijvoorbeeld rek in de vezelrichting of een combinatie van rekken, zouden beproefd moeten worden. Het veranderen van de groeiwet in een vorm die realistischer is dan die hier gebruikt is (zie figuur 2.1) kan het hele proces ook verbeteren. Ook zouden de parameters in deze groeiwet beter bepaald moeten worden, eventueel met behulp van waarden die bepaald zijn uit werkelijke proeven op hartspienveefsel. Het is moeilijk om een klein model zoals in dit verslag besproken wordt te vergelijken met werkelijk biologisch weefsel. Om dit te kunnen doen zou het model in een groter model, van bijvoorbeeld het gehele hart, opgenomen moeten worden. Dit is namelijk beter te vergelijken met de werkelijkheid. Zo zou het model gevalideerd kunnen worden Volurnegroeivan de hartspier Literatuur 1. Arts, T., Prinzen, F.W., Snoeckx, L.H.E.H., Rijcken, J.M. & Reneman, R.S. (1994). Adaptation of cardiac structure by mechanical feedback in the environment of the cell: A model study. Biophysical Journal, Vol. 66, p. 953-961. 2. Bovendeerd, P.H.M. (1990). The mechanics of the normal and ischemic left ventricle durin the cardiac cycle: a numerical an experimental analysis. Maastricht: Rijksuniversiteit Limburg. 3. Fung, Y.C. (1990). Biomechanics: Motion, $ow, stress and growth. New York: Springer Verlag. 4. Ingenieursbureau Sepra. Handleiding Sepran. Leidschendam: Sepra 5. Omens, J.H. (1998). Stress and strain as regulators of myocardial growth. Progress in Biophysics & Molecular Biology, Vol. 69, p. 559-572. 6. Rodriguez, E.K., Hoger, A. & McCulloch, A.D. (1994). Stress-dependent finite growth in soft elastic tissues. Journal of Biomechanics, Yol. 27, Nr. 4, p. 455-467. 7. Taber, L.A. (1998). Biomechanical growth laws for muscle tissue. Journal for Theoretical Biology, Vol. 193, p. 201-213. 8. Weinans, H. & Surnner, D.R. (1997). Finite element analyses to study periprosthetic bone adaptation. Bone research in biomechanics 9. Yamazalu, T., Komuro, I., Nagai, R. & Yazaki, Y. (1996). Stretching the evidence in the case of cardiac growth. Cardiovascular Research, Vol. 31, p. 493-498. Volumegroei van de hartspier Bijlage 1: Mesh-bestand *test problem * * mesh definition constants end mesh3d points pl = ( p2 = ( p3 = ( p4 = ( p5 = ( p6 = ( p7 = ( p8 = ( p9 = ( p10 = pll = p12 = p13 = p14 = p15 = p16 = 0.0, 0.0, 0.0) 3.0, 0.0, 0.0) 3.0, 0.5, 0.0 ) 0.0, 1.0, 0.0 ) 0.0, 0.0, 1.0) 3.0, 0.0, 0.50) 1.5, 0.95, 0.0 ) 1.5, 0.0, 0.95) 2.0, 0.75, 0.0 ) ( 2.0, 0.0, 0.75) ( 2.5, 0.55, 0.0 ) ( 2.5, 0.0, 0.55) ( 0.5. 1.0, 0.0 ) ( 1.0, 1.0, 0.0 ) ( 0.5, 0.0, 1.0 ) ( 1.0, 0.0, 1.0) curves cl=linel(pl, p2, nelm=12) c2=linel(p2, p3, nelm=4) c3=splinel (p3, pll, p9, p7, p14, p13, p4, nelm=12) c4=linel (p4, pl , nelm=4) c5=splinel (p5, p15, p16, p8, p10, p12, p6, nelm=12) c6=linel (p2, p6, nelm=4) c7=linel(pl, p5, nelm=4) c8=arcl (p3, p6, p2, nelm=6) c9=arcl (p4, p5, pl, nelm=6) c10= curves (c8, -c6, c2) ell= curves(c9, -c7, -c4) surfaces s2=genera15(-c4,c9, -c7 ) sl=general5(c2, c8, -c6) s3=pipesurface5(-c4, c2, cl,-c3 ) s4=pipesurface5(129, c8, -c3, c5) s5=pipesurface5(-c7, -c6, c5, cl) s6=ordered surface (s3,s4,s5) sl=general5(c2, c8, -c6) s2=genera15(-c4, c9, -c7 s3=pipesurface5(c2, -c4, -cl, c3) s4=pipesurface5(c6, c7, -cl, -c5) s5=pipesurface5(-c8, -c9, -c5, c3) s6=ordered surface (s3,-s4,-s5) volumes vl=pipel3 (s2,sl,s6) *, nosubmesh plot ( eyepoint = ( 100, -50, 50 ) ) end Volumegroei van de hartspier Bijlage 2: Programma-bestand 1223456 program groei implicit none integer kmesh(500), kprob(2000,3), iuser (500,3), istart, irotat, ioutp, itime, ichoice, iref, is01 (5,3), ichoiceprob, iinputprob, iprob, iincommt(lO), ictime , intmat(5,3) , iinbld(l51, matr(5), irhsd(5,3), massmt (5), islold1(5,2), inpso1(22), iread, islold2 (5,2), iinvec (11), idum, stress(5), + iinder (lo), strain(5), inpcre (as), dumvec (5), + groeimod (5), itime, iseq, ichcrv, ivec, stim(5) , + uitzet(5) , iinplt(l4) , nstep , i, iter, niter , + iisol(5), iusol(5) , number, ncntln, j smooth, indcol, iplots (22), ncoorc, coorcn, input + + + + + + + double precision user (5OO,3), rinsol (lo), time, rinplt (5) , acc, rinvec (lo), contln(100), rplots (6) + character*80 text data data data data data data data data kmesh / 500t0 / kprob / 6000*0 / iuser / 1500*0 / user / 1500*0dO / is01 / 15*0 / inpsol / 22*0 / iinplt / 14*0 / rinsol / 10*0d0/ kmesh(1)=500 kprob (1,l)=2000 kprob (1,2)=ZOO0 kprob(1,3)=ZOO0 iuser (1,l)=SO0 iuser (1,2)=500 iuser(1,3)=SO0 user (1,l)=5OOdO user(1,Z)=5OOdO user (1,3)=5OOdO istart=l irotat=O ioutp=l itime=O call start (istart, irotat, ioutp, itime) open(unit=30, file='meshoutputl, status='oldl) ichoice =-2 ire£=3O call meshrd(ichoice, ire£, kmesh) c - - - Plot the mesh iinplt (1)=I4 iinplt (6)=1 iinplt (10)=l iinplt (11)=O iinplt (14)=1 rinplt(1) = 15d0 rinplt (2) = Id0 Volumegroei van de hartspier rinplt (3) = 15d0 rinplt (4) =15d0 rinplt (5) =15d0 call plotms (kmesh,iinplt,rinplt,dumvec) c call probdf(ichoiceprob, kprob(1, iprob), kmesh, iinputprob) iincommt (1)=2 iincommt (2)=l ictime=O call prestm(ictime, kmesh, kprob (1, iprob), is01 (1,iprob)) end do Create vector for storage total solution: inpcre (1)=0 call creatv(kmesh, kprob(l,l), iusol, inpcre, OdO) C --- C --- Create solution type vectors for old solutions inpcre (1)=3 inpcre (2)=1 inpcre (3) =1 call creatv (kmesh, kprob (1,l), isloldl(l,l), inpcre, 0dO) call creatv (kmesh, kprob ( 1 , ~,)islold2 (1,l), inpcre, 0d0) c c - - - Create vector with one degree of freedom ichcrv=2 ivec=l + call creavc (0, ichcrv, ivec, isloldl(1,~) , kmesh, kprob(l,l), 0, OdO) + call creavc (0, ichcrv, ivec, islold2 (1,2), kmesh, kprob(l,2), 0, OdO) c - - - Nurber of growth steps do i = 1, nstep call usolve (i, kmesh, kprob (1,l), intmat (1,l), iuser, user, iusol, isol, iisol, stress, strain) + + c write(*,*), 'Problem 1 solved' c --- Create solution type vector inpcre (1)=3 inpcre (2)=1 inpcre (3)=1 c --- Create vector with one degree of freedom ichcrv=2 ivec=l + call creavc(0, ichcrv, ivec, groeimod, kmesh, kprob(l,l), 0, OdO) Volumegroei van de hartspier + c call specvc(ichoice, strain, dumvec, groeimod, kprob (1,l), kmesh) --- Rekveld plotten iplots (1)=22 iplots (2)=2 iplots (3)=l iplots (4)=I5 iplots (5)=0 iplots (6)=l0 iplots (7)=0 iplots (8)=0 iplots (9)=0 iplots (10)=0 iplots (11)=2 iplots (12)=l iplots (13)=0 iplots (14)=l iplots (15)=l iplots (16)=0 iplots (17)=0 iplots (18)=0 iplots (19)=l iplots (20)=0 iplots (21)=0 iplots (22)=1 + C C C C C C call plotcn(kmesh, kprob(l,l), strain, iplots, rplots, contln, input, text, ncoorc, coorcn) - - - Standaard sepran-avs uitvoer wordt gemaakt: itime=l time=OdO iseq=i call priavs (kmesh, kprob (1, I), groeimod, itime, + iseq, time) open( unit= 30 , file='dist) call prinsl( iusol, kmesh, kprob(l,l), 30 close(unit= 30 ) ) open( unit= 30 , file='groeimodt) call prinsl( groeimod, kmesh, kprob (1,l), 30 close(unit= 30 ) open( unit= 30 , file='strainl) call prinsl( strain, kmesh, kprob(l,l), 30 close(unit= 30 ) ) ) Volumegroei van de hartspier c------------------------------------------------------------------ iprob=2 c - - - Copy groeimod from kprobl to kprob2 + call copydf (groeimod, islold2 (l,2), kprob (1,l), kprob (l,2), 1, I, kmesh) c - - - Fill coefficients, source (f) depends on groeimod iinbld(l)= 10 iinbld(2)= 1 iinbld(3)= 0 iinbld(4)= 0 iinbld(5)= 0 iinbld(6)= 0 iinbld (7)= 0 iinbld (8)= 0 iinbld(9)= 0 iinbld(l0)= 2 call build (iinbld, matr, intmat (1,iprob), kmesh, kprob (1, iprob) , irhsd (1, iprob) , massmt, is01 (1, iprob) , islold2 (1,l), iuser (1, iprob), + user (1, iprob)) + + + call solvel(inpso1, rinsol, matr, isol(1, i~rob), irhsd (1,iprob) , intmat (I,iprob), kmesh, @rob (1, iprob) , iread) + + open( unit= 30 , file='opll ) call prinsl( is01 (l,2), kmesh, kprob (1, 2), 30 close(unit= 30 ) --- ) Standaard sepran-avs uitvoer wordt gemaakt: itime=2 time=OdO iseq=i call priavs (kmesh, kprob (1, 2) , is01 (l,2), itime, + iseq, time) iinder (1)=4 iinder (2)=0 iinder (3)=0 - icheld=3: -grad(c) iinder (4)=3 + call deriv (iinder, uitzet, kmesh, kprob (1, iprob), isoi (1, iprob) ,iuser(1, iprobj ,user(1, iprob) itime=3 time=OdO iseq=i call priavs(kmesh, kprob(1, iprob), uitzet, itime, + iseq, time) open( unit= 30 , file='uitzet' ) call prinsl( uitzet, kmesh, kprob(1, iprob), 30 close(unit= 30 ) ) call copydf (uitzet,uitzet, kprob(1,l), kprob(l,2), 1, 1, kmesh) call defrnsh( call defmsh( - - - Set some parameters for the plotting routine iinplt (1)=I4 iinplt (6)=1 iinplt (10)=1 ) Volumegroei van de hartspier iinplt (11)=O iinplt (14)=1 rinplt (1) = 15d0 rinplt (2) = Id0 rinplt (3) = 15d0 rinplt (4) = 15d0 rinplt (5) =15d0 c call plotms (krnesh,iinplt,rinplt,dumvec) end do call finish (0) end double precision function funccf(ifunc, x , y, z) implicit none integer ifunc double precision x, y, z funccf=dble (ifunc) write(*,*) 'funccf=',funccf c end c --- double precision function funccl(ifunc, x, y, z, stim) implicit none integer ifunc , stim(5) double precision x , y, z, funccl if (ifunc.eq.1) then funccl= stim(1) write ( * , * ) 'funccl=',funccl else write(*,*) 'wrong function number' endif subroutine specvc i c ( ichois, ivecl, ivec2, ivec3, kprob, kmesh ) ===----------------------------------------------------------------................................................................. C C c c programmer version 1.0 Sander Gielen date 03-10-95 derived from copydf C C c .................................................................... C C C c c C C DESCRIPTION fill vector, as function of two other vectors on all degrees of freedom. .................................................................... C C KEYWORDS C C c ........................................................ C c C INPUT / OUTPUT implicit none integer ichois, ivecl ( * ) , ivec2 ( * ) , ivec3 ( * ) , kprob ( Volumegvoei van de hartspier C c c c c c c C C ichois ivecl ivec2 ivec3 kprob kmesh i i i o i i choice parameters old array (must be an existing SEPRAN array) old array (must be an existing SEPRAN array) new array (must be an existing SEPRAN array) kprob of arrays kmesh of problems .................................................................... C C C COMMON BLOCKS integer ibuffr double precision buffer(1) common ibuffr (1) equivalence ( ibuffr (1), buffer (1) ) C c c Blank common Working storage for all kinds of operations C c ibuffr i/o General SEPRAN buffer array C C c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . integer ierror, nerror common /cconst/ ierror, nerror save /cconst/ C c c /cconst/ Error codes and number of errors to print C c c c c C c ierror 0 >O nerror i/o - Error number of last error occurred No error present Last run-time error Number of error messages printed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . integer iinfor, infor common /carray/ iinfor, infor (3,1500) save /carray/ C c c /carray/ Information of arrays in IBUFFR C c C c c c c c c c c c iinfor - Number of types that is stored in INFOR. 0 c = IINFOR c= 1500 infor i/o Information concerning the storage of arrays in IBUFFR is stored in the following way: Pos. (1,i) If > 0: array i is stored in IBUFFR from position stored in infor (1,i) If < 0: array i is stored in file 3 from record number -infor(1,i) Pos. (2,i) Length of the array in words Pos. (3,i) Priority number. Is used to decide which arrays are put to file 3. 0 <= prio <= 10 C c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c .................................................................... C c SUBROUTINES CALLED C c c c ERCLOS: EROPEN: ERRSUB: Resets old name of previous subroutine of higher level Produces concatenated name of local subroutine Error messages SPECO1: SPECial vector manipulation, body of SPECVC C c C c .................................................................... C C C LOCAL PARAMETERS integer itypvl, inkphl, inkppl, + ipvecl, + + itypv2, inkph2, inkpp2, ipvec2, itypv3, inkpfl, inkpf2, inkpf3, inkph3, inkpp3, nphysl, nphys2, nphys3, ipvec3, ipkpfl, ipkpf2, ipkpf3, Volumegroei van de hartspier + ipkphl, ipkph2, ipkph3 itypvl itypv2 itypv3 inkpf1 inkpf2 inkpf3 inkphl inkph2 inkph3 inkppl inkpp2 inkpp3 nphysl nphys2 nphys3 ipvecl ipvec2 ipvec3 ipkpf1 ipkpf2 ipkpf3 ipkphl ipkph2 ipkph3 Type number of vector 1 Type number of vector 2 Type number of vector 3 Index of kprob part f Index of kprob part f Index of kprob part f Index of kprob part h Index of kprob part h Index of kprob part h Index of kprob part p Index of kprob part p Index of kprob part p Maximal number of degrees of number of physical variables Maximal number of degrees of number of physical variables Maximal number of degrees of number of physical variables Pointer to vecl Pointer to vec2 Pointer to vec3 Pointer to kprob part f Pointer to kprob part f Pointer to kprob part f Pointer to kprob part h Pointer to kprob part h Pointer to kprob part h freedom per point or the if defined freedom per point or the if defined freedom per point or the if defined c .................................................................... C call eropen ( 'specvc' ) itypvl = ivecl(2) if ( itypvl.ne.110 .and. itypvl.ne.115 .and. itypvl.ne.116 call errint ( itypvl, 1 ) call errsub ( 13, 1, 0, 0 ) end if itypv2 = ivec2 (2) if ( itypv2.ne.110 .and. itypv2.ne.115 .and. itypv2.ne.116 call errint ( itypv2, 1 ) call errsub ( 13, 1, 0, 0 ) end if itypv3 = ivec3 (2) if ( itypv3.ne.110 .and. itypv3.ne.115 .and. itypv3.ne.116 call errint ( itypv3, 1 ) call errsub ( 13, 1, 0, 0 ) end if if ( kprob(2) .ne.lOl ) then call errint ( kprob(1), 1 ) call errsub ( 26, 1, 0, 0 ) end if if ( ierror.ne.0 ) go to 1000 --- C then ) then ) then End tests call ini075 ( ivecl, kprob, inkpfl, inkphl, inkppl, nphysl call ini075 ( ivec2, kprob, inkpf2, inkph2, inkpp2, nphys2 call ini075 ( ivec3, kprob, inkpf3, inkph3, inkpp3, nphys3 write ( * , * ) 'nphys3=',nphys3 + + + + ) ipkpfl=max( ipkpf2=max ( ipkpf3=max ( ipkphl=max ( ipkph2=max ( ipkph3=max ( 1, 1, 1, 1, 1, 1, call spec01 ( infor(1,inkpfl) infor(1,inkpf2) infor(l,inkpf3) infor (1,inkphl) infor(l,inkph2) infor(1,inkph3) ) ) ) ) ) ) ) ) ) ibuffr(ipvecl), ibuffr(ipkpfl), ibuffr(ipkphl), inkpfl, inkphl, nphysl, ibuffr(ipvec2), ibuffr(ipkpf2), ibuffr(ipkph2), inkpf2, inkph2, nphys2, ibuffr(ipvec3), ibuffr(ipkpf3), ibuffr(ipkph3), Volumegroei van de hartspier + inkpf3, inkph3, nphys3, kmesh(8) , ichois 1000 call erclos end cdc*eor ( ) 'specvc' ) subroutine specOl( vecl, kpfl, kphl, inkpfl, inkphl, ndfl, vec2, kpf2, kph2, inkpf2, inkph2, ndf2, + vec3, kpf3, kph3, inkpf3, inkph3, ndf3, + npoint, ichois) + c ...................................................................... C C c programmer version 1.2 1.1 c c c c version 1.0 Sander Gielen date 17-10-97 changed do-loops data 25-04-96 extended for vector with different dofs . date 03-10-95 derived from cpdfOl C C C c .................................................................... C C C c DESCRIPTION make vector from two other vectors. C c .................................................................... C c KEYWORDS C c .................................................................... C INPUT / OUTPUT c PARAMETERS C implicit none integer inkpfl, inkpf2, inkpf3, inkphl, inkph2, inkph3, + kpfl(*), kpf2(*), kpf3 ( * ) , kphl(*), kph2(*), kph3(*), + ndfl, ndf2, ndf3, npoint, ichois double precision vecl ( * ) , vec2 ( * ) , vec3 ( * ) c c c ichois inkpf i i inkph kpf kph ndfl ndf2 npoint vecl vec2 vec3 i i i i i i i i o c c c c c c c c c c C C choice parameter, set by specvc. index of kprob part f of problem: = 0 : constant number of dofs in vector. > 0 : not constant number of dofs in vector. index of kprob part h of problem kprob part f of problem 1 kprob part h of problem 1 number of do£ kprobl (if constant) number of dof kprob2 (if constant) number of nodal points input vector input vector output vector .................................................................... C c C C COMMON BLOCKS - c .................................................................... C c LOCAL PARAMETERS logical ukphl, ukph2, ukph3 integer ipoint, ipvecl, ipvec2, ipvec3, idf1, idf2, idf3 double precision vctrl(6) , vctr2 (6), vctr3 (6) C c ipoint Counter for node numbers c ipvecl Pointer in vecl c ipvec2 Pointer in vec2 c ipvec3 Pointer in vec3 c .................................................................... SUBROUTINES CALLED Volumegroei van de hartspier if ( inkpfl.gt.O .and. inkpf2.gt.0 .and. inkpf3.gt.O ) then write ( * , * ) ' spevec alleen voor vectoren met constant dofs' write ( * , * ) ' rest geskipt ' got0 1000 end if ukphl ukph2 ukph3 = = = ( ( ( inkphl .ne.0 inkph2 .ne . 0 inkph3.ne .0 ) ) ) - - - loop over all points C do ipoint = 0, npoint-l - - - extract vector 1 do idfl = 1,ndfl ipvecl = ipoint*ndfl+idfl if ( ukphl) ipvecl = kphl (ipvecl) vctrl (idfl) = vecl (ipvecl) end do - - - extract vector 2 ipvec2 = ipoint*ndf2+idf2 if ( ukph2) ipvec2 = kph2 (ipvec2) vctr2 (idf2) = vec2 (ipvec2) end do - - - call to fnspvc to compute vector 3 call fnspvc( ichois, vctrl, ndfl, vctr2, ndf2, vctr3, ndf3 --- put results back in large vector 3 end do 1000 end do continue call erclos end cdc*eor ( 'spevec' ) C c programmer Sander Gielen c version 1.0 date 25-04-1996 C c .................................................................... C c DESCRIPTION C c user-subroutine to compute special vector manipulation C c C v3 = fn ( vl, v2 ) , all do£s may be used. c .................................................................... ) Volumegroei van de hartspier C c KEYWORDS C c .................................................................... INPUT / OUTPUT PARAMETERS implicit none integer ichois, nl, n2, n3 double precision vl (nl), v2 (n2), v3 (n3) nmax, IA, IV, I, IFAIL, J, N integer parameter (nmax=3,IA=nmax,IV=max) double precision A (IA,nmax) , E (nmax), R (nmax), v (IV,nmax), t buffer (1), mu, lambda, Emodl, nul, stimulus . . External Subroutines . . external FOZABF ichois nl,n2,n3 vl v2 v3 choice number vector vector vector parameter. Set by call to specvc. of dofs of vectorl, 2, 3 1, input vector 2, input vector 3, output vector c .................................................................... C c C COMMON BLOCKS - c .................................................................... C c PSEUDO CODE C c c c c c ichois = 1 ichois = 2 ichois = 3 ichois = 4 ichois = 5 eigenvalues first invariant of strain ===> second invariant of deviatoric strain ===> total strain energy ===> second invariant of strain ===> ===> C c ...................................................................... if (ichois .eq. 1) then IFAIL = 1 call f02abf (A,IA,N,R,V,IV,E,IFAIL) IF (1FAIL.NE.0) THEN WRITE ( * , * ) 'Error in FO2ABF. IFAIL = ' , IFAIL ELSE WRITE ( * , * ) 'Eigenvalues' WRITE ( * , * ) (R(1),I=l,N) WRITE ( *, *) 'Eigenvectors' DO I = 1, N WRITE ( * , * ) ( V ( 1 , J) ,J=l,N) end do endif Volumegroei van de hartspier end if if (ichois .eq. 2) then end if if (ichois .eq. 3) then write(*,*) 'Calculating second invariant' end if if (ichois .eq. 4) then Emodl nu1 = = 5d6 0.48d0 lambda = (Emodl*nul)/ ( (ldO+nul)* (ld0-2dO*nul)) do I = 1,3 v3 (I) = OdO end do if (ichois. eq.5) then c write(*,*) 'Calculating second invariantr if (ichois .eq. 6 ) then if ( (abs(773(1)) end if ) .It. 0.0005) then Volumegroei van de hartspier call eropen call erclos end + 'fnspvc' ) 'fnspvc' ) ( ( subroutine fnmateri (ichoice, s, se, eps, detf, matpar, makese , tl , x) C c last changed 05-02-98 3D-team (Mascha, Marielle, Liesbeth) 30-3-1999 Roy Kerckhoffs c ................................................................ FNMATERI : routine for ELM250. Non-linear material behaviour. : c DESCIPTION (GENERAL) Compute 2nd-Piola-Kirchoff stress and tangent stiffness from given Green-Lagrange strains. DESCIPTION (SPECIFIC) Constitutive model used for passive muscle tissue by Peter Bovendeerd, Sander Gielen, and Jons Rijcken. Based on strain energy density function w: =ws+wv ws = aO*exp(al*il**2 + a2*i2 + a3*ell**2 + a4*(e12**2+e13**2)) wv = as* (det(Fc.F)-1)"2 = a5* (det(c)-1)"2 W adapted from skeletal muscle fnmateri by Sander Gielen I/O eps i i detf matpar i makese i tl X 2nd-PK-stresses. s(j) : j: component (1=11, 2=22, 3=33, 4=12, 5=23, 6=31) tangential matrix. se (i,j ) : i,j components (symmetric!) Green-Lagrange strains eps (i) : i : components (symmetric! ) ; determinant of deformation gradient material parameters (User defines!) se must be computed (true) or not (false) i local nodal point number i global coordinates of local nodal point = x(8,3) C logical makese double precision s(6), se(6,6), eps(6), f (3,3),detf,matpar(*) integer i,j , ichoice, tl double precision aO, al, a2, a3, a4, a5, a12, al3, a24, & il, i2, wexp, ws, d, detc, Tstress, Tostress, & tactive, & c(6), dws(6), dwv(6), ddws(6,6), ddwv(6,6), & dTdE, pi, x(8,3) Tstress = Second Piola-Kirchhoff active stress [kPal TOstress = First Piola-Kirchhoff active stress [kPal dTdE = Differentiation of T to first Green-Lagrange strain Ell tactive = time at which contraction is activated include '/usr/local/sepran/common/ctimen' write write (*,*) (*,*) x= I , x(t1,l) tl= I , tl material parameters a0 = matpar (1) a1 = matpar (2) a2 = matpar (3) a3 = matpar (4) a4 = matpar ( 5 ) a5 = matpar (6) Volumegroei van de hartspier c ==== c === Initialisation Tstress = OdO dTdE = OdO computation of stresses c - - - part from ws invariants of strain tensor eps il i2 & eps(1) + eps(2) + eps(3) eps (4)*eps (4) + eps (5)*eps (5) + eps (6)*eps (6) - eps (1)*eps (2) - eps (2)*eps (3) - eps ( 3 ) *eps (1) = = wexp = al*il*il + a2*i2 + a3*eps(l) *eps (1) + a4* (eps(5)*eps (5)+eps (6)*eps (6)) & ws = aO*exp ( wexp ) derivatives of ws with respect to strains. because of symmetry, count derivatives to shear strains only half. dws (1)= 2dO*al3*eps(1) + a12* (eps(2)+eps (3)) dws (2)= 2dO*al *eps (2) + al2* (eps(3)+eps (1)) dws (3)= 2dO*al *eps (3) + al2* (eps(1)+eps (2)) dws(4)= a2 *eps(4) a24*eps (5) dws (5)= dws (6)= a24*eps (6) part from wv from Green-Lagrange to Cauchy-Green strains c (1)=2dO*eps(1)+ld0 c (2)=2dO*eps(2)+ld0 c (3)=2dO*eps(3)+ld0 c (4)=2dO*eps(4) c (5)=2dO*eps(5) c (6)=2dO*eps(6) derivatives of wv with respect to eps equal two times derivatives to c total stresses do 30 i=1,6 s(i) = dws(i) *ws & + dwv(i) *d continue c c c C c c Add active stress if (t .gt. tactive) then call fnactive (Tstress, dTdE, eps, x(tl,1),x(tl,2), x (tl,3),tactive) s (1) = s(1) + Tstress end if ============= & Volumegroei van de hartspier c === computation of stiffness if ( makese ) then do 100 i=1,6 do 110 j=1,6 ddws(i,j) ddwv(i,j) continue continue 110 100 c --- c c = = OdO OdO part from ws 2nd derivatives of ws to eps ddws(1,l) = 2*a13 ddws(l,2) = a12 ddws(l,3) = a12 ddws (2,1) = a12 ddws(2,2) = 2*al ddws(2,3) = a12 ddws(3,l) = a12 ddws(3,Z) = a12 ddws(3,3) = 2*al ddws(4,4) = a2 ddws(5,5) = a24 ddws(6,6) = a24 --- c part from wv 2nd derivatives of wv to eps c - - - compose tangent stiffness matrix do 40, i=1,6 do 50, j=1,6 se(i,j) = (ddws(i,j) +dws(i)*dws(j) )*ws + ddwv(i,j)*d + dwv(i)*dwv(j)*ZdO*a5 continue continue & 50 40 c c c c ======= Add active stiffness if (t .gt. tactive) then se(1,l) = se(1,l) + dTdE end if end if c - - - end fnmateri return end Volumegroei van de hartspier Bijlage 3 : Probleemdefinitie-bestand *-------------------------------------------------------==--------------....................................................... * problem definition * Probleem definitie voor verjongde trekstaaf met bricks *--------------------------------------------------------=---------------........................................................ * PROBLEEMl - Vaste stof problem types elgrpl, (type=250) natbouncond bngrpl, (type=251) bounelements belml = surfaces (s2) essbouncond * degfdl, degfd2, degfd3=points(p4) degfdl = surfaces (sl) degfd2 = surfaces (s3) degfd3 = surfaces (235) end essential boundary conditions end * Read coefficients problem coefficients elgrpl (nparm=45) icoef 2 = 10 # icoef 4 = 132 # fnmateri bijgevoegd: coef 6 = 0.5 coef 7 = 3.0 coef 8 = 6.0 coef 9 = 3.0 coef 10 = 0.0 coef 11 = 50.0 bngrpl (nparam=25) icoefl = 2 coef6 = -0.3 end # igprob=O (3D stress) # inonlin=l (fysisch en geometrisch # niet-lineair, alleen globale anisotr.) # imateri=2 (exponentieel materiaalgedrag) # icomprs=3 # iadd=l # Apply load in coordinate direction # opgelegde kracht * PROBLEEM2 - Poisson-vgl problem types elgrpl, (type=800) natbouncond bngrpl, (type=123) npelm = 4 bounelements belml = surfaces (s3, s5) essboundcond surfaces (s4) end essential boundary conditions end * Read coefficients problem 2 coefficients elgrpl (nparm=20) icoefl = 0 # not yet used # no upwinding icoef2 = 0 icoef3 = 3 # default integration scheme icoef4 = 0 # coordinate system # standard equation icoef5 = 0 coef6 = lOdO # alpha-11 coef7 = OdO # alpha-12 coef8 = OdO # alpha-13 coef9 = lOdO # alpha-22 coeflO = OdO # alpha-23 Volumegroei van de hartspier coefll = lOdO # alpha-33 coefl2 = OdO # v-1 coefl3 = OdO # v-2 coefl4 = OdO # V-3 coefl5 = OdO # beta coefl6 = old solution 2 , degree of freedom 1, coef (func=l) coefl7 = OdO # rho c g coefl8 = OdO # not yet used coefl9 = OdO # not yet used # not yet used coef2O = OdO bngrpl (nparam=15) icoefl = 2 # type of natural boundary condition icoef2 = 0 # not yet used icoef3 = 0 # type of numerical integration # type of co-ordinate system icoefd, = 0 icoef5 = 0 # not yet used coef6 = 0 # sigma # h coef7 = 0 coef8 = lOdO # alpha-11 # alpha-12 coef9 = OdO coeflO = OdO # alpha-13 coefll = lOdO # alpha-22 coefl2 = OdO # alpha-23 # alpha-33 coefl3 = lOdO coefl4 = 0 # not yet used # not yet used coefl5 = 0 end f I 1 * ~teratiefoplossen usolve solve end { I I i solve end . N-maal herhalen * Poisson-vergelijkingen f * Iteratief oplossen usolve 1 solve end I { I * Poisson-vergelijkingen i solve end I output end end