-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathset.js
More file actions
223 lines (223 loc) · 6.88 KB
/
Copy pathset.js
File metadata and controls
223 lines (223 loc) · 6.88 KB
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
"use strict";
/**
* SET command - user input to internal variables and program control see CHANGE
* command for input of changes to problem variables
*/
function set(split_line) {
var commands = [
{ name: 'IOOPT', destination: function() {
set_ioopt();
}},
{ name: 'MAXIT', destination: function() {
set_maxit();
}},
{ name: 'SEARCH', destination: function() {
set_search();
}},
{ name: 'EQNSET', destination: function() {
set_eqnset();
}},
{ name: 'FIX_WT', destination: function() {
set_fix_wt();
}},
{ name: 'CON_WT', destination: function() {
set_con_wt();
}},
{ name: 'ZERO_WT', destination: function() {
set_zero_wt();
}},
{ name: 'VIOL_WT', destination: function() {
set_viol_wt();
}},
{ name: 'MFN_WT', destination: function() {
set_mfn_wt();
}},
{ name: 'OBJMIN', destination: function() {
set_objmin();
}},
{ name: 'DEL', destination: function() {
set_del(false, false);
}},
{ name: 'DELMIN', destination: function() {
set_delmin();
}},
{ name: 'LABEL', destination: function() {
set_label();
}},
// { name: 'SCREEN', destination: function() {
// set_screen();
// }},
{ name: 'CLASS', destination: function() {
set_class();
}}
];
/*
* Permit change of various internal variables by the user. Replaces
* function lost by absence of GET DATA in DRI PL/I
*
* Assume OP is POPped by main routine
*/
function display_help() {
console.log('ENTER:');
console.log(' INTERNAL VARIABLE NAME NEW VALUE');
console.log();
if (IOOPT > 2) {
console.log('INTERNAL VARIABLES AVAILABLE FOR CHANGE ARE: ');
var i = 0;
var string = ' ';
for (let command of commands) {
i++;
if (string != ' ')
string += ', ';
string += command.name;
if (i % 7 == 0) {
string += ", ";
console.log(string);
i = 0;
string = ' ';
}
}
if (string != ' ') {
console.log(string);
}
}
console.log(' :');
}
console.log('SET ...');
var subcommand = split_line.shift();
if (subcommand == undefined) {
display_help();
return;
}
var value = split_line.shift();
if (value !== undefined) {
var gotName = value;
if (value.match(/^[-+]?[0-9]*\.?[0-9]*$/) !== null) {
var gotNum = value;
var gotFloat = parseFloat(value);
}
}
else{
console.log('PLEASE SUPPLY BOTH NAME AND VALUE.');
console.log();
display_help();
return;
}
for (let command of commands) {
if (command.name.startsWith(subcommand)) {
command.destination();
return;
}
}
console.log(subcommand + ' ? ?');
display_help();
// Falls through to end
function set_ioopt() {
IOOPT = gotNum;
console.log('IOOPT has been set to:', IOOPT);
}
function set_maxit() {
MAXIT = gotNum;
console.log('MAXIT has been set to: ', MAXIT);
}
function set_search() {
if (gotNum < 1) gotNum = 1;
WEAPON = gotNum;
console.log('SEARCH - WEAPON has been set to:', WEAPON);
}
function set_eqnset() {
if (gotNum < 1) gotNum = 1;
NMERIT = gotNum;
console.log('EQNSET - NMERIT has been set to:', NMERIT);
}
function set_fix_wt() {
FIX_WT = gotFloat;
console.log('FIX_WT has been set to', FIX_WT);
}
function set_con_wt() {
CON_WT = gotFloat;
console.log('CON_WT has been set to', CON_WT);
}
function set_zero_wt() {
ZERO_WT = gotFloat;
console.log('ZERO_WT has been set to', ZERO_WT);
}
function set_viol_wt() {
VIOL_WT = gotFloat;
console.log('VIOL_WT has been set to', VIOL_WT);
}
function set_mfn_wt() {
MFN_WT = gotFloat;
console.log('MFN_WT has been set to', MFN_WT);
}
function set_objmin() {
OBJMIN = gotFloat;
console.log('OBJMIN has been set to', OBJMIN);
}
function set_del() {
DEL = gotFloat;
console.log('DEL has been set to', DEL);
}
function set_delmin() {
DELMIN = gotFloat;
console.log('DELMIN has been set to', DELMIN);
}
/* label */
function set_label() {
var found = false;
for (let label of design.labels) {
if (label.name.startsWith(gotName)) {
var gotText = split_line.join(" ");
if (gotText.length != 0) {
found = true;
label.value = gotText;
console.log('LABEL ' + label.name + ' HAS BEEN SET TO "' + gotText + '"');
break;
}
}
}
if (!found) {
console.log('PLEASE SUPPLY BOTH LABEL NAME AND VALUE.');
}
}
/* screen */
function set_screen() {
console.log('SCREEN will not be implemented.');
}
/* class */
function set_class() {
var classVal = split_line.shift();
if (classVal !== undefined) {
if (classVal.match(/^[-+]?[0-9]*\.?[0-9]*$/) !== null) {
found = false;
for (let i = 0; !found && i < design.design_parameters.length; i++) {
var dp = design.design_parameters[i];
if (dp.name.startsWith(gotName)) {
var found = true;
var gotFloat = parseFloat(classVal);
dp.ioclass = gotFloat;
console.log(dp.name + ' IOCLASS HAS BEEN SET TO ' + dp.ioclass);
}
}
for (let i = 0; !found && i < design.state_variables.length; i++) {
var sv = design.state_variables[i];
if (sv.name.startsWith(gotName)) {
found = true;
var gotFloat = parseFloat(classVal);
dp.ioclass = gotFloat;
console.log(sv.name + ' IOCLASS HAS BEEN SET TO ' + sv.ioclass);
}
}
}
else {
console.log('PLEASE SUPPLY NUMERIC VALUE FOR IO CLASS OF:', gotName);
return;
}
}
else{
console.log('PLEASE SUPPLY BOTH IO CLASS NAME AND VALUE.');
return;
}
}
}
module.exports = set;