|
@ -33,16 +33,24 @@ namespace storm { |
|
|
storm::storage::SparseMatrixBuilder<ConstantType> matrixBuilder(parametricMatrix.getRowCount(), |
|
|
storm::storage::SparseMatrixBuilder<ConstantType> matrixBuilder(parametricMatrix.getRowCount(), |
|
|
parametricMatrix.getColumnCount(), |
|
|
parametricMatrix.getColumnCount(), |
|
|
parametricMatrix.getEntryCount(), |
|
|
parametricMatrix.getEntryCount(), |
|
|
true, // no force dimensions
|
|
|
|
|
|
true, //Custom row grouping
|
|
|
|
|
|
parametricMatrix.getRowGroupCount()); |
|
|
|
|
|
for(std::size_t rowGroup = 0; rowGroup < parametricMatrix.getRowGroupCount(); ++rowGroup){ |
|
|
|
|
|
matrixBuilder.newRowGroup(parametricMatrix.getRowGroupIndices()[rowGroup]); |
|
|
|
|
|
for(std::size_t row = parametricMatrix.getRowGroupIndices()[rowGroup]; row < parametricMatrix.getRowGroupIndices()[rowGroup+1]; ++row){ |
|
|
|
|
|
|
|
|
true, |
|
|
|
|
|
!parametricMatrix.hasTrivialRowGrouping(), |
|
|
|
|
|
parametricMatrix.hasTrivialRowGrouping() ? 0 : parametricMatrix.getRowGroupCount()); |
|
|
ConstantType dummyValue = storm::utility::one<ConstantType>(); |
|
|
ConstantType dummyValue = storm::utility::one<ConstantType>(); |
|
|
|
|
|
if (parametricMatrix.hasTrivialRowGrouping()) { |
|
|
|
|
|
for (uint_fast64_t row = 0; row < parametricMatrix.getRowCount(); ++row) { |
|
|
|
|
|
for (auto const& paramEntry : parametricMatrix.getRow(row)) { |
|
|
|
|
|
matrixBuilder.addNextValue(row, paramEntry.getColumn(), dummyValue); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
for(uint_fast64_t rowGroup = 0; rowGroup < parametricMatrix.getRowGroupCount(); ++rowGroup){ |
|
|
|
|
|
matrixBuilder.newRowGroup(parametricMatrix.getRowGroupIndices()[rowGroup]); |
|
|
|
|
|
for (uint_fast64_t row = parametricMatrix.getRowGroupIndices()[rowGroup]; row < parametricMatrix.getRowGroupIndices()[rowGroup+1]; ++row) { |
|
|
for(auto const& paramEntry : parametricMatrix.getRow(row)){ |
|
|
for(auto const& paramEntry : parametricMatrix.getRow(row)){ |
|
|
matrixBuilder.addNextValue(row, paramEntry.getColumn(), dummyValue); |
|
|
matrixBuilder.addNextValue(row, paramEntry.getColumn(), dummyValue); |
|
|
dummyValue = storm::utility::zero<ConstantType>(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -96,7 +104,6 @@ namespace storm { |
|
|
++parametricEntryIt; |
|
|
++parametricEntryIt; |
|
|
} |
|
|
} |
|
|
STORM_LOG_ASSERT(constantEntryIt == constantMatrix.end(), "Parametric matrix seems to have more or less entries then the constant matrix"); |
|
|
STORM_LOG_ASSERT(constantEntryIt == constantMatrix.end(), "Parametric matrix seems to have more or less entries then the constant matrix"); |
|
|
//TODO: is this necessary?
|
|
|
|
|
|
constantMatrix.updateNonzeroEntryCount(); |
|
|
constantMatrix.updateNonzeroEntryCount(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|