public MainViewModel()
 {
     First = new ResistorModel
     {
         Value    = 0,
         IsEnable = true
     };
     Second = new ResistorModel
     {
         Value    = 0,
         IsEnable = true
     };
     Third = new ResistorModel
     {
         Value    = 0,
         IsEnable = true
     };
     FirstElement = new ElementModel
     {
         Value = 0,
     };
     SecondElement = new ElementModel
     {
         Value = 0,
     };
 }
Example #2
0
        // GET: Resistor
        public async Task <ActionResult> Index(ResistorViewModel viewModel)
        {
            ResistorOhmRequest  request;
            ResistorOhmResponse respone;

            if (viewModel.btnResistorOhm != null)
            {
                request = new ResistorOhmRequest()
                {
                    bandAColor = viewModel.bandAColor,
                    bandBColor = viewModel.bandBColor,
                    bandCColor = viewModel.bandCColor
                };

                var model = new ResistorModel(_DataAccess);

                respone = await model.GetOhmValue(request);

                if (respone.Success)
                {
                    viewModel.Ohm = respone.Ohm.ToString();
                }
                else
                {
                    ViewBag.Error = respone.Error;
                }
            }
            return(View(viewModel));
        }
        public IActionResult Index(ResistorModel model)
        {
            if ((_ResistorModel.ColorBandA != model.ColorBandA) ||
                (_ResistorModel.ColorBandB != model.ColorBandB) ||
                (_ResistorModel.ColorBandC != model.ColorBandC) ||
                (_ResistorModel.ColorBandD != model.ColorBandD))

            {
                _ResistorModel.ColorBandA = model.ColorBandA;
                _ResistorModel.ColorBandB = model.ColorBandB;
                _ResistorModel.ColorBandC = model.ColorBandC;
                _ResistorModel.ColorBandD = model.ColorBandD;

                if (null != _IOhmValueCalculator)
                {
                    // Calculate the resistance value

                    var results = _IOhmValueCalculator.CalculateOhmValue(
                        _ResistorModel.ColorBandA, _ResistorModel.ColorBandB, _ResistorModel.ColorBandC, _ResistorModel.ColorBandD);
                    if (results[0] > 0 && results[1] > 0)
                    {
                        _ResistorModel.SetResistanceValue(results[0]);
                        _ResistorModel.SetToleranceValue(results[1]);
                    }
                }
            }
            return(View(_ResistorModel));
        }
Example #4
0
        public void When_Documentation_Expect_NoException()
        {
            // <example_EntityDocumentation>
            var entity = new ResistorModel("RM1");

            // using SpiceSharp.Reflection;
            foreach (var parameter in entity.Parameters())
            {
                Console.Write(string.Join(", ", parameter.Names));
                Console.WriteLine($" : {parameter.Description} ({parameter.Member.Name}, {parameter.BaseType.Name})");
            }
            // </example_EntityDocumentation>

            Console.WriteLine();

            // <example_SimulationDocumentation>
            var simulation = new Transient("tran");

            // using SpiceSharp.Reflection;
            foreach (var parameter in simulation.Parameters())
            {
                Console.Write(string.Join(", ", parameter.Names));
                Console.WriteLine($" : {parameter.Description} ({parameter.Member.Name}, {parameter.BaseType.Name})");
            }
            // </example_SimulationDocumentation>

            Console.WriteLine();

            // <example_BehaviorDocumentation>
            var op  = new OP("op");
            var ckt = new Circuit(
                new VoltageSource("V1", "in", "0", 1),
                new Resistor("R1", "in", "0", 1e3));

            op.AfterSetup += (sender, args) =>
            {
                // Behaviors are created when executing a simulation,
                // so we need to register for the event to have access to them.
                // using SpiceSharp.Reflection;
                foreach (var parameter in op.EntityBehaviors["V1"].Parameters())
                {
                    Console.Write(string.Join(", ", parameter.Names));
                    Console.WriteLine($" : {parameter.Description} ({parameter.Member.Name}, {parameter.BaseType.Name})");
                }
            };
            op.Run(ckt);
            // </example_BehaviorDocumentation>
        }
