Changeset bf560e38 in OpenModelica


Ignore:
Timestamp:
2013-02-27T13:06:55+01:00 (11 years ago)
Author:
Lennart Ochel <lennart.ochel@…>
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
Message:

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@15355 f25d12d1-65f4-0310-ae8a-bbce733d8d8e

Location:
SimulationRuntime/c/simulation
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • SimulationRuntime/c/simulation/simulation_input_xml.cpp

    r3492485 rbf560e38  
    218218  XML_Parser parser = NULL;
    219219  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;
    222222
    223223  /* read the filename from the command line (if any) */
     
    360360  }
    361361
    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 */
    364364  INFO(LOG_DEBUG, "read xml file for states:");
    365   for(int i=0; i<modelData->nStates; i++)
     365  for(long i=0; i<modelData->nStates; i++)
    366366  {
    367367    /* read var info */
     
    402402    /* create a mapping for Alias variable to get the correct index */
    403403    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 */
    407408  DEBUG(LOG_DEBUG, "read xml file for stateDerivatives:");
    408   for(int i=0; i<modelData->nStates; i++)
     409  for(long i=0; i<modelData->nStates; i++)
    409410  {
    410411    /* read var info */
     
    444445
    445446    /* 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 */
    450452  DEBUG(LOG_DEBUG, "read xml file for real algebraic:");
    451   for(int i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)
    452   {
    453     int j = 2*modelData->nStates + i;
     453  for(long i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)
     454  {
     455    long j = 2*modelData->nStates + i;
    454456
    455457    /* read var info */
     
    489491
    490492    /* 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 */
    495498  DEBUG(LOG_DEBUG, "read xml file for integer algebraic:");
    496   for(int i=0; i<modelData->nVariablesInteger; i++)
     499  for(long i=0; i<modelData->nVariablesInteger; i++)
    497500  {
    498501    /* read var info */
     
    530533
    531534    /* 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 */
    536540  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++)
    539542  {
    540543    /* read var info */
     
    570573
    571574    /* 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);
    573577  }
    574578
    575579  /* read string variables static data */
    576580  DEBUG(LOG_DEBUG, "read xml file for string algebraic:");
    577   for(int i=0; i<modelData->nVariablesString; i++)
     581  for(long i=0; i<modelData->nVariablesString; i++)
    578582  {
    579583    /* read var info */
     
    608612
    609613    /* 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);
    611616  }
    612617
     
    616621  /* read Parameters static data */
    617622  DEBUG(LOG_DEBUG, "read xml file for real parameters:");
    618   for(int i=0; i<modelData->nParametersReal; i++)
     623  for(long i=0; i<modelData->nParametersReal; i++)
    619624  {
    620625    /* read var info */
     
    654659
    655660    /* 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 */
    660666  DEBUG(LOG_DEBUG, "read xml file for integer parameters:");
    661   for(int i=0; i<modelData->nParametersInteger; i++)
     667  for(long i=0; i<modelData->nParametersInteger; i++)
    662668  {
    663669    /* read var info */
     
    695701
    696702    /* 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 */
    701707  DEBUG(LOG_DEBUG, "read xml file for boolean parameters:");
    702   for(int i=0; i<modelData->nParametersBoolean; i++)
     708  for(long i=0; i<modelData->nParametersBoolean; i++)
    703709  {
    704710    /* read var info */
     
    734740
    735741    /* 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 */
    740746  DEBUG(LOG_DEBUG, "read xml file for string parameters:");
    741   for(int i=0; i<modelData->nParametersString; i++)
     747  for(long i=0; i<modelData->nParametersString; i++)
    742748  {
    743749    /* read var info */
     
    779785   */
    780786  DEBUG(LOG_DEBUG, "read xml file for real alias vars:");
    781   for(int i=0; i<modelData->nAliasReal; i++)
     787  for(long i=0; i<modelData->nAliasReal; i++)
    782788  {
    783789    /* read var info */
     
    846852   */
    847853  DEBUG(LOG_DEBUG, "read xml file for integer alias vars:");
    848   for(int i=0; i<modelData->nAliasInteger; i++)
     854  for(long i=0; i<modelData->nAliasInteger; i++)
    849855  {
    850856    /* read var info */
     
    911917   */
    912918  DEBUG(LOG_DEBUG, "read xml file for boolean alias vars:");
    913   for(int i=0; i<modelData->nAliasBoolean; i++)
     919  for(long i=0; i<modelData->nAliasBoolean; i++)
    914920  {
    915921    /* read var info */
     
    976982   */
    977983  DEBUG(LOG_DEBUG, "read xml file for string alias vars:");
    978   for(int i=0; i<modelData->nAliasString; i++)
     984  for(long i=0; i<modelData->nAliasString; i++)
    979985  {
    980986    /* read var info */
     
    11901196
    11911197    // override all found!
    1192     for(int i=0; i<modelData->nStates; i++)
     1198    for(long i=0; i<modelData->nStates; i++)
    11931199    {
    11941200      mi.rSta[i]["start"] = mOverrides.count(mi.rSta[i]["name"]) ? mOverrides[mi.rSta[i]["name"]] : mi.rSta[i]["start"];
    11951201      mi.rDer[i]["start"] = mOverrides.count(mi.rDer[i]["name"]) ? mOverrides[mi.rDer[i]["name"]] : mi.rDer[i]["start"];
    11961202    }
    1197     for(int i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)
     1203    for(long i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++)
    11981204    {
    11991205      mi.rAlg[i]["start"] = mOverrides.count(mi.rAlg[i]["name"]) ? mOverrides[mi.rAlg[i]["name"]] : mi.rAlg[i]["start"];
    12001206    }
    1201     for(int i=0; i<modelData->nVariablesInteger; i++)
     1207    for(long i=0; i<modelData->nVariablesInteger; i++)
    12021208    {
    12031209      mi.iAlg[i]["start"] = mOverrides.count(mi.iAlg[i]["name"]) ? mOverrides[mi.iAlg[i]["name"]] : mi.iAlg[i]["start"];
    12041210    }
    1205     for(int i=0; i<modelData->nVariablesBoolean; i++)
     1211    for(long i=0; i<modelData->nVariablesBoolean; i++)
    12061212    {
    12071213      mi.bAlg[i]["start"] = mOverrides.count(mi.bAlg[i]["name"]) ? mOverrides[mi.bAlg[i]["name"]] : mi.bAlg[i]["start"];
    12081214    }
    1209     for(int i=0; i<modelData->nVariablesString; i++)
     1215    for(long i=0; i<modelData->nVariablesString; i++)
    12101216    {
    12111217      mi.sAlg[i]["start"] = mOverrides.count(mi.sAlg[i]["name"]) ? mOverrides[mi.sAlg[i]["name"]] : mi.sAlg[i]["start"];
    12121218    }
    1213     for(int i=0; i<modelData->nParametersReal; i++)
     1219    for(long i=0; i<modelData->nParametersReal; i++)
    12141220    {
    12151221      mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? mOverrides[mi.rPar[i]["name"]] : mi.rPar[i]["start"];
    12161222    }
    1217     for(int i=0; i<modelData->nParametersInteger; i++)
     1223    for(long i=0; i<modelData->nParametersInteger; i++)
    12181224    {
    12191225      mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? mOverrides[mi.iPar[i]["name"]] : mi.iPar[i]["start"];
    12201226    }
    1221     for(int i=0; i<modelData->nParametersBoolean; i++)
     1227    for(long i=0; i<modelData->nParametersBoolean; i++)
    12221228    {
    12231229      mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? mOverrides[mi.bPar[i]["name"]] : mi.bPar[i]["start"];
    12241230    }
    1225     for(int i=0; i<modelData->nParametersString; i++)
     1231    for(long i=0; i<modelData->nParametersString; i++)
    12261232    {
    12271233      mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? mOverrides[mi.sPar[i]["name"]] : mi.sPar[i]["start"];
    12281234    }
    1229     for(int i=0; i<modelData->nAliasReal; i++)
     1235    for(long i=0; i<modelData->nAliasReal; i++)
    12301236    {
    12311237      mi.rAli[i]["start"] = mOverrides.count(mi.rAli[i]["name"]) ? mOverrides[mi.rAli[i]["name"]] : mi.rAli[i]["start"];
    12321238    }
    1233     for(int i=0; i<modelData->nAliasInteger; i++)
     1239    for(long i=0; i<modelData->nAliasInteger; i++)
    12341240    {
    12351241      mi.iAli[i]["start"] = mOverrides.count(mi.iAli[i]["name"]) ? mOverrides[mi.iAli[i]["name"]] : mi.iAli[i]["start"];
    12361242    }
    1237     for(int i=0; i<modelData->nAliasBoolean; i++)
     1243    for(long i=0; i<modelData->nAliasBoolean; i++)
    12381244    {
    12391245      mi.bAli[i]["start"] = mOverrides.count(mi.bAli[i]["name"]) ? mOverrides[mi.bAli[i]["name"]] : mi.bAli[i]["start"];
    12401246    }
    1241     for(int i=0; i<modelData->nAliasString; i++)
     1247    for(long i=0; i<modelData->nAliasString; i++)
    12421248    {
    12431249      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  
    348348
    349349  rc = regcomp(&myregex, filter, flags);
    350   if(rc) {
     350  if(rc)
     351  {
    351352    char err_buf[2048] = {0};
    352353    regerror(rc, &myregex, err_buf, 2048);
     
    354355    return;
    355356  }
     357 
    356358  /* new imple */
    357359  for(int i = 0; i < modelData->nVariablesReal; i++) if(!modelData->realVarsData[i].filterOutput)
    358360    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  }
    361384  for(int i = 0; i < modelData->nVariablesInteger; i++) if(!modelData->integerVarsData[i].filterOutput)
    362385    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  }
    365409  for(int i = 0; i < modelData->nVariablesBoolean; i++) if(!modelData->booleanVarsData[i].filterOutput)
    366410    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  }
    369434  for(int i = 0; i < modelData->nVariablesString; i++) if(!modelData->stringVarsData[i].filterOutput)
    370435    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  }
    373459  regfree(&myregex);
    374460#endif
Note: See TracChangeset for help on using the changeset viewer.