Skip to content

Commit

Permalink
Merge pull request #55 from SpiceSharp/development
Browse files Browse the repository at this point in the history
Bug fix
  • Loading branch information
svenboulanger authored Apr 14, 2021
2 parents b7eb489 + 9c0d9d2 commit 7c84a11
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 18 deletions.
30 changes: 15 additions & 15 deletions SpiceSharpBehavioral/Builders/Functions/RealILState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,25 +70,25 @@ public override void Push(Node node)
case NodeTypes.GreaterThan:
Push(bn.Left);
Push(bn.Right);
PushCheck(OpCodes.Bgt_S, 1.0, 0.0);
PushCheck(OpCodes.Bgt, 1.0, 0.0);
return;

case NodeTypes.LessThan:
Push(bn.Left);
Push(bn.Right);
PushCheck(OpCodes.Blt_S, 1.0, 0.0);
PushCheck(OpCodes.Blt, 1.0, 0.0);
return;

case NodeTypes.GreaterThanOrEqual:
Push(bn.Left);
Push(bn.Right);
PushCheck(OpCodes.Bge_S, 1.0, 0.0);
PushCheck(OpCodes.Bge, 1.0, 0.0);
return;

case NodeTypes.LessThanOrEqual:
Push(bn.Left);
Push(bn.Right);
PushCheck(OpCodes.Ble_S, 1.0, 0.0);
PushCheck(OpCodes.Ble, 1.0, 0.0);
return;

case NodeTypes.Equals:
Expand All @@ -97,7 +97,7 @@ public override void Push(Node node)
Push(Builder.RelativeTolerance);
Push(Builder.AbsoluteTolerance);
Generator.Emit(OpCodes.Call, _equals);
PushCheck(OpCodes.Brtrue_S, 1.0, 0.0);
PushCheck(OpCodes.Brtrue, 1.0, 0.0);
return;

case NodeTypes.NotEquals:
Expand All @@ -106,19 +106,19 @@ public override void Push(Node node)
Push(Builder.RelativeTolerance);
Push(Builder.AbsoluteTolerance);
Generator.Emit(OpCodes.Call, _equals);
PushCheck(OpCodes.Brfalse_S, 1.0, 0.0);
PushCheck(OpCodes.Brfalse, 1.0, 0.0);
return;

case NodeTypes.And:
lblBypass = Generator.DefineLabel();
lblEnd = Generator.DefineLabel();

Push(bn.Left); Push(0.5);
Generator.Emit(OpCodes.Ble_S, lblBypass);
Generator.Emit(OpCodes.Ble, lblBypass);
Push(bn.Right); Push(0.5);
Generator.Emit(OpCodes.Ble_S, lblBypass);
Generator.Emit(OpCodes.Ble, lblBypass);
Generator.Emit(OpCodes.Ldc_R8, 1.0);
Generator.Emit(OpCodes.Br_S, lblEnd);
Generator.Emit(OpCodes.Br, lblEnd);
Generator.MarkLabel(lblBypass);
Generator.Emit(OpCodes.Ldc_R8, 0.0);
Generator.MarkLabel(lblEnd);
Expand All @@ -129,11 +129,11 @@ public override void Push(Node node)
lblEnd = Generator.DefineLabel();

Push(bn.Left); Push(0.5);
Generator.Emit(OpCodes.Bgt_S, lblBypass);
Generator.Emit(OpCodes.Bgt, lblBypass);
Push(bn.Right); Push(0.5);
Generator.Emit(OpCodes.Bgt_S, lblBypass);
Generator.Emit(OpCodes.Bgt, lblBypass);
Generator.Emit(OpCodes.Ldc_R8, 0.0);
Generator.Emit(OpCodes.Br_S, lblEnd);
Generator.Emit(OpCodes.Br, lblEnd);
Generator.MarkLabel(lblBypass);
Generator.Emit(OpCodes.Ldc_R8, 1.0);
Generator.MarkLabel(lblEnd);
Expand Down Expand Up @@ -166,7 +166,7 @@ public override void Push(Node node)
case NodeTypes.Minus: Generator.Emit(OpCodes.Neg); return;
case NodeTypes.Not:
Push(0.5);
PushCheck(OpCodes.Ble_S, 1.0, 0.0);
PushCheck(OpCodes.Ble, 1.0, 0.0);
return;
}
break;
Expand All @@ -191,9 +191,9 @@ public override void Push(Node node)
lblBypass = Generator.DefineLabel();
lblEnd = Generator.DefineLabel();
Push(tn.Condition); Push(0.5);
Generator.Emit(OpCodes.Ble_S, lblBypass);
Generator.Emit(OpCodes.Ble, lblBypass);
Push(tn.IfTrue);
Generator.Emit(OpCodes.Br_S, lblEnd);
Generator.Emit(OpCodes.Br, lblEnd);
Generator.MarkLabel(lblBypass);
Push(tn.IfFalse);
Generator.MarkLabel(lblEnd);
Expand Down
6 changes: 3 additions & 3 deletions SpiceSharpBehavioral/SpiceSharpBehavioral.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFrameworks>netstandard1.5;netstandard2.0;net45;netcoreapp2.1</TargetFrameworks>
<Version>3.0.7</Version>
<Version>3.0.8</Version>
<Authors>Sven Boulanger</Authors>
<Title>Spice#.Behavioral</Title>
<Description>Spice#.Behavioral is a library that allows using behavioral components in the circuit simulator Spice#.</Description>
Expand All @@ -11,12 +11,12 @@
<RepositoryUrl>https://github.com/SpiceSharp/SpiceSharpBehavioral</RepositoryUrl>
<PackageTags>circuit electronics netlist parser spice simulator simulation ode solver design behavioral modeling</PackageTags>
<PackageIconUrl></PackageIconUrl>
<AssemblyVersion>3.0.7.0</AssemblyVersion>
<AssemblyVersion>3.0.8.0</AssemblyVersion>
<PackageReleaseNotes>Refer to the GitHub release for release notes.</PackageReleaseNotes>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Company />
<NeutralLanguage>en</NeutralLanguage>
<FileVersion>3.0.7.0</FileVersion>
<FileVersion>3.0.8.0</FileVersion>
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
17 changes: 17 additions & 0 deletions SpiceSharpBehavioralTest/Components/BehavioralResistorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,23 @@ namespace SpiceSharpBehavioralTest.Components
[TestFixture]
public class BehavioralResistorTests
{
[Test]
public void When_ComplexResitor_Expect_Reference()
{
var ckt = new Circuit(
new VoltageSource("V1", "2", "0", 0.5),
new VoltageSource("V2", "1", "0", 10),
new BehavioralResistor("RSwitch", "1", "0", "v(2, 0) >= 1 ? 10 : (v(2, 0) <= 0 ? 1000000 : (exp(8.05904782547916 + 3 * -11.5129254649702 * (v(2, 0)-0.5)/(2*1) - 2 * -11.5129254649702 * pow(v(2, 0)-0.5, 3)/(pow(1,3)))))"));
var op = new OP("Voltage switch simulation");
var refExport = new RealCurrentExport(op, "V2");
op.ExportSimulationData += (sender, args) =>
{
Assert.AreEqual(-0.00316228, refExport.Value, 1e-8);
};

op.Run(ckt);
}

[Test]
public void When_SimpleResistor_Expect_Reference()
{
Expand Down

0 comments on commit 7c84a11

Please sign in to comment.