Changeset bf560e38 in OpenModelica
- Timestamp:
- 2013-02-27T13:06:55+01:00 (11 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, maintenance/v1.23, master, omlib-staging
- Children:
- e5b28d39
- Parents:
- c9369efc
- Location:
- SimulationRuntime/c/simulation
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
SimulationRuntime/c/simulation/simulation_input_xml.cpp
r3492485 rbf560e38 218 218 XML_Parser parser = NULL; 219 219 int done = 0; 220 std::map<std::string, modelica_integer> mapAlias, mapAliasParam;221 std::map<std::string, modelica_integer>::iterator it, itParam;220 std::map<std::string, long> mapAlias, mapAliasParam; 221 std::map<std::string, long>::iterator it, itParam; 222 222 223 223 /* read the filename from the command line (if any) */ … … 360 360 } 361 361 362 /* Read all static data from File for every variable */363 /* Read states static data */362 /* read all static data from File for every variable */ 363 /* read states static data */ 364 364 INFO(LOG_DEBUG, "read xml file for states:"); 365 for( inti=0; i<modelData->nStates; i++)365 for(long i=0; i<modelData->nStates; i++) 366 366 { 367 367 /* read var info */ … … 402 402 /* create a mapping for Alias variable to get the correct index */ 403 403 mapAlias[(modelData->realVarsData[i].info.name)] = i; 404 } 405 406 /* Read stateDerivatives static data */ 404 DEBUG2(LOG_DEBUG, "real states: mapAlias[%s] = %ld", modelData->realVarsData[i].info.name, i); 405 } 406 407 /* read stateDerivatives static data */ 407 408 DEBUG(LOG_DEBUG, "read xml file for stateDerivatives:"); 408 for( inti=0; i<modelData->nStates; i++)409 for(long i=0; i<modelData->nStates; i++) 409 410 { 410 411 /* read var info */ … … 444 445 445 446 /* create a mapping for Alias variable to get the correct index */ 446 mapAlias[(modelData->realVarsData[modelData->nStates+i].info.name)]= modelData->nStates+i; 447 } 448 449 /* Read real algebraics static data */ 447 mapAlias[(modelData->realVarsData[modelData->nStates+i].info.name)] = modelData->nStates+i; 448 DEBUG2(LOG_DEBUG, "real stateDerivatives: mapAlias[%s] = %ld", modelData->realVarsData[modelData->nStates+i].info.name, modelData->nStates+i); 449 } 450 451 /* read real algebraics static data */ 450 452 DEBUG(LOG_DEBUG, "read xml file for real algebraic:"); 451 for( inti=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)452 { 453 intj = 2*modelData->nStates + i;453 for(long i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++) 454 { 455 long j = 2*modelData->nStates + i; 454 456 455 457 /* read var info */ … … 489 491 490 492 /* create a mapping for Alias variable to get the correct index */ 491 mapAlias[(modelData->realVarsData[j].info.name)]= j; 492 } 493 494 /* Read integer variables static data */ 493 mapAlias[modelData->realVarsData[j].info.name] = j; 494 DEBUG2(LOG_DEBUG, "real algebraics: mapAlias[%s] = %ld", modelData->realVarsData[j].info.name, j); 495 } 496 497 /* read integer variables static data */ 495 498 DEBUG(LOG_DEBUG, "read xml file for integer algebraic:"); 496 for( inti=0; i<modelData->nVariablesInteger; i++)499 for(long i=0; i<modelData->nVariablesInteger; i++) 497 500 { 498 501 /* read var info */ … … 530 533 531 534 /* create a mapping for Alias variable to get the correct index */ 532 mapAlias[(modelData->integerVarsData[i].info.name)]= i; 533 } 534 535 /* Read boolean variables static data */ 535 mapAlias[modelData->integerVarsData[i].info.name] = i; 536 DEBUG2(LOG_DEBUG, "integer variables: mapAlias[%s] = %ld", modelData->integerVarsData[i].info.name, i); 537 } 538 539 /* read boolean variables static data */ 536 540 DEBUG(LOG_DEBUG, "read xml file for boolean algebraic:"); 537 538 for(int i=0; i<modelData->nVariablesBoolean; i++) 541 for(long i=0; i<modelData->nVariablesBoolean; i++) 539 542 { 540 543 /* read var info */ … … 570 573 571 574 /* create a mapping for Alias variable to get the correct index */ 572 mapAlias[(modelData->booleanVarsData[i].info.name)]= i; 575 mapAlias[modelData->booleanVarsData[i].info.name] = i; 576 DEBUG2(LOG_DEBUG, "boolean variables: mapAlias[%s] = %ld", modelData->booleanVarsData[i].info.name, i); 573 577 } 574 578 575 579 /* read string variables static data */ 576 580 DEBUG(LOG_DEBUG, "read xml file for string algebraic:"); 577 for( inti=0; i<modelData->nVariablesString; i++)581 for(long i=0; i<modelData->nVariablesString; i++) 578 582 { 579 583 /* read var info */ … … 608 612 609 613 /* create a mapping for Alias variable to get the correct index */ 610 mapAlias[(modelData->stringVarsData[i].info.name)]=i; 614 mapAlias[modelData->stringVarsData[i].info.name] = i; 615 DEBUG2(LOG_DEBUG, "string variables: mapAlias[%s] = %ld", modelData->stringVarsData[i].info.name, i); 611 616 } 612 617 … … 616 621 /* read Parameters static data */ 617 622 DEBUG(LOG_DEBUG, "read xml file for real parameters:"); 618 for( inti=0; i<modelData->nParametersReal; i++)623 for(long i=0; i<modelData->nParametersReal; i++) 619 624 { 620 625 /* read var info */ … … 654 659 655 660 /* create a mapping for Alias variable to get the correct index */ 656 mapAliasParam[(modelData->realParameterData[i].info.name)]=i; 657 } 658 659 /* Read integer parameters static data */ 661 mapAliasParam[modelData->realParameterData[i].info.name] = i; 662 DEBUG2(LOG_DEBUG, "real parameters: mapAlias[%s] = %ld", modelData->realParameterData[i].info.name, i); 663 } 664 665 /* read integer parameters static data */ 660 666 DEBUG(LOG_DEBUG, "read xml file for integer parameters:"); 661 for( inti=0; i<modelData->nParametersInteger; i++)667 for(long i=0; i<modelData->nParametersInteger; i++) 662 668 { 663 669 /* read var info */ … … 695 701 696 702 /* create a mapping for Alias variable to get the correct index */ 697 mapAliasParam[(modelData->integerParameterData[i].info.name)] =i;698 } 699 700 /* Read boolean parameters static data */703 mapAliasParam[(modelData->integerParameterData[i].info.name)] = i; 704 } 705 706 /* read boolean parameters static data */ 701 707 DEBUG(LOG_DEBUG, "read xml file for boolean parameters:"); 702 for( inti=0; i<modelData->nParametersBoolean; i++)708 for(long i=0; i<modelData->nParametersBoolean; i++) 703 709 { 704 710 /* read var info */ … … 734 740 735 741 /* create a mapping for Alias variable to get the correct index */ 736 mapAliasParam[(modelData->booleanParameterData[i].info.name)] =i;737 } 738 739 /* Read string parameters static data */742 mapAliasParam[(modelData->booleanParameterData[i].info.name)] = i; 743 } 744 745 /* read string parameters static data */ 740 746 DEBUG(LOG_DEBUG, "read xml file for string parameters:"); 741 for( inti=0; i<modelData->nParametersString; i++)747 for(long i=0; i<modelData->nParametersString; i++) 742 748 { 743 749 /* read var info */ … … 779 785 */ 780 786 DEBUG(LOG_DEBUG, "read xml file for real alias vars:"); 781 for( inti=0; i<modelData->nAliasReal; i++)787 for(long i=0; i<modelData->nAliasReal; i++) 782 788 { 783 789 /* read var info */ … … 846 852 */ 847 853 DEBUG(LOG_DEBUG, "read xml file for integer alias vars:"); 848 for( inti=0; i<modelData->nAliasInteger; i++)854 for(long i=0; i<modelData->nAliasInteger; i++) 849 855 { 850 856 /* read var info */ … … 911 917 */ 912 918 DEBUG(LOG_DEBUG, "read xml file for boolean alias vars:"); 913 for( inti=0; i<modelData->nAliasBoolean; i++)919 for(long i=0; i<modelData->nAliasBoolean; i++) 914 920 { 915 921 /* read var info */ … … 976 982 */ 977 983 DEBUG(LOG_DEBUG, "read xml file for string alias vars:"); 978 for( inti=0; i<modelData->nAliasString; i++)984 for(long i=0; i<modelData->nAliasString; i++) 979 985 { 980 986 /* read var info */ … … 1190 1196 1191 1197 // override all found! 1192 for( inti=0; i<modelData->nStates; i++)1198 for(long i=0; i<modelData->nStates; i++) 1193 1199 { 1194 1200 mi.rSta[i]["start"] = mOverrides.count(mi.rSta[i]["name"]) ? mOverrides[mi.rSta[i]["name"]] : mi.rSta[i]["start"]; 1195 1201 mi.rDer[i]["start"] = mOverrides.count(mi.rDer[i]["name"]) ? mOverrides[mi.rDer[i]["name"]] : mi.rDer[i]["start"]; 1196 1202 } 1197 for( inti=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)1203 for(long i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++) 1198 1204 { 1199 1205 mi.rAlg[i]["start"] = mOverrides.count(mi.rAlg[i]["name"]) ? mOverrides[mi.rAlg[i]["name"]] : mi.rAlg[i]["start"]; 1200 1206 } 1201 for( inti=0; i<modelData->nVariablesInteger; i++)1207 for(long i=0; i<modelData->nVariablesInteger; i++) 1202 1208 { 1203 1209 mi.iAlg[i]["start"] = mOverrides.count(mi.iAlg[i]["name"]) ? mOverrides[mi.iAlg[i]["name"]] : mi.iAlg[i]["start"]; 1204 1210 } 1205 for( inti=0; i<modelData->nVariablesBoolean; i++)1211 for(long i=0; i<modelData->nVariablesBoolean; i++) 1206 1212 { 1207 1213 mi.bAlg[i]["start"] = mOverrides.count(mi.bAlg[i]["name"]) ? mOverrides[mi.bAlg[i]["name"]] : mi.bAlg[i]["start"]; 1208 1214 } 1209 for( inti=0; i<modelData->nVariablesString; i++)1215 for(long i=0; i<modelData->nVariablesString; i++) 1210 1216 { 1211 1217 mi.sAlg[i]["start"] = mOverrides.count(mi.sAlg[i]["name"]) ? mOverrides[mi.sAlg[i]["name"]] : mi.sAlg[i]["start"]; 1212 1218 } 1213 for( inti=0; i<modelData->nParametersReal; i++)1219 for(long i=0; i<modelData->nParametersReal; i++) 1214 1220 { 1215 1221 mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? mOverrides[mi.rPar[i]["name"]] : mi.rPar[i]["start"]; 1216 1222 } 1217 for( inti=0; i<modelData->nParametersInteger; i++)1223 for(long i=0; i<modelData->nParametersInteger; i++) 1218 1224 { 1219 1225 mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? mOverrides[mi.iPar[i]["name"]] : mi.iPar[i]["start"]; 1220 1226 } 1221 for( inti=0; i<modelData->nParametersBoolean; i++)1227 for(long i=0; i<modelData->nParametersBoolean; i++) 1222 1228 { 1223 1229 mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? mOverrides[mi.bPar[i]["name"]] : mi.bPar[i]["start"]; 1224 1230 } 1225 for( inti=0; i<modelData->nParametersString; i++)1231 for(long i=0; i<modelData->nParametersString; i++) 1226 1232 { 1227 1233 mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? mOverrides[mi.sPar[i]["name"]] : mi.sPar[i]["start"]; 1228 1234 } 1229 for( inti=0; i<modelData->nAliasReal; i++)1235 for(long i=0; i<modelData->nAliasReal; i++) 1230 1236 { 1231 1237 mi.rAli[i]["start"] = mOverrides.count(mi.rAli[i]["name"]) ? mOverrides[mi.rAli[i]["name"]] : mi.rAli[i]["start"]; 1232 1238 } 1233 for( inti=0; i<modelData->nAliasInteger; i++)1239 for(long i=0; i<modelData->nAliasInteger; i++) 1234 1240 { 1235 1241 mi.iAli[i]["start"] = mOverrides.count(mi.iAli[i]["name"]) ? mOverrides[mi.iAli[i]["name"]] : mi.iAli[i]["start"]; 1236 1242 } 1237 for( inti=0; i<modelData->nAliasBoolean; i++)1243 for(long i=0; i<modelData->nAliasBoolean; i++) 1238 1244 { 1239 1245 mi.bAli[i]["start"] = mOverrides.count(mi.bAli[i]["name"]) ? mOverrides[mi.bAli[i]["name"]] : mi.bAli[i]["start"]; 1240 1246 } 1241 for( inti=0; i<modelData->nAliasString; i++)1247 for(long i=0; i<modelData->nAliasString; i++) 1242 1248 { 1243 1249 mi.sAli[i]["start"] = mOverrides.count(mi.sAli[i]["name"]) ? mOverrides[mi.sAli[i]["name"]] : mi.sAli[i]["start"]; -
SimulationRuntime/c/simulation/simulation_runtime.cpp
r3492485 rbf560e38 348 348 349 349 rc = regcomp(&myregex, filter, flags); 350 if(rc) { 350 if(rc) 351 { 351 352 char err_buf[2048] = {0}; 352 353 regerror(rc, &myregex, err_buf, 2048); … … 354 355 return; 355 356 } 357 356 358 /* new imple */ 357 359 for(int i = 0; i < modelData->nVariablesReal; i++) if(!modelData->realVarsData[i].filterOutput) 358 360 modelData->realVarsData[i].filterOutput = regexec(&myregex, modelData->realVarsData[i].info.name, 0, NULL, 0) != 0; 359 for(int i = 0; i < modelData->nAliasReal; i++) if(!modelData->realAlias[i].filterOutput) 360 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 361 for(int i = 0; i < modelData->nAliasReal; i++) 362 { 363 if(modelData->realAlias[i].aliasType == 0) /* variable */ 364 { 365 if(!modelData->realAlias[i].filterOutput && !modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput) 366 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 367 else 368 { 369 modelData->realAlias[i].filterOutput = 0; 370 modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput = 0; 371 } 372 } 373 else if(modelData->realAlias[i].aliasType == 1) /* parameter */ 374 { 375 if(!modelData->realAlias[i].filterOutput && !modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput) 376 modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0; 377 else 378 { 379 modelData->realAlias[i].filterOutput = 0; 380 modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput = 0; 381 } 382 } 383 } 361 384 for(int i = 0; i < modelData->nVariablesInteger; i++) if(!modelData->integerVarsData[i].filterOutput) 362 385 modelData->integerVarsData[i].filterOutput = regexec(&myregex, modelData->integerVarsData[i].info.name, 0, NULL, 0) != 0; 363 for(int i = 0; i < modelData->nAliasInteger; i++) if(!modelData->integerAlias[i].filterOutput) 364 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 386 for(int i = 0; i < modelData->nAliasInteger; i++) 387 { 388 if(modelData->integerAlias[i].aliasType == 0) /* variable */ 389 { 390 if(!modelData->integerAlias[i].filterOutput && !modelData->integerVarsData[modelData->integerAlias[i].nameID].filterOutput) 391 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 392 else 393 { 394 modelData->integerAlias[i].filterOutput = 0; 395 modelData->integerVarsData[modelData->integerAlias[i].nameID].filterOutput = 0; 396 } 397 } 398 else if(modelData->integerAlias[i].aliasType == 1) /* parameter */ 399 { 400 if(!modelData->integerAlias[i].filterOutput && !modelData->integerParameterData[modelData->integerAlias[i].nameID].filterOutput) 401 modelData->integerAlias[i].filterOutput = regexec(&myregex, modelData->integerAlias[i].info.name, 0, NULL, 0) != 0; 402 else 403 { 404 modelData->integerAlias[i].filterOutput = 0; 405 modelData->integerParameterData[modelData->integerAlias[i].nameID].filterOutput = 0; 406 } 407 } 408 } 365 409 for(int i = 0; i < modelData->nVariablesBoolean; i++) if(!modelData->booleanVarsData[i].filterOutput) 366 410 modelData->booleanVarsData[i].filterOutput = regexec(&myregex, modelData->booleanVarsData[i].info.name, 0, NULL, 0) != 0; 367 for(int i = 0; i < modelData->nAliasBoolean; i++) if(!modelData->booleanAlias[i].filterOutput) 368 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 411 for(int i = 0; i < modelData->nAliasBoolean; i++) 412 { 413 if(modelData->booleanAlias[i].aliasType == 0) /* variable */ 414 { 415 if(!modelData->booleanAlias[i].filterOutput && !modelData->booleanVarsData[modelData->booleanAlias[i].nameID].filterOutput) 416 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 417 else 418 { 419 modelData->booleanAlias[i].filterOutput = 0; 420 modelData->booleanVarsData[modelData->booleanAlias[i].nameID].filterOutput = 0; 421 } 422 } 423 else if(modelData->booleanAlias[i].aliasType == 1) /* parameter */ 424 { 425 if(!modelData->booleanAlias[i].filterOutput && !modelData->booleanParameterData[modelData->booleanAlias[i].nameID].filterOutput) 426 modelData->booleanAlias[i].filterOutput = regexec(&myregex, modelData->booleanAlias[i].info.name, 0, NULL, 0) != 0; 427 else 428 { 429 modelData->booleanAlias[i].filterOutput = 0; 430 modelData->booleanParameterData[modelData->booleanAlias[i].nameID].filterOutput = 0; 431 } 432 } 433 } 369 434 for(int i = 0; i < modelData->nVariablesString; i++) if(!modelData->stringVarsData[i].filterOutput) 370 435 modelData->stringVarsData[i].filterOutput = regexec(&myregex, modelData->stringVarsData[i].info.name, 0, NULL, 0) != 0; 371 for(int i = 0; i < modelData->nAliasString; i++) if(!modelData->stringAlias[i].filterOutput) 372 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 436 for(int i = 0; i < modelData->nAliasString; i++) 437 { 438 if(modelData->stringAlias[i].aliasType == 0) /* variable */ 439 { 440 if(!modelData->stringAlias[i].filterOutput && !modelData->stringVarsData[modelData->stringAlias[i].nameID].filterOutput) 441 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 442 else 443 { 444 modelData->stringAlias[i].filterOutput = 0; 445 modelData->stringVarsData[modelData->stringAlias[i].nameID].filterOutput = 0; 446 } 447 } 448 else if(modelData->stringAlias[i].aliasType == 1) /* parameter */ 449 { 450 if(!modelData->stringAlias[i].filterOutput && !modelData->stringParameterData[modelData->stringAlias[i].nameID].filterOutput) 451 modelData->stringAlias[i].filterOutput = regexec(&myregex, modelData->stringAlias[i].info.name, 0, NULL, 0) != 0; 452 else 453 { 454 modelData->stringAlias[i].filterOutput = 0; 455 modelData->stringParameterData[modelData->stringAlias[i].nameID].filterOutput = 0; 456 } 457 } 458 } 373 459 regfree(&myregex); 374 460 #endif
Note: See TracChangeset
for help on using the changeset viewer.