Changeset b875dff in OpenModelica
- Timestamp:
- 2013-12-12T10:27:28+01:00 (10 years ago)
- Branches:
- Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, master, omlib-staging
- Children:
- 2f686d3
- Parents:
- cb9f6f32
- Location:
- SimulationRuntime/c/simulation
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
SimulationRuntime/c/simulation/results/simulation_result_mat.cpp
r1d852115 rb875dff 218 218 matData->stopTime = data->simulationInfo.stopTime; 219 219 220 try 221 { 220 try { 222 221 /* open file */ 223 222 matData->fp.open(self->filename, std::ofstream::binary|std::ofstream::trunc); -
SimulationRuntime/c/simulation/simulation_runtime.cpp
r6e97464 rb875dff 331 331 * This phase is skipped for interactive simulations 332 332 */ 333 void initializeOutputFilter(MODEL_DATA *modelData, modelica_string variableFilter )333 void initializeOutputFilter(MODEL_DATA *modelData, modelica_string variableFilter, int resultFormatHasCheapAliasesAndParameters) 334 334 { 335 335 #ifndef _MSC_VER 336 int cheap = resultFormatHasCheapAliasesAndParameters; 336 337 std::string varfilter(variableFilter); 337 338 regex_t myregex; … … 340 341 string tmp = ("^(" + varfilter + ")$"); 341 342 const char *filter = tmp.c_str(); // C++ strings are horrible to work with... 342 if (modelData->nStates > 0 && 0 == strcmp(modelData->realVarsData[0].info.name, "$dummy")) {343 if (modelData->nStates > 0 && 0 == strcmp(modelData->realVarsData[0].info.name, "$dummy")) { 343 344 modelData->realVarsData[0].filterOutput = 1; 344 345 modelData->realVarsData[modelData->nStates].filterOutput = 1; 345 346 } 346 if(0 == strcmp(filter, ".*")) // This matches all variables, so we don't need to do anything347 if(0 == strcmp(filter, ".*")) { // This matches all variables, so we don't need to do anything 347 348 return; 349 } 348 350 349 351 #if defined(OMC_EMCC) … … 352 354 #endif 353 355 rc = regcomp(&myregex, filter, flags); 354 if(rc) 355 { 356 if(rc) { 356 357 char err_buf[2048] = {0}; 357 358 regerror(rc, &myregex, err_buf, 2048); … … 360 361 } 361 362 362 /* new imple */ 363 for(long i=0; i<modelData->nVariablesReal; i++) if(!modelData->realVarsData[i].filterOutput) 363 for(long i=0; i<modelData->nVariablesReal; i++) if(!modelData->realVarsData[i].filterOutput) { 364 364 modelData->realVarsData[i].filterOutput = regexec(&myregex, modelData->realVarsData[i].info.name, 0, NULL, 0) != 0; 365 for(long i=0; i<modelData->nAliasReal; i++) 366 { 367 if(modelData->realAlias[i].aliasType == 0) /* variable */ 368 { 369 if(!modelData->realAlias[i].filterOutput && !modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput) 370 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 371 else 372 { 373 modelData->realAlias[i].filterOutput = 0; 365 } 366 for(long i=0; i<modelData->nAliasReal; i++) { 367 if(modelData->realAlias[i].aliasType == 0) /* variable */ { 368 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 369 if (0 == modelData->realAlias[i].filterOutput) { 374 370 modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput = 0; 375 371 } 376 } 377 else if(modelData->realAlias[i].aliasType == 1) /* parameter */ 378 { 379 if(!modelData->realAlias[i].filterOutput && !modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput) 380 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 381 else 382 { 383 modelData->realAlias[i].filterOutput = 0; 372 } else if(modelData->realAlias[i].aliasType == 1) /* parameter */ { 373 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 374 if (0 == modelData->realAlias[i].filterOutput && resultFormatHasCheapAliasesAndParameters) { 384 375 modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput = 0; 385 376 } 386 377 } 387 378 } 388 for (long i=0; i<modelData->nVariablesInteger; i++) if(!modelData->integerVarsData[i].filterOutput)379 for (long i=0; i<modelData->nVariablesInteger; i++) if(!modelData->integerVarsData[i].filterOutput) { 389 380 modelData->integerVarsData[i].filterOutput = regexec(&myregex, modelData->integerVarsData[i].info.name, 0, NULL, 0) != 0; 390 for(long i=0; i<modelData->nAliasInteger; i++) 391 { 392 if(modelData->integerAlias[i].aliasType == 0) /* variable */ 393 { 394 if(!modelData->integerAlias[i].filterOutput && !modelData->integerVarsData[modelData->integerAlias[i].nameID].filterOutput) 395 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 396 else 397 { 398 modelData->integerAlias[i].filterOutput = 0; 381 } 382 for (long i=0; i<modelData->nAliasInteger; i++) { 383 if(modelData->integerAlias[i].aliasType == 0) /* variable */ { 384 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 385 if (0 == modelData->integerAlias[i].filterOutput) { 399 386 modelData->integerVarsData[modelData->integerAlias[i].nameID].filterOutput = 0; 400 387 } 401 } 402 else if(modelData->integerAlias[i].aliasType == 1) /* parameter */ 403 { 404 if(!modelData->integerAlias[i].filterOutput && !modelData->integerParameterData[modelData->integerAlias[i].nameID].filterOutput) 405 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 406 else 407 { 408 modelData->integerAlias[i].filterOutput = 0; 388 } else if(modelData->integerAlias[i].aliasType == 1) /* parameter */ { 389 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 390 if (0 == modelData->integerAlias[i].filterOutput && resultFormatHasCheapAliasesAndParameters) { 409 391 modelData->integerParameterData[modelData->integerAlias[i].nameID].filterOutput = 0; 410 392 } 411 393 } 412 394 } 413 for (long i=0; i<modelData->nVariablesBoolean; i++) if(!modelData->booleanVarsData[i].filterOutput)395 for (long i=0; i<modelData->nVariablesBoolean; i++) if(!modelData->booleanVarsData[i].filterOutput) { 414 396 modelData->booleanVarsData[i].filterOutput = regexec(&myregex, modelData->booleanVarsData[i].info.name, 0, NULL, 0) != 0; 415 for(long i=0; i<modelData->nAliasBoolean; i++) 416 { 417 if(modelData->booleanAlias[i].aliasType == 0) /* variable */ 418 { 419 if(!modelData->booleanAlias[i].filterOutput && !modelData->booleanVarsData[modelData->booleanAlias[i].nameID].filterOutput) 420 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 421 else 422 { 423 modelData->booleanAlias[i].filterOutput = 0; 397 } 398 for (long i=0; i<modelData->nAliasBoolean; i++) { 399 if(modelData->booleanAlias[i].aliasType == 0) /* variable */ { 400 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 401 if (0 == modelData->booleanAlias[i].filterOutput) { 424 402 modelData->booleanVarsData[modelData->booleanAlias[i].nameID].filterOutput = 0; 425 403 } 426 } 427 else if(modelData->booleanAlias[i].aliasType == 1) /* parameter */ 428 { 429 if(!modelData->booleanAlias[i].filterOutput && !modelData->booleanParameterData[modelData->booleanAlias[i].nameID].filterOutput) 430 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 431 else 432 { 433 modelData->booleanAlias[i].filterOutput = 0; 404 } else if(modelData->booleanAlias[i].aliasType == 1) /* parameter */ { 405 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 406 if (0 == modelData->booleanAlias[i].filterOutput && resultFormatHasCheapAliasesAndParameters) { 434 407 modelData->booleanParameterData[modelData->booleanAlias[i].nameID].filterOutput = 0; 435 408 } 436 409 } 437 410 } 438 for (long i=0; i<modelData->nVariablesString; i++) if(!modelData->stringVarsData[i].filterOutput)411 for (long i=0; i<modelData->nVariablesString; i++) if(!modelData->stringVarsData[i].filterOutput) { 439 412 modelData->stringVarsData[i].filterOutput = regexec(&myregex, modelData->stringVarsData[i].info.name, 0, NULL, 0) != 0; 440 for(long i=0; i<modelData->nAliasString; i++) 441 { 442 if(modelData->stringAlias[i].aliasType == 0) /* variable */ 443 { 444 if(!modelData->stringAlias[i].filterOutput && !modelData->stringVarsData[modelData->stringAlias[i].nameID].filterOutput) 445 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 446 else 447 { 448 modelData->stringAlias[i].filterOutput = 0; 413 } 414 for (long i=0; i<modelData->nAliasString; i++) { 415 if(modelData->stringAlias[i].aliasType == 0) /* variable */ { 416 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 417 if (0 == modelData->stringAlias[i].filterOutput) { 449 418 modelData->stringVarsData[modelData->stringAlias[i].nameID].filterOutput = 0; 450 419 } 451 } 452 else if(modelData->stringAlias[i].aliasType == 1) /* parameter */ 453 { 454 if(!modelData->stringAlias[i].filterOutput && !modelData->stringParameterData[modelData->stringAlias[i].nameID].filterOutput) 455 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 456 else 457 { 458 modelData->stringAlias[i].filterOutput = 0; 420 } else if(modelData->stringAlias[i].aliasType == 1) /* parameter */ { 421 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 422 if (0 == modelData->stringAlias[i].filterOutput && resultFormatHasCheapAliasesAndParameters) { 459 423 modelData->stringParameterData[modelData->stringAlias[i].nameID].filterOutput = 0; 460 424 } … … 636 600 int initializeResultData(DATA* simData, string result_file_cstr, int cpuTime) 637 601 { 602 int resultFormatHasCheapAliasesAndParameters = 0; 638 603 int retVal = 0; 639 604 long maxSteps = 4 * simData->simulationInfo.numSteps; … … 653 618 sim_result.writeParameterData = mat4_writeParameterData; 654 619 sim_result.free = mat4_free; 620 resultFormatHasCheapAliasesAndParameters = 1; 655 621 } else if(0 == strcmp("plt", simData->simulationInfo.outputFormat)) { 656 622 sim_result.init = plt_init; … … 662 628 return 1; 663 629 } 630 initializeOutputFilter(&(simData->modelData), simData->simulationInfo.variableFilter, resultFormatHasCheapAliasesAndParameters); 664 631 sim_result.init(&sim_result, simData); 665 632 infoStreamPrint(LOG_SOLVER, 0, "Allocated simulation result data storage for method '%s' and file='%s'", simData->simulationInfo.outputFormat, sim_result.filename); … … 828 795 829 796 read_input_xml(&(data->modelData), &(data->simulationInfo)); 830 initializeOutputFilter(&(data->modelData), data->simulationInfo.variableFilter);831 797 /* set the global stepsize variable */ 832 798 stepSize = data->simulationInfo.stepSize;
Note: See TracChangeset
for help on using the changeset viewer.