Opened 10 years ago

Closed 10 years ago

#2462 closed defect (fixed)

filterOutput isn't working

Reported by: tshort.rlists@… Owned by: somebody
Priority: normal Milestone: 1.9.1
Component: Run-time Version: trunk
Keywords: filterOutput Cc:

Description

Steps to reproduce in OMEdit:

  1. Open Modelica.Electrical.Analog.Examples.Rectifier.
  1. Ctrl-B (simulation tab).
  1. Under the Output tab, enter "iAC.*" in the Variable Filter tab.
  1. Hit simulate.

The simulation runs successfully, but all variables are returned. None are filtered.

In simulation_runtime.cpp, I got filtering to work (I think) with the following changes.

  /* new imple */
  for(long i=0; i<modelData->nVariablesReal; i++) { 
    if(!modelData->realVarsData[i].filterOutput) {
        modelData->realVarsData[i].filterOutput = regexec(&myregex, modelData->realVarsData[i].info.name, 0, NULL, 0);
      }}
  for(long i=0; i<modelData->nAliasReal; i++)
  {
    if(modelData->realAlias[i].aliasType == 0)  /* variable */
    {
        if(!modelData->realAlias[i].filterOutput // && !modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput
            ) {
        modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0);
      }
      // else
      // {
      //   modelData->realAlias[i].filterOutput = 1;
      //   modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput = 1;
      // }
    }
    else if(modelData->realAlias[i].aliasType == 1)  /* parameter */
    {
      if(!modelData->realAlias[i].filterOutput // && !modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput
          ){
        modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0);
      }
      // else
      // {
      //   modelData->realAlias[i].filterOutput = 1;
      //   modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput = 1;
      // }
    }
  }

Change History (4)

comment:1 Changed 10 years ago by sjoelund.se

What are the changes? Post any changes in diff format

comment:2 Changed 10 years ago by tshort.rlists@…

Here are changes in svn diff format. I tried cleaning it up a bit because I had some debugging stuff in there. As you're looking at this, note that I'm bad at C/C++. I only changed the Real variables part.

  • SimulationRuntime/c/simulation/simulation_runtime.cpp

     
    363363
    364364  /* new imple */
    365365  for(long i=0; i<modelData->nVariablesReal; i++) if(!modelData->realVarsData[i].filterOutput)
    366     modelData->realVarsData[i].filterOutput = regexec(&myregex, modelData->realVarsData[i].info.name, 0, NULL, 0) != 0;
     366    modelData->realVarsData[i].filterOutput = regexec(&myregex, modelData->realVarsData[i].info.name, 0, NULL, 0);
    367367  for(long i=0; i<modelData->nAliasReal; i++)
    368368  {
     369    // The following two cases look like they can be collapsed.
    369370    if(modelData->realAlias[i].aliasType == 0)  /* variable */
    370371    {
    371       if(!modelData->realAlias[i].filterOutput && !modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput)
    372         modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0;
    373       else
    374       {
    375         modelData->realAlias[i].filterOutput = 0;
    376         modelData->realVarsData[modelData->realAlias[i].nameID].filterOutput = 0;
    377       }
     372      if(!modelData->realAlias[i].filterOutput)
     373        modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0);
    378374    }
    379375    else if(modelData->realAlias[i].aliasType == 1)  /* parameter */
    380376    {
    381       if(!modelData->realAlias[i].filterOutput && !modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput)
    382         modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0) != 0;
    383       else
    384       {
    385         modelData->realAlias[i].filterOutput = 0;
    386         modelData->realParameterData[modelData->realAlias[i].nameID].filterOutput = 0;
    387       }
     377      if(!modelData->realAlias[i].filterOutput)
     378        modelData->realAlias[i].filterOutput = regexec(&myregex, modelData->realAlias[i].info.name, 0, NULL, 0);
    388379    }
    389380  }
Last edited 10 years ago by sjoelund.se (previous) (diff)

comment:3 Changed 10 years ago by sjoelund.se

Did r18466 fix the problem? I think it does, and #2508 is the same issue.

comment:4 Changed 10 years ago by sjoelund.se

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.