﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
4542	Performance issues with medium-sized linear systems	Francesco Casella	Patrick Täuber	"Please consider the performance of the following models
{{{
ScalableTestSuite.Electrical.DistributionSystemAC.ScaledExperiments.DistributionSystemLinear_N_10_M_10
ScalableTestSuite.Electrical.DistributionSystemAC.ScaledExperiments.DistributionSystemLinear_N_14_M_14
ScalableTestSuite.Electrical.DistributionSystemAC.ScaledExperiments.DistributionSystemLinear_N_20_M_20
ScalableTestSuite.Electrical.DistributionSystemAC.ScaledExperiments.DistributionSystemLinear_N_28_M_28
}}}
reported [https://test.openmodelica.org/libraries/ScalableTestSuite_Experimental/BuildModelRecursive.html here].

||= N =||= M =||= Time =||
|| 10 || 10 || 5.8||
|| 14 || 14 || 1961||
|| 20 || 20 || FAIL||
|| 28 || 28 ||  38||


With the current default settings {{{--maxSizeLinearTearing = 4000}}} and {{{-lssMinSize=4001}}}, the first three are solved using tearing and the dense solver, while the fourth is solved without tearing and with the sparse solver. The diagnostic messages of the N = 14 and N = 20 cases report multiple messages such as
{{{
warning | The default linear solver fails, the fallback solver with total pivoting
is started at time 0.004864. That might raise performance issues,
for more information use -lv LOG_LS.
}}}
The sparse solver without tearing obviously performs much better. I'm not sure if the problem with the other combination is that the dense solver is less efficient or that the tearing is questionable and leads to singularities, or both. 

Please investigate. If the tearing is bad, we should fix it, otherwise we may need to revise the default values of those two flags. I think it would be better to use defaults that optimize the performance of this batch of test cases, rather then using the arbitrary value 4000 set so far. We may revise the default later when we have more diverse test cases."	defect	new	high		*unknown*				
