Skip to content
This repository was archived by the owner on May 18, 2019. It is now read-only.

Commit 7360bc3

Browse files
ptaeuberOpenModelica-Hudson
authored andcommitted
Fix writing of homotopy csv-file for matrix elements
Belonging to [master]: - #1998
1 parent 9cb312a commit 7360bc3

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

SimulationRuntime/c/simulation/solver/initialization/initialization.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,15 @@ static int symbolic_initialization(DATA *data, threadData_t *threadData)
234234
char buffer[4096];
235235

236236
#if !defined(OMC_NO_FILESYSTEM)
237+
const char sep[] = ",";
237238
if(ACTIVE_STREAM(LOG_INIT))
238239
{
239240
sprintf(buffer, "%s_global_homotopy.csv", mData->modelFilePrefix);
240241
infoStreamPrint(LOG_INIT, 0, "The homotopy path will be exported to %s.", buffer);
241242
pFile = fopen(buffer, "wt");
242-
fprintf(pFile, "\"sep=,\"\n%s", "lambda");
243+
fprintf(pFile, "\"sep=%s\"\n%s", sep, "\"lambda\"");
243244
for(i=0; i<mData->nVariablesReal; ++i)
244-
fprintf(pFile, ",%s", mData->realVarsData[i].info.name);
245+
fprintf(pFile, "%s\"%s\"", sep, mData->realVarsData[i].info.name);
245246
fprintf(pFile, "\n");
246247
}
247248
#endif
@@ -268,7 +269,7 @@ static int symbolic_initialization(DATA *data, threadData_t *threadData)
268269
{
269270
fprintf(pFile, "%.16g", data->simulationInfo->lambda);
270271
for(i=0; i<mData->nVariablesReal; ++i)
271-
fprintf(pFile, ",%.16g", data->localData[0]->realVars[i]);
272+
fprintf(pFile, "%s%.16g", sep, data->localData[0]->realVars[i]);
272273
fprintf(pFile, "\n");
273274
}
274275
#endif

SimulationRuntime/c/simulation/solver/nonlinearSolverHomotopy.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,19 +1610,19 @@ static int homotopyAlgorithm(DATA_HOMOTOPY* solverData, double *x)
16101610
char buffer[4096];
16111611

16121612
#if !defined(OMC_NO_FILESYSTEM)
1613+
const char sep[] = ",";
16131614
if(solverData->initHomotopy && ACTIVE_STREAM(LOG_INIT))
16141615
{
16151616
sprintf(buffer, "%s_syst%d_new_global_homotopy_%s.csv", solverData->data->modelData->modelFilePrefix, solverData->sysNumber, solverData->startDirection > 0 ? "pos" : "neg");
16161617
infoStreamPrint(LOG_INIT, 0, "The homotopy path will be exported to %s.", buffer);
16171618
pFile = fopen(buffer, "wt");
1618-
fprintf(pFile, "\"sep=,\"\n");
1619-
fprintf(pFile, "%s", modelInfoGetEquation(&solverData->data->modelData->modelDataXml,solverData->eqSystemNumber).vars[n]);
1619+
fprintf(pFile, "\"sep=%s\"\n%s", sep, "\"lambda\"");
16201620
for(i=0; i<n; ++i)
1621-
fprintf(pFile, ",%s", modelInfoGetEquation(&solverData->data->modelData->modelDataXml,solverData->eqSystemNumber).vars[i]);
1621+
fprintf(pFile, "%s\"%s\"", sep, modelInfoGetEquation(&solverData->data->modelData->modelDataXml,solverData->eqSystemNumber).vars[i]);
16221622
fprintf(pFile, "\n");
16231623
fprintf(pFile, "0.0");
16241624
for(i=0; i<n; ++i)
1625-
fprintf(pFile, ",%.16g", x[i]);
1625+
fprintf(pFile, "%s%.16g", sep, x[i]);
16261626
fprintf(pFile, "\n");
16271627
}
16281628
#endif
@@ -1919,12 +1919,14 @@ static int homotopyAlgorithm(DATA_HOMOTOPY* solverData, double *x)
19191919
{
19201920
fprintf(pFile, "%.16g", solverData->y0[n]);
19211921
for(i=0; i<n; ++i)
1922-
fprintf(pFile, ",%.16g", solverData->y0[i]);
1922+
fprintf(pFile, "%s%.16g", sep, solverData->y0[i]);
19231923
fprintf(pFile, "\n");
19241924
}
19251925
#endif
19261926
}
19271927
}
1928+
if (solverData->initHomotopy)
1929+
infoStreamPrint(LOG_INIT, 0, "homotopy parameter lambda = %g", solverData->y0[solverData->n]);
19281930
/* copy solution back to vector x */
19291931
vecCopy(solverData->n, solverData->y1, x);
19301932

SimulationRuntime/c/simulation/solver/nonlinearSystem.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -861,14 +861,15 @@ int solve_nonlinear_system(DATA *data, threadData_t *threadData, int sysNumber)
861861
warningStreamPrint(LOG_ASSERT, 0, "Failed to solve initial system %d without homotopy method. The homotopy method is used now.", sysNumber);
862862
}
863863
#if !defined(OMC_NO_FILESYSTEM)
864+
const char sep[] = ",";
864865
if(ACTIVE_STREAM(LOG_INIT))
865866
{
866867
sprintf(buffer, "%s_homotopy_nls_%d.csv", data->modelData->modelFilePrefix, sysNumber);
867868
infoStreamPrint(LOG_INIT, 0, "The homotopy path of system %d will be exported to %s.", sysNumber, buffer);
868869
pFile = fopen(buffer, "wt");
869-
fprintf(pFile, "\"sep=,\"\n%s", "lambda");
870+
fprintf(pFile, "\"sep=%s\"\n%s", sep, "\"lambda\"");
870871
for(j=0; j<nonlinsys->size; ++j)
871-
fprintf(pFile, ",%s", modelInfoGetEquation(&data->modelData->modelDataXml, nonlinsys->equationIndex).vars[j]);
872+
fprintf(pFile, "%s\"%s\"", sep, modelInfoGetEquation(&data->modelData->modelDataXml, nonlinsys->equationIndex).vars[j]);
872873
fprintf(pFile, "\n");
873874
}
874875
#endif
@@ -891,7 +892,7 @@ int solve_nonlinear_system(DATA *data, threadData_t *threadData, int sysNumber)
891892
infoStreamPrint(LOG_INIT, 0, "[system %d] homotopy parameter lambda = %g done\n---------------------------", sysNumber, data->simulationInfo->lambda);
892893
fprintf(pFile, "%.16g", data->simulationInfo->lambda);
893894
for(j=0; j<nonlinsys->size; ++j)
894-
fprintf(pFile, ",%.16g", nonlinsys->nlsx[j]);
895+
fprintf(pFile, "%s%.16g", sep, nonlinsys->nlsx[j]);
895896
fprintf(pFile, "\n");
896897
}
897898
#endif

0 commit comments

Comments
 (0)