1function [Pr,G,runtime] = solver_nc_jointaggr(sn, options)
2% [PR,G,RUNTIME] = SOLVER_NC_JOINTAGGR(QN, OPTIONS)
4% Copyright (c) 2012-2026, Imperial College London
10M = sn.nstations; %number of stations
15 inchain = sn.inchain{c};
16 Nchain(c) = sum(sn.njobs(inchain));
19% transform everything into a LD model
20nservers = sn.nservers;
21mu = ones(M,sum(Nchain));
23 if isinf(nservers(ist)) % infinite server
24 mu(ist,1:sum(Nchain)) = 1:sum(Nchain);
26 mu(ist,1:sum(Nchain)) = min(1:sum(Nchain), nservers(ist)*ones(1,sum(Nchain)));
34 [Lchain,~,~,~,Nchain] = sn_get_demands_chain(sn);
35 lG = pfqn_ncld(Lchain, Nchain, 0*Nchain, mu);
39 % unclear
if this is correct as it doesn
't consider the
40 % transformation to ld model
41 [~,~,~,~,~,~,lG,ST] = solver_nc(sn, options);
47 isf = sn.stationToStateful(ist);
48 [~,nivec] = State.toMarginal(sn, ist, state{isf});
49 nivec = unique(nivec,'rows
');
50 nivec_chain = nivec * sn.chains';
52 lF_i = pfqn_ncld(ST(ist,:).*V(ist,:), nivec, 0*nivec, mu(ist,:), options);