Fortran Tom´aˇs Kroupa 20. kvˇetna 2014
Abstrakt Zde uvedeme n´ avod k instalaci a ˇradu tip˚ u a trik˚ u a ˇreˇsen´ı zapeklit´ ych drobnost´ı. Pˇredem pˇripravme ˇcten´ aˇre na to, ˇze bez zkouˇsen´ı si vlastn´ıch subroutin a hled´ an´ı na jin´ ych m´ıstech, nen´ı pravdˇepodobnˇe moˇznost vˇse n´ıˇze napsan´e pochopit. Proto, kdyˇz nˇeco nepochop´ıte, nevztekejte se, ˇze je to ˇspatnˇe napsan´e, vˇeˇrte, ˇze autor na vˇsechno musel pˇrij´ıt s´ am. A to uznejte, ˇze takto ˇspatnˇe“ napsan´ y pomocn´ y text je i tak dar z nebes;-)! ”
Tento studijn´ı materi´ al je spolufinancov´ an Evropsk´ ym soci´ aln´ım fondem a st´ atn´ım ˇ rozpoˇ ctem Cesk´ e republiky.
Obsah 1 Instalace
2
2 Datov´ e typy
4
3 Struktura subroutin
4
4 Common block
8
5 Tisk a ˇ cten´ı textov´ ych soubor˚ u
9
Tento studijn´ı materi´ al je spolufinancov´ an Evropsk´ ym soci´ aln´ım fondem a st´ atn´ım ˇ rozpoˇ ctem Cesk´ e republiky.
1
Instalace
Instalace Fortranu 2011 je pops´ana n´ıˇze. Jedn´a se o kompiler, kter´ y m´a nakoupen´ y KME. N´ avod k instalaci je pˇrevzat´ y z naˇsich informac´ı na google disk. Syst´emov´e promˇenn´e (PATH a LIB) lze nal´ezt tak, ˇze kliknete lev´ ym myˇs´ıtkem na nab´ıdku start → prav´ ym myˇs´ıtkem na poˇc´ıtaˇc → lev´ ym myˇs´ıtkem na vlastnosti → prav´ ym myˇs´ıtkem na upˇresnit nastaven´ı syst´emu → prav´ ym myˇs´ıtkem na Promˇenn´e prostˇred´ı → pak si vytvoˇr´ıte nebo najdete st´avaj´ıc´ı syst´emovou promˇennou a uprav´ıte. Obˇcas se hod´ı si cel´ y obsah promˇenn´e zkop´ırovat do textov´eho souboru pomoc´ı ctrl+c a ctrl+v, tam upravit a opˇet pomoc´ı ctrl+c a ctrl+v vloˇzit upraven´e zpˇet (jen pozor at’ to zpˇet vkl´ad´ate bez enter˚ u, mus´ı se to vkl´ adat jako jedna ˇr´ adka). Postup pro instalaci je uveden ve zdrojov´ ych datech 1.
3
Zdrojov´ a data 1: Instalace Fortran compileru. Vsechno nutne k i n s t a l a c i j e na e u l e r u . Ve woknech namapovane t r e b a na z : \sw\ i n s t \ F o r t r a n \2011\Win . S p u s t i t s o u b o r w fcompxe 2011 . 1 . 127 . e x e Pri i n s t a l a c i vybrat variantu 1 . A l t e r n a t i v e i n s t a l a t i o n ( nazev bez z ar uky ) 2 . Instalovat s license f i l e Licence Normalne by mel f u n g o v a t s o u b o r l i c . l i c ( pokud ho system nebude c h t i t p o u z i t , t a k p o u z i j t e l i c e n s e . l i c ) . !V p r i p a d e p o t i z i s l i c e n c i , pak j e p o t r e b a t e n l i c e n c e . l i c n a h r a t do s l o z k y , kde ho h l e d a l n a p r i k l a d Abaqus p r i p r e k l a d u s u b r o u t i n y ! N a s l e d n e k l a s i c k y p r i d a t c e s t y do path a l i b Celkem v z a t o normalne t o f u n g u j e t a k t o ( win 7 , 64 b i t ) : PATH: c : \ Program F i l e s C: \ Program F i l e s C: \ Program F i l e s C: \ Program F i l e s C: \ Program F i l e s compiler ; C: \ Program F i l e s C: \ Program F i l e s C: \ Program F i l e s C: \ Program F i l e s ;
( x86 ) \ I n t e l \ComposerXE−2011\ b i n \ i n t e l 6 4 \ ; ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i n t e l 6 4 \mkl ; ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i a 3 2 \mkl ; ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i n t e l 6 4 \ mpirt ; ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i n t e l 6 4 \ ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i a 3 2 \ mpirt ; ( x86 ) \ I n t e l \ComposerXE−2011\ r e d i s t \ i a 3 2 \ c o m p i l e r ; ( x86 ) \ I n t e l \ComposerXE−2011\ c o m p i l e r \ l i b ; ( x86 ) \Common F i l e s \ M i c r o s o f t Shared \VSA\9 . 0\ VsaEnv
. . . v se c hn y o s t a t n i c e s t y . . . c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ Bin \amd64\ ; c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ Bin \ ; LIB ( Pravdepodobne bude t r e b a v y t v o r i t ) : c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ Bin \amd64\ ; c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ Bin \ ; c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ PlatformSDK \ Lib \ x64 \ ; c : \ Program F i l e s ( x86 ) \ I n t e l \ComposerXE−2011\ c o m p i l e r \ l i b \ i n t e l 6 4 \ ; c : \ Program F i l e s ( x86 ) \ M i c r o s o f t V i s u a l S t u d i o 9 . 0\VC\ Lib \amd64\
4
2
Datov´ e typy
Narozd´ıl od Maltabu a konec konc˚ u i Pythonu je Fortran velmi striktn´ı, co se t´ yˇce definice a dodrˇzov´ an´ı datov´ ych typ˚ u. Integer mus´ı b´ yt integer, floating point (REAL) mus´ı b´ yt floating point typ a nav´ıc pˇresnˇe definovan´ y. Napˇr´ıklad REAL nen´ı REAL*8, REAL je single precision a REAL*8 je double precision. V pˇr´ıpadˇe potˇreby lze tvoˇrit i ALLOCATABLE promˇenn´e, tedy promˇenn´e, kter´ ym lze pˇriˇradit velikost aˇz bˇehem v´ ypoˇctu. Jak to udˇelat a kdy se to hod´ı bych nechal na ˇcten´ aˇri a www.google.com :-). D˚ uleˇzit´e informace 1: Z´ akladn´ı zakl´ınadlo ve Fortranu pˇri pouˇzit´ı Abaqusu. Abaqus na Windows“ stroj´ıch a pˇri zapnut´ı full precision“ v Abaqus/CAE ” ” by mˇel vyuˇz´ıvat datov´ y typ REAL*8 (DOUBLE PRECISION). Lze definovat dokonce ˇcasto pouˇz´ıvan´e konstanty jako parametr, odkaˇzme na [?]. Detailnˇejˇs´ı informace ohlednˇe datov´ ych typ˚ u ve Fortranu lze zaˇc´ıt ˇcerpat napˇr´ıklad na [?] nebo v [?]. Za kaˇzd´ y dalˇs´ı uˇziteˇcn´ y detail ohlednˇe ˇsikovn´e a vychytral´e pr´ ace s datov´ ymi typy z pr˚ ubˇehu vaˇs´ı pr´ace budou vˇsichni vdˇeˇcn´ı.
3
Struktura subroutin
V t´eto kapitole si na nˇekolika uk´azk´ach vysvˇetl´ıme, jak jsou subroutiny strukturovan´e. Subroutina je v podstatˇe podprogram, kter´ y se pˇrilinkuje ke st´avaj´ıc´ı ˇc´ asti Abaqus´ıho ˇreˇsiˇce. D´ ale se vˇse zkompiluje a n´asleduje v´ ypoˇcet. Subroutin m˚ uˇzete pouˇz´ıvat kolik chcete, i sv´e vlastn´ı. V pˇr´ıpadˇe, ˇze je to subroutina, kterou vol´ a pˇr´ımo Abaqus, t´emˇeˇr vˇzdy se mus´ı nˇekde v Abaqus/CAE zakliknout, nebo zadat do .inp souboru ˇr´ adek, ˇze se ta dan´a subroutina m´a bˇehem v´ ypoˇctu volat. Jako uk´ azku vezmˇeme subroutinu umat, ve kter´e lze definovat vlastn´ı materi´ alov´ y model pro Abaqus Standard. Abaqus obsahuje jeˇste explicitn´ı modul, v tom lze definovat vlastn´ı materi´al v subroutinˇe vumat. Pro pˇr´ıpad umat subroutiny se zakliknut´ı, neboli sdˇelen´ı ˇreˇsiˇci, ˇze se m´a subroutina pouˇz´ıvat, provede v´ ybˇerem materi´ alu jako user material. D´ale je tˇreba nezapomenout na zad´an´ı poˇctu depvar (vˇzdy studujte manu´al a testujte a testujte vˇse a poˇr´ad!). A v neposledn´ı ˇradˇe je tak´e tˇreba zadat v definici jobu, kde lze nal´ezt textov´ y soubor s pˇr´ıponou .for, ve kter´em jsou zdrojov´e k´ody subroutin sepsan´e. Ve zdrojov´ ych datech 2 je vidˇet zaˇc´atek subroutiny umat. Prvn´ı ˇc´ast obsahuje kl´ıˇcov´e slovo SUBROUTINE a dalˇs´ı je n´azev subroutiny UMAT. Oboj´ı m˚ uˇze b´ yt jak mal´ ymi, tak velk´ ymi p´ısmeny - Fortran nen´ı asi v˚ ubec case sensi” tive“. D´ ale je zde vidˇet seznam promˇenn´ ych, nˇekter´e jsou jen vstupn´ı, jin´e mohou b´ yt v´ ystupn´ı a dalˇs´ı vstupnˇe-v´ ystupn´ı. Detailn´ı popis toho, kter´e promˇenn´e mus´ı a kter´e mohou a kter´e nemohou b´ yt definov´any v pˇr´ısluˇsn´ ych subroutin´ach je vˇzdy nutn´e zjisti v manu´ alu Abaqusu. V t´emˇeˇr vˇsech subroutin´ ach pro Abaqus se vyskytuje ˇr´adka uk´azan´a ve Zdrojov´ ych datech 3. Tento kus k´ odu obsahuje jen klasick´e informace v Marcovsk´em stylu, kter´e jsou uk´ azan´e ve Zdrojov´ ych datech 4. Zde je tedy jen ˇreˇceno, ˇze vˇsechny promˇenn´e, kter´e zaˇc´ınaj´ı p´ısmeny od A do H a od O do Z pokud nen´ı uvedeno jinak budou typu REAL*8 a zbytek standardnˇe integer. Co a jestli v˚ ubec nˇeco dalˇs´ıho obsahuje se nepodaˇrilo zat´ım 5
Zdrojov´ a data 2: Zaˇc´atek subroutiny umat. 1 2 3 4
SUBROUTINE UMAT(STRESS ,STATEV,DDSDDE, SSE , SPD, SCD, RPL,DDSDDT,DRPLDE,DRPLDT, STRAN,DSTRAN, TIME, DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, NDI , NSHR, NTENS,NSTATV, PROPS,NPROPS,COORDS,DROT,PNEWDT, CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER, KSPT, KSTEP, KINC)
INCLUDE ’ABA PARAM. INC ’ CHARACTER∗80 CMNAME INTEGER i p v t DIMENSION i p v t ( 3 ) REAL∗8 rcond , z DIMENSION z ( 3 ) REAL∗8 STRESS ,DDSDDE, SPD, PROPS, 1 E ,VU, SY0 , FZT0 , FES0 , FES1 , FEP0 ,FM, FN, 2 e e l a s , eplas , eqplas , sred , dsred , 3 syield , dsyield , yieldstress , 4 fv , t o l e r a n c e , residuum , e r r o r 5 FRK, dFRK,FRMK, FB, FD, FXT,FXK, FY, 6 g a u s s m a t r i x ,FDD, FBFD,FYMFBFD,FYMFBFDFDT, 7 FBA,FMKA DIMENSION STRESS(NTENS) ,STATEV(NSTATV) , 1 DDSDDE(NTENS,NTENS) ,DDSDDT(NTENS) ,DRPLDE(NTENS) , 2 STRAN(NTENS) ,DSTRAN(NTENS) ,TIME( 2 ) ,PREDEF( 1 ) ,DPRED( 1 ) , 3 PROPS(NPROPS) ,COORDS( 3 ) ,DROT( 3 , 3 ) ,DFGRD0( 3 , 3 ) ,DFGRD1( 3 , 3 ) , 4 FRK( 3 ) ,dFRK( 3 , 3 ) ,FRMK( 3 ) ,FB( 3 , 3 ) ,FD( 3 ) ,FXT( 3 ) ,FXK( 3 ) ,FY( 3 ) , 5 g a u s s m a t r i x ( 3 , 4 ) ,FBFD( 3 ) ,FYMFBFD( 3 ) ,FYMFBFDFDT( 3 , 3 ) , 6 FBA( 3 , 3 ) ,FMKA( 3 ) . . . ZDROJOVY KOD programu . . . RETURN END
Zdrojov´ a data 3: INCLUDE“ ˇr´adka v Abaqus. ” INCLUDE ’ABA PARAM. INC ’
Zdrojov´ a data 4: INCLUDE“ ˇr´adka v MSC.Marc. ” IMPLICIT REAL ∗8 (A−H, O−Z )
6
vygooglit. D´ ale popiˇsme v´ıce uk´azku ze subroutiny umat (Zdrojov´a data 2). Zde je vidˇet hlaviˇcka subroutiny, spousty vstupn´ıch nebo v´ ystupn´ıch promˇenn´ ych, Include ˇc´ ast, definice datov´eho typu string (CHARACTER) a dalˇs´ı definice pouˇzit´ ych promˇenn´ ych, pak n´ asleduje samotn´ y k´od programu a na z´avˇer mus´ı b´ yt subroutina ukonˇcena n´ avratovou hl´aˇskou RETURN a slovem END. RETURN zp˚ usob´ı, ˇze se hodnoty parametr˚ u subroutiny zase poˇslou z n´ı zpˇet do nadˇrazen´eho programu, ze kter´eho byla subroutina vol´ana. Toto lze udˇelat i jinak, v nˇekter´ ych situac´ıch v´ yhodnˇeji, proto odkaˇzme na [?]. D˚ uleˇzit´e informace 2: Maxim´ aln´ı poˇcet znak˚ u identifikuj´ıc´ıch promnˇennou ve Fortranu. Maxim´ aln´ı poˇcet znak˚ u identifikuj´ıc´ıch promnˇennou m˚ uˇze b´ yt 31!
D˚ uleˇzit´e informace 3: Pr´azdn´e znaky na zaˇc´atku ˇr´adky. Prvn´ıch 6 znak˚ u na kaˇzd´e ˇr´ adce jsou mezery! Aˇz pot´e zaˇc´ın´a zdrojov´ y k´od! Vyj´ımky jsou, ˇze prvn´ı znak nen´ı mezera a to znamen´a, ˇze na ˇr´adce je koment´ aˇr. D´ ale, ˇze ˇsest´ y znak je ˇc´ıslo, nebo hvˇezdiˇcka, nebo asi funguj´ı i jin´e znaky, to znamen´ a, ˇze pˇredchoz´ı ˇr´adek pokraˇcuje. Tak´e lze d´at na posledn´ı pr´ azdn´e znaky na zaˇc´ atku ˇr´ adek n´avˇeˇst´ı a na nˇej se z programu odkazovat. Za t´ımto n´ avˇeˇst´ım mus´ı b´ yt kl´ıcov´e slovo continue. Takto lze tovˇrit i cykly.
D˚ uleˇzit´e informace 4: Maxim´aln´ı poˇcet znak˚ u na ˇr´adce. Maxim´ aln´ı poˇcet znak˚ u na ˇr´adce je 60. (´ uplnˇe pˇresnˇe nev´ım, st´alo by za to poˇr´adnˇe vygooglit) Pˇri pr´ aci se subroutinami je ˇcas od ˇcasu nutn´e ˇc´ıst v´ ysledky jiˇz bˇehem anal´ yzy. To lze udˇelat tak, ˇze si ke standarn´ımu souboru s v´ ysledky .odb nech´ate vypisovat jeˇstˇe .fil soubor a pro ˇcten´ı v´ ysledk˚ u z .fil souboru pouˇzijete subroutinu POSFIL. Soubor .fil se bude vypisovat pokud v Abaqus/CAE zap´ıˇsete v nab´ıdce model → Edit Keywords na spr´avn´e m´ısto nˇekolik kl´ıˇcov´ ych slov. Kter´a pˇresnˇe a kam pˇresnˇe si jiˇz kaˇzd´ y ˇcten´aˇr mus´ı naj´ıt s´am, liˇs´ı se to pˇr´ıpad od pˇr´ıpadu. Snad jen um´ıstˇen´ı b´ yv´ a vˇetˇsinou tˇesnˇe pˇred koncem KEYWORDS. Zdrojov´a data ?? ukazuj´ı ˇc´ ast k´ odu, kter´ y ˇcte .fil soubor s v´ ysledky aˇz na konec a pak ho pˇrevine na zaˇc´ astek, toto je nutn´e, protoˇze .fil soubor je sekvenˇcn´ı, aby se v nˇem vˇse dˇelo maxim´ alnˇe rychle. Kdyˇz cyklus dojede na konec souboru vyskoˇc´ı na n´ avˇeˇst´ı 190 a pak se soubor pˇrevine na zaˇc´atek.
7
Zdrojov´ a data 5: Pr´ace se subroutinou POSFIL. !
F i n d s c u r r e n t i n c r e m e n t in . f i l f i l e CALL POSFIL (KSTEP, KINC,ARRAY, JRCD)
!
Up to t h e end o f t h e f i l e do K1=1 , 9 9 9 9 9 9 c a l l DBFILE ( 0 ,ARRAY, JRCD) i f (JRCD .NE. 0 ) GO TO 190 enddo 190 continue ! Rewind o f f i l e i n t o t h e b e g i n i n g c a l l DBFILE ( 2 ,ARRAY,JRCD)
8
4
Common block
Vpˇr´ıpadˇe, ˇze budete programovat i jen trochu sloˇzitˇejˇs´ı model, popˇr´ıpadˇe budete tvoˇrit komplikovanou anal´ yzu, m˚ uˇze se st´at a ono se to stane, ˇze budete potˇrebovat m´ıt nˇekter´e promˇenn´e tak ˇr´ıkaj´ıc vˇzdy pˇri ruce. Tedy, ˇze bude dobr´e je deklarovat jako glob´ aln´ı promˇenn´e. Tohoto lze dos´ahnout pomoc´ı tzv. Common blocku. V n´ asleduj´ıc´ı uk´ azce je vidˇet, jak je lze definovat. Jedn´a se o subroutinu UEXTERNALDB, ve kter´e lze definovat vˇse moˇzn´e, tato subroutina je v Abaqusu pr´ avˇe proto, aby v n´ı ˇslo definovat cokoliv obsluˇzn´eho a pomocn´eho a ˇsikovn´eho atd. Kde vˇsude se subroutina vol´a lze vidˇet v obr´azku ??. Pˇripomˇenmˇe jen, ˇze pˇri pouˇzit´ı glob´ aln´ıch promˇenn´ ych, mus´ı b´ yt v kaˇzd´e subroutinˇe, ve kter´e je cheme pouˇz´ıvat, tyto promˇenn´e definov´any stejnˇe. A d´ale, kaˇ zd´ y datov´ y typ by mˇ el m´ıt vlastn´ı COMMON BLOCK!. Zdrojov´ a data 6: Subroutina UEXTERNALDB a COMMON BLOCK. SUBROUTINE UEXTERNALDB(LOP,LRESTART, TIME, DTIME, KSTEP, KINC) INCLUDE ’ABA PARAM. INC ’ DIMENSION TIME( 2 ) CHARACTER∗256 c u r d i r , c u r f i l e , u n i s t r , u n i s t r 2 , s t r l i n e LOGICAL f l a g l o a d COMMON /FLG/ f l a g l o a d DIMENSION f l a g l o a d ( 1 0 0 , 4 ) COMMON /IDS/ no s t r i p s , n l geom , no s t e p s , i d s t e p DIMENSION no s t e p s ( 1 0 0 ) , i d s t e p ( 1 0 0 ) COMMON /NUM/ g r i p l o a d , d g r i p l o a d , e x t d i s p , 1 e x t d i s p max , fR d i s p node , a FEA, 2 c e x t n1 , c e x t n2 , c d i s p n , d i l o n , 3 e x t d i s p p , fR d i s p p , d u l l turn , 4 dperc l turn DIMENSION g r i p l o a d ( 1 0 0 ) , d g r i p l o a d ( 1 0 0 ) , e x t d i s p ( 1 0 0 ) , 1 e x t d i s p max ( 1 0 0 ) , fR d i s p node ( 1 0 0 ) , 2 c e x t n1 ( 1 0 0 , 3 ) , c e x t n2 ( 1 0 0 , 3 ) , 3 c d i s p n ( 1 0 0 , 3 ) , a FEA( 1 0 0 ) , d i l o n ( 1 0 0 , 3 ) , 4 e x t d i s p p ( 1 0 0 ) , fR d i s p p ( 1 0 0 ) , d u l l t u r n ( 1 0 0 ) , 5 dperc l turn (100)
9
5
Tisk a ˇ cten´ı textov´ ych soubor˚ u
Opˇet se zastav´ıme u ˇcten´ı a tvoˇren´ı textov´ ych soubor˚ u, protoˇze to je vˇzdy d˚ uleˇzit´e. St´ ale si ˇclovˇek potˇrebuje nˇeco vytisknout a naˇc´ıst a tak poˇr´ad dokola. Jak´ a ˇc´ısla (identifik´ atory) pouˇz´ıvat pro soubory lze nal´ezt v Abaqus Analysis User’s manual, 3.6 File extension definitions. Shrnuto a podrtˇzeno, pouˇz´ıvejte ˇc´ısla nad 100. Uk´ azka jak otevˇr´ıt soubor a zapsat do nˇej je ve zdorjov´ ych datech 7. Dodejme, ˇze .dat soubor pro Standard anal´ yzu1 m´a id = 6. Proˇc je ve zdrojov´ ych datech 7 divn´e vol´an´ı subroutiny GETOUTDIR2 ? Protoˇze je to subroutina, kter´a naˇcte cestu do aktu´aln´ıho adres´aˇre a uloˇz´ı j´ı do promˇenn´e curdir. Ta je nav´ıc vˇzdy oˇr´ıznuta funkc´ı trim, aby neobsahovala zbyteˇcn´e mezery. V curdir je pak uloˇzena natvrdo cesta do pracovn´ıho adres´aˇre. Toto je nutn´e, protoˇze Abaqus´ı anal´ yza prob´ıh´a ve scratchov´em adres´aˇri a ten nen´ı stejn´ y jako pracovn´ı a proto, pokud nebudete m´ıt zjiˇstˇenou pevnou cestu do pracovn´ıho adres´ aˇre, by se v´am tvoˇrily soubory ve scratchov´em adres´aˇri a na z´ avˇer anal´ yzy by se smazaly. Zdrojov´ a data 7: Tisk do souboru. !
Nacteni soucasneho pracovniho adresare c a l l GETOUTDIR( c u r d i r , LENOUTDIR )
! !
O r i z n u t i s t r i n g u s c e s t o u o p r e b y t e c n e mezery na k o n c i A p r i d a n i nazvu so ub or u c u r f i l e = t r i m ( c u r d i r ) // ’ \ i n f o ’
!
P r i d a n i p r i p o n y soub or u c u r f i l e = t r i m ( c u r f i l e ) // ’ . abqd ’
!
O t e v r e n i so ub oru open ( 1 0 5 ,FILE=c u r f i l e )
!
Z a p i s o v a n i do s oub or u write ( 1 0 5 , ∗ ) ’ C u r r e n t d i r e c t o r y ’ write ( 1 0 5 , ∗ ) t r i m ( c u r d i r ) write ( 1 0 5 , ∗ ) ’ C u r r e n t f i l e f o r i n f o ’ write ( 1 0 5 , ∗ ) t r i m ( c u r f i l e ) write ( 1 0 5 , ∗ ) ’−−−−−−−−−−−−−−−−−−−−−− ’
Zdorjov´ a data 8 obsahuj´ı uk´azku, jak ˇc´ıst z textov´eho souboru. Promˇenn´a curfile je string sloˇzen´ y z oˇr´ıznut´eho curdir, ke kter´emu je pˇripojeno jm´eno souboru a pak jeˇstˇe pˇr´ıpona3 . D´ale n´asleduje otevˇren´ı souboru s parametry pro ˇcten´ı atp. V uk´ azce se naˇcte jedna ˇr´adka s koment´aˇrem do stringu a pak dalˇs´ı ˇr´ adka s integer ˇc´ıslem.
1 C´ ˇ ıslov´ an´ı
soubor˚ u pro explicitn´ı modul Abaqusu se liˇs´ı. subroutina je standardn´ı souˇ c´ ast´ı Fortranu. 3 Pˇ r´ıpona je autorem zvolen´ a, tak aby po srovn´ an´ı soubor˚ u podle pˇr´ıpon ve Windows, byly tyto soubory na zaˇ c´ atku. Mimochodem zkratka .abqp znamen´ a abaquspython - je to totiˇ z soubor obsahuj´ıc´ı data pro v´ ypoˇ cet, kter´ y byl vytvoˇren v pythonu. 2 Tato
10
Zdrojov´ a data 8: Tisk do souboru. !
!
O t e v r e n i so ub oru c u r f i l e = t r i m ( c u r d i r ) // ’ \ t e n s i l e data ’ c u r f i l e = t r i m ( c u r f i l e ) // ’ . abqp ’ open ( unit=1 0 0 1 , f i l e=c u r f i l e , status=’ o l d ’ , action=’ r e a d ’ ) C t e n i dvou r a d e k a k o n t r o l n i v y p i s do so ub or u 105 read ( 1 0 0 1 , ∗ ) s t r l i n e write ( 1 0 5 , ∗ ) t r i m ( s t r l i n e ) read ( 1 0 0 1 , ∗ ) no s t r i p s write ( 1 0 5 , ∗ ) no s t r i p s
11
Tato prezentace je spolufinancov´ana Evropsk´ ym soci´aln´ım fondem a st´atn´ım ˇ e republiky v r´amci projektu ˇc. CZ.1.07/2.2.00/28.0206 rozpoˇctem Cesk´ Inovace v´ yuky podpoˇ ren´ a prax´ı“. ”
Tento studijn´ı materi´ al je spolufinancov´ an Evropsk´ ym soci´ aln´ım fondem a st´ atn´ım ˇ rozpoˇ ctem Cesk´ e republiky.