Changeset 23864


Ignore:
Timestamp:
2014-12-18T20:45:49+01:00 (9 years ago)
Author:
lochel
Message:
  • add reminder to prevent secondary parameters from being overwritten
File:
1 edited

Legend:

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

    r23747 r23864  
    770770  omc_CommandLineOverrides mOverrides;
    771771  char* overrideStr = NULL;
    772   if((override != NULL) && (overrideFile != NULL)) {
     772  if((override != NULL) && (overrideFile != NULL))
     773  {
    773774    throwStreamPrint(NULL, "simulation_input_xml.cpp: usage error you cannot have both -override and -overrideFile active at the same time. see Model -? for more info!");
    774775  }
    775776
    776   if(override != NULL) {
     777  if(override != NULL)
     778  {
    777779    overrideStr = strdup(override);
    778780  }
    779781
    780   if(overrideFile != NULL) {
     782  if(overrideFile != NULL)
     783  {
    781784    /* read override values from file */
    782785    infoStreamPrint(LOG_SOLVER, 0, "read override values from file: %s", overrideFile);
     
    784787
    785788    infile.open(overrideFile, ifstream::in);
    786     if(infile.is_open() == false) {
     789    if(infile.is_open() == false)
     790    {
    787791      throwStreamPrint(NULL, "simulation_input_xml.cpp: could not open the file given to -overrideFile=%s", overrideFile);
    788792    }
     
    796800      // if is comment //, ignore line
    797801      if (tline.size() > 2 && tline[0] == '/' && tline[1] == '/')
     802      {
    798803        continue;
     804      }
    799805
    800806      if (overrideLine.empty())
     
    813819  }
    814820
    815   if(overrideStr != NULL) {
     821  if(overrideStr != NULL)
     822  {
    816823    std::string key, value;
    817824    /* read override values */
    818825    infoStreamPrint(LOG_SOLVER, 0, "read override values: %s", overrideStr);
    819826    char *p = strtok(overrideStr, ",");
    820     while(p) {
    821         std::string *key_val = new string(p);
    822         // split it key = value => map[key]=value
    823         size_t pos = key_val->find("=");
    824         key = key_val->substr(0,pos);
    825         value = key_val->substr(pos + 1,key_val->length() - pos - 1);
    826 
    827         /* un-quote key and value
    828         if(key[0] == '"')
    829          key = key.substr(1,key.length() - 1);
    830         if(key[key.length()] == '"')
    831          key = key.substr(0,key.length() - 1);
    832         if(value[0] == '"')
    833          value = value.substr(1,value.length() - 1);
    834         if(value[value.length()] == '"')
    835          value = value.substr(0,value.length() - 1);
    836         */
    837 
    838         // map[key]=value
    839         mOverrides[key] = value;
    840 
    841         infoStreamPrint(LOG_SOLVER, 0, "override %s = %s", key.c_str(), value.c_str());
    842 
    843         // move to next
    844         p = strtok(NULL, ",");
     827    while(p)
     828    {
     829      std::string *key_val = new string(p);
     830      // split it key = value => map[key]=value
     831      size_t pos = key_val->find("=");
     832      key = key_val->substr(0,pos);
     833      value = key_val->substr(pos + 1,key_val->length() - pos - 1);
     834
     835      /* un-quote key and value
     836      if(key[0] == '"')
     837       key = key.substr(1,key.length() - 1);
     838      if(key[key.length()] == '"')
     839       key = key.substr(0,key.length() - 1);
     840      if(value[0] == '"')
     841       value = value.substr(1,value.length() - 1);
     842      if(value[value.length()] == '"')
     843       value = value.substr(0,value.length() - 1);
     844      */
     845
     846      // map[key]=value
     847      mOverrides[key] = value;
     848
     849      infoStreamPrint(LOG_SOLVER, 0, "override %s = %s", key.c_str(), value.c_str());
     850
     851      // move to next
     852      p = strtok(NULL, ",");
    845853    }
    846854
     
    880888    for(long i=0; i<modelData->nParametersReal; i++)
    881889    {
     890      // TODO: only allow to override primary parameters
    882891      mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? mOverrides[mi.rPar[i]["name"]] : mi.rPar[i]["start"];
    883892    }
    884893    for(long i=0; i<modelData->nParametersInteger; i++)
    885894    {
     895      // TODO: only allow to override primary parameters
    886896      mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? mOverrides[mi.iPar[i]["name"]] : mi.iPar[i]["start"];
    887897    }
    888898    for(long i=0; i<modelData->nParametersBoolean; i++)
    889899    {
     900      // TODO: only allow to override primary parameters
    890901      mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? mOverrides[mi.bPar[i]["name"]] : mi.bPar[i]["start"];
    891902    }
    892903    for(long i=0; i<modelData->nParametersString; i++)
    893904    {
     905      // TODO: only allow to override primary parameters
    894906      mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? mOverrides[mi.sPar[i]["name"]] : mi.sPar[i]["start"];
    895907    }
Note: See TracChangeset for help on using the changeset viewer.