Volumegroei van de hartspier - Pure

advertisement
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
Download