Linux GNU 11.4.0 Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 67.5% 27 / 0 / 40
Functions: 55.6% 5 / 0 / 9
Branches: 30.8% 8 / 0 / 26

OMCompiler/SimulationRuntime/cpp/Core/System/LinearAlgLoopDefaultImplementation.cpp
Line Branch Exec Source
1 /*
2 * This file belongs to the OpenModelica Run-Time System
3 *
4 * Copyright (c) 1998-2026, Open Source Modelica Consortium (OSMC), c/o Linköpings
5 * universitet, Department of Computer and Information Science, SE-58183 Linköping, Sweden. All rights
6 * reserved.
7 *
8 * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF THE BSD NEW LICENSE OR THE
9 * AGPL VERSION 3 LICENSE OR THE OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.8. ANY
10 * USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES RECIPIENT'S
11 * ACCEPTANCE OF THE BSD NEW LICENSE OR THE OSMC PUBLIC LICENSE OR THE AGPL
12 * VERSION 3, ACCORDING TO RECIPIENTS CHOICE.
13 *
14 * The OpenModelica software and the OSMC (Open Source Modelica Consortium) Public License
15 * (OSMC-PL) are obtained from OSMC, either from the above address, from the URLs:
16 * http://www.openmodelica.org or https://github.com/OpenModelica/ or
17 * http://www.ida.liu.se/projects/OpenModelica, and in the OpenModelica distribution. GNU
18 * AGPL version 3 is obtained from: https://www.gnu.org/licenses/licenses.html#GPL. The BSD NEW
19 * License is obtained from: http://www.opensource.org/licenses/BSD-3-Clause.
20 *
21 * This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY
23 * SET FORTH IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF
24 * OSMC-PL.
25 *
26 */
27
28 /** @addtogroup coreSystem
29 *
30 * @{
31 */
32 #include <Core/ModelicaDefine.h>
33 #include <Core/Modelica.h>
34 #include <Core/System/FactoryExport.h>
35 #include <Core/System/LinearAlgLoopDefaultImplementation.h>
36
37 69 LinearAlgLoopDefaultImplementation::LinearAlgLoopDefaultImplementation()
38 69 : _dimAEq (0)
39 69 ,_b(NULL)
40 69 ,_AData(NULL)
41 69 ,_Ax(NULL)
42 69 ,_x0(NULL)
43 69 , _firstcall(true)
44 {
45
46 69 }
47
48 69 LinearAlgLoopDefaultImplementation::~LinearAlgLoopDefaultImplementation()
49 {
50
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 if(_b)
51 69 delete [] _b;
52
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 if (_x0)
53 69 delete [] _x0;
54 69 }
55
56 /// Provide number (dimension) of variables according to data type
57 137 int LinearAlgLoopDefaultImplementation::getDimReal() const
58 {
59 137 return _dimAEq;
60 }
61
62 ✗ int LinearAlgLoopDefaultImplementation::getDimZeroFunc() const
63 {
64 ✗ return _dimZeroFunc;
65 }
66 /// (Re-) initialize the system of equations
67 69 void LinearAlgLoopDefaultImplementation::initialize()
68 {
69
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 69 times.
69 if ( _dimAEq == 0 )
70 ✗ throw ModelicaSimulationError(ALGLOOP_EQ_SYSTEM,"AlgLoop::initialize(): No constraint defined.");
71
72
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 69 times.
69 if(_b)
73 ✗ delete [] _b;
74
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 _b = new double[_dimAEq];
75
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 69 times.
69 memset(_b,0,_dimAEq*sizeof(double));
76
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 69 times.
69 if(_x0)
77 ✗ delete [] _x0;
78
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 _x0 = new double[_dimAEq];
79 69 };
80
81 24014046 void LinearAlgLoopDefaultImplementation::getb(double* res) const
82 {
83 24014046 memcpy(res, _b, sizeof(double) * _dimAEq);
84 24014046 }
85
86
87 ✗ bool LinearAlgLoopDefaultImplementation::getUseSparseFormat(){
88 ✗ return _useSparseFormat;
89 }
90
91 ✗ void LinearAlgLoopDefaultImplementation::setUseSparseFormat(bool value){
92 ✗ _useSparseFormat = value;
93 ✗ }
94 ✗ void LinearAlgLoopDefaultImplementation::getRealStartValues(double* vars) const
95 {
96 ✗ memcpy(vars, _x0, sizeof(double) * _dimAEq);
97 ✗ }
98
99
100 //void LinearAlgLoopDefaultImplementation::getSparseAdata(double* data, int nonzeros)
101 //{
102 // memcpy(data, _AData, sizeof(double) * nonzeros);
103 //}
104 /** @} */ // end of coreSystem
105