0001 function solverState = unpackState(stateVector, time, solverStateOriginal)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 nBulkState = size(solverStateOriginal.bulkStateVector, 1);
0025 nDim = size(solverStateOriginal.hcMatrix, 1);
0026 nPivot = size(solverStateOriginal.hcMatrix, 2);
0027
0028
0029 solverState = obtainCleanSolverState;
0030
0031 solverState.time = time;
0032 solverState.bulkStateVector = zeros(0,1);
0033 solverState.hcMatrix = zeros(nDim, 0);
0034 solverState.numberVector = zeros(1, 0);
0035 solverState.upVector = solverStateOriginal.upVector;
0036 solverState.flagDensity = solverStateOriginal.flagDensity;
0037 if solverState.flagDensity
0038 solverState.probabilityVector = zeros(1, 0);
0039 end
0040 solverState.flagNucleation = solverStateOriginal.flagNucleation;
0041 solverState.indexVector = solverStateOriginal.indexVector;
0042 solverState.dissolvedPivotVector = solverStateOriginal.dissolvedPivotVector;
0043
0044 stateVectorSize = nBulkState + nPivot*(nDim + 1 + solverState.flagDensity);
0045
0046
0047
0048 if solverState.flagDensity
0049 stateMatrix = reshape(stateVector(1:(stateVectorSize - nBulkState)), ...
0050 nDim + 2, nPivot);
0051 solverState.hcMatrix = stateMatrix(1:nDim, :);
0052 solverState.numberVector = stateMatrix(end-1, :);
0053 solverState.probabilityVector = stateMatrix(end, :);
0054 else
0055 stateMatrix = reshape(stateVector(1:(stateVectorSize - nBulkState)), ...
0056 nDim + 1, nPivot);
0057 solverState.hcMatrix = stateMatrix(1:nDim, :);
0058 solverState.numberVector = stateMatrix(end, :);
0059 end
0060
0061
0062 if nBulkState > 0
0063 solverState.bulkStateVector = stateVector((end-nBulkState+1):end, 1);
0064 end