• No results found

Een computerprogramma voor het genereren van vloeiparameters uit meetgegevens, bij willekeurige procesomstandigheden : program listing

N/A
N/A
Protected

Academic year: 2021

Share "Een computerprogramma voor het genereren van vloeiparameters uit meetgegevens, bij willekeurige procesomstandigheden : program listing"

Copied!
92
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Een computerprogramma voor het genereren van

vloeiparameters uit meetgegevens, bij willekeurige

procesomstandigheden : program listing

Citation for published version (APA):

Liempd, van, J. H. (1988). Een computerprogramma voor het genereren van vloeiparameters uit meetgegevens, bij willekeurige procesomstandigheden : program listing. (TH Eindhoven. Afd. Werktuigbouwkunde, Vakgroep Produktietechnologie : WPB; Vol. WPA0529). Technische Universiteit Eindhoven.

Document status and date: Gepubliceerd: 01/01/1988 Document Version:

Uitgevers PDF, ook bekend als Version of Record Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne

Take down policy

If you believe that this document breaches copyright please contact us at:

openaccess@tue.nl

providing details and we will investigate your claim.

(2)

1t~

:f'

f,!!n computerprogramma voor bet genereren van

. .' loeiparameters ui t meetgegevens, bij

wille-I .

eurige procesomstandigbeden.

·1 \ .~.

H. van Liempd

;

'J~n

1988

orlgif1ee/

(ook

Op

cllsh

I/r)

"¥,-.w.u.iIoli..kUR.f_.~!tL~a

ort 0529

Ir L

• ' • u. J

r,.

f\

