Modellering van multilayer geweven...

154
Vakgroep Mechanische Constructie en Productie Voorzitter: prof.dr.ir. Joris Degrieck Modellering van multilayer geweven draadstents door Willem Coppens Promotor: Prof.dr.ir. Benedict Verhegghe Co-promotor: Prof.dr.ir. Rudy Van Impe Scriptiebegeleider: ir. Matthieu De Beule Scriptie ingediend tot het behalen van de graad van burgerlijk bouwkundig ingenieur Academiejaar 2006–2007

Transcript of Modellering van multilayer geweven...

Page 1: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Vakgroep Mechanische Constructie en Productie

Voorzitter: prof.dr.ir. Joris Degrieck

Modellering van multilayer gewevendraadstents

door

Willem Coppens

Promotor: Prof.dr.ir. Benedict Verhegghe

Co-promotor: Prof.dr.ir. Rudy Van Impe

Scriptiebegeleider: ir. Matthieu De Beule

Scriptie ingediend tot het behalen van de graad van

burgerlijk bouwkundig ingenieur

Academiejaar 2006–2007

Page 2: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force
Page 3: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Vakgroep Mechanische Constructie en Productie

Voorzitter: prof.dr.ir. Joris Degrieck

Modellering van multilayer gewevendraadstents

door

Willem Coppens

Promotor: Prof.dr.ir. Benedict Verhegghe

Co-promotor: Prof.dr.ir. Rudy Van Impe

Scriptiebegeleider: ir. Matthieu De Beule

Scriptie ingediend tot het behalen van de graad van

burgerlijk bouwkundig ingenieur

Academiejaar 2006–2007

Page 4: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen vande scriptie te kopieren voor persoonlijk gebruik.Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met be-trekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultatenuit deze scriptie.

Gent, juni 2007

Willem Coppens

Page 5: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Dankwoord

Een thesis schrijven is een uitdagende opdracht. Een uitdaging die niet vanzelfsprekend is.Alle hulp en steun zijn dan ook van onschatbare waarde.

Zonder de deskundige begeleiding en richtinggevende adviezen van Matthieu De Beule enProf. dr. ir. Benedict Verhegghe was dit werk zeker niet tot stand kunnen komen. Ook wensik mijn co-promotor dr. ir. Rudy Van Impe te bedanken voor de kans die me gegeven werdom dit uiterst interessant onderwerp te kunnen bestuderen.

Ik bedank ook in de eerste plaats mijn ouders, voor hun onnavolgbare steun, begrip en liefde.Zonder hen was deze studie en in het bijzonder dit afstudeerwerk nooit gelukt.

Verder wens ik mijn broer en al mijn vrienden te bedanken voor de morele steun en vele leuketijden die ze me de afgelopen maanden en jaren gegeven hebben.

Page 6: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

iii

Modellering van multilayer geweven draadstents

doorWillem Coppens

Afstudeerwerk ingediend tot het behalen van de graad van burgerlijk bouwkundig ingenieur

Academiejaar 2006–2007

Universiteit GentFaculteit Ingenieurswetenschappen

Promotor: Prof.dr.ir. Benedict VerheggheCo-promotor: Prof.dr.ir. Rudy Van ImpeScriptiebegeleider: ir. Matthieu De Beule

Samenvatting

Hart- en vaatziekten zijn wereldwijd de voornaamste doodsoorzaak [21]. Door middel vanstent implantaties kunnen twee van deze ziektes behandeld worden: aneurisma’s en stenosis.De stent, een kleine cilindervormig buis, wordt geexpandeerd in een verzwakte of vernauwdearterie van het lichaam en herstelt de natuurlijke bloedstroom. Stents worden ook gebruiktin andere natuurlijke kanalen zoals, de luchtwegen, de slokdarm, de prostaat, de ureter, . . . .Er bestaan twee types stents; de ballonexpandeerbare stent en de zelf-expandeerbare stent.De multilayer geweven draadstent behoort tot het laatste type. Kenmerkend aan deze stentis zijn opbouw uit draden die in meerdere lagen verweven zijn. Op dit moment is er - totonze kennis - nog geen enkel numeriek of experimenteel onderzoek verricht over multilayergeweven draadstents. Het eindige elementen model dat in deze scriptie gecreeerd wordt, isgebaseerd op een prototype stent, de ST202: 320-80-01 ontwikkeld door Cardiatis.Het eindig elementen model wordt aangemaakt door een combinatie tussen pyFormex, pythonen Abaqus. De resultaten wordt visueel voorgesteld door gebruik te maken van gnuplot. Hethele proces gebeurt parametrisch. Dit maakt het mogelijk om eenvoudig parameterstudieste verrichten. Binnen deze parameterstudies worden de verschillende parameters, die destentopbouw bepalen, gevarieerd. Dit gebeurt voor verscheidene belastingsgevallen zodat eenbeeld gevormd wordt over het mechanische gedrag van de multilayer geweven draadstent. Demultilayer wordt vergeleken met de singlelayer geweven draadstent. Waarbij opvalt dat desinglelayer draadstent een overeenstemmend verloop van mechanisch gedrag vertoont.

Trefwoorden: modellering, multilayer geweven draadstent, pyFormex, Abaqus, parameter-studie

Page 7: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Modelling of multilayer braided wire stentsWillem Coppens

Supervisor(s): Prof. dr. ir. B. Verhegghe, Prof. dr. ir. R. Van Impe, ir. M. De Beule

Abstract—A multilayer braided wire stent is created out of multiple lay-ers of braided wires. The layers themselves are linked by mutually weav-ing wires of each adjacent layer. The stent is self-expandable and helps tokeep open natural conduits inside the body or strengthen weakened conduitwalls. At this moment there has — to the best of our knowledge — not beenany numerical (or experimental) research conducted on multilayer braidedwire stents. Moreover a finite element model is a very valuable tool for stentdevelopment. Such a model is here conceptualized by means of a combina-tion between pyFormex, Python and Abaqus. The results are visualisedwith the use of gnuplot. The numerical results are compared to an exper-iment and analytical data. The experiment was conducted by Cardiatis,the analytical data was obtained by adapting the formulas of the UrolomeWallstent. Finally a parametric study was performed.

Keywords— modelling, multilayer braided wire stent, pyFormex,Abaqus, parametric study

I. INTRODUCTION

Cardiovascular disease is a leading cause of mortality and isresponsible for one-third of all global deaths [1]. Stenting canbring relief for two of these pathologies: aneurysms and steno-sis. The stent is expanded into a weakened or narrowed vesselin the body to restore the natural blood flow. Stents can also beused in the biliary duct, urinary tract, esophageal and the respi-ratory system.

There are two types of stents; the balloonexpandable stentsand the self-expandable stents. The multilayer wove wire stentis of the latter type. At this moment there has — to the bestof our knowledge — not been any numerical or experimentalresearch conducted on multilayer braided wire stents. The mul-tilayer braided wire stent is currently being developed by Car-diatis, a Belgian biomedical company. The finite element modelof the multilayer braided wire stent is based upon a prototypestent, the ST202: 320-80-01, designed by Cardiatis. The path ofthe wires is derived from this prototype. The FE model is buildwith the use of a combination between pyFormex, Python andAbaqus and is based on the work of Neels [2] and Van Loo [3].

II. ANALYTICAL FORMULAS

The analytical formulas created by Jedwab and Clerk [4] andcorrected by Van Loo [3] for the Urolome Wallstent (a single-layer braided wire stent) are adapted to fit the multilayer braidedwire stent. The multilayer braided wire stent is considered to beconstructed out of multiple independent concentric singlelayerwire stents with different diameters. The analytical formulas foreach singlelayer wire stent are known and are reassembled forthe multilayer wire stent as if the singlelayer wire stents weresprings in parallel in the axial direction and springs in series inthe radial direction.

W. Coppens is with the Civil Engineering Department, Ghent University(UGent), Gent, Belgium. E-mail: [email protected] .

KL =∑

i

KL,i Kp =∏

i Kp,i∑i Kp,i

(1)

KL and KL,i are the axial stiffness of resp. the multilayer wirestent and a layer of the multilayer wire stent. Kp and Kp,i arethe radial stiffness of resp. the multilayer wire stent and a layerof the multilayer wire stent.

III. EXPERIMENTAL DATA

Cardiatis conducted an experiment to test the stent ST202:320-80-01. A thin wire is wrapped in a single loop around thecenter of the stent (Fig.1). Both ends of the wire are attachedto a pulling machine. The change in diameter around the centerand the force in the wire is measured. The radial load of thestent was assessed at 0.95N .

Fig. 1. Central radial load

IV. FE MODEL

The geometrical model is build in pyFormex. pyFormexmakes use of formex algebra (a mathematical system that pro-vides simple and elegant conceptual tools for the representationand processing of configurations [5]) to create large 3D framestructures with repeating modules, such as a multilayer braidedwire stent, rather easily. Fig. 2 shows the major steps in the cre-ation of the geometrical model. First, a base cell is build, thencopied in both directions and finally the pattern is folded intothe tubular stent.

Fig. 2. Schematic steps in the construction of the geometrical model

Page 8: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

The geometrical model is processed to the FE model bymeans of a combination between python and Abaqus. The re-sults are visualised with the use of gnuplot.

V. RESULTS

The results of the FE model are compared to the experimentconducted by Cardiatis (section III) (Fig 3) and to the analyticaldata (section II) (Fig. 4). The simulation and experimental curvein Fig. 3 correlate well for a diameter between 8 and 3 mm. Thedifference between the curves grows fast for smaller diameters.This can be due to faults in the model and in the experiment.More experiments are needed to fully understand the behaviorof the multilayer stent and to verify the model.

Fig. 3. Central radial load – stent diameter plot for the ST202:320-80-01 stent

The difference between the simulation and the analyticalcurve in Fig. 4 is small. This can be explained as follows: TheFE model does not take friction between the wires of differentlayers into account, only contact-pressure is transfered. The an-alytical model presupposes there is no connection between thedifferent layers. Both models make more or less the same sim-plification of reality.

Fig. 4. Radial load – stent diameter plot for the ST202:320-80-01 stent

A parametric study was performed based on the stent ST202:320-80-01. The variation of the stent diameter, the wire diame-ter, the number of wires, the pitch angle and the stent length was

examined. The following mechanical behavior was noted: Theradial stiffness increases for smaller stent diameters, larger wirediameters, more wires and larger pitch angles. The radial stiff-ness is independent of the stent length. The axial stiffness in-creases for smaller stent diameters, larger wire diameters, morewires, smaller pitch angles and shorter stents. The foreshort-ening is independent of the wire diameter, the number of wiresand the stent length. However the foreshortening increases forlarger pitch angles and larger stent diameters (fully expanded).The foreshortening is smaller for a stent with a larger diameterthat is not fully expanded than for a stent with a smaller diame-ter that is fully expanded (Fig. 5). These statements are conformto the singlelayer braided wire stent [3].

Fig. 5. Foreshortening – stent diameter plot for different stent diameters (red:6mm, green: 8mm, blue: 10mm)

VI. CONCLUSIONS

The combination of pyFormex, python, Abaqus and gnuplotconstructs a very good pre- and post-processingtool for finiteelement calculations. The model of the multilayer braided wirestent is revolutionary but can still be improved and should betested more in depth. The script based creation of the FE modelmakes parametric studies very easy to perform.

ACKNOWLEDGMENTS

The author would like to acknowledge the support of Prof. dr.ir. B. Verhegghe and ir. M. De Beule.

REFERENCES

[1] World Health Organization The World Health Report, 2002 Reducing risksand promoting healthy life, World Health Organization, Geneva, 2002

[2] Tim Neels, Application and development of pyFormex in the design of largespatial frame structures, Masterthesis Ghent University, 2006

[3] Kim Van Loo, Finite element design and simulation of selfexpandable wirestents, Masterthesis Ghent University, 2006.

[4] Michael R. Jedwab & Claude O. Clerc, A Study of the Geometrical anMechanical Properties of a Self-Expanding Metallic Stent - Theory and Ex-periment, Journal of Applied Biomaterials, 1993.

[5] H. Nooshin & P. Disney Formian 2 Multi-Science Publishing Co Ltd, 1997.

Page 9: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Inhoudsopgave

1 Doelstelling 1

2 Stenting 22.1 Ziektebeeld en stenting procedure . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Indeling stents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.2.1 De ballonexpandeerbare stent . . . . . . . . . . . . . . . . . . . . . . . 32.2.2 De zelf-expandeerbare stent . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3 De multilayer geweven draadstent . . . . . . . . . . . . . . . . . . . . . . . . . 42.3.1 Creatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3.2 Naamgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.3 Voordelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Opbouw van het model 83.1 Python en pyFormex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Overzicht van de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 Opbouw van het geometrisch model . . . . . . . . . . . . . . . . . . . . . . . 10

3.3.1 Opgeven van de parameters . . . . . . . . . . . . . . . . . . . . . . . . 103.3.2 Aanmaken van de draden . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.3 Aanmaken van de connectoren . . . . . . . . . . . . . . . . . . . . . . 193.3.4 Kopieren en oprollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4 Opbouw van het eindige elementen model . . . . . . . . . . . . . . . . . . . . 213.4.1 Opgeven van de parameters . . . . . . . . . . . . . . . . . . . . . . . . 223.4.2 Inlezen geometrisch model . . . . . . . . . . . . . . . . . . . . . . . . . 233.4.3 Randvoorwaarden en belastingen . . . . . . . . . . . . . . . . . . . . . 233.4.4 Materiaal eigenschappen . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.5 Wegschrijven data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4.6 Aanmaken post-processor bestand . . . . . . . . . . . . . . . . . . . . 30

3.5 Opstellen analytische formules . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5.1 Belasting door axiale trekkracht . . . . . . . . . . . . . . . . . . . . . 323.5.2 Belasting door radiale druk . . . . . . . . . . . . . . . . . . . . . . . . 323.5.3 Axiale stijfheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5.4 Radiale stijfheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

vi

Page 10: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Inhoudsopgave vii

3.5.5 Verhouding draadoppervlakte . . . . . . . . . . . . . . . . . . . . . . . 343.5.6 Implementatie in python scripts . . . . . . . . . . . . . . . . . . . . . 34

3.6 Verwerking van de data: de post-processing . . . . . . . . . . . . . . . . . . . 343.6.1 Aanpassingen bij het verwerken van de resultaten . . . . . . . . . . . 353.6.2 Berekening van de belastingen . . . . . . . . . . . . . . . . . . . . . . 36

4 Resultaten 374.1 Cardiatis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.1.1 Experimentele proefopstelling . . . . . . . . . . . . . . . . . . . . . . . 374.1.2 Ringbelasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.1.3 Data Cardiatis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2 Vergelijking van het model met het experiment . . . . . . . . . . . . . . . . . 404.3 Vergelijking van het model met de analytische resultaten . . . . . . . . . . . . 434.4 Vergelijking met de singlelayer geweven draadstent . . . . . . . . . . . . . . . 44

4.4.1 Singlelayer geweven draadstent met zelfde parameters . . . . . . . . . 454.4.2 Singlelayer geweven draadstent met zelfde eigenschappen . . . . . . . 47

4.5 Aanpassingen aan het model . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.6 Parameterstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.6.1 Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.6.2 Naamgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.6.3 Bespreking parameterstudie . . . . . . . . . . . . . . . . . . . . . . . . 544.6.4 Variatie van de draaddiameter . . . . . . . . . . . . . . . . . . . . . . 564.6.5 Variatie van het aantal draden . . . . . . . . . . . . . . . . . . . . . . 584.6.6 Variatie van de pitch-hoek . . . . . . . . . . . . . . . . . . . . . . . . . 604.6.7 Variatie van de stentdiameter . . . . . . . . . . . . . . . . . . . . . . . 624.6.8 Variatie van de stentlengte . . . . . . . . . . . . . . . . . . . . . . . . 64

5 Besluit 67

A Handleiding tot het gebruik van de multilayer draadstent scripts 69A.1 Stap 1: Meegeven parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . 69A.2 Stap 2: Aanmaken Abaqus input bestand . . . . . . . . . . . . . . . . . . . . 70A.3 Stap 3: Uitvoeren eindige elementen simulatie . . . . . . . . . . . . . . . . . . 70A.4 Stap 4: Post-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

B ”Slide-plane”connectoren 73B.1 1e model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

B.1.1 con SP m01 cyl f.inp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73B.1.2 con SP m01 cyl f rotatie.inp . . . . . . . . . . . . . . . . . . . . . . . 74

B.2 2e model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Page 11: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Inhoudsopgave viii

B.2.1 con SP m02 cyl f rad.inp . . . . . . . . . . . . . . . . . . . . . . . . . 75B.2.2 con SP m02 cyl d tan.inp . . . . . . . . . . . . . . . . . . . . . . . . . 77B.2.3 con SP m02 cyl d z.inp . . . . . . . . . . . . . . . . . . . . . . . . . . 78

B.3 Opmerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80B.4 De Abaqus input files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

B.4.1 con SP m01 cyl f.inp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80B.4.2 con SP m01 cyl f rotatie.inp . . . . . . . . . . . . . . . . . . . . . . . 81B.4.3 con SP m02 cyl f rad.inp . . . . . . . . . . . . . . . . . . . . . . . . . 83B.4.4 con SP m02 cyl d tan.inp . . . . . . . . . . . . . . . . . . . . . . . . . 85B.4.5 con SP m02 cyl d z.inp . . . . . . . . . . . . . . . . . . . . . . . . . . 87

C Experimentele data Cardiatis 89

D Overzicht van de python-scripts 90D.1 WireStent Multilayer data.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 90D.2 WireStent Multilayer param.py . . . . . . . . . . . . . . . . . . . . . . . . . . 92D.3 WireStent Multilayer model.py . . . . . . . . . . . . . . . . . . . . . . . . . . 98D.4 properties.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102D.5 f2abq.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108D.6 WireStent Multilayer post.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 121D.7 WireStent Multilayer anal.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Lijst van figuren 136

Lijst van tabellen 139

Bibliografie 140

Page 12: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Lijst van afkortingen

EEM Eindig Elementen Model

GUI Graphical User Inteface

ix

Page 13: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Verklarende woordenlijst

Abaqus Een bekend en zeer uitgebreid programma voor eindige elementen bere-keningen.

Cardiatis Een Waals biomedisch bedrijf, gespecialiseerd in het maken van gewevendraadstents.

dictionary Een datatype in Python, bestaande uit een verzameling key:value paren.

foreshortening Het verschil in lengte van de stent voor en na plaatsing. Dikwijls uitge-drukt als een percentage ten opzichte van de initiele lengte.

Formex Een elegante en zeer efficiente manier om een groep elementen uit eenstructureel systeem te noteren. Op deze Formex kunnen bewerkingenuitgevoerd worden.

functie Een benoemde sequentie van statements die samen een bepaalde taakuitvoeren.

gnuplot Een veelzijdig command-line programma waarmee grafieken kunnen ge-genereerd worden op basis van data en wiskundige functies.

input-file Een bestand dat alle nodige informatie bevat dat een programma nodigheeft. Met betrekking tot Abaqus is dit dus een file die alle gegevensbevat die vereist zijn om een analyse uit te voeren.

pitch-hoek De hoek die de draden van een geweven draadstent maken met een vlakloodrecht op de lengte as van de stent.

pyFormex Een programma gesteund op Formex-algebra. Het is voornamelijk ge-richt op de modellering van omvangrijke ruimtelijke constructies.

Python Een interpreterende, object-georienteerde programmeertaal.

script Een opeenvolging van statements die in een bestand opgeslagen zijn.

x

Page 14: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 1

Doelstelling

Het doel van onderhavige tekst wordt kort geschetst.

� De structuur van een multilayer geweven draadstent toelichten, de verschillende stappenvan het weefproces overlopen en de belangrijkste voordelen aanhalen.

� De geometrie van de stent modelleren in pyFormex met behulp van python-scripts. Heteindig elementen model opstellen uit deze geometrie via een combinatie van python-scripts.

� Analytische formules opstellen die het gedrag van de multilayer geweven draadstentbenaderen.

� De resultaten uit het EEM en de analytische formules grafisch weergeven.

� Het EEM vergelijken met een eerste experiment en met het analytische model.

� De multilayer geweven draadstent vergelijken met de singlelayer geweven draadstent.

� Een parameterstudie uitvoeren zodat een beeld gevormd wordt over het mechanischegedrag van de multilayer geweven draadstent.

1

Page 15: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2

Stenting

2.1 Ziektebeeld en stenting procedure

Een stent is een kleine cilindervormig buis die in het lichaam geımplanteerd wordt om ver-nauwingen of verzwakkingen van natuurlijke kanalen te behandelen. De stent drukt de ver-nauwing open en verhindert het kanaal terug te veren. In een verzwakte arterie verbetert destent de bloedstroom en helpt het barsten van de arteriewand te vermijden. Stents wordengebruikt in de slagaders, de luchtwegen, de slokdarm, de prostaat, de ureter, . . . .

Alvorens de stent in het lichaam te brengen, wordt deze in diameter verkleind en op een ka-theter bevestigd. De stent en katheter worden dan via een incisie in het lichaam, gebruikelijkter hoogte van lies, arm of pols, in het lichaam gebracht. Eenmaal de stent zich op de juistepositie bevindt, zal de stent moeten ontplooien [2]. Dit gebeurt via het opblazen van eenballon en/of spontaan (zie infra). Voor meer informatie over het ziektebeeld en de stentingprocedure wordt verwezen naar de vakliteratuur.

Figuur 2.1: Stent in een arterie [7] (links) en Wallstent [3] (rechts)

2.2 Indeling stents

Stents worden meestal ingedeeld volgens ontplooiingsmechanisme in twee fundamentele groe-pen: de ballonexpandeerbare stents en de zelf-expandeerbare stents.

2

Page 16: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2. Stenting 3

2.2.1 De ballonexpandeerbare stent

De ballonexpandeerbare stent wordt op een opgevouwen ballon en een katheter gekrompen.Wanneer de stent zich ter hoogte van het letstel bevindt, wordt de ballon opgeblazen enduwt hij stent en slagader open. De stent vervomt plastisch en behoudt ongeveer zijn vormna verwijdering van de ballon (Figuur 2.2).

Figuur 2.2: Principe ballonexpandeerbare stents [13]

2.2.2 De zelf-expandeerbare stent

De zelf-expandeerbare stent wordt in samengedrukte vorm op een katheter geplaatst. Overde stent bevindt zich een terugtrekbaar omhulsel. Eenmaal de stent zich ter hoogte van hetletsel bevindt, wordt dit omhulsel teruggetrokken. De stent wordt niet meer samengedrukten zal spontaan ontplooien (Figuur 2.3). Deze stents verlenen hun mogelijkheid tot zelfont-plooiing aan hun opbouw en/of aan superelastische materiaaleigenschappen - mogelijks met

Page 17: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2. Stenting 4

vormgeheugen, zoals nitinol1. De draadstent behoort tot deze groep. Voor een overzichtvan de verschillende soorten zelf-expandeerbare stens wordt verwezen naar de scriptie vanVan Loo [16].

Figuur 2.3: Ontplooiing zelfexpandeerdbare stent: Wallstent [3]

De expansie van een zelfexpandeerbare stent gebeurt elastisch. Dit heeft het voordeel, tenopzichte van de plastische expansie bij ballonexpandeerbare stents, dat wanneer het kanaal,waarin de stent zich bevindt, samengedrukt wordt, deze na verwijdering van de samendruk-kende kracht terug elastisch zal uitzetten. Deze eigenschap wordt ’crush-resistance’ genoemd.Dankzij deze eigenschap zal een zelfexpandeerbare stent de voorkeur krijgen in de halsslag-ader [8]. De halsslagader wordt immers niet beschermd tegen externe drukken (bv. hetaanspannen van een das rond de nek).

2.3 De multilayer geweven draadstent

Een geweven draadstent is opgebouwd uit verschillende draden die onderling met elkaar ver-bonden zijn door een geweven structuur, zoals bij een textiel, en samen een buisvormig geheelvormen. De multilayer geweven draadstents bestaan uit meerdere lagen geweven draden. Deverbinding tussen de lagen gebeurt door draden uit verschillende lagen onderling te verwe-ven (Figuur 2.4). Deze opbouw leidt tot de zelf-expandeerbare eigenschap van de stent. Dedraden van de stents bestaan meestal uit het materiaal phynox2 of nitinol.

Het idee om meerdere lagen te gebruiken komt van het bedrijf Cardiatis3. Dankzij de struc-tuur zou de weerstand op lange termijn en de stevigheid van de stent vergroten. Het is debedoeling om uiteindelijk een stent te ontwerpen die een hoge radiale stijfheid bezit met eenbeperkte foreshortening.

1Dit is een nikkel-titaan legering. Belangrijkste eigenschappen zijn het vormgeheugen en de superelasticiteit

van het materiaal. Het vormgeheugen zorgt ervoor dat nitinol bij opwarming zijn oorspronkelijke vorm aan-

neemt, het materiaal onthoudt als het ware zijn vorm. De superelasticiteit maakt grote elastische vervomingen

mogelijk [11].2Ook genaamd Elgiloy. Dit is een cobalt-chroom-nikkel legering. Dit materiaal heeft een hoge sterkte, een

goede temperatuur- en corrosieweerstand en een goede biocompabiliteit [1]. Deze eigenschappen maken elgiloy

een veelgebruikte legering in de biomedische praktijk.3Cardiatis is een Waals biomedisch bedrijf. Het ontwikkelt een nieuwe generatie van stents, de 3D structure

stents, gemaakt van verschillende lagen die door elkaar gevlochten zijn [4].

Page 18: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2. Stenting 5

Figuur 2.4: Simulatie multilayer geweven draadstent

2.3.1 Creatie

De opbouw van een meerlagige draadstent gebeurt met een weefmachine. Figuur 2.5 toontdergelijke weefmachine in gebruik bij Cardiatis4. Hieronder wordt de weef procedure geschetstop basis van figuur 2.5.

Figuur 2.5: Weefmachine draadstent

� Op het verticale rad bevinden zich verschillende plaatsen waarop spoelen met draad(phynox of nitinol) geplaatst worden. Niet op alle plaatsen zit een spoel. Het aantalspoelen wordt bepaald door het aantal draden waaruit de draadstent is opgebouwd(Figuur 2.6).

4Het betreft hier een weefmachine voor eenlagige draadstents, deze werkt volgens hetzelfde principe.

Page 19: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2. Stenting 6

� Cardiatis heeft software ontwikkeld die het pad van de draden (en dus de opbouw van dedraadstent) voorspelt vertrekkende van de posities waarop de spoelen geplaatst worden.

� Verschillende stentontwerpen worden gesimuleerd door de posities van de spoelen tewijzigen. Een aanvaardbare simulatie wordt door de weefmachine omgezet in een pro-totype stent.

� De draden worden op een staaf geweven, dit gebeurt door het draaien van het rad enhet verschuiven van de staaf. De snelheid waarmee dit gebeurd, volgt uit de softwareen de mogelijkheden van de weefmachine.

� In een laatste stap ondergaat de stent een nabehandeling waardoor de pitch-hoek5 vande stent gewijzigd wordt. Deze nabehandeling bestaat uit het uitrekken en fixeren vande stent. Tijdens deze bewerking verandert ook de diameter van de stent. De diametervan de stent is dan afhankelijk van de diameter van de staaf waarrond de stent gewevenwordt en van de nabehandeling.

(a) (b)

Figuur 2.6: Configuratie spoelen: 320 draden (volledige bezetting) (a) en 40 draden (b)

2.3.2 Naamgeving

Cardiatis geeft elke stent een naam op basis van de geometrie en opbouw van de stent. Denaam bestaat uit drie getallen. Het eerste getal in de naam slaat op het gebruikte weeftoestelen het maximaal aantal posities waar een klos draad zich kan bevinden. Het tweede getal deelthet effectief aantal gebruikte posities mee. Het laatste getal bepaalt de geometrie. Zo kan de

5of pitch-angle. Pitch is een Engels woord en kan vertaald worden als spoed of pas. In de literatuur

rond geweven draadstents is het een veel voorkomende benaming, in deze tekst wordt de Engelstalige term

weerhouden. Dit is de hoek die de draden maken met een vlak loodrecht op de lengte as van de stent.

Page 20: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 2. Stenting 7

naam 320-80-01 als volgt worden verklaard: er wordt gebruik gemaakt van een weeftoesteldat op maximaal 320 posities een klos draad kan bevatten. Er zijn echter slechts 80 positieseffectief bezet. Bijgevolg bestaan er verschillende configuraties, en deze is de eerste (Figuur2.7).

Figuur 2.7: Principeschets van de doorsnede (links) en configuratie 320-80-01 (rechts)

2.3.3 Voordelen

De uit verschillende gekoppelde lagen bestaande structuur van de stent heeft enkele voordelenen mogelijkheden [4]:

� Aanpassen van het aantal lagen van de structuur aan de natuur van de slagader, zijnmorfologie, zijn grootte en zijn lokalisatie. (Verschillende slagaders bezitten niet alle-maal dezelfde hemodynamische6 eigenschappen, zijn niet onderhevig aan dezelfde span-ningen en ontwikkelen niet dezelfde aandoeningen.).

� Stents ontwerpen aanpasbaar aan iedere wijdte van slagader, meer bepaald stents meteen diameter gaande van 5 tot 50 mm.

� Stents creeren van dezelfde lengte als het letsel.

� Een robuuste en geıntegreerde structuur bekomen om aneurysma van abdominale ofborstslagader te behandelen.

� Een kleiner release systeem gebruiken dan deze die nu voor standaard stents gebruiktworden. Dit is een van de onverwachte voordelen van het concept.

� Beschikken over een actieve stent met een dubbele wand. Dit laat toe de schuifkrachten,langs de slagaderwand, te vermeerderen.

6Hemodynamica is de leer van de krachten gegenereerd door het hart en de resulterende stroming van bloed

door het cardiovasculair stelsel [12].

Page 21: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3

Opbouw van het model

In deze scriptie wordt getracht een eindig elementen model op te stellen voor de multilayergeweven draadstent. Volgende paragrafen bespreken de gebruikte computerprogramma’s ende aanwending binnen de modellering, de interactie tussen de verschillende scripts, de opbouwvan het model en de scripts.

3.1 Python en pyFormex

Python is een dynamische object-georienteerde programmeertaal. Het vormt de basis voorde automatisatie van de modellering: de scripts.

pyFormex is een programma dat toelaat grote geometrische 3D modellen te genereren door eenopeenvolging van wiskundige transformaties. Het is een Python implementatie van Formexalgebra1. Het is bijzonder geschikt voor het geautomatiseerd ontwerp van ruimtelijke staafconstructies. Maar het kan ook gebruik worden voor andere taken zoals eindige elementenpre-processing of enkel voor het maken van mooie figuren (Figuur 3.1). Met pyFormex kanop een eenvoudige wijze de geometrie van de draadstent gecreeerd worden.

Voor meer informatie over Python en pyFormex wordt verwezen naar de scriptie van Neels[14], de Python website [17] en de pyFormex website [19]. De uiteindelijke eindige elementenprocessing gebeurt door het softwarepakket Abaqus.

Figuur 2.1: Hetzelfde script, verschillende domes

2.2 Python

2.2.1 Inleiding

Aangezien pyFormex werkt met de programmeertaal Python, zullen ook de scripts in Pythongeschreven moeten worden. Daarnaast zullen ook de uitbreidingen van pyFormex die in het kadervan dit werk gerealiseerd worden, gebruik maken van Python. Een korte introductie van dezeprogrammeertaal is hier dan ook op zijn plaats. Indien men na doornemen van onderstaande,bondige inleiding meer wil weten over Python, zijn de zeer goede tutorial [2] en library reference[3] van Van Rossum aan te raden.

Python is een eenvoudig te leren, krachtige, object-georienteerde programmeertaal, met efficientehigh-level datastructuren. Het is een geınterpreteerde taal, wat wil zeggen dat het niet nodigis om de broncode te laten compileren. Net zoals in andere hogere orde programmeertalen, kanmen werken met objecten en klassen.

Programma’s kunnen geschreven worden in eender welke tekst-editor en opgeslagen met de ex-tensie .py. Het programma kan men laten dan laten lopen door python programmanaam.py inte typen in een shell.

Enkele algemene opmerkingen over Python:

� Inspringing is essentieel in Python. Inspringing is de manier om statements te groeperen.

� Het is mogelijk om programma’s op te splitsen in verschillende modules, die dan in hetprogramma geımporteerd worden.

� Alles wat volgt op het kararter ”#”wordt door Python beschouwd als commentaar.

� Python is hoofdlettergevoelig.

2.2.2 Getallen

De operators +, -, *, / werken hetzelfde als in de meeste andere programmeertalen. Haakjeskunnen gebruikt worden om uitdrukkingen te groeperen. Het ’is gelijk’-teken '=' wordt gebruiktom een waarde toe te kennen aan een variabele. Het resultaat van een toekenning wordt nietafgedrukt:

3

Figuur 3.1: Ruimtelijke structuren gecreeerd door pyFormex

1Formex algebra is een wiskundig systeem dat simpele en elegante conceptuele werktuigen biedt voor de

voorstelling en verwerking van configuraties[15]

8

Page 22: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 9

3.2 Overzicht van de scripts

De python scripts creeren het geometrische model, maken een bestand aan dat door Abaquswordt ingelezen en verwerkt tot het eindige elementen model en zorgen voor de post-processing.Al deze scripts werken samen, deze paragraaf geeft een overzicht en verduidelijkt de wisselwer-king. De individuele scripts worden verder in dit hoofdstuk besproken. De volledige scriptszijn terug te vinden in bijlage.

Figuur 3.2: Schema interactie python scripts

De koppeling tussen de gebruikte scripts wordt voorgesteld in Figuur 3.2. Via het scriptWireStent Multilayer data.py wordt de begindata meegegeven en het script WireStent Multi-layer param.py opgeroepen. Dit laatste script vormt de ruggengraat van de pre-processing.Het maakt gebruik van het script WireStent Multilayer model.py om de functie Multilayer

Page 23: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 10

in te laden. Via deze functie wordt het geometrisch model aangemaakt. Na het inladen vande modules f2abq.py en properties .py kan WireStent Multilayer param.py de pre-processingbeeindigen en twee bestanden aanmaken. Dit zijn een Abaqus input bestand (jobnaam.inp)en een Python script (jobnaam.post.py) dat gebruikt wordt om de post-processing uit tevoeren. Het Abaqus input bestand wordt vervolgens door Abaqus verwerkt, waardoor - onderandere - jobnaam.odb en jobnaam.dat files verkregen wordt. Dit verwerken gebeurt door hetAbaqus input bestand op de rekencluster2 te plaatsen. De rekencluster voert de job uit en deresultaten worden opgeslaan. Het jobnaam.odb bestand kan binnen Abaqus geopend wordenen geeft de stent en de belastingsstappen grafisch weer. Het jobnaam.dat bestand wordtverwerkt door het eerder bekomen jobname.post.py post-processor script. Dit laatste scriptmaakt gebruik van het script WireStent Multilayer post.py en WireStent Multilayer anal.py

(voor het creeren van analytische data) om de data, gnu en tenslotte de png bestanden aante maken. Een voorbeeld is uitgewerkt in bijlage A.

3.3 Opbouw van het geometrisch model

Het opbouwen van het geometrisch model van de multilayer geweven draadstent gebeurt inhet script WireStent Multilayer model.py. Hierin wordt de klasse Multilayer aangemaaktzodat het geometrisch model, mits opgave van de benodigde parameters, ook in andere scriptskan gebruikt worden.

3.3.1 Opgeven van de parameters

De klasse begint met een ”documentatiestring”, die uitlegt verschaft over het doel en dewerking van de klasse.

Script 3.1: Opbouw Multilayermodel: begin parameters

45 c l a s s Mu l t i l a y e r :

46 ””” Crea te a m u l t i l a y e r s t e n t .

47

48 A s t e n t i s a t u b u l a r shape such as used f o r open ing ob s t r u c t e d

49 b lood v e s s e l s . Th i s s t e n t i s made frome s e t s o f w i r e s

s p i r a l i n g

50 i n two d i r e c t i o n s .

51 The geometry i s d e f i n e d by the f o l l o w i n g pa ramete r s :

52 L : l e n g t h o f the s t e n t

53 De : e x t e r n a l d i amete r o f the s t e n t

54 D : ave rage s t e n t d i amete r

55 d : w i r e d i amete r

56 be : p i t c h ang l e ( d eg r e e s )

57 p : p i t c h

58 nw : t o t a l number o f w i r e s

2De rekencluster (The BuMPer cluster[20]) bestaat uit een groep computers die samen berekeningen uit-

voeren.

Page 24: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 11

59 nx : number o f w i r e s i n one s p i r a l s e t

60 ny : number o f modules i n a x i a l d i r e c t i o n

61 dz : maximal d i s t a n c e o f w i r e c e n t e r to ave rage c i l i n d e r

62 nb : number o f e l ement s i n a s t r u t ( a pa r t o f a w i r e between

two

63 c r o s s i n g s ) , d e f a u l t 4 . s hou l d be even .

64 The s t e n t i s c r e a t e d around the z−a x i s .

65 By d e f a u l t , t h e r e w i l l be c onne c t o r s between the w i r e s at each

66 c r o s s i n g . They can be sw i t ched o f f i n the c o n s t r u c t o r .

67 ”””

68 def i n i t ( s e l f , De , L , d , nw , be , nb=4, c onne c t o r s=True , p r o f i l e

=Fa l s e ) :

De constructor init van de klasse Multilayer vereist acht argumenten:

� De uitwendige diameter van de stent De [mm].

� De lengte van de stent L [mm].

� De draaddiameter d [mm].

� Het totale aantal draden nw.

� De pitch-hoek be [deg], de hoek die de draden maken met een vlak loodrecht op hunlengte as. Dit is de hoek β in figuur 3.3.

� Het aantal elementen in een strut nb. Een strut is het stuk van een draad tussen tweekruisingen. Omdat ieder element op zich recht is, moeten er meerdere elementen deeluitmaken van de strut om een vloeiend verloop van de golvende draden te verkrijgen.Meer elementen vergen een grotere rekentijd. Als default blijken vier elementen in eenstrut een deugdelijke aanname.

Abstract- Various mechanical characteristics of stents were analyzed and mathematical models were developed in order to predict expansive pressure of stents. Given the geometry and material properties of a stent, one can utilize these models to predict its expansive pressure properties. Then, these models were verified with the test results derived from some prototype and commercially available stents. The models allow for the characterization of mechanical properties of stents and may be instrumental in developing clinically efficacious stents. Keywords – Self-expandable metal stent, radial expansive pressure, analytic model

I. INTRODUCTION Successful stenting is crucial for maintaining the patency of the organs with luminal obstruction. Three types of stents are commonly used: bare stent (wire only), coated stent (polymer coating on wire), and covered stent (polymer membrane on its peripheral surface). The clinical applicability of these stents largely depends on thorough understanding of their mechanical properties, one of which is radial expansive pressure. In the present study, we propose the mathematical models by which one can predict radial expansive pressures of coated and covered stents.

II. METHODOLOGY A. Bare type Jedwab and Clerc [1] simplified a bare type stent as combination of open-coiled helical springs. Each wire of bare stent was regarded as a spring and the equations for open-coiled helical spring by Wahl [2] was employed for wire model (Fig. 1). We use wire model of Jedwab and Clerc [1] for bare stents and wires for coated and covered stents. In this section, we rearranged the equations for open-coiled helical spring used in the study of Jedwab and Clerc [1].

A load is applied to elongate a stent in longitudinal direction. The load acting on the stent modeled with combination of n wires can be expressed as a function of pitch angle as in the following equation:

−−

−= 2

331

33

cos2tansin2cos2 K

KKEIK

KKGI

nF pwire

ββββ (1)

where K1, K2, K3 are constants given by

0

03

0

02

20

01 cos

,cos2,2sinβ

ββ DKD

KD

K === (2)

and β is pitch angle, I moment of inertia, Ip polar moment of inertia, E Young’s modulus, G shear modulus, and n number of wires of a stent.

β

β 0

D0

D

L0

L

δ

F

Fig. 1 Stent extension by longitudinal load Fwire.

Then, the radial expansive pressure of a stent is

βtan2

DLcFP wire

wire = (3)

B. Coated type A coated stent exerts two types of forces against radial compression: the spring restoring force (Fwire) exerted by metal wires and polymer knot force (Fcoat) derived from the moments by the knots of polymer coating. The helical spring model [1] is employed to calculate wire spring force in this type of stent. The polymer knots are considered as torsional springs and the spring moments are calculated.

Fig. 2 shows stent in initial state and compressed state in θ-z plane (cylindrical coordination). When stent is compressed in radial direction as shown in Fig. 2(D), the moment from compressed torsional springs at each knots are exerted on wires of stent. The moment by one knot (Mknot) is

)( 0ββ −= knotknot kM (4)

where kknot is a torsional spring constant. The moment exerted on one wire becomes

wireknotwire KNOTSkM ×−= )( 0ββ (5)

where KNOTSwire is the number of knots in the wire. Thus, polymer knot force of a stent (Fcoat) can be expressed as

ANALYTICAL MODELS FOR PREDICTING MECHANICAL PROPERTIES OF SELF-EXPANDABLE METAL STENTS WITH COVER MEMBRANE

T. Moon1, D. Hong1, H. J. Chun2, J. H. Hyun2, K. B. Lee3 1Department of Mechanical Engineering, 2Department of Internal Medicine,

3Department of Biomedical Engineering, Korea University, Seoul, Korea

p0p0

����

�D

0�

D0

Figuur 3.3: De pitch p en de pitch-hoek β [16]

� De parameter connectors laat toe connectors in te voeren. De connectors zijn korteelementen die zorgen voor contact tussen de draden bij de eindige elementen berekening.

Page 25: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 12

� De parameter profile laat toe de draaddiameter voor te stellen in de GUI van pyFormex.Het visualiseren gebeurt door rond de hartlijnen van de draden cirkels te tekenen.Zodanig kan er een beter beeld worden gevormd van de verschillende draden.

Vertrekkende van de meegegeven argumenten worden de nodige geometrische parametersberekend:

Script 3.2: Parameters71 D = De − 6*d

72 r = 0 .5*D

73 p r i n t "Mean radius at creation = %s"% r

74 p = math . p i *D* tand ( be )

75 nx = i n t ( 0 . 1*nw)

76 ny = i n t ( round ( nx*L/p ) ) #The a c t u a l l e n g t h may d i f f e r a

b i t from L

� lijn 71: De inwendige diameter D = De− 6d (Figuur 3.4).

� lijn 74: De pitch p = π D tanβ (Figuur 3.3). Dit is de lengte van een draad die eenvolledige omwenteling maakt.

� lijn 75: Het aantal basiscellen in de radiale richting nx. Er zijn tien draden per basiscel⇒ nx = 0.1 nw.

� lijn 76: Het aantal basiscellen in de axiale richting ny. Uit figuur 3.5 wordt de werkwijze

om ny te bepalen duidelijk:π D tanβ

nx× ny = L⇔ ny =

nxL

p

Figuur 3.4: Uitwendige diameter en gemiddelde diameter van de stent doorsnede

3.3.2 Aanmaken van de draden

De verschillende draden krijgen namen volgens de kleur waarmee ze worden voorgesteldbinnen pyFormex, dit voor de duidelijkheid. Het modelleren van de draadstent gebeurt in driestappen: Eerst wordt een basiscel van de stent gecreeerd. Dit is een deel van de opengekniptestent die het weefpatroon volledig bepaalt en in twee richting aan elkaar sluit. Vervolgenswordt deze cel in de X- en Y-richting gekopieerd tot het volledige opengeknipte patroon vande stent. In een laatste stap wordt dit patroon opgerold tot de stent. (Figuur 3.6)

Page 26: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 13

Figuur 3.5: Bepalen van het aantal basiscellen in axiale richting ny

Figuur 3.6: Schema modelleren draadstent

Het maken van de basiscel is het grootste werk, hieronder wordt het proces geschetst. Erwordt verondersteld dat de draden een regelmatig golvend verloop hebben. De amplitude vande golven zal echter niet voor alle draden dezelfde zijn. Daarom wordt er een functie wave

gedefinieerd die mits opgave van de amplitude de golvende draden aanmaakt. De functiewerkt als volgt: Eerst wordt er een eenvoudige lijn met lengte 1 gegenereerd3, gelegen opde X-as, dit gebeurt met de functie wire (Script 3.3). Dit lijnstuk wordt door de functiereplic een aantal keer gekopieerd in de X-richting, waarbij iedere kopie over een afstand 1verschoven wordt. Deze lijnstukken vormen samen de nieuwe Formex. Door de functie bump1wordt er aan de Formex een vervorming in de Z-richting (de 2-richting) opgelegd, die door

3Binnen pyFormex is dit een Formex

Page 27: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 14

het punt (0,0,bump) geforceerd wordt. De vervorming sterft in de X-richting (de 0-richting)uit volgens het kwadratisch verloop dat door bump 1 gespecifieerd wordt. Op deze manierwordt een kwart van een golf gegenereerd. Door deze Formex te kopieren, te spiegelen en teverschuiven, wordt uiteindelijk een volledige golf bekomen (Script 3.4, Figuur 3.7).

Script 3.3: Creeren van een recht stuk draad (eventueel met voorstelling van de omtrek)

def w i r e ( l eng th , d , p r o f i l e=True ) :

l i n e = Formex ( p a t t e r n ( '1' ) ) . s c a l e ( l e n g t h )

i f p r o f i l e == True :

diam = u n i t c i r c l e ( 4 5 . , 6 0 ) . s c a l e ( 0 . 5* d ) . r o t a t e (90 , a x i s =1)

n=10

f o r i i n range ( n ) :

l i n e += diam . t r a n s l a t e (0 , i / f l o a t ( n ) * l e n g t h )

r e t u r n l i n e

Script 3.4: Creeren van een volledig golvende draad

def wave ( l eng th , d , bump , nb , p r o f i l e=True ) :

bump 1 = lambda x : 1.−( x/nb *2) **2

quad sma l l = w i r e ( l eng th , d , p r o f i l e ) . r e p l i c ( nb /2 , 1 . 0 ) . bump1

( 2 , [ 0 . , 0 . , bump ] , bump 1 , 0 ) . t r a n s l a t e (0 ,−nb /2)

wave sma l l = quad sma l l + quad sma l l . r e f l e c t (2 ) . r e f l e c t (0 )

r e t u r n wave sma l l . t r a n s l a t e (0 , nb /2) + wave sma l l . r e f l e c t

(2 ) . t r a n s l a t e ( 0 , 1 . 5* nb}

#whole wave ( top to top ) , by m i r r o rwave sma l l 1 = quad sma l l 1 + quad sma l l 1 . r e f l e c t (2 ) .

r e f l e c t (0 )wave sma l l 1 = wave sma l l 1 . t r a n s l a t e 1 (0 , nb /2) +

wave sma l l 1 . r e f l e c t (2 ) . t r a n s l a t e 1 ( 0 , 1 . 5* nb )wave sma l l 2 = quad sma l l 2 + quad sma l l 2 . r e f l e c t (2 ) .

r e f l e c t (0 )wave sma l l 2 = wave sma l l 2 . t r a n s l a t e 1 (0 , nb /2) +

wave sma l l 2 . r e f l e c t (2 ) . t r a n s l a t e 1 ( 0 , 1 . 5* nb )wave sma l l 3 = quad sma l l 3 + quad sma l l 3 . r e f l e c t (2 ) .

r e f l e c t (0 )wave sma l l 3 = wave sma l l 3 . t r a n s l a t e 1 (0 , nb /2) +

wave sma l l 3 . r e f l e c t (2 ) . t r a n s l a t e 1 ( 0 , 1 . 5* nb )

Figuur 5.8: Opbouw van een golvende draad

De zwarte draden bevinden zich in de binnenste laag van de stent. Zij zijn rechtstreeks in contactmet de staaf waarrond geweven wordt, en worden hierop aangespannen. Tijdens het weven zijnze dus reeds vrijwel rechtlijnig (dus zonder golving), na het weefproces zullen zij zich nog meerwillen rechttrekken. Dit is ook te zien in figuur 5.7, waar de zwarte draden een vrijwel rechtlijnigverloop kennen. De zwarte draden black kunnen dus gemodelleerd worden als rechten. Dezedraden worden opzij geschoven over een afstand d, aangezien er later nog andere draad netnaast zal komen te liggen. Dat de zwarte draden verschoven moeten worden, blijkt ook uit deconfiguratie in figuur 5.2 (chemin 1).

b l a c k = w i r e (1 , d , p r o f i l e ) . s e tProp (0 ) . r e p l i c (4*nb , 1 . 0 ) .r e p l i c (4 , nb , d i r =1) . t r a n s l a t e 1 (1 , d )

De rode draden maken eveneens deel uit van de binnenste laag van de stent, maar zij golven overen onder de zwarte draden. Het principe dat de draden in de ene richting vrijwel recht zijn, en

55

Figuur 3.7: Creeren van een volledig golvende draad in pyFormex, de cirkels stellen de omtrek vande draad voor

Page 28: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 15

Het opbouwen van de zwarte en de rode draden (binnenste laag)

De zwarte draden bevinden zich in de binnenste laag van de stent. Ze zijn rechtstreeks incontact met de staaf waarrond geweven wordt en worden hierop aangespannen. Ze zijnenkel verweven met de rode draden. De zwarte draden worden gemodelleerd als eenrechte en een golvende draad. Deze draden worden opzij geschoven over een afstand d,aangezien er nog een andere draad net naast zal liggen (Figuur 3.8).

b l a ck0 = wave (1 , d , 0 , nb , p r o f i l e ) . t r a n s l a t e (1 , d )

b l a ck1 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . t r a n s l a t e ( [ 0 , nb+d , 0 . 5 * d ] )

b l a c k = ( b l a ck0+b la ck1 ) . s e tProp (0 )

De rode draden maken eveneens deel uit van de binnenste laag van de stent, zij golvenover en onder de zwarte draden. De afstand tussen de hartlijnen van de rode en zwartedraden is exact de draaddiameter d daar de draden elkaar raken (Figuur 3.8).

r ed0 = wave (1 , d , d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . r e f l e c t (2 ) .

t r a n s l a t e (0 , nb )

red1= wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ 2* nb

, 0 , 0 . 5 * d ] )

r ed = ( red0+red1 ) . s e tProp (1 )

Figuur 3.8: Opbouw van black (links) en red (rechts)

Het opbouwen van de groene en de blauwe draden (middenlaag)

De groene draden komen maar half zoveel voor als de rode en zwarte. Enerzijds lopen degroene draden samen met de zwarte, onder de rode. Anderzijds zullen ze ook verbon-den zijn met de blauwe draden, die in een volgende stap gecreeerd worden. De groenedraden vertonen een golving met amplitude d (Figuur 3.9).

green = wave (1 , d , d , nb , p r o f i l e ) . r e f l e c t (2 ) . t r a n s l a t e (2 , d ) .

s e tProp (2 )

Page 29: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 16

De blauwe draden maken, net zoals de groene, deel uit van de middelste laag. Vanwegede symmetrie zijn ze identiek aan de groene draden. Ze worden zodanig gedraaid datze loodrecht staan op de groene draden en vervolgens worden ze verschoven naar huncorrecte positie (Figuur 3.9).

b l u e = green . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ nb , 0 , d ] ) . s e tProp (3 )

Figuur 3.9: Opbouw van green (links) en blue (rechts)

Het opbouwen van de magenta en de cyaan draden (buitenste laag)

De cyaan draden maken deel uit van de buitenste laag. Ze worden verweven met de ma-genta en de blauwe draden. De cyaan draden worden gemodelleerd door twee sets metverschillende golving (Figuur 3.10).

cyan0 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . t r a n s l a t e ( [ 0 , nb , 2 . 5 * d ] )

cyan1 = wave (1 , d , d , nb , p r o f i l e ) . r e f l e c t (2 ) . t r a n s l a t e (2 ,3* d )

cyan = ( cyan0+cyan1 ) . s e tProp (4 )

De magenta draden maken eveneens deel uit van de buitenste laag. Ze zijn uitsluitendverweven met de cyaan draden. De magenta draden worden gemodelleerd door eenrechte en een golvende draad.

magenta0 = wave (1 , d , 0 , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ nb−d , 0 , 3* d ] )

magenta1 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e

( [ 2* nb−d , 0 , 2 . 5 * d ] )

magenta = ( magenta0 + magenta1 ) . s e tProp (5 )

Page 30: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 17

Figuur 3.10: Opbouw van cyaan (links) en magenta (rechts)

Het basispatroon

Al deze draden vormen samen het basispatroon. In figuur 3.11 wordt dit basispatroon afge-beeld.

base = b l a ck+red+b lu e+green+cyan+magenta

Figuur 3.11: Het basispatroon

Tijdens de opbouw van het basispatroon werden de draden voor de eenvoud georienteerdvolgens de assen van het coordinatenstelsel. Om de stent op te rollen met de correcte pitch-hoek, zullen de draden echter volgens de bissectrice van deze assen gericht moeten zijn. Debasiscel moet dus gedraaid worden (Figuur 3.12).

Page 31: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 18

Figuur 3.12: Het gedraaide basispatroon

De gedraaide cel is dan echter geen module meer die volgens de X- en de Y-as gekopieerdkan worden; de modules zouden niet overal op elkaar aansluiten. De basiscel moet alvorensze gedraaid wordt, gekopieerd worden tot een grotere cel. Vervolgens moet er een stuk vande cel weggeknipt worden, zodanig dat een vierkant overblijft met zijden volgens de X- en deY-as. De coordinaten waar de cel afgeknipt wordt, zijn zo gekozen dat er bij het kopierenvan de basismodule geen dubbele elementen ontstaan (Figuur 3.13).

Figuur 3.13: Het gedraaide basispatroon met selectie-kader (links) en het uiteindelijk basispatroonzonder connectoren (rechts)

base = base . r e p l i c 2 (2 ,2 ,2* nb ,2* nb ) . r o t a t e (45 ,2 )

ymi = s q r t (2 ) *nb−1.1* s q r t ( d /2)

yma = 3* s q r t (2 ) *nb+1.1* s q r t ( d /2)

Page 32: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 19

xmi = −s q r t (2 ) *nb−1.1* s q r t ( d /2)

xma = s q r t (2 ) *nb+1.1* s q r t ( d /2)

keep = ( base . f [ : , 0 , 1 ] > ymi ) *( base . f [ : , 0 , 1 ] < yma) *( base . f

[ : , 1 , 1 ] > ymi ) *( base . f [ : , 1 , 1 ] < yma) *( base . f [ : , 0 , 0 ] > xmi ) *(

base . f [ : , 0 , 0 ] < xma) *( base . f [ : , 1 , 0 ] > xmi ) *( base . f [ : , 1 , 0 ] <

xma)

c e l l = base . s e l e c t ( keep )

3.3.3 Aanmaken van de connectoren

Om het multilayer model te kunnen gebruiken in eindige elementen simulaties, is er eenverbinding tussen de verschillende draden nodig. Deze verbinding wordt gerealiseerd doorconnectoren toe te voegen tussen de draden. De connectoren zijn korte lijnstukken die zichbevinden ter hoogte waar de draden elkaar kruisen. Ze krijgen de naam van de twee dradenwaarvan ze de knopen verbinden.

Eerst worden de lijnstukken die de connectoren voorstellen gedefinieerd, om nadien, mitsverschuiven en eventueel spiegelen, op de juiste positie gebracht te worden.

connec to r1 = Formex ( [ [ [ 0 , 0 , d ] , [ 0 , 0 , 0 ] ] ] )

connec to r2 = Formex ( [ [ [ 0 , d , d ] , [ 0 , 0 , 0 ] ] ] )

connec to r3 = Formex ( [ [ [ 0 , 0 , 0 ] , [ − d , 0 , d ] ] ] )

connec to r4 = Formex ( [ [ [ 0 , 0 , 0 ] , [ 0 , 0 , d ] ] ] )

connec to r5 = Formex ( [ [ [ − d , 0 , d ] , [ 0 , d , 0 ] ] ] )

De rode en zwarte draden vormen samen de buitenste laag en zijn met elkaar verweven.Ze worden verbonden door vier connectoren per basiscel. Elke connector wordt afzon-derlijk op zijn plaats geschoven.

r e db l a c k0 = connec to r2 . t r a n s l a t e ( [ nb ,0 ,−d ] )

r e db l a c k1 = connec to r2 . t r a n s l a t e ( [ 2* nb , nb , 0 ] )

r e db l a c k2 = connec to r2 . t r a n s l a t e ( [ 2* nb ,0 ,−d ] ) . r e f l e c t (2 )

r e db l a c k3 = r edb l a c k2 . t r a n s l a t e ([−nb , nb , 0 ] )

r e d b l a c k = ( r e db l a c k0+r edb l a c k1+r edb l a c k2+r edb l a c k3 ) . s e tProp

(6 )

De groene en blauwe draden vormen de binnenste laag en zijn met elkaar verweven. Zeworden verbonden door een connector per basiscel.

g r e e nb l u e = connec to r4 . t r a n s l a t e ( [ nb , 0 , d ] ) . s e tProp (7 )

De cyaan en magenta draden vormen de binnenste laag en zijn met elkaar verweven. Zeworden verbonden door vier connectoren per basiscel.

Page 33: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 20

cyanmagenta0 = connec to r3 . t r a n s l a t e ( [ nb , nb ,2* d ] )

cyanmagenta1 = connec to r3 . t r a n s l a t e ( [ 2* nb , 0 , 2* d ] )

cyanmagenta2 = connec to r3 . t r a n s l a t e ( [ nb ,0 ,−4*d ] ) . r e f l e c t (2 )

cyanmagenta3 = connec to r3 . t r a n s l a t e ( [ 2* nb , nb ,−3*d ] ) . r e f l e c t

(2 )

cyanmagenta = ( cyanmagenta0+cyanmagenta1+cyanmagenta2+

cyanmagenta3 ) . s e tProp (8 )

De groene en rode draden worden verbonden door een connector per basiscel. De tweedraden zijn met elkaar verweven maar komen uit een andere laag.

g r e en r ed = connec to r4 . t r a n s l a t e (0 ,2* nb ) . s e tProp (9 )

De blauwe en cyaan draden worden verbonden door een connector per basiscel. De tweedraden zijn met elkaar verweven maar komen uit een andere laag.

b luecyan = connec to r1 . t r a n s l a t e ( [ nb , nb ,2* d ] ) . s e tProp (10)

De cyaan en rode draden worden verbonden door twee connectoren per basiscel. De dra-den zijn niet met elkaar verweven en komen uit een andere laag.

cyanred0 = connec to r1 . t r a n s l a t e ( [ 2* nb , 0 , d ] )

cyanred1 = connec to r1 . t r a n s l a t e ( [ nb , nb , d ] )

cyanred = ( cyanred0+cyanred1 ) . s e tProp (11)

De cyaan en rode draden worden verbonden door een connector per basiscel. De dradenzijn niet met elkaar verweven en komen uit een andere laag.

b l u e b l a c k = connec to r2 . t r a n s l a t e ( [ nb ,0 ,−d ] ) . r e f l e c t (2 ) .

s e tProp (12)

De magenta en zwarte draden worden verbonden door een connector per basiscel. Dedraden zijn niet met elkaar verweven en komen uit een andere laag.

magentab lack = connec to r5 . t r a n s l a t e ( [ 2* nb , nb , d ] ) . s e tProp (13)

De groene en magenta draden worden verbonden door een connectoren per basiscel. Dedraden zijn niet met elkaar verweven en komen uit een andere laag.

greenmagenta = connec to r3 . t r a n s l a t e ( [ nb , 0 , 2* d ] ) . s e tProp (14)

Page 34: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 21

Net zoals bij de draden, wordt deze cel gekopieerd tot een grotere cel, gedraaid en een deelverwijderd zodat een cel bekomen wordt die in X- en Y-richting kopieerbaar is (Figuur 3.14).

Figuur 3.14: Opbouw van de cel met connectoren. Normaal kleurengebruik in pyFormex (boven),accent op connectoren (rood: tussen geweven draden uit dezelfde laag, groen: tussengeweven draden uit een verschillende laag, blauw: tussen niet geweven draden) (onder)

3.3.4 Kopieren en oprollen

Ten slotte wordt de basiscel van draden en connectors gekopieerd in de X- en Y-richting.Connectors aan op de uiteinden (in de Y-richting) worden verwijderd, om later zonder pro-blemen de randvoorwaarden te kunnen opleggen (zie infra). Vervolgens wordt, om de juistediameter te verkrijgen, het volledige patroon opgeschoven in de z-richting. En uiteindelijkwordt het opgerold tot een cylinder: de multilayer geweven draadstent (Figuur 3.6).

3.4 Opbouw van het eindige elementen model

Het eindige elementen model wordt gebouwd door Abaqus aan de hand van een input bestand.Het aanmaken van het Abaqus input bestand gebeurt in het script WireStent Multilayer par-am.py. Hierin wordt, met gebruik van de scripts properties .py en f2abq.py, het geometrischemodel samen met alle randvoorwaarden en materiaaleigenschappen omgezet tot de input-file. Daarenboven wordt ook nog een bestand, nodig voor de post-processing, aangemaakt(jobnaam.post.py). In het onderstaande zullen delen van dit script toegelicht worden, hetgehele script is bijgevoegd in bijlage D.

Page 35: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 22

3.4.1 Opgeven van de parameters

De functie MultiLayerToAbaqus, die het model omzet tot een Abaqus input bestand, wordtgedeclareerd.

Script 3.5: Functie MultiLayerToAbaqus

22 def Mult iLayerToAbaqus ( jobname = 'Multilayer ' ,

23 s t e n t d i ame t e r = 16 .71 ,

24 s t e n t l e n g t h = 80 .0 ,

25 w i r e d i ame t e r = 0 .22 ,

26 number w i r e s = 80 ,

27 p i t c h a n g l e = 35 ,

28 e x t r a s t r u t = 0 . 0 ,

29 number e lems = 4 ,

30 young modulus = 206000 ,

31 shea r modu lu s = 81500 ,

32 z v a l u e s = [ 0 . 0 , 0 . 25 , 0 . 5 , 0 . 75 , 1 . 0 ] ,

33 l o a d c a s e s = [ [ 'axial ' , 'disp' , 'auto' ] ,

34 [ 'radial ' , 'disp' , 'auto' ] ,

35 [ 'central ' , 'disp' , 'auto' ]

36 ] ,

37 pos t = True , un load = Fa l s e ,

38 ) :

De belangrijkste parameters zijn:

� jobname: naam van de Abaqus job

� stent diameter : uitwendige diameter van de stent (mm)

� stent length : lengte van de stent (mm)

� wire diameter: diameter van de draden (mm)

� number wires: aantal draden (veelvoud van 10)

� pitch angle : pitch-hoek van de draden (tussen 0 en 90 graden)

� z values : een lijst met percentages van de lengte van stent waar de z-coordinaten vande cross-sets (zie infra) genomen worden. Default op 0, 25, 50, 75 en 100 % van destentlengte.

� loadcases : deze parameter definieert de verschillende belastingsgevallen. De belastings-gevallen worden meegegeven door een lijst bestaande uit drie velden, namelijk:

1. Waar en hoe de belasting aangrijpt:

– axial: de stent wordt in langszin belast in een eindsnede

– radial: de stent wordt radiaal belast in de uitwendige knopen van de stent

Page 36: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 23

– central: de radiale belasting grijpt aan in de set uitwendige knopen halver-wege de lengte van de stent

2. De belastingen zijn in feite opgelegde verplaatsingen:

– disp: er worden verplaatsingen opgelegd

3. De maximale grootte van de verplaatsing:

– axial en disp: waarde van de maximaal opgelegde langsverplaatsing (mm)

– radial en disp: waarde van de maximaal opgelegde radiale verplaatsing (mm)

– central en disp: waarde van de maximaal opgelegde ringverplaatsing (mm)

– voor disp is er ook een waarde 'auto' mogelijk. De maximale waarde zal danberekend worden op basis van de stent geometrie. Bij de axiale verplaatsingkomt dit neer op 85% van de draadlengte min de stentlengte, bij de radialeen centrale verplaatsing tot 35% van de stentdiameter.

3.4.2 Inlezen geometrisch model

Via de functie Multilayer wordt het geometrische model ingeladen. Vervolgens worden allevariabelen van dit model toegekend aan de variabele stent.

Script 3.6: Inladen model97 #c r e a t i n g the model

98 Stent = Mu l t i l a y e r ( s t e n t d i ame t e r , s t e n t l e n g t h , w i r e d i ame t e r

, number wi res , p i t c h a n g l e , c onne c t o r s=True )

99 s t e n t = Stent . a l l ( ) #the s t e n t Formex

100 nz = Stent . ny #number o f modules i n a x i a l d i r e c t i o n

Het commando feModel() creeert het eindige elementen model. Meer bepaald geeft hetcommando een lijst met twee velden. Het eerste is een veld met de coordinaten van de uniekeknopen van het model. Het tweede geeft de knoopnummers van elk element.

Script 3.7: Eindig elementen model aanmaken102 # Create FE model

103 n e l = s t e n t . ne lems ( )

104 p r i n t "Number of elements: %s" % ne l

105 p r i n t "Original number of nodes: %s" % s t e n t . nnodes ( )

106 message ( "Creating FE model: for a large model this can take a

LOT of time!" )

107 nodes , e l ems = s t e n t . feMode l ( )

108 nnod = nodes . shape [ 0 ]

109 p r i n t "Compressed number of nodes: %s" % nnod

3.4.3 Randvoorwaarden en belastingen

De randvoorwaarden worden constant gehouden. Aan een uiteinde van de stent wordt delangsrichting en de rotatie in de θ-richting (omtreksrichting in cilindercoordinaten) vast ge-

Page 37: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 24

houden. Deze randvoorwaarden laten de stent toe vrij radiaal en axiaal uit te zetten of tekrimpen. Deze randvoorwaarden zijn aannemelijk onmiddellijk na implantatie. Na ingroei-ing van de stent zal de axiale verlenging tegengewerkt worden door de arterie. Vasthoudenvan beide uiteinden is dan een betere randvoorwaarde [6]. Enkel de vrije expansie is in dezescriptie onderzocht.Om de randvoorwaarden en belastingen te kunnen opleggen (Figuur 3.15), worden bepaaldeknopen van de stent in verschillende sets verzameld. Volgende sets worden aangemaakt:

� 'loaded': De eindsnede van de stent waar de axiale verplaatsingen kunnen aangrijpen.

� 'fixed': De eindsnede van de stent waar de randvoorwaarden opgelegd worden.

� 'outer': De uitwendige knopen die op het cilinderoppervlak van de stent gelegen zijn,waar de radiale verplaatsingen kunnen aangrijpen.

� 'inner': De knopen op het inwendige cilinderoppervlak van de stent.

� 'csi0', 'csi1', 'csi2', 'csi3' en 'csi4': De inwendige knopen op repsectievelijk 0,25, 50, 75 en 100 % van de stentlengte. We noemen deze sets cross-sets.

� 'cso0', 'cso1', 'cso2', 'cso3' en 'cso4': Analoog als het vorige, maar nu met deuitwendige knopen. Deze sets worden ook cross-sets genoemd.

Figuur 3.15: Randvoorwaarden en belastingen: axiale verplaatsing (links), radiale verplaatsing(midden) en centrale ring verplaatsing (rechts)

In script 3.8 worden de z-coordinaten van de uiteinden van de stent bepaald (zlo en zhi). Deechte lengte van de stent wordt dan verkregen door: zhi − zlo. De 'fixed' en 'loaded'

knopen worden bepaald.

Script 3.8: Aanmaken sets fixed en loaded

111 # Get end nodes

112 bb = s t e n t . bbox ( )

113 z l o = bb [ 0 ] [ 2 ] #lowe s t z−c o o r d i n a t e

114 z h i = bb [ 1 ] [ 2 ] #h i g h e s t z−c o o r d i n a t e

115 zmi = ( z h i+z l o ) /2 #mean z−c o o r d i n a t e

116 d e s i g n l e n g t h = s t e n t l e n g t h

Page 38: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 25

117 s t e n t l e n g t h = zh i−z l o #r e p l a c e d e s i g n l e n g t h by a c t u a l l e n g t h

118 p r i n t "Actual stent length: %s" % s t e n t l e n g t h

119 z v a l s = nodes [ : , 2 ]

120 f i x e d = arange ( nnod ) [ z v a l s <( z l o +0.8* w i r e d i ame t e r ) ] #f i x e d

nodes

121 l o aded = arange ( nnod ) [ z v a l s >( zh i −0.8* w i r e d i ame t e r ) ] #nodes

where a x i a l d i s p l a c emen t i s f o r c e d

Alle uitwendige en inwendige knopen van de stent worden geselecteerd (sets: 'outer' en'inner'). Hiervoor wordt gebruik gemaakt van de eigenschap dat de uitwendige en inwendigeknopen verbonden zijn met drie elementen (2 delen van de draad en 1 connector). Daar waaralle andere knopen verbonden zijn met vier elementen (2 delen van de draad en 2 connectors)of twee elementen (2 delen van de draad). De knopen aan de uiteinden zijn slechts verbondenmet een element (1 deel van de draad).

Script 3.9: Aanmaken uitwendige en inwendige knopensets

123 #get ou t e r / i n n e r nodes

124 count = z e r o s ( nnod )

125 f o r n i n e lems . f l a t :

126 count [ n ] += 1

127 r o u t e r = s t e n t d i ame t e r /2 − 1 .6* w i r e d i ame t e r

128 r i n n e r = s t e n t d i ame t e r /2 − 3 .9* w i r e d i ame t e r

129 c r o s s i n g = arange ( nnod ) [ count==3] #nodes connected to 1

connec to r

130 r v a l s = s q r t ( nodes [ c r o s s i n g ] [ : , 0 ]**2+ nodes [ c r o s s i n g ] [ : , 1 ] * * 2 )

131 i n n e r = c r o s s i n g [ r v a l s <r i n n e r ] #a s s i g n i n n e r nodes

132 ou t e r = c r o s s i n g [ r v a l s >r o u t e r ] #a s s i g n ou t e r nodes

Om post-processing en het belastingsgeval 'central' toe te laten worden er verschillendecross-sets aangemaakt. Een cross-set heeft voor alle knopen van de set eenzelfde z-coordinaat.Om ze aan te maken wordt als volgt te werk gegaan: eerst worden alle z-coordinaten waarde draden elkaar kruisen bepaald (zconn). Dan worden de z-coordinaten bepaald op depercentages van de stentlengte waar de cross-sets genomen moeten worden (zwant). Dezecoordinaten komen niet juist overeen met de coordinaten van de kruisingen. Met de functienearestValue worden die z-coordinaten, waar de draden elkaar kruisen, bepaald die hetdichtst in buurt liggen van de gewenste coordinaten (zsets). Uiteindelijk worden de uitwendigeen inwendige knopen geselecteerd op deze z-coordinaten (csets). Dit gebeurt op lijn 144.

Script 3.10: Aanmaken cross-sets

134 # Nodes i n a s e c t i o n at modular a x i a l d i s t a n c e

135 # ( I ' l l c a l l t h e s e s e t s c r o s s−s e t s , because a l l nodes a r e i n

the same c r o s s s e c t i o n )

136 zd = s t e n t l e n g t h / nz

137 zconn = [ z l o + zd/4 + zd/2 * i f o r i i n range (2* nz ) ] #

p o s i t i o n s o f c r o s s i n g s on z−a x i s

138 zwant = [ z l o + z * s t e n t l e n g t h f o r z i n z v a l u e s ] #wanted

c r o s s i n g s on z−a x i s

Page 39: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 26

139 z s e t s = [ n e a r e s tVa l u e ( zconn , z ) f o r z i n zwant ] #z−c o o r d i n a t e s f o r c r e a t i n g c r o s s−s e t s

140 p r i n t "zhi ,zlo ,nz ,zd:" , zh i , z l o , nz , zd

141 p r i n t "Connector z-coords:" , zconn

142 p r i n t "Wanted z-coords:" , zwant

143 p r i n t "Also creating sets at z-coordinates:" , z s e t s

144 c s e t s = [ [ l a y e r [ i s C l o s e ( nodes [ l a y e r ] [ : , 2 ] , z , r t o l =1.e−5, a t o l=

zd /8 . ) ] f o r z i n z s e t s ] f o r l a y e r i n [ i nne r , o u t e r ] ] #

cro s s−s e t s

In het geval de grootte van de opgelegde verplaatsingen de waarde 'auto' heeft, worden erstandaard verplaatsingen opgelegd (Script 3.11).

Script 3.11: Aanmaken verplaatsingen

156 # se t auto v a l u e s i n ca s e o f d i s p l a c emen t c o n t r o l

157 w i r e l e n g t h = s t e n t l e n g t h / s i n ( p i t c h a n g l e * p i / 180 . )

158 l o a d s = [ ]

159 f o r l c i n l o a d c a s e s :

160 i f l c [ 1 ] == 'disp' and l c [ 2 ] == 'auto' :

161 i f l c [ 0 ] == 'axial ' :

162 l c [ 2 ] = 0 .85 * w i r e l e n g t h − s t e n t l e n g t h

163 e l i f l c [ 0 ] == 'radial ' :

164 l c [ 2 ] = −0.35 * s t e n t d i ame t e r

165 e l i f l c [ 0 ] == 'central ' :

166 l c [ 2 ] = −0.35 * s t e n t d i ame t e r

3.4.4 Materiaal eigenschappen

Vervolgens worden de materiaal eigenschappen gedefinieerd en toegekend. Er wordt gebruikgemaakt van twee verschillende types elementen: frame3D4 en conn3D2 elementen.

FRAME3D

De frame3D zijn twee knoops, oorspronkelijk rechte, balk elementen. Ze gedragen zichelastisch en volgen de Euler-Bernouilli balktheorie met vierdegraads interpolatiefuncties voorde berekening van de transversale verplaatsingen [9]. Deze elementen worden gebruikt omde draden te simuleren. De straal , de elasticiteits- en glijdingsmodulus en vorm van dedoorsnede van de draad worden hierbij meegegeven.

CONN3D2

De CONN3D2 elementen definieren de connectie tussen twee knopen. In het multilayermodel worden twee types connector elementen gebruikt: join en slide-plane.

4Om contact te modelleren kan overgegaan worden op Beam B31-elementen. Deze bezitten ongeveer

dezelfde eigenschappen en zijn importeerbaar binnen de grafische omgeving van Abaqus (dit is bij Frame3D

elementen niet het geval) [16].

Page 40: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 27

JOIN: Dit type connector wordt gebruikt voor de geweven draden uit dezelfde laag5 teverbinden. Dit soort connector zorgt ervoor dat de verplaatsing van de knopen vanbeide draden, die de connector verbindt, samenvallen. De positie van de ene knoop isrelatief gefixeerd ten opzichte van de ander knoop. Dit connectortype laat wel rotatietoe (Figuur 3.16).

Figuur 3.16: Connectortype join [9]

In het multilayer model wordt verondersteld dat de draden uit dezelfde laag elkaarvasthouden en in werkelijkheid geen grote verschuivingen optreden.

SLIDE-PLANE: Dit type connector wordt gebruikt tussen draden uit verschillende lagen6.Het connectortype SLIDE-PLANE houdt knoop b op een vlak gedefinieerd door deorientatie van knoop a en de oorspronkelijke positie van knoop b (Figuur 3.17).

Figuur 3.17: Connectortype slide-plane [9]

Het idee om slide-plane connectoren te gebruiken is de volgende: er wordt eenorientatie opgelegd in elke connector zodanig dat de draden kunnen bewegen in delangsrichting van de stent en de richting tangentieel aan de omtrek in dat punt (Figuur3.18). Dit simuleert dat de draden niet onbeweeglijk ten opzichte van elkaar zijn en

5connectors: redblack, greenblue, cyanmagenta. Rode connectoren in Figuur 3.14 (onder).6connectors: greenred, bluecyan, cyanred, blueblack, magnentablack, greenmagenta. Blauwe en groene

connectoren in Figuur 3.14 (onder).

Page 41: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 28

Figuur 3.18: Orientatie glijvlakken slide-plane connector

impliceert dat de verschillende lagen onderling kunnen glijden. Deze onderstelling isslechts gedeeltelijk juist daar de draden met een zekere kracht op elkaar gedrukt wordenen er bijgevolg wrijving zal ontstaan tussen de draden. De wrijving zal de bewegingtegenwerken.

Toekennen eigenschappen

De eigenschappen worden toegekend met de functies ElemSection en ElemProperty (Script3.12) aan een dictionary, voor een dieper inzicht hierin wordt verwezen naar de scriptie vanNeels [14].

Script 3.12: Toekennen materiaal eigenschappen179 #Connecto r s

180 c o n n e c t o r s e c t i o n = ElemSect ion ( s e c t i o n t y p e='join' )

181 c o n n e c t o r s e c t i o n 1 = ElemSect ion ( s e c t i o n t y p e='slide -plane ' ,

o r i e n t a t i o n =[0 , 0 , 0 , 0 , 0 , 1 ] )

182

183 r e d b l a c k = ElemProper ty (6 , e l em s e c t i o n=conn e c t o r s e c t i o n ,

e l emtype='CONN3D2 ' )

184 g r e e nb l u e = ElemProper ty (7 , e l em s e c t i o n=conn e c t o r s e c t i o n ,

e l emtype='CONN3D2 ' )

185 cyanmagenta = ElemProper ty (8 , e l em s e c t i o n=conn e c t o r s e c t i o n ,

e l emtype='CONN3D2 ' )

186 g r e en r ed = ElemProper ty (9 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

187 b luecyan = ElemProper ty (10 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

188 i f e x t r a c o n n e c t o r s :

189 cyanred = ElemProper ty (11 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

190 b l u e b l a c k = ElemProper ty (12 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

Page 42: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 29

191 magentab lack = ElemProper ty (13 , e l em s e c t i o n=

conne c t o r s e c t i o n1 , e l emtype='CONN3D2 ' )

192 greenmagenta = ElemProper ty (14 , e l em s e c t i o n=

conne c t o r s e c t i o n1 , e l emtype='CONN3D2 ' )

193

194 #Wires

195 w i r e s e c t i o n=ElemSect ion ({ 'name' : 'wires ' , 'radius ' : w i r e d i ame t e r

/2 .0} , {'name' : 'Phoenix ' , 'young_modulus ' : young modulus , '

shear_modulus ' : shea r modu lus , 'density ' : 0 . 000007000} , '

CIRC' )

196 b l a c k = ElemProper ty (0 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

197 r ed = ElemProper ty (1 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

198 green = ElemProper ty (2 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

199 b l u e = ElemProper ty (3 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

200 cyan = ElemProper ty (4 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

201 magenta = ElemProper ty (5 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

3.4.5 Wegschrijven data

In deze stap wordt alle data verzameld en weggeschreven naar een Abaqus input bestand.Voor elk belastingsgeval wordt een Abaqus input bestand aangemaakt.

In script 3.13 wordt nagegaan welk belastingsgeval optreedt. De belasting wordt met defunctie NodeProperty weggeschreven naar een dictionary. De randvoorwaarde wordt even-eens weggeschreven. Vervolgens wordt alle data verzameld en toegekend aan de variabeletotal. Hierna worden alle knoopsets die nodig zijn voor de post-processing naar een tijdelijkbestand geschreven. In een laatste stap wordt met het commando writeAbqInput alle data,opgeslaan in de dictionaries en in de tijdelijke bestanden, weggeschreven naar een Abaqusinput bestand: jobnaam.inp. Meer uitleg over de gebruikte functies is te vinden in de scriptievan Neels [14].

Script 3.13: Wegschrijven data

208 f o r l o ad i n l o a d c a s e s :

209 nodeprops=z e r o s ( nnod )

210 l c = load [ 0 ]

211 f i l e n ame = "%s-%s%s.inp" % ( jobname , l c [ 0 ] , l o ad [ 1 ] [ 0 ] )

212 j o b f i l e s . append ( f i l e n ame )

213 i f l c =='axial ' :

214 nodeprops [ l oaded ] = 2

215 n p a x i a l d i s p = NodeProperty (2 , d i s p l a c emen t =[ [3 , l o ad

[ 2 ] ] ] )

216 i f l c == 'radial ' :

217 nodeprops [ ou t e r ] = 2

218 n p r a d i a l d i s p = NodeProperty (2 , d i s p l a c emen t =[ [1 , l o ad

[ 2 ] ] ] )

219 i f l c == 'central ' :

220 nodeprops [ c s e t s [ 1 ] [ 2 ] ] =2

221 i f l o ad [ 1 ] == 'disp' :

222 n p c e n t r a l d i s p = NodeProperty (2 , d i s p l a c emen t

=[ [1 , l o ad [ 2 ] ] ] )

Page 43: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 30

223 e l i f l o ad [ 1 ] == 'force ' :

224 n p c e n t r a l f o r c e = NodeProperty (2 , c l o ad =[ va l

, 0 , 0 , 0 , 0 , 0 ] )

225 nodeprops [ f i x e d ]=1

226 n p f i x e d = NodeProperty (1 , bound =[0 , 1 , 1 , 0 , 0 , 0 ] )

227

228 h i s t o u t p = Odb( type='history ' )

229 f i e l d o u t p = Odb( type='field ' , k i nd='element ' , s e t

= [0 , 1 , 2 , 3 , 4 , 5 ] , ID=['SF' ] )

230 nodedata = Dat ( k ind='node' , s e t='all' , ID=['U' , 'COORD ' ] ,

g l o b a l a x e s='no' )

231 a n a l y s i s = An a l y s i s ( t ime =[0 .1 , 1 . , 0 . 001 , 1 . ] , nlgeom='yes

' , boundset='all' , opb='NEW' , d i s p s e t =[2 ] , op='NEW' )

232 model = Model ( nodes , e lems , nodeprops , s t e n t . p ,

i n i t i a l b o u n d a r i e s=None )

233 t o t a l = AbqData ( model , [ a n a l y s i s ] , odb=[ h i s t o u t p ,

f i e l d o u t p ] , dat=[ nodedata ] )

234

235 #wr i t e node s e t s f o r p o s t p r o c e s s i n g

236 f i l p s = f i l e ( f i l e n ame [:−4]+ '_ps.temp' , 'w' )

237 f i l a s = f i l e ( f i l e n ame [:−4]+ '_as.temp' , 'w' )

238 wr i t e S e t ( f i l p s , "NSET" , "fixed" , f i x e d )

239 wr i t e S e t ( f i l p s , "NSET" , "loaded" , l o aded )

240 wr i t e S e t ( f i l p s , "NSET" , "inner" , i n n e r )

241 wr i t e S e t ( f i l p s , "NSET" , "outer" , o u t e r )

242 f o r c , l a y e r i n z i p ( [ 'i' , 'o' ] , c s e t s ) :

243 f o r i , c s e t i n enumerate ( l a y e r ) :

244 wr i t e S e t ( f i l p s , "NSET" , "cs%c%d" % (c , i ) , c s e t )

245 # s e t s f o r which we want output to . dat f i l e

246 c r o s s s e t s = [ "cs%c%d" % (c , i ) f o r c i n 'io' f o r i i n

range ( l e n ( z v a l u e s ) ) ]

247 p r i n t s e t s = c r o s s s e t s

248 p r i n t s e t s . append ( 'loaded ' ) #f o r a x i a l d i s p l a c emen t

249 p r i n t s e t s . append ( 'outer ' ) #f o r r a d i a l d i s p l a c emen t

250 f o r s i n p r i n t s e t s :

251 f i l a s . w r i t e ( ”””*NODE PRINT , NSET=%s \nU\nCOORD\nRF\n

””” % s )

252 f i l p s . c l o s e ( )

253 f i l a s . c l o s e ( )

254

255 wr i t eAbq Inpu t ( t o t a l , f i l e n ame [ : −4 ] )

3.4.6 Aanmaken post-processor bestand

In deze stap wordt alle data nodig voor de post-processing verzameld en naar het bestandjobnaam.post.py weggeschreven.

De data wordt verzameld in de dictionary data en bestaat uit: de namen van de .dat-bestanden gegenereerd door Abaqus, de torsiestijfheid, de buigstijfheid, de stentlengte, destent diameter, het aantal connectoren, de zsets, de belastingsgevallen, het aantal draden,de draaddiameter en de pitch-hoek (lijn 262–269 in script 3.14). Vervolgens wordt, als ditgewenst is, de vergaarde data weggeschreven naar het bestand jobnaam.post.py (lijn 271–

Page 44: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 31

289).

Script 3.14: Aanmaken post-processor bestand

261 # keep some data f o r p o s t p r o c e s s i n g

262 data = d i c t (

263 r e s u l t f i l e s = [ j [:−4]+ '.dat' f o r j i n j o b f i l e s ] ,

264 GJ = shea r modu lu s * J ,

265 EI = young modulus * I yy ,

266 s t e n t l e n g t h = de s i g n l e n g t h ,

267 )

268 f o r key i n [ 'stent_diameter ' , 'nconn ' , 'zsets ' , 'loads ' , '

number_wires ' , 'wire_diameter ' , 'pitch_angle ' ] :

269 data [ key ] = e v a l ( key )

270

271 i f pos t : # wr i t e a p o s t p r o c e s s i n g s c r i p t

272 p o s t f i l e = jobname+'.post.py'

273 p r i n t "Creating the post -processing script %s" % p o s t f i l e

274 s c r i p t = ”””#!/ u s r / b i n / env python

275 # Abaqus post−p r o c e s s i n g f i l e

276 # Created by %s

277 #

278 from W i r e S t e n t Mu l t i l a y e r p o s t impor t *

279 ””” % f i l e

280 # expo r t some data to the s c r i p t

281 s c r i p t += 'data=dict (\\\n'

282 f o r key , v a l i n data . i t ems ( ) :

283 s c r i p t += " %s = %r,\\\n" % ( key , v a l )

284 s c r i p t += ' )\n'

285 s c r i p t += "postproc('%s',data)\n" % ( jobname )

286 # wr i t e the s c r i p t

287 f = f i l e ( p o s t f i l e , 'w' )

288 f . w r i t e ( s c r i p t )

289 f . c l o s e ( )

3.5 Opstellen analytische formules

In deze paragraaf worden analytische formules opgesteld die in het script WireStent_Multi-layer_post.py gebruikt worden. Een analytisch model van de multilayer draadstent is nietvoorhanden. Er wordt gebruik gemaakt van de analytische formules voor een singlelayergeweven draadstent ontwikkeld door Jedwab & Clerc [10] en gecorrigeerd door Van Loo [16].Per laag van de multilayer worden de formules opgesteld en vervolgens worden de resultatenvan de lagen samengesteld.

In volgende paragrafen worden de singlelayer draadstent formules aangehaald en wordt be-sproken hoe de multilayer resultaten bekomen worden. De werkwijze is een benadering enonderstelt geen interactie tussen de verschillende lagen van de stent. De gebruikte parameterszijn samengevat in tabel 3.1.

Page 45: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 32

Tabel 3.1: Stent variabelen

(D0) D [mm] (initiele) gemiddelde stentdiameterd [mm] draaddiametern [−] aantal geweven draden van een stent

(β0) β [−] (initiele) pitch-hoek(L0) L [mm] (initiele) stentlengte

c [−] aantal windingenlw [mm] totale draadlengte van een draadstentδ [mm] axiale verlenging stentF [N ] axiale trekkracht

pouter [N/mm2] uitwendige radiale drukKL [N/mm] longitudinale stijfheidKp [N/mm3] radiale stijfheid

3.5.1 Belasting door axiale trekkracht

De axiale trekkracht F :

Fi = 2n

[GIp

K3

(2 sinβ

K3−K1

)− EI tanβ

K3

(2 cos β

K3−K2

)](3.1)

met K1, K2, K3, I en Ip:

K1 =sin 2β0

D0K2 =

2 cos2 β0

D0K3 =

D0

cos β0(3.2a)

I =π d4

64Ip =

π d4

32(3.2b)

Hierbij is E de elasticiteitsmodulus en G de glijdingsmodulus.

Voor elke laag van de multilayer stent wordt formule 3.1 toegepast. Om de totale axialetrekkracht te bekomen, wordt de trekkracht in elke laag opgeteld.

F =∑

i

Fi (3.3)

3.5.2 Belasting door radiale druk

De radiale druk pouter:

pouter,i = − 2 F c

D L tanβ(3.4)

Page 46: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 33

Met c het aantal windingen van een draad van de stent.

c =L0

p0=

L0

π D0 tanβ0(3.5)

En de diameter D kan geschreven worden in functie van de pitchhoek β.

D =D0 cos β

cos β0(3.6)

Voor elke laag van de multilayer stent wordt formule 3.4 toegepast. Om de totale radialedruk te bekomen, wordt de druk in elke laag opgeteld.

pouter =∑

i

pouter,i (3.7)

3.5.3 Axiale stijfheid

De axiale stijfheid KL:

KL,i =2n

K3 π c cos β

[GIp

K3

(2 cos β

K3

)− EI

K3

(2 cos β

K3− K2

cos2 β

)](3.8)

De verschillende lagen van de multilayer stent werken in axiale zin als veren in parallel. Deaxiale stijfheid van gehele stent wordt dan als volgt bekomen:

KL =∑

i

KL,i (3.9)

3.5.4 Radiale stijfheid

De radiale stijfheid Kp:

Kp,i =2c

K3 sinβ (D L tanβ)2

[2DLn tanβ

(GIp

K3

(2 cos β

K3

)−

EI

K3

(2 cos β

K3−K2 sec2 β

))− F

( DL

cos2 β+

K3 sinβ (π cD − L tanβ))]

(3.10)

De verschillende lagen van de multilayer stent werken in radiale zin als veren in serie. Deradiale stijfheid van de gehele stent wordt dan als volgt bekomen:

Kp =∏

i Kp,i∑i Kp,i

(3.11)

Page 47: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 34

3.5.5 Verhouding draadoppervlakte

De verhouding van de draadoppervlakte µ is het draadoppervlak dat in contact is met dearteriewand ten opzichte van het cilinderoppervlak van de draadstent. Er is nog enige on-duidelijkheid welke draden hiervoor in rekening te nemen. Voorlopig worden enkel de dradenvan de buitenste laag beschouwd.

µ =lw d− N d2

sin 2β

π D L(3.12)

Met lw de totale lengte van alle draden samen:

lw =n L

sinβ(3.13)

3.5.6 Implementatie in python scripts

De functie wirestent_analytical in het script WireStent Multilayer anal.py bouwt de ana-lytische formules op. Via de post-processing data (uit jobnaam.post.py) worden alle nodigeparameters meegegeven. Het aantal draden per laag en de gemiddelde diameter van elke laagworden bepaald (Script 3.15). Pitch-hoek, draaddiameter en stentlengte zijn voor elke laaggelijk.

Script 3.15: Bepalen aantal draden en gemiddelde diameter

n = [ s t e n t [ 'number_wires ' ]*2/5 . , s t e n t [ 'number_wires ' ]*1/5 . ,

s t e n t [ 'number_wires ' ]*2/5 . ]

D0 = [ s t e n t [ 'stent_diameter ' ] − 2 * s t e n t [ 'wire_diameter ' ] ,

s t e n t [ 'stent_diameter ' ] − 6 * s t e n t [ 'wire_diameter ' ] , s t e n t [ '

stent_diameter ' ] − 10 * s t e n t [ 'wire_diameter ' ] ]

De analytische formules worden opgesteld per laag en samengesteld zoals besproken in vorigeparagrafen. Het volledige script is bijgevoegd in bijlage D.

3.6 Verwerking van de data: de post-processing

Het verwerken van de data, verkregen door de Abaqus eindige elementen processing, gebeurtmet het script WireStent_Multilayer_post.py. Dit script verwerkt de .dat-bestanden totde uiteindelijke figuren. Het script werkt volledig analoog als het WireStent_post.py scriptuit Neels [14] en Van Loo [16]. Hieronder worden enkel de berekening van de belangrijksteparameters aangehaald.

Page 48: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 35

3.6.1 Aanpassingen bij het verwerken van de resultaten

Omdat de stent na het aanleggen van de belasting onrealistische randeffecten vertoont aan deuiteinden (Figuur 3.19), dienen correcties toegepast te worden op de veranderende stentlengteen de veranderende externe diameter. Dit opdat de resultaten vergeleken kunnen worden metde analytische resultaten, waarvan de formuleringen in sectie 3.5 aan bod kwamen.

Figuur 3.19: Vervorming aan de uiteinden

Verwerking van de stentlengte

Om deze randeffecten te omzeilen wordt de lengteverandering van de stent opgemeten tussentwee doorsneden op 25 % van de uiteinden. Deze lengteverandering wordt bepaald door hetverschil van de z-coordinaten (COOR3) van snede3 en snede1 (Figuur 3.20 (a)). De lengtemoet dan vermenigvuldigd worden met een factor zodat de lengteverandering van de volledigestent wordt beschouwd. Deze factor is gelijk aan de initiele lengte van de stent op de initielelengte tussen snede1 en snede3. De formule voor de aanpassing van de lengte toegepast opde numerieke resultaten wordt (Figuur 3.20 (a)):

L =L0

L1× (gemiddeldeCOOR3(snede 3)− gemiddeldeCOOR3(snede 1)) (3.14)

snede 1 snede 3

L1

L1

L0

L0

snede 2

(a)

Richting Abaqus-vrijheidsgraad

r 1θ 2z 3

(b)

Figuur 3.20: Schematisering van stent-snedes (a) en cilindercoordinaten (b) [16]

Verwerking van de externe stentdiameter

De berekening van de externe diameter steunt op formule 3.15. Deze formule neemt hetgemiddelde van de radiale verplaatsingen (U1) van de drie secties gelegen op respectievelijk

Page 49: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 3. Opbouw van het model 36

25 %, 50% en 75 % van de stentlengte. Bij de initiele externe stentdiameter De,0 wordt hetgemiddelde van de radiale verplaatsingen afgetrokken. Door met deze gemiddelde waardenvan de drie snedes te werken, worden de berekeningen vereenvoudigd en wordt er minderoutput opgevraagd uit Abaqus zodat de numerieke berekeningen vlotter en sneller verlopen.

De berekening van de diameter bij een radiale centrale ringbelasting gebeurt analoog, echterwordt er enkel met de radiale verplaatsingen van snede 2 gewerkt.

De = De,0 − 2× gemiddeldeU1(snede 1 , snede 2, snede 3) (3.15)

De = De,0 − 2× gemiddeldeU1(snede 2) (3.16)

3.6.2 Berekening van de belastingen

De belangrijkste belastingsparameters die als resultaat opgevraagd worden zijn de langskrachtF , de uitwendige radiale druk p en de radiale ringbelasting per lopende meter omtrek q.

� Axiale verlenging van de stent:Om de axiale langskracht te berekenen worden de reactiekrachten (RF ) in de langsrich-ting (3-richting in Abaqus: RF3) opgevraagd ter plaatse van de eindsnede 'loaded'.Van deze knopen wordt de som genomen om tot de totale langskracht in functie van detijd te komen.

F =∑

[RF3 (' loaded’)] (3.17)

Een analoge redenering geldt voor de radiale drukken. Echter worden de reactiekrachten inde radiale richting, de 1-richting opgevraagd (RF1). De verplaatsingen worden opgelegd inde set 'outer' in het geval van radiale druk over de volledige stent en in de set 'cso2' inhet geval van een radiale ringbelasting in het midden van de stent.

� Radiale druk over de volledige stent:

p =∑

[RF1 ('outer')]π D L

(3.18)

� Radiale ringbelasting:

q =∑

[RF1 ('cso2')]π D

(3.19)

Page 50: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4

Resultaten

In dit hoofdstuk worden de resultaten besproken. Eerst wordt de Cardiatis stent ST202:320-80-01 nader onderzocht. Een experimentele proefopstelling, om de radiale sterkte vande stent te bepalen, wordt besproken. Dan wordt het numeriek model vergeleken met deexperimentele resultaten en met de analytische resultaten. Vervolgens wordt een wijzigingvan het model voorgesteld, deze wijziging heeft tot doel een betere overeenkomst te verkrijgenmet de experimentele data. Uiteindelijk wordt op basis van de ST202: 320-80-01 stent eenparameterstudie uitgevoerd.

4.1 Cardiatis

4.1.1 Experimentele proefopstelling

Cardiatis beproeft de stents met een ringbelasting. Praktisch wordt deze als volgt uitgevoerd(Figuur 4.1):

� Een stalen proefdraad wordt eenmaal rond de stent, ongeveer ter hoogte van de mid-densectie, gewikkeld en de uiteinden worden verbonden met de trekkoppen van eentrekmachine.

� De bovenste trekkop wordt naar boven bewogen en de geleverde trekkracht wordt ge-meten.

� De middensectie van de stent wordt samengedrukt door de draad en de diameter ver-andering wordt opgemeten.

4.1.2 Ringbelasing

De trekkracht T in de draad die Cardiatis opmeet, is om te rekenen naar een radiale lijnbelas-ting q rond de middensectie van de stent via de ketelformule (4.1) voor druk op dunwandigecilindervaten [18] (Figuur 4.2).

q =T

D/2(4.1)

37

Page 51: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 38

Figuur 4.1: Schema (links) en praktische (rechts) experimentele proefopstelling

F

F

F F

q

D/2

Figuur 4.2: Experiment ringbelasting (links) en verband met ketelformule (rechts) [16]

Het post-processing script (WireStent Multilayer post.py) verwerkt de resultaten van de ein-dige elementen berekening zodanig dat er voor het numerieke model ook een radiale lijn drukrond de omtrek van de middensectie aangemaakt wordt (zie paragraaf 3.6). De experimenteledata van Cardiatis is terug te vinden in bijlage C.

4.1.3 Data Cardiatis

Cardiatis voerde bovenstaande beschreven proef uit op de multilayer stent ST202: 320-80-01.De naamgeving is verklaard in paragraaf 2.3.2. Onderstaande tabel geeft de parameters weer.Cardiatis heeft een methode ontwikkeld om de radiale belasting van de stent te bepalen uithet experiment uit paragraaf 4.1.1. Uitleg op basis van figuur 4.3:

� Er wordt een grafiek uitgezet van de gemeten trekkracht in functie van de verplaatsingvan de trekkoppen.

� Er worden twee raaklijnen getekend aan de curve.

� De ordinaat van het snijpunt van de twee raaklijnen is de radiale belasting van de stent.

Page 52: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 39

Tabel 4.1: ST202: 320-80-01

Stent 320-80-01

Uitwendige diameter De0 8 mmDraad diameter d 0.08 mmAantal draden n 80 -Pitch-hoek β0 35 °

Stentlengte L0 60 mmElasticiteitsmodulus E 221000 MN/m2

Glijdingsmodulus G 81000 MN/m2

Figuur 4.3: Bepalen van de radiale belasting van de stent

Deze methode wordt gevolgd voor de stent ST202 (Figuur 4.4). Er treedt echter een pro-bleem op: er kan maar een raaklijn getekend worden. De informatie verstrekt door Cardiatisis bijgevolg onvolledig of niet correct. De radiale belasting van de stent bedraagt volgensCardiatis 0.95N .

Page 53: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 40

Figuur 4.4: Bepalen van de radiale belasting van de ST202 stent op basis van de experimentele data

Uit de simulatie kan een zelfde soort grafiek bekomen worden (Figuur 4.5). De ordinaat vanhet snijpunt ligt op 0.9N en benadert de meegedeelde waarde van Cardiatis goed.

Figuur 4.5: Bepalen van de radiale belasting van de ST202 stent

4.2 Vergelijking van het model met het experiment

In figuur 4.6 worden de experimentele resultaten van Cardiatis ('Experiment') vergelekenmet de numerieke berekeningen binnen Abaqus ('Simulation').

Page 54: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 41

Figuur 4.6: Radiale lijn druk in functie van de diameter middensectie: ST202: 320-80-01

Het verloop van beide curves in figuur 4.6 komt ongeveer overeen voor een diameter tussen8 en 3 mm. Voor nog kleinere diameters worden de verschillen tussen de curves snel groter.De afwijking tussen de curves kan verklaard worden door:

� Fouten in het eindige elementen model:

– Geweven draden uit dezelfde laag worden in hun kruisingen vastgehouden relatieften opzichte van elkaar (connectortype join, paragraaf 3.4.4). In werkelijkheidkan er verschuiving optreden. Hierdoor zal het model zich stijver gedragen.

– Geweven draden uit verschillende lagen kunnen wrijvingsloos glijden over elkaar(connectortype slide-plane, paragraaf 3.4.4). In werkelijkheid zal er een zekerewrijving optreden.

– De orientatie van deze slide-plane connectoren verdraait met toenemende ver-vorming. De glijvlakken zijn gedefinieerd door deze orientatie en draaien dus mee(Figuur 4.7). Bij grote vervormingen staan de glijvlakken niet meer correct. Dedraden kunnen dan door elkaar kunnen glijden (Dit is vooral een probleem bij eenradiale belasting op het gehele oppervlak, zie figuur 4.8). Dit kan de toenemendeafwijking bij kleinere diameters verklaren.

– Binnen de numerieke berekeningen is geen rekening gehouden met het gewicht vanproefdraad en stent.

Page 55: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 42

Figuur 4.7: Verdraaien van de orientatie van de slide-plane connectoren. De initieleorientatie (boven), de orientatie na radiale centrale belasting (onder)

Figuur 4.8: De buitenste laag glijdt aan het vrije uiteinde van de stent door de middelste enbinnenste laag van de stent bij een radiale belasting

Page 56: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 43

� Fouten in het experiment:

– De proefdraad kan schuin rond de as van de stent gewikkeld worden of in hetproces verschuiven. In de numerieke berekeningen wordt een loodrechte windingbelast.

– Er is geen informatie voorhanden over hoe de diameter opgemeten wordt en metwelke nauwkeurigheid dit gebeurt.

Bovendien is er slechts een experiment verricht om de deugdelijkheid van het numeriek modelna te gaan. Dit is te weinig om een goede verificatie te verkrijgen. In de toekomst zullennog experimenten gevoerd moeten worden om een beter begrip omtrent de werking van demultilayer draadstent te verkrijgen en om het model te controleren.

4.3 Vergelijking van het model met de analytische resultaten

Zoals besproken in deel 3.5 kunnen er analytische curves opgesteld worden die het gedrag vande multilayer stent benaderen. Deze analytische curves worden vergeleken met de numeriekeresultaten. Het doel hiervan is nagaan of de resultaten bekomen voor het axiale en radialebelastingsgeval qua grote-orde en verloop overeenkomen.

Figuur 4.9: Axiale trekkracht in functie van de stent lengte: ST202: 320-80-01

Page 57: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 44

Figuur 4.10: Radiale druk in functie van de diameter: ST202: 320-80-01

De curven van de numerieke simulatie benaderen deze van de analytische benadering goed(Figuur 4.9 en 4.10). De goede overeenkomst is als volgt te verklaren: in het numeriek modelkunnen draden uit verschillende lagen wrijvingsloos over elkaar glijden, enkel de contactdrukwordt overgedragen. In het analytische model is er geen samenwerking tussen de verschil-lende lagen. Beide modellen maken ongeveer dezelfde vereenvoudigingen ten opzichte van derealiteit.

4.4 Vergelijking met de singlelayer geweven draadstent

De singlelayer geweven draadstents zijn stents met slechts een laag geweven draden. Voormeer informatie over deze stents wordt verwezen naar de scriptie van Van Loo [16].

In deze paragraaf wordt de singlelayer met de multilayer geweven draadstent vergeleken voorde drie belastingsgevallen. De multilayer draadstent is nog steeds de ST202: 320-80-01 vanCardiatis. Er wordt een singlelayer draadstent opgebouwd met exact dezelfde parameters alsde multilayer. Daarnaast wordt ook getracht een singlelayer draadstent op te bouwen dievoldoet aan de gangbare normen wat betreft het aantal draden en draaddiameter en die destijfheden van de multilayer draadstent benaderd.

Page 58: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 45

4.4.1 Singlelayer geweven draadstent met zelfde parameters

De parameters van de singlelayer draadstent zijn deze zoals in tabel 4.1. De naamgevingin de figuren is uitgelegd in deel 4.6.2. In figuur 4.11, 4.12 en 4.13 stelt de rode curve demultilayer draadstent en de groene de singlelayer draadstent voor.

Figuur 4.11: Axiale trekkracht in functie van de stentlengte

Page 59: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 46

Figuur 4.12: Radiale druk in functie van de diameter

Figuur 4.13: Radiale lijn druk in functie van de diameter middensectie

Uit bovenstaande figuren kan opgemerkt worden dat voor een zelfde hoeveelheid materiaal:

� de multilayer draadstent een grotere stijfheid bezit in de axiale richting (Figuur 4.11).

Page 60: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 47

� de multilayer draadstent beduidend stijver is in de radiale richting (Figuur 4.12).

� de centrale radiale stijfheid ongeveer gelijk is voor de singlelayer draadstent en de multi-layer draadstent.(Figuur 4.13).

Deze vaststellingen worden als volgt verklaard: de diameter van de stent slaat op de uitwen-dige diameter. De diameter van de middelste en binnenste laag van de multilayer stent iskleiner dan de uitwendige. Hoe kleiner de diameter van de stent, hoe stijver de stent in axialeen radiale richting is (paragraaf 4.6).

De foreshortening wordt ook nader bekeken.

Figuur 4.14: Foreshortening in functie van de diameter

De foreshortening curves van single- en multilayer geweven draadstent zijn praktisch dezelfde.Dit is te verklaren doordat de foreshortening onafhankelijk is van de draaddiameter en hetaantal draden (paragraaf 4.6). Enkel pitch-hoek en stentdiameter (bij onvolledige expansie,zie paragraaf 4.6) beınvloeden de foreshortening. Beide stents hebben dezelfde parametersen bijgevolg dus ook dezelfde foreshortening.

4.4.2 Singlelayer geweven draadstent met zelfde eigenschappen

In deze paragraaf wordt een ’gangbare’ singlelayer draadstent opgebouwd die de stijfheden vande multilayer stent ST202: 320-80-01 benaderd. Bij een gebruikelijke singlelayer draadstentligt het aantal gebruikte draden tussen de 24 en 48 draden [5]. Cardiatis maakt singlelayer

Page 61: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 48

stents met 24 draden. De pitch-hoek, stentlengte en stentdiameter blijven behouden enbedragen respectievelijk 35°, 60 mm en 8 mm. Alleen de draaddiameter dient dan nogaangepast te worden. Een draaddiameter van 0.12 mm blijkt een goede keuze. De parameterszijn samengevat in tabel 4.2.

Tabel 4.2: Singlelayer stent die de stijfheden van de multilayer ST202: 320-80-01 benaderd

Uitwendige diameter De0 8 mmDraad diameter d 0.12 mmAantal draden n 24 -Pitch-hoek β0 35 °

Stentlengte L0 60 mmElasticiteitsmodulus E 221000 MN/m2

Glijdingsmodulus G 81000 MN/m2

Figuur 4.15: Axiale trekkracht in functie van de stentlengte

Page 62: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 49

Figuur 4.16: Radiale druk in functie van de diameter

Figuur 4.17: Radiale lijn druk in functie van de diameter middensectie

Uit bovenstaande figuren wordt opgemerkt dat de axiale, radiale en centrale radiale stijfheidvoor multilayer en singlelayer draadstent ongeveer gelijk lopen. Voor deze drie eigenschappen

Page 63: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 50

heeft de multilayer draadstent geen voordelen ten opzichte van de singlelayer draadstent. Eris wel een verschil in draadoppervlakte µ en de hoeveelheid gebruikt materiaal (Tabel 4.3).Over de draadoppervlakte van de multilayer geweven draadstent is wat onduidelijkheid. Hetis niet duidelijk welke draden juist contact zullen maken met de arteriewand (Wanneer enkelde buitenste laag contact maakt: 0.181, wanneer alle lagen contact maken: 0.452).

Tabel 4.3: Stent eigenschappen

Singlelayer Multilayer

Draadoppervlakte µ (-) 0.206 0.181–0.452Materiaal verbruik (mm2) 28.09 42.06

De foreshortening is voor beide stents dezelfde (Figuur 4.18).

Figuur 4.18: Foreshortening in functie van de diameter

4.5 Aanpassingen aan het model

In deze paragraaf wordt het numeriek model aangepast om een betere benadering te krijgenmet de experimentele data geleverd door Cardiatis. Hierbij wordt de fysische correctheidvan het model op de achtergrond geplaatst en wordt enkel een betere overeenkomst met deexperimentele data nagestreefd.

Page 64: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 51

Om het probleem van de verdraaiing van de glijvlakken van de slide-plane connectorente verhelpen, worden de connectoren cyanred, blueblack, magnentablack en greenmagentaverwijderd. Dit zijn de connectoren tussen de niet verweven draden (blauwe connectoren infiguur 3.14 (onder)). Enkel de connectoren tussen de verweven draden, uit dezelfde en uitverschillende lagen, worden opgenomen. Dit zijn de slide-plane connectoren greenred enbluecyan, en de join connectoren redblack, greenblue en cyanmagenta.

Figuur 4.19: Radiale lijn druk in functie van de diameter middensectie: ST202: 320-80-01

De overeenkomst tussen de experimentele en numerieke curve is nu heel goed (Figuur 4.19).Er is echter een groot probleem met de convergentie van de eindige elementen berekening. Inbijna alle gevallen zal voor dit model geen stabiel resultaat gevonden worden. Dit probleemtreedt ook op voor het eerste model maar in mindere mate. De oorzaak hiervan kan devolgende zijn: de niet geweven draden zijn niet direct met elkaar verbonden en kunnen doorelkaar schieten bij grote vervormingen (Figuur 4.20 en figuur 4.21). Abaqus onderstelt dathet model niet stabiel is en stopt de berekeningen. Hierdoor worden deze aanpassingen inhet verloop van dit hoofdstuk niet aangehouden.

Page 65: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 52

Figuur 4.20: Vervormingen radiale centrale belasting

Figuur 4.21: Onvervormde middensectie (links) en vervormde middensectie (rechts) bij een radialecentrale belasting

4.6 Parameterstudie

4.6.1 Overzicht

Op basis van de ST202: 320-80-01 stent van Cardiatis wordt een eerste parameteronderzoekverricht. De onderzochte stents zijn opgenomenen in Tabel 4.4. Het effect van een veranderingvan draaddiameter, aantal draden, pitch-hoek, stentdiameter en stentlengte op het axiale,radiale en centrale belastinggeval wordt nagegaan.

Page 66: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 53

Tabel 4.4: Overzicht parameterstudie

externe stentdiameter draaddiameter aantal draden pitch-hoek stentlengteDe d n β L

(mm) (mm) (-) (°) (mm)

6 0.08 80 25 608 . . . . . . . . . . . .10 . . . . . . . . . . . .

8 0.04 80 35 60. . . 0.08 . . . . . . . . .. . . 0.12 . . . . . . . . .

8 0.08 50 35 60. . . . . . 80 . . . . . .. . . . . . 110 . . . . . .

8 0.08 80 30 60. . . . . . . . . 35 . . .. . . . . . . . . 40 . . .. . . . . . . . . 45 . . .

8 0.08 80 25 40. . . . . . . . . . . . 60. . . . . . . . . . . . 80. . . . . . . . . . . . 100

4.6.2 Naamgeving

Elke simulatie krijgt een unieke naam, de structuur is steeds dezelfde. Op basis van eenvoorbeeld wordt de naamgeving uitgelegd. De naam 'multi-D8-d.08-n80-b35-L60' wordtals volgt verklaard:

� arbitraire prefix: multi-

� externe stentdiameter D = 8 mm

� draaddiameter d = 0.08 mm

� aantal draden n = 80

� pitch-hoek β = 35°

� stentlengte L = 60 mm

Page 67: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 54

Het script WireStent_Multilayer _data.py verwerkt deze namen en bouwt met de functieMultiLayerToAbaqus (paragraaf 3.4) het eindige elementen model op. Het inlezen van denamen kan via een tekstbestand of rechtstreeks in het script gebeuren, zie bijlage A.

4.6.3 Bespreking parameterstudie

In deze paragraaf worden de resultaten van het parameteronderzoek besproken. De grafiekenaxiale langskracht - stentlengte, radiale druk - stentdiameter en radiale lijn druk - stentdia-meter worden nader bekeken. De hellingen van de curves zijn een maat voor respectievelijkde axiale stijfheid, de radiale stijfheid en de centrale radiale stijfheid. Daarenboven wordenook foreshortening - stentdiameter grafieken aangemaakt.

De parameterstudie toont aan dat de multilayer geweven draad stent een overeenstemmendmechanisch gedrag vertoont aan de singlelayer geweven draadstent voor. Een parameteron-derzoek voor de singlelayer geweven draadstent werd uitgevoerd in de scriptie van Van Loo[16].

Variatie van de draaddiameter

Om de invloed van de draaddiameter na te gaan, wordt uitgegaan van de berekeningenvan 'multi-D8-d.04-n80-b35-L60', 'multi-D8-d.08-n80-b35-L60' en 'multi-D8-d.12-

n80-b35-L60'. Figuur 4.22, figuur 4.23 en figuur 4.24 tonen aan dat respectievelijk deaxiale stijfheid, radiale stijfheid en centrale radiale stijfheid heel sterk stijgen met toenemendedraaddiameter. Dit is een logisch resultaat daar er meer materiaal in de stent verwerkt wordtbij grotere draaddiameters. De foreshortening is onafhankelijk van de draaddiameter (Figuur4.25).

Variatie van het aantal draden

Om de invloed van het aantal draden na te gaan, wordt uitgegaan van de berekeningen van'multi-D8-d.08-n50-b35-L60', 'multi-D8-d.08-n80-b35-L60' en 'multi-D8-d.08-n110

-b35-L60'. Figuur 4.26, figuur 4.27 en figuur 4.28 tonen aan dat respectievelijk de axialestijfheid, radiale stijfheid en centrale radiale stijfheid toenemen als het aantal geweven dradentoeneemt. Dit is een logisch resultaat daar er meer materiaal in de stent verwerkt wordt mettoenemend aantal draden. De foreshortening is onafhankelijk van het aantal draden (Figuur4.29).

Variatie van de pitch-hoek

Om de invloed van de pitch-hoek na te gaan, wordt uitgegaan van de berekeningen van 'multi

-D8-d.08-n80-b30-L60', 'multi-D8-d.08-n80-b35-L60', 'multi-D8-d.08-n80-b40-L60'en'multi-D8-d.08-n80-b45-L60'. Figuur 4.30 toont aan dat de axiale stijfheid toeneemt

Page 68: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 55

met toenemende pitch-hoek. De radiale stijfheid en centrale radiale stijfheid nemen echteraf met toenemende pitch-hoek (Figuur 4.31 en 4.32). Dit kan als volgt verklaard worden:een kleinere pitch-hoek zorgt ervoor dat de draden een grotere hoek insluiten met de axialerichting. Als er nu een axiale trekkracht aangelegd wordt, willen de draden een kleinere hoekmaken met de axiale richting, hoe groter deze hoek dus initieel was, des te minder kracht ernodig is om de stent axiaal te vervormen. De radiale en centrale radiale stijfheid vergrotenmet afnemende pitch-hoek omdat er een groter contact oppervlak gevormd wordt en meermateriaal in elke sectie loodrecht op de axiale as zit.

De foreshortening neemt toe met afnemende pitch-hoek (Figuur 4.33). De verklaring hiervooris analoog aan deze hierboven.

Variatie van de stentdiameter

De diameter van de stent wordt aangepast aan de grootte van het natuurlijke kanaal waar destent geımplanteerd zal worden. Om de invloed van de diameter na te gaan, wordt uitgegaanvan de berekeningen van 'multi-D6-d.08-n80-b35-L60', 'multi-D8-d.08-n80-b35-L60','multi-D10-d.08-n80-b35-L60'. Figuur 4.34, figuur 4.35 en figuur 4.36 tonen aan datrespectievelijk de axiale stijfheid, radiale stijfheid en centrale radiale stijfheid sterk afnemenmet toenemende stentdiameter. De stent wordt minder compact.

Uit figuur 4.37 blijkt dat de foreshortening, bij volledige expansie, heel lichtjes toeneemt mettoenemende stentdiameter. Wanneer de expansie niet volledig gebeurt, zal een stent met eengrotere diameter een kleinere foreshortening bezitten (bv. een stent met grotere diameter dandeze van de arterie). Een oversized multilayer draadstent heeft dus een gunstigere foreshor-tening. Een stent met diameter 8mm geplaatst in een arterie met diameter 6mm reduceertde foreshortening ten opzicht van een stent met diameter 6mm met meer dan 50%.

Variatie van de stentlengte

De lengte van de stent wordt aangepast aan de lengte van het letsel. Om de invloed vande lengte na te gaan, wordt uitgegaan van de berekeningen van 'multi-D8-d.08-n80-b35

-L40', 'multi-D8-d.08-n80-b35-L60', 'multi-D8-d.08-n80-b35-L80' en 'multi-D8-d

.08-n80-b35-L100'. De radiale stijfheid en centrale radiale stijfheid zijn onafhankelijk vande stentlengte (Figuur 4.40 en 4.41). Voor dezelfde axiale trekkracht zal een langere stentmeer verlengen dan een kortere (Figuur 4.38). De procentuele verlenging, formule 4.2, isechter ongeveer dezelfde (Figuur 4.39). De foreshortening is onafhankelijk van de stentlengte(Figuur 4.29).

Procentuele verlenging =lengte

initiele lengte× 100 (4.2)

Page 69: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 56

4.6.4 Variatie van de draaddiameter

Figuur 4.22: Langskracht in functie van de diameter voor verschillende draaddiameters

Figuur 4.23: Radiale druk in functie van de diameter voor verschillende draaddiameters

Page 70: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 57

Figuur 4.24: Radiale lijn druk in functie van de diameter middensectie voor verschillende draaddi-ameters

Figuur 4.25: Foreshortening in functie van de diameter voor verschillende draaddiameters

Page 71: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 58

4.6.5 Variatie van het aantal draden

Figuur 4.26: Langskracht in functie van de diameter voor een verschillend aantal draden

Figuur 4.27: Radiale druk in functie van de diameter voor eev verschillend aantal draden

Page 72: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 59

Figuur 4.28: Radiale lijn druk in functie van de diameter middensectie voor een verschillend aantaldraden

Figuur 4.29: Foreshortening in functie van de diameter voor een verschillend aantal draden

Page 73: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 60

4.6.6 Variatie van de pitch-hoek

Figuur 4.30: Langskracht in functie van de diameter voor verschillende pitch-hoeken

Figuur 4.31: Radiale druk in functie van de diameter voor verschillende pitch-hoeken

Page 74: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 61

Figuur 4.32: Radiale lijn druk in functie van de diameter middensectie voor verschillende pitch-hoeken

Figuur 4.33: Foreshortening in functie van de diameter voor verschillende pitch-hoeken

Page 75: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 62

4.6.7 Variatie van de stentdiameter

Figuur 4.34: Langskracht in functie van de diameter voor verschillende stentdiameters

Figuur 4.35: Radiale druk in functie van de diameter voor verschillende stentdiameters

Page 76: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 63

Figuur 4.36: Radiale lijn druk in functie van de diameter middensectie voor verschillende stentdia-meters

Figuur 4.37: Foreshortening in functie van de diameter voor verschillende stentdiameters

Page 77: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 64

4.6.8 Variatie van de stentlengte

Figuur 4.38: Langskracht in functie van de diameter voor verschillende stentlengtes

Figuur 4.39: Langskracht in functie van de percentuele diameter verandering voor verschillendestentlengtes

Page 78: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 65

Figuur 4.40: Radiale druk in functie van de diameter voor verschillende stentlengtes

Figuur 4.41: Radiale lijn druk in functie van de diameter middensectie voor verschillende stentleng-tes

Page 79: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 4. Resultaten 66

Figuur 4.42: Foreshortening in functie van de diameter voor verschillende stentlengtes

Page 80: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 5

Besluit

De combinatie van pyFormex, Python en Abaqus maakt het mogelijk de multilayer gewevendraadstent te modelleren. Door het gebruik van scripts en door de parametrische opbouw vande geometrie is het mogelijk om eenvoudig verschillende draadstents aan te maken. Bovendienvormt de tandem Python – gnuplot een krachtige post-processor.

De analytische formules opgesteld door Jedwab & Clerc [10] en gecorrigeerd door Van Loo[16] voor de singlelayer geweven draadstent werden aangepast aan de multilayer gewevendraadstent. Hierbij werd verondersteld dat de multilayer draadstent opgebouwd is uit meer-dere onafhankelijke concentrische singlelayer draadstents met verschillende diameters. Dezeformules maken het mogelijk reeds een idee te verkrijgen van de mechanische eigenschappenvan de multilayer geweven draadstent.

Met pyFormex is het mogelijk op een relatief eenvoudige manier de geometrische structuurvan elke geweven draadstent te modelleren. Het gebruik van connectoren om het contacttussen de verschillende draden te simuleren heeft als voordeel dat de numerieke berekeningengeen zware rekenkracht vereisen. Het nadeel hiervan is dat door de discretisatie van de raak-punten tussen de verschillende draden, een moeilijkheid gecreeerd wordt om glijding tussende draden te simuleren. De verschillende lagen in het model moeten relatief ten opzicht vanelkaar een zekere beweging toelaten. Hierdoor wordt het contact tussen de lagen gekarak-teriseerd door connectoren die kunnen glijden. Binnen Abaqus wordt dit gerealiseerd doorslide-plane connectoren. De connectoren hebben echter de eigenschap dat de opgelegdeglijvlakken verdraaien bij grote vervormingen, met als gevolg dat sommige draden door el-kaar kunnen glijden. Een oplossing voor dit probleem zou de doeltreffendheid van het modelzeker vergroten.

Na het opbouwen van het EEM werden de resultaten besproken. De vergelijking van hetmodel met een eerste experiment toonde aan dat er, voor beperkte vervormingen, een goe-de overeenkomst was tussen beide. Bij grotere vervormingen werden de afwijkingen tussenexperiment en model sterk groter. In de toekomst zullen er meerdere experimenten gevoerddienen te worden om het numeriek model te controleren. Bovendien zullen deze proeven eenbeter inzicht scheppen in het exacte gedrag van de verschillende lagen (verglijden, relatievelengte verandering, wrijving, . . . ).

Uit de vergelijking van de multilayer draadstent met de singlelayer draadstent bleek dat het

67

Page 81: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Hoofdstuk 5. Besluit 68

mogelijk was een singlelayer draadstent aan te maken die het mechanische gedrag van demultilayer draadstent benaderde. Het voordeel van de multilayer draadstent is de eventueelgrotere draadoppervlakte, het juiste aantal draden dat deel uitmaakt van de draadoppervlakteis nog onzeker.

Een parameterstudie voor de multilayer geweven draadstent werd uitgevoerd. Het volgendemechanische gedrag werd vastgesteld: de radiale stijfheid neemt toe voor kleinere stentdia-meters, grotere draaddiameters, meer draden en grotere pitch-hoeken. De radiale stijfheid isonafhankelijk van de stentlengte. De axiale stijfheid neemt toe voor kleinere diameters, gro-tere draaddiamters, meer draden, kleinere pitch-hoeken en kortere stents. De foreshorteningis onafhankelijk van de draaddiameter, het aantal draden en de stentlengte en neemt toe voortoenemende pitch-hoeken en toenemende stentdiameters (bij volledige expansie). Wanneerde expansie echter niet volledig gebeurt, bezit een stent met een grotere diameter een kleinereforeshortening. Een oversized multilayer draadstent heeft dus een gunstigere foreshortening.Deze vaststellingen zijn conform de singlelayer geweven draadstent.

Page 82: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage A

Handleiding tot het gebruik van de

multilayer draadstent scripts

Deze bijlage beschrijft hoe er praktisch van de scripts gebruik gemaakt kan worden om eenmultilayer draadstent met weefpatroon 320-80-01 aan te maken.

A.1 Stap 1: Meegeven parameters

De parameters, uit tabel 4.1, worden meegegeven in het script WireStent Multilayer data.py.De geometrische parameters worden onderaan dit script toegekend. Dit kan gebeuren op 2manieren:

� de configuraties worden in een tekstbestand geplaatst en de naam van dit tekstbestandwordt meegegeven (lijn 122 en 123 in script A.1).

multilayer.txt

#L i j s t met c o n f i g u r a t i e s

D8−d.08−n80−b35−L60

� de configuratie wordt rechtstreeks meegegeven (lijn 127 in script A.1).

Script A.1: Geometrische parameters

121 # Mu l t i p l e examples cou ld be run l i k e t h i s :

122 f i l e s = [ 'multilayer.txt' ]

123 p r o c e s s F i l e s ( f i l e s , p r e f i x='multi -' )

124

125 # S i n g l e example

126 # Create Ababqus i npu t f i l e s

127 data = proc e s s Job ( 'D8 -d.08-n80 -b35 -L60' , p r e f i x='multi -' )

Het aantal elementen in een strut, de materiaal eigenschappen en de belastingsgevallen wordenmet de functie execute meegegeven (Script A.2).

Script A.2: Functie execute

34 def ex e cu t e ( data ) :

35 ””” Execute the WireStentToAbaqus f u n c t i o n wi th s p e c i f i e d data .

36

69

Page 83: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage A. Handleiding tot het gebruik van de multilayer draadstent scripts 70

37 This f u n c t i o n t a k e s a d i c t i o n a r y w i th the f o l l o w i n g s t e n t data

s e t :

38 ' jobname ' , 'D ' , 'd ' , 'n ' , 'b ' , 'L ' ( o p t i o n a l )

39 and t r a n s l a t e s t h i s to a c o r r e c t WireStentToAbaqus c a l l ,

f i l l i n g i n

40 the d e f a u l t v a l u e s f o r the m i s s i n g arguments .

41 ”””

42 r e t u r n Mult iLayerToAbaqus ( jobname = data [ 'jobname ' ] ,

43 s t e n t l e n g t h = f l o a t ( data [ 'L' ] ) ,

44 s t e n t d i ame t e r = f l o a t ( data [ 'D' ] ) ,

45 w i r e d i ame t e r = f l o a t ( data [ 'd' ] ) ,

46 number w i r e s = i n t ( data [ 'n' ] ) ,

47 p i t c h a n g l e = f l o a t ( data [ 'b' ] ) ,

48 number e lems = 4 ,

49 young modulus = 221000 . ,

50 shea r modu lu s = 81000 . ,

51 l o a d c a s e s = [ [ 'axial ' , 'disp' , 'auto' ] ,

52 [ 'radial ' , 'disp' , 'auto' ] ,

53 [ 'central ' , 'disp' , 'auto' ] ,

54 ] ,

55 pos t = True

56 )

A.2 Stap 2: Aanmaken Abaqus input bestand

Nu dat aan alle parameters een waarde is toegekend, kan het geometrisch model wordenopgebouwd. Vervolgens worden de Abaqus input bestanden en het post-processor bestandaangemaakt. Dit gebeurt met een commando op mecaflix :

pyformex --nogui WireStent_Multilayer_data.py

De resulterende bestanden zijn:

� multi−D8−d.08−n80−b35−L60−ad.inp, multi−D8−d.08−n80−b35−L60−cd.inp,multi−D8−d.08−n80−b35−L60−rd.inp

� multi−D8−d.08−n80−b35−L60.post.py

De eerste drie bestanden zijn de Abaqus input files, voor de drie belastingsgevallen. Hetlaatste bestand is het post-processing bestand dat later gebruikt zal worden.

A.3 Stap 3: Uitvoeren eindige elementen simulatie

De Abaqus input bestanden bevatten alle informatie die Abaqus nodig heeft om een eindigeelementen berekening uit te voeren. De opdracht om de berekeningen te starten, kan op 2manieren gegeven worden:

� berekening op mecaflix met commando’s:

Page 84: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage A. Handleiding tot het gebruik van de multilayer draadstent scripts 71

abaqus job=multi-D8-d.08-n80-b35-L60-ad interactive

abaqus job=multi-D8-d.08-n80-b35-L60-cd interactive

abaqus job=multi-D8-d.08-n80-b35-L60-rd interactive

of meerdere jobs laten lopen met 1 commando

abqu multi-D8-d.08-n80-b35-L60-ad.inp multi-D8-d.08-n80-b35

-L60-cd.inp multi-D8-d.08-n80-b35-L60-rd.inp

� berekening op de rekencluster, met commando:

tocluster multi-D8-d.08-n80-b35-L60-*.inp

De eerste methode wordt afgeraden voor grote jobs daar mecaflix zwaar belast wordt doorde berekeningen en sterk wordt vertraagd voor andere gebruikers. De tweede methode wordtaangeraden omdat de cluster sneller de berekeningen kan uitvoeren.

Na het beeindigen van de berekeningen geeft Abaqus een rist aan bestand terug (op mecaflixof op de cluster). De belangrijkste zijn (ook voor -cd en -rd):

� multi−D8−d.08−n80−b35−L60−ad.dat

� multi−D8−d.08−n80−b35−L60−ad.odb

� multi−D8−d.08−n80−b35−L60−ad.msg

Het eerste bestand bevat alle resultaten in tekst vorm en zal in volgende stap verwerkt worden.Het tweede bestand kan geopend worden in Abaqus/CAE of Abaqus/viewer en geeft de stenten de resultaten grafisch weer. Het laatste bestand bevat alle stappen die Abaqus doorlopenheeft om een resultaat te bekomen, dit bestand toont ook de eventuele foutmeldingen.

A.4 Stap 4: Post-processing

De laatste stap is het aanmaken van de plots. Dit gebeurt door het in stap 2 bekomen post-processing bestand (multi−D8−d.08−n80−b35−L60.post.py) te laten lopen. Dit kan methet commando:

python multi-D8-d.08-n80-b35-L60.post.py

Het script laad het script WireStent Multilayer post.py in. Dit laatste script verwerkt de.dat files uit stap 3. Volgende bestanden worden aangemaakt:

� multi−D8−d.08−n80−b35−L60−ad.data, multi−D8−d.08−n80−b35−L60−cd.data,multi−D8−d.08−n80−b35−L60−rd.data

Page 85: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage A. Handleiding tot het gebruik van de multilayer draadstent scripts 72

Deze bestanden bevatten de resultaten van de modellering in tabel vorm (tekstbestand onder-aan deze pagina). Uit deze bestanden worden de plots aangemaakt. WireStent Multilayer

post.py maakt standaard plots aan met de functie createDefaultJobPlots, het is echtermogelijk een hele reeks andere plots aan te maken, hiervoor wordt verwezen naar het bestandWireStent Multilayer post.py zelf en de thesis van Van Loo [16].

Een gnu-file wordt aan gemaakt en uiteindelijk de plots:

� multi−D8−d.08−n80−b35−L60.gnu

� multi−D8−d.08−n80−b35−L60−adu−L−F.png

� multi−D8−d.08−n80−b35−L60−cdu−D−q.png

� multi−D8−d.08−n80−b35−L60−rdu−D−p.png

� multi−D8−d.08−n80−b35−L60−L−D.png

multi-D8-d.08-b35-L60-adu.txt

# Data c r e a t e d by /home/wpcoppen/ s t e n t / W i r e S t e n t Mu l t i l a y e r p o s t .

pyc

# From r e s u l t s i n mu l t i−D8−d.08−n80−b35−L80−cd . dat

# inc , f o r c e , l eng th , d i amete r

0 0.000000 80.000000 8.000000

1 0.140092 83.883628 7.821544

2 0.229608 88.108555 7.614200

3 0.323062 92.293810 7.390783

4 0.424424 96.479066 7.148800

5 0.541711 100.565144 6.888217

6 0.676069 104.611553 6.609500

7 0.839599 108.578619 6.309567

8 1.045343 112.545686 5.984067

9 1.101774 113.537453 5.897817

10 1.124622 113.914324 5.864917

11 1.159871 114.449878 5.816500

12 1.197421 115.005268 5.766000

13 1.236049 115.560657 5.715000

14 1.275604 116.096211 5.663333

15 1.337219 116.929295 5.584000

16 1.437819 118.178921 5.462500

17 1.609182 120.063278 5.270000

18 1.646169 120.420314 5.231333

Page 86: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B

”Slide-plane”connectoren

Het gedrag van de slide-plane connectoren wordt nader bekeken. Meer bepaald wordtde opgelegde orientatie onderzocht. De orientatie van de slide-plane connector is uiterstbelangrijk daar deze het glijvlak waarin de connector kan glijden bepaald. Deze orientatiewordt in het model van de multilayer geweven draadstent cilindrisch gedefinieerd opdat hetglijvak van elke connector tangentieel aan de omtrek van de stent zou zijn (paragraaf 3.4.4).In deze bijlage wordt nagegaan of de orientatie wel degelijk cilindrisch is binnen Abaqus.Hiervoor zijn een aantal testen uitgevoerd, bij elke test hoort een Abaqus input bestand.

B.1 1e model

B.1.1 con SP m01 cyl f.inp

Figuur B.1: Model een

Het model bestaat uit 2 frame3d en 1 conn3d2 element, respectievelijk in het groen enhet bruin voorgesteld in figuur B.1. Knoop 1 bevindt zich in de oorsprong van het globaalassenstelsel. Knoop 1 en 4 zijn ingeklemd. Er wordt een geconcentreerde kracht opgelegd inknoop 2 (Figuur B.1).

De connector is van het type slide-plane en de orientatie wordt cilindrische opgelegd zodatde e1-as van knoop 2 tot knoop 3 gaat, de e2-as in het vlak van figuur B.1 ligt en loodrechtop de e1-as staat en de e3-as in het vlak van figuur B.1 gaat. Met de e1-as, de e2-as en dee3-as zoals voorgesteld in figuur B.2.

73

Page 87: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 74

Figuur B.2: Connectortype slide-plane [9]

De grootte van de verplaatsingen wordt geplot (Figuur B.3).

Figuur B.3: Model een: vervormingen

B.1.2 con SP m01 cyl f rotatie.inp

Het model uit paragraaf B.1.1 wordt geroteerd rond de oorsprong, alle randvoorwaarden enbelastingen blijven dezelfde (Figuur B.4).

Figuur B.4: Model een: gedraait

Weer wordt de grootte van de verplaatsingen geplot (Figuur B.5). De verplaatsingen zijn

Page 88: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 75

voor beide modellen identiek. Dit bewijst dat de orientatie van de connector cilindrischgedefinieerd is.

Figuur B.5: Model een: vervormingen

B.2 2e model

B.2.1 con SP m02 cyl f rad.inp

Figuur B.6: Model twee

Page 89: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 76

Het model bestaat uit 16 frame3d en 8 conn3d2 element, respectievelijk in het groen enhet bruin voorgesteld in figuur B.6. Knoop 9 bevindt zich in de oorsprong van het globaalassenstelsel en is ingeklemd. Er worden geconcentreerde krachten opgelegd in alle 8 uitwen-dige knopen (knoop 1, 3, 5, 7, 10, 12, 14, 16) de krachten zijn allemaal naar de oorspronggericht (Figuur B.6).

De connectoren zijn van het type slide-plane en de orientatie wordt cilindrische opgelegdzodat de e1-as, de e2-as en de e3-as (Figuur B.2) een orientatie hebben als in figuur B.7.

Figuur B.7: Orientatie glijvlakken slide-plane connector

Uit figuur B.8 volgt dat elementen van de omtrek dezelfde vervorming ondergaan. De con-nectoren vervormen niet. De e1-as is dus georienteerd zoals in figuur B.7.

Page 90: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 77

Figuur B.8: Model twee: vervormingen

B.2.2 con SP m02 cyl d tan.inp

Het model uit paragraaf B.2.1 wordt behouden enkel de belasting wordt veranderd. Er wordteen verplaatsing opgelegd op alle 8 uitwendige knopen (knoop 1, 3, 5, 7, 10, 12, 14, 16). Deverplaatsingen zijn tangentieel aan de omtrek gericht (Figuur B.9).

Figuur B.9: Model twee: tangentiele verplaatsing

Page 91: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 78

Uit figuur B.10 volgt dat de elementen van de omtrek dezelfde verplaatsingen ondergaan. Deconnectoren verglijden wrijvingsloos met de e2-as. De e2-as is dus georienteerd zoals in figuurB.7.

Figuur B.10: Model twee: vervormingen tangentiele verplaatsing

B.2.3 con SP m02 cyl d z.inp

Het model uit paragraaf B.2.1 wordt behouden. Er wordt een verplaatsing opgelegd in alle 8uitwendige knopen (knoop 1, 3, 5, 7, 10, 12, 14, 16). De verplaatsingen zijn gericht volgensde z-as (Figuur B.9).

Page 92: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 79

Figuur B.11: Model twee: verplaatsing z-as

Figuur B.12 toont de vervormingen. De connectoren verhinderen de beweging niet, de e3-asis bijgevolg georienteerd zoals in figuur B.7.

Figuur B.12: Model twee: vervormingen verplaatsing z-as

Page 93: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 80

B.3 Opmerking

Binnen de GUI van Abaqus worden de cilindrisch gedefinieerde orientaties niet correct weer-gegeven! Vergelijk de opgegeven orientatie (Figuur B.7) met deze weergegeven binnen Abaqus(Figuur B.13).

Figuur B.13: Weergave orientatie binnen de GUI van Abaqus

B.4 De Abaqus input files

B.4.1 con SP m01 cyl f.inp

Script B.1: con SP m01 cyl f.inp

1 ** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

2 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

3 **

4 *HEADING

5 Model : c o n n e c t o r i e n t s Date : 2007−04−05 Created by pyFormex

6 S c r i p t : c o n n e c t o r o r i e n t . py

7

8 *NODE, NSET=Na l l

9 1 , 0 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

10 2 , 9 .500000 e−01, 0 .000000 e+00, 0 .000000 e+00

11 3 , 1 .050000 e+00, 0 .000000 e+00, 0 .000000 e+00

12 4 , 2 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

13 *NSET,NSET=Nodeset 1

14 4 ,

15 *NSET,NSET=Nodeset 2

16 2 ,

Page 94: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 81

17 *NSET,NSET=Nodeset 3

18 1 ,

19 *ELEMENT, TYPE=CONN3D2, ELSET=E l emen t s e t 0

20 1 , 2 , 3

21 *ELSET , ELSET=E a l l

22 E l emen t s e t 0

23 *ORIENTATION , SYSTEM=CYLINDRICAL , NAME=Or i e n t a t i o n 0

24 0 .000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,1 . 000000

25 1 , 0 . 0

26 *CONNECTOR SECTION , ELSET=E l emen t s e t 0

27 SLIDE−PLANE

28 Or i e n t a t i o n 0

29 *ELEMENT, TYPE=FRAME3D, ELSET=E l emen t s e t 1

30 2 , 1 , 2

31 3 , 3 , 4

32 *ELSET , ELSET=E a l l

33 E l emen t s e t 1

34 *FRAME SECTION , ELSET=Element se t 1 , SECTION=CIRC , DENSITY=0.000007

35 0.100000

36

37 20600 .000000 , 81500.000000

38 *STEP , NLGEOM=yes

39 *STATIC

40 1 .000000 , 5 .000000 , 0 .001000 , 1 .000000

41 *BOUNDARY, OP=NEW

42 Nodeset 1 , 1

43 Nodeset 1 , 2

44 Nodeset 1 , 3

45 Nodeset 1 , 6

46 Nodeset 3 , 1

47 Nodeset 3 , 2

48 Nodeset 3 , 3

49 Nodeset 3 , 6

50 *BOUNDARY, TYPE=DISPLACEMENT, OP=NEW

51 *CLOAD, OP=NEW

52 Nodeset 2 , 2 , −10

53 *DLOAD, OP=NEW

54 *OUTPUT, HISTORY , VARIABLE=PRESELECT

55 *OUTPUT, FIELD , VARIABLE=PRESELECT

56 *ELEMENT OUTPUT, ELSET=E l emen t s e t 1

57 SF

58 *NODE PRINT , GLOBAL = no

59 U

60 COORD

61 *END STEP

B.4.2 con SP m01 cyl f rotatie.inp

Script B.2: con SP m01 cyl f rotatie.inp

1 ** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

2 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

3 **

4 *HEADING

Page 95: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 82

5 Model : c o nn e c t o r i e n t s−r o t Date : 2007−04−05 Created by pyFormex

6 S c r i p t : c o n n e c t o r o r i e n t . py

7

8 *NODE, NSET=Na l l

9 1 , 0 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

10 2 , 8 .869014 e−01, 3 .404495 e−01, 0 .000000 e+00

11 3 , 9 .802594 e−01, 3 .762863 e−01, 0 .000000 e+00

12 4 , 1 .867161 e+00, 7 .167359 e−01, 0 .000000 e+00

13 *NSET, NSET=cy l n od e s

14 Na l l

15 *TRANSFORM, NSET=cy lnode s , TYPE=C

16 0 . , 0 . , 0 . , 0 . , 0 . , 1 .

17 *NSET,NSET=Nodeset 1

18 4 ,

19 *NSET,NSET=Nodeset 2

20 2 ,

21 *NSET,NSET=Nodeset 3

22 1 ,

23 *ELEMENT, TYPE=CONN3D2, ELSET=E l emen t s e t 0

24 1 , 2 , 3

25 *ELSET , ELSET=E a l l

26 E l emen t s e t 0

27 *ORIENTATION , SYSTEM=CYLINDRICAL , NAME=Or i e n t a t i o n 0

28 0 .000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,1 . 000000

29 1 , 0 . 0

30 *CONNECTOR SECTION , ELSET=E l emen t s e t 0

31 SLIDE−PLANE

32 Or i e n t a t i o n 0

33 *ELEMENT, TYPE=FRAME3D, ELSET=E l emen t s e t 1

34 2 , 1 , 2

35 3 , 3 , 4

36 *ELSET , ELSET=E a l l

37 E l emen t s e t 1

38 *FRAME SECTION , ELSET=Element se t 1 , SECTION=CIRC , DENSITY=0.000007

39 0.100000

40

41 20600 .000000 , 81500.000000

42 *STEP , NLGEOM=yes

43 *STATIC

44 1 .000000 , 5 .000000 , 0 .001000 , 1 .000000

45 *BOUNDARY, OP=NEW

46 Nodeset 1 , 1

47 Nodeset 1 , 2

48 Nodeset 1 , 3

49 Nodeset 1 , 6

50 Nodeset 3 , 1

51 Nodeset 3 , 2

52 Nodeset 3 , 3

53 Nodeset 3 , 6

54 *BOUNDARY, TYPE=DISPLACEMENT, OP=NEW

55 *CLOAD, OP=NEW

56 Nodeset 2 , 2 , −10

57 *DLOAD, OP=NEW

58 *OUTPUT, HISTORY , VARIABLE=PRESELECT

59 *OUTPUT, FIELD , VARIABLE=PRESELECT

60 *ELEMENT OUTPUT, ELSET=E l emen t s e t 1

Page 96: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 83

61 SF

62 *NODE PRINT , GLOBAL = no

63 U

64 COORD

65 *END STEP

B.4.3 con SP m02 cyl f rad.inp

Script B.3: con SP m02 cyl f rad.inp

1 ** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

2 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

3 **

4 *HEADING

5 Model : c o n t e s t Date : 2007−04−04 Created by pyFormex

6 S c r i p t : c o n n e c t o r t e s t . py

7

8 *NODE, NSET=Na l l

9 1 , −1.570196e−16, −1.000000 e+00, 0 .000000 e+00

10 2 , −1.745064e−16, −9.500000e−01, 0 .000000 e+00

11 3 , −7.071068e−01, −7.071068e−01, 0 .000000 e+00

12 4 , −6.717514e−01, −6.717514e−01, 0 .000000 e+00

13 5 , 7 .071068 e−01, −7.071068e−01, 0 .000000 e+00

14 6 , 6 .717514 e−01, −6.717514e−01, 0 .000000 e+00

15 7 , −1.000000 e+00, 1 .224606 e−16, 0 .000000 e+00

16 8 , −9.500000e−01, 1 .163376 e−16, 0 .000000 e+00

17 9 , 0 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

18 10 , 1 .000000 e+00, −2.355158e−16, 0 .000000 e+00

19 11 , 9 .500000 e−01, 0 .000000 e+00, 0 .000000 e+00

20 12 , −7.071068e−01, 7 .071068 e−01, 0 .000000 e+00

21 13 , −6.717514e−01, 6 .717514 e−01, 0 .000000 e+00

22 14 , 7 .849624 e−17, 1 .000000 e+00, 0 .000000 e+00

23 15 , 5 .816880 e−17, 9 .500000 e−01, 0 .000000 e+00

24 16 , 7 .071068 e−01, 7 .071068 e−01, 0 .000000 e+00

25 17 , 6 .717514 e−01, 6 .717514 e−01, 0 .000000 e+00

26 *NSET, NSET=cy l n od e s

27 Na l l

28 *TRANSFORM, NSET=cy lnode s , TYPE=C

29 0 . , 0 . , 0 . , 0 . , 0 . , 1 .

30 *NSET,NSET=Nodeset 1

31 9 ,

32 *NSET,NSET=Nodeset 2

33 1 ,

34 3 ,

35 5 ,

36 7 ,

37 10 ,

38 12 ,

39 14 ,

40 16 ,

41 *ELEMENT, TYPE=CONN3D2, ELSET=E l emen t s e t 0

42 1 , 11 , 10

43 2 , 17 , 16

44 3 , 15 , 14

Page 97: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 84

45 4 , 13 , 12

46 5 , 8 , 7

47 6 , 4 , 3

48 7 , 2 , 1

49 8 , 6 , 5

50 *ELSET , ELSET=E a l l

51 E l emen t s e t 0

52 *ORIENTATION , SYSTEM=CYLINDRICAL , NAME=Or i e n t a t i o n 0

53 0 .000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,1 . 000000

54 1 , 0 . 0

55 *CONNECTOR SECTION , ELSET=E l emen t s e t 0

56 SLIDE−PLANE

57 Or i e n t a t i o n 0

58 *ELEMENT, TYPE=FRAME3D, ELSET=E l emen t s e t 1

59 9 , 9 , 11

60 10 , 10 , 16

61 11 , 9 , 17

62 12 , 16 , 14

63 13 , 9 , 15

64 14 , 14 , 12

65 15 , 9 , 13

66 16 , 12 , 7

67 17 , 9 , 8

68 18 , 7 , 3

69 19 , 9 , 4

70 20 , 3 , 1

71 21 , 9 , 2

72 22 , 1 , 5

73 23 , 9 , 6

74 24 , 5 , 10

75 *ELSET , ELSET=E a l l

76 E l emen t s e t 1

77 *FRAME SECTION , ELSET=Element se t 1 , SECTION=CIRC , DENSITY=0.000007

78 0.050000

79

80 20600 .000000 , 81500.000000

81 *STEP , NLGEOM=yes

82 *STATIC

83 1 .000000 , 5 .000000 , 0 .001000 , 1 .000000

84 *BOUNDARY, OP=NEW

85 Nodeset 1 , 1

86 Nodeset 1 , 2

87 Nodeset 1 , 3

88 *BOUNDARY, TYPE=DISPLACEMENT, OP=NEW

89 *CLOAD, OP=NEW

90 Nodeset 2 , 1 , −10.0

91 *DLOAD, OP=NEW

92 *OUTPUT, HISTORY , VARIABLE=PRESELECT

93 *OUTPUT, FIELD , VARIABLE=PRESELECT

94 *ELEMENT OUTPUT, ELSET=E l emen t s e t 0

95 SF

96 *NODE PRINT , GLOBAL = no

97 U

98 COORD

99 *EL PRINT , ELSET=E l emen t s e t 0

100

Page 98: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 85

101 CRF

102 CP

103 *END STEP

B.4.4 con SP m02 cyl d tan.inp

Script B.4: con SP m02 cyl d tan.inp

1 ** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

2 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

3 **

4 *HEADING

5 Model : con t e s t−c Date : 2007−04−17 Created by pyFormex

6 S c r i p t : c o n n e c t o r t e s t . py

7

8 *NODE, NSET=Na l l

9 1 , −1.570196e−16, −1.000000 e+00, 0 .000000 e+00

10 2 , −1.745064e−16, −9.500000e−01, 0 .000000 e+00

11 3 , −7.071068e−01, −7.071068e−01, 0 .000000 e+00

12 4 , −6.717514e−01, −6.717514e−01, 0 .000000 e+00

13 5 , 7 .071068 e−01, −7.071068e−01, 0 .000000 e+00

14 6 , 6 .717514 e−01, −6.717514e−01, 0 .000000 e+00

15 7 , −1.000000 e+00, 1 .224606 e−16, 0 .000000 e+00

16 8 , −9.500000e−01, 1 .163376 e−16, 0 .000000 e+00

17 9 , 0 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

18 10 , 1 .000000 e+00, −2.355158e−16, 0 .000000 e+00

19 11 , 9 .500000 e−01, 0 .000000 e+00, 0 .000000 e+00

20 12 , −7.071068e−01, 7 .071068 e−01, 0 .000000 e+00

21 13 , −6.717514e−01, 6 .717514 e−01, 0 .000000 e+00

22 14 , 7 .849624 e−17, 1 .000000 e+00, 0 .000000 e+00

23 15 , 5 .816880 e−17, 9 .500000 e−01, 0 .000000 e+00

24 16 , 7 .071068 e−01, 7 .071068 e−01, 0 .000000 e+00

25 17 , 6 .717514 e−01, 6 .717514 e−01, 0 .000000 e+00

26 *NSET, NSET=cy l n od e s

27 Na l l

28 *TRANSFORM, NSET=cy lnode s , TYPE=C

29 0 . , 0 . , 0 . , 0 . , 0 . , 1 .

30 *NSET,NSET=Nodeset 1

31 9 ,

32 *NSET,NSET=Nodeset 2

33 1 ,

34 3 ,

35 5 ,

36 7 ,

37 10 ,

38 12 ,

39 14 ,

40 16 ,

41 *ELEMENT, TYPE=CONN3D2, ELSET=E l emen t s e t 0

42 1 , 11 , 10

43 2 , 17 , 16

44 3 , 15 , 14

45 4 , 13 , 12

46 5 , 8 , 7

Page 99: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 86

47 6 , 4 , 3

48 7 , 2 , 1

49 8 , 6 , 5

50 *ELSET , ELSET=E a l l

51 E l emen t s e t 0

52 *ORIENTATION , SYSTEM=CYLINDRICAL , NAME=Or i e n t a t i o n 0

53 0 .000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,1 . 000000

54 1 , 0 . 0

55 *CONNECTOR SECTION , ELSET=E l emen t s e t 0

56 SLIDE−PLANE

57 Or i e n t a t i o n 0

58 *ELEMENT, TYPE=FRAME3D, ELSET=E l emen t s e t 1

59 9 , 9 , 11

60 10 , 10 , 16

61 11 , 9 , 17

62 12 , 16 , 14

63 13 , 9 , 15

64 14 , 14 , 12

65 15 , 9 , 13

66 16 , 12 , 7

67 17 , 9 , 8

68 18 , 7 , 3

69 19 , 9 , 4

70 20 , 3 , 1

71 21 , 9 , 2

72 22 , 1 , 5

73 23 , 9 , 6

74 24 , 5 , 10

75 *ELSET , ELSET=E a l l

76 E l emen t s e t 1

77 *FRAME SECTION , ELSET=Element se t 1 , SECTION=CIRC , DENSITY=0.000007

78 0.050000

79

80 20600 .000000 , 81500.000000

81 *STEP , NLGEOM=yes

82 *STATIC

83 1 .000000 , 5 .000000 , 0 .001000 , 1 .000000

84 *BOUNDARY, OP=NEW

85 Nodeset 1 , 1

86 Nodeset 1 , 2

87 Nodeset 1 , 3

88 Nodeset 1 , 6

89 *BOUNDARY, TYPE=DISPLACEMENT, OP=NEW

90 Nodeset 2 , 2 , 2 , 0 . 2

91 *CLOAD, OP=NEW

92 *DLOAD, OP=NEW

93 *OUTPUT, HISTORY , VARIABLE=PRESELECT

94 *OUTPUT, FIELD , VARIABLE=PRESELECT

95 *ELEMENT OUTPUT, ELSET=E l emen t s e t 0

96 SF

97 *NODE PRINT , GLOBAL = no

98 U

99 COORD

100 *END STEP

Page 100: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 87

B.4.5 con SP m02 cyl d z.inp

Script B.5: con SP m02 cyl d z.inp

1 ** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

2 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

3 **

4 *HEADING

5 Model : con t e s t−z Date : 2007−04−04 Created by pyFormex

6 S c r i p t : c o n n e c t o r t e s t . py

7

8 *NODE, NSET=Na l l

9 1 , −1.570196e−16, −1.000000 e+00, 0 .000000 e+00

10 2 , −1.745064e−16, −9.500000e−01, 0 .000000 e+00

11 3 , −7.071068e−01, −7.071068e−01, 0 .000000 e+00

12 4 , −6.717514e−01, −6.717514e−01, 0 .000000 e+00

13 5 , 7 .071068 e−01, −7.071068e−01, 0 .000000 e+00

14 6 , 6 .717514 e−01, −6.717514e−01, 0 .000000 e+00

15 7 , −1.000000 e+00, 1 .224606 e−16, 0 .000000 e+00

16 8 , −9.500000e−01, 1 .163376 e−16, 0 .000000 e+00

17 9 , 0 .000000 e+00, 0 .000000 e+00, 0 .000000 e+00

18 10 , 1 .000000 e+00, −2.355158e−16, 0 .000000 e+00

19 11 , 9 .500000 e−01, 0 .000000 e+00, 0 .000000 e+00

20 12 , −7.071068e−01, 7 .071068 e−01, 0 .000000 e+00

21 13 , −6.717514e−01, 6 .717514 e−01, 0 .000000 e+00

22 14 , 7 .849624 e−17, 1 .000000 e+00, 0 .000000 e+00

23 15 , 5 .816880 e−17, 9 .500000 e−01, 0 .000000 e+00

24 16 , 7 .071068 e−01, 7 .071068 e−01, 0 .000000 e+00

25 17 , 6 .717514 e−01, 6 .717514 e−01, 0 .000000 e+00

26 *NSET, NSET=cy l n od e s

27 Na l l

28 *TRANSFORM, NSET=cy lnode s , TYPE=C

29 0 . , 0 . , 0 . , 0 . , 0 . , 1 .

30 *NSET,NSET=Nodeset 1

31 9 ,

32 *NSET,NSET=Nodeset 2

33 1 ,

34 3 ,

35 5 ,

36 7 ,

37 10 ,

38 12 ,

39 14 ,

40 16 ,

41 *ELEMENT, TYPE=CONN3D2, ELSET=E l emen t s e t 0

42 1 , 11 , 10

43 2 , 17 , 16

44 3 , 15 , 14

45 4 , 13 , 12

46 5 , 8 , 7

47 6 , 4 , 3

48 7 , 2 , 1

49 8 , 6 , 5

50 *ELSET , ELSET=E a l l

51 E l emen t s e t 0

52 *ORIENTATION , SYSTEM=CYLINDRICAL , NAME=Or i e n t a t i o n 0

Page 101: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage B. ”Slide-plane”connectoren 88

53 0 .000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,0 . 000000 ,1 . 000000

54 1 , 0 . 0

55 *CONNECTOR SECTION , ELSET=E l emen t s e t 0

56 SLIDE−PLANE

57 Or i e n t a t i o n 0

58 *ELEMENT, TYPE=FRAME3D, ELSET=E l emen t s e t 1

59 9 , 9 , 11

60 10 , 10 , 16

61 11 , 9 , 17

62 12 , 16 , 14

63 13 , 9 , 15

64 14 , 14 , 12

65 15 , 9 , 13

66 16 , 12 , 7

67 17 , 9 , 8

68 18 , 7 , 3

69 19 , 9 , 4

70 20 , 3 , 1

71 21 , 9 , 2

72 22 , 1 , 5

73 23 , 9 , 6

74 24 , 5 , 10

75 *ELSET , ELSET=E a l l

76 E l emen t s e t 1

77 *FRAME SECTION , ELSET=Element se t 1 , SECTION=CIRC , DENSITY=0.000007

78 0.050000

79

80 20600 .000000 , 81500.000000

81 *STEP , NLGEOM=yes

82 *STATIC

83 1 .000000 , 5 .000000 , 0 .001000 , 1 .000000

84 *BOUNDARY, OP=NEW

85 Nodeset 1 , 1

86 Nodeset 1 , 2

87 Nodeset 1 , 3

88 *BOUNDARY, TYPE=DISPLACEMENT, OP=NEW

89 Nodeset 2 , 3 , 3 , 1

90 *CLOAD, OP=NEW

91 *DLOAD, OP=NEW

92 *OUTPUT, HISTORY , VARIABLE=PRESELECT

93 *OUTPUT, FIELD , VARIABLE=PRESELECT

94 *ELEMENT OUTPUT, ELSET=E l emen t s e t 0

95 SF

96 *NODE PRINT , GLOBAL = no

97 U

98 COORD

99 *END STEP

Page 102: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage C

Experimentele data Cardiatis

Tabel C.1: Overzicht parameters: ST202: 320-80-01

Stent 320-80-01

Uitwendige diameter De0 8 mmDraad diameter d 0.08 mmAantal draden n 80 -Pitch-hoek β0 35 °

Stentlengte L0 60 mmElasticiteitsmodulus E 221000 MN/m2

Glijdingsmodulus G 81000 MN/m2

Tabel C.2: Experimentele resultaten: ST202: 320-80-01

Verlenging draad Diameter Trekkracht Radiale lijnlast(mm) (mm) T (N) q (N/mm)

0,00 8,00 0,00 02,80 7,00 0,18 0,0516,00 6,00 0,35 0,1179,10 5,00 0,51 0,20412,30 4,00 0,69 0,34515,40 3,00 0,90 0,618,50 2,00 1,12 1,12

89

Page 103: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D

Overzicht van de python-scripts

D.1 WireStent Multilayer data.py

Script D.1: WireStent Multilayer data.py1 #!/ u s r / b i n / env pyformex

2 #

3 # This s c r i p t shou l d be used wi th −−nogu i op t i on

4

5 import re , s y s

6

7 # This i s a qu i ck f i x to make t h i s s c r i p t run .

8 # We shou ld p robab l y f i x t h i s i n the pyFormex or the d e f a u l t Python se tup .

9 s y s . path . append ( '.' )

10

11 from WireS t en t Mu l t i l a y e r WPbe ta import *

12

13 # an uns i gned i n t

14 r e i n t = "\d+"

15 # an uns i gned f l o a t ( w i thout exponent )

16 r e f l o a t = "(\d+(\.\d*)?|\d*\.\d+)"

17 # a s t r i n g o f the form 'D30−d.08−n12−b25[−L80 ] '

18 # n f i e l d i s an i n t e g e r , o t h e r s a r e f l o a t s

19 # L f i e l d i s o p t i o n a l

20 r e k v l = r e . comp i l e ( "(.*\s)?(?P<jobname >D(?P<D>%s)-d(?P<d>%s)-n(?P<n>%s)-b

(?P<b>%s)(-L(?P<L>%s))?)(\s.*)?" % ( r e f l o a t , r e f l o a t , r e i n t ,

r e f l o a t , r e f l o a t ) )

21

22

23 def paramsFromJobname ( jobname ) :

24 ””” E x t r a c t s s t e n t data from job name .

25

26 This u s e s the f i l e n ame conven t i on d e v i s e d by Kim Van Loo .

27 ”””

28 m = r e k v l . match ( jobname )

29 i f m:

30 r e t u r n m. g r oupd i c t ( )

31 e l s e :

32 r e t u r n None

33

34 def ex e cu t e ( data ) :

35 ””” Execute the WireStentToAbaqus f u n c t i o n wi th s p e c i f i e d data .

36

37 This f u n c t i o n t a k e s a d i c t i o n a r y w i th the f o l l o w i n g s t e n t data s e t :

38 ' jobname ' , 'D ' , 'd ' , 'n ' , 'b ' , 'L ' ( o p t i o n a l )

39 and t r a n s l a t e s t h i s to a c o r r e c t WireStentToAbaqus c a l l , f i l l i n g i n

90

Page 104: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 91

40 the d e f a u l t v a l u e s f o r the m i s s i n g arguments .

41 ”””

42 r e t u r n Mult iLayerToAbaqus ( jobname = data [ 'jobname ' ] ,

43 s t e n t l e n g t h = f l o a t ( data [ 'L' ] ) ,

44 s t e n t d i ame t e r = f l o a t ( data [ 'D' ] ) ,

45 w i r e d i ame t e r = f l o a t ( data [ 'd' ] ) ,

46 number w i r e s = i n t ( data [ 'n' ] ) ,

47 p i t c h a n g l e = f l o a t ( data [ 'b' ] ) ,

48 number e lems = 4 ,

49 young modulus = 221000 . ,

50 shea r modu lu s = 81000 . ,

51 l o a d c a s e s = [ [ 'axial ' , 'disp' , 'auto' ] ,

52 [ 'radial ' , 'disp' , 'auto' ] ,

53 [ 'central ' , 'disp' , 'auto' ] ,

54 ] ,

55 pos t = True

56 )

57

58

59 def p ro c e s s Job ( jobname , p r e f i x='' , f a k e=Fa l s e , l o g=Fa l s e ) :

60 ””” Crea te a Abaqus i n pu t f i l e s and p o s t p r o c e s s o r s c r i p t from jobname .

61

62 The argument i s a s t r i n g tha t CONTAINS a jobname d e s c r i b i n g the

63 s t e n t pa ramete r s . I f t h e r e i s any th i ng b e f o r e or a f t e r the jobname ,

64 i t s hou l d be s e pa r a t e d from i t by wh i t e space .

65

66 The p r e f i x , i f s p e c i f i e d , w i l l be prepended to a l l the jobnames .

67

68 I f f a k e==True , a l l t h i s f u n c t i o n does i s p r i n t the pa ramete r s .

69 The normal work ing i s to c a l l the WireStentToAbaqus f u n c t i o n wi th

70 the e x t r a c t e d pa ramete r s .

71

72 I f l o g=True , the output c r e a t e d du r i ng p r o c e s s i n g o f the s t e n t

73 w i l l be w r i t t e n to a f i l e jobname . l o g i n s t e a d o f to s t dou t !

74 ”””

75 params = paramsFromJobname ( jobname )

76 i f params :

77 i f p r e f i x :

78 params [ 'jobname ' ] = p r e f i x+params [ 'jobname ' ]

79 i f params [ 'L' ] i s None :

80 params [ 'L' ] = '80.0'

81 i f f a k e :

82 p r i n t params

83 e l s e :

84 i f l o g :

85 s y s . s t dou t = f i l e ( params [ 'jobname ']+'.log' , 'w' )

86 s y s . s t d e r r . w r i t e ( "Executing line '%s'\n" % jobname . s t r i p ( ) )

87 r e t u r n ex e cu t e ( params )

88 e l s e :

89 s y s . s t d e r r . w r i t e ( "Ignoring line '%s'\n" % jobname . s t r i p ( ) )

90

91

92 def p r o c e s s F i l e s ( f i l e n ame s , p r e f i x='' , f a k e=Fa l s e , l o g=True ) :

93 ”””Scan f i l e ( s ) f o r jobnames and exe cu t e the j ob i f found .

94

95 The argument can be a s i n g l e f i l e n ame or a l i s t o f f i l e n ame s .

Page 105: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 92

96 Each l i n e shou ld c on t a i n at most one j ob name .

97 Job names a r e s t r i n g s mathched by r e k v l ( s e e above ) .

98 Non−matching l i n e s a r e i g no r e d .

99

100 I f f a k e==True , a l l t h i s f u n c t i o n does i s p r i n t the d e t e c t e d job

pa ramete r s .

101 This i s mos t l y used f o r check i ng the data f i l e s .

102

103 I f l o g=True , the output c r e a t e d du r i ng p r o c e s s i n g o f the s t e n t

104 w i l l be w r i t t e n to a f i l e jobname . l o g i n s t e a d o f to s t dou t !

105 ”””

106 i f type ( f i l e n ame s ) == 'str' :

107 f i l e n ame s = [ f i l e n ame s ]

108

109 f o r f i l i n f i l e n ame s :

110 f o r l i n e i n f i l e ( f i l , 'r' ) :

111 p ro c e s s Job ( l i n e , p r e f i x , fake , l o g )

112

113

114 ##################################################################

115 #### I f t h i s i s the main s c r i p t execu ted by pyformex −−nogu i #####

116

117 i f name == "script" :

118

119 p r i n t "Generating data from the Wirestent_data.py script"

120

121 # Mu l t i p l e examples cou ld be run l i k e t h i s :

122 f i l e s = [ 'multilayer.txt' ]

123 p r o c e s s F i l e s ( f i l e s , p r e f i x='multi -' )

124

125 # S i n g l e example

126 # Create Ababqus i npu t f i l e s

127 data = proc e s s Job ( 'D8 -d.08-n80 -b35 -L60' , p r e f i x='multi -' )

128 # Run Abaqus

D.2 WireStent Multilayer param.py

Script D.2: WireStent Multilayer param.py1 #!/ u s r / b i n / env pyformex

2 import re , s y s

3 # This i s a qu i ck f i x to make t h i s s c r i p t run .

4 # We shou ld p robab l y f i x t h i s i n the pyFormex or the d e f a u l t Python se tup .

5 s y s . path . append ( '.' )

6 from Wi r eS t e n t Mu l t i l a y e r mod e l import Mu l t i l a y e r

7 #from p l u g i n s . p r o p e r t i e s impor t *

8 #from p l u g i n s . f2abq impor t *

9 from p r o p e r t i e s import *

10 from f2abq import *

11 import sys , datet ime , s h u t i l

12 import g l o b a l d a t a as GD

13 from s c r i p t import *

14 i f GD. gu i :

15 p r i n t "importing draw"

Page 106: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 93

16 from gu i . draw import *

17

18 #####################################################################

19 ##Main s c r i p t

20 #####################################################################

21

22 def Mult iLayerToAbaqus ( jobname = 'Multilayer ' ,

23 s t e n t d i ame t e r = 16 .71 ,

24 s t e n t l e n g t h = 80 .0 ,

25 w i r e d i ame t e r = 0 .22 ,

26 number w i r e s = 80 ,

27 p i t c h a n g l e = 35 ,

28 e x t r a s t r u t = 0 . 0 ,

29 number e lems = 4 ,

30 young modulus = 206000 ,

31 shea r modu lu s = 81500 ,

32 z v a l u e s = [ 0 . 0 , 0 . 25 , 0 . 5 , 0 . 75 , 1 . 0 ] ,

33 l o a d c a s e s = [ [ 'axial ' , 'disp' , 'auto' ] ,

34 [ 'radial ' , 'disp' , 'auto' ] ,

35 [ 'central ' , 'disp' , 'auto' ]

36 ] ,

37 pos t = True , un load = Fa l s e ,

38 ) :

39 ””” Wri te an Abaqus i n pu t f i l e o f a pa r ame t r i c m u l t i l a y e r Wi reStent .

40

41 This f u n c t i o n r e l i e s on the f o l l o w i n g names be i ng d e f i n e d i n the scope

42 where the f u n c t i o n i s e xecu ted :

43 − jobname : name o f the Abaqus j ob : the output f i l e w i l l be jobname . i np

44 ( can be g i v en wi th or w i thout the ' . i np ' e x t e n s i o n )

45 − s t e n t d i ame t e r : the ou t e r d i amete r o f the s t e n t (mm)

46 − s t e n t l e n g t h : the l e n g t h o f the s t e n t (mm)

47 − w i r e d i ame t e r : the d i amete r o f the s t e n t w i r e s (mm)

48 − number w i r e s : t o t a l number o f w i r e s ( shou l d be a mu l t i p l e o f ten )

49 − p i t c h a n g l e : p i t c h ang l e o f the w i r e s ( deg ree s , 0 < ang l e < 90)

50 − e x t r a s t r u t : e x t r a s t r u t l e n g t h between c r o s s i n g w i r e s (mm) ,

51 − number−e lems : number o f e l ement s i n a ha l f−s t r u t ( i . e . t h e r e a r e

52 2 * number−e lems i n a s t r u t between two subsequent c onne c t o r s

53 − young modulus : e l a s t i c modulus o f the w i r e ma t e r i a l (MPa) ,

54 − shea r modu lu s : s h e a r modulus o f the w i r e ma t e r i a l (MPa) ,

55 − z v a l u e s : Set o f r e l a t i v e z−v a l u e s [ 0 , 1 ] i n which one wants to c r e a t e

56 c r o s s s e c t i o n s e t s and i n between one wants to c r e a t e c r o s s s e c t i o n

57 r e g i o n s e t s ( e . g . f o r output and/ or c a t h e t e r−s t e n t i n t e r a c t i o n ) .

Number

58 o f e l ement s i n s e t shou l d not be even to i n c l u d e the m id s e c t i o n .

Post−59 p r o c e s s i n g s c r i p t shou l d be t e s t e d ! ! !

60 − l o a d c a s e s : a l i s t o f l o ad s t ep s , each o f the form :

61 [ type , c on t r o l , maxval ]

62 The l o ad c a s e shou l d be one o f the f o l l o w i n g :

63 [ ' c e n t r a l ' , ' f o r c e ' , maximal f o r c e i n the r i n g w i r e (N) ]

64 [ ' a x i a l ' , ' d i s p ' , maximal a x i a l d i s p l a c emen t (mm) ] ,

65 [ ' r a d i a l ' , ' d i s p ' , maximal r a d i a l d i s p l a c emen t (mm) ] ,

66 [ ' c e n t r a l ' , ' d i s p ' , maximal r i n g d i s p l a c emen t (mm) ]

67 For d i s p l a c emen t c o n t r o l l e d l oad i ng , a v a l u e ' auto ' can be s p e c i f i e d .

68 The maxval w i l l then be c a l c u l a t e d from the s t e n t geometry .

69 For each l oad ca se a l o a d i n g and an un l o ad i ng s t ep w i l l be c r e a t e d i f

Page 107: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 94

70 the un load paramete r i s True .

71 − pos t : i f True , a post−p r o c e s s i n g s c r i p t i s w r i t t e n

72 d e f a u l t i s to c r e a t e a s e p a r a t e i n pu t f i l e f o r each l oad ca se .

73 − un load : i f t rue , an un load s t ep i s c r e a t e d f o r each l oad ca se .

74 The un load s t ep i s w r i t t e n to the same i npu t f i l e as the l oad s t ep .

75

76 We p r o v i d e d e f a u l t v a l u e s f o r a l l the paramete r s , so tha t on l y tho s e

77 d i v e r t i n g from the s t anda rd v a l u e s need to be s p e c i f i e d .

78

79 This f u n c t i o n r e t u r n s a d i c t i o n a r y w i th the same data as e xpo r t ed to

the

80 p o s t p r o c e s s o r s c r i p t .

81 ”””

82 e x t r a c o n n e c t o r s = True

83 # c r e a t e j o b f i l e n ame

84 i f jobname . endsw i th ( '.inp' ) :

85 jobname = jobname [ : −4 ]

86 f i l e n ame = "%s.inp" % jobname

87 j o b f i l e s = [ ]

88 mode l f i l e name = f i l e n ame

89

90 # C i r c u l a r s e c t i o n p r o p e r t i e s

91 r = w i r e d i ame t e r /2

92 A = p i * r ** 2

93 I z z = I y y = p i * r ** 4 / 4

94 I p = I y y+I z z

95 J = Ip

96

97 #c r e a t i n g the model

98 Stent = Mu l t i l a y e r ( s t e n t d i ame t e r , s t e n t l e n g t h , w i r e d i ame t e r ,

number wi res , p i t c h a n g l e , c onne c t o r s=True )

99 s t e n t = Stent . a l l ( ) #the s t e n t Formex

100 nz = Stent . ny #number o f modules i n a x i a l d i r e c t i o n

101

102 # Create FE model

103 n e l = s t e n t . ne lems ( )

104 p r i n t "Number of elements: %s" % ne l

105 p r i n t "Original number of nodes: %s" % s t e n t . nnodes ( )

106 message ( "Creating FE model: for a large model this can take a LOT of

time!" )

107 nodes , e l ems = s t e n t . feMode l ( )

108 nnod = nodes . shape [ 0 ]

109 p r i n t "Compressed number of nodes: %s" % nnod

110

111 # Get end nodes

112 bb = s t e n t . bbox ( )

113 z l o = bb [ 0 ] [ 2 ] #lowe s t z−c o o r d i n a t e

114 z h i = bb [ 1 ] [ 2 ] #h i g h e s t z−c o o r d i n a t e

115 zmi = ( z h i+z l o ) /2 #mean z−c o o r d i n a t e

116 d e s i g n l e n g t h = s t e n t l e n g t h

117 s t e n t l e n g t h = zh i−z l o #r e p l a c e d e s i g n l e n g t h by a c t u a l l e n g t h

118 p r i n t "Actual stent length: %s" % s t e n t l e n g t h

119 z v a l s = nodes [ : , 2 ]

120 f i x e d = arange ( nnod ) [ z v a l s <( z l o +0.8* w i r e d i ame t e r ) ] #f i x e d nodes

121 l o aded = arange ( nnod ) [ z v a l s >( zh i −0.8* w i r e d i ame t e r ) ] #nodes where a x i a l

d i s p l a c emen t i s f o r c e d

Page 108: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 95

122

123 #get ou t e r / i n n e r nodes

124 count = z e r o s ( nnod )

125 f o r n i n e lems . f l a t :

126 count [ n ] += 1

127 r o u t e r = s t e n t d i ame t e r /2 − 1 .6* w i r e d i ame t e r

128 r i n n e r = s t e n t d i ame t e r /2 − 3 .9* w i r e d i ame t e r

129 c r o s s i n g = arange ( nnod ) [ count==3] #nodes connected to 1 connec to r

130 r v a l s = s q r t ( nodes [ c r o s s i n g ] [ : , 0 ]**2+ nodes [ c r o s s i n g ] [ : , 1 ] * * 2 )

131 i n n e r = c r o s s i n g [ r v a l s <r i n n e r ] #a s s i g n i n n e r nodes

132 ou t e r = c r o s s i n g [ r v a l s >r o u t e r ] #a s s i g n ou t e r nodes

133

134 # Nodes i n a s e c t i o n at modular a x i a l d i s t a n c e

135 # ( I ' l l c a l l t h e s e s e t s c r o s s−s e t s , because a l l nodes a r e i n the same

c r o s s s e c t i o n )

136 zd = s t e n t l e n g t h / nz

137 zconn = [ z l o + zd/4 + zd/2 * i f o r i i n range (2* nz ) ] #p o s i t i o n s o f

c r o s s i n g s on z−a x i s

138 zwant = [ z l o + z * s t e n t l e n g t h f o r z i n z v a l u e s ] #wanted c r o s s i n g s

on z−a x i s

139 z s e t s = [ n e a r e s tVa l u e ( zconn , z ) f o r z i n zwant ] #z−c o o r d i n a t e s f o r

c r e a t i n g c r o s s−s e t s

140 p r i n t "zhi ,zlo ,nz ,zd:" , zh i , z l o , nz , zd

141 p r i n t "Connector z-coords:" , zconn

142 p r i n t "Wanted z-coords:" , zwant

143 p r i n t "Also creating sets at z-coordinates:" , z s e t s

144 c s e t s = [ [ l a y e r [ i s C l o s e ( nodes [ l a y e r ] [ : , 2 ] , z , r t o l =1.e−5, a t o l=zd /8 . ) ]

f o r z i n z s e t s ] f o r l a y e r i n [ i nne r , o u t e r ] ] #cro s s−s e t s

145

146 # Create w i r e and connec to r e l ement groups

147 conne c t o r s = arange ( n e l ) [ s t e n t . p == 1 ]

148 nconn = conne c t o r s . shape [ 0 ]

149 p r i n t "Number of connectors: %s" % nconn

150

151 i f un load :

152 l o a d d i r s = 'ud'

153 e l s e :

154 l o a d d i r s = 'u'

155

156 # se t auto v a l u e s i n ca s e o f d i s p l a c emen t c o n t r o l

157 w i r e l e n g t h = s t e n t l e n g t h / s i n ( p i t c h a n g l e * p i / 180 . )

158 l o a d s = [ ]

159 f o r l c i n l o a d c a s e s :

160 i f l c [ 1 ] == 'disp' and l c [ 2 ] == 'auto' :

161 i f l c [ 0 ] == 'axial ' :

162 l c [ 2 ] = 0 .85 * w i r e l e n g t h − s t e n t l e n g t h

163 e l i f l c [ 0 ] == 'radial ' :

164 l c [ 2 ] = −0.35 * s t e n t d i ame t e r

165 e l i f l c [ 0 ] == 'central ' :

166 l c [ 2 ] = −0.35 * s t e n t d i ame t e r

167 e l i f l c [ 1 ] == 'force ' :

168 # Ring f o r c e on the c e n t r a l s e c t i o n

169 Circum = p i * s t e n t d i ame t e r

170 f o r c e = l c [ 2 ] * Circum # maximum t o t a l r a d i a l f o r c e

171 v a l = − f o r c e / ( l e n ( c s e t s [ 1 ] [ 2 ] ) )

172 l o a d s . append ( [ l c [ 0 ] [ 0 ] + l c [ 1 ] [ 0 ] + 'u' , l c [ 2 ] , f o r c e ] )

Page 109: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 96

173 i f l c [ 1 ] == 'disp' :

174 l o a d s . append ( [ l c [ 0 ] [ 0 ] + l c [ 1 ] [ 0 ] + 'u' , l c [ 2 ] ] )

175

176 #####################################################################

177 ##d e f i n i n g and a s s i g n i n g the p r o p e r t i e s

178 #####################################################################

179 #Connecto r s

180 c o n n e c t o r s e c t i o n = ElemSect ion ( s e c t i o n t y p e='join' )

181 c o n n e c t o r s e c t i o n 1 = ElemSect ion ( s e c t i o n t y p e='slide -plane ' , o r i e n t a t i o n

=[0 , 0 , 0 , 0 , 0 , 1 ] )

182

183 r e d b l a c k = ElemProper ty (6 , e l em s e c t i o n=conn e c t o r s e c t i o n , e l emtype='

CONN3D2 ' )

184 g r e e nb l u e = ElemProper ty (7 , e l em s e c t i o n=conn e c t o r s e c t i o n , e l emtype='

CONN3D2 ' )

185 cyanmagenta = ElemProper ty (8 , e l em s e c t i o n=conn e c t o r s e c t i o n , e l emtype='

CONN3D2 ' )

186 g r e en r ed = ElemProper ty (9 , e l em s e c t i o n=conne c t o r s e c t i o n1 , e l emtype='

CONN3D2 ' )

187 b luecyan = ElemProper ty (10 , e l em s e c t i o n=conne c t o r s e c t i o n1 , e l emtype='

CONN3D2 ' )

188 i f e x t r a c o n n e c t o r s :

189 cyanred = ElemProper ty (11 , e l em s e c t i o n=conne c t o r s e c t i o n1 , e l emtype='

CONN3D2 ' )

190 b l u e b l a c k = ElemProper ty (12 , e l em s e c t i o n=conn e c t o r s e c t i o n1 , e l emtype=

'CONN3D2 ' )

191 magentab lack = ElemProper ty (13 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

192 greenmagenta = ElemProper ty (14 , e l em s e c t i o n=conne c t o r s e c t i o n1 ,

e l emtype='CONN3D2 ' )

193

194 #Wires

195 w i r e s e c t i o n=ElemSect ion ({ 'name' : 'wires ' , 'radius ' : w i r e d i ame t e r /2 .0} , {'name' : 'Phoenix ' , 'young_modulus ' : young modulus , 'shear_modulus ' :

shea r modu lus , 'density ' : 0 . 000007000} , 'CIRC' )

196 b l a c k = ElemProper ty (0 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

197 r ed = ElemProper ty (1 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

198 green = ElemProper ty (2 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

199 b l u e = ElemProper ty (3 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

200 cyan = ElemProper ty (4 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

201 magenta = ElemProper ty (5 , w i r e s e c t i o n , e l emtype='FRAME3D ' )

202

203 #####################################################################

204 ##w r i t i n g the i n p u t f i l e

205 #####################################################################

206

207 #c y l i n d r i c a l coo rd s f o r a l l nodes ( f o r p o s t p r o c e s s i n g mat t e r s ) ( done i n

f2abq : wr i t eNodes ( ) )

208 f o r l o ad i n l o a d c a s e s :

209 nodeprops=z e r o s ( nnod )

210 l c = load [ 0 ]

211 f i l e n ame = "%s-%s%s.inp" % ( jobname , l c [ 0 ] , l o ad [ 1 ] [ 0 ] )

212 j o b f i l e s . append ( f i l e n ame )

213 i f l c =='axial ' :

214 nodeprops [ l oaded ] = 2

215 n p a x i a l d i s p = NodeProperty (2 , d i s p l a c emen t =[ [3 , l o ad [ 2 ] ] ] )

Page 110: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 97

216 i f l c == 'radial ' :

217 nodeprops [ ou t e r ] = 2

218 n p r a d i a l d i s p = NodeProperty (2 , d i s p l a c emen t =[ [1 , l o ad [ 2 ] ] ] )

219 i f l c == 'central ' :

220 nodeprops [ c s e t s [ 1 ] [ 2 ] ] =2

221 i f l o ad [ 1 ] == 'disp' :

222 n p c e n t r a l d i s p = NodeProperty (2 , d i s p l a c emen t =[ [1 , l o ad

[ 2 ] ] ] )

223 e l i f l o ad [ 1 ] == 'force ' :

224 n p c e n t r a l f o r c e = NodeProperty (2 , c l o ad =[ va l , 0 , 0 , 0 , 0 , 0 ] )

225 nodeprops [ f i x e d ]=1

226 n p f i x e d = NodeProperty (1 , bound =[0 , 1 , 1 , 0 , 0 , 0 ] )

227

228 h i s t o u t p = Odb( type='history ' )

229 f i e l d o u t p = Odb( type='field ' , k i nd='element ' , s e t = [0 , 1 , 2 , 3 , 4 , 5 ] ,

ID=['SF' ] )

230 nodedata = Dat ( k ind='node' , s e t='all' , ID=['U' , 'COORD ' ] , g l o b a l a x e s

='no' )

231 a n a l y s i s = An a l y s i s ( t ime =[0 .1 , 1 . , 0 . 001 , 1 . ] , nlgeom='yes' ,

boundset='all' , opb='NEW' , d i s p s e t =[2 ] , op='NEW' )

232 model = Model ( nodes , e lems , nodeprops , s t e n t . p , i n i t i a l b o u n d a r i e s=

None )

233 t o t a l = AbqData ( model , [ a n a l y s i s ] , odb=[ h i s t o u t p , f i e l d o u t p ] , dat

=[ nodedata ] )

234

235 #wr i t e node s e t s f o r p o s t p r o c e s s i n g

236 f i l p s = f i l e ( f i l e n ame [:−4]+ '_ps.temp' , 'w' )

237 f i l a s = f i l e ( f i l e n ame [:−4]+ '_as.temp' , 'w' )

238 wr i t e S e t ( f i l p s , "NSET" , "fixed" , f i x e d )

239 wr i t e S e t ( f i l p s , "NSET" , "loaded" , l o aded )

240 wr i t e S e t ( f i l p s , "NSET" , "inner" , i n n e r )

241 wr i t e S e t ( f i l p s , "NSET" , "outer" , o u t e r )

242 f o r c , l a y e r i n z i p ( [ 'i' , 'o' ] , c s e t s ) :

243 f o r i , c s e t i n enumerate ( l a y e r ) :

244 wr i t e S e t ( f i l p s , "NSET" , "cs%c%d" % (c , i ) , c s e t )

245 # s e t s f o r which we want output to . dat f i l e

246 c r o s s s e t s = [ "cs%c%d" % (c , i ) f o r c i n 'io' f o r i i n range ( l e n (

z v a l u e s ) ) ]

247 p r i n t s e t s = c r o s s s e t s

248 p r i n t s e t s . append ( 'loaded ' ) #f o r a x i a l d i s p l a c emen t

249 p r i n t s e t s . append ( 'outer ' ) #f o r r a d i a l d i s p l a c emen t

250 f o r s i n p r i n t s e t s :

251 f i l a s . w r i t e ( ”””*NODE PRINT , NSET=%s \nU\nCOORD\nRF\n””” % s )

252 f i l p s . c l o s e ( )

253 f i l a s . c l o s e ( )

254

255 wr i t eAbq Inpu t ( t o t a l , f i l e n ame [ : −4 ] )

256

257 #######################################################################

258 ## Crea t i n g the p o s t p r o c e s s o r

259 #######################################################################

260

261 # keep some data f o r p o s t p r o c e s s i n g

262 data = d i c t (

263 r e s u l t f i l e s = [ j [:−4]+ '.dat' f o r j i n j o b f i l e s ] ,

264 GJ = shea r modu lu s * J ,

Page 111: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 98

265 EI = young modulus * I yy ,

266 s t e n t l e n g t h = de s i g n l e n g t h ,

267 )

268 f o r key i n [ 'stent_diameter ' , 'nconn ' , 'zsets ' , 'loads ' , 'number_wires

' , 'wire_diameter ' , 'pitch_angle ' ] :

269 data [ key ] = e v a l ( key )

270

271 i f pos t : # wr i t e a p o s t p r o c e s s i n g s c r i p t

272 p o s t f i l e = jobname+'.post.py'

273 p r i n t "Creating the post -processing script %s" % p o s t f i l e

274 s c r i p t = ”””#!/ u s r / b i n / env python

275 # Abaqus post−p r o c e s s i n g f i l e

276 # Created by %s

277 #

278 from W i r e S t e n t Mu l t i l a y e r p o s t impor t *

279 ””” % f i l e

280 # expo r t some data to the s c r i p t

281 s c r i p t += 'data=dict (\\\n'

282 f o r key , v a l i n data . i t ems ( ) :

283 s c r i p t += " %s = %r,\\\n" % ( key , v a l )

284 s c r i p t += ' )\n'

285 s c r i p t += "postproc('%s',data)\n" % ( jobname )

286 # wr i t e the s c r i p t

287 f = f i l e ( p o s t f i l e , 'w' )

288 f . w r i t e ( s c r i p t )

289 f . c l o s e ( )

D.3 WireStent Multilayer model.py

Script D.3: WireStent Multilayer model.py1 #!/ u s r / b i n / env pyformex

2 #

3 from formex import *

4 def u n i t c i r c l e ( a1 =1. , a2 =2. , a3 =360.) :

5 ””” Return a Formex which i s a u n i t c i r c l e a t the o r i g i n i n the x−y−p l ane .

6

7 a1 : dash ang l e i n deg ree s , a2 : modular ang l e i n deg ree s , a3 : t o t a l

ang l e .

8 a1 == a2 g i v e s a f u l l c i r c l e , a1 < a2 g i v e s a dashed c i r c l e .

9 I f a3 < 360 , the r e s u l t i s an a r c .

10 The d e f a u l t v a l u e s g i v e a dashed c i r c l e .

11 Large ang l e v a l u e s r e s u l t i n po l ygone s .

12 ”””

13 n = i n t ( round ( a3/a2 ) )

14 a1 *= p i /180 .

15 r e t u r n Formex ( [ [ [ 1 . , 0 . , 0 . ] , [ cos ( a1 ) , s i n ( a1 ) , 0 . ] ] ] ) . r o s e t t e (n , a2 , a x i s =2,

po i n t = [ 0 . , 0 . , 0 . ] )

16

17 def w i r e ( l eng th , d , p r o f i l e=True ) :

18 ””” Return a Formex which i s a l i n e w i th i n d i c a t i o n s o f i t ' s c i r c u l a r

p r o f i l e .

19

Page 112: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 99

20 d i s the d i amete r o f the w i r e .

21 i f p r o f i l e == Fa l s e , the r e t u r n e d Formex i s a s imp l e l i n e .

22 ”””

23 l i n e = Formex ( p a t t e r n ( '1' ) ) . s c a l e ( l e n g t h )

24 i f p r o f i l e == True :

25 diam = u n i t c i r c l e ( 4 5 . , 6 0 ) . s c a l e ( 0 . 5* d ) . r o t a t e (90 , a x i s =1)

26 n=10

27 f o r i i n range ( n ) :

28 l i n e += diam . t r a n s l a t e (0 , i / f l o a t ( n ) * l e n g t h )

29 r e t u r n l i n e

30

31 def wave ( l eng th , d , bump , nb=4, p r o f i l e=True ) :

32 ””” Return a Formex which i s a cu rved l i n e w i th i n d i c a t i o n s o f i t ' s

c i r c u l a r p r o f i l e .

33

34 d : the d i amete r o f the w i r e .

35 bump : amp l i t ude o f the wave i n the z d i r e c t i o n

36 nb : number o f e l ement s i n a s t r u t ( a pa r t o f a w i r e between two

37 c r o s s i n g s ) , d e f a u l t 4 . s hou l d be even

38 i f p r o f i l e == Fa l s e , the r e t u r n e d Formex i s a s imp l e l i n e .

39 ”””

40 bump 1 = lambda x : 1.−( x/nb *2) **2

41 quad sma l l = w i r e ( l eng th , d , p r o f i l e ) . r e p l i c ( nb /2 , 1 . 0 ) . bump1 ( 2 , [ 0 . , 0 . ,

bump ] , bump 1 , 0 ) . t r a n s l a t e (0 ,−nb /2)

42 wave sma l l = quad sma l l + quad sma l l . r e f l e c t (2 ) . r e f l e c t (0 )

43 r e t u r n wave sma l l . t r a n s l a t e (0 , nb /2) + wave sma l l . r e f l e c t (2 ) . t r a n s l a t e

( 0 , 1 . 5* nb )

44

45 c l a s s Mu l t i l a y e r :

46 ””” Crea te a m u l t i l a y e r s t e n t .

47

48 A s t e n t i s a t u b u l a r shape such as used f o r open ing ob s t r u c t e d

49 b lood v e s s e l s . Th i s s t e n t i s made frome s e t s o f w i r e s s p i r a l i n g

50 i n two d i r e c t i o n s .

51 The geometry i s d e f i n e d by the f o l l o w i n g pa ramete r s :

52 L : l e n g t h o f the s t e n t

53 De : e x t e r n a l d i amete r o f the s t e n t

54 D : ave rage s t e n t d i amete r

55 d : w i r e d i amete r

56 be : p i t c h ang l e ( d eg r e e s )

57 p : p i t c h

58 nw : t o t a l number o f w i r e s

59 nx : number o f w i r e s i n one s p i r a l s e t

60 ny : number o f modules i n a x i a l d i r e c t i o n

61 dz : maximal d i s t a n c e o f w i r e c e n t e r to ave rage c i l i n d e r

62 nb : number o f e l ement s i n a s t r u t ( a pa r t o f a w i r e between two

63 c r o s s i n g s ) , d e f a u l t 4 . s hou l d be even .

64 The s t e n t i s c r e a t e d around the z−a x i s .

65 By d e f a u l t , t h e r e w i l l be c onne c t o r s between the w i r e s at each

66 c r o s s i n g . They can be sw i t ched o f f i n the c o n s t r u c t o r .

67 ”””

68 def i n i t ( s e l f , De , L , d , nw , be , nb=4, c onne c t o r s=True , p r o f i l e=Fa l s e ) :

69 ””” Crea te a m u l t i l a y e r s t e n t . ”””

70 s e l f . F=De

71 D = De − 6*d

72 r = 0 .5*D

Page 113: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 100

73 p r i n t "Mean radius at creation = %s"% r

74 p = math . p i *D* tand ( be )

75 nx = i n t ( 0 . 1*nw)

76 ny = i n t ( round ( nx*L/p ) ) #The a c t u a l l e n g t h may d i f f e r a b i t from L

77

78 ###########################################################

79 ##Create w i r e s

80 ###########################################################

81

82 #b la ck w i r e s ( i n n e r w i r e )

83 b l a ck0 = wave (1 , d , 0 , nb , p r o f i l e ) . t r a n s l a t e (1 , d )

84 b l a ck1 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . t r a n s l a t e ( [ 0 , nb+d , 0 . 5 * d ] )

85 b l a c k = ( b l a ck0+b l ack1 ) . s e tProp (0 )

86 #red w i r e s ( o t h e r i n n e r wi re , waves under and ove r b l a c k )

87 r ed0 = wave (1 , d , d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . r e f l e c t (2 ) . t r a n s l a t e (0 ,

nb )

88 r ed1= wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ 2* nb

, 0 , 0 . 5 * d ] )

89 r ed = ( red0+red1 ) . s e tProp (1 )

90 #green w i r e s ( midd l e wi re , waves from midd le to bottom , between b l u e

and red w i r e s )

91 green = wave (1 , d , d , nb , p r o f i l e ) . r e f l e c t (2 ) . t r a n s l a t e (2 , d ) . s e tProp (2 )

92 #blue w i r e s ( o t h e r midd l e wi re , waves from midd le to top , between g reen

and cyan )

93 b l u e = green . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ nb , 0 , d ] ) . s e tProp (3 )

94 #cyan w i r e s ( top wi re , waves between b l u e and magenta )

95 cyan0 = green . copy ( ) . t r a n s l a t e (2 ,2* d )

96 cyan1 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . t r a n s l a t e ( [ 0 , nb , 2 . 5 * d ] )

97 cyan = ( cyan0+cyan1 ) . s e tProp (4 )

98 #magenta w i r e s ( top w i r e )

99 magenta0 = wave (1 , d , 0 , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ nb−d , 0 , 3*

d ] )

100 magenta1 = wave (1 , d , 0 . 5 * d , nb , p r o f i l e ) . r o t a t e (90 ,2 ) . t r a n s l a t e ( [ 2* nb

−d , 0 , 2 . 5 * d ] )

101 magenta = ( magenta0 + magenta1 ) . s e tProp (5 )

102 #combine a l l w i r e s i n t o a base c e l l

103 base = ( b l a ck+red+b lu e+green+cyan+magenta )

104 #c l e a r ( ) ; draw ( base )

105

106 # Throw away the wrap around garbage

107 base = base . r e p l i c 2 (2 ,2 ,2* nb ,2* nb ) . r o t a t e (45 ,2 )

108 ymi = s q r t (2 ) *nb−1.1* s q r t ( d /2)

109 yma = 3* s q r t (2 ) *nb+1.1* s q r t ( d /2)

110 xmi = −s q r t (2 ) *nb−1.1* s q r t ( d /2)

111 xma = s q r t (2 ) *nb+1.1* s q r t ( d /2)

112 kade r = Formex ( [ [ [ xmi , ymi , 0 ] , [ xma , ymi , 0 ] , [ xma , yma , 0 ] , [ xmi , yma , 0 ] ] ] )

113 keep=(base . f [ : , 0 , 1 ] > ymi ) * ( base . f [ : , 0 , 1 ] < yma) * ( base . f [ : , 1 , 1 ] > ymi

) * ( base . f [ : , 1 , 1 ] < yma) * ( base . f [ : , 0 , 0 ] > xmi ) * ( base . f [ : , 0 , 0 ] <

xma) * ( base . f [ : , 1 , 0 ] > xmi ) * ( base . f [ : , 1 , 0 ] < xma)

114 c e l l = base . s e l e c t ( keep )

115 #c l e a r ( ) ; draw ( c e l l )

116

117 ###############################################################

118 ## Crea te c onne c t o r s

119 ###############################################################

120

Page 114: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 101

121 i f conne c t o r s :

122 connec to r1 = Formex ( [ [ [ 0 , 0 , d ] , [ 0 , 0 , 0 ] ] ] )

123 connec to r2 = Formex ( [ [ [ 0 , d , d ] , [ 0 , 0 , 0 ] ] ] )

124 connec to r3 = Formex ( [ [ [ 0 , 0 , 0 ] , [ − d , 0 , d ] ] ] )

125 connec to r4 = Formex ( [ [ [ 0 , 0 , 0 ] , [ 0 , 0 , d ] ] ] )

126 connec to r5 = Formex ( [ [ [ − d , 0 , d ] , [ 0 , d , 0 ] ] ] )

127 r e db l a c k0 = connec to r2 . t r a n s l a t e ( [ nb ,0 ,−d ] )

128 r e db l a c k1 = connec to r2 . t r a n s l a t e ( [ 2* nb , nb , 0 ] )

129 r e db l a c k2 = connec to r2 . t r a n s l a t e ( [ 2* nb ,0 ,−d ] ) . r e f l e c t (2 )

130 r e db l a c k3 = r edb l a c k2 . t r a n s l a t e ([−nb , nb , 0 ] )

131 r e d b l a c k = ( r e db l a c k0+r edb l a c k1+r edb l a c k2+r edb l a c k3 ) . s e tProp (6 )

132 g r e e nb l u e = connec to r4 . t r a n s l a t e ( [ nb , 0 , d ] ) . s e tProp (7 )

133 cyanmagenta0 = connec to r3 . t r a n s l a t e ( [ nb , nb ,2* d ] )

134 cyanmagenta1 = connec to r3 . t r a n s l a t e ( [ 2* nb , 0 , 2* d ] )

135 cyanmagenta2 = connec to r3 . t r a n s l a t e ( [ nb ,0 ,−4*d ] ) . r e f l e c t (2 )

136 cyanmagenta3 = connec to r3 . t r a n s l a t e ( [ 2* nb , nb ,−3*d ] ) . r e f l e c t (2 )

137 cyanmagenta = ( cyanmagenta0+cyanmagenta1+cyanmagenta2+

cyanmagenta3 ) . s e tProp (8 )

138 g r e en r ed = connec to r4 . t r a n s l a t e (0 ,2* nb ) . s e tProp (9 ) #andere l a ag

139 b luecyan = connec to r1 . t r a n s l a t e ( [ nb , nb ,2* d ] ) . s e tProp (10) #ander

l a ag

140 #de e x t r a connec to r en

141 cyanred0 = connec to r1 . t r a n s l a t e ( [ 2* nb , 0 , d ] )

142 cyanred1 = connec to r1 . t r a n s l a t e ( [ nb , nb , d ] )

143 cyanred= ( cyanred0+cyanred1 ) . s e tProp (11)

144 b l u e b l a c k = connec to r2 . t r a n s l a t e ( [ nb ,0 ,−d ] ) . r e f l e c t (2 ) . s e tProp

(12)

145 magentab lack = connec to r5 . t r a n s l a t e ( [ 2* nb , nb , d ] ) . s e tProp (13)

146 greenmagenta = connec to r3 . t r a n s l a t e ( [ nb , 0 , 2* d ] ) . s e tProp (14)

147 #combine a l l c onne c t o r s i n t o a base c e l l

148 con = ( r e db l a c k+g r e enb l u e+cyanmagenta ) + ( g r e en r ed+b luecyan ) +

( cyanred + greenmagenta + b l u e b l a c k + magentab lack )

149

150 # Throw away the wrap around garbage

151 con = con . r e p l i c 2 (2 ,2 ,2* nb ,2* nb ) . r o t a t e (45 ,2 )

152 ymi = s q r t (2 ) *nb+3* s q r t ( d /2)

153 yma = 3* s q r t (2 ) *nb+1.1* s q r t ( d /2)

154 xmi = −s q r t (2 ) *nb+3* s q r t ( d /2)

155 xma = s q r t (2 ) *nb+1.1* s q r t ( d /2)

156 kade r = Formex ( [ [ [ xmi , ymi , 0 ] , [ xma , ymi , 0 ] , [ xma , yma , 0 ] , [ xmi , yma

, 0 ] ] ] )

157 keep=(con . f [ : , 0 , 1 ] > ymi ) * ( con . f [ : , 0 , 1 ] < yma) * ( con . f [ : , 1 , 1 ] >

ymi ) * ( con . f [ : , 1 , 1 ] < yma) * ( con . f [ : , 0 , 0 ] > xmi ) * ( con . f

[ : , 0 , 0 ] < xma) * ( con . f [ : , 1 , 0 ] > xmi ) * ( con . f [ : , 1 , 0 ] < xma)

158 con = con . s e l e c t ( keep )

159 #c l e a r ( ) ; draw ( c e l l+con )

160 #### Copy base c e l l

161 dx=2* s q r t (2 ) *nb

162 dy=2* s q r t (2 ) *nb

163 pa t t e r n = c e l l . r e p l i c 2 ( nx , ny , dx , dy )

164 i f conne c t o r s :

165 conpa t t e r n = con . r e p l i c 2 ( nx , ny , dx , dy )

166 #de l e t e the conne c t o r s on the end

167 ymi = 0

168 yma = dy *( ny+0.4)

169 xmi = −dx

Page 115: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 102

170 xma = dx *( nx )

171 kade r = Formex ( [ [ [ xmi , ymi , 0 ] , [ xma , ymi , 0 ] , [ xma , yma , 0 ] , [ xmi , yma

, 0 ] ] ] )

172 keep=( conpa t t e r n . f [ : , 0 , 1 ] > ymi ) * ( c onpa t t e r n . f [ : , 0 , 1 ] < yma) * (

c onpa t t e r n . f [ : , 1 , 1 ] > ymi ) * ( c onpa t t e r n . f [ : , 1 , 1 ] < yma) * (

c onpa t t e r n . f [ : , 0 , 0 ] > xmi ) * ( c onpa t t e r n . f [ : , 0 , 0 ] < xma)

* ( c onpa t t e r n . f [ : , 1 , 0 ] > xmi ) * ( c onpa t t e r n . f [ : , 1 , 0 ] < xma)

173 conpa t t e r n = conpa t t e r n . s e l e c t ( keep )

174 pa t t e r n = ( pa t t e r n+conpa t t e r n )

175 #c l e a r ( ) ; draw ( p a t t e r n )

176

177 #### Fold i t i n t o a c y l i n d e r

178 s t e n t = pa t t e r n . t r a n s l a t e ( [ 0 . , 0 . , r −1.5*d ] ) . c y l i n d r i c a l ( d i r = [2 , 0 , 1 ] ,

s c a l e = [1 . , 3 60 . / ( nx*dx ) , p/nx/dy ] )

179 #c l e a r ( ) ; draw ( s t en t , v i ew=' i s o ' )

180

181 s e l f . F = s t e n t

182 s e l f . ny = ny

183 bb=s t e n t . bbox ( )

184 p r i n t ( 'Actual length: %s'%(abs ( bb [ 1 ] [ 2 ] − bb [ 0 ] [ 2 ] ) ) )

185 p r i n t ( 'Exterior diameter: %s'%(abs ( bb [ 1 ] [ 0 ] − bb [ 0 ] [ 0 ] )+d ) )

186

187 def a l l ( s e l f ) :

188 r e t u r n s e l f . F

189

190 #####################################################################

191 #The a c t u a l model

192 #####################################################################

193

194 i f name == "draw" :

195 #Data

196 s t e n t d i ame t e r = 8

197 s t e n t l e n g t h = 60 .

198 w i r e d i ame t e r = 0 .08

199 number w i r e s = 80 .

200 p i t c h a n g l e = 35

201

202 #Crea t i n g the model

203 s t e n t = Mu l t i l a y e r ( s t e n t d i ame t e r , s t e n t l e n g t h , w i r e d i ame t e r ,

number wi res , p i t c h a n g l e , c onne c t o r s=True , p r o f i l e=True ) . F

204 c l e a r ( ) ; draw ( s t en t , v i ew='iso' )

D.4 properties.py

Script D.4: properties.py1 #!/ u s r / b i n / env python

2 # $ I d : p r o p e r t i e s . py 150 2006−11−01 11 : 13 : 34Z bve rheg $

3 ##

4 ## This f i l e i s p a r t o f pyFormex 0 . 4 . 2 Re l e a s e Wed Jan 10 10 : 31 : 17 2007

5 ## pyFormex i s a python imp l ementa t i on o f Formex a l g e b r a

6 ## Homepage : h t tp : // pyformex . b e r l i o s . de/

7 ## D i s t r i b u t e d under the GNU Gene ra l Pub l i c L i c en s e , s e e f i l e COPYING

8 ## Copy r i gh t (C) Bened i c t Verhegghe excep t where s t a t e d o t h e rw i s e

Page 116: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 103

9 ##

10

11 ””” Gene r a l f ramework f o r a t t r i b u t i n g p r o p e r t i e s to Formex e l ement s .

12

13 P r o p e r t i e s can r e a l l y be j u s t about any Python ob j e c t .

14 P r o p e r t i e s a r e i d e n t i f i e d and connected to a Formex e lement by the

15 prop v a l u e s t ha t a r e s t o r e d i n the Formex .

16 ”””

17

18 from f l a t k e y d b import *

19 from mydict import *

20

21 ma t e r i a l s = Dic t ({} )

22 s e c t i o n s = Dic t ({} )

23

24 p r o p e r t i e s = Dic t ({} )

25 n o d e p r o p e r t i e s = Dic t ({} )

26 e l emp r o p e r t i e s = Dic t ({} )

27

28

29 def r e a dMa t e r i a l s ( da tabase ) :

30 ””” Import a l l m a t e r i a l s from a database .

31

32 For now , i t can on l y read da taba s e s u s i n g f l a t k e y d b .

33 ”””

34 mat = FlatDB ( [ 'name' ] , b e g i n r e c = 'material ' , end rec = 'endmaterial ' )

35 mat . r e a d F i l e ( da tabase )

36 f o r key , i tem i n mat . i t e r i t e m s ( ) :#not ma t e r i a l s=Dic t (mat ) , because t h i s

would e r a s e any ma t e r i a l t ha t was a l r e a d y added

37 ma t e r i a l s [ key ] = Cascad ingD i c t ( i tem )

38

39

40 def r e a dS e c t i o n s ( da tabase ) :

41 ””” Import a l l s e c t i o n s from a database .

42

43 For now , i t can on l y read da taba s e s u s i n g f l a t k e y d b .

44 ”””

45 s e c t = FlatDB ( [ 'name' ] , b e g i n r e c = 'section ' , end rec = 'endsection ' )

46 s e c t . r e a d F i l e ( da tabase )

47 f o r key , i tem i n s e c t . i t e r i t e m s ( ) :

48 s e c t i o n s [ key ] = Cascad ingD i c t ( i tem )

49

50

51 c l a s s Prope r t y ( Cascad ingD i c t ) :

52 ”””A g e n e r a l p r o p e r t i e s c l a s s .

53

54 This c l a s s shou l d on l y p r o v i d e g e n e r a l methods , such as

55 add , change and d e l e t e p r o p e r t i e s , lookup , p r i n t , and

56 o f cour se , connect p r o p e r t i e s to Formex e l ement s .

57 ”””

58

59 def i n i t ( s e l f , nr , data = {}) :

60 ””” Crea te a new p r op e r t y . Empty by d e f a u l t .

61

62 A p r op e r t y i s c r e a t e d and the data i s s t o r e d i n a D ic t c a l l e d '

p r o p e r t i e s ' .

Page 117: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 104

63 The key to a c c e s s the p r o p e r t y i s the number .

64 This number shou l d be the same as the p r o p e r t y number o f the Formex

e l ement .

65 ”””

66 Cascad ingD i c t . i n i t ( s e l f , data )

67 p r o p e r t i e s [ nr ] = s e l f

68

69

70 c l a s s NodeProperty ( P rope r t y ) :

71 ””” P r o p e r t i e s r e l a t e d to a s i n g l e node . ”””

72

73 def i n i t ( s e l f , nr , c l o ad = None , bound = None , d i s p l a c emen t=None ,

coo rd s = 'cartesian ' , c o o r d s e t =[ ] ) :

74 ””” Crea te a new node p r op e r t y . Empty by d e f a u l t .

75

76 A node p r o p e r t y i s c r e a t e d and the data i s s t o r e d i n a D ic t c a l l e d

' n o d e p r o p e r t i e s ' .

77 The key to a c c e s s the node p r o p e r t y i s the number .

78 This number shou l d be the same as the node p r o p e r t y number o f the

Formex e l ement .

79 A node p r o p e r t y can ho ld the f o l l o w i n g sub−p r o p e r t i e s :

80 − c l o ad : a c onc en t r a t e d l oad

81 − bound : a boundary c o n d i t i o n

82 − d i s p l a c emen t : p r e s c r i b e a d i s p l a c emen t

83 − coo rd s : the c o o r d i n a t e system which i s used f o r the d e f i n i t i o n o f

c l o ad and bound . There a r e t h r e e o p t i o n s :

84 c a r t e s i a n , s p h e r i c a l and c y l i n d r i c a l

85 −c o o r d s e t : a l i s t o f 6 c o o r d i n a t e s ; the 2 p o i n t s t ha t s p e c i f y the

t r a n s f o rma t i o n

86 ”””

87 i f ( i s i n s t a n c e ( c load , l i s t ) and l e n ( c l o ad )==6 or c l o ad==None ) and (

i s i n s t a n c e ( bound , l i s t ) and l e n ( bound )==6 or i s i n s t a n c e ( bound ,

s t r ) or bound==None ) :

88 Cascad ingD i c t . i n i t ( s e l f , {'cload ' : c load , 'bound ' : bound ,

'displacement ' : d i s p l a c emen t , 'coords ' : coords , 'coordset

' : c o o r d s e t })

89 n o d e p r o p e r t i e s [ nr ] = s e l f

90 e l s e :

91 p r i n t 'A pointload and a boundary condition have to be a list

containing 6 items '

92

93

94 c l a s s ElemProper ty ( P rope r t y ) :

95 ””” P r o p e r t i e s r e l a t e d to a s i n g l e e l ement . ”””

96

97 def i n i t ( s e l f , nr , e l em s e c t i o n = None , e l em load = None , e l emtype =

None ) :

98 ””” Crea te a new e lement p r o p e r t y . Empty by d e f a u l t .

99

100 An e lement p r o p e r t y i s c r e a t e d and the data i s s t o r e d i n a D ic t

c a l l e d ' e l emp r o p e r t i e s ' .

101 The key to a c c e s s the e l ement p r o p e r t y i s the number .

102 This number shou l d be the same as the e l ement p r o p e r t y number o f

the Formex e l ement .

103 An e lement p r o p e r t y can ho ld the f o l l o w i n g sub−p r o p e r t i e s :

Page 118: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 105

104 − e l em s e c t i o n : the s e c t i o n p r o p e r t i e s o f the e l ement . Th i s i s an

E lemSect ion i n s t a n c e .

105 − e l em load : the l o a d i n g o f the e l ement . Th i s i s a l i s t o f ElemLoad

i n s t a n c e s .

106 − e l emtype : the type o f e l ement tha t i s to be used i n the a n a l y s i s .

107 ”””

108 Cascad ingD i c t . i n i t ( s e l f , {'elemsection ' : e l emse c t i on , '

elemload ' : e l emload , 'elemtype ' : e l emtype })

109 e l emp r o p e r t i e s [ nr ] = s e l f

110

111 c l a s s Behav io r ( P rope r t y ) :

112 ””” P r o p e r t i e s r e l a t e d to the b eha v i o r o f a connec to r ”””

113

114 def i n i t ( s e l f , o p t i on = None , component = None , l o l i m i t = '' ,

u p l im i t = '' , f r i c t i o n c o e f='' ) :

115 Cascad ingD i c t . i n i t ( s e l f ,{ 'option ' : opt ion , 'component ' :

component , 'lolimit ' : l o l i m i t , 'uplimit ' : u p l im i t , '

frictioncoef ' : f r i c t i o n c o e f })

116

117 c l a s s ElemSect ion ( P rope r t y ) :

118 ””” P r o p e r t i e s r e l a t e d to the s e c t i o n o f a beam . ”””

119

120 def i n i t ( s e l f , s e c t i o n = None , ma t e r i a l = None , s e c t i o n t y p e = '

general ' , o r i e n t a t i o n = None , b e ha v i o r = None ) :

121 ””” Crea te a new e lement s e c t i o n p r o p e r t y . Empty by d e f a u l t .

122

123 An e lement s e c t i o n p r o p e r t y can ho ld the f o l l o w i n g sub−p r o p e r t i e s :

124 − s e c t i o n : the s e c t i o n p r o p e r t i e s o f the e l ement . Th i s can be a

d i c t i o n a r y or a s t r i n g . The r e q u i r e d data i n t h i s d i c t depends

on the s e c t i o n t y p e . C u r r e n t l y known keys to f2abq . py a r e :

c r o s s s e c t i o n , moment ine r t i a 11 , moment ine r t i a 12 ,

moment ine r t i a 22 , t o r s i o n a l r i g i d i t y , r a d i u s

125 − ma t e r i a l : the e l ement ma t e r i a l . Th i s can be a d i c t i o n a r y or a

s t r i n g . C u r r e n t l y known keys to f2abq . py a r e : young modulus ,

shea r modu lus , d en s i t y , p o i s s o n r a t i o

126 − s e c t i o n t y p e : the s e c t i o n t y p e o f the e l ement .

127 − ' o r i e n t a t i o n ' i s a l i s t [ F i r s t d i r e c t i o n co s i n e , second

d i r e c t i o n co s i n e , t h i r d d i r e c t i o n c o s i n e ] o f the f i r s t

beam s e c t i o n a x i s . Th i s a l l ow s to

change the o r i e n t a t i o n o f the c r o s s−s e c t i o n .

128 − beha v i o r : the b eha v i o r o f the connec to r

129 ”””

130 Cascad ingD i c t . i n i t ( s e l f ,{} )

131 s e l f . s e c t i o n t y p e = s e c t i o n t y p e

132 s e l f . o r i e n t a t i o n = o r i e n t a t i o n

133 s e l f . b e h a v i o r = beha v i o r

134 s e l f . a ddMate r i a l ( m a t e r i a l )

135 s e l f . addSec t i on ( s e c t i o n )

136

137 def addSec t i on ( s e l f , s e c t i o n ) :

138 ””” Crea te or r e p l a c e the s e c t i o n p r o p e r t i e s o f the e l ement .

139

140 I f ' s e c t i o n ' i s a d i c t , i t w i l l be added to ' s e c t i o n s ' .

141 I f ' s e c t i o n ' i s a s t r i n g , t h i s s t r i n g w i l l be used as a key to

s e a r c h i n ' s e c t i o n s ' .

142 ”””

Page 119: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 106

143 i f i s i n s t a n c e ( s e c t i o n , s t r ) :

144 i f s e c t i o n s . ha s key ( s e c t i o n ) :

145 s e l f . s e c t i o n = s e c t i o n s [ s e c t i o n ]

146 e l s e :

147 p r i n t "This section is not available in the database"

148 e l i f i s i n s t a n c e ( s e c t i o n , d i c t ) :

149 s e c t i o n s [ s e c t i o n [ 'name' ] ] = Cascad ingD i c t ( s e c t i o n )

150 s e l f . s e c t i o n = s e c t i o n s [ s e c t i o n [ 'name' ] ]

151 e l i f s e c t i o n==None :

152 s e l f . s e c t i o n = s e c t i o n

153 e l s e :

154 p r i n t "addSection requires a string or dict"

155

156 def addMate r i a l ( s e l f , m a t e r i a l ) :

157 ””” Crea te or r e p l a c e the ma t e r i a l p r o p e r t i e s o f the e l ement .

158

159 I f the argument i s a d i c t , i t w i l l be added to ' ma t e r i a l s ' .

160 I f the argument i s a s t r i n g , t h i s s t r i n g w i l l be used as a key to

s e a r c h i n ' ma t e r i a l s ' .

161 ”””

162 i f i s i n s t a n c e ( ma t e r i a l , s t r ) :

163 i f ma t e r i a l s . ha s key ( ma t e r i a l ) :

164 s e l f . m a t e r i a l = ma t e r i a l s [ m a t e r i a l ]

165 e l s e :

166 p r i n t "This material is not available in the database"

167 e l i f i s i n s t a n c e ( ma t e r i a l , d i c t ) :

168 ma t e r i a l s [ m a t e r i a l [ 'name' ] ] = Cascad ingD i c t ( ma t e r i a l )

169 s e l f . m a t e r i a l = ma t e r i a l s [ m a t e r i a l [ 'name' ] ]

170 e l i f ma t e r i a l==None :

171 s e l f . m a t e r i a l=ma t e r i a l

172 e l s e :

173 p r i n t "addMaterial requires a string or dict"

174

175

176 c l a s s ElemLoad ( Prope r t y ) :

177 ””” P r o p e r t i e s r e l a t e d to the l oad o f a beam . ”””

178

179 def i n i t ( s e l f , magnitude = None , l o a d l a b e l = None ) :

180 ””” Crea te a new e lement l oad . Empty by d e f a u l t .

181

182 An e lement l oad can ho ld the f o l l o w i n g sub−p r o p e r t i e s :

183 − magnitude : the magnitude o f the d i s t i b u t e d l oad .

184 − l o a d l a b e l : the d i s t r i b u t e d l oad type l a b e l .

185 ”””

186 Dic t . i n i t ( s e l f , {'magnitude ' : magnitude , 'loadlabel ' :

l o a d l a b e l })

187

188

189

190

191

192 # Test

193

194 i f name == "__main__" :

195

196 r e a dMa t e r i a l s ( 'materials.db' )

Page 120: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 107

197 r e a dS e c t i o n s ( 'sections.db' )

198 S t i c k=Prope r t y (1 , {'colour ' : 'green ' , 'name' : 'Stick ' , 'weight ' : 25 , '

comment ' : 'This could be anything: a gum , a frog , a usb -stick ,...'})

199 autho r=Prope r t y (5 ,{ 'Name' : 'Tim Neels ' , 'Address ' : Ca s cad ingD i c t ({ 'street' : 'Krijgslaan ' , 'city' : 'Gent' , 'country ' : 'Belgium '}) })

200

201 # p r i n t S t i c k

202 # p r i n t p r o p e r t i e s [ 1 ]

203

204 S t i c k . we ight=30

205 S t i c k . l e n g t h=10

206 p r i n t p r o p e r t i e s [ 1 ]

207

208 # p r i n t p r o p e r t i e s [ 5 ]

209 p r o p e r t i e s [ 5 ] . s t r e e t='Voskeslaan '

210 p r i n t autho r

211 p r i n t p r o p e r t i e s [ 5 ]

212 p r i n t autho r . s t r e e t

213 p r i n t autho r . Address . s t r e e t

214

215 P1 = [ 1 . 0 , 1 . 0 , 1 . 0 , 0 . 0 , 0 . 0 , 0 . 0 ]

216 P2 = [ 0 .0 ] * 3 + [ 1 .0 ] * 3

217 B1 = [ 0 .0 ] * 6

218

219 v e r t = ElemSect ion ( 'IPEA100 ' , 'steel ' )

220 hor = ElemSect ion ({ 'name' : 'IPEM800 ' , 'A' : 951247 , 'I' : Ca s cad ingD i c t ({ 'Ix': 1542 , 'Iy' : 6251 , 'Ixy' : 3 52} ) } , {'name' : 'S400' , 'E' : 2 10 , 'fy' : 4 00} )

221 q = ElemLoad ( magnitude =2.5 , l o a d l a b e l='PZ' )

222 top = ElemProper ty (1 , hor , [ q ] , 'B22' )

223 column = ElemProper ty (2 , v e r t , e l emtype='B22' )

224 d i a g ona l = ElemProper ty (4 , hor , e l emtype='B22' )

225 p r i n t 'elemproperties '

226 f o r key , i tem i n e l emp r o p e r t i e s . i t e r i t e m s ( ) :

227 p r i n t key , i tem

228

229 bottom=ElemProper ty (3 , hor , [ q ] )

230

231

232 topnode = NodeProperty (1 , c l o ad =[5 ,0 , −75 ,0 ,0 ,0 ] )

233 f o o t = NodeProperty (2 , bound='pinned ' )

234

235 np = {}236 np [ '1' ] = NodeProperty (1 , P1)

237 np [ '2' ] = NodeProperty (2 , c l o ad=P2)

238 np [ '3' ] = np [ '2' ]

239 np [ '3' ] . bound = B1

240 np [ '1' ] . c l o ad [ 1 ] = 33 .0

241 np [ '7' ] = NodeProperty (7 , bound=B1)

242

243 f o r key , i tem i n ma t e r i a l s . i t e r i t e m s ( ) :

244 p r i n t key , i tem

245

246 p r i n t 'properties '

247 f o r key , i tem i n p r o p e r t i e s . i t e r i t e m s ( ) :

248 p r i n t key , i tem

249

Page 121: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 108

250 p r i n t 'nodeproperties '

251 f o r key , i tem i n n o d e p r o p e r t i e s . i t e r i t e m s ( ) :

252 p r i n t key , i tem

253

254 p r i n t 'elemproperties '

255 f o r key , i tem i n e l emp r o p e r t i e s . i t e r i t e m s ( ) :

256 p r i n t key , i tem

257 ##

258 p r i n t e l emp r o p e r t i e s [ 3 ] . A

259 bottom .A=555

260 p r i n t e l emp r o p e r t i e s [ 3 ]

261 p r i n t e l emp r o p e r t i e s [ 3 ] . A

262 e l emp r o p e r t i e s [ 3 ] . A=444

263 p r i n t bottom .A

264 p r i n t e l emp r o p e r t i e s [ 3 ] . A

265

266 p r i n t "beamsection attributes"

267 f o r key , i tem i n e l emp r o p e r t i e s . i t e r i t e m s ( ) :

268 p r i n t key , i tem . e l em load

269

270 f o r key , i tem i n e l emp r o p e r t i e s . i t e r i t e m s ( ) :

271 p r i n t key , i tem . E

272

273 p r i n t "cload attributes"

274 f o r key , i tem i n n o d e p r o p e r t i e s . i t e r i t e m s ( ) :

275 p r i n t key , i tem . c l o ad

276

277 p r i n t "cload attributes"

278 f o r key , i tem i n np . i t e r i t e m s ( ) :

279 p r i n t key , i tem . c l o ad

D.5 f2abq.py

Script D.5: f2abq.py1 #!/ u s r / b i n / env python

2 # $ I d : f2abq . py 170 2006−12−14 21 : 28 : 48Z bve rheg $

3 ##

4 ## This f i l e i s p a r t o f pyFormex 0 . 4 . 2 Re l e a s e Wed Jan 10 10 : 31 : 17 2007

5 ## pyFormex i s a python imp l ementa t i on o f Formex a l g e b r a

6 ## Homepage : h t tp : // pyformex . b e r l i o s . de/

7 ## D i s t r i b u t e d under the GNU Gene ra l Pub l i c L i c en s e , s e e f i l e COPYING

8 ## Copy r i gh t (C) Bened i c t Verhegghe excep t where s t a t e d o t h e rw i s e

9 ##

10 ”””A number o f f u n c t i o n s to w r i t e an Abaqus i n pu t f i l e .

11

12 These f u n c t i o n s read data from the p r o p e r t y module and w r i t e them to an

Abaqus i npu t f i l e .

13 Abaqus has no b u i l t i n un i t s , so the chosen u n i t s must be s e l f c o n s i s t a n t .

14 ”””

15

16 from p r o p e r t i e s import *

17 from mydict import *

18 import g l o b a l d a t a as GD

Page 122: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 109

19 import da te t ime

20 import math

21 from numpy import *

22

23

24 ##################################################

25 ## Some Abaqus format output r o u t i n e s

26 ##################################################

27

28 def wr i t eHead i ng ( f i l , t e x t='' ) :

29 ””” Wri te the head ing o f the Abaqus i npu t f i l e . ”””

30 head = ”””** Abaqus i npu t f i l e c r e a t e d by pyFormex ( c ) B . Verhegghe

31 ** ( s e e h t tp : // pyformex . b e r l i o s . de )

32 **

33 *HEADING

34 %s

35 ””” % te x t

36 f i l . w r i t e ( head )

37

38 def wr i t eEx t r aP r eS t e p ( f i l , f i l n am ) :

39 ””” Wri te e x t r a pre−s t e p i npu t f o r p o s t p r o c e s s i n g . ”””

40 f = f i l e ( f i l nam , 'r' )

41 f o r l i n e i n f :

42 f i l . w r i t e ( l i n e )

43 import os

44 os . remove ( f i l n am )

45

46 def wr i t eNodes ( f i l , nodes , name='Nall' , n o f s =1) :

47 ””” Wri te noda l c o o r d i n a t e s .

48

49 The nodes a r e added to the named node s e t .

50 I f a name d i f f e r e n t from ' Na l l ' i s s p e c i f i e d , the nodes w i l l a l s o

51 be added to a s e t named ' Na l l ' .

52 The no f s s p e c i f i e s an o f f s e t f o r the node numbers .

53 The d e f a u l t i s 1 , because Abaqus number ing s t a r t s a t 1 .

54 ”””

55 f i l . w r i t e ( '*NODE , NSET=%s\n' % name)

56 f o r i , n i n enumerate ( nodes ) :

57 f i l . w r i t e ( "%d, %14.6e, %14.6e, %14.6e\n" % (( i+nofs , )+t u p l e ( n ) ) )

58 i f name != 'Nall' :

59 f i l . w r i t e ( '*NSET , NSET=Nall\n%s\n' % name)

60 #c r e a t e c y l i n d r i c a l coo rd s f o r a l l nodes

61 f i l . w r i t e ( "*NSET , NSET=cylnodes\n" )

62 f i l . w r i t e ( "%s\n" % name)

63 f i l . w r i t e ( ”””*TRANSFORM, NSET=cy lnode s , TYPE=C

64 0 . , 0 . , 0 . , 0 . , 0 . , 1 .

65 ””” )

66

67 def wr i t eE l ems ( f i l , e lems , type , name='Eall' , e o f s =1, no f s =1) :

68 ””” Wri te e l ement group o f g i v en type .

69

70 The e l ement s a r e added to the named e lement s e t .

71 I f a name d i f f e r e n t from ' E a l l ' i s s p e c i f i e d , the e l ement s w i l l a l s o

72 be added to a s e t named ' E a l l ' .

73 The e o f s and no f s s p e c i f y o f f s e t s f o r e l ement and node numbers .

74 The d e f a u l t i s 1 , because Abaqus number ing s t a r t s a t 1 .

Page 123: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 110

75 ”””

76 f i l . w r i t e ( '*ELEMENT , TYPE=%s, ELSET=%s\n' % ( type . upper ( ) , name ) )

77 nn = elems . shape [ 1 ]

78 fmt = '%d' + nn*', %d' + '\n'

79 f o r i , e i n enumerate ( e l ems+no f s ) :

80 f i l . w r i t e ( fmt % ( ( i+eo f s , )+t u p l e ( e ) ) )

81 i f name != 'Eall' :

82 f i l . w r i t e ( '*ELSET , ELSET=Eall\n%s\n' % name)

83

84

85 def wr i t e S e t ( f i l , type , name , se t , o f s =1) :

86 ””” Wri te a named s e t o f nodes or e l ement s ( type=NSET |ELSET) ”””

87 f i l . w r i t e ( "*%s,%s=%s\n" % ( type , type , name) )

88 f o r i i n s e t :

89 f i l . w r i t e ( "%d,\n"%( i+o f s ) )

90

91

92 m a t e r i a l s w r i t t e n =[]

93 def w r i t e S e c t i o n ( f i l , n r ) :

94 ””” Wri te an e l ement s e c t i o n f o r the named e lement s e t .

95

96 nr i s the p r o p e r t y number o f the e l ement s e t .

97 ”””

98 e l=e l emp r o p e r t i e s [ nr ]

99 ############

100 ##FRAME e l ement s

101 ##########################

102 i f e l . e l emtype . upper ( ) i n [ 'FRAME3D ' , 'FRAME2D ' ] :

103 i f e l . s e c t i o n t y p e . upper ( ) == 'GENERAL ' :

104 f i l . w r i t e ( ”””*FRAME SECTION , ELSET=E l emen t s e t %s , SECTION=

GENERAL, DENSITY=%f

105 %f , %f , %f , %f , %f \n”””%(nr , f l o a t ( e l . d e n s i t y ) , f l o a t ( e l . c r o s s s e c t i o n ) ,

f l o a t ( e l . momen t i n e r t i a 11 ) , f l o a t ( e l . momen t i n e r t i a 12 ) , f l o a t ( e l .

momen t i n e r t i a 22 ) , f l o a t ( e l . t o r s i o n a l r i g i d i t y ) ) )

106 i f e l . o r i e n t a t i o n != None :

107 f i l . w r i t e ( ”””%f ,%f ,% f ”””%( e l . o r i e n t a t i o n [ 0 ] , e l . o r i e n t a t i o n

[ 1 ] , e l . o r i e n t a t i o n [ 2 ] ) )

108 f i l . w r i t e ( ”””\n %f , %f \n”””%( f l o a t ( e l . young modulus ) , f l o a t ( e l .

s hea r modu lu s ) ) )

109 i f e l . s e c t i o n t y p e . upper ( ) == 'CIRC' :

110 f i l . w r i t e ( ”””*FRAME SECTION , ELSET=E l emen t s e t %s , SECTION=CIRC ,

DENSITY=%f

111 %f \n”””%(nr , f l o a t ( e l . d e n s i t y ) , f l o a t ( e l . r a d i u s ) ) )

112 i f e l . o r i e n t a t i o n != None :

113 f i l . w r i t e ( ”””%f ,%f ,% f ”””%( e l . o r i e n t a t i o n [ 0 ] , e l . o r i e n t a t i o n

[ 1 ] , e l . o r i e n t a t i o n [ 2 ] ) )

114 f i l . w r i t e ( ”””\n %f , %f \n”””%( f l o a t ( e l . young modulus ) , f l o a t ( e l .

s hea r modu lu s ) ) )

115 ##############

116 ##connec to r e l ement s

117 ##########################

118 e l i f e l . e l emtype . upper ( ) i n [ 'CONN3D2 ' , 'CONN2D2 ' ] :

119 i f e l . s e c t i o n t y p e . upper ( ) != 'GENERAL ' :

120 i f e l . o r i e n t a t i o n != None :

121 f i l . w r i t e ( ”””*ORIENTATION , SYSTEM=CYLINDRICAL , NAME=

O r i e n t a t i o n %s

Page 124: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 111

122 %f ,%f ,%f ,%f ,%f ,% f

123 1 , 0 . 0

124 ”””%(nr , e l . o r i e n t a t i o n [ 0 ] , e l . o r i e n t a t i o n [ 1 ] , e l . o r i e n t a t i o n [ 2 ] , e l .

o r i e n t a t i o n [ 3 ] , e l . o r i e n t a t i o n [ 4 ] , e l . o r i e n t a t i o n [ 5 ] ) )

125 i f e l . b e h a v i o r == None :

126 f i l . w r i t e ( ”””*CONNECTOR SECTION , ELSET=E l emen t s e t %s

127 %s

128 ””” %(nr , e l . s e c t i o n t y p e . upper ( ) ) )

129 i f e l . o r i e n t a t i o n != None :

130 f i l . w r i t e ( ””” O r i e n t a t i o n %s \n”””%(nr ) )

131 e l s e :

132 f i l . w r i t e ( ”””*CONNECTOR SECTION , ELSET=E l emen t s e t %s ,

BEHAVIOR=Behav i o r %s

133 %s

134 ”””%(nr , nr , e l . s e c t i o n t y p e . upper ( ) ) )

135 i f e l . o r i e n t a t i o n != None :

136 f i l . w r i t e ( ””” O r i e n t a t i o n %s \n”””%(nr ) )

137 f i l . w r i t e ( ”””*CONNECTOR BEHAVIOR, NAME=Behav i o r %s

138 ”””%(nr ) )

139 f o r i i n range ( l e n ( e l . b e h a v i o r ) ) :

140 i f e l . b e h a v i o r [ i ] . o p t i on . upper ( ) == 'STOP' :

141 f i l . w r i t e ( ”””*CONNECTOR %s , COMPONENT=%s

142 %s ,%s

143 ””” %( e l . b e h a v i o r [ i ] . o p t i on . upper ( ) , e l . b e h a v i o r [ i ] . component , e l . b e h a v i o r [ i

] . l o l i m i t , e l . b e h a v i o r [ i ] . u p l im i t ) )

144 e l i f e l . b e h a v i o r [ i ] . o p t i on . upper ( ) == 'FRICTION ' :

145 f i l . w r i t e ( ”””*CONNECTOR FRICTION , PREDEFINED

146

147 *FRICTION

148 %f

149 ”””%( e l . b e h a v i o r [ i ] . f r i c t i o n c o e f ) )

150

151 ############

152 ##TRUSS e l ement s

153 ##########################

154 e l i f e l . e l emtype . upper ( ) i n [ 'T2D2' , 'T2D2H ' , 'T2D3' , 'T2D3H ' , 'T3D2' ,

'T3D2H ' , 'T3D3' , 'T3D3H ' ] :

155 #p r i n t m a t e r i a l s w r i t t e n

156 i f e l . m a t e r i a l . name not i n m a t e r i a l s w r i t t e n :

157 f i l . w r i t e ( ”””*MATERIAL , NAME=%s

158 *ELASTIC

159 %f ,% f

160 *DENSITY

161 %f

162 ”””%( e l . m a t e r i a l . name , f l o a t ( e l . young modulus ) , f l o a t ( e l . p o i s s o n r a t i o ) ,

f l o a t ( e l . d e n s i t y ) ) )

163 m a t e r i a l s w r i t t e n . append ( e l . m a t e r i a l . name )

164 i f e l . s e c t i o n t y p e . upper ( ) == 'GENERAL ' :

165 f i l . w r i t e ( ”””*SOLID SECTION , ELSET=E l emen t s e t %s , MATERIAL=%s

166 %f

167 ””” %(nr , e l . m a t e r i a l . name , f l o a t ( e l . c r o s s s e c t i o n ) ) )

168 e l i f e l . s e c t i o n t y p e . upper ( ) == 'CIRC' :

169 f i l . w r i t e ( ”””*SOLID SECTION , ELSET=E l emen t s e t %s , MATERIAL=%s

170 %f

171 ””” %(nr , e l . m a t e r i a l . name , f l o a t ( e l . r a d i u s ) **2*math . p i ) )

172 ############

Page 125: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 112

173 ##BEAM e l ement s

174 ##########################

175 e l i f e l . e l emtype . upper ( ) i n [ 'B21' , 'B21H' , 'B22' , 'B22H' , 'B23' , 'B23H' ,

'B31' , 'B31H' , 'B32' , 'B32H' , 'B33' , 'B33H' ] :

176 i f e l . s e c t i o n t y p e . upper ( ) == 'GENERAL ' :

177 f i l . w r i t e ( ”””*BEAM GENERAL SECTION , ELSET=E l emen t s e t %s ,

SECTION=GENERAL, DENSITY=%f

178 %f , %f , %f , %f , %f \n”””%(nr , f l o a t ( e l . d e n s i t y ) , f l o a t ( e l . c r o s s s e c t i o n ) ,

f l o a t ( e l . momen t i n e r t i a 11 ) , f l o a t ( e l . momen t i n e r t i a 12 ) , f l o a t ( e l .

momen t i n e r t i a 22 ) , f l o a t ( e l . t o r s i o n a l r i g i d i t y ) ) )

179 i f e l . o r i e n t a t i o n != None :

180 f i l . w r i t e ( ”””%f ,%f ,% f ”””%( e l . o r i e n t a t i o n [ 0 ] , e l . o r i e n t a t i o n

[ 1 ] , e l . o r i e n t a t i o n [ 2 ] ) )

181 f i l . w r i t e ( ”””\n %f , %f \n”””%( f l o a t ( e l . young modulus ) , f l o a t ( e l .

s hea r modu lu s ) ) )

182 i f e l . s e c t i o n t y p e . upper ( ) == 'CIRC' :

183 f i l . w r i t e ( ”””*BEAM GENERAL SECTION , ELSET=E l emen t s e t %s ,

SECTION=CIRC , DENSITY=%f

184 %f \n”””%(nr , f l o a t ( e l . d e n s i t y ) , f l o a t ( e l . r a d i u s ) ) )

185 i f e l . o r i e n t a t i o n != None :

186 f i l . w r i t e ( ”””%f ,%f ,% f ”””%( e l . o r i e n t a t i o n [ 0 ] , e l . o r i e n t a t i o n

[ 1 ] , e l . o r i e n t a t i o n [ 2 ] ) )

187 f i l . w r i t e ( ”””\n %f , %f \n”””%( f l o a t ( e l . young modulus ) , f l o a t ( e l .

s hea r modu lu s ) ) )

188 e l s e :

189 p r i n t ( 'Sorry , elementtype %s is not yet supported '%e l . e l emtype )

190

191

192 def t r an s f o rm ( f i l , p ropnr ) :

193 ””” Transform the noda l c o o r d i n a t e s o f the nodes w i th a g i v en p r o p e r t y

number . ”””

194 n = nod e p r o p e r t i e s [ p ropnr ]

195 i f n . coo rd s . l owe r ( )=='cartesian ' :

196 i f n . c o o r d s e t ! = [ ] :

197 f i l . w r i t e ( ”””*TRANSFORM, NSET=Nodese t %s , TYPE=R

198 %f ,%f ,%f ,%f ,%f ,% f

199 ”””%(propnr , n . c o o r d s e t [ 0 ] , n . c o o r d s e t [ 1 ] , n . c o o r d s e t [ 2 ] , n . c o o r d s e t [ 3 ] , n .

c o o r d s e t [ 4 ] , n . c o o r d s e t [ 5 ] ) )

200 e l i f n . coo rd s . l owe r ( )=='spherical ' :

201 f i l . w r i t e ( ”””*TRANSFORM, NSET=Nodese t %s , TYPE=S

202 %f ,%f ,%f ,%f ,%f ,% f

203 ”””%(propnr , n . c o o r d s e t [ 0 ] , n . c o o r d s e t [ 1 ] , n . c o o r d s e t [ 2 ] , n . c o o r d s e t [ 3 ] , n .

c o o r d s e t [ 4 ] , n . c o o r d s e t [ 5 ] ) )

204 e l i f n . coo rd s . l owe r ( )=='cylindrical ' :

205 f i l . w r i t e ( ”””*TRANSFORM, NSET=Nodese t %s , TYPE=C

206 %f ,%f ,%f ,%f ,%f ,% f

207 ”””%(propnr , n . c o o r d s e t [ 0 ] , n . c o o r d s e t [ 1 ] , n . c o o r d s e t [ 2 ] , n . c o o r d s e t [ 3 ] , n .

c o o r d s e t [ 4 ] , n . c o o r d s e t [ 5 ] ) )

208 e l s e :

209 p r i n t '%s is not a valid coordinate system '%nod e p r o p e r t i e s [ p ropnr ] .

coo rd s

210

211

212 def wr i t eBounda r i e s ( f i l , boundset='ALL' , opb=None ) :

213 ””” Wri te noda l boundary c o n d i t i o n s .

214

Page 126: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 113

215 boundset i s a l i s t o f p r o p e r t y numbers o f which the bounda r i e s shou l d

be w r i t t e n .

216 The u s e r can s e t opb='NEW ' to remove the p r e v i o u s boundary c o nd i t i o n s ,

o r s e t opb='MOD' to modi fy them .

217 ”””

218 i f boundset !=None :

219 f i l . w r i t e ( "*BOUNDARY" )

220 i f opb!=None :

221 f i l . w r i t e ( ", OP=%s" % opb )

222 f i l . w r i t e ( '\n' )

223 i f i s i n s t a n c e ( boundset , l i s t ) :

224 f o r i i n boundset :

225 i f n o d e p r o p e r t i e s [ i ] . bound!=None :

226 i f i s i n s t a n c e ( n o d e p r o p e r t i e s [ i ] . bound , l i s t ) :

227 f o r b i n range (6 ) :

228 i f n o d e p r o p e r t i e s [ i ] . bound [ b]==1:

229 f i l . w r i t e ( "Nodeset_%s, %s\n" % ( i , b+1) )

230 e l i f i s i n s t a n c e ( n o d e p r o p e r t i e s [ i ] . bound , s t r ) :

231 f i l . w r i t e ( "Nodeset_%s, %s\n"%(i , n o d e p r o p e r t i e s [ i ] .

bound ) )

232 e l i f boundset . upper ( ) =='ALL' :

233 f o r i i n n o d e p r o p e r t i e s . i t e r k e y s ( ) :

234 i f n o d e p r o p e r t i e s [ i ] . bound!=None :

235 i f i s i n s t a n c e ( n o d e p r o p e r t i e s [ i ] . bound , l i s t ) :

236 f o r b i n range (6 ) :

237 i f n o d e p r o p e r t i e s [ i ] . bound [ b]==1:

238 f i l . w r i t e ( "Nodeset_%s, %s\n"%(i , b+1) )

239 e l i f i s i n s t a n c e ( n o d e p r o p e r t i e s [ i ] . bound , s t r ) :

240 f i l . w r i t e ( "Nodeset_%s, %s\n"%(i , n o d e p r o p e r t i e s [ i ] .

bound ) )

241 e l s e :

242 p r i n t "The boundaries have to defined in a list 'boundset '"

243

244

245 def wr i t eD i s p l a c emen t s ( f i l , d i s p s e t='ALL' , op='MOD' ) :

246 ””” Wri te BOUNDARY, TYPE=DISPLACEMENT boundary c o n d i t i o n s .

247

248 d i s p s e t i s a l i s t o f the p r o p e r t y number o f which the d i s p l a c emen t

shou ld be w r i t t e n .

249 By d e f a u l t , the boundary c o n d i t i o n s a r e a p p l i e d as a mod i f i c a t i o n o f

the

250 e x i s t i n g boundary c o nd i t i o n s , i . e . i n i t i a l c o n d i t i o n s and c o n d i t i o n s

from

251 p r e v i o u s s t e p s remain i n e f f e c t .

252 The u s e r can s e t op='NEW ' to remove the p r e v i o u s c o n d i t i o n s .

253 ! ! ! ! Th i s means tha t i n i t i a l c ond t i o n s a r e a l s o removed !

254 ”””

255 f i l . w r i t e ( "*BOUNDARY , TYPE=DISPLACEMENT , OP=%s\n" % op )

256 i f i s i n s t a n c e ( d i s p s e t , l i s t ) :

257 f o r i i n d i s p s e t :

258 i f n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t !=None :

259 f o r d i n range ( l e n ( n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t ) ) :

260 f i l . w r i t e ( "Nodeset_%s, %s, %s, %s\n" % ( i ,

n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t [ d ] [ 0 ] , n o d e p r o p e r t i e s

[ i ] . d i s p l a c emen t [ d ] [ 0 ] , n o d e p r o p e r t i e s [ i ] .

d i s p l a c emen t [ d ] [ 1 ] ) )

Page 127: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 114

261 e l i f d i s p s e t . upper ( )=='ALL' :

262 f o r i i n n o d e p r o p e r t i e s . i t e r k e y s ( ) :

263 i f n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t !=None :

264 f o r d i n range ( l e n ( n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t ) ) :

265 f i l . w r i t e ( "Nodeset_%s, %s, %s, %s\n" % ( i ,

n o d e p r o p e r t i e s [ i ] . d i s p l a c emen t [ d ] [ 0 ] , n o d e p r o p e r t i e s

[ i ] . d i s p l a c emen t [ d ] [ 0 ] , n o d e p r o p e r t i e s [ i ] .

d i s p l a c emen t [ d ] [ 1 ] ) )

266

267

268 def wr i t eC l o a d s ( f i l , c l o a d s e t='ALL' , o p c l='NEW' ) :

269 ””” Wri te c l o a d s .

270

271 c l o a d s e t i s a l i s t o f p r o p e r t y numbers o f which the c l o a d s shou ld be

w r i t t e n .

272 The u s e r can s e t op c l ='NEW ' to remove the p r e v i o u s c l oads , o r s e t op c l

='MOD' to modi fy them .

273 ”””

274 f i l . w r i t e ( "*CLOAD , OP=%s\n" % opc l )

275 i f i s i n s t a n c e ( c l o ad s e t , l i s t ) :

276 f o r i i n c l o a d s e t :

277 i f n o d e p r o p e r t i e s [ i ] . c l o ad !=None :

278 f o r c l i n range (6 ) :

279 i f n o d e p r o p e r t i e s [ i ] . c l o ad [ c l ] !=0 :

280 f i l . w r i t e ( "Nodeset_%s, %s, %s\n" % ( i , c l +1,

n o d e p r o p e r t i e s [ i ] . c l o ad [ c l ] ) )

281 e l i f c l o a d s e t . upper ( )=='ALL' :

282 f o r i i n n o d e p r o p e r t i e s . i t e r k e y s ( ) :

283 i f n o d e p r o p e r t i e s [ i ] . c l o ad !=None :

284 f o r c l i n range (6 ) :

285 i f n o d e p r o p e r t i e s [ i ] . c l o ad [ c l ] !=0 :

286 f i l . w r i t e ( "Nodeset_%s, %s, %s\n" % ( i , c l +1,

n o d e p r o p e r t i e s [ i ] . c l o ad [ c l ] ) )

287 e l s e :

288 p r i n t "The loads have to be defined in a list 'cloadset '"

289

290

291 def wr i t eD l o ad s ( f i l , d l o a d s e t='ALL' , opd l='NEW' ) :

292 ””” Wri te Dloads .

293

294 d l o a d s e t i s a l i s t o f p r o p e r t y numbers o f which the d l o ad s shou l d be

w r i t t e n .

295 The u s e r can s e t opd l='NEW ' to remove the p r e v i o u s c l oads , o r s e t opd l

='MOD' to modi fy them .

296 ”””

297 f i l . w r i t e ( "*DLOAD , OP=%s\n" % opd l )

298 i f i s i n s t a n c e ( d l oad s e t , l i s t ) :

299 f o r i i n d l o a d s e t :

300 i f i s i n s t a n c e ( e l emp r o p e r t i e s [ i ] . e l emload , l i s t ) :

301 f o r l o ad i n range ( l e n ( e l emp r o p e r t i e s [ i ] . e l em load ) ) :

302 i f e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . l o a d l a b e l . upper ( )

== 'GRAV' :

303 f i l . w r i t e ( "Elementset_%s, GRAV , 9.81, 0, 0 ,-1\n" %

( i ) )

304 e l s e :

Page 128: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 115

305 f i l . w r i t e ( "Elementset_%s, %s, %s\n" % ( i ,

e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . l o a d l a b e l ,

e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . magnitude ) )

306 e l i f d l o a d s e t . upper ( )=='ALL' :

307 f o r i i n e l emp r o p e r t i e s . i t e r k e y s ( ) :

308 i f i s i n s t a n c e ( e l emp r o p e r t i e s [ i ] . e l emload , l i s t ) :

309 f o r l o ad i n range ( l e n ( e l emp r o p e r t i e s [ i ] . e l em load ) ) :

310 i f e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . l o a d l a b e l . upper ( )

== 'GRAV' :

311 f i l . w r i t e ( "Elementset_%s, GRAV , 9.81, 0, 0 ,-1\n" %

( i ) )

312 e l s e :

313 f i l . w r i t e ( "Elementset_%s, %s, %s\n" % ( i ,

e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . l o a d l a b e l ,

e l emp r o p e r t i e s [ i ] . e l em load [ l oad ] . magnitude ) )

314 e l s e :

315 p r i n t "The loads have to be defined in a list 'dloadset '"

316

317

318 def wr i t eS tepOutput ( f i l , t ype='FIELD ' , v a r i a b l e='PRESELECT ' , k i nd='' , s e t=

'ALL' , ID=None ) :

319 ””” Wri te the s t ep output r e q u e s t s .

320

321 type = 'FIELD ' or 'HISTORY '

322 v a r i a b l e = 'ALL ' or 'PRESELECT '

323 k ind = ' ' , 'NODE ' , o r 'ELEMENT '

324 s e t i s a l i s t o f p r o p e r t y numbers o f which the data shou ld be w r i t t e n

to the ODB− f i l e .

325 ID i s a l i s t o f output v a r i a b l e i d e n t i f i e r s .

326 ”””

327 f i l . w r i t e ( "*OUTPUT , %s, VARIABLE =%s\n" %(type . upper ( ) , v a r i a b l e . upper ( ) )

)

328 i f k ind . upper ( )=='ELEMENT ' :

329 i f i s i n s t a n c e ( se t , l i s t ) :

330 f o r j i n range ( l e n ( s e t ) ) :

331 f i l . w r i t e ( "*ELEMENT OUTPUT , ELSET=Elementset_%s\n"%s t r ( s e t [

j ] ) )

332 i f ID!=None :

333 f o r j i n range ( l e n ( ID ) ) :

334 f i l . w r i t e ( "%s \n"%ID [ j ] )

335 e l i f s e t . upper ( )=='ALL' :

336 f i l . w r i t e ( "*ELEMENT OUTPUT , ELSET=Eall\n" )

337 i f ID!=None :

338 f o r j i n range ( l e n ( ID ) ) :

339 f i l . w r i t e ( "%s \n"%ID [ j ] )

340 e l s e :

341 p r i n t "The set should be a list"

342 i f k ind . upper ( )=='NODE' :

343 i f i s i n s t a n c e ( se t , l i s t ) :

344 f o r j i n range ( l e n ( s e t ) ) :

345 f i l . w r i t e ( "*NODE OUTPUT , NSET=Nodeset_%s\n"%s t r ( s e t [ j ] ) )

346 i f ID!=None :

347 f o r j i n range ( l e n ( ID ) ) :

348 f i l . w r i t e ( "%s \n"%ID [ j ] )

349 e l i f s e t . upper ( )=='ALL' :

350 f i l . w r i t e ( "*NODE OUTPUT , NSET=Nall\n" )

Page 129: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 116

351 i f ID!=None :

352 f o r j i n range ( l e n ( ID ) ) :

353 f i l . w r i t e ( "%s \n"%ID [ j ] )

354 e l s e :

355 p r i n t "The set should be a list of property numbers."

356

357

358 def wr i t eS t epData ( f i l , k i nd , s e t='ALL' , ID=None , g l o b a l a x e s='No' ) :

359 ””” Wri te the r e qu e s t e d output to the . dat− f i l e .

360

361 k ind = 'NODE ' or 'ELEMENT '

362 s e t i s a s e t o f p r o p e r t y numbers o f which the data shou l d be w r i t t e n to

the . dat− f i l e

363 ID i s a l i s t o f output v a r i a b l e i d e n t i f i e r s

364 I f g l o b a l a x e s = ' ye s ' , a l l r e qu e s t e d output i s r e t u r n e d i n the g l o b a l

a x i s system . Otherwise , i f the n o d e p r o p e r t i e s were d e f i n i e d i n a

l o c a l a x i s system , the output i s r e t u r n e d i n t h i s a x i s system .

365 ”””

366 i f ID!=None :

367 i f k ind . upper ( )=='NODE' :

368 i f i s i n s t a n c e ( se t , l i s t ) :

369 f o r i i n s e t :

370 f i l . w r i t e ( "*NODE PRINT , NSET = Nodeset_%s, GLOBAL = %s

\n"%( s t r ( i ) , g l o b a l a x e s ) )

371 f o r j i n range ( l e n ( ID ) ) :

372 f i l . w r i t e ( "%s \n"%ID [ j ] )

373 i f i s i n s t a n c e ( se t , s t r ) :

374 f i l . w r i t e ( "*NODE PRINT , GLOBAL = %s \n"%g l o b a l a x e s )

375 f o r j i n range ( l e n ( ID ) ) :

376 f i l . w r i t e ( "%s \n"%ID [ j ] )

377 i f k ind . upper ( )=='ELEMENT ' :

378 i f i s i n s t a n c e ( se t , l i s t ) :

379 f o r i i n s e t :

380 f i l . w r i t e ( "*EL PRINT , ELSET = Elementset_%s \n"%s t r ( i ) )

381 f o r j i n range ( l e n ( ID ) ) :

382 f i l . w r i t e ( "%s \n"%ID [ j ] )

383 i f i s i n s t a n c e ( se t , s t r ) :

384 f i l . w r i t e ( "*EL PRINT \n" )

385 f o r j i n range ( l e n ( ID ) ) :

386 f i l . w r i t e ( "%s \n"%ID [ j ] )

387

388

389 def wr i t e S t e p ( f i l , a n a l y s i s='STATIC ' , t ime =[0 , 0 , 0 , 0 ] , nlgeom='NO' , c l o a d s e t

='all' , o p c l='NEW' , d l o a d s e t='all' , opd l='NEW' , boundset=None , opb=None

, d i s p s e t='ALL' , op='MOD' , outp =[ ] , dat =[ ] , f i l n am='' ) :

390 ””” Wri te a l oad s t ep .

391

392 a n a l y s i s t y p e i s the a n a l y s i s type . Cu r r e n t l y , on l y STATIC i s suppo r t ed .

393 t ime i s a l i s t which d e f i n e s the t ime s t ep .

394 I f nlgeom='YES ' , the a n a l y s i s w i l l be non− l i n e a r .

395 C load s e t i s a l i s t o f p r o p e r t y numbers o f which the c l o a d s w i l l be used

i n t h i s a n a l y s i s .

396 Dloadse t i s a l i s t o f p r o p e r t y numbers o f which the d l o ad s w i l l be used

i n t h i s a n a l y s i s .

397 Boundset i s a l i s t o f p r ope r y numbers o f which the bounds w i l l be used

i n t h i s a n a l y s i s .

Page 130: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 117

398 By d e f a u l t , the l oad i s a p p l i e d as a new load , i . e . l o a d s

399 from p r e v i o u s s t e p s a r e removed . The u s e r can s e t op='MOD'

400 to keep /modi fy the p r e v i o u s l o a d s .

401 outp i s a l i s t o f Odb− i n s t a n c e s .

402 dat i s a l i s t o f Dat− i n s t a n c e s .

403 ”””

404 i f a n a l y s i s . upper ( )=='STATIC ' :

405 f i l . w r i t e ( ”””*STEP , NLGEOM=%s

406 *STATIC

407 %f , %f , %f , %f

408 ””” % ( nlgeom , t ime [ 0 ] , t ime [ 1 ] , t ime [ 2 ] , t ime [ 3 ] ) )

409 wr i t eBounda r i e s ( f i l , boundset , opb )

410 wr i t eD i s p l a c emen t s ( f i l , d i s p s e t , op )

411 wr i t eC l o a d s ( f i l , c l o a d s e t , op c l )

412 wr i t eD l o ad s ( f i l , d l o ad s e t , opd l )

413 f o r i i n range ( l e n ( outp ) ) :

414 wr i t eS tepOutput ( f i l , outp [ i ] . type , outp [ i ] . v a r i a b l e , outp [ i ] . k ind

, outp [ i ] . s e t , outp [ i ] . ID )

415 f o r i i n range ( l e n ( dat ) ) :

416 wr i t eS tepData ( f i l , dat [ i ] . k ind , dat [ i ] . s e t , dat [ i ] . ID , dat [ i ] .

g l o b a l a x e s )

417 i f f i l n am :

418 f = f i l e ( f i l nam , 'r' )

419 f o r l i n e i n f :

420 f i l . w r i t e ( l i n e )

421 import os

422 os . remove ( f i l n am )

423 f i l . w r i t e ( "*END STEP\n" )

424

425

426 ##################################################

427 ## Some c l a s s e s to s t o r e a l l the r e q u i r e d i n f o rma t i o n

428 ##################################################

429

430 c l a s s AbqData ( Cascad ingD i c t ) :

431 ””” Conta in s a l l data r e q u i r e d to w r i t e the abaqus i n pu t f i l e . ”””

432

433 def i n i t ( s e l f , model , a n a l y s i s =[ ] , dat =[ ] , odb =[ ] ) :

434 ””” Crea te new AbqData .

435

436 model i s a Model i n s t a n c e .

437 a n a l y s i s i s a l i s t o f A n a l y s i s i n s t a n c e s .

438 dat i s a l i s t o f Dat i n s t a n c e s .

439 odb i s a l i s t o f Odb i n s t a n c e s .

440 ”””

441 Cascad ingD i c t . i n i t ( s e l f , {'model ' : model , 'analysis ' : a n a l y s i s , '

dat' : dat , 'odb' : odb })

442

443

444 c l a s s Model ( D i c t ) :

445 ””” Conta in s a l l model data . ”””

446

447 def i n i t ( s e l f , nodes , e lems , nodeprop , e lemprop , i n i t i a l b o u n d a r i e s=

'ALL' ) :

448 ””” Crea te new model data .

449

Page 131: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 118

450 Nodes and e lems a r e t up l e s , wich can be ob ta i n ed by

451 nodes , e l ems = F . feMode l ( )

452 nodeprop i s a l i s t o f a l l the node p r op e r t y numbers .

453 e lemprop i s a l i s t o f a l l the e l ement p r o p e r t y numbers . Th i s l i s t

can be ob ta i n ed by

454 e lemprop = F . p

455 i n i t i a l b o u n d a r i e s i s a l i s t o f a l l the i n i t i a l b ounda r i e s . I t can

a l s o be the s t r i n g 'ALL ' . Th i s i s the d e f a u l t .

456 ”””

457 Dic t . i n i t ( s e l f , {'nodes ' : nodes , 'elems ' : e lems , 'nodeprop ' :

nodeprop , 'elemprop ' : e lemprop , 'initialboundaries ' :

i n i t i a l b o u n d a r i e s })

458

459

460 c l a s s Ana l y s i s ( D i c t ) :

461 ””” Conta in s a l l data about the a n a l y s i s . ”””

462

463 def i n i t ( s e l f , a n a l y s i s t y p e='STATIC ' , t ime =[0 , 0 , 0 , 0 ] , nlgeom='NO' ,

c l o a d s e t='All' , o p c l='NEW' , d l o a d s e t='all' , opd l='NEW' , boundset=

None , opb=None , d i s p s e t='ALL' , op='MOD' ) :

464 ””” Crea te new a n a l y s i s data .

465

466 a n a l y s i s t y p e i s the a n a l y s i s type . Cu r r e n t l y , on l y STATIC i s

suppo r t ed .

467 t ime i s a l i s t which d e f i n e s the t ime s t ep .

468 I f nlgeom='YES ' , the a n a l y s i s w i l l be non− l i n e a r .

469 C load s e t i s a l i s t o f p r o p e r t y numbers o f which the c l o a d s w i l l be

used i n t h i s a n a l y s i s .

470 Dloadse t i s a l i s t o f p r o p e r t y numbers o f which the d l o ad s w i l l be

used i n t h i s a n a l y s i s .

471 Boundset i s a l i s t o f p r ope r y numbers o f which the bounds w i l l be

used i n t h i s a n a l y s i s . I n i t i a l b ounda r i e s a r e d e f i n e d i n a

Model i n s t a n c e .

472 By d e f a u l t , the l oad i s a p p l i e d as a new load , i . e . l o a d s

473 from p r e v i o u s s t e p s a r e removed . The u s e r can s e t op='MOD'

474 to keep /modi fy the p r e v i o u s l o a d s .

475 ”””

476 Dic t . i n i t ( s e l f ,{ 'analysistype ' : a n a l y s i s t y p e , 'time' : t ime , '

nlgeom ' : nlgeom , 'cloadset ' : c l o ad s e t , 'opcl' : opc l , 'dloadset ' :

d l o ad s e t , 'opdl' : opdl , 'boundset ' : boundset , 'opb' : opb , '

dispset ' : d i s p s e t , 'op' : op })

477

478

479 c l a s s Odb( D ic t ) :

480 ””” Conta in s a l l data about the output r e q u e s t s to the .ODB− f i l e . ”””

481

482 def i n i t ( s e l f , t ype='FIELD ' , v a r i a b l e='PRESELECT ' , k i nd = '' , s e t=

'all' , ID=None ) :

483 ””” Crea te new ODB data .

484

485 type = 'FIELD ' or 'HISTORY '

486 v a r i a b l e = 'ALL ' or 'PRESELECT '

487 k ind = 'NODE ' , o r 'ELEMENT '

488 s e t i s a l i s t o f p r o p e r t y numbers o f which the data shou ld be

w r i t t e n to the ODB− f i l e .

489 ID i s a l i s t o f output v a r i a b l e i d e n t i f i e r s .

Page 132: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 119

490 ”””

491 Dic t . i n i t ( s e l f , {'type' : type , 'variable ' : v a r i a b l e , 'kind' : k ind ,

'set' : s e t , 'ID' : ID })

492

493

494 c l a s s Dat ( D ic t ) :

495 ””” Conta in s a l l data about output r e q u e s t s to the . dat− f i l e . ”””

496

497 def i n i t ( s e l f , k i nd='NODE' , s e t='ALL' , ID=['COORD ' ] , g l o b a l a x e s = '

No' ) :

498 ””” Crea te new Dat data .

499

500 k ind = 'NODE ' or 'ELEMENT '

501 s e t i s a s e t o f p r o p e r t y numbers o f which the data shou l d be

w r i t t e n to the . dat− f i l e .

502 ID i s a l i s t o f output v a r i a b l e i d e n t i f i e r s .

503 I f g l o b a l a x e s = ' ye s ' , a l l r e qu e s t e d output i s r e t u r n e d i n the

g l o b a l a x i s system . Otherwise , i f the n o d e p r o p e r t i e s were

d e f i n i e d i n a l o c a l a x i s system , the output i s r e t u r n e d i n t h i s

a x i s system .

504 ”””

505 Dic t . i n i t ( s e l f , {'kind' : k ind , 'set' : s e t , 'ID' : ID , 'globalaxes ' :

g l o b a l a x e s })

506

507

508 ##################################################

509 ## Combine a l l p r e v i o u s f u n c t i o n s to w r i t e the Abaqus i n pu t f i l e

510 ##################################################

511

512 def wr i t eAbq Inpu t ( abqdata , j ob=s t r (GD. sc r ip tName ) [ : −3 ] ) :

513 ””” w r i t e an Abaqus i n pu t f i l e .

514

515 abqdata i s an AbqData−i n s t a n c e .

516 j ob i s the name o f the i n p u t f i l e .

517 ”””

518 # Create the Abaqus i n pu t f i l e

519 f i l n am = job+'.inp'

520 f i l = f i l e ( f i l nam , 'w' )

521 p r i n t "Writing %s"%f i l n am

522

523 #wr i t e the head ing

524 wr i t eHead i ng ( f i l , ”””Model : %s Date : %s Created by pyFormex

525 S c r i p t : %s

526 ””” % ( job , da t e t ime . date . today ( ) , GD. sc r ip tName ) )

527

528 # number o f nodes and e lems

529 nnod = abqdata . nodes . shape [ 0 ]

530 n e l = l e n ( abqdata . e l ems )

531 p r i n t "Number of elements: %s" % ne l

532 p r i n t "Compressed number of nodes: %s" % nnod

533

534 #wr i t e a l l nodes

535 p r i n t "Writing nodes"

536 wr i t eNodes ( f i l , abqdata . nodes )

537

538 #wr i t e node s e t s and t h e i r t r a n s f o rma t i o n s

Page 133: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 120

539 p r i n t "Writing nodesets"

540 n l i s t = arange ( nnod )

541 #p r i n t ' nodeprops ' , n o d e p r o p e r t i e s

542 f o r i i n n o d e p r o p e r t i e s . i t e r k e y s ( ) :

543 nodese t = n l i s t [ a r r a y ( abqdata . nodeprop ) == i ]

544 wr i t e S e t ( f i l , 'NSET' , 'Nodeset_ '+s t r ( i ) , node se t )

545 t r an s f o rm ( f i l , i )

546

547 #wr i t e e l ems e t s and t h e i r s e c t i o n

548 p r i n t "Writing element sets"

549 n=1

550 e l e m l i s t = arange ( n e l )

551 f o r i i n e l emp r o p e r t i e s . i t e r k e y s ( ) :

552 e l emse t = e l e m l i s t [ abqdata . e lemprop == i ]

553 wr i t eE l ems ( f i l , abqdata . e l ems [ e l emse t ] , e l emp r o p e r t i e s [ i ] . e lemtype ,

'Elementset_ '+s t r ( i ) , e o f s=n )

554 n = n + l e n ( e l emse t )

555 w r i t e S e c t i o n ( f i l , i )

556

557 #wr i t e e x t r a p r e s t e p f o r p o s t p r o c e s s i n g

558 p r i n t 'Writing extra pre -step sets'

559 wr i t eEx t r aP r eS t e p ( f i l , j ob+'_ps.temp' )

560

561 #wr i t e s t e p s

562 p r i n t "Writing steps"

563 wr i t eBounda r i e s ( f i l , abqdata . i n i t i a l b o u n d a r i e s )

564 f o r i i n range ( l e n ( abqdata . a n a l y s i s ) ) :

565 a=abqdata . a n a l y s i s [ i ]

566 wr i t e S t e p ( f i l , a . a n a l y s i s t y p e , a . t ime , a . nlgeom , a . c l o ad s e t , a . opc l ,

a . d l o ad s e t , a . opdl , a . boundset , a . opb , a . d i s p s e t , a . op ,

abqdata . odb , abqdata . dat , j ob+'_as.temp' )

567

568 p r i n t "Done"

569

570

571 ##################################################

572 ## Test

573 ##################################################

574

575 i f name == "__main__" :

576 from formex import *

577

578 #c r e a t i n g the formex

579 F=Formex ( [ [ [ 0 , 0 ] ] , [ [ 1 , 0 ] ] , [ [ 1 , 1 ] ] , [ [ 0 , 1 ] ] ] , [ 1 2 , 8 , 2 ] )

580

581 #read i n g da taba s e s

582 r e a dMa t e r i a l s ( 'materials.db' )

583 r e a dS e c t i o n s ( 'sections.db' )

584

585 # c r e a t i n g p r o p e r t i e s

586 S1=ElemSect ion ( 'IPEA100 ' , 'steel ' )

587 S2=ElemSect ion ({ 'name' : 'circle ' , 'radius ' : 1 0} , 'steel ' , 'CIRC' )

588 S3=ElemSect ion ( s e c t i o n t y p e='join' )

589 BL1=ElemLoad ( 0 . 5 , l o a d l a b e l='PZ' )

590 BL2=ElemLoad ( l o a d l a b e l='Grav' )

591 S2 . d e n s i t y =7850

Page 134: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 121

592 S2 . c r o s s s e c t i o n =572

593 np1=NodeProperty ( 9 , [ 2 , 6 , 4 , 0 , 0 , 0 ] , d i s p l a c emen t = [ [ 3 , 5 ] ] , coo rd s='

cylindrical ' , c o o r d s e t = [0 , 0 , 0 , 0 , 0 , 1 ] )

594 np2=NodeProperty (8 , c l o ad =[9 , 2 , 5 , 3 , 0 , 4 ] , bound='pinned ' )

595 np3=NodeProperty (7 , None , [ 1 , 1 , 1 , 0 , 0 , 1 ] , d i s p l a c emen t = [ [ 2 , 6 ] , [ 4 , 8 ] ] )

596 bottom = ElemProper ty (12 , S2 , [ BL1 ] , 'T2D3' )

597 top = ElemProper ty (2 , S2 , [ BL2 ] , e l emtype='FRAME2D ' )

598 d i ag = ElemProper ty (8 , S3 , e l emtype='conn3d2 ' )

599

600 #c r e a t i n g the i npu t f i l e

601 nodes , e l ems = F . feMode l ( )

602 s t ep1=Ana l y s i s ( nlgeom='yes' , c l o a d s e t =[ ] , boundset =[8 ] )

603 s t ep2=Ana l y s i s ( c l o a d s e t =[9 ] , d l o a d s e t =[ ] , d i s p s e t =[9 ] )

604 o u t h i s t = Odb( type='history ' )

605 o u t f i e l d = Odb( type='field ' , k i nd='node' , s e t= [ 9 , 8 ] , ID='SF' )

606 e lemdat = Dat ( k ind='element ' , ID=['U' , 'coord ' ] )

607 nodedat = Dat ( k ind='node' , s e t =[7 ,9 ] , ID=['U' , 'coord ' ] )

608 model = Model ( nodes , e lems , [ 9 , 8 , 0 , 7 ] , F . p , i n i t i a l b o u n d a r i e s =[7 ] )

609 t o t a l = AbqData ( model , a n a l y s i s =[ step1 , s t ep2 ] , dat=[ e lemdat , nodedat ] ,

odb=[ ou t h i s t , o u t f i e l d ] )

610 wr i t eAbq Inpu t ( t o t a l , j ob='testing ' )

D.6 WireStent Multilayer post.py

Script D.6: WireStent Multilayer post.py1 #!/ u s r / b i n / env python

2 # $ I d : W i r eS t en t po s t . py 107 2007−02−28 18 : 37 : 23Z bene $

3 #

4 # WireStent post−p r o c e s s i n g

5 #

6 # ! ! s t e n t d i ame t e r i s the ou t e r d i amete r o f the s t e n t ! !

7

8 from numpy import *

9 from postabq import *

10 from Wi r e S t e n t Mu l t i l a y e r a n a l import *

11

12 gnuplotcmd = "gnuplot %s"

13

14 # Read and exec the c o n f i g f i l e , i f i t e x i s t s

15 # The c o n f i g f i l e s hou l d be l e g a l Python .

16 # I t can e . g . be used to s e t the gnuplotcmd

17

18 i f os . path . e x i s t s ( 'WireStent.config ' ) :

19 e x e c f i l e ( 'WireStent.config ' )

20

21 ###########################################################################

22

23 def r eadTab l e ( f i l e name , columns=None ) :

24 ”””Read a t a b l e from f i l e .

25

26 L i n e s s t a r t i n g wi th a '# ' a r e comments and a r e i g no r e d .

27 A l l o t h e r l i n e s a r e data l i n e s and shou ld have the same number o f

v a l u e s .

Page 135: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 122

28

29 A l i s t o f column numbers (0−based ) can be g i v en to e x t r a c t on l y

30 a sub s e t o f columns .

31 ”””

32 n c o l s = 0

33 data = [ ]

34 i f not ( os . path . e x i s t s ( f i l e n ame ) ) :

35 r e t u r n a r r a y ( data )

36

37 f = f i l e ( f i l e name , 'r' )

38 #p r i n t f i l e name , nco l s , columns

39 f o r l i n e i n f :

40 i f l i n e [ 0 ] == '#' :

41 cont inue

42 s = l i n e . s t r i p ( '\n' ) . s p l i t ( )

43 i f l e n ( s ) == 0 :

44 cont inue # s i l e n t l y s k i p empty l i n e s

45 i f n c o l s==0:

46 i f not columns :

47 columns = range ( n c o l s )

48 n c o l s = l e n ( s )

49 e l s e :

50 i f l e n ( s ) != n c o l s :

51 p r i n t "Skipping line with invalid number of items from file

%s" % f i l e n ame

52 p r i n t l i n e

53 cont inue

54 data . append ( [ f l o a t ( s [ i ] ) f o r i i n columns ] )

55 f . c l o s e ( )

56 r e t u r n a r r a y ( data )

57

58

59 def c r e a t e a n a l d a t a ( s t e n t d a t a , c o l s ) :

60 ”””Compute the a n a l y t i c a l data f o r the g i v en s t e n t geometry ”””

61 beta = arange (10 ,80 ,2 )

62 r e t u r n w i r e s t e n t a n a l y t i c a l ( s t e n t d a t a , beta , c o l s )

63

64

65 def g e t r a ng e ( a r r , c o l =0,min=0. ,max=f i n f o ( f l o a t ) . max) :

66 ”””Get a range o f v a l u e s from an a r r a y where v a l u e [ c o l ] i s i n [ xmin ,

xmax ] .

67

68 a r r i s a 2−dim nume r i c a l a r r a y

69 c o l i s a column number ( 0 . . a r r . shape [ 1 ] )

70 xmin , xmax a r e the ( i n c l u s i v e ) l i m i t s o f the range .

71

72 The r e t u r n v a l u e i s an a r r a y w i th a l l rows from a r r where the v a l u e

73 o f column c o l i s i n the range [ xmin , xmax ]

74 ”””

75 r e t u r n a r r [ ( a r r [ : , c o l ] >= xmin ) * ( a r r [ : , c o l ] <= xmax ) ]

76

77

78 def w r i t e a n a l f i l e ( f i l nam , co l s , data ) :

79 ””” Wri te a f i l e w i th a n a l y t i c a l data .

80

81 c o l s a r e the column heade r s

Page 136: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 123

82 f l d p i s the a r r a y w i th t a b u l a r data

83 ! l e n ( c o l s ) shou l d equa l data . shape [ 1 ] to be c o n s i s t e n t

84 ”””

85 f = f i l e ( f i l nam , 'w' )

86 fmt = '#' + " %s" * l e n ( c o l s ) + '\n'

87 f . w r i t e ( fmt % t up l e ( c o l s ) )

88 fmt = " %s" * data . shape [ 1 ] + '\n'

89 f o r row i n data :

90 f . w r i t e ( fmt % t up l e ( row ) )

91 f . c l o s e ( )

92

93

94 # What a n a l y t i c a l data do we want to compute

95 a c o l s = [ 'F' , 'L' , 'D' , 'p' , 'Fc' , 'pc' , 'KL' , 'Kp' , 'mu' ]

96

97 def c r e a t eD a t a F i l e s ( jobname , s t e n t d a t a , s i n g l e j o b=Fa l s e ) :

98 ””” Crea te t a b u l a r data f i l e s from Abaqus . dat r e s u l t s f i l e s .

99

100 The jobname i d e n t i f i e s the Abaqus j ob .

101

102 The s t e n t d a t a shou l d no rma l l y be s e t by the p r e p r o c e s s i n g s t ag e .

103 I t i s e i t h e r a d i c t i o n a r y w i th a l l the d e f i n e d data ( t h i s i s the

104 p r e f e r e d use ) or ( f o r c o m p a t i b i l i t y w i th o l d e r s c r i p t s )

105 a ( m u l t i l i n e ) s t r i n g which i s a v a l i d Python t e x t d e f i n i n g the

v a r i a b l e s .

106 Thus , someth ing l i k e :

107 a = 1

108 b = 2

109 e t c . . .

110

111 a c o l s d e f i n e s which v a l u e s shou l d be c a l c u l a t e d from a n a l y t i c a l

f o rmu l a s .

112 The p o s s i b l e v a l u e s a r e d e f i n e d i n W i r eS t en t ana l . py . The i r o r d e r

d e f i n e s

113 the column p o s i t i o n s .

114 ”””

115 g l o b a l a c o l s

116 # Add the s t e n t data to the g l o b a l s ( )

117 i f type ( s t e n t d a t a ) == s t r :

118 #exec ( s t e n t d a t a )

119 p r i n t "DEPRECATED: please convert your script to dict syntax."

120 s t e n t d a t a = e v a l ( "dict(%s)" % s t e n t d a t a . r e p l a c e ( '\n' , ',' ) . s t r i p ( '

,' ) )

121 # s t e n t d a t a i s now a d i c t

122 g l o b a l s ( ) . update ( s t e n t d a t a )

123 # Create the f i l e w i th a n a l y t i c a l data

124 # The con t en t s i s d e f i n e d by the a c o l s argument .

125 f l d p = c r e a t e a n a l d a t a ( s t e n t d a t a , a c o l s )

126 w r i t e a n a l f i l e ( jobname+'-anal.data' , a co l s , f l d p )

127

128 i n i t i a l l e n g t h = z s e t s [3]− z s e t s [ 1 ]

129 l e n g t h c o r r e c t i o n = s t e n t l e n g t h / i n i t i a l l e n g t h

130

131 # Proce s s the Abaqus r e s u l t s

132 r e s = {}133 i f s i n g l e j o b :

Page 137: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 124

134 f i l e n ame = jobname+'.dat'

135 p r i n t "Processing '%s'" % f i l e n ame

136 r = scan ( f i l e n ame )

137 p r i n t 'loads ' , l o a d s

138 f o r s tep , l o ad i n enumerate ( l o a d s ) :

139 p r i n t 'step ,load' , s tep , l o ad

140 i f not r . ha s key ( s t ep +1) or l e n ( r [ s t e p +1] . keys ( ) ) == 0 :

141 p r i n t "I do not have results for step %s" % ( s t ep +1)

142 cont inue

143 r e s [ l o ad [ 0 ] ] = r [ s t e p +1]

144 e l s e :

145 f o r l o ad i n l o a d s :

146 l c = load [ 0 ] [ 0 : 2 ]

147 f i l e n ame = "%s-%s.dat" % ( jobname , l c )

148 p r i n t "Processing '%s'" % f i l e n ame

149 r = scan ( f i l e n ame )

150 i f r . ha s key (1 ) :

151 r e s [ l c+'u' ] = r [ 1 ]

152 # Do we have r e s u l t s f o r un l o ad i ng ?

153 i f r . ha s key (2 ) :

154 r e s [ l c+'d' ] = r [ 2 ]

155

156 f o r l o ad i n l o a d s :

157 l c = load [ 0 ]

158 #p r i n t ' l c ' , l c

159 i f not r e s . ha s key ( l c ) :

160 p r i n t "I do not have results for load case '%s'" % l c

161 cont inue

162 r e s 1 = r e s [ l c ]

163 l a s t = max( t u p l e ( r e s 1 . keys ( ) ) )

164 p r i n t "Load case '%s' (%s): %s increments" % ( lc , l o ad [ 1 ] , l a s t )

165 dataname = '%s-%s.data' % ( jobname , l c )

166 f = f i l e ( dataname , 'w' )

167 f . w r i t e ( "# Data created by %s\n" % f i l e )

168 f . w r i t e ( "# From results in %s\n" % f i l e n ame )

169 f . w r i t e ( "# inc , force , length , diameter\n" )

170 # s t o r a g e f o r ea sy c a l c u l a t i o n o f r ange s

171 f l d = z e r o s ( [ l a s t +1 ,3] , dtype=f l o a t )

172

173 # se t i n i t a l c o n d i t i o n o f l o a d i n g s t e p s to : unloaded , undeformed

174 # ( f o r un l o ad i ng s t ep s , we w i l l use the l a s t i n c r ement o f the

l o a d i n g s t ep )

175 i f l c [ 2 ] == 'u' :

176 f o r c e , l eng th , d i amete r = (0 , s t e n t l e n g t h , s t e n t d i ame t e r )

177 p r i n t "%5s %15f %15f %15f" % (0 , f o r c e , l eng th , d i amete r )

178 f . w r i t e ( "%5s %15f %15f %15f\n" % (0 , f o r c e , l eng th , d i amete r ) )

179 f l d [ 0 ] = [ f o r c e , l eng th , d i amete r ]

180 p r i n t 'last' , r ange (1 , l a s t +1)

181

182 f o r i n c i n range (1 , l a s t +1) :

183 i f not r e s 1 . ha s key ( i n c ) :

184 p r i n t "I do not have results for load case '%s' increment %

s" % ( lc , i n c )

185 cont inue

186 r = r e s 1 [ i n c ]

187 l o a d f a c t o r = r [ 'stime ' ]

Page 138: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 125

188

189 # on un load ing , l o ad f a c t o r = 1−t ime ( t h i s suppose s a s t ep t ime

= 1)

190 i f l c [ 2 ] == 'd' :

191 l o a d f a c t o r = 1 .0 − l o a d f a c t o r

192

193

194 # DIAMETER

195 # f o r r a d i a l d i s p l a c emen t we use the mean r a d i a l d i s p l a c emen t

o f ou t e r nodes

196 # in c r o s s s e c t i o n s 1 ,2 ,3 , e x c ep t f o r c e n t r a l l o a d i n g s : on l y

s e c t i o n 2

197 i f l c [ 0 ] i n 'ar' :

198 s e t s = [ 1 , 2 , 3 ]

199 e l i f l c [ 0 ] == 'c' :

200 s e t s = [ 2 ]

201 r d i s p = meanValue ( r , [ "cs%s%s" % (c , i ) f o r i i n s e t s f o r c i n '

o' ] , 'U1' )

202 d i amete r = s t e n t d i ame t e r + 2* r d i s p

203

204 # LENGTH

205 # we measure the l e n g t h o f the segment between s e c t i o n s 1 and 3

206 l e n g t h = g e t F i e l dV a l u e s ( r , "cso3" , 'COOR3 ' ) . mean ( ) −g e t F i e l dV a l u e s ( r , "cso1" , 'COOR3 ' ) . mean ( )

207 l e n g t h *= l e n g t h c o r r e c t i o n

208 # Sho r t en i ng ?? how i s i t d e f i n e d ?

209 # ( leng th−i mp l a n t l e n g t h ) / imp l a n t l e n g t h would make s en s e

210 # sho r t e n i n g = ( l e n g t h − i n i t i a l l e n g t h ) / i n i t i a l l e n g t h

211

212 c i r c um f e r e n c e = p i * d i amete r

213 s u r f a c e = p i * d i amete r * l e n g t h

214

215 # FORCE

216 # t h i s i s e i t h e r a x i a l f o r c e , r a d i a l p r e s s u r e or r i n g t e n s i o n

217 i f l c [ 1 ] == 'f' :

218 f o r c e = load [ 2 ] * l o a d f a c t o r /1 . #aanpassen b i j ander

s t e p l e n g t h ! ! ( r e s 1 [ l a s t ] [ ' s t ime ' ] i s ok a l s j ob

completed i s ! )

219 e l i f l c [ 1 ] == 'd' :

220 i f l c [ 0 ] == 'a' :

221 f o r c e = t o t a l V a l u e ( r , [ "loaded" ] , 'RF3' )

222 e l i f l c [ 0 ] == 'r' :

223 f o r c e = −t o t a l V a l u e ( r , [ "outer" ] , 'RF1' )

224 e l i f l c [ 0 ] == 'c' :

225 f o r c e = −t o t a l V a l u e ( r , [ "cso2" ] , 'RF1' )

226

227 # c a l c u l a t e p r e s s u r e / r i n g t e n s i o n

228 i f l c [ 0 ] == 'r' :

229 f o r c e /= s u r f a c e

230 e l i f l c [ 0 ] == 'c' :

231 f o r c e /= c i r c um f e r e n c e

232 p r i n t "%5s %15f %15f %15f" % ( inc , f o r c e , l eng th , d i amete r )

233 f . w r i t e ( "%5s %15f %15f %15f\n" % ( inc , f o r c e , l eng th , d i amete r ) )

234 f l d [ i n c ] = [ f o r c e , l eng th , d i amete r ]

235 f . c l o s e ( )

236

Page 139: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 126

237 r e t u r n s t e n t d a t a

238

239

240 # D e f i n i t i o n o f the columns on the . data f i l e s ( s imu l a t i o n r e s u l t s )

241 # These shou l d match the c r e a t eD a t a F i l e s f u n c t i o n .

242 # The Key i s the i d e n t i f i e r i n the p l o t t y p e

243 # The Value i s the column number i n the . data f i l e ( coun t i ng from 1)

244 # Remember tha t F , p , q a r e a l l s t o r e d i n the same column ( but app l y

245 # to d i f f e r e n t l oad c a s e s

246 #

247 c o l p o s = { 'F' : 2 ,

248 'p' : 2 ,

249 'q' : 2 ,

250 'L' : 3 ,

251 'D' : 4 }252

253 # Labe l s c o r r e s p ond i n g to the p l o t v a r i a b l e s

254 c o l l a b e l = { 'F' : 'Axial Force (N)' ,

255 'p' : 'Radial Pressure (MPa)' ,

256 'q' : 'Radial Line Pressure (N/mm)' ,

257 'L' : 'Stent Length (mm)' ,

258 'D' : 'Stent Diameter (mm)' ,

259 'f' : 'foreshortening (%)' ,

260 'd' : 'relative change in diameter (%)'}261

262

263 def c r e a t eGnup l o t (name , p l o t t yp e , cu rve s , x range=None , y range=None , g r i d=True ) :

264 ””” Crea te a gnup l o t s c r i p t f o r the r e qu e s t e d p l o t

265

266 name i s the base o f the output . png image . The v a r i a b l e s o f the x and y

267 axe s w i l l be added a u t oma t i c a l l y to c r e a t e a name l i k e 'name−x−y . png ' .

268

269 p l o t t y p e i s a 2−cha r s t r i n g and shou l d be one o f the p r e d e f i n e d p l o t

270 t y p e s : the c h a r a c t e r s d e f i n e what q u an t i t y i s on the x , r e s p . y−a x i s

271 The image output name i s name−x−y . png

272

273 cu r v e s i s a l i s t o f cu r v e d e f i n i t i o n s

274 Each cu rve i s a l i s t o f a t l e a s t 5 i t ems :

275 − d a t a f i l e

276 − x−a x i s column

277 − y−a x i s column

278 − l i n e t y p e

279 − t i t l e

280 The l a s t ( o p t i o n a l ) i tem s p e c i f i e s the range c a l c u l a t i o n op t i on

281 − range : a l i s t o f two va l u e s , c o r r e s p ond i n g r e s p e c t i v e l y to the

282 x range and yrange f o r the p l o t . I f t h i s v a l u e i s ' auto ' ,

283 r ange s w i l l be c a l c u l a t e d from the t a bu l a t e d v a l u e s o f

284 t h i s cu r v e .

285 The c a l c u l a t e d range i s the maximal range ove r a l l c u r v e s

286 i n v o l v e d i n the c a l c u l a t i o n . Range c a l c u l a t i o n f o r x and y

287 axe s a r e done i n d e p e nd en t l y .

288 Column d e s i g n a t i o n can be s i n g l e number or e x p r e s s i o n l i k e ' ( $2 * 1 . e

−6) '

289

290 The xrange and yrange pa ramete r s ( i f s p e c i f i e d ) o v e r r i d e the computed

291 r ange s . They must be o f the form [ min , max ] .

Page 140: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 127

292 The g r i d paramete r ( i f True ) adds a g r i d to the p l o t .

293 ”””

294 g l o b a l c o l l a b e l

295

296 # a v a i l a b l e p l o t t yp e s

297 p l o t t y p e s = [ 'LF' , 'DF' , 'Lp' , 'Dp' , 'Lq' , 'Dq' , 'LD' , 'DL' ,

298 'Df' , 'pf' , 'Ff' , 'fD' , 'fp' , 'fF' , 'Ld' , 'dL' ,

299 'dp' ]

300 i f p l o t t y p e not i n p l o t t y p e s :

301 p r i n t "I do not know how to create a '%s' type plot" % p l o t t y p e

302 r e t u r n

303 # Read the v a l u e s from the f i l e s and compute the r ange s !

304 rng = [ [ ] , [ ] ]

305 f o r c i n cu r v e s :

306 i f l e n ( c ) > 5 :

307 f o r i , r i n enumerate ( c [ 5 ] ) :

308 i f r == 'auto' :

309 t b l = readTab l e ( c [ 0 ] , [ i n t ( c [ i +1]) −1])

310 rng [ i ] . append ( [ t b l . min ( ) , t b l . max ( ) ] )

311 # Compute the w i d e s t range

312 f o r i i n range (2 ) :

313 i f l e n ( rng [ i ] ) > 0 :

314 rng [ i ] = [ min ( [ r [ 0 ] f o r r i n rng [ i ] ] ) , max ( [ r [ 1 ] f o r r i n rng [

i ] ] ) ]

315 # Ove r r i d e computed range s i f s p e c i f i e d

316 i f x range :

317 rng [ 0 ] = xrange

318 i f y range :

319 rng [ 1 ] = yrange

320 #p r i n t ” F i n a l r ange s : ” , rng

321 # Create a gnup l o t s c r i p t to g en e r a t e p l o t s

322 p = p l o t t y p e

323 px , py = p

324 i m a g e f i l e = "%s-%s-%s.png" % (name , px , py )

325 p r i n t "===> %s < ===" % i m a g e f i l e

326 gnu = ”””# Created by Wi r eS t en t po s t . py

327 s e t t e rm i n a l png

328 s e t output ”%s ”

329 s e t x l a b e l ”%s ”

330 s e t y l a b e l ”%s ”

331 ””” % ( imag e f i l e , c o l l a b e l [ px ] , c o l l a b e l [ py ] )

332 # show a g r i d ?

333 i f g r i d :

334 gnu += "set grid\n"

335 # Set the key p o s i t i o n

336 i f p i n [ 'DF' , 'Dp' , 'Dq' , 'LD' , 'DL' , 'pf' , 'Ff' , 'fF' ] :

337 gnu += "set key right\n"

338 e l s e :

339 gnu += "set key left\n"

340 # Add the r ange s (we cou ld do some more f ancy c a l c u l a t i o n he r e

341 # to s e t the r ange s to rounded f i g u r e s .

342 f o r r , a i n z i p ( rng , 'xy' ) :

343 i f l e n ( r ) > 0 :

344 xrng = "[%s:%s]" % ( 0 .98 * r [ 0 ] , 1 .02 * r [ 1 ] )

345 e l s e :

346 xrng = "[*:*]"

Page 141: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 128

347 gnu += "set %srange %s\n" % (a , xrng )

348 # Add the cu r v e s

349 f o r i , c i n enumerate ( c u r v e s ) :

350 i f i == 0 :

351 gnu += "plot "

352 e l s e :

353 gnu += " ,\\\n "

354 p r i n t c [ : 5 ]

355 gnu += " '%s' using %s:%s with %s title '%s'" % tup l e ( c [ : 5 ] )

356 gnu += '\n'

357

358 r e t u r n gnu

359

360

361 def s imu l a t i o nCu r v e ( dataname , x , y , t i t l e='numerical simulation ' ) :

362 ””” Return the cu r ve d e s i g n a t i o n f o r a d a t a f i l e / p l o t t y p e comb ina t i on . ”””

363 g l o b a l c o l p o s

364 r e t u r n [ dataname , c o l p o s [ x ] , c o l p o s [ y ] , 'lp' , t i t l e , [ 'auto' ]*2 ]

365

366

367 def e xpe r imen t a lCu r v e ( dataname , x , y , t i t l e='experimental ' ) :

368 ””” Return the cu r ve d e s i g n a t i o n f o r a d a t a f i l e / p l o t t y p e comb ina t i on . ”””

369 i f 'y' == 'p' :

370 y = '($2 * 1.e-6)'

371 e l s e :

372 y = '2'

373 r e t u r n [ dataname , 1 , y , 'lp' , t i t l e , [ 'auto' ]*2 ]

374

375

376 def a n a l y t i c a l C u r v e ( dataname , x , y , t i t l e='analytical approx.' ) :

377 ””” Return the cu r ve d e s i g n a t i o n f o r a d a t a f i l e / p l o t t y p e comb inat i on . ”””

378 g l o b a l a c o l s

379 r e t u r n [ dataname , a c o l s . i n d e x ( x ) + 1 , a c o l s . i nd e x ( y ) + 1 , 'l' , t i t l e ]

380

381

382 def r e p l a c eVa r ( s , v ,w) :

383 ””” Rep lace a v a r i a b l e w i th a column number .

384

385 s i s an e x p r e s s i o n s t r i n g

386 v i s a ( s i n g l e l e t t e r ) v a r i a b l e name ( one o f the keys o f c o l p o s )

387 Returns the s t r i n g s w i th a l l o c c u r r e n c e s o f ' $v ' r e p l a c e d by '$w '

388 ”””

389 r e t u r n s . r e p l a c e ( '$%s'%v , '$%s'%w)

390

391

392 def computedCurve ( dataname , x , y , t i t l e='calculated result ' , v a r s = [ ] ) :

393 ””” Return a cu r ve computed from d a t a f i l e f i e l d s .

394

395 The y va l u e i s j u s t a computed f i e l d .

396 I n the c u r r e n t imp lementat ion , you w i l l have to f i n d out the

397 c o r r e c t column number [ s ] y o u r s e l f .

398 ”””

399 g l o b a l c o l p o s

400 f o r v i n v a r s :

401 c = co l p o s [ v ]

402 x = r ep l a c eVa r ( x , v , c )

Page 142: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 129

403 y = r ep l a c eVa r ( y , v , c )

404 rng = [ None , None ]

405 i f l e n ( x ) == 1 :

406 x = co l p o s [ x ]

407 rng [ 0 ] = 'auto'

408 i f l e n ( y ) == 1 :

409 y = co l p o s [ y ]

410 rng [ 1 ] = 'auto'

411 r e t u r n [ dataname , x , y , 'lp' , t i t l e , rng ]

412

413

414 def c r e a t e J obP l o t ( jobname , l c , pt , ana l=Fa l s e , a na l c = Fa l s e , jedwab=Fa l s e ) :

415 ””” Crea te a d e f a u l t gnup l o t s c r i p t f o r the j ob / l c .

416

417 jobname i s the j ob name

418 l c i s a l oad ca se l i k e ' adu '

419 pt i s the p l o t t y p e l i k e 'LF ' , . . .

420

421 ana l : adds the a n a l y t i c a l cu r v e

422 ana l c : adds ano the r a n a l y t i c a l cu r ve :

423 − i n c o r r e c t f o rmu la from Jedwab f o r LF p l o t

424 − number o f c o i l s −0.5 c o r r e c t e d fo rmu la f o r Dp p l o t

425 jedwab : adds Jedwab e xp e r imen t a l c u r v e s

426 ”””

427 cu r v e s = [ ]

428 dataname = '%s-%s.data' % ( jobname , l c )

429 cu r v e s . append ( s imu l a t i o nCu r v e ( dataname , pt [ 0 ] , pt [ 1 ] ) )

430 i f ana l :

431 ana l d a t a = '%s-%s.data' % ( jobname , 'anal' )

432 cu r v e s . append ( a n a l y t i c a l C u r v e ( ana lda ta , pt [ 0 ] , pt [ 1 ] ) )

433 i f jedwab :

434 expdata = 'jedwab -exp -%s.data' % pt

435 i f os . path . e x i s t s ( expdata ) :

436 cu r v e s . append ( e xpe r imen t a lCu r v e ( expdata , pt [ 0 ] , pt [ 1 ] , '

experimental (Jedwab)' ) )

437 e l s e :

438 p r i n t "No experimental data for plot type '%s'" % pt

439 i f ana l c :

440 i f pt == 'Dp' :

441 ana l d a t a = '%s-%s.data' % ( jobname , 'anal' )

442 cu r v e s . append ( a n a l y t i c a l C u r v e ( ana lda ta , pt [ 0 ] , 'pc' ,

443 'analytical (with correction)' ) )

444 i f pt == 'LF' :

445 ana l d a t a = '%s-%s.data' % ( jobname , 'anal' )

446 cu r v e s . append ( a n a l y t i c a l C u r v e ( ana lda ta , pt [ 0 ] , 'Fc' ,

447 'analytical (Jedwab formula)' ) )

448 name = "%s-%s" % ( jobname , l c )

449 r e t u r n c r e a t eGnup l o t (name , pt , c u r v e s )

450

451

452 def c r e a t eMu l t i J o bP l o t (name , jobnames , l c , pt ) :

453 ””” Crea te a gnup l o t s c r i p t f o r mu l t i p l e j o b s on the same p l o t .

454

455 name i s the name o f the p l o t

456 jobnames i s a l i s t o f j ob names

457 l c i s a l oad ca se l i k e ' adu '

Page 143: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 130

458 pt i s the p l o t t y p e l i k e 'LF ' , . . .

459 ”””

460 cu r v e s = [ ]

461 f o r j ob i n jobnames :

462 dataname = '%s-%s.data' % ( job , l c )

463 cu r v e s . append ( s imu l a t i o nCu r v e ( dataname , pt [ 0 ] , pt [ 1 ] , t i t l e=job ) )

464 r e t u r n c r e a t eGnup l o t (name , pt , c u r v e s )

465

466

467 def c r ea t eLDP lo t ( jobname , l oads , pt='LD' , a na l=Fa l s e ) :

468 ””” Crea te a gnup l o t s c r i p t f o r the LD p l o t s .

469

470 jobname i s the j ob name

471 pt i s p l o t type ( 'LD ' or 'DL ' )

472 l o a d s i s a l i s t o f l o ad c a s e s l i k e ' adu '

473 ”””

474 cu r v e s = [ ]

475 t i t l e = { 'a' : 'Axial load' , 'r' : 'Radial load' , 'c' : 'Ring load' }476 f o r l c i n l o a d s :

477 dataname = '%s-%s.data' % ( jobname , l c )

478 cu r v e s . append ( s imu l a t i o nCu r v e ( dataname , pt [ 0 ] , pt [ 1 ] , t i t l e [ l c [ 0 ] ] ) )

479 i f ana l :

480 ana l d a t a = '%s-%s.data' % ( jobname , 'anal' )

481 cu r v e s . append ( a n a l y t i c a l C u r v e ( ana lda ta , pt [ 0 ] , pt [ 1 ] ) )

482 r e t u r n c r e a t eGnup l o t ( jobname , pt , c u r v e s )

483

484

485 def i n t e r p o l a t e ( a , x ) :

486 ””” I n t e r p o l a t e a v a l u e i n a t a b l e .

487

488 a i s an (n , 2 ) a r r a y t a b u l a t i n g a f u n c t i o n y ( x )

489 The r e t u r n v a l u e i s the l i n e a r l y i n t e r p o l a t e d v a l u e o f y f o r the g i v en

x .

490 I f x f a l l s o u t s i d e the t a bu l a t e d range , the v a l u e w i l l be ob t a i n ed from

491 l i n e a r e x t r a p o l a t i o n ove r the f i r s t o r l a s t i n t e r v a l .

492

493 Remark tha t the v a l u e s i n the f i r s t column do not have to be i n o r d e r .

494 The t a b l e w i l l be s o r t e d on the f i r s t column p r i o r to i n t e r p o l a t i o n .

495 ”””

496 s r t = a [ : , 0 ] . a r g s o r t ( )

497 a = a [ s r t ]

498 i = a [ : , 0 ] . s e a r c h s o r t e d ( [ x ] ) [ 0 ]

499 i f i == 0 :

500 i = 1

501 i f i == a . shape [ 0 ] :

502 i = −1

503 x1 , y1 = a [ i ]

504 x0 , y0 = a [ i −1]

505 i f x0 == x1 : # t h i s can on l y happen i f x0 = x1 = x

506 r e t u r n y0

507 e l s e :

508 r e t u r n y0 + ( x−x0 ) * ( y1−y0 ) /( x1−x0 )

509

510

511 def c r e a t e F o r e s h o r t P l o t ( jobs , diam , pt='Df' , l c='rdu' , x range=None , y range=None )

:

Page 144: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 131

512 ””” Crea te a f o r e s h o r t e n i n g p l o t .

513

514 jobname i s the j ob name

515 diam i s the c a th ede r d i amete r

516 pt i s the p l o t type ( shou ld c on t a i n f )

517 ”””

518 cu r v e s = [ ]

519 f o r j ob i n j o b s :

520 dataname = '%s-%s.data' % ( job , l c )

521 t b l = readTab l e ( dataname , [ c o l p o s [ 'D' ]−1 , c o l p o s [ 'L' ] −1])

522 L0 = i n t e r p o l a t e ( t b l , diam )

523 func = '(%s-$L)/%s' % (L0 , L0 /100 . ) # in %

524 v a r s = 'L'

525 t i t l e = job

526 i f pt [ 0 ] == 'f' :

527 cu r v e s . append ( computedCurve ( dataname , func , pt [ 1 ] , t i t l e , v a r s=

va r s ) )

528 e l i f pt [ 1 ] == 'f' :

529 cu r v e s . append ( computedCurve ( dataname , pt [ 0 ] , func , t i t l e , v a r s=

va r s ) )

530 r e t u r n c r e a t eGnup l o t ( job , pt , cu rve s , xrange , y range )

531

532

533 def c r ea t eRe lD i amP lo t ( jobs ,D0 , pt='Ld' , l c='rdu' , x range=None , y range=None ) :

534 ””” Crea te a r e l a t i v e d i amete r change p l o t .

535

536 jobname i s the j ob name

537 D0 i s the i n i t i a l d i amete r

538 pt i s the p l o t type ( shou ld c on t a i n d )

539 ”””

540 cu r v e s = [ ]

541 t i t l e = 'relative diameter change '

542 f o r j ob i n j o b s :

543 dataname = '%s-%s.data' % ( job , l c )

544 func = '(%s-$D)/%s' % (D0 ,D0/100 . ) # in %

545 v a r s = 'D'

546 t i t l e = job

547 i f pt [ 0 ] == 'd' :

548 cu r v e s . append ( computedCurve ( dataname , func , pt [ 1 ] , t i t l e , v a r s=

va r s ) )

549 e l i f pt [ 1 ] == 'd' :

550 cu r v e s . append ( computedCurve ( dataname , pt [ 0 ] , func , t i t l e , v a r s=

va r s ) )

551 r e t u r n c r e a t eGnup l o t ( job , pt , cu rve s , xrange , y range )

552

553

554 def c r e a t eD e f a u l t J o bP l o t s ( jobname , s t e n t d a t a , jedwab=Fa l s e ) :

555 ””” Crea te the d e f a u l t p l o t s f o r a l l l o ad c a s e s ”””

556 i f type ( s t e n t d a t a ) == s t r :

557 p r i n t "DEPRECATED: please convert your script to dict syntax."

558 s t e n t d a t a = e v a l ( "dict(%s)" % s t e n t d a t a . r e p l a c e ( '\n' , ',' ) . s t r i p ( '

,' ) )

559 # s t e n t d a t a i s now a d i c t

560 g l o b a l s ( ) . update ( s t e n t d a t a )

561 gnu = ""

562 f o r l o ad i n l o a d s :

Page 145: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 132

563 l c = load [ 0 ]

564 i f l c [ 0 ] == 'a' :

565 gnu += c r e a t e J obP l o t ( jobname , l c , 'LF' , a na l=True , jedwab=jedwab ,

ana l c=Fa l s e )

566 e l i f l c [ 0 ] == 'r' :

567 gnu += c r e a t e J obP l o t ( jobname , l c , 'Dp' , a na l=True , jedwab=jedwab ,

ana l c=Fa l s e )

568 e l i f l c [ 0 ] == 'c' :

569 gnu += c r e a t e J obP l o t ( jobname , l c , 'Dq' , a na l=Fa l s e )

570

571

572 gnu += crea teLDPlo t ( jobname , [ l [ 0 ] f o r l i n l o a d s ] , a na l=True )

573 ## gnu += crea t eLDPlo t ( jobname , [ l [ 0 ] f o r l i n l o a d s ] , pt='DL ' , a na l=True )

574 # c r e a t e the p l o t s

575 r unGnu s c r i p t ( gnu , jobname )

576

577

578 def r unGnu s c r i p t ( s c r i p t , name='default ' ) :

579 ””” S t o r e s a gnup l o t s c r i p t on f i l e and runs gnup l o t to c r e a t e the p l o t .

580

581 The f i l e n ame w i l l be name . gnu

582 The g l o b a l gnuplotcmd shou ld be s e t to the command f o r runn ing

583 the gnup l o t program .

584 ”””

585 g n u f i l e = name+'.gnu'

586 f = f i l e ( g n u f i l e , 'w' )

587 f . w r i t e ( s c r i p t )

588 f . c l o s e ( )

589 runGnup lot ( [ g n u f i l e ] )

590

591

592 def runGnup lot ( g n u f i l e s ) :

593 ”””Runs the gnup l o t program on each o f the s p e c i f i e d g n u f i l e s .

594

595 The argument i s a l i s t o f f i l e n ame s .

596

597 This works on l y on sys tems tha t have the gnup l o t command i n s t a l l e d .

598 The gnup l o t cmd shou ld have been s e t i n the g l o b a l gnuplotcmd v a r i a b l e .

599 ”””

600 g l o b a l gnuplotcmd

601 # We shou ld r e a l l y t e s t he r e f o r the e x i s t e n c e o f the gnup l o t command .

602 i f os . name != 'posix ' :

603 p r i n t "You have to run the gnuplot yourself command to create the

plots"

604 r e t u r n

605 # p r o t e c t a g a i n s s i n g l e f i l e n ame s

606 i f type ( g n u f i l e s ) == s t r :

607 g n u f i l e s = [ g n u f i l e s ]

608 # run the f i l e s t h ru gnup l o t

609 f o r f i n g n u f i l e s :

610 cmd = gnuplotcmd % f

611 p r i n t "Running '%s'" % cmd

612 os . system (cmd)

613

614

615 def d i f f e r e n c e (name , jobnames ) :

Page 146: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 133

616 t b l 1 = readTab l e ( jobnames [0]+ '-cdu.data' , [ 3 , 1 ] )

617 t b l 2 = readTab l e ( jobnames [1]+ '-cdu.data' , [ 3 , 1 ] )

618 cu r v e s = [ ]

619 f = f i l e ( name+'-cdu.data' , 'w' )

620 f . w r i t e ( "# inc , force , length , diameter\n" )

621 f o r i nc , x i n enumerate ( t b l 1 ) :

622 f o r c e = i n t e r p o l a t e ( tb l 2 , x [ 0 ] )

623 f o r c e = x [ 1 ] − f o r c e

624 d i amete r = x [ 0 ]

625 f . w r i t e ( "%5s %15f %15f %15f\n" % ( inc , f o r c e , 0 , d i amete r ) )

626 f . c l o s e ( )

627

628

629

630 ########## the po s tp r o c f u n c t i o n #################################

631

632

633 def po s tp r o c ( jobname , s t e n t d a t a , s i n g l e j o b=Fa l s e , o l d=Fa l s e , c r e a t e=True ,

jedwab=Fa l s e ) :

634 ””” Po s t p r o c e s s o r f o r Wi reStent j o b s .

635

636 This i s an example p o s t p r o c e s s o r f u n c t i o n .

637 The f i r s t s t e p i s to c r e a t e some data− f i l e s w i th r e s u l t s from the

a n a l y s e s .

638 I n the second step , some s t anda rd p l o t s a r e c r e a t e d from the s e data .

639 ”””

640 i f c r e a t e :

641 c r e a t eD a t a F i l e s ( jobname , s t e n t d a t a , s i n g l e j o b=s i n g l e j o b )

642 c r e a t eD e f a u l t J o bP l o t s ( jobname , s t e n t d a t a , jedwab=jedwab )

643

644 i f name == "__main__" :

645 p r i n t "This script is not meant to be executed as main script"

D.7 WireStent Multilayer anal.py

Script D.7: WireStent Multilayer anal.py1 #!/ u s r / b i n / env python

2 #

3 from numpy import *

4

5 t o r ad = p i / 180 .

6

7 def w i r e s t e n t a n a l y t i c a l ( s t en t , beta deg , r e s u l t s =['F' , 'L' , 'D' , 'p' ] ) :

8 ”””Compute the a n a l y t i c a l FLDp cu r v e s f o r a l l the a ng l e s i n be ta deg .

9

10 s t e n t d a t a i s a d i c t i o n a r y w i th at l e a s t :

11 ' s t e n t l e n g t h ' : d e s i g n s t e n t l e n g t h

12 ' s t e n t d i ame t e r ' : i n i t i a l ( expanded ) e x t e r n a l d i amete r

13 ' p i t c h a n g l e ' : i n i t i a l p i t c h ang l e

14 ' number w i r e s ' : t o t a l number o f w i r e s

15 ' w i r e d i ame t e r ' : w i r e d i amete r

16 'GJ ' : t o r s i o n a l s t i f f n e s s o f the w i r e

17 ' EI ' : bend ing s t i f f n e s s o f the w i r e

Page 147: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 134

18 be ta deg i s a l i s t o r 1−D a r r a y o f a n g l e s f o r which the r e s u l t s have

19 to be t a bu l a t e d . Ang le s a r e i n d eg r e e s .

20 r e s u l t s i s a l i s t o f s t r i n g i d e n t i f i e r s f o r the r e qu e s t e d r e s u l t s .

21 Po s s i b l e v a l u e s :

22 ' be ta deg ' : ( i n pu t ) p i t c h ang l e i n d eg r e e s

23 ' beta ' : p i t c h ang l e i n r a d i a n s

24 'L ' : l e n g t h

25 'D ' : e x t e r n a l d i amete r

26 'Da ' : a v e r age d i amete r

27 'F ' : a x i a l f o r c e

28 'Fc ' : a x i a l f o r c e w i th e x t r a cos ( beta ) ( Jedwab )

29 'p ' : e x t e r n a l r a d i a l p r e s s u r e

30 ' pc ' : r a d i a l p r e s s u r e w i th c o r r e c t i o n 0 .5 i n number o f

c o i l s

31 ' pa ' : r a d i a l p r e s s u r e on ave rage d i amete r

32 'KL ' : l o n g i t u d i n a l s t i f f n e s s

33 'Kp ' : r a d i a l s t i f f n e s s

34 ' l w i r e ' : t o t a l w i r e l e n g t h

35 'N ' : number o f i n t e r s e c t i o n s

36 'mu ' : p e r c e n t s t e n t cove r age mu

37

38 Returns an a r r a y where the columns a r e the r e qu e s t e d r e s u l t s i n o r d e r .

39 ”””

40

41 # computed pa ramete r s

42 wset = [ 0 , 1 , 2 ] #aan t a l l a g en

43 n = [ s t e n t [ 'number_wires ' ]*2/5 . , s t e n t [ 'number_wires ' ]*1/5 . , s t e n t

[ 'number_wires ' ]*2/5 . ]

44 L0 = s t e n t [ 'stent_length ' ]

45 D0 = [ s t e n t [ 'stent_diameter ' ] − 2 * s t e n t [ 'wire_diameter ' ] , s t e n t [ '

stent_diameter ' ] − 6 * s t e n t [ 'wire_diameter ' ] , s t e n t [ '

stent_diameter ' ] − 10 * s t e n t [ 'wire_diameter ' ] ]

46 d = s t e n t [ 'wire_diameter ' ]

47 beta0 = s t e n t [ 'pitch_angle ' ] * t o r ad

48 p0 = [ p i * i * tan ( beta0 ) f o r i i n D0 ]

49 GJ = s t e n t [ 'GJ' ]

50 EI = s t e n t [ 'EI' ]

51 c = [ L0 / ( p i * i * tan ( beta0 ) ) f o r i i n D0 ]

52 K1 = [ s i n (2* beta0 ) / i f o r i i n D0 ]

53 K2 = [2* cos ( beta0 ) **2/ i f o r i i n D0 ]

54 K3 = [ cos ( beta0 ) / i f o r i i n D0 ] # Our K3 = 1/K3 jedwab

55 # get beta i n r a d i a n s

56 beta = be ta deg * t o r ad

57 # e l o n g a t i o n

58 dL = [ p i *c [ i ]*D0 [ i ] / cos ( beta0 ) *( s i n ( beta )−s i n ( beta0 ) ) f o r i i n wset ]

59 # Length

60 L = [ L0 + dL [ i ] f o r i i n wset ]

61 # ave rage d i amete r

62 Da = [D0 [ i ] / cos ( beta0 ) * cos ( beta ) f o r i i n wset ]

63 # e x t e r n a l d i amete r

64 D = [Da [ i ] + 2*d f o r i i n wset ]

65 # Force from c o r r e c t e d ? Jedwab fo rmu la

66 F = [2* n [ i ] * ( GJ*K3 [ i ]* ( 2* s i n ( beta ) *K3 [ i ]−K1 [ i ] ) − EI * tan ( beta ) *K3 [ i

]* ( 2* cos ( beta ) *K3 [ i ] − K2 [ i ] ) ) f o r i i n wset ]

67 # r a d i a l p r e s s u r e

68 p = [2 * F [ i ] * c [ i ] / (D[ i ]* L [ i ]* tan ( beta ) ) f o r i i n wset ]

Page 148: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bijlage D. Overzicht van de python-scripts 135

69 pc =[ p [ i ] * ( c [ i ] −0.5) / c [ i ] f o r i i n wset ]

70 pa = [ p [ i ] * (D[ i ] /Da [ i ] ) f o r i i n wset ]

71 # l o n g i t u d i n a l s t i f f n e s s

72 KL = [2 * n [ i ] * K3 [ i ] / ( p i * c [ i ] * cos ( beta ) ) *(GJ * K3 [ i ] * (2 *

cos ( beta ) * K3 [ i ] ) − ( EI *K3 [ i ] * ( 2 * cos ( beta ) * K3 [ i ] − K2 [ i ] /

cos ( beta ) **2) ) ) f o r i i n wset ]

73 # r a d i a l s t i f f n e s s

74 Kp = [2 * c [ i ] * K3 [ i ] / ( (Da [ i ] * L [ i ] * tan ( beta ) ) **2 * s i n ( beta ) ) *

(2*Da [ i ]* L [ i ]* n [ i ]* tan ( beta ) *(GJ * K3 [ i ] * (2 * cos ( beta ) * K3 [ i ] )

− ( EI *K3 [ i ] * ( 2 * cos ( beta ) * K3 [ i ] − K2 [ i ] / cos ( beta ) **2) ) ) −F [ i ] * (Da [ i ]* L [ i ] / cos ( beta ) **2 + s i n ( beta ) *( p i *c [ i ] *Da [ i ] − L [ i

]* tan ( beta ) ) /K3 [ i ] ) ) f o r i i n wset ]

75 # t o t a l w i r e l e n g t h

76 l w i r e = [ c [ i ] * n [ i ] * p i * Da [ i ] / cos ( beta ) f o r i i n wset ]

77 # number o f i n t e r s e c t i o n s

78 N = [2 * L [ i ] / ( n [ i ] * p i * Da [ i ] * tan ( beta ) ) f o r i i n wset ]

79 # pe r c en t s t e n t cove rage mu

80 mu = [ ( l w i r e [ i ] * d − (N[ i ] * d**2) / s i n (2* beta ) ) / ( p i * Da [ i ] * L [ i

] ) f o r i i n wset ]

81 # Assemble e v e r y t h i n g i n an a r r a y

82 F = F[2]+F[1]+F [ 2 ]

83 Fc = F

84 L = (L [0]+L [1]+L [ 2 ] ) /3

85 D = (D[0]+D[1]+4*d+D[2]+8*d ) /3

86 p = p [0]+p [1]+p [ 2 ]

87 pc = pc [0]+ pc [1]+ pc [ 2 ]

88 KL = KL[0]+KL[1]+KL [ 2 ]

89 Kp = (Kp [ 0 ] *Kp [ 1 ] *Kp [ 2 ] ) /(Kp[0]+Kp[1]+Kp [ 2 ] )

90 mu = mu [ 0 ]

91 r e t u r n co lumn s tack ( [ e v a l ( v ) f o r v i n r e s u l t s ] )

92

93 i f name == "__main__" :

94

95 # de s i g n pa ramete r s

96 s t e n t d a t a = d i c t (

97 s t e n t l e n g t h = 87 .5 ,

98 s t e n t d i ame t e r = 17 .15 ,

99 p i t c h a n g l e = 28 . 3 ,

100 number w i r e s = 24 ,

101 w i r e d i ame t e r = 0 .22 ,

102 GJ = 18.743393651792324 ,

103 EI = 23.687969891222203 ,

104 )

105 # Range o f output a n g l e s

106 beta = 25.+ arange (30)

107 # Output :

108 out = [ 'F' , 'L' , 'D' , 'p' , 'Fc' , 'pc' , 'KL' , 'Kp' , 'mu' ]

109 #p r i n t s t e n t d a t a

110 r e s = w i r e s t e n t a n a l y t i c a l ( s t e n t d a t a , beta , out )

111 p r i n t "# %s %s %s %s %s %s %s %s %s" % tup l e ( out )

112 f o r r i n r e s :

113 p r i n t "%s %s %s %s %s %s %s %s %s" % tup l e ( r )

Page 149: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Lijst van figuren

2.1 Stent in een arterie [7] (links) en Wallstent [3] (rechts) . . . . . . . . . . . . . 22.2 Principe ballonexpandeerbare stents [13] . . . . . . . . . . . . . . . . . . . . . 32.3 Ontplooiing zelfexpandeerdbare stent: Wallstent [3] . . . . . . . . . . . . . . . 42.4 Simulatie multilayer geweven draadstent . . . . . . . . . . . . . . . . . . . . . 52.5 Weefmachine draadstent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.6 Configuratie spoelen: 320 draden (volledige bezetting) (a) en 40 draden (b) . 62.7 Principeschets van de doorsnede (links) en configuratie 320-80-01 (rechts) . 7

3.1 Ruimtelijke structuren gecreeerd door pyFormex . . . . . . . . . . . . . . . . 83.2 Schema interactie python scripts . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 De pitch p en de pitch-hoek β [16] . . . . . . . . . . . . . . . . . . . . . . . . 113.4 Uitwendige diameter en gemiddelde diameter van de stent doorsnede . . . . . 123.5 Bepalen van het aantal basiscellen in axiale richting ny . . . . . . . . . . . . . 133.6 Schema modelleren draadstent . . . . . . . . . . . . . . . . . . . . . . . . . . 133.7 Creeren van een volledig golvende draad in pyFormex, de cirkels stellen de

omtrek van de draad voor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.8 Opbouw van black (links) en red (rechts) . . . . . . . . . . . . . . . . . . . . 153.9 Opbouw van green (links) en blue (rechts) . . . . . . . . . . . . . . . . . . . . 163.10 Opbouw van cyaan (links) en magenta (rechts) . . . . . . . . . . . . . . . . . 173.11 Het basispatroon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.12 Het gedraaide basispatroon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.13 Het gedraaide basispatroon met selectie-kader (links) en het uiteindelijk basis-

patroon zonder connectoren (rechts) . . . . . . . . . . . . . . . . . . . . . . . 183.14 Opbouw van de cel met connectoren. Normaal kleurengebruik in pyFormex

(boven), accent op connectoren (rood: tussen geweven draden uit dezelfdelaag, groen: tussen geweven draden uit een verschillende laag, blauw: tussenniet geweven draden) (onder) . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.15 Randvoorwaarden en belastingen: axiale verplaatsing (links), radiale verplaat-sing (midden) en centrale ring verplaatsing (rechts) . . . . . . . . . . . . . . . 24

3.16 Connectortype join [9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.17 Connectortype slide-plane [9] . . . . . . . . . . . . . . . . . . . . . . . . . . 27

136

Page 150: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Lijst van figuren 137

3.18 Orientatie glijvlakken slide-plane connector . . . . . . . . . . . . . . . . . . 283.19 Vervorming aan de uiteinden . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.20 Schematisering van stent-snedes (a) en cilindercoordinaten (b) [16] . . . . . . 35

4.1 Schema (links) en praktische (rechts) experimentele proefopstelling . . . . . . 384.2 Experiment ringbelasting (links) en verband met ketelformule (rechts) [16] . . 384.3 Bepalen van de radiale belasting van de stent . . . . . . . . . . . . . . . . . . 394.4 Bepalen van de radiale belasting van de ST202 stent op basis van de experi-

mentele data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.5 Bepalen van de radiale belasting van de ST202 stent . . . . . . . . . . . . . . 404.6 Radiale lijn druk in functie van de diameter middensectie: ST202: 320-80-01 414.7 Verdraaien van de orientatie van de slide-plane connectoren. De initiele

orientatie (boven), de orientatie na radiale centrale belasting (onder) . . . . . 424.8 De buitenste laag glijdt aan het vrije uiteinde van de stent door de middelste

en binnenste laag van de stent bij een radiale belasting . . . . . . . . . . . . . 424.9 Axiale trekkracht in functie van de stent lengte: ST202: 320-80-01 . . . . . . 434.10 Radiale druk in functie van de diameter: ST202: 320-80-01 . . . . . . . . . . 444.11 Axiale trekkracht in functie van de stentlengte . . . . . . . . . . . . . . . . . 454.12 Radiale druk in functie van de diameter . . . . . . . . . . . . . . . . . . . . . 464.13 Radiale lijn druk in functie van de diameter middensectie . . . . . . . . . . . 464.14 Foreshortening in functie van de diameter . . . . . . . . . . . . . . . . . . . . 474.15 Axiale trekkracht in functie van de stentlengte . . . . . . . . . . . . . . . . . 484.16 Radiale druk in functie van de diameter . . . . . . . . . . . . . . . . . . . . . 494.17 Radiale lijn druk in functie van de diameter middensectie . . . . . . . . . . . 494.18 Foreshortening in functie van de diameter . . . . . . . . . . . . . . . . . . . . 504.19 Radiale lijn druk in functie van de diameter middensectie: ST202: 320-80-01 514.20 Vervormingen radiale centrale belasting . . . . . . . . . . . . . . . . . . . . . 524.21 Onvervormde middensectie (links) en vervormde middensectie (rechts) bij een

radiale centrale belasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.22 Langskracht in functie van de diameter voor verschillende draaddiameters . . 564.23 Radiale druk in functie van de diameter voor verschillende draaddiameters . . 564.24 Radiale lijn druk in functie van de diameter middensectie voor verschillende

draaddiameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.25 Foreshortening in functie van de diameter voor verschillende draaddiameters . 574.26 Langskracht in functie van de diameter voor een verschillend aantal draden . 584.27 Radiale druk in functie van de diameter voor eev verschillend aantal draden . 584.28 Radiale lijn druk in functie van de diameter middensectie voor een verschillend

aantal draden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.29 Foreshortening in functie van de diameter voor een verschillend aantal draden 594.30 Langskracht in functie van de diameter voor verschillende pitch-hoeken . . . . 60

Page 151: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Lijst van figuren 138

4.31 Radiale druk in functie van de diameter voor verschillende pitch-hoeken . . . 604.32 Radiale lijn druk in functie van de diameter middensectie voor verschillende

pitch-hoeken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.33 Foreshortening in functie van de diameter voor verschillende pitch-hoeken . . 614.34 Langskracht in functie van de diameter voor verschillende stentdiameters . . 624.35 Radiale druk in functie van de diameter voor verschillende stentdiameters . . 624.36 Radiale lijn druk in functie van de diameter middensectie voor verschillende

stentdiameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.37 Foreshortening in functie van de diameter voor verschillende stentdiameters . 634.38 Langskracht in functie van de diameter voor verschillende stentlengtes . . . . 644.39 Langskracht in functie van de percentuele diameter verandering voor verschil-

lende stentlengtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.40 Radiale druk in functie van de diameter voor verschillende stentlengtes . . . . 654.41 Radiale lijn druk in functie van de diameter middensectie voor verschillende

stentlengtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.42 Foreshortening in functie van de diameter voor verschillende stentlengtes . . . 66

B.1 Model een . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73B.2 Connectortype slide-plane [9] . . . . . . . . . . . . . . . . . . . . . . . . . . 74B.3 Model een: vervormingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74B.4 Model een: gedraait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74B.5 Model een: vervormingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75B.6 Model twee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75B.7 Orientatie glijvlakken slide-plane connector . . . . . . . . . . . . . . . . . . 76B.8 Model twee: vervormingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77B.9 Model twee: tangentiele verplaatsing . . . . . . . . . . . . . . . . . . . . . . . 77B.10 Model twee: vervormingen tangentiele verplaatsing . . . . . . . . . . . . . . . 78B.11 Model twee: verplaatsing z-as . . . . . . . . . . . . . . . . . . . . . . . . . . . 79B.12 Model twee: vervormingen verplaatsing z-as . . . . . . . . . . . . . . . . . . . 79B.13 Weergave orientatie binnen de GUI van Abaqus . . . . . . . . . . . . . . . . . 80

Page 152: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Lijst van tabellen

3.1 Stent variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.1 ST202: 320-80-01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2 Singlelayer stent die de stijfheden van de multilayer ST202: 320-80-01 benaderd 484.3 Stent eigenschappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.4 Overzicht parameterstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

C.1 Overzicht parameters: ST202: 320-80-01 . . . . . . . . . . . . . . . . . . . . . 89C.2 Experimentele resultaten: ST202: 320-80-01 . . . . . . . . . . . . . . . . . . . 89

139

Page 153: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bibliografie

[1] Alloy Wire International Ltd. http://www.alloywire.com/phynox_alloy.html.

[2] American Heart Association. Stent procedure. http://www.americanheart.org/

presenter.jhtml?identifier=4721.

[3] Boston Scientific. http://www.bostonscientific.com.

[4] Cardiatis. http://www.cardiatis.com.

[5] W. Cosaert. Optimalisatie van zelfexpandeerbare draadstents. Afstudeerwerk, Universi-teit Gent, 2007.

[6] J. F. Dyet, W. G. Watts, D. F. Ettles & A. A. Nicholson. Mechanical properties ofmetallic stents: how do these properties influence the choice of stent for specific lesions?CardioVascular and Interventional Radiology, 23(1):47–54, 2000

[7] Endovasc, inc. http://www.endovasc.com/proddev/prostent.html.

[8] Het Federaal Kenniscentrum voor de Gezondheidszorg. Endovasculaire behandeling vancarotisstenose. KCE reports, 13A, 2005.

[9] Hibbit, Karleson & Sorensen. Abaqus User’s Manual, volume 6.6. ABAQUS Inc, 2006.

[10] M. R. Jedwab & C. O. Clerc. A study of the geometrical an mechanical properties of aself-expanding metallic stent - theory and experiment. Journal of Applied Biomaterials,1993

[11] Memory Metalle. http://www.memory-metalle.de/.

[12] W. R. Milnor. Hemodynamics. Williams & Wilkins, Baltimore, 1982.

[13] National heart, lung and blood institute. http://www.nhlbi.nih.gov/.

[14] T. Neels. Toepassing en ontwikkeling van pyFormex bij het ontwerpen van omvangrijkeruimtelijke staafconstructies. Afstudeerwerk, Universiteit Gent, 2006.

[15] H. Nooshin & P. Disney. Formian 2. Multi-Science Publishing Co Ltd, 1997.

140

Page 154: Modellering van multilayer geweven draadstentslib.ugent.be/fulltxt/RUG01/001/311/920/RUG01-001311920...to a pulling machine. The change in diameter around the center and the force

Bibliografie 141

[16] K. Van Loo. Modellering en simulatie van zelfexpandeerbare draadstents. Afstudeerwerk,Universiteit Gent, 2006.

[17] G. Van Rossum. http://www.python.org.

[18] D. Vandepitte. Berekening van Constructies - Bouwkunde en Civiele Techniek, p. 548.Wetenschappelijke uitgeverij E.Story-Scientia, Gent,1982.

[19] B. Verhegghe. http://pyFormex.berlios.de/.

[20] B. Verhegghe. http://bumps.ugent.be/bumper/.

[21] World Health Organization. The World Health Report 2002 Reducing risks and promo-ting healthy life. World Health Organization, Geneva, 2002.