-
Notifications
You must be signed in to change notification settings - Fork 1
/
BUGGLBLS.PAS
805 lines (675 loc) · 24.8 KB
/
BUGGLBLS.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
{ BUGglbls.pas }
{ PMS 19-April-1988 18:34 }
{ ************* COPYRIGHT (C) Materials Group, **************
************* Cambridge University Engineering **************
************* Department, Cambridge, UK. **************
************* M.F.Ashby and P.M.Sargent **************
************* April 1988 **************
}
{$R-} {Range checking off}
{$B+} {Boolean complete evaluation on}
{$S+} {Stack checking on}
{$I+} {I/O checking on}
Unit BUGglbls;
Interface
Uses
Crt,
Dos,
Printer,
Graph;
CONST
copyright = '(C) Copyright 1988 M.F.Ashby & P.M.Sargent';
boltz = 1.380662e-23;
R = 8.314408694;
pi = 3.141592654;
Ln10 = 2.302585093;
stringlength = 10;
numberofparameters = 17;
numberofvariables = 17;
numberofmechanisms = 4;
desclength = 28;
unitlength = 10;
pathlength = 30;
avogadro = 6.02e23;
lbllength = 16;
Gamcrit = 0.9;
datalabellength = 60;
maxcontournumber = 10;
Esc = #27;
TLC = #218;
TRC = #191;
BLC = #192;
BRC = #217;
MLC = #195;
MRC = #180;
C_text = yellow;
C_screen = blue;
C_back = black;
C_bright = white;
C_warn = red;
Horiz = #196;
Vert = #179;
{$IFOPT N-}
Version = 'DFM1s ';
SpeedValue = 3.28e-4;
{$ELSE}
Version = 'DFM1 ';
SpeedValue = 2.0e-4;
{$ENDIF}
TYPE
{$IFOPT N-}
a_real = real;
{$ELSE}
a_real = double;
{$ENDIF}
filestring = string[pathlength];
parrange = 1..numberofparameters;
vblrange = 1..numberofvariables;
stringarray = string[stringlength];
descstring = array[1..desclength] of char;
unitstring = array[1..unitlength] of char;
lblstring = array[1..lbllength] of char;
chararray = array[1..12] of char;
datastring = string[datalabellength];
timer_string = string[11];
pararray = array[parrange] of a_real;
vblarray = array[vblrange] of a_real;
ratearray = array[0..numberofmechanisms] of a_real;
coordinatearray = array[0..numberofmechanisms] of a_real;
contourarray = array[0..maxcontournumber] of a_real;
VAR
I : integer;
K : integer;
coord1 : integer;
xoffset : integer;
xlength : integer;
index : integer;
pointnumber : integer;
contournumber : integer;
J : integer;
steps : integer;
coord2 : integer;
yoffset : integer;
ylength : integer;
linenumber : integer;
numberofpoints : integer;
maptype : integer;
flag : integer;
OldExitProc : Pointer; { Saves exit procedure address }
modenamed : BOOLEAN;
modefast : BOOLEAN;
modedemo : BOOLEAN;
modeppic : BOOLEAN;
modephpg : BOOLEAN;
modetpic : BOOLEAN;
modethpg : BOOLEAN;
modestrs : BOOLEAN;
modetemp : BOOLEAN;
modelist : BOOLEAN;
modelistfile : BOOLEAN;
modeconcern : BOOLEAN;
mode400 : BOOLEAN;
modemono : BOOLEAN;
tmelt : a_real;
tobst : a_real;
shmod : a_real;
shtmp : a_real;
tprls : a_real;
del_f : a_real;
atvol : a_real;
dovol : a_real;
dlbdy : a_real;
qvolm : a_real;
qbdry : a_real;
acdoc : a_real;
qcore : a_real;
n_crp : a_real;
S_crp : a_real;
q_crp : a_real;
burgv : a_real;
Gsize : a_real;
Sfixed : a_real;
SNlast : a_real;
SNfirst : a_real;
TNfirst : a_real;
TNlast : a_real;
cntrfirst : a_real;
cntrfactor : a_real;
TN : a_real;
LgSN : a_real;
L1, L2 : a_real;
P : a_real;
DI : a_real;
P_force2 : a_real;
S_force2 : a_real;
SNeff : a_real;
SN_T : a_real;
SN_crp : a_real;
choice : char;
hrdcopy : char;
answer : char;
d : descstring;
title : stringarray;
vbl : vblarray;
filename : filestring;
parfilename : filestring;
listfilename : filestring;
ppicfilename : filestring;
tpicfilename : filestring;
vblfilename : filestring;
time_string : timer_string;
date_string : timer_string;
sumofI, sumofJ : coordinatearray;
u : unitstring;
par : pararray;
vblnumber : vblrange;
contour : contourarray;
datalabel : datastring;
datafilename : filestring;
phpgfilename : filestring;
thpgfilename : filestring;
parnumber : parrange;
pointcount : coordinatearray;
db : TEXT; { debug file }
PROCEDURE MyExitProc;
{ Provides a procedure which intercepts the system exit for unplanned exit }
PROCEDURE Finish(h: Byte);
{ A simple alternative to Halt which bypasses MyExitProc }
FUNCTION FileNotThere(name: String): BOOLEAN;
FUNCTION CannotOpen(name: String): BOOLEAN;
PROCEDURE DATE_AND_TIME;
PROCEDURE CLEAN_WINDOW;
Procedure LIST_DIRECTORY(directory_name:chararray);
{ This lists the directory defined by directory_name }
PROCEDURE GiveCommandLineHelp;
PROCEDURE HELP_1;
{ --- provides HELP at level 1 --- }
PROCEDURE HELP_2;
PROCEDURE HELP_3;
PROCEDURE INTRODUCTION;
PROCEDURE LABELS_FOR_DATA;
{ Sets up character strings with names of variables and their units }
PROCEDURE LABELS_FOR_VARIABLES;
{ Sets up character strings with names of variables and their units }
PROCEDURE LIST_PARAMETERS;
{ -------- Prints out the material parameters as a table -------- }
PROCEDURE LIST_VARIABLES;
{ -------- Prints out the material variables as a table -------- }
{===========================================================================}
Implementation
{$F+}
{---------------------------------------------------------------------------}
PROCEDURE Finish(h: Byte);
{ This should only be called when the system is in text mode, and
never when it is in graphics mode since it does not close down
the graphics properly. }
BEGIN
ExitProc := OldExitProc; { Restore exit PROCEDURE address }
Halt(h);
END; { Finish }
{---------------------------------------------------------------------------}
PROCEDURE MyExitProc;
BEGIN
ExitProc := OldExitProc; { Restore exit PROCEDURE address }
CloseGraph; { Shut down the graphics system }
DirectVideo := True;
textmode(LastMode);
Textbackground(black);
Textcolor(white);
END; { MyExitProc }
{$F-}
{-------------------------------------------------------------------}
FUNCTION FileNotThere(name: String): BOOLEAN;
{ See Turbo 4.0 Manual pp464-465 }
VAR
f : FILE;
BEGIN
{$I-}
Assign(f,name);
Reset(f);
Close(f);
{$I+}
FileNotThere:= NOT ((IOResult=0) AND (name <> ''));
END;
{-------------------------------------------------------------------}
FUNCTION CannotOpen(name: String):BOOLEAN;
VAR
f : TEXT;
BEGIN
{$I-}
Assign(f,name);
Rewrite(f);
writeln(f,'...Attempting to open file:"',name,'"');
Close(f);
{$I+}
CannotOpen:= NOT ((IOResult=0) AND (name <> ''));
END;
{-------------------------------------------------------------------}
PROCEDURE DATE_AND_TIME;
var
regs : Registers;
hour,min,sec,frac : integer;
year,month,day : integer;
hour_st,min_st,sec_st,frac_st : timer_string;
year_st,month_st,day_st : timer_string;
BEGIN
with regs do
BEGIN
AX := $2C00; {2C sets current time settings in registers CX and DX}
MsDos(regs);
hour := hi(CX); {CX and DX are two-byte registers:}
min := lo(CX);
sec := hi(DX); {CX is bytes CH (15-8) and CL (7-0),}
frac := lo(DX); {DX is bytes DH (15-8) and DL (7-0).}
AX := $2A00; {2A sets current date settings in registers CX and DX}
MsDos(regs);
year := CX; {MsDos(---) is a standard turbo PROCEDURE}
month := hi(DX);
day := lo(DX);
END;
{Convert time and date integer values into strings, and write them}
Str(hour,hour_st); Str(min,min_st); Str(sec,sec_st); Str(frac,frac_st);
time_string := hour_st+':'+min_st+' ';
Str(year,year_st); Str(month,month_st); Str(day,day_st);
date_string := day_st+'-'+month_st+'-'+year_st;
END; {DATE_AND_TIME. }
{-------------------------------------------------------------------}
PROCEDURE CLEAN_WINDOW;
VAR
i : Word;
BEGIN
window(1,1,80,25); textbackground(C_screen); clrscr;
window(10,4,70,22); textbackground(C_back); clrscr;
window(10,1,70,25);
textbackground(C_back);
gotoXY(1,2);
write (' ');
gotoXY(1,24);
write (' ');
IF modemono THEN
BEGIN
textbackground(C_screen);
window(1,1,80,25);
FOR i:=2 TO 24 DO
BEGIN
gotoXY(9,i);
write(Vert);
gotoXY(71,i);
write(Vert);
END;
gotoXY(9,3);
write(MLC);
gotoXY(71,3);
write(MRC);
gotoXY(9,23);
write(MLC);
gotoXY(71,23);
write(MRC);
gotoXY(9,1);
write(TLC);
gotoXY(71,1);
write(TRC);
gotoXY(9,25);
write(BLC);
gotoXY(71,25);
write(BRC);
gotoXY(10,3);
FOR i:=10 TO 70 DO write(Horiz);
gotoXY(10,23);
FOR i:=10 TO 70 DO write(Horiz);
gotoXY(10,1);
FOR i:=10 TO 70 DO write(Horiz);
gotoXY(10,25);
FOR i:=10 TO 70 DO write(Horiz);
END;
window(10,1,70,25);
textcolor(C_text);
textbackground(C_back);
END; {CLEAN_WINDOW. }
{-------------------------------------------------------------------}
PROCEDURE CLEAN_WINDOW_TOP;
BEGIN
CLEAN_WINDOW;
window(1,24,80,25); textbackground(C_screen); clrscr;
window(1,1,80,25);
textcolor(C_text);
gotoXY(9,23);
write(BLC);
gotoXY(71,23);
write(BRC);
window(10,1,70,25);
textcolor(C_text);
textbackground(C_back);
END; { CLEAN_WINDOW_TOP }
{-------------------------------------------------------------------}
PROCEDURE LIST_DIRECTORY(directory_name:chararray);
{ This lists the directory defined by directory_name }
type
String20 = string[20];
var
Regs : Registers;
DTA : array [ 1..43 ] of Byte;
Mask : chararray;
NamR : String20;
Error, I : Integer;
BEGIN { main body of PROCEDURE LIST_DIRECTORY }
FillChar(DTA,SizeOf(DTA),0); { Initialize the DTA buffer }
FillChar(NamR,SizeOf(NamR),0); { Initialize the file name }
FillChar(Mask,SizeOf(Mask),0); { Initialize the mask }
CLEAN_WINDOW;
gotoXY(1,2);
WriteLn(' THE DIRECTORY CURRENTLY CONTAINS: ');
gotoXY(1,6);
Regs.AX := $1A00; { Function used to set the DTA }
Regs.DS := Seg(DTA); { store the parameter segment in DS }
Regs.DX := Ofs(DTA); { " " " offset in DX }
MSDos(Regs); { Set DTA location }
Error := 0;
Mask := directory_name; { Search directory required }
Regs.AX := $4E00; { Get first directory entry }
Regs.DS := Seg(Mask); { Point to the file Mask }
Regs.DX := Ofs(Mask);
Regs.CX := 22; { Store the option }
MSDos(Regs); { Execute MSDos call }
Error := Regs.AX and $FF; { Get Error return }
I := 1; { initialize 'I' to the first element }
if (Error = 0) then
repeat
NamR[I] := Chr(Mem[Seg(DTA):Ofs(DTA)+29+I]);
I := I + 1;
until not (NamR[I-1] in [' '..'~']) or (I>20);
NamR[0] := Chr(I-1); { set string length because assigning }
delete(NamR,pos('.',NamR),4); { by element does not set length }
write(NamR:20);
while (Error = 0) do BEGIN
Error := 0;
Regs.AX := $4F00; { Function used to get the next }
{ directory entry }
Regs.CX := 22; { Set the file option }
MSDos(Regs); { Call MSDos }
Error := Regs.AX and $FF; { get the Error return }
I := 1;
repeat
NamR[I] := Chr(Mem[Seg(DTA):Ofs(DTA)+29+I]);
I := I + 1;
until not (NamR[I-1] in [' '..'~'] ) or (I > 20);
NamR[0] := Chr(I-1);
if (Error = 0) then BEGIN
delete(NamR,pos('.',NamR),4);
Write(NamR:20);
END;
END;
END; { LIST_DIRECTORY. }
{---------------------------------------------------------------------------}
PROCEDURE GiveCommandLineHelp;
BEGIN
WRITELN('usage: ',version,' <path><dataname> <options>');
{ WRITELN('e.g. ',version,' \source\copper /f /w:\op\copper.lst /s- /tl:cut.pic');
}
WRITELN('e.g. ',version,' \source\copper /f /w:\op\copper.lst /s-');
WRITELN;
WRITELN('/h help and information only');
WRITELN('/f fast option, no interaction with user');
{ WRITELN('/d demonstration; as /f but waits 10s between plots');
}
WRITELN('/e display exit codes only');
WRITELN('/s options for stress map:');
{ WRITELN(' (<fn> denotes full path & filename):');
WRITELN('/sl:<fn> produce Lotus PIC files of the stress map plot');
WRITELN('/sg:<fn> produce HPGL Hewlett-Packard Graphics Language plot');
}
WRITELN(' /s+ produce a stress map (default)');
WRITELN(' /s- do not produce a stress map at all');
WRITELN('/t options for temperature map (as for /s)');
WRITELN('/w produce a listing to the printer');
WRITELN('/w:<fn> sends the listing to a file instead of the printer');
WRITELN(' (<fn> denotes full path & filename)');
WRITELN;
{ WRITELN('In case of conflict between options,');
WRITELN('e.g. "/s- /sg:cuplot.hpg",');
WRITELN('the default is for action rather than inaction,');
WRITELN('so /s- would be ignored.');
}
END; { GiveCommandLineHelp }
{-------------------------------------------------------------------}
PROCEDURE HELP_1;
VAR
ch : CHAR;
{ --- provides HELP at level 1 --- }
BEGIN
DATE_AND_TIME;
CLEAN_WINDOW;
LowVideo;
gotoXY(1,2);
writeln(' HELP SCREEN 1:1 ');
gotoXY(1,6);
writeln(' M E C H A N I S M M A P S : ',version,' ');
writeln(' P. M. Sargent, ',date_string,' ');
writeln(' ============================================= ');
writeln;
writeln(' This program computes Deformation Mechanism maps from ');
writeln(' the simplified equations given in ref. [1]. ');
writeln(' Three classes of mechanism contribute to the total ');
writeln(' strain: plastic yielding, power-law creep, and diffusion. ');
writeln(' The program uses rate equations for each mechanism, ');
writeln(' adding the rates when appropriate. ');
writeln(' The results are presented as Stress / Temperature maps, or');
writeln(' as Strain-Rate / Stress maps. ');
writeln(' ');
writeln(' [1] H.J.Frost & M.F.Ashby, "Deformation Mechanism Maps", ');
writeln(' Pergamon Press, Oxford, UK. (1983). ');
gotoXY(1,24); textcolor(C_bright);
write (' PRESS ANY KEY TO CONTINUE ');
NormVideo;
repeat until keypressed;
Ch:=ReadKey;
If Ch=Esc THEN Finish(0);
textcolor(C_text);
CLEAN_WINDOW;
LowVideo;
gotoXY(1,2);
writeln(' HELP SCREEN 1:2 ');
gotoXY(1,7);
writeln(' You start by creating a Parameter (.p ) file and a ');
writeln(' Data (.v ) file for the chosen material, or by Reading ');
writeln(' one from disk if the files already exist. The data are ');
writeln(' automatically checked and suspicious values are flagged. ');
writeln(' The last parameter in the set is the number of program ');
writeln(' steps. Choose 15 for a quick look, 100 for a really ');
writeln(' accurate map (it may take some time). ');
writeln(' ');
writeln(' Remember: load GRAPHICS before loading ',Version,' if ');
writeln(' you want to dump the plot to the line-printer. ');
writeln(' ');
writeln(' You can get a hard copy of this by pressing (CAPS) and ');
writeln(' (PRTSC) at the same time. ');
writeln(' ');
gotoXY(1,24); textcolor(C_bright);
write (' PRESS ANY KEY TO CONTINUE ');
NormVideo;
repeat until keypressed;
Ch:=ReadKey;
If Ch=Esc THEN Finish(0);
textcolor(C_text);
END; { HELP_1. }
{-------------------------------------------------------------------}
PROCEDURE HELP_2;
VAR
ch : CHAR;
BEGIN
CLEAN_WINDOW;
LowVideo;
gotoXY(1,2);
writeln(' HELP SCREEN 2 ');
gotoXY(1,5);
write(' CREATING AND READING A FILES. ');
write(' ============================= ');
write(' ');
write(' To be legal, a file name must have one through eight ');
write(' characters (either letters of the alphabet or numbers ');
write(' 0 through 9), and the special characters % - () $ & # !. ');
write(' Thus ');
write(' ');
write(' COPPER MARBLE-5 TUNGSTEN and PMMA#1 ');
write(' ');
write(' are all legal names. Do not add an extension: the ');
write(' automatically adds .p to parameter files, and .v ');
write(' to data files. You can find out which files already ');
write(' exist by typing DIR *.p in DOS, or alt-F D followed ');
write(' by *.p in Turbo4. Be careful when entering a file name ');
write(' to be Read, a file name which does not exist will not be ');
write(' accepted. ');
gotoXY(1,24); textcolor(C_bright);
write (' PRESS ANY KEY TO CONTINUE ');
NormVideo;
repeat until keypressed;
Ch:=ReadKey;
If Ch=Esc THEN Finish(0);
textcolor(C_text);
textbackground(C_screen); gotoXY(1,24);
write(' ');
END; {HELP_2. }
{-------------------------------------------------------------------}
PROCEDURE HELP_3;
VAR
ch : CHAR;
BEGIN
CLEAN_WINDOW;
LowVideo;
gotoXY(1,2);
writeln(' HELP SCREEN 3 ');
gotoXY(1,5);
write(' Command Line Options ');
write(' ==================== ');
write(' ');
GiveCommandLineHelp;
gotoXY(1,24); textcolor(C_bright);
write (' PRESS ANY KEY TO CONTINUE ');
NormVideo;
repeat until keypressed;
Ch:=ReadKey;
If Ch=Esc THEN Finish(0);
textcolor(C_text);
textbackground(C_screen); gotoXY(1,24);
write(' ');
END; {HELP_3. }
{-------------------------------------------------------------------}
PROCEDURE INTRODUCTION;
BEGIN
CLEAN_WINDOW; DATE_AND_TIME;
gotoXY(1,2);
writeln(' ',version,' ',
date_string,' ');
gotoXY(1,6);
writeln(' ============================================== ');
writeln(' M E C H A N I S M M A P S : ',version,' ');
writeln(' P. M. Sargent, Cambridge University ');
writeln(' ============================================== ');
writeln; writeln;
LowVideo;
writeln(' This program calculates and plots Deformation Mechanism ');
writeln(' Maps. Details of the equations and of the models on ');
writeln(' which they are based are given in: ');
writeln(' ');
writeln(' 1. H.J.Frost & M.F.Ashby, "Deformation Mechanism Maps", ');
writeln(' Pergamon Press, Oxford, UK. (1983). ');
writeln(' ');
writeln(' ');
writeln(' ');
writeln(' Press H for help, including some useful hints ');
gotoXY(1,24); textcolor(C_bright);
write (' PRESS ANY KEY TO CONTINUE ');
NormVideo;
answer:=Readkey; gotoXY(1,22);
textcolor(C_text);
if answer in ['h','H'] then HELP_1;
if answer = Esc then Finish(0);
END; {INTRODUCTION. }
{-------------------------------------------------------------------}
PROCEDURE LABELS_FOR_DATA;
{ Sets up character strings with names of variables and their units }
BEGIN
case parnumber of
1 : BEGIN d:='Melting Point '; u:='K 'END;
2 : BEGIN d:='0K Flow Stress (obstacles) '; u:=' 'END;
3 : BEGIN d:='Shear Modulus '; u:='GPa 'END;
4 : BEGIN d:='T-dependence of Modulus '; u:=' 'END;
5 : BEGIN d:='0K Flow Stress (lattice) '; u:=' 'END;
6 : BEGIN d:='Lattice Glide Actv. Energy '; u:=' 'END;
7 : BEGIN d:='Atomic Volume '; u:='m^3 'END;
8 : BEGIN d:='Pre-exp. Volume Diffusion '; u:='m^2/s 'END;
9 : BEGIN d:='Activ. energy, Vol. Diff. '; u:='kJ/mol 'END;
10 : BEGIN d:='Pre-exp. Bdry Diffusion '; u:='m^3/s 'END;
11 : BEGIN d:='Activ. energy, Bdry. Diff. '; u:='kJ/mol 'END;
12 : BEGIN d:='Pre-exp. Core Diffusion '; u:='m^4/s 'END;
13 : BEGIN d:='Activ. energy, Core Diff. '; u:='kJ/mol 'END;
14 : BEGIN d:='Power Law Creep Exponent '; u:=' 'END;
15 : BEGIN d:='Reference stress, P-L creep '; u:='MPa 'END;
16 : BEGIN d:='Activ. energy for P-L creep '; u:='kJ/mol 'END;
17 : BEGIN d:='Burgers vector '; u:='m 'END;
END;
END; {LABELS_FOR_DATA; }
{-------------------------------------------------------------------}
PROCEDURE LABELS_FOR_VARIABLES;
{ Sets up character strings with names of variables and their units }
BEGIN
case vblnumber of
1 : BEGIN d:='IMC number '; u:=' 'END;
2 : BEGIN d:=' <...unused...> '; u:=' 'END;
3 : BEGIN d:=' <...unused...> '; u:=' 'END;
4 : BEGIN d:=' <...unused...> '; u:=' 'END;
5 : BEGIN d:='Grain size '; u:='m 'END;
6 : BEGIN d:=' <...unused...> '; u:=' 'END;
7 : BEGIN d:=' <...unused...> '; u:=' 'END;
8 : BEGIN d:='Fixed Stress '; u:='MPa 'END;
9 : BEGIN d:='Lower limit, S/SY axis '; u:=' 'END;
10 : BEGIN d:='Upper limit, S/SY axis '; u:=' 'END;
11 : BEGIN d:=' <...unused...> '; u:=' 'END;
12 : BEGIN d:='Lower limit, T/TM axis '; u:=' 'END;
13 : BEGIN d:='Upper limit, T/TM axis '; u:=' 'END;
14 : BEGIN d:='First strain-rate contour '; u:='1/s 'END;
15 : BEGIN d:='Multiplier: strain rates '; u:=' 'END;
16 : BEGIN d:='Number strain-rate contours '; u:=' 'END;
17 : BEGIN d:='Number of Program Steps '; u:=' 'END;
END;
END; {LABELS_FOR_VARIABLES; }
{-------------------------------------------------------------------}
PROCEDURE LIST_PARAMETERS;
{ -------- Prints out the material parameters as a table -------- }
BEGIN
CLEAN_WINDOW;
DATE_AND_TIME;
gotoXY(1,2);
textbackground(C_back);
write(' ');
gotoXY(1,2);
writeln(' ',Version,' INPUT PARAMETERS FOR ',filename,' ',
Date_string);
gotoXY(1,5);
for parnumber := 1 to numberofparameters do BEGIN
LABELS_FOR_DATA;
write (' ',parnumber:3,' ', d, u,' =');
writeln( par[parnumber]:12);
END;
END; {LIST_PARAMETERS. }
{-------------------------------------------------------------------}
PROCEDURE LIST_VARIABLES;
{ -------- Prints out the material variables as a table -------- }
BEGIN
CLEAN_WINDOW;
DATE_AND_TIME;
gotoXY(1,2);
textbackground(C_back);
write(' ');
gotoXY(1,2);
writeln(' ',Version,' INPUT VARIABLES FOR ',filename,' ',
Date_string);
gotoXY(1,5);
for vblnumber := 1 to numberofvariables do BEGIN
LABELS_FOR_VARIABLES;
write (' ',vblnumber:3,' ', d, u,' =');
writeln( vbl[vblnumber]:12);
END;
END; {LIST_VARIABLES. }
{-------------------------------------------------------------------}
End. { Unit BUGGlbls }