f.~.!nut''''ckers

J I v -

a

II '\.

(3)

, ®

G

/NVOGR

G)

/l!cl1ob

-

1

@(JlS/1/)~ LL~A/

, c , !

,

,

,

.

,

I

(4)

MODULE nClI\Od;

FROI1 ASCII IMPORT esc, EOL; FROI1 lnOut IMPORT Writej - FROI1 Keyboard IMPORT Read;

FROI1 NuaberConversion IMPORT tardToString;

FROI1 Screen IMPORT Colors;

• FROI1 Scher!Ibew IMPORT Tel<stXY, Tel<stC,Invoerscherlll, Tel<stschel'll;

FROI1 GBlnvoer IMPORT DataControl;

FROI1 GBonder II'IPORT Rekefllartij;

VAR cl,l\eI1uchar,conl,menustr:CHARj j, menuteller:CAROlNALj ok: BOOLEAN; BEGIN Write( CHR(007)); • T el<stschernl j Invoerscherlll(l,l,ltftaQenta); TekstXY(2,2, 'START' ,ltl'lagenta) i

• Tel<stxY(6,S,' WelcOie to nCIIIOd' ,ltCyan);

Tel<stxY(1,17,' This progr'8III perfOl'llS temperature and strain-nte dependent , ,White); , ,White)j oktober 1987' ,White)j Tel<stXY(1,18, ,

calculations

of plastic laterial constants.

Tel<stXy(1, 20, 'Jeroen van liellPd version 1.00 Tel<stXY(1,23,'press any key to continue', Yellow);

Read(cl)i lOOP Conl::'8' ; menute 11 er: =1; Tel<stscherBlj Invoerscherm ( 1, 2 ,ltl'lagenta) ; Tel<stXY(2,2,'MAIN

MENU'

,ltMagenta)j

Tel<stXY(2,6,'-calculation of later!al constants Tel<stXY[2,7,'-data control

Tel<stXY(2,8,'-end program

Tel<stXY(1,23,'press (esc) to end' ,Yellow); FOR j::6 TO 8 DO

CardToString(j-S,menustr,l); TekstXY(S7,j,lenUStr,Whlte);

END (- for x);

CerdToString(menuteller,lenUStr,t)j TekstXY(S7 ,menutel1er+S,lenUStr, Yellow) j

TekstXY!55, menuteller+5,CHR (016) ,Yellow) i

LOOP Reed(ct); CASE cl OF

'H' :

IF menuteller)l

THEN

DEC(menuteller) j CardToString(menuteller+l,lenUStr,l)j TekstXY(5S,menuteller+6,' ',Yellow) j TekstXY(S7,menuteller+6,lenustr,White); CardToStrlng(menuteller,lenUStr,l); TekstXY(SS,menuteller+5,CHR(016), Yellow) j TekstXY(57,menuteller+S,menustr, Yellow); END (x if xl;

: 'p' :

IF menuteller(3 THEN INC(menuteller) j tardToString(menuteller-l,lenUStr,l); TekstXY(S5,menuteller+4, ' ',Yellow); TekstXY(S7,menuteller+4,menustr,Whlte)j CardToString(menuteller,menustr,l)j TekstXY(SS,menuteller+5,CHR(016) , Yellow); TekstxY(57,l\eI1uteller+5,menustr,Yellow)j END (x if *); : esc : conl:=esc;EXIT; : EOL : IF menuteller:l THEN

ReKefl)artij j

ElSIF lenuteller=2 THEN oataControlj ElSIF menuteller=3 THEN

conl:=escj

(1)' ,White);

(2)' ,White);

(3)' ,White);

(5)

tNUjt.UI j

: '1' : RekenpartijjEXITj

: '2' : oatatontroljEXITj

: '3' : conl:=esc;EXIT;

ELSE;

Er.> (. case *); END (1 looP *);

IF conl=esc THEN EXIT END; END (1 looP 1);

Tekstschermj

Invoerscherm(l,l,ltnagenta)j

TekstXY{6,5,' Thank you for using nClIOd' ,LtCyan);

TekstXY{2,2,'END' ,Ltl1agental;

(6)

DEfINITION I'IOOllE GBonder; EXPORT QUALIFIED ReI<.enpartU; • PROCEDI..RE ReI<.enpartij () ; EN!) GBonder.

(*procedure waarin het calculations input IIIeflU is opgenomen

is

CALCULATIONS INPUT I1ENU procedure 1lOdu1e

::

."

select IlI8terial ZoeI<.()pMateriaal G8Databeheer

select flOWlllOdel Modelkeuze GBOnder

select strai~rate and tel8Per8ture ReI<.snelEnTeeplnvoeren GBOnder

perform calculations

change settings

: change strain/stress points

go to calculations outpUt IIIeflU

return to llIain MenU

TempreksScherm GBSchermteksten

T empReks ReI<.sne lEnT eep

8erel<.ening

GBOnder

SetSettings Settings

ChangeStrainStress GBOnder

zie voor llIeer inforraatie de 1I1PlEI1ENTATION I'IOOllE

(7)

IMPLEMENTATION NODUlE GSonder;

FROM ASCII llIPORT bs, esc, EOI.; FROM File$ystea IIIPORT File; - FROM Keyboard IMPORT Read;

FROM ~thl..ibO ItfORT exp;

FROM NuIIberConversion ItfORT StringToCard,CardToStringj FROM RealConversions llIPORT RealT oString, StringT oReal; FROM Strings IIIPORT Concat j

FROM Screen llIPORT Colors;

FROM SchenII IIIPORT ScrollUpActivePage,ScrollOownActivePagej

FROM ScherB!beW IMPORT rechthoek,Egaschenl,Cgascherm,Grafiek, Invoerscherlfl, TeI<stXV, TekstC, Tekstscherlllj FROM GBModellen IMPORT HollOlflOl'l,Ludwik, Voce,KrupsSwift;

FROM GBDatabeheer IMPORT ~teriaal,Zoek()pl1ateri!l81;

FROM Reksne lEn T eI!lP II1PORT SegevenRecord, Maakrijen, HaalGegevens81nnen, T elPReI<s j

FROM Rekenbew IIIPORT Pow i

~ FROM G8SchermTeksten llIPORT HolTekst,KruTekst,LudTeI<st,VocTeI<st,TelllpReI<sScherlll,Hoofdj FROM GBUitvoer IIIPORT Resultatenj

FROM

Settings IMPORT SetSettingsj

• VAR filena8lll:Materiealj

PROCEDliE ModelKeuze(VAR con,Model:CHAR)j

[Xprocedure die een keuzeaenu op het scherm zet en waarin de gebruiker ken kiezen uit de vier vloeilllOdellen.

con : stOPCriteriUlfi als gebruiker de (esc)-toets heeft ingedrukt. Model : nummer (als string) van het gel<ozen IIlOdeI '1' t/lfl '4'

xl

VAR IIlOdel,l!lenUstr,str1,Reserveaodel:CHARj • ok :BOOlEANj j,l!lenuteller,k:CARDlNAL; BEGIN Reserveaodel:=flodeli • tDenUteller:=2j T el<stschenaj Invoerscherlfl(l,2,LtBluel;

TeI<stXV(2,2, 'CAlCll.ATIONS-ItfUT' ,Lt81ue); TekstXY(2,3,'noDEL SElECTION' ,Lt81ue);

HoITeI<st(2,7)j (luitschrijven van de 1IlOde1len op een pleats OP hetscherml ) KruTeI<st(2,91;

LudTeI<st(2,U) j

VocTeI<st(2, 13) j

TeI<stxY(t,23,' (esc) : return to Min 1IIeI'IU' , Yellow); FOR j:=7 TO 13 BY 2 DO

k:=(H) DIV 2;

CardToString(k,l!lenustr,l) j TeI<stXY( 41, j,lIIeI'IUStr ,White) j

END (t for xl;

CardToString(l!lenuteller ,lIIenustr, 1) j

TeI<stXY(41 , (2*lIlenuteller)+5,lIIenustr, Yellow}; TeI<stXY(39, (2*tDenUteller )+5, Cffi(016), Yellow) j LOOP Reed(lIlOdell j CASE IIlOde I OF '1' ."4' : Model:=IIlOdeljEXIT; i esc : con:=eSCjEXITi i EOI. : CardToString(lIIeI'IUteller,strl,llj con:='z' jEXIT; : 'H' : IF tDenUteller>1 TIEN DEC (IIIeI'IUtellerj; CardTostring{menuteller+l,aenustr,l)i TekstXV(41,(2tlllenuteller)+7,menustr,Wh!te);

TeI<stxY(39, (2*l!lenuteller)+7 " " Yellowl; CardToString(menuteller,menustr, 1); TekstXV(41,(21I!lenuteller)+5,l!lenUstr,Yellow)j

TekstXY(39, (2llllenuteller l+5,CHR(016), Yellow);

END (* if *) j

: 'p' : IF tDenUteller(4 THEN

(8)

CerdTostring(menuteller-l,menustr, 1); TekstXY(41, (2~lIIenuteller )+3,lIIenuStr,White); TekstXY(39, (2xlllenutellerl+3,' ',Yellow); CardToString(lIIenuteller ,lIenustr, 1) i TekstXY{41, (2*lIIenUteller)+5, menustr, Yellow) i TekstXV(39, 12*lIIenuteller)+5,CHR(0161, Yellow);

END (x if i)j

ELSE

END (i case

*l

j END (* loop *l; IF con=esc THEN nodel:=Reservemodel; END (t if ~)j IF con:'z' THEN t1odel:=strl; END (X if *); END nodelKeuze;

-. PROCEDURE Ch8ngeStrainStress(VAR

x,

y:ARRAY OF REAL; VAR Maxrij:CARDlNAL);

• (*procedlre voor het veranderen van de geinterpoleerde vloeik.rolllrle~ hierraee kan lien (niet definitiefl waarden voor de rek en/of SPSMing verwiJderen,

toevoegen of wijzigen

x en y zijn de arrey's die de gewll8l'den van de geinterpoleerde vloeikro_ bevatten.

Maxrij is het aantal SPannings/rek waarden in de arreys x en y*)

VAR

i,j,k:CARDINALj string:ARRAV[O •• 7] OF CHAR; reservex,reservey:REAL; • resj,resi:CARDlNALj ok :BOOI.EAN; PROCEDtR Zet(i,j:CARDlNAL); BEGIN • RealToString(x[j] ,4,8,string,ok); T ekstXV (2, i, string, Whl te

1

;

Real ToString(yU] ,2,8,string,ok); - TekstXY(13, i,strlng,White);

END Zet; BEGIN

Tekstscherl;

Invoerschena(1,2,LtBlue)i

TekstXY(2,2,'CALCULATIONS - INPUT' ,LtBlueli

TekstXY(2,3,'CHANGE INTERPOLATED STRAIN/STRESS

VALUES'

,LtBlue)j T ekstxv(1, 23,' (esc) : return to calculations i/'lllUt 1IIenU' , Yellow

I;

TekstxV(2,5, I strain stress' ,White) j

TekstXV(2,6,'

H

[N/1Il2], ,White} i

IF Maxrij) =12 THEN

FOR j:=O TO 12 00

Zet(j+7,j) ;

END (* for *Ij

ELSE

FOR j :=0 TO Maxrij 00

Zet(j+7,j); END

It

for i);

END (I< if *}i

j:=O; 1:=7; 1<:=2; LOOP reservex:=x[j] j reservey: =y [j ); CASE I< OF 2 : ReelToString(xU],4,8,string,okl; TekstXY(2, i,string,LtWhite); GegevensInvoerOpScherll(" ,2, i, x[j],string, 7); : 13: RealTostring(y[j],2,8,string,okl;

(9)

~egevensinvoervp~Cnerm\ ,i~,1,YlJJ,5.rln9,/};

END (* case xl;

CASE string[ 0 J OF 'a': x[j}:=reservexj

y[j]:=reserver; (*escape OPtie*J

EXITj

: 'b': x[j]:=reservexj y[j] :=reservey;

Zet(i,j)j (*pijl OIIlaag*)

IF j)O TIfN OEC(j); IF 1=7 TIfN $crQUDownActivePage(l, 78, 7,19,1) j Zet(i,j); ELSE OEC(i); END (i if i); 00 (i if i);

: 'c': xU]

:=reservex j y[jJ :=reserveYj

Zetli,j)i (*piJl OIIIhoog*)

IF j (lIaxrij TIfN

INC(jl;

IF i=19 TIfN

ScrollUpActiveP8ge(1,78,7,19,1)j

Zet(i,j); ELSE INC (i) j

00 (i if xl; 00 (i if *);

: 'd': x[j]:=reservelj y[j]:=reserveYj

Zet(i,j)j (*pijl rechts*)

IF k=2 TIfN k:=13 END;

l

'e': xUl:=reservex; y[j] :=reservey; Zet(i,j) ;

IF k=13 TIfN k:=2 END;

: 'g': x[j]:=reservex; (ldelete the strain/stress COIIbinaUon*l

y[j) :=reservey j Zet(i,jj; resj:=jjresi:=ij IF llaxrij H TIfN

IF resj(lIaxrij TIfN FOR j: =res;+! TO llaxrij 00

x(j-l] :=xO] j y[j-l] ::y[j]; END (t for

xl

j END (X if Xl j llaxrij : =I1axrij-l j j:=resj;i:=resij END (* if *) j : I h': IF llaxrij (100 TIfN ELSE

x[j]:=reservexj I*insert

a new

COIbination*) y[j] :=reserver;

Zet(i,j); resj :=j jresi :=1 j llaxrij :=I1axrij+ 1;

FOR j:=I1axrij TO resj+l BY -1 00

xU] :=x[j-l]; y[j]:=y[Hh

END (x for *) j

GegevensInvoerOpSchera('Insert II strain value: ',2,21,x[resjj,string,7l;

GegevenslnvoerOpScherI('Insert a stress value: ',2,22,y[resj),string,7); j:=resjji:=resij

END

Ii

if

xl

j END (x case xl;

resj :=J jresi:=! j IF Ilaxrij)=12 TIfN

(10)

r\Jl\ 1;"1 IV 1'7 !.IV Zet(i,resjt7-resi) ; INC (resjJ ; END

Ii

for

xl

j ELSE FOR i: =0 TO MaxrU DO Zet(i+7,i); END

It

for *J j FOR i:=Maxrij+1 TO 12 DO TekstXY(2,i+7, ' END (~ for *) i END (X if *l; i:=resij TekstXY(1,21, ' TekstXY(1,22, ' END (t loop *) j • END ChangeStrainStressj , ,White);

• PROCEDURE GegevensInvoerOpScherm(tekst:ARRAV OF CHAR;

• kol,rij:CARDINALj

VAR relll:REALj VAR str:ARRAY OF CHAR; laxstr:CARDlNAL) ;

, ,White); , ,Whitel;

(*procedure voor het inlezen van getallen in de waarde str (als string) en de

waarde real(als REAL).

kol,rlj is de plaats 01'1 het scheriI.

maxstr is het santal karakters in de string*) VAR i:CARDlNAL; ok : BOOLEAN j BEGIN - FOR 1:=0 TO fIilxstr 00 str[i] :=' '; END (x for xl; 1:=0; TekstXV(kol,rij,tekst,Yellow); • LOOP Read(str[i]) j CASE str[i] OF '0' .. '9' ,'.': TekstXY(kol+HIGH(tekst)+2+i,rij,strU], Yellow); INC(i) j : EO!. : IF 1=0 THEN str[O):='X'j ELSE str[i] :=' ; j END (t if *1 jEXITj EXIT; : bs : IF 1)0 THEN str[i] ::' '; TekstXV(kol+IUGH(tekst)+1+1,rij,' ',White) j TekstXV(kol+HIGHltekst)+l+i,rU," ,White); (*cursor terugzetten*) DEC(O; END (* if xl; : esc : str[O] ::' a' ; EXIT;

: 'H' : str[O) :=' b' ; (Xpijl OIllhoog*J

EXIT;

: 'p' : str[O) ::' c'; (*pijl 0II1aag*)

EXIT;

: '11' : str[O)::'d'; (*pijl rechts*)

EXIT; : 'K' : str[O]:='e'; (*pijllinks

*1

EXIT;

: 's'

:

str[O]::'g'; (x del

*1

EXIT;

1

'R' : str[O]::'h'; (t ins

*1

EXIT; ELSE atr[Ol :=' l' JEXIT END (t case xl; IF i:7 THEN EXIT END (* if Xl;

- - , ... " +\

(11)

IF (str[O)='f') OR (str[O]='x') THEN

GegevenslnvoerOpScherto[ tekst, k01, rij, real, str ,maxstr) ; END (~ if I<l;

StringToRea1[str,real,ok); TeI<stXY(kol,rij,tekst,White);

TekstxY(kol tHIGH ( tel<st )+2, rij, str, White

1

j

END GegevenslnvoerOpScherrti

• PROCEDURE Hoofd2(GewReI<s,GewTelllP:REALli

(~PI'OCedIre voor het schrijven van tekst ap de tweede regel in het bovenste

Kader van het Invoerscherm. VORI1:

Strain-rate:. . . • . • • T elllPerattre: ... . Deze procedure wordt fleestal gel)ruikt in COIIIbinatie met Hoofd van 1IIOdu1e GBSchertoteksten

* I

VAR str:ARRAY [0 •• 7] OF CHAR; ok : BOOLEAN j

BEGIN

TekstXY(1,2,'Strain-rate : ' ,White); .

• RealT oStringl GewReks, 2, 8, str, ok) ; T ekstC (str, White) ; TeI<stC(' [l/s]' ,White);

T ekstXYl30, 2, ' T ~ture : " White

1

j

RealToString(GewTe8\P,2,8,str ,ok); TekstC(str ,White);

TekstC(' [' ,lihite) iTeI<stC[CHR(248) ,White) ;TekstC('Cl' ,ilhite); END Hoofd2;

PROCEDURE Berekening(eps,sig:ARRAY OF REAL; VAR eps2,sig2:ARRAY OF REALi

~xrij,maxstap:CAROlNALj

VAR n,A,B,C,R,ResSS,epsO,sigO:REALj Kodel,aptie:CHARj

VAR stap:CAROINAL;

waarde,stap,begin,st8Pdeel:REAL);

(I< PI'OCedIre waerin de procedures uit GBl'Iodellen worden aangeroepen voar het bereken

van de vloeiparameters. Deze aangeroepen procedures zijn HollOlllOn,Krups$wift -Ludwik en Voce.

eps en sig : de waerden van de reI< en spanning van de vloeikroame na interpalatie eps2 en si;2: 100 waarden van rei< en SPaMing berel<end met de in deze procedure

berekende vloeiparameters Maxrij : aatal waerden in eps en sig

maxstap : maxio aantal stappen in het iteratieproces

n,A,B,C,epsO,sigO : berekende vloeiparameters van de diverse Madel len, hoeven niet allewl een waarde te krijgen na berekening van de parameters

van een IOdel

R,RSS :correletiecoefficient en kwedratische verschil5011, nllUllkeurigheidsaanruidingen -l'Iodel :het geldende rode!

aptie,waarde,stap,begin,stapdeel : instelwaarden van het iteratieproces (zie TECHNICAL MANUAL IIPA-OS28)

-stop : stopkriterium na vestlOPen van het iteretieproces

*)

VAR i:CAROINAL; BEGIN

FOR 1:=0 TO 100 00

eps2[i] :=(FLOATU)

/75.

0) 'eps[~xrij] j

END (t for *J;

IF I1odel:'l' THEN

HollOllOl'l( epS, 51g, ~xr1j, n, C, R, ResSS, sigO, 1, maxstap, wllllrde, stap, begin, stapdeel, stap, optie) ;

FOR i:=O TO 100 00

si;2[i] ::C~(Pow(eps2[i] ,n));

END (* for l);

ELSIF I1odel='2' THEN

Krups$witt(eps,sig,~xrij,n,C,R.ResSS,epsO,l,Maxst8P,waarde,st8P,begin,stapdeel,stap,aptie};

FOR i:=O TO 100 00 IF eps2[i]+epsO)O.O THEN

(12)

:>1\1LL1J;-" \rVW\\e"':>LUJ~:;UlJrI)J;

ELSE sig2[i]:=O.O; END (~ if i);

END (t for xl;

-

-ELSIF Hodel='3' THEN

Ludwik(eps,sig,Maxrij,n,C,R,ResSS,sigO,l,maxstep,waarde,step,begin,st1Pdee1,stQP,QPtiel; FOR 1:=0 TO 100 DO

sig2[

il

:=sigO+C* (Pow(eps2[i],n)); END (t for 1);

ELSIF HodeI='4' THEN

Voce (eps, sig,Maxrij,n,A,B,R,ResSS, 1,maxstep,waarde,step,begin,stapdeel,QP tie); FOR 1:=0 TO 100 DO

sig2[i]::8-((B-A) *(exp( -n*eps2[i))));

END (t for *); END (t if *); • END Berekenill9j PROCEDURE ReI<sEnTellPInvoeren(Hodel:CHAR;1ilenaam:l'Iaterisalj VAR SewReI<s,GewTeIIP:REAL; BEGIN coo: =EOL j Tekstscherll;

VAR rel<srij,temprij,rel<rij,spanrij:ARRAV OF REALi VAR maxrij,l'Iaxrij:CARDINALjVAR AantalTeIIP,AantalRek:REALj VAR eps,sig:ARRAV OF REAL;

VAR voorw, con: CHAR) i

limet te veel letten QP de struetuur*) ("d!t is een nood-reserve procedure omdat de

procedure reknepartU te lang werd*)

Invoerschent( 1,2, LtBlue);

Tel<stXV{2,2, 'CALCULATIONS-INPUT' ,LtBlue);

TeI<stXV(2,3,'STRAIN-RATE

AND

TEnPERATURE SELECTION' ,LtBlue); TeI<stxY(1,23,' (esc) : return to main aenu', Yellow) j Hoofdl Model , filensaa) j

TelPReI<sScherll(GewReI<s,GewTeIIP,rel<srij,temprij,maxrij); IF (SewReI<s=O.ol OR (GewTemp=O.O) THEN

con:=CII(027) ; ELSE

T elPReI<s(Aantal T eIIP,AantalReI<, GewRei<s, GewT emp, reksrij, temprij, reKrij, SPIlnrij,eps, sig, maxrij,Maxrij) j

voorw:='b'j END (i if ilj

END ReI<sEnTemplnvoerenj

PROCEDURE ReI<enpartij();

• (*procedure ReI<enpartij is de procedure wsarin het CALCULATIONS ItfUT tlENU

is verwerkt. In de eerste doorgang door dit aenu wordt eerst het materisal gevreagd (matteller:=ll, dan het vloeillOdel (lIOdtelle:=ll , dan de temperatlU" en -rel<snelheid (tellPteller:=l) en dan de berel<eningen uitgevoerd (progteller:=l).

De pleats in het aenu wordt bijgehouden door de variabele aenuteller *) VAR getalleninvoer: GegevenRecord;

VAR progteller,aenuteller,matteller,lIOdteller,tempteller, o,stQP,i,maxrij,teller,Maxrij,maxstl!lP,repr : CARDINAL; BovenRel<s, OnderReI<s, Boven T eIIP, Onder T eIIP, GewReI<s, GewT eIIP,

R, ResSS, C, n, KK, AantalReI<s, Aantal TeIIP, AantalRek, ex,

ey ,ax, ay,

epsO, si9O, A, B: REAL;

rel<srij,temprij,reI<rij,SPanrij:ARRAV[O •• 323] OF REAL; eps2,sig2:ARRAV[O .• 100) OF REAL; eps,sig:ARRAV[O .. 1001 OF REAL; f:Filej ok: BOOLEAN; ccl,aenustr,c,ModeI,voorw,con,schenttype,optie,cl:CHAR; Til, Ts, Tb, Tst,wsarde,stl!lP,begin,st8Pdeel:ARRAV[O ••

31

OF REAL;

(13)

l 11l~'lll IAII'UL CICIII II': 111::>L~1_'\lI:I1 II': II':IClUH _~I \Ie'~~II, 1~'~ 1\= 1.'1J het aanroepen van procedure RekenPartij worden de default waarden OPnieuw vastgelegdt)

VAR i:CARDlNALi

BEGIN

waarde[0]:=O.OOOOliwaarde[1]:=O.OOOljwaarde[2]:=0.OOOljwaarde[3]:=0.OOlj stap[0]:=0.05jstap[1]:=O.01jstap[2):=O.05istap[3]:=1.0j

begln[O]:=O.l jbegin(1] :=O.Ojbegin[2] :=0. lljbegin[3] :=0.1 j

stapdeel[O] :=2.0istapdeel[1] :=5.0;stapdeel[2] :=5.0jstapdeeI[3] :=5.0;

FOR i:=O TO 3 DO

Tw[i J :=waarde[i]; Ts[i]:=stap[i);

Tb[i] :=b!9in[l] j

T st [i] : =stapdee l[i];

END (* for A) j

END Instelj

- PROCEDURE WerklnUi tvoering (rtenUC: CARDINAL) j

• VAR menuchar:CHARj BEGIN CardToString(rtenUC,menuchar,l}; CASE menuchar OF '1' : TekstschenRj (*lateriaalselectie*) pr09teller:=Oj Invoerseher!a(2, 3,LtBlue) j TekstXY(2,3, 'CALCUlATIONS-INPUT',LtBlue); TekstXY(2,4,'nATERIAL SELECTION',LtBlue)i ZoekOpKateriaal{stOP,filenaaa)j IF stOP=l TI£N con:=CHR(027) ; ELSE

TekstXY(l,22,'Please wait,

now

loading selected data ',Whlte);

HaalGegevensBinnen( f , filenaaa, te Her, laxrij ,getalleninvoer, AantalReks,

AantalT eRIP, AantalRek) ;

Maakrijen(getalleninvoer,reksrij,temprij,rekriJ,spanrij,laxrij);

I118tteller: =1 j

eel:='

x';

(llet deze varaibele die de waarde 'x' krijgt

ontsnappen we uit de tweede loop OP het einde van

deze procedure zodet het CALCUlATIONS INPUT I£NU weer

wordt 0Pgeb0lIIId*)

Ienuteller:=2j

END (t if l);

: '2' : IF Iatteller=l TI£N (*lIIOdelselectie*)

TekstXY(l,l,'Material: ' ,Whlte);TekstC(fllenaam,Whlte);

ModelKeuze(con,Model) i

StringToCard(Model,o,ok)j

0:=0-1; (*cardinal van model in settingsl)

IDOdteller:=lj

eel:='x' j

IF progteller=O TI£N aenuteller:=3;ENDj

ElSE TekstXY(1,22,'warning ! First select laterial !

END (* if *l;

, ,LtRed);

I

'3' : IF (matteller=l) AND (lOdteller=l) TI£N

(ttemperatuur

en reksnelheidselectie*)

ReksEnTemplnvoeren(Model,filenaaa,GewReks,GewTemp,reksrij,teaprij,

rekrij ,spanrij,l8xrij ,Maxrij,Aantal T eRIP, AantalRek,

ccl::'x' ; tempteller:=lj

eps, sfg, voorw, con) ;

IF progteller=O THEN aenuteller:=4;ENO; ELSE TekstXY(1,22, 'Warning! First select' ,LtRed);

IF Iatteller=l TI£N TekstC{'lIOdel !

ELSE TekstC('l8terial and IOdeI !

END (t if

-lj

EN) (t if il;

, ,LtRed); , ,URed)j

: '4' : IF haatteller=ll AND (llIOdteller=ll ANO (tempteller=l) TI£N

Tekstsoherl; (*berekeningen uitvoeren*J

Invoerscherl(2.4,LtBlue);

TekstXY(2, 3, 'CALCULATIONSMINPUT' ,UBlue);

(14)

I eKSt1\m:, 4, I..ALWLAIlUN:)" ,LtlHuen

Hoofd (Model , filenaam) j

Hoofd2(GewReks,GewTemp)j

TekstXY(1,11, 'Please wait, now calculating' ,Yellow);

Berekening(eps,sig,eps2,si92,Maxrij,aaxstap,n,A,B,C,R,ResSS,epsO,si9O, Model,OPtie, stop, waarde[o] ,stap[o] ,begin[o], stllPdeel[o]J; IF stOP=l THEN

TekstXV(1, 22, 'program halted, uPdate data,change strain-rate, temperatll'e,lOdel

or

aaterial TekstXYll,23,' {cr} : continue

Readlcl; stoP:=Oj

ELSE con::'O' j (*weg vrij near grafieken OP het schertl~l Etf) (* i1 ~);

ccl::'x' ; progteller::l i

lIeI'IU1:eller::7j

ELSE TekstXVU.22, 'llarning ! First select' ,LtRed};

IF (aatteller:l) AND (IOdteller:l) THEN TekstCI'strain-rate and temperatll'e' ,LtRed)j ELSIF I8tteller:l THEN TekstC('lOdel, strain-rate and teMPerature' ,LtRed);

ELSE TekstC(' aaterial, model, strain-rate and temperature' ,LtRed);

EM>

1*

if

il;

Etf) (* if

il;

: '5' : Tekstscherlj (*settings veranderen*)

Invoerscherl(t, 3, LtBlue

1

;

TekstXV(2,2,'CALCULATIONS-INPUT

nENU'

,LtBluel; TekstXY!2,3, 'SETTINGS' ,LtBlue);

SetSettings(Tw, Ts, Tb,Tst,waarde,stap, begin, stllPdeel,repr,maxstap, Model,schermtype,OPtie);

ccl ::'

x'

j

: '6' : IF (matteller:ll AND !lOdteller=ll AND (tempteller=1) THEN

ChangeStrainStress(eps,sig,t1axriJ}j cel::'

x' ;

ELSE TekstXY(I,22,'Werning ! First select' ,LtRed);

IF (matteller:l1 AND (IOdteller=l) THEN TekstC('strain-rate and temperature' ,LtRed); ELSIF aatteller=l THEN TekstC('model, strain-rate and teraperatll'e' ,LtRedlj

ELSE TekstC('material, model, strain-rate and temperatll'e' , LtRed};

EM> 1* if

*Ii

Etf) (* if *lj

(*oproepen van her CALctU TIONS OUTPUT I'ENU zie Resuitaten( GBuitvoerl *)

: '7' : IF progteller:l THEN

Resul taten! GewReks, GewT emp, epsO, si9O, A, B, n, C, R, ResSS, con, schermtype, Model, OPtie, filenaam, eps,sig,Maxrij,repr,eps2,sig2) ;

eCl::'x'j menuteller:=4j

ELSE TekstXY(l,22,'waming ! First select' , LtRed) ;

IF (matteller:l) AM> (lOdteller=l) THEN TekstC('strain-rate and temperattre' ,LtRed); ELSIF matteller:l THEN TekstC('lOdel, strain-rate and teeperature',LtRed);

ELSE TekstC('aaterial, IOdel, strain-rate and temperature' ,LtRedl;

Etf) (t if *);

END (* if *l;

(*afbreek kriteriUl hierna terug in het HAIN I'ENU

*l

: '8' : cl:=escj ELSE END (* case *l; - END WerklnUitvoeringj BEGIN • Model:::' 1 ' ; InsteHwaarde,stap,begin,stBPdeel, Tw, Ts, Tb, Ist); repr::l0; maxstap:::50; OPtie:::' 3' ; schermtype::' e'; stOP:=Oj , ,Yellow); , ,Yellow);

(15)

VUUI-W;-a~ i

con::'7' j

progteller:=Oj (~programillateller telt de door9ang door onderstaande lOOP*1 (leerste keer eerst lllateriaal vragen, dan steeds beginnen*) {*bij calculations*1 Illatteller:=OjlOdteller:=O;tempteller:=O; aenuteller::li LOOP Tekstscherll; Invoerschera(2, 2, LtBlue Ii eel :='y';

IF (Jlatteller=ll ANI) (lIIOdteller=l) AND (tempteller-l) THEN Hoofd(Hodel,filenaam)j

Hoofd2 (SewReks, SewT emp I j

ELSIF (lllatteller=ll ANI) (IIOdteller:ll

THEN

Hoofd (1'Iode I, filenaam) ; ELSIF (Illatteller:ll THEN

TekstXV(2,l,'naterial: ',White); TekstC( fHenaam,Whitel;

END (t if tJ;

TekstXY(2,4,'CAlCULATIONS-INPUT MfNij',LtBlue); TekstXY(2,

5,'

-select lllaterial

T ekstXY(2,6, I -select flowllOdel

TekstXV(2,7,'-select strain-rate and temperature TekstXY(2,a,'-perfora calculations

TekstXY{2,9,'-change settings

TekstXY(2,lO,'-change interpolated str/str values TekstXY(2,11,'-go to ealculations-output aenu TekstXY(2, 12,' -return to l18in aenu

- TekstXY[1,23,' {esc} : return to main aenu', Yellow);

FOR i::5 TO 12 00 C8rdToString( i-4,lIenustr, 1) j TekstXY(42, i,lIeI'IUstr,White}; END (t for l); CardToString(lIeI'IUteller ,lIeI'IUstr ,11; TekstXY(40,taenUteller+4,CHR(016), Yellow}; TekstXY(42,menuteller+4,aenustr,Yellow); LOOP Read(el); CASE c1 Of

'H' :

IF taenUteller}l THEN DEC (taenUteller ); (1)' ,White); (2)' ,White); (3)' ,White); (4)' ,White); (5)' ,White); (6)' ,White);

',LtRedJ iTekstC(' (7)' ,White) j

(a)' ,White};

CardT ostring (taenUte 11 er+ l,menustr, 11 j

TekstXY(40,lIeI'IUteller+5,' ',Yellowl j (*pijltje uitvegen*)

TekstXY(42,menuteller+5,lIeI1ustr ,White) j CardToString(menuteller ,aenustr, 1) j TekstXY(40,aenuteller+4,CHR(016), Yellow) j TekstXY(42,menuteller+4,menustr, Yellow) j END

It

if l); (*pijltje OIIhoogt) : 'p' : IF menuteller{S THEN INC (menuteller );

C8rdToString (menuteller-l, menustr ,1);

TekstXY (42,aenut:eller+3, aenustr,White) ;

TekstXY(40,menuteller+3,' ',Yellow); (*pijltje uitvegen*J CardToString(menuteller,menustr,l);

TekstXY(42,aenut:eller+4,menustr, Yellow) j TekstXY (40, aenuteller+4,CHR(016) ,Yellow);

END (t if *l;

: esc: EXIT;

: EOL : llerkItiJitvoering(menuteller) ;IF (eel:' x') OR (el=escl TIfN EXIT END;

: '1' : llerkltiJitvoering(l)jIF eel:'x' THEN EXIT END;

I

'2' : WerklnUitvoering(2)jIF eel='x' THEN EXIT END;

: '3' : WerkltiJitvoering(3);IF eel:'

x'

THEN EXIT END;

: '4' : llerkltiJitvoering(4);IF eel:'x'

THEN

EXIT

END;

: '5' : WerkInUitvoering(5);IF eel:'x' THEN EXIT END; : '6' : llerkltiJitvoering(6);IF eel:'x' THEN EXIT

END;

(16)

i f ; wenUnUUVQCf'l : '81 : Cl:=eSCiUITj ElSE Ell!) (' case 'l; Ell!) (' 10(1) 'l;

If (cl=esc) OR (coo=esc) THEN EXIT EN!)

I'

if ');

END (' loop .); END ReI<enpartij;

IIfGIN

Ell!) G!!onder.

(17)

DEFINITION MODULE GBlnvoerj

FROI'I GBDatllbeheer II'IPORT I18teriaal;

EXPORT QUALIFIED InvoerA, Dat8Control;

PROCEDURE InvoerA( optie:CAROlNALj

VAR filenaatll:l18teriaall;

PROCEDURE Dat8Control{);

(*optie:2 invoer venaf plaatje,3 Y8n8f rij getallen*) END GBlnvoer .

. (*InvoerA regelt het invoeren VIII'I vloeikrOlllllell in het dat!lbestand op de lIIInier

zoals in de TECHNICAL MANUAL (WPA 0528) is OPQenoaen.optie=2 :invoer uit plaatje

• OPtie:3 :invoer uit rij getallen. DataControl bevat het DATA-CONTROL IIENU

insert data

trot

strain/stress

row

insert data frOll! starin/ stress plot uPdate data

print data prepare datlldisk return to lIIIIin IIenIJ

procedures InvoerA (GBlnvoer) InvoerA (GBInvoer) InvoerllenlJ (GBDatllbeheer ) Invoenaenu (GBDatllbeheer ) Invoenaenu( GBD8t!lbeheer )

lie de IIIO<iile GBDat!lbeheer voor leer infortatie OII!trent uPdate data, print data

en prepare datlldisk. Ook in de II'lPI..EI1ENTATlON I100ULE staat leer COIIIIIentaar *l

(18)

-IMPLEI£NTATlON MOOOI..E GBInvoerj FROM ASCII IMPORT EOL,esc,bsj

FROM FileSystee IMPORT Close,File,ResPOnse,Lookup,WriteCher,ReadChar; FROM Keyboard IMPORT Read;

FROM bberConversion IMPORT CardToString,StringToCard; FROM RealConversions IMPORT RealToString,stringToRealj FROM Strings IMPORT Concat;

FROM Screen IMPORT Back,Colors;

FROM Oosjes IMPORT DiskInStationj

FROM FileIO IMPORT SchrijfRealNaarFile,Lees5trVanFile,SchrijfStrNaarfile;

FROM GllDatabeheer IMPORT Itsterieal,Zoek()pI1aterieal, Invonenuj

• FROM ScherII IMPORT ScrolllJpActivePage;

FROM ScherIIbew IMPORT TekstxY, TekstC, Tekstschena,Invoerscherll;

• TYPE string:ARRAV[O •. 7] OF CHAR;

• VAR filena:l18terieal;

optie:CARDlNAL;

PROCEDURE stringlnvoerOpScherll( tekst:ARRAV OF CHAR; kol,rij:CAROINAL;

VAR str:ARRAV OF CHAR; Iaxstr:CAROINAL);

(i invoeren van een string die aan bepaalde eisen aoet voldoen( zie CASE opdracht)

let kol,rij op een bepaalde pleats op tlet schena de 'tekst' pleatsen. str krijgt

de ingevoerde waarde • laxstr is het santal karakters*)

VAR i:CARDINAL; • ok:BOOlEAN; BEGIN FOR i: =0 TO laxstr DO str[i] ::' 'j Etll (t for tl; • 1:=0;

TekstxY(kol,rij, tekst, Yellow);

TekstXY(kol+HIGH(tekst) +1, rij , ",White); (tCll'5or terugzetteni) • i:=O;

LOOP

Read(str[il) ;

TekstXY(l,22,' ',Yellow);

CASE str[i] OF

'0' •.

'9',

'a' •• IZ', 'A' ..

't, '-', '\' :

TekstXV(kol+HIGH{tekst)+2+i,rij,str[i], Yellow);

(*alleen deze karakters toegelaten*)

INC(i) i

: EOL : IF i=O THEN

str[O]:=CHR(220)j (lkarakter geeft eol aan*) ELSE str[i):=' 'i END (i if *);EXIT; : bs : IF DO THEN str[i]::' '; TekstXV(kol+HIGH(tekst)+1+i,rij,' , ,White) i TekstXY{kol+HIGH(tekst)+l+i,rij," ,White) j (iCll'5or terugzetten*)

DEC!i);

Etll (t if *l;

I

esc : str[O] :::CHR(064);

ELSE TekstXY(1,22,' Invalid', Yellow);

END (t case tl;

IF i=lalstr THEN EXIT

END (t if il;

• END

It

loop

ili

EXIT;

TekstXYlkol,rij, tekst,White);TekstC(' ',lI'lite);

TekstXV(kol+HIGHltekst)+2,rij,str,White) ;TekstC(' ',WhIte); END stringlnvoerOpScherII;

PROCEOURE GegevenslnvoerOpScherm( tekst :ARRAV OF CHAR; kol,rij :CARDlNAL;

(19)

1M f1:CIl ;f\I::IIL;

VAR str:string);

(tOok een PI"OCedure als StringlnvoerOpScherlll, nu gebruikt voor het invoeren van

een real getal *)

- VAR i:CAROlNAL; ok:BOOLfAN;

BEGIN

LOOP

i:::O; str:=' 'j TekstXY(kol,rij,tekst,Yellowlj

TekstXY(kol+HIGH(tekstl+l,rij," ,Iihite); (tzet cursor terugt) i:=O;

LOOP

Read (str[i]) j TekstXY(l,22, ' , ,Yellow) i CASE strUl OF

'0' .. '9','.':

TekstXYlkoltHIGH(tekst)+2+i,rij,str[i), Yellw); INCUl ;

: EOI.. : IF i=O THEN str[O] :::' l' jELSE str[i]:::' ';EM); EXITj : bs : IF 1>0 THEN str[i]:=' '; TekstXY(koltHIGH(tekst)+i+i,rij,' ',White); TekstXY(koltHIGH(tekst)+1+i,rij," ,White); (·Cll'sor terugzetten*

1

DEW); EM) (t if tl; : esc : str[O] :=CHR(064);

EXIT;

ELSE str(O]:='f';EXIT; 00 (t case xl;

IF i=7 THEN EXIT EM) (t if t)j

00 (t loop

tl

j

• StringT oReal( str, real, ok l;

IF (ok=TRUE) AND (real=O.O) THEN str[O] :='f' j

- EM) (t if *l;

IF (str[O]='f') THEN

TekstXY(l,22,'IlIVI!Ilid', Yellw); ELSE

(*raelding op het scherm als

verkeerd knkter verd ingetypt*)

TekstXY(kol,rij, tekst,Iihtte) j TekstC(' ',White);

TekstXY(koltHIGH(tekst)+2,rU,str,Iihite) ;TekstC(' ',White); EXIT;

END (t if *);

00 (t loop *);

-00 GegevensinvoerOpSchertllj

-PROCEOURE SlaFilenaamOp( filenaalll:l18teri8l!l1);

(thet opsl8l!ln van een filenaalll in het databetsand(dus OP de datadlskette)*) VAR f:File; I!I8ntal:ARRAY[O .. 15] OF CHARj aantalC:CAROlNALj I18terialenArray:ARRAY [0 .. 99] OF I18teriaali ok : BOOLEAN; i:CAROINAL; c:CHARj 88nWezig:CAROlNAL;

BEGIN

LOOP

aanwezig:=Oj IF OisklnStation()=TRUE THEN lookuP(f,'a:namen.bes' ,FALSE)j leesStrVanFile(15,' " f ,l!I8ntall j

(*l!I8ntal materialen OP datadiskt ) ('idem maar dan als real*) (*array van materialen*

1

(tteller voor ide aateriaal*) (*controle getal of aateriaalnaaa al bestaat*)

(20)

J\t:CNVlIQI \ I ,'-'J,

StrinoT oCard (aantal, aantal C,

old ;

FOR i:=O TO aantalC 00

LeesStrVanFile(15,' ',f,~teri81enArray[i]); (~inlezen materiaalna.en*) ReadChar ( f , c l; Eta)

Ii

for

*1;

Close(f); aantal C: :santal C + 1; CerdToStrino(aantalC,aantal,2); ~terialenArray[aantalC]:=filenaaaj LookuP(f,'a:namen.bes' ,FALSE);

SchrijfstrNaarFile(f ,aantal) jllriteChar( f ,EOL); FOR i:=O TO aantalC 00

SchrijfStrNaarFile( f ,l1aterialenArr8Y[ i]) ; lIriteChar( f ,EOL) j (*\Ie9scrijven na.en*)

00 (* for *l; (*met nieuwe naaI achteraan*)

Close

I

fl;

EXIT;

- ELSE

TekstxY{l,22,' Insert datadisk in drive A: and press (cr)', Yellow); Read(c) ; TekstXY(1,22,, ',Yellow); Eta) (i if II; 00 (I loop I); END SlaFilenaal\Op; PROCEDURE InvoerA(OPtie:CARDlNALj VAR filenaal:Hateriaalj;

(i OPtie=l dan rekken en SPaMingen rechtstreel<s*) (~ OPtie=2 dan rekken en SPaMingen vanuit literattl" *)

TYPE Gegeven=RECORD

Reksarray, TeQlllrr8y, Rel<8rray , Spanarray:REAL; OOj

VAR f:File;

strl,reks,SPan, tetlP, re:strino; str:ARRAY[O .. 2] OF CHAR;

filenaaml:ARRAY[O •• lS] OF CHARi ok:BOOLEAN;

kk,AantalReks, Aantal T etIP, AantalRek, reksnelheid, teaperatuur, rek, SPannino, maxrek, deelx,deely ,man,malY, schaab, schaalY:REALj

Areks, AtetlP,Arek, i,j,k, treks, itetlP, irek: CARDINAL j

REK, TEIf:ARRAY[O •. 100] OF REAL;

IngelezenGegevens:ARRAY[O •• 350] OF Gegeven; inf01, inf02:ARRAY[O ••

71

OF CHAR;

c:CHAR;

aanwezig:BOOLEANj her!<: CHAR j

PROCEDURE een() j (*deze procedlre is OPQesPlitst in drie

deel-PI"OCedtres QenaaId een, twee en drie*) -BEGIN

T ekstscherlll j

Invoerscherlll(l, 2, LtRed) ;

• TekstxY(1,23,' (esc) : return to data control

1lenU',

Yellow); TekstXY(2,2,'DATA CONTROL',LtRed);

IF OPtie=2 Tt£N

TekstxY(2,3,' INSERT DATA (PlOTH' ,LtRed); ELSIF OPtie=3

THEN

TeI<stXY(2,3, 'INSERT DATA (VALUESH' ,LtRed);

(*het eerste scherlll voor het invoeren van de

achtergrondgegevens van het materiaal, default waarden zijn aangegeven*) END (* if *); TeI<stxY(2,S,'material TeksUY(2, 6, 'werKstoff-nr (*default *) car-steel' ,lIhite); 46BU26' ,lIhite); kd' ,White); TekstxY(2, 7,' source(literature) TeI<stXV(2,8,'test:CoIIIpression,Tensile,tOrsion TeI<stXY(2,9,'nuaber of strain-rates TeI<stXV(2,10,'number of temperatures

TeI<stXY(2,11,'nugber of points per strlstr curve: IF OPti e=2 THEN

_ • • H • • I .... " ... I... e. it • , r , C' ,lIhite); l' ,lIhite); l' ,lIhite); 2' ,lIhite) j .. ' fa..:tL \

If

(21)

1~~~All'" 1', 1!:!1"'~11 VI ~~Ilun ax lllllllJ

TekstxY(2, 13, 'length of stress ax [I11III]

TekstXY(2,14,'range of strain [~]

1 ,I'II1HCrj --~ ... ~.

l' ,lIhite); l' ,lIhite) j

T ekstxY(2, 15, 'range of stress [N/IIIIII2]

00 (x if *); l' ,lIhite); END een; PROCEDURE twee(); YAR c:CHAR.; BEGIN LOOP IF DisklnStation()=TRUE THEN

LookuP ( f, filen1181111, TRUE);

SChrijfStrNaarfile(f,io101); SchrijfStrNaarFile( f , 10102) ; SChrijfRealNaarFile( f ,AantalReks); SChrUfRealNaarFilelf ,AantalTeJII)); SChrijfRealNaarFile( f ,AantaIRek) j j:::Oj (tschrijven va de achtergrondgegevens

naar

de

I8teriaalfile*)

(*schrUven

van

de meetgegevens

naar

de

I8teriaslfile*)

FOR ireks:=l TO I!reks DO

SChrijtRealNwFile( f, IngelezenGegevens[j].Reksarray) j

FOR iteJll):=l TO AteMP DO

SchrijfRealNaarFile(f,IngelezenGegevens[j].Temperray)j

FOR irek: =1 TO I!rek 00

Real ToString (IngelezenGegevens [j ]. Rekarray, 4, 8, strl, ok) ;

SChrijfStrNaarFile( f, str1);

SChrij1RealNaarFile(f,IngelezenGegevens[j].Spanarray); INC(j) ;

END (* for *l;

END

It

for i);

00 (t for Xl;

SChrijfstrNaarfUe( f, ' einde ' );

Close(f) ;

EXIT;

ELSE

TekstxY(1, 22,

'Insert

datadisk in drive A: end press (cr)', Yellow);

Reed(c) j

TekstXY(l,22,' ',Yellow);

END (* if *lj

END (t loop x);

END

twee;

PROCEDURE drier); I*PI"OCe<Ilre die het hele inlezen bevat roept procedtres een en twwee aan*)

• j :::0; i:=7; IF filenaa[O]OCHR(064) THEN Tekstscherll; Invoerscherll(l, 2, LtRedl ; TekstXY(2,2,'DATA CONTROL',LtRed); IF OPtie=2 THEN

TekstxY(2,3,' INSERT DATA (PlOTl-2' ,LtRed) j

ELSIF OPtie=3 THEN

TekstXV(2,3,' INSERT DATA (VALUES)

4 ,

LtRed);

END (t if *l;

TekstXY(1, 1, filenl!llll, lIhite) j

TekstXY(1,23,' (esc) : return to l8in

1IenU"

Yellow);

T ekstXY( 1,5, ' strai~rate tellPer8ture eff. strain

IF OPtie=3 THEN

TekstXY(1,6,' [1Js] [de9r C]

H

ELSIF OPtie=2 THEN

TekstXVl1.6,' [1/s] [degr C] [.]

END (- if *);

Areks:=TRUNC(AantalReks); AteMP:=TRIJNC(AantalT eMP);

1!rek:=TRIJNC(AantelRek) i

eft. stress', lIli te) ;

[N/.2]' ,lIhite); [I11III]' ,lIhite);

(22)

I \If\ "'.-V IV"'''' I,IU

