Changeset 24650


Ignore:
Timestamp:
2015-02-20T11:53:26+01:00 (9 years ago)
Author:
lochel
Message:
  • update Test11
Location:
trunk/testsuite/simulation/libraries/3rdParty/PNlib
Files:
1 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/testsuite/simulation/libraries/3rdParty/PNlib/PNlib.mo

    r24647 r24650  
    132132    Boolean emptying = Functions.anyTrue(vec=  pre(fireOut))
    133133      "Is the place emptied by output transitions?";
    134     Blocks.firingSumCon firingSumIn(fire = pre(fireIn), arcWeight = arcWeightIn, instSpeed = instSpeedIn)
     134    Real firingSumIn = Functions.firingSumCon(fire=pre(fireIn), arcWeight=arcWeightIn, instSpeed=instSpeedIn)
    135135      "firing sum calculation";
    136     Blocks.firingSumCon firingSumOut(fire = pre(fireOut), arcWeight = arcWeightOut, instSpeed = instSpeedOut)
     136    Real firingSumOut = Functions.firingSumCon(fire=  pre(fireOut), arcWeight=  arcWeightOut, instSpeed= instSpeedOut)
    137137      "firing sum calculation";
    138138    // *** BLOCKS END ***
    139139  public
    140     Interfaces.PlaceIn inTransition[nIn](each t = t_, each maxTokens = maxMarks, enable = activeIn, each emptied = emptying, each speedSum = firingSumOut.conFiringSum, fire = fireIn, active = activeIn, arcWeight = arcWeightIn, instSpeed = instSpeedIn, maxSpeed = maxSpeedIn, prelimSpeed = prelimSpeedIn, enabledByInPlaces = enabledByInPlaces)
     140    Interfaces.PlaceIn inTransition[nIn](each t = t_, each maxTokens = maxMarks, enable = activeIn, each emptied = emptying, each speedSum = firingSumOut, fire = fireIn, active = activeIn, arcWeight = arcWeightIn, instSpeed = instSpeedIn, maxSpeed = maxSpeedIn, prelimSpeed = prelimSpeedIn, enabledByInPlaces = enabledByInPlaces)
    141141      "connector for input transitions"                                                                                                     annotation(Placement(transformation(origin = {-93, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-93, 0}, extent = {{-10, -10}, {10, 10}})));
    142     Interfaces.PlaceOut outTransition[nOut](each t = t_, each minTokens = minMarks, enable = activeOut, each arcType = PNlib.Types.ArcType.normal_arc, each testValue = -1.0, each fed = feeding, each speedSum = firingSumIn.conFiringSum, fire = fireOut, active = activeOut, arcWeight = arcWeightOut, instSpeed = instSpeedOut, maxSpeed = maxSpeedOut, prelimSpeed = prelimSpeedOut)
     142    Interfaces.PlaceOut outTransition[nOut](each t = t_, each minTokens = minMarks, enable = activeOut, each arcType = PNlib.Types.ArcType.normal_arc, each testValue = -1.0, each fed = feeding, each speedSum = firingSumIn, fire = fireOut, active = activeOut, arcWeight = arcWeightOut, instSpeed = instSpeedOut, maxSpeed = maxSpeedOut, prelimSpeed = prelimSpeedOut)
    143143      "connector for output transitions"                                                                                                     annotation(Placement(transformation(origin = {93, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {93, 0}, extent = {{-10, -10}, {10, 10}})));
    144144    //initial equation
     
    147147  equation
    148148    // *** MAIN BEGIN ***
    149     der(tSumIn) = firingSumIn.conFiringSum;
     149    der(tSumIn) = firingSumIn;
    150150    // der(tSumIn_) = arcWeightIn .* instSpeedIn;
    151151    for i in 1:nIn loop
    152152      der(tSumIn_[i]) = if pre(fireIn[i]) then arcWeightIn[i] * instSpeedIn[i] else 0.0;
    153153    end for;
    154     der(tSumOut) = firingSumOut.conFiringSum;
     154    der(tSumOut) = firingSumOut;
    155155    // der(tSumOut_) = arcWeightOut .* instSpeedOut;
    156156    for i in 1:nOut loop
    157157      der(tSumOut_[i]) = if pre(fireOut[i]) then arcWeightOut[i] * instSpeedOut[i] else 0.0;
    158158    end for;
    159     der(t_) = firingSumIn.conFiringSum - firingSumOut.conFiringSum
     159    der(t_) = firingSumIn - firingSumOut
    160160      "calculation of continuous mark change";
    161161    // *** MAIN END ***
     
    199199    Blocks.activationCon activation(nIn = nIn, nOut = nOut, tIn = tIn, tOut = tOut, arcWeightIn = arcWeightIn, arcWeightOut = arcWeightOut, minTokens = minTokens, maxTokens = maxTokens, fed = fed, emptied = emptied, testValue = inPlaces.testValue, arcType = inPlaces.arcType)
    200200      "activation process";
    201     PNlib.Blocks.preliminarySpeed preliminarySpeed(nIn = nIn, nOut = nOut, arcWeightIn = arcWeightIn, arcWeightOut = arcWeightOut, speedSumIn = speedSumIn, speedSumOut = speedSumOut, maximumSpeed = maximumSpeed, active = activation.active, weaklyInputActiveVec = activation.weaklyInputActiveVec, weaklyOutputActiveVec = activation.weaklyOutputActiveVec)
     201    Blocks.preliminarySpeed preliminarySpeed(nIn = nIn, nOut = nOut, arcWeightIn = arcWeightIn, arcWeightOut = arcWeightOut, speedSumIn = speedSumIn, speedSumOut = speedSumOut, maximumSpeed = maximumSpeed, active = activation.active, weaklyInputActiveVec = activation.weaklyInputActiveVec, weaklyOutputActiveVec = activation.weaklyOutputActiveVec)
    202202      "preliminary speed calculation";
    203203    // *** BLOCKS END ***
     
    376376      end for;
    377377    end activationCon;
    378 
    379     block firingSumCon "calculates the firing sum of continuous places"
    380       input Boolean fire[:] "firability of transitions";
    381       input Real arcWeight[:] "arc weights";
    382       input Real instSpeed[:] "istantaneous speed of transitions";
    383       output Real conFiringSum "continuous firing sum";
    384     algorithm
    385       conFiringSum := 0.0;
    386       for i in 1:size(fire, 1) loop
    387         if fire[i] then
    388           conFiringSum := conFiringSum + arcWeight[i] * instSpeed[i];
    389         end if;
    390       end for;
    391     end firingSumCon;
    392378
    393379    block preliminarySpeed
     
    433419      end for;
    434420    end anyTrue;
     421
     422    function firingSumCon "calculates the firing sum of continuous places"
     423      input Boolean fire[:] "firability of transitions";
     424      input Real arcWeight[:] "arc weights";
     425      input Real instSpeed[:] "istantaneous speed of transitions";
     426      output Real conFiringSum "continuous firing sum";
     427    algorithm
     428      conFiringSum := 0.0;
     429      for i in 1:size(fire, 1) loop
     430        if fire[i] then
     431          conFiringSum := conFiringSum + arcWeight[i] * instSpeed[i];
     432        end if;
     433      end for;
     434    end firingSumCon;
    435435  end Functions;
    436436
     
    537537      PNlib.PC P3(nIn = 1, startMarks = 0) annotation(Placement(visible = true, transformation(origin = {40, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
    538538    equation
    539       connect(T2.outPlaces[1], P3.inTransition[1]) annotation(Line(points = {{24.7, 0}, {30.7783, 0}, {30.7783, 0.117925}, {30.7783, 0.117925}}));
    540       connect(P2.outTransition[1], T2.inPlaces[1]) annotation(Line(points = {{9.300000000000001, 0}, {15.566, 0}, {15.566, -0.117925}, {15.566, -0.117925}}));
    541       connect(T1.outPlaces[1], P2.inTransition[1]) annotation(Line(points = {{-15.3, 0}, {-9.19811, 0}, {-9.19811, -0.353774}, {-9.19811, -0.353774}}));
    542       connect(P1.outTransition[1], T1.inPlaces[1]) annotation(Line(points = {{-30.7, 0}, {-24.7642, 0}, {-24.7642, 0}, {-24.7642, 0}}));
     539      connect(T2.outPlaces[1], P3.inTransition[1]) annotation(Line(points={{24.7,0},
     540              {30.7783,0},{30.7783,0},{30.7,0}}));
     541      connect(P2.outTransition[1], T2.inPlaces[1]) annotation(Line(points={{9.3,0},
     542              {15.566,0},{15.566,0},{15.3,0}}));
     543      connect(T1.outPlaces[1], P2.inTransition[1]) annotation(Line(points={{-15.3,0},
     544              {-9.19811,0},{-9.19811,0},{-9.3,0}}));
     545      connect(P1.outTransition[1], T1.inPlaces[1]) annotation(Line(points={{-30.7,0},
     546              {-24.7642,0},{-24.7642,0},{-24.7,0}}));
    543547      annotation(experiment(StartTime = 0, StopTime = 3, Tolerance = 1e-006), Diagram(coordinateSystem(extent = {{-60, -20}, {60, 20}}, preserveAspectRatio = false, initialScale = 0.1, grid = {2, 2})), Icon(coordinateSystem(extent = {{-60, -20}, {60, 20}}, preserveAspectRatio = false, initialScale = 0.1, grid = {2, 2})));
    544548    end Test9;
     
    563567      annotation(experiment(StartTime = 0, StopTime = 3, Tolerance = 1e-006), Diagram(coordinateSystem(extent = {{-80, -60}, {80, 60}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})), Icon(coordinateSystem(extent = {{-80, -60}, {80, 60}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})));
    564568    end Test10;
     569
     570    model Test11
     571      PNlib.PC 'P1'(nOut=1, startMarks=1.5) annotation (Placement(visible=true,
     572            transformation(
     573            origin={-60,0},
     574            extent={{-10,-10},{10,10}},
     575            rotation=0)));
     576      PNlib.TC 'T1'(nOut=1, nIn=1) annotation (Placement(visible=true,
     577            transformation(
     578            origin={-30,0},
     579            extent={{-10,-10},{10,10}},
     580            rotation=0)));
     581      PNlib.PC 'P2'(nOut=1, nIn=1) annotation (Placement(visible=true,
     582            transformation(
     583            origin={0,0},
     584            extent={{-10,-10},{10,10}},
     585            rotation=0)));
     586      PNlib.TC 'T2'(
     587        nIn=1,
     588        nOut=1,
     589        maximumSpeed=0.5 + time) annotation (Placement(visible=true,
     590            transformation(
     591            origin={30,0},
     592            extent={{-10,-10},{10,10}},
     593            rotation=0)));
     594      PC 'P3'(nIn=1)
     595        annotation (Placement(transformation(extent={{50,-10},{70,10}})));
     596    equation
     597      connect('P1'.outTransition[1], 'T1'.inPlaces[1])
     598        annotation (Line(points={{-50.7,0},{-42,0},{-34.7,0}}));
     599      connect('P2'.inTransition[1], 'T1'.outPlaces[1])
     600        annotation (Line(points={{-9.3,0},{-9.3,0},{-25.3,0}}));
     601      connect('P2'.outTransition[1], 'T2'.inPlaces[1])
     602        annotation (Line(points={{9.3,0},{25.3,0}}));
     603      connect('T2'.outPlaces[1], 'P3'.inTransition[1]) annotation (Line(
     604          points={{34.7,0},{50.7,0}},
     605          color={0,0,0},
     606          smooth=Smooth.None));
     607      annotation(experiment(StartTime = 0, StopTime = 2, Tolerance = 1e-006), Diagram(coordinateSystem(extent={{-80,-20},
     608                {80,20}},                                                                                                    preserveAspectRatio=false,   initialScale = 0.1, grid = {2, 2}),
     609            graphics),                                                                                                    Icon(coordinateSystem(extent = {{-80, -20}, {80, 20}}, preserveAspectRatio = false, initialScale = 0.1, grid = {2, 2})));
     610    end Test11;
    565611    annotation(Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})), Diagram(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})));
    566612  end Examples;
  • trunk/testsuite/simulation/libraries/3rdParty/PNlib/Test11.mos

    r24471 r24650  
    44
    55loadFile("PNlib.mo"); getErrorString();
    6 loadString("
    7 model Test11
    8   PNlib.PC 'P1'(nIn = 0, nOut = 1, startMarks = 0.0, minMarks = 0.0, maxMarks = 1.0E9);
    9   PNlib.PC 'P2'(nIn = 1, nOut = 1, startMarks = 0.0, minMarks = 0.0, maxMarks = 1.0E9);
    10   PNlib.PC 'P3'(nIn = 1, nOut = 0, startMarks = 0.0, minMarks = 0.0, maxMarks = 1.0E9);
    11   PNlib.TC 'T1'(nIn = 1, nOut = 1, maximumSpeed = 1, arcWeightIn = {1}, arcWeightOut = {1});
    12   PNlib.TC 'T2'(nIn = 1, nOut = 1, maximumSpeed = 1, arcWeightIn = {1}, arcWeightOut = {1});
    13 equation
    14   connect('P1'.outTransition[1], 'T1'.inPlaces[1]);
    15   connect('T1'.outPlaces[1], 'P2'.inTransition[1]);
    16   connect('P2'.outTransition[1], 'T2'.inPlaces[1]);
    17   connect('T2'.outPlaces[1], 'P3'.inTransition[1]);
    18 end Test11;
    19 "); getErrorString();
    20 
    21 simulate(Test11); getErrorString();
    22 res := OpenModelica.Scripting.compareSimulationResults("Test11_res.mat",
    23   "ReferenceFiles/Test11.mat",
     6simulate(PNlib.Examples.Test11); getErrorString();
     7res := OpenModelica.Scripting.compareSimulationResults("PNlib.Examples.Test11_res.mat",
     8  "ReferenceFiles/PNlib.Examples.Test11.mat",
    249  "PNlib.Examples.Test11_diff.csv", 0.01, 0.0001,
    2510  {
     
    3419    "'T2'.maximumSpeed"
    3520  }); getErrorString();
    36 
     21 
    3722// Result:
    3823// true
    3924// ""
    40 // true
    41 // ""
    4225// record SimulationResult
    43 //     resultFile = "Test11_res.mat",
    44 //     simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'Test11', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
     26//     resultFile = "PNlib.Examples.Test11_res.mat",
     27//     simulationOptions = "startTime = 0.0, stopTime = 2.0, numberOfIntervals = 500, tolerance = 0.000001, method = 'dassl', fileNamePrefix = 'PNlib.Examples.Test11', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
    4528//     messages = ""
    4629// end SimulationResult;
Note: See TracChangeset for help on using the changeset viewer.