1function [simDoc, section] = saveEnablingConditions(self, simDoc, section, ind)
2% SAVEENABLINGCONDITIONS Writes only relevant enabling vectors to XML.
4% Copyright (c) 2012-2026, Imperial College London
7enablingNode = simDoc.createElement(
'parameter');
8enablingNode.setAttribute(
'array',
'true');
9enablingNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
10enablingNode.setAttribute(
'name',
'enablingConditions');
13numOfNodes = sn.nnodes;
14numOfClasses = sn.nclasses;
15numOfModes = sn.nodeparam{ind}.nmodes;
18 subEnablingConditionNode = simDoc.createElement(
'subParameter');
19 subEnablingConditionNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
20 subEnablingConditionNode.setAttribute(
'name',
'enablingCondition');
22 subEnablingVectorsNode = simDoc.createElement(
'subParameter');
23 subEnablingVectorsNode.setAttribute(
'array',
'true');
24 subEnablingVectorsNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
25 subEnablingVectorsNode.setAttribute(
'name',
'enablingVectors');
28 hasRelevantEntry =
false;
30 % Check
if there
is any relevant enabling entry
for this node
31 for r = 1:numOfClasses
32 en_val = sn.nodeparam{ind}.enabling{m}(k, r);
33 in_val = sn.nodeparam{ind}.inhibiting{m}(k, r);
34 if (isfinite(en_val) && en_val > 0) || (isfinite(in_val) && in_val > 0)
35 hasRelevantEntry =
true;
41 subEnablingVectorNode = simDoc.createElement(
'subParameter');
42 subEnablingVectorNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
43 subEnablingVectorNode.setAttribute(
'name',
'enablingVector');
45 subStationNameNode = simDoc.createElement(
'subParameter');
46 subStationNameNode.setAttribute(
'classPath',
'java.lang.String');
47 subStationNameNode.setAttribute(
'name',
'stationName');
49 placeNameValueNode = simDoc.createElement(
'value');
50 placeNameValueNode.appendChild(simDoc.createTextNode(sn.nodenames{k}));
51 subStationNameNode.appendChild(placeNameValueNode);
52 subEnablingVectorNode.appendChild(subStationNameNode);
54 subEnablingEntriesNode = simDoc.createElement(
'subParameter');
55 subEnablingEntriesNode.setAttribute(
'array',
'true');
56 subEnablingEntriesNode.setAttribute(
'classPath',
'java.lang.Integer');
57 subEnablingEntriesNode.setAttribute(
'name',
'enablingEntries');
59 for r = 1:numOfClasses
60 refClassNode = simDoc.createElement(
'refClass');
61 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{r}));
62 subEnablingEntriesNode.appendChild(refClassNode);
64 subParameterNode = simDoc.createElement(
'subParameter');
65 subParameterNode.setAttribute(
'classPath',
'java.lang.Integer');
66 subParameterNode.setAttribute(
'name',
'enablingEntry');
68 valueNode = simDoc.createElement(
'value');
69 en_val = sn.nodeparam{ind}.enabling{m}(k, r);
71 valueNode.appendChild(simDoc.createTextNode(
'-1'));
73 valueNode.appendChild(simDoc.createTextNode(int2str(en_val)));
76 subParameterNode.appendChild(valueNode);
77 subEnablingEntriesNode.appendChild(subParameterNode);
80 subEnablingVectorNode.appendChild(subEnablingEntriesNode);
81 subEnablingVectorsNode.appendChild(subEnablingVectorNode);
85 subEnablingConditionNode.appendChild(subEnablingVectorsNode);
86 enablingNode.appendChild(subEnablingConditionNode);
89section.appendChild(enablingNode);