TeI<stxY(S, I,' END (* for xl; i:=7;

FOR irel<s:=l TO Arel<s 00

LOOP

GegevenslnvoerOpScherJ(" ,1,i,reI<snelheid,reI<s); IF rel<s[O]=CHR(064) THEN EXIT END;

IF (reI<snelheid)O.O) AND (reI<snelheid(10000.0) THEN EXIT ; ELSE TeI<stXY(l, 22,' Invalid' , Yellow);

, ,White);

END [* if xl; (*controles OP geldigheW)

END (* loop *);

IF rel<s[O]=CHR(064l TIfN EXIT END; FOR iteRIP:=l TO AtetIIP 00

IF irel<s=l THEN LOOP

GegevensInvoerOpSchert{" ,20, i, TEMPUteRIP], tetllP) ; IF tetllP[O]=CHR(064) TlfN EXIT END;

IF (TEI'f[itesp])O.O) AND (TEMP£itellPH10000.0) TIfN EXIT ; ELSE TeI<stxY(1,22,' Invalid' , Yellowl;

END (t if il; END (t loop *l;

IF teap[O]=CHR(064) TlfN EXIT END; END (t if I);

FOR irel<: =1 TO Arel< 00

RealToString(rel<snelheid, 2,8, rel<s, ok) ; TeI<stXY(3, i,reI<s,Whitel;

Real ToString{TEMP£iteRIP], 2, 8, temp, ok) i

TeI<stXY(22,i,tetllP,White); IF (irel<s=ll AND (itemp=ll TIfN

LOOP

Ge9evensInvoerOpSchertR(" ,40,i,REK[irel<],rel; IF re[O]=CHR{(64) THEN EXIT END;

IF OPtie=3 THEN I8xrel<:=10.0; ELSIF optie=2 THEN 18xrel<:=10000.0; END (* if *l;

(*OPtie=3 rel<ken invullen in (-] *)

(*OPtie=2 rel<ken invullen in ..

xl

IF (REK[irel<]}O.O) AND (REK[irel<]<ltIlxrel<) THEN EXIT j

ELSE TekstXY(1,22, 'Invalid', Yellow); END (* if

il

j

END (t loop *)j

IF re[O]=CHRI(64) THEN EXIT END; END (t if

*l.

RealToStringlREK[irel<],4,8,re,okl; TekstXY(42, i,re,White) j LOOP GegevensInvoerOpScherm(" ,60,i,SPanning,spanj. TeI<stXY(62, i, SP8r\,White);

IF span[O]=CHR(064) TlfN EXIT END;

IF (SPanning)O.O) AND ISPanning(10000.0) THEN EXIT j

ELSE TeI<stXY(l,22,' Invalid' ,Yellow); END (t if xl;

END (* loop *l;

IF SP8r\[O]=CHR(064) THEN EXIT END;

WITH IngelezenGeQevens[j] 00

ReI<sarray:=rel<snelheid; T emparray: =TEMP[i telllP]; IF oPti e=2 THEN

Rekarray:=REK[irel<]xdeelx; SPanarray:=spanning*deely; ELSE Rekarray:=REK[irel<] ; $panarraY:=SPanning; END (* if xl; END; INC(j) ; INC(i)i If i=19 TlfN ScrollUpActivePage(1, 78,6,19,1) j DEW);

(XOlrekenen van milimeters nears rel<ken

(23)

!:AI \ 11 Jj

END (1 for 1) j

END (* for *);

END (t for i);

TekstXY(1,22,'Plesse wait, saving the data' ,Yellow); tweej SlaFilenaamOD(filenaam); END (* if i); _ EXIT; • END (t loop *J i END driej

BEGIN (*eigenlijk begin procedlre InvoerA, aanroep van een, twee en drie*) eenj lOOP lOOP aanwezig::::TRUEj filenaaRl::' inf01::::' , j inf02:=' ';

'.

,

-( *11) stringlnvoer()p$cherl ( 'II6terial

IF filenaam[O]=CHR(064) THEN EXIT END (t if *);

: ',2,5, men_,l2);

IF filenaEIII[O]:::CHR(220) THEN TekstXY(39,5,' car-steel' ,White) ifilen88ll:=' car-steel' ;END; Concat(' a:' ,filen88ll, filenaaml);

lOOP IF DiskinStation()=TRUE THEN lookuP(f,filen88lll,FAlSE); Close! f) j EXIT; ElSE

TekstXY(l,22, 'Insert datadisk in drive A: lII'ld press

<or)',

Yellow); Read(c) i TekstXY{1,22, ' END (t if xl; END (t loop *); IF f. res=notdone THEN , ,Yellow) j

aanwezig: =FAlSE; (Xbinnen een loop de invoer van de gevens over het I18teriaal. Steeds gedaan in aparte loops 011 geldigheid invoer te controleren

zie 1

tIm

11*) END (t if *);

IF aanwezig:TRUE THEN

TekstXY(1,22, filen88ll, Yellow) ;TekstC(' already exists, <or> : continue', Yellow) j Read (0) j TekstXY(1,22,' " Yellow); IF o=esc THEN til enaam [01 : =CHR (064); END (t if

il

j ElSE EXIT; END (t if *); END (* loop t);

If filenaam[O]:::CHR(064) THEN EXIT EM) (* if *);

(*2*) Stringlnvoer()pScherm('werkstoff-Nr : ',2,6,ln102,7);

IF inf02[O]=CHR(220) THEN TekstXY(39,6,'46BU26',White)jinf02:='468U26 'jEND; IF inf02[O]=CHR(064) THEN EXIT END (t if t);

(*3*) StringlnvoerOpScherJa('source (literature) : ',2,7,infol,6); IF info1[O]:::CHR(220) THEN TekstXY(59, 7, 'kd' ,Whiteliinfol:=' kd ' ,END; IF info1[O]:::CHR(064) THEN EXIT END (* if xl;

LOOP

TekstXY(1,22,' " Yellow);

(*4*) TekstXY(2,8,' test:COIIpression, Tensile, tOrsion : ',Yellow); Read(herk) ;

CASE herk OF

'c'

,'0', 'T' : TekstXY(2,8, 'test:COIIpression, Tensile, tOrsion ',White); TekstC(herk,White)jEXITj

: esc : herk::::CHR(064l;EXIT i

: EOl : herk:='C'jTekstXY(2,8,'test:COIIIPression,Tensile,tOrsion C' ,White);EXITj ElSE TekstXY(l,22, 'Invalid', Yellow);

END (* if *)j END (* loop *) j

IF herk:::CHR(064) THEN EXIT END (* if *) j Concat(herk, infol, info1J;

(24)

\0';;10'

LOOP

TeksUY(l,22,' '. Yellow);

GegevenslnvoerOpScherm('nuIber of strain-rates : ',2,9,AantalReks,strl);

IF (str1[O]=CHR(064)} OR ((FLOAT(TK(AantaIReksll:AantalReks) AND [AantalReks)O.9)) THEN EXIT ; ELSE TekstXY(1,22. 'Invalid' I Yellow);

00 (* if tl;

END (* loop Xl;

If strl[O]=CHR(064) THEN EXIT

END;

(x6*)

LOOP

TekstXY(1,22,' , , Yellow);

GegevensInvoerOpScherlll('nuIber of tef8l)el'atures : ' ,2,lO,AantalTeIP,strl);

IF (str1[O]=CHR(064)) OR ((fLOAT(TK(AantalTeIP)):AantalTeIP) ANI) (AantalTetlP)O.9)) THEN EXIT; ElSE TekstXY(1,22,' Invalid' ,Yellow);

EM) (* if x);

END (* loop xl;

IF strl[O]=CHR(064) THEN EXIT 00;

• (l7t)

• LOOP

TekstXY[l,22, , " Yellow);

GegevenslnvoerOpScherlll('number of points per str/str curve: ',2.11.AantalRek,strl);

IF (str1[O]=CHR(064)) OR ((FLOAT(TK(AantalRek)):AantaIRek) AND (AantalRekH.9)) THEN EXIT; ELSIF str1[O]:'l' THEN AantalRek::2.0; TekstXY(39,11, '2' ,White);EXITj

ElSE TekstXY(t,22,'Invalid',Yellow)i

END (1 if Xl;

END (t loop x) j

IF str1[O]=CHR(064) THEN EXIT ENDl

(*81)

_ IF OPti e=2 THEN LOOP

TekstXY(l,22,' ',Yellow) j

GegevensInvoerOpScher!a( 'length of strain ax [III]

IF str1[O]=CHR(064) THEN EXIT END;

IF (schaalX)O.O) ANI) (schaalx<1lDl.O) THEN EXIT ;

ELSE TekstXY(1,22,'Invalid' ,Yellow); END (* if ll;

END (t loop x) j (*9*)

LOOP

TekstXY(1,22,' , • Yellow);

GegevensInvoerOpScherll(' length of stress ax [III]

IF strl[O]=CHR{064} THEN EXIT 00;

IF (schaaly)O.O) ANI) (schaalY(1000.0) THEN EXIT j

ElSE TekstXY(l,22, 'Invalid', Yellow); END (1 if t);

END (t loop x);

[xtotJ

LOOP

TekstXY(1,22, ' , ,Yellow);

GegevenslnvoerOpScherll(' range of eff. strain [-J

If str1[D]=CHR(064) THEN EXIT END;

If (II8XX)O.O) ANI) (lI8xx(lO.O) THEN EXIT ;

ElSE TekstXY(l,22,'Invalid' ,Yellow);

END

(t if l); 00 (t loop ll; (*l1l) LOOP TekstXY(1,22,' " Yellow) j : ',2,12,schaalx,str1); : ' ,2,13,schaaly,strl); : ' ,2, 14,lI8xx.strl);

GegevenslnvoerOpScherll('range of eff. stress [N/mll2] : ' ,2, 15,lI8xy,strl); If str1[O]=CttH064) THEN EXIT 00;

If (II8XY)O.O) AND (II8Xy(tOOOO.O) THEN EXIT ; ElSE TeksUY(1,22,'Invalid' .Yellow); END

Ii

if *J;

END (i loop *l;

dee 1x: ::maul schaab;

deelY:=IIIexy/schaaly; END (i if i);

EXIT; END (t loop Xl j

IF (str1[O]OCHR(064)) ANI) (filelll!l8lll[OjOCHR(064)) ANI) (info1[OjOCHR(064)) AND (inf02[0]OCHR(064)) THEN driej

- I " . !

(25)

I...mI \ J,J "

ENO InvoerA;

PROCEDURE DateControl;

VAR cl,menustr,con,c3:CHAR; j,menuteller, stop: CARDINAL;

• PROCEDURE. WerkInUitvoerlng(IeOUC:CARDINAL}; VAR RIeruCher: CHAR;

BEGIN CardToString{leOUC,menuchar,l]; CASE menuchar OF '1' : InvoerA(3,filena8ll); : ' 2' : InvoerA(2, filena8ll);

: '3' :

Tekstscherlj Invoerscherl{1,4,LtGreenJ;

TekstXY(2,2, 'DATA CONTROL' ,LtGreen) j TekstXY(2,3, 'UPDATE DATA' ,LtGreen) j

TekstXY(l,20,'shift C : change filenaae',Yellow)j TekstXY(1,21,'(del> : reIDOve IISterial' ,Yellow)j ZoekOpMeterilllll(stap,fileneem); IF stop=O THEN IIlVOerIIeIlJ ( filena8ll, 4) j EN!)

It

if t}; : '4' : Tekstscherij Invoerschera(1,2,LtGreen)i

TekstXV(2,2,'DATA CONTROL' ,LtGreen); TekstXY(2,3,'PRINT DATA' ,LtGreen) j

TekstXV(1,23,' (esc) return to data control menu' , Yellow) j 8ad<:=LtGreenj

TekstXY(1,22, ' Is your printer on-line, connected and paper inserted? (yIn)', Yellow) jBack:=5lackj Read(c3) j IF c3='y' TID TekstxY(l,22,' ',Yellow); ZoekOpMllterilllll(stop,fllenll8l); IF stop=O TID Invoermenu(filellll8ll,5}; EN!) (X i1 t); EN!) (t if *); : ' 5' : Invoermenu(filellll8ll,6); : '6' : con:=eSCj : esc : con:=eSCj ELSE EN!) (I case x); EN!) WerklnUitvoering; BEGIN menuteller:=lj LOOP Tekstscherllj Invoerscherlll( 1,2. LtGreenJ; TekstXV(2,2,'DATA CONTROL',LtGreen}i

TekstXV(2,6,'-insert

new

data frOlll strain/stress values TekstXY(2,7,'-insert new data frOlll strain/stress plot TekstXV(2.8,'-updste data

TekstXY(2,9, '--print data TekstXY(2,10,'-prepare datadisk TekstXV(2,11,'-return to lIIain menu

TekstXV(1,23,'(esc} : return to lIIain menu',Vellow)j

FOR j:=6 TO 11 DO

CllrdToString(j-5,aenustr,1)i T ekstXv (57, j, menustr, White) i

EN!) (* for xl;

CardToString(menuteller, menustr, 1) i TekstxV(57 , menuteller+5,menustr, Yellow) i TekstxV(55,menuteller+5,CHR(016), Yellow}; LOOP Reed(c1); CASE cl OF 'H' : IF menuteller)l TID DEC (menuteller) i CllrdToString(menuteller+l,menustr,l}; TekstXV(57,menuteller+6,aenustr,White)i # f , u " " \ (1)' ,White); (2)' ,White); (3)' ,White); (4)' ,White); (5)' ,Illite); (6)' ,White);

(26)

CerdToStringlmenutellerl.enustr,l); TekstXY(SS,menutelleNS,ClfH016), YellOliJ); TekstXVIS7,menutelleNS,.enustr, YellOliJ) j END (* if xl; : 'p' : IF llenuteller(6 TI£N INClmenuteller) j CerdToStringlllenuteller--l,menustr ,1); TekstXYISSlmenuteller+41 ' I, YellOliJ);

TekstXY(S7 ,menuteller+4, lIenustr ,White) j

(tpijltje

near

benedeni

) CardToString(menuteller,menustr,l); TekstXYISS,lIenuteller+5,CHR(016) , Yellowl i TekstXV(S7,lIenuteller+5,menustr,YellOliJ); END (i if xl; : esc : con::esc;EXIT; : EOL : WerklnUitvoering(menuteller);EXIT;

: '1' : WerklnUi tvoering(1) ,EXIT;

: '2' : WerklnUitvoering(2);EXITj : '3' : WerklnUitvoering(S)jEXIT; : '4' : WerklnUitvoering(4);EXIT i : '5' : WerklnUitvoering(S);EXITj : '6' : con::esc;EXITj

ELSE

00

1*

case

xl;

END (t looP

xl

j

IF con:esc TI£N EXIT END;

00 (* looP xl;

END Dat8Contro 1;

BEGIN 00 GBlnvoer.

(27)

DEFINITION MODULE G8Modellenj FROM Screen IMPORT Colors j

EXPORT QUALIFIED Ludvik, KrupsSllift,

Ho 1101101l,

Voce;

-PROCEDURE Ludvik(x,y:ARRAY OF REALjHaxrij:CAROINALi

VAR n,c,R,RSS, sig() :REALi SchermIO,lBlstap:CAROINALj wearde,stap,begin,st8Pdeel:REALj VAR stOP:CAROINAL;

optie:CHAR) j

(*dwz als SchermIO:O dan geen pijltjesgedoe OP het scherm, weI als SchermIO::l*1

• (*wearde::verschil voorSPaming, stap::eerste stappen, begin=beginwearde voorsp • st8Pdeel=wearde weardoor stap moet worden gedeeld~l

• PROCEDURE Krups$wtft(x, y:ARRAY OF REALjVAR Mexrij : CARDINAL j

VAR n,c,R,RSS,epsO:REALj ScheraIO,lBxstap:CARDlNALj wearde,stap,begin,stapdeel:REAL; VAR stOP:CARDlNALj OPtie:CHARI; (t

PROCEDURE HollOllOll(X, y:ARRAY OF REALjHaxrij:CAROlNALj

VAR n,c,R,RSS:REALj VAR stOP:CAROINAL; OPtie:CHARJ; • xJ

• PROCEDURE HollOllOn(x,y:ARRAY OF REALiMexrij:CAROlNAL; VAR n,c,R,RSS,sig() :REALj

SchermIO, IBxstap: CARDINAL; wearde,stap,begin,st8Pdeel:REALj VAR stOP:CARDlNALj

OPtie:CHARJ j

PROCEDURE Voce(x,y:ARRAY OF REAL iMaxrij:CARDlNAL; VAR n,A,B,R,RSS:REALj

ScherIIO,lBxstap:CARDlNAL; wearde,stap,begin,st8Pdeel:REALj VAR OPtie:CHARI i

'END GBModellen.

J*Deze IOdule bevat de procedures die voor elk vloeilllOdel de

pararaeterwaarden berekenen uit de aeetgegevens. We illustreren de gang van zaken ·voor het 1IIOde1 van KruPskowsld/SWift (procedure KruPsSIIift). In x en Y wordt de

geinterpoleerde vloeikrolaie ingegeven bij de gewenste telPer8twr en reksnelheid Deze kroMe bestaat uit de arrayS voor rek en SPanning let ieder Mexrij getallen. n,C,R,RSS,epsO zijn de berekende vloeipararaeters, ScheraIO wil Zeggen het piaatsen van het pijltje det het iteratieproces voigt. Voor ScheraIO:O wordt geen pijltje gezet en voor SchermIO::l weI. maxstap,waarde,stap,begin,st8\)deel en optie zijn de instelwearden (zie TEClfUCAL I'IANUAI. WPA 0528). stop is het afbreekcriteriUIII van het iteratieproces : ais stop =1 wordt al het rekenwerk stilgelegd en ver-schijnt een foutlielding OP het beeldscherlft •

• De IMPLEMENTATION ItOOULE is ruilschoots van colftlentaar voorzien. ~)

(28)

IHPLEMENTATION noDULE G8Modellen;

F~ I1athLibO I!fORT In,exP,sqrt;

~ RealConversions I!fORT RealToString;

• ~ Strings IMPORT Concat;

F~ Screen I!fORT Colors;

f~ Scher!lbew Ilf00T TekstXYj

• FROM Rekenbew 1l1PORT Pow,RSS,T~trix,OplosTweeYerg;

VAR e4:ARRAY [0 •. 6] OF CHAR;

PROCEDURE

CorrCoeff(Y,y:ARRAY OF REAL;

Kaxrij:CARDlNALl :REALj VAR i:CARDlNAL;

gem, boven, onderl, onder2 :REAl; BEGIN gem:::O.Oj boven:=O.Oj onderl: =0.0; onder2:=O. OJ FOR 1:=0 TO Maxrij DO gem:::get+ly[il

I

IFLOAT(KaxrU) 1); END (~ for *1; fOR i: =0 TO I1axrij DO

boven: =boven+ ( (Y[ il-gell) ~ (y [ i j-gem) ) ;

onderl : :onder 1 t ( (y[i]-gem) * ( y [i]-gem) ) j

onder2:=onder2+( (y[i]-gem)

*

(Y [i]-gell

I I ;

EM) (A for *) j IF (onderl*onder21=o.0 THEN RETURN 0.0; ELSE RETURN (boven/(sqrt(onderPonder2))

I;

END (t if ~)j • END CorrCoeff;

PROCEDURE MetVoorSpaming(y:ARRAY OF REAL; 5igO:REALj VAR maxy:CARDINAL; VAR yy : ARRAY OF REAl);

(*deze procedure wordt gebruikt in procedure rekenuit van de hele rij

span-o ningen steeds een 5190 eraf*)

VAR i:CARDlNAL; BEGIN FOR i: =0 TO maxy DO yy(i]::yUJ-si9Oj END (i for

*h

END MetYoorSpaming;

PROCEDURE MetVoorDe1ormatie(VAR x, y:ARRAY OF REAL;

epsuonO: REAl j

YAR maxx:CARDINAlj YAR xx:ARRAY OF REAli VAR stOP:CARDlNAL);

o (*wordt ook gebruikt in rekenuit en trekt steeds van iedere epsilon een epsO

at.

als epsilon[O](:x[O]) door deze aftrekking negatief dreigt te worden,

wordt deze epsilon[O] weggegooid en schuiven de hele array's x en y een pleats

near beneden op, dwz x[i]::x[H]. dit ailes in verband met procedure

logar-i tlllogar-iseer. de I18xlogar-imale waarde wordt let 1 verminderd *)

VAR i:CARDlNAL; BEGIN

FOR i:=O TO maxx DO xx[i] :=x[i)+epsilonO;

END [t for A};

IF -epsilonO ): X[O) TIIEN IF stQP=O TIIEN

TekstXY(2,23,CHR(015),Yellow); (loeel sterretje geeft OP het scher.

het linderingsproces Ban,als dit pleatsvindt*)

FOR i:=1 TO Ian DO

xx[HJ ::xx[i];

y(i-l)::y[i);

(29)

IIIClU;"IIIlIU-l, - --~---~ - - _ .

END (* if *l;

If I18xx(4 THEN (*hier wordt de berekening afgebroken ais het array Minder dan 5 meetparen heeft, OP het $Chern zichtbaar dlav stop:=1;

TekstXV(3,23,CHR(015) , LtCyan) j

• ENDj • END (~ if *);

.END MetVoorOeforll8tiej

blauw starretje, de waarde stop wordt tt)

PROCEtllRE LogaritMiseer(x:ARRAY Of REAL; VAR laxx:CARDINAL; VAR stOP:CARDINAL;

• VAR i:CARDINALj BEGIN

VAR Inx:ARRAY Of REAL) j (*van aIle elmenten van de array's

x

en Y wordt de In

genomen. stop:=1 als een In dreigt te worden berekend met x[1]<0*)

f~ 1:=0 TO en DO

IF x[1](=O.O THEN stOP:=l;END (* if t)j IF stOPO 1 T1fN

1nx[i]:=1n(x[i]);

END (t if *);

END (* for *) j

E~ LogaritMiseerj

PROCEDURE VulMatrixEnReken(VAR B:ARRAY Of REAL;

Inx,lny:ARRAV Of REAL;lI8xy:CARDlNALj VAR stOP:CARDINAL);

(*OP1osson van de latrixvergelijking A*B=C met A=A[O,O] All,O] A(O,l] A[1,l1 B=B{O],B[t] C=C(O],C[l] invoer

A

en C uitvoer

B*)

• VAR i : CARDINAL j A: TweeDMatrix j C:ARRAV[O •• 1] OF REAL; BEGIN A[O,O]:=O.O;A[O,l] :=0. OjC[O]:=O.OiC[l] :=0.0; fOR i: =0 TO I18XY DO

AID, 0] :=A[o, O]+lnx[i]*lnx[i] j

A[O,ll:=A[O,l]+lnx[ilj C[O] :=C[O]+ Inx[i]*lny[i]; C[1] :=C[1 ]+lny[i];

END (* for *);

A[1,0]:=A[0,1]; AU, 1] :=fLOAT(lI8xyt1);

IF (A[l,O]*A[O, 1)-A(1, l]*A(O,O])=O.O THEN

stOP:=1; (*hierMee voorkomen we delen door

°

in OplosTweeVerg*)

ELSE

OplosTweeVerg(A,C,B) ; END (x if *l;

END VulMatrixEnRekenj

PROCEOIJRE RekenUit(x, y:ARRAV Of REALi

VAR y1:ARRAY Of REALjvariabele:REALj VAR n,c,R,ResSS:REALi Model: CARDINAL j VAR I18xy:CARDINALj VAR stOP:CARDlNAL; VAR OPtie:CHARj VAR SchermIO:CARDINAL);

(xwordt gebruikt binnen bereknlOOP in het while-stateMent, x en y invoer yl uitvoer van gefitte krOMe

waarmee

in berekenloOP R en RSS wordt bereknd variabele is per model de constante die wordt gevarieerd, Model is het in MOdule nlonder ingegeven MOdel,laxy de bovengrens voor array's x en y,

(30)

OPtie is de manier van fitting,1,2,3 of 4 zie OPIerkingen bij IF statements lnx,lnY,xx,rY,ylog:verschillende tussenarray's als uitvoer van bewerkingen OP x en y. A,B,C Array zoals gebruikt in Vul~trixfnReKen,str gebruikt om

R

of

RSS

OP het scherm te zetten*

1

VAR i:CARDINAL; Inx,lny,xx,yy,ylog:ARRAV[O .. l00] OF REAL; A: TweeDI1atrix i C,B:ARRAV[O •• l] OF REAl; str:ARRAV[0 .. 15] OF CHAR; ok: BOOLEAN; ..BEGIN

IF !Iodel=2 Tl£N (* variabele is Mer epsilonO .)

(*model llet voordeformatie, door de In-waarden wordt de best passende rechte

lijn gelegd n en c verschijnen in vector B, let y1 wordt R of RSS(al naer

gelang de optiel berekend:OPtie=l:fltten naar de beste R in een lineare

gra-fiek.OPtie=2:fitting naar de beste

R

in een logaritmische grafiek.OPtie=3 fitting naar de bste RSS in een lineaire grafiek.optie=4: fitting naar de betse RRS in de logaritmische gral1ek*)

t1etVoorOeformatie(x, y, veriabele, maxy,

xx,

stop}; Logaritmiseer(y,laxy,stOP,lny); Logaritmiseer(xx,laxy,stOP,lnx); Vul~rixfnReken(B,lnx,lny,laxy,stOPI; IF stOP--o THEN n:=B[O]; c:=exp(B[l]) ;

IF (optie='2') OR (OPtie=',') TI£N FOR i:=O TO lIaxy DO

ylU] :=B[1]+B[Wlnx[i]; END (* for *l; ELSE FOR 1:=0 TO IlaIY DO

yHiJ

:=c*(POII(XX[i] ,n)}; END (* for *l; END (i if *l; END (* if *l; END (i if il;

IF (l'Iodel=3) OR (!lodel=1) TI£N

(*!Iodel 1 wordt hier bepaald door de OPtie 1 of 3, x en Y worden gefit aan de best psssende kroml8e Y=a*x(power n)+b waarin b per definitie gelijk

is san nul, n wordt geverieerd*)

IF (Model=!} AND ((OPtie='2') OR (OPtie='4')} THEN LogarUmiseer(

x,

IaXY • stop. lnx

1 ;

Logaritlliseer( y, IlaIY, stop, lny I j

VuI~trixfnReken(B.lnx,lny,laxy,stOP)j

IF stOP=O TI£N n:=B[Oh c:=exp(B[111 j FOR i:=O TO iIIIIXY DO

y1[i] :=B[1J+8[0]'lnx[1J;

ylm :::exp(y1[i]);

END (i for *l;

END (i if :tl;

Ii

variabele is hier n *l

(*onderstaand gedeelte gebruikt in het geval wanneer OPtie :: 2 of 4 en Ills de mting let kroMe Y=a*x(power n)+b heeft gefaald,alleen dan

wordt san het stOPkriterium de waarde 2 gegeven. !Iodel 1 kOlt in dit deel dus nooit.de fitting geschiedt san de best passende kroml8e lny=a*lnx+b

(lnsig::ln(eps+e!)sOl*n+lncl.er I80et dus gelogaritliseerd worden*)

ELSIF ((stOP:2) OR (OPtie:'2') OR (OPtie:'4')) AND (l'Iodel=3) TI£N I1etVoorSpanning(y,variabele,l8xY,YY)j

Logaritlliseer(yy,18xy,stop,lny); Logari traiseer (x, !laXY ,stop, lnx) j

VulllatrixEnReken (B, lnx, Iny, IlaXY, stop) ; IF stop=O Tl£N

(31)

"';-CWIllllJJ;

FOR i:=O TO IDaxy DO yl[i]:=8[1]+8[O]*lnx[i]i

END (~ for ~)j

IF (optie:'l') OR (optie:'3'J THEN

FOR i ::0 TO I18XY DO

yl[i1::exp(yl[i]]i

END

It

fort)i

END (t if i);

END (i if xl;

(*het PI'OQI"8IIIl8 lOOPt dus in eerste instlll'ltie door onderstaand gedee 1 te

als tenllinste optie: 1 of 3.1IOde1 loopt hier altijd doorheent)

ELSIF (optie:'l') OR (optie:'3') THEN

IF variabele(=O.ODOl THEN stop::ljENDj

IF stOP=O THEN FOR i: =0 TO I18XY DO Inx[i]:=Pow(x[i], variabele) j END (t for i) j VulKatrixEnReken(8,lnx,y,lI8xy,stop); IF stop=O THEN c::S[O];

n:=8[l]; IXn is hier sigOt)

IF Model:l THEN (*voorSPlll'lning aItijd

null)

n:=O.O;

END (i if *)j

FOR i:=O TO I118IY DO

ylU) :=n+c' (Pow[x[i], variabele));

END (x for xli

END (t if *)j

END

It

if *l;

END (* if xl;

END (t if *l;

IF ModeI=4 THEN (t variabele is hier n x)

(t direkte fitting 8IiI'l y=a*exp(ntx)+b (sig:8-(B-A)exp(nxeps)).n wordt

gevari-eerd.alleen te gebruiken in opt!e's 1 e 3*)

IF optie='2' THEN optie::'1' END (t if *);

IF optie='4' THEN optie:='3' END (X if xl;

FOR i:=O TO IIIIIIY DO

Iny[i]:=yU];

InxU] :=-(exp( -variabele*x[il));

END (* for xl;

Vull1atrixEnReken(S, InK, Iny,lDaxy,stop) i

IF stOP=O THEN

n:=S[OJ;

c:=8[l];

FOR 1:=0 TO IIIIIIY DO

y1U] :=c-(n*exp( -variabele*x[i]

II

i

END (* for X);

END (t if xl;

END (x if tl;

(Xhieronder de R en RSS in logaritlllische of lineaire vorlll WIIarI'l8ar wordt

geQPtilll8liseerd in de verschillende opties. met str worden R of RSS bij

elke iteratielus naar het scherIII getsuurd*)

IF stop=O THEN

(*stOPkriteriUl*)

IF (Hodel:l) AND ((optie='2'

I

OR (aptie=' 4'

I)

THEN

ResSS:=RSS(y, yI,ElY) jR:=CorrCoeff(y, y1,IIIIIIY);

ELSE

IF optie='l' THEN

R:=CorrCoeff(yl,y,lII8xY)j

ELSIF optie='2' THEN R: :CorrCoeff (y1, Iny ,IIIIIXY) ;

ELSIF optie=' 3' THEN

ResSS:=RSS(y, yl,lII8xy); ELSIF optie:' 4' THEN

(32)

00 (* if xl;

IF (optie='l') OR loptie::'2') TIfN

Reel T oString(R, 10, 16, str, old;

ELSE

ReaIToString(ResSS,6,16,str,Ok); END (x if xl; IF ScherII0=1 Tt£N T ekstxY (30,20, str , WIli te

J ;

00 IX IF *l; 00 (x if xl; END (tif*); .END RekerlJitj

PROCEDURE

Berekenlaop(begin,stap,waarde,stapdeel,beginwearde,deelfmetor:REAL; YAR variabele:REALj x,y:ARRAY OF REAL; YAR n,c,ResSS,R:REALj

Kodel ,SchermIO, I8xstap:CARDlNAL;

VAR

Iaxy:CARDINALj

VAR

stOP:CARDINAL;

VAR

OPtie:CHAR) j

• YAR veriabeleO, variabele1 :REALj

yt,ylog:ARRAY(O •• l00] OF REAL;

BEGIN

ResSSO, ResSS1, RO, Rt, RofRSSO, RofRSSl : REAL;

i,teller,l,r:CARDlNAL;

teller:=O; variabeleO:::beginj . veriabelel :::begin+stap j

RO: ::1. OjRl: =1. OJ ResSSO: :::1. OjResSS1: ::1. OJ

RekenUit (x, y, y1, variabeleO,n, c,RO, ResSSO,Kodel ,IaXY ,stop,optie, ScherIIO);

• (t hierboven:doorlOPen van procedJre RekenUit raet de beginschatting van de betreffende 'verieerconstanten' RO of RSSO relevante uitvoer*)

(* hieronder:stopkriteriUl van while-stateraent. £lIs de 'varieerconstante'

• in huidige en vorige RekerlJit kleiner is dan een bepaelde wearde(in te

stel-len in proramedeel settings

*l

WHILE ABS(variabeleO-variabelel)waarde DO

If ScherIIO=l TIfN (twel of geen scherlluitlezingen.

te gebruiken £lIs deze module wordt gebruikt in

een ander rprogr8IIlI8*)

(Xhieronder wordt pleats van het pijltje berekend en het pijltje oP het

scherm getekend*)

IF (veriabeleO)-beginwaarde) AND (veriabele1>-beginwaarde) THEN

TekstxY(r,23,' , , Blmek);

r:::l +TRUNC( (beginwaarde+variabelel) *76. O/deeltmetor);

TekstXY(r,23,CHRI024) ,LtRed);

00 (* if tl;

00 IX if t)j

(thieronder:doorloPen vn RekenUit raet de volgende schatting van de 'veri-eerconstante'*)

RekerlJit(x. y, y1. veriabelel. n,c,R1, ResSSl. Kodel,laxy. stOP.optie,SchenlIO

I

j

IF (stOP:::1) Tt£N

waarde:=1000000.0i (tde while-ius wordt door dit stQPkriteriUl direkt

onderbrOken* )

ENO IX if Xl;

IF (optie::'l') OR (OPtie::'2') Tt£N RofRSSO::::Rl jRofRSSl :::ROj

ELSIF (OPtie:::' 3') OR (OPtie:::' 4') Tt£N RofRSSO: =ResSSO jRofRSS1: =ResSS1;

00 (X if 1);

(*hieronder: 815 onderstaande geldt dan is in geval van RSS de RSS van de

vorige stap kleiner dan van de huidige stap en wordt de staprichting

omge-keerd en tegelijk de stapgrootte gedeeld door ee in settings in te stellen

(33)

keren we OP onze schreden terug en gaan de andere kant uit*J If RofRSSHRofRSSO THEN stap:=stapl st8Pdeel; stap: =-stap; teller:=O; 00 (* if x); variabeleO:=variabelel; variabelel:=variabeleO+stapi ResSSO:=ResSSli RO:=R1; INC (tellerl; If teller=mllxstap THEN stOP:=1 ;waarde : =10000000. OJ END (i if xl;

END (* while il;

variabele:=variabeleOj (i=variabelel, lastst berekende wasrde*)

- (i ne de while-Ius nemen voor de berekende 'varieerconstante het gemiddelde

• van

lastste en voor IHtste i terlltieslag. tevens worden de uiteindelijke R en

RSS bepasld over de lineaire grefiek*j If (OPtie='2') OR (optie='4') TIfN

fOR i:=O TO IIIlXY DO

yHi

l:

=exp( y1[i] l;

END (* for *l;

00 (t if Xl;

R:=CorrCoeff(yl, Y,IIIlXY l;

ResSS:=RSS(y,yl,lIIlxyl; -END BerekenlOOPi

PROCEDURE

Ludwik(x,y:ARRAV Of REALjHaxrij:CARDINALj

YAR n,c,R,RSS,sigO :REALj ScherlIO,lIIlxstap:CAROlNALj waarde,stap,begin,stapdeel:REALj YAR stOP:CAROINALi

OPtie:CHAR) j

(*dWz 8ls ScherlIO=O dan geen pijltjesgedoe OP het scheri, weI als ScherlIO=l*) (*waarde=verschil voorSPanning, stap=eerste stappen, begin=beginwasrde voorsp

stapdeel=waarde waardoor stap !ROet worden gedeeld*) YAR beginwaarde,deelfactor:REAL; i : CARDINAL;

BEGIN

IF Scher,IO=l THEN If (OPtie='l') OR (optie='2') TlfN TekstxV(SO,2O,

'H'

,White) j

T ekstXV (1,20, 'Correlation coefficient : " Whi te) j ELSE TekstXV(SO,20,e4,White);

TekstXY(1,2O, 'Residual SUI squared : ' ,White);

END (* i1 il;

IF (OPtie='l') OR (OPtie='3') TlfN

TekstXY(1,21,'Searching the best fitting strain hardening exponent n' ,White); TekstXV(1, 22, '0

END (:I: if xl;

END (X if xl;

IF ((OPtie=' 1') OR (OJ)tie=' 3'

II

AND (stOP021 TlfN

deelfactor:=2.0j beginwaarde: =0. OJ

BerekenlOOP(begin.stap.wasrde,st8Pdeel,beginwaarde,deelfactor,

n,

x, y

,sigQ, c, RSS, R, 3, Scher,IO, IIIlxstap,J1axrij, stop, OPtie) i

-(x IF stOP=1 TlfN stOj):=2jENDj x)

• END (* if

il

j

1*

(*als bovenst88nde gfasld heeft in OPtie's 1 en 3 proberen we het nog OJ) dez onderstaande andere lanier,zie ook procedure BerekenLOOP en RekenUit (faslt meestal ook)~)

If (optie='2') OR (OPHe=' 4') OR (stop=2) THEN

(34)

.1)

TeI<stXY(1,21, 'Searching the best fitting pre stress sigj) ',White); TekstXY (1 , 22, '-1000 END (* if xl; stap:=looo.0*stapj wearde: =10. O*waarde j deelfactor:=1500.0j beginwaarde :=1000. OJ Berel<enloop(begin,stap,wearde,st8Pdeel,beginwaarde,deelfactor, sigj), x, y ,n,c, R$S,R,3, ScherIIO,lIaxstap, Maxrij, stOP,OPtie) j

END (t if xl;

(*buiten werking per 20-1-88 OIdat uitkoasten toch niet geed zijni) END Ludwikj

PROCEDURE KrupsSwift(x,y:ARRAY OF REALjVAR Maxrij:CAROINAL; VAR n,c,R,RSS,epsO:REALj SchermIO,lIaxstap:CARDINALj waarde,stap,begin,st8Pdeel:REALj VAR stOP:CARDINAL; OPtie:CHAR) ; • VAR beginwaarde,deelfactor:REALi i:CARDlNALi

(illlOdel llet voordefnatie*)

BEGIN

IF ScherIIO=l THEN

IF (OPtie=' 1') OR (optie='2') THEN TekstXY(50,20,' [-]' ,White);

TeI<stXV(1,2O, 'Correlation coefficient: ' ,White) i

ELSE TekstXV(1,2O,'Residual stili squared : ' ,White); TeI<stXV(5O, 20, e4,White);

• END (X if il;

TeI<stXY(t,21, 'Searching for the best fitting pre strain epsO ' ,White);

TekstXY(l,22,'-l 0 1 2 END (i if *l; deelfactor::4.0j • beginwaarde:=1.0; 8erekenlOOP(begin,stap,waarde,stapdeel,beglnwaarde,deelfactor, epsO,x,y,n,c,RSS,R,2,SchermIO,lIaxstap,Maxrij,stOP,OPtie); • END Krups5wift;

PROCEDURE

Hollomon(x,y:ARRAV

OF

REAl;Maxrij:CARDlNAL;

VAR n,c,R,RSS,sigj) :REALj SchermIO,lIaxstap:CARDlNAL; wearde,stap,begin,st8Pdeel:REALj VAR stOP:CARDlNAL;

OPtie:CHAR}i

(*dwz als ScherIIO=O dan geen pijltjesgedoe OP het scherm, weI als SchermIO:1*) -("waar<!e=verschil YOorSP8lVling, stap=eerste stappen, begin=beginwaarde voorsp • st8Pdeel=wearde waardoor stap IIOet worden gedeeW)

VAR beginwaarde,deelfactor,dummyvar:REALj i:CARDlNAL;

yn:ARRAV[O .. l00]

OF

REAl;

BEGIN

IF ScherIIO=l THEN

IF (OPtie=' 1') OR (OPtie=' 2') THEN

TekstXY(5O,2O, ,

H'

,White);

TeI<stXY(1,2O, 'Correlation coefficient: ',White); ELSE T el<stXY (50,20, e4, lIli te) ;

TeI<stXY(l,2O, 'Residual SUI squared : ',White); END (* if

xl

j

IF (optie='l') OR (optie='3'1 THEN

TekstXV(1,21,'Searching for the best fitting strain hardening exponent' ,White); TekstXV(1,22, '0

END (* i1 *l;

END

It

if II;

IF (OPtie='l') OR (optie='3') THEN deelfactor:=2.0;

beginwaarde:=O.Oj

BerekenlOOP(begin, stap, wearde, st8Pdeel, beginwaarde, deel factor, n, X, Y ,sigj),c,R$S,R, 1,SchermIO,lIaxstap,Maxrij,stOP,OPtie) j

500' ,White) j

3' ,White);

Referenties

GERELATEERDE DOCUMENTEN

RSTTUVWXVYZVX[W\W]^VT_XV`ZVaZ]VbWZ]V\ZY]Vc[VYW]VUTb]cc\dVeZbV`ZVbWZ]

[r]

[r]

[r]

[r]

Sommen, producten en quoti¨ enten van continue afbeeldingen zijn

Overziet men het geleverde betoog, dan moet allereerst her- haald worden, dat bevorderen van het sparen door brede lagen van de bevolking, gepaard zal moeten

◦ Principal subjects &lt;List of the major subjects&gt;. ◦ Minor subjects &lt;List of