1function [simDoc, section] = saveFiringOutcomes(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEFIRINGOUTCOMES(SIMDOC, SECTION, NODEIDX)
4% Copyright (c) 2012-2026, Imperial College London
7firingOutcomesNode = simDoc.createElement(
'parameter');
8firingOutcomesNode.setAttribute(
'array',
'true');
9firingOutcomesNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
10firingOutcomesNode.setAttribute(
'name',
'firingOutcomes');
13outputs = [find(sn.connmatrix(ind,:))];
14connections = {sn.nodenames{outputs}};
15numOfOutput = length(connections);
17numOfModes = sn.nodeparam{ind}.nmodes;
18numOfClasses = length(self.model.classes);
21 subFiringOutcomeNode = simDoc.createElement(
'subParameter');
22 subFiringOutcomeNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
23 subFiringOutcomeNode.setAttribute(
'name',
'firingOutcome');
25 subFiringVectorsNode = simDoc.createElement(
'subParameter');
26 subFiringVectorsNode.setAttribute(
'array',
'true');
27 subFiringVectorsNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
28 subFiringVectorsNode.setAttribute(
'name',
'firingVectors');
31 subFiringVectorNode = simDoc.createElement(
'subParameter');
32 subFiringVectorNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
33 subFiringVectorNode.setAttribute(
'name',
'firingVector');
35 subStationNameNode = simDoc.createElement(
'subParameter');
36 subStationNameNode.setAttribute(
'classPath',
'java.lang.String');
37 subStationNameNode.setAttribute(
'name',
'stationName');
39 placeNameValueNode = simDoc.createElement(
'value');
40 placeNameValueNode.appendChild(simDoc.createTextNode(connections(k)));
41 subStationNameNode.appendChild(placeNameValueNode);
43 subFiringVectorNode.appendChild(subStationNameNode);
45 subFiringEntriesNode = simDoc.createElement(
'subParameter');
46 subFiringEntriesNode.setAttribute(
'array',
'true');
47 subFiringEntriesNode.setAttribute(
'classPath',
'java.lang.Integer');
48 subFiringEntriesNode.setAttribute(
'name',
'firingEntries');
50 for j=1:(numOfClasses)
51 currentClass = self.model.classes{j,1};
53 refClassNode = simDoc.createElement(
'refClass');
54 refClassNode.appendChild(simDoc.createTextNode(currentClass.name));
55 subFiringEntriesNode.appendChild(refClassNode);
57 subParameterNode = simDoc.createElement(
'subParameter');
58 subParameterNode.setAttribute(
'classPath',
'java.lang.Integer');
59 subParameterNode.setAttribute(
'name',
'firingEntry');
61 valueNode2 = simDoc.createElement(
'value');
62 valueNode2.appendChild(simDoc.createTextNode(int2str(sn.nodeparam{ind}.firing{m}(outputs(k),j))));
64 subParameterNode.appendChild(valueNode2);
65 subFiringEntriesNode.appendChild(subParameterNode);
66 subFiringVectorNode.appendChild(subFiringEntriesNode);
68 subFiringVectorsNode.appendChild(subFiringVectorNode);
71 subFiringOutcomeNode.appendChild(subFiringVectorsNode);
72 firingOutcomesNode.appendChild(subFiringOutcomeNode);
74section.appendChild(firingOutcomesNode);