public override IEntity Generate( string componentIdentifier, string originalName, string type, ParameterCollection parameters, ICircuitContext context) { if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v")) { var entity = new BehavioralVoltageSource(componentIdentifier); context.CreateNodes(entity, parameters); var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v"); entity.Parameters.Expression = expressionParameter.Value; entity.Parameters.ParseAction = (expression) => { var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(null), false, context.CaseSensitivity); return(parser.Resolve(expression)); }; return(entity); } if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i")) { var entity = new BehavioralCurrentSource(componentIdentifier); context.CreateNodes(entity, parameters); var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i"); entity.Parameters.Expression = expressionParameter.Value; entity.Parameters.ParseAction = (expression) => { var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(null), false, context.CaseSensitivity); return(parser.Resolve(expression)); }; return(entity); } return(null); }
public override SpiceSharp.Components.Component Generate( string componentIdentifier, string originalName, string type, ParameterCollection parameters, ICircuitContext context) { if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v")) { var entity = new BehavioralVoltageSource(componentIdentifier); context.CreateNodes(entity, parameters); var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v"); var baseParameters = entity.ParameterSets.Get <SpiceSharpBehavioral.Components.BehavioralBehaviors.BaseParameters>(); baseParameters.Expression = expressionParameter.Value; baseParameters.Parser = (sim) => CreateParser(context, sim); return(entity); } if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i")) { var entity = new BehavioralCurrentSource(componentIdentifier); context.CreateNodes(entity, parameters); var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i"); var baseParameters = entity.ParameterSets.Get <SpiceSharpBehavioral.Components.BehavioralBehaviors.BaseParameters>(); baseParameters.Expression = expressionParameter.Value; baseParameters.Parser = (sim) => CreateParser(context, sim); return(entity); } return(null); }