Example #5
0
        public static double ResultI2(ResistorModel R1, ResistorModel R2, ResistorModel R3, ElementModel E1, ElementModel E2)
        {
            double I2 = 0;
            double r0 = 0.0001;

            if ((R1.IsEnable) && (R2.IsEnable) && (R3.IsEnable))
            {
                I2 = (E2.Value - R3.Value * ((R2.Value * E1.Value + E2.Value * R1.Value) / (R1.Value * R2.Value + R2.Value * R3.Value + R1.Value * R3.Value))) / R2.Value;
            }
            else
            if ((R1.IsEnable) && (!R2.IsEnable) && (R3.IsEnable))
            {
                I2 = (E2.Value - R3.Value * ((r0 * E1.Value + E2.Value * R1.Value) / (R1.Value * r0 + r0 * R3.Value + R1.Value * R3.Value))) / r0;
            }
            else
            if ((!R1.IsEnable) && (R2.IsEnable) && (R3.IsEnable))
            {
                I2 = (E2.Value - R3.Value * ((R2.Value * E1.Value + E2.Value * r0) / (r0 * R2.Value + R2.Value * R3.Value + r0 * R3.Value))) / R2.Value;
            }
            else
            if ((R1.IsEnable) && (R2.IsEnable) && (!R3.IsEnable))
            {
                I2 = E2.Value / R2.Value;
            }
            else
            if ((!R1.IsEnable) && (!R2.IsEnable) && (R3.IsEnable))
            {
                I2 = (E2.Value - R3.Value * ((r0 * E1.Value + E2.Value * r0) / (r0 * r0 + r0 * R3.Value + r0 * R3.Value))) / r0;
            }
            else
            if ((!R1.IsEnable) && (R2.IsEnable) && (!R3.IsEnable))
            {
                I2 = E2.Value / R2.Value;
            }
            else
            if ((R1.IsEnable) && (!R2.IsEnable) && (!R3.IsEnable))
            {
                I2 = E1.Value / r0;
            }
            else
            if ((!R1.IsEnable) && (!R2.IsEnable) && (!R3.IsEnable))
            {
                I2 = 0;
            }

            return(I2);
        }
Example #6
0
        public static double ResultI3(ResistorModel R1, ResistorModel R2, ResistorModel R3, ElementModel E1, ElementModel E2)
        {
            double I3 = 0;
            double r0 = 0.0001;

            if ((R1.IsEnable) && (R2.IsEnable) && (R3.IsEnable))
            {
                I3 = (R2.Value * E1.Value + E2.Value * R1.Value) / (R1.Value * R2.Value + R2.Value * R3.Value + R1.Value * R3.Value);
            }
            else
            if ((R1.IsEnable) && (!R2.IsEnable) && (R3.IsEnable))
            {
                I3 = (r0 * E1.Value + E2.Value * R1.Value) / (R1.Value * r0 + r0 * R3.Value + R1.Value * R3.Value);
            }
            else
            if ((!R1.IsEnable) && (R2.IsEnable) && (R3.IsEnable))
            {
                I3 = (R2.Value * E1.Value + E2.Value * r0) / (r0 * R2.Value + R2.Value * R3.Value + r0 * R3.Value);
            }
            else
            if ((R1.IsEnable) && (R2.IsEnable) && (!R3.IsEnable))
            {
                I3 = (E1.Value / R1.Value) + (E2.Value / R2.Value);
            }
            else
            if ((!R1.IsEnable) && (!R2.IsEnable) && (R3.IsEnable))
            {
                I3 = (r0 * E1.Value + E2.Value * r0) / (r0 * r0 + r0 * R3.Value + r0 * R3.Value);
            }
            else
            if ((!R1.IsEnable) && (R2.IsEnable) && (!R3.IsEnable))
            {
                I3 = (E1.Value / r0) + (E2.Value / R2.Value);
            }
            else
            if ((R1.IsEnable) && (!R2.IsEnable) && (!R3.IsEnable))
            {
                I3 = (E1.Value / R1.Value) + E1.Value / r0;
            }
            else
            if ((!R1.IsEnable) && (!R2.IsEnable) && (!R3.IsEnable))
            {
                I3 = 0;
            }

            return(I3);
        }
        public override Context.Models.Model Generate(string id, string type, ParameterCollection parameters, ICircuitContext context)
        {
            switch (type.ToLower())
            {
            case "res":
            case "r":
                var model = new ResistorModel(id);
                SetParameters(context, model, parameters);
                return(new Context.Models.Model(id, model, model.Parameters));

            case "c":
                var model2 = new CapacitorModel(id);
                SetParameters(context, model2, parameters);
                return(new Context.Models.Model(id, model2, model2.Parameters));
            }

            return(null);
        }
Example #8
0
        public void When_ResistorModel_Expect_Reference()
        {
            // Bug found by Marcin Golebiowski
            ResistorModel model;
            Resistor      res;
            var           ckt = new Circuit(
                new CurrentSource("I1", "0", "a", 1),
                model = new ResistorModel("RM1"),
                res   = new Resistor("R1", "a", "0", "RM1"));

            model.Parameters.DefaultWidth    = 0.5e-6;
            model.Parameters.Narrow          = 0.1e-6;
            model.Parameters.SheetResistance = 20;
            res.Parameters.Length            = 5e-6;

            var op         = new OP("op");
            var exports    = new IExport <double>[] { new RealVoltageExport(op, "a") };
            var references = new[] { 245.0 };

            AnalyzeOp(op, ckt, exports, references);
            DestroyExports(exports);
        }
        public override SpiceSharp.Components.Model Generate(string id, string type, ParameterCollection parameters, ICircuitContext context)
        {
            SpiceSharp.Components.Model model = null;

            switch (type.ToLower())
            {
            case "res":
            case "r":
                model = new ResistorModel(id);
                break;

            case "c":
                model = new CapacitorModel(id);
                break;
            }

            if (model != null)
            {
                SetParameters(context, model, parameters);
            }

            return(model);
        }
Example #10
0
        public ActionResult Index(ResistorModel resistor)
        {
            // colors are now CSS values

            string v1 = resistor.bandAColor;
            string v2 = resistor.bandBColor;
            string v3 = resistor.bandCColor;
            string v4 = resistor.bandDColor;

            ViewBag.ResistorOhms      = "0 ohms";      // first setting
            ViewBag.ResistorTolerance = "0% tolerance";

            if (v1 != null)
            {
                // may need to convert to string on exit
                ViewBag.ResistorOhms =
                    ResistorModel.CalculateOhmValue(v1, v2, v3, v4);
                ViewBag.ResistorTolerance =
                    ResistorModel.CalculateToleranceValue(v1, v2, v3, v4);

                // how refresh the text boxes with background colors?
                ViewBag.vb_BandA_Color = resistor.bandAColor;
                ViewBag.vb_BandB_Color = resistor.bandBColor;
                ViewBag.vb_BandC_Color = resistor.bandCColor;
                ViewBag.vb_BandD_Color = resistor.bandDColor;
            }
            else
            {
                ViewBag.vb_BandA_Color = "white";
                ViewBag.vb_BandB_Color = "white";
                ViewBag.vb_BandC_Color = "white";
                ViewBag.vb_BandD_Color = "white";
            }

            return(View());          // refresh is done here
        }
        /// <summary>
        /// Generate resistor.
        /// </summary>
        /// <param name="name">Name of resistor to generate.</param>
        /// <param name="parameters">Parameters and pins for resistor.</param>
        /// <param name="context">Reading context.</param>
        /// <returns>
        /// A new instance of resistor.
        /// </returns>
        protected IEntity GenerateRes(string name, ParameterCollection parameters, ICircuitContext context)
        {
            if (parameters.Count == 3)
            {
                var evalContext = context.Evaluator.GetEvaluationContext();

                // RName Node1 Node2 something
                var    something  = parameters[2];
                string expression = null;

                if (something is AssignmentParameter asp)
                {
                    expression = asp.Value;
                }
                else
                {
                    expression = something.Image;
                }

                if (evalContext.HaveSpiceProperties(expression) || evalContext.HaveFunctions(expression))
                {
                    BehavioralResistor behavioralResistor = new BehavioralResistor(name);
                    context.CreateNodes(behavioralResistor, parameters.Take(BehavioralResistor.BehavioralResistorPinCount));

                    behavioralResistor.Parameters.Expression  = expression;
                    behavioralResistor.Parameters.ParseAction = (expression) =>
                    {
                        var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(null), false, context.CaseSensitivity);
                        return(parser.Resolve(expression));
                    };

                    if (evalContext.HaveFunctions(expression))
                    {
                        context.SimulationPreparations.ExecuteActionBeforeSetup((simulation) =>
                        {
                            behavioralResistor.Parameters.Expression = expression.ToString();

                            behavioralResistor.Parameters.ParseAction = (expression) =>
                            {
                                var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(simulation), false, context.CaseSensitivity);
                                return(parser.Resolve(expression));
                            };
                        });
                    }

                    return(behavioralResistor);
                }
            }

            Resistor res = new Resistor(name);

            context.CreateNodes(res, parameters);

            if (parameters.Count == 3)
            {
                // RName Node1 Node2 something
                var something = parameters[2];

                // Check if something is a model name
                if ((something is WordParameter || something is IdentifierParameter) &&
                    context.ModelsRegistry.FindModel(parameters.Get(2).Image) != null)
                {
                    // RName Node1 Node2 modelName
                    context.Result.Validation.Add(
                        new ValidationEntry(
                            ValidationEntrySource.Reader,
                            ValidationEntryLevel.Warning,
                            $"R parameter needs to be specified",
                            parameters.LineInfo));
                    return(null);
                }

                // Check if something can be resistance
                if (!(something is WordParameter ||
                      something is IdentifierParameter ||
                      something is ValueParameter ||
                      something is ExpressionParameter ||
                      (something is AssignmentParameter ap && (ap.Name.ToLower() == "r" || ap.Name.ToLower() == "resistance"))))
                {
                    context.Result.Validation.Add(
                        new ValidationEntry(
                            ValidationEntrySource.Reader,
                            ValidationEntryLevel.Warning,
                            $"Third parameter needs to represent resistance of resistor",
                            parameters.LineInfo));

                    return(null);
                }

                // Set resistance
                if (something is AssignmentParameter asp)
                {
                    context.SetParameter(res, "resistance", asp, true, false);
                }
                else
                {
                    context.SetParameter(res, "resistance", something, true, false);
                }
            }
            else
            {
                var resistorParameters = new List <Parameter>(parameters.Skip(Resistor.ResistorPinCount).ToArray());

                // RName Node1 Node2 something param1 ...
                if (resistorParameters.Count == 0)
                {
                    context.Result.Validation.Add(
                        new ValidationEntry(
                            ValidationEntrySource.Reader,
                            ValidationEntryLevel.Warning,
                            $"Resistor doesn't have at least 3 parameters",
                            parameters.LineInfo));
                    return(null);
                }

                var something = resistorParameters[0];

                // Check if something is a model name
                bool hasModelSyntax = (something is WordParameter || something is IdentifierParameter) &&
                                      context.ModelsRegistry.FindModel(something.Image) != null;
                bool hasTcParameter = parameters.Any(
                    p => p is AssignmentParameter ap && ap.Name.Equals(
                        "tc",
                        false ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase));

                AssignmentParameter tcParameter = null;

                if (hasTcParameter)
                {
                    tcParameter = (AssignmentParameter)parameters.Single(
                        p => p is AssignmentParameter ap && ap.Name.Equals(
                            "tc",
                            false ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase));
                    resistorParameters.Remove(tcParameter);
                }

                if (hasModelSyntax)
                {
                    var modelNameParameter = resistorParameters[0];

                    // Ignore tc parameter on resistor ...
                    context.SimulationPreparations.ExecuteActionBeforeSetup((simulation) =>
                    {
                        context.ModelsRegistry.SetModel(
                            res,
                            simulation,
                            modelNameParameter,
                            $"Could not find model {modelNameParameter} for resistor {name}",
                            (Context.Models.Model model) => res.Model = model.Name,
                            context.Result);
                    });

                    resistorParameters.RemoveAt(0);

                    if (resistorParameters.Count > 0 && (resistorParameters[0] is WordParameter ||
                                                         resistorParameters[0] is IdentifierParameter ||
                                                         resistorParameters[0] is ValueParameter ||
                                                         resistorParameters[0] is ExpressionParameter))
                    {
                        context.SetParameter(res, "resistance", resistorParameters[0].Image, true, false);
                        resistorParameters.RemoveAt(0);
                    }
                }
                else
                {
                    if (hasTcParameter)
                    {
                        var model = new ResistorModel(res.Name + "_default_model");
                        if (tcParameter.Values.Count == 2)
                        {
                            context.SetParameter(model, "tc1", tcParameter.Values[0]);
                            context.SetParameter(model, "tc2", tcParameter.Values[1]);
                        }
                        else
                        {
                            context.SetParameter(model, "tc1", tcParameter.Value);
                        }

                        context.ModelsRegistry.RegisterModelInstance(new Context.Models.Model(model.Name, model, model.Parameters));
                        res.Model = model.Name;
                        context.Result.AddEntity(model);
                    }

                    // Check if something can be resistance
                    var resistanceParameter = resistorParameters[0];

                    if (!(resistanceParameter is WordParameter ||
                          resistanceParameter is IdentifierParameter ||
                          resistanceParameter is ValueParameter ||
                          resistanceParameter is ExpressionParameter ||
                          (resistanceParameter is AssignmentParameter ap && (ap.Name.ToLower() == "r" || ap.Name.ToLower() == "resistance"))))
                    {
                        context.Result.Validation.Add(
                            new ValidationEntry(
                                ValidationEntrySource.Reader,
                                ValidationEntryLevel.Warning,
                                $"Invalid value for resistance",
                                parameters.LineInfo));
                        return(null);
                    }

                    if (resistanceParameter is AssignmentParameter asp)
                    {
                        context.SetParameter(res, "resistance", asp.Value, true, false);
                    }
                    else
                    {
                        context.SetParameter(res, "resistance", resistanceParameter.Image, true, false);
                    }

                    resistorParameters.RemoveAt(0);
                }

                foreach (var parameter in resistorParameters)
                {
                    if (parameter is AssignmentParameter ap)
                    {
                        try
                        {
                            context.SetParameter(res, ap.Name, ap.Value);
                        }
                        catch (Exception e)
                        {
                            context.Result.Validation.Add(
                                new ValidationEntry(
                                    ValidationEntrySource.Reader,
                                    ValidationEntryLevel.Error,
                                    $"Can't set parameter for resistor: '{parameter.Image}'",
                                    parameters.LineInfo,
                                    exception: e));

                            return(null);
                        }
                    }
                    else
                    {
                        context.Result.Validation.Add(
                            new ValidationEntry(
                                ValidationEntrySource.Reader,
                                ValidationEntryLevel.Error,
                                $"Invalid parameter for resistor: '{parameter.Image}'",
                                parameters.LineInfo));

                        return(null);
                    }
                }
            }

            return(res);
        }
        public ResistorOhm_MVC_Client_Test()
        {
            StubDataAccess dataAccess = new StubDataAccess();

            _Model = new ResistorModel(dataAccess);
        }
        /// <summary>
        /// Generate resistor.
        /// </summary>
        /// <param name="name">Name of resistor to generate.</param>
        /// <param name="parameters">Parameters and pins for resistor.</param>
        /// <param name="context">Reading context.</param>
        /// <returns>
        /// A new instance of resistor.
        /// </returns>
        protected SpiceSharp.Components.Component GenerateRes(string name, ParameterCollection parameters, ICircuitContext context)
        {
            Resistor res = new Resistor(name);

            var dynamicParameter = parameters.FirstOrDefault(p => p.Image == "dynamic");

            if (dynamicParameter != null)
            {
                parameters.Remove(dynamicParameter);
            }

            bool isDynamic = dynamicParameter != null || context.Result?.SimulationConfiguration?.DynamicResistors == true;

            if (isDynamic)
            {
                context.SimulationPreparations.ExecuteTemperatureBehaviorBeforeLoad(res);
            }

            context.CreateNodes(res, parameters);

            if (parameters.Count == 3)
            {
                // RName Node1 Node2 something
                var something = parameters[2];

                // Check if something is a model name
                if ((something is WordParameter || something is IdentifierParameter) &&
                    context.ModelsRegistry.FindModel <ResistorModel>(parameters.Get(2).Image) != null)
                {
                    // RName Node1 Node2 modelName
                    context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                      ValidationEntryLevel.Warning,
                                                                      $"R parameter needs to be specified", parameters.LineInfo));
                    return(null);
                }

                // Check if something can be resistance
                if (!(something is WordParameter ||
                      something is IdentifierParameter ||
                      something is ValueParameter ||
                      something is ExpressionParameter ||
                      (something is AssignmentParameter ap && (ap.Name.ToLower() == "r" || ap.Name.ToLower() == "resistance"))))
                {
                    context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                      ValidationEntryLevel.Warning,
                                                                      $"Third parameter needs to represent resistance of resistor", parameters.LineInfo));
                    return(null);
                }

                // Set resistance
                if (something is AssignmentParameter asp)
                {
                    context.SetParameter(res, "resistance", asp, true, isDynamic);
                }
                else
                {
                    context.SetParameter(res, "resistance", something, true, isDynamic);
                }
            }
            else
            {
                var resistorParameters = new List <Parameter>(parameters.Skip(Resistor.ResistorPinCount).ToArray());

                // RName Node1 Node2 something param1 ...
                if (resistorParameters.Count == 0)
                {
                    context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                      ValidationEntryLevel.Warning,
                                                                      $"Resistor doesn't have at least 3 parameters", parameters.LineInfo));
                    return(null);
                }

                var something = resistorParameters[0];

                // Check if something is a model name
                bool hasModelSyntax = (something is WordParameter || something is IdentifierParameter) &&
                                      context.ModelsRegistry.FindModel <ResistorModel>(something.Image) != null;
                bool hasTcParameter = parameters.Any(
                    p => p is AssignmentParameter ap && ap.Name.Equals(
                        "tc",
                        context.CaseSensitivity.IsEntityParameterNameCaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase));

                AssignmentParameter tcParameter = null;

                if (hasTcParameter)
                {
                    tcParameter = (AssignmentParameter)parameters.Single(
                        p => p is AssignmentParameter ap && ap.Name.Equals(
                            "tc",
                            context.CaseSensitivity.IsEntityParameterNameCaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase));
                    resistorParameters.Remove(tcParameter);
                }

                if (hasModelSyntax)
                {
                    var modelNameParameter = resistorParameters[0];

                    // Ignore tc parameter on resistor ...
                    context.SimulationPreparations.ExecuteActionBeforeSetup((simulation) =>
                    {
                        context.ModelsRegistry.SetModel(
                            res,
                            simulation,
                            modelNameParameter,
                            $"Could not find model {modelNameParameter} for resistor {name}",
                            (ResistorModel model) => res.Model = model.Name,
                            context.Result);
                    });

                    resistorParameters.RemoveAt(0);

                    if (resistorParameters.Count > 0 && (resistorParameters[0] is WordParameter ||
                                                         resistorParameters[0] is IdentifierParameter ||
                                                         resistorParameters[0] is ValueParameter ||
                                                         resistorParameters[0] is ExpressionParameter))
                    {
                        context.SetParameter(res, "resistance", resistorParameters[0].Image, true);
                        resistorParameters.RemoveAt(0);
                    }
                }
                else
                {
                    if (hasTcParameter)
                    {
                        var model = new ResistorModel(res.Name + "_default_model");
                        if (tcParameter.Values.Count == 2)
                        {
                            context.SetParameter(model, "tc1", tcParameter.Values[0]);
                            context.SetParameter(model, "tc2", tcParameter.Values[1]);
                        }
                        else
                        {
                            context.SetParameter(model, "tc1", tcParameter.Value);
                        }

                        context.ModelsRegistry.RegisterModelInstance(model);
                        res.Model = model.Name;
                        context.Result.AddEntity(model);
                    }

                    // Check if something can be resistance
                    var resistanceParameter = resistorParameters[0];

                    if (!(resistanceParameter is WordParameter ||
                          resistanceParameter is IdentifierParameter ||
                          resistanceParameter is ValueParameter ||
                          resistanceParameter is ExpressionParameter ||
                          (resistanceParameter is AssignmentParameter ap && !(ap.Name.ToLower() == "r" || ap.Name.ToLower() == "resistance"))))
                    {
                        context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                          ValidationEntryLevel.Warning,
                                                                          $"Invalid value for resistance", parameters.LineInfo));
                        return(null);
                    }

                    if (resistanceParameter is AssignmentParameter asp)
                    {
                        context.SetParameter(res, "resistance", asp.Value, true, isDynamic);
                    }
                    else
                    {
                        context.SetParameter(res, "resistance", resistanceParameter.Image, true, isDynamic);
                    }

                    resistorParameters.RemoveAt(0);
                }

                foreach (var parameter in resistorParameters)
                {
                    if (parameter is AssignmentParameter ap)
                    {
                        try
                        {
                            context.SetParameter(res, ap.Name, ap.Value);
                        }
                        catch (Exception e)
                        {
                            context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                              ValidationEntryLevel.Warning,
                                                                              $"Can't set parameter for resistor: '{parameter.Image}'", parameters.LineInfo));
                            return(null);
                        }
                    }
                    else
                    {
                        context.Result.Validation.Add(new ValidationEntry(ValidationEntrySource.Reader,
                                                                          ValidationEntryLevel.Warning,
                                                                          $"Invalid parameter for resistor: '{parameter.Image}'", parameters.LineInfo));
                        return(null);
                    }
                }
            }

            return(res);
        }