/// <summary> /// Setup behavior /// </summary> /// <param name="context">Provider</param> public override void Bind(Simulation simulation, BindingContext context) { base.Bind(simulation, context); // Get parameter sets _mbp = context.GetParameterSet <ModelBaseParameters>("model"); _bp = context.GetParameterSet <BaseParameters>(); // Get behaviors _load = context.GetBehavior <BiasingBehavior>(); _temp = context.GetBehavior <TemperatureBehavior>(); if (context is ComponentBindingContext cc) { _drainNode = cc.Pins[0]; _gateNode = cc.Pins[1]; _sourceNode = cc.Pins[2]; _bulkNode = cc.Pins[3]; } _state = ((FrequencySimulation)simulation).ComplexState; var solver = _state.Solver; _drainNodePrime = _load.DrainNodePrime; _sourceNodePrime = _load.SourceNodePrime; _qNode = _load.QNode; DdPtr = solver.GetMatrixElement(_drainNode, _drainNode); GgPtr = solver.GetMatrixElement(_gateNode, _gateNode); SsPtr = solver.GetMatrixElement(_sourceNode, _sourceNode); BbPtr = solver.GetMatrixElement(_bulkNode, _bulkNode); DPdpPtr = solver.GetMatrixElement(_drainNodePrime, _drainNodePrime); SPspPtr = solver.GetMatrixElement(_sourceNodePrime, _sourceNodePrime); DdpPtr = solver.GetMatrixElement(_drainNode, _drainNodePrime); GbPtr = solver.GetMatrixElement(_gateNode, _bulkNode); GdpPtr = solver.GetMatrixElement(_gateNode, _drainNodePrime); GspPtr = solver.GetMatrixElement(_gateNode, _sourceNodePrime); SspPtr = solver.GetMatrixElement(_sourceNode, _sourceNodePrime); BdpPtr = solver.GetMatrixElement(_bulkNode, _drainNodePrime); BspPtr = solver.GetMatrixElement(_bulkNode, _sourceNodePrime); DPspPtr = solver.GetMatrixElement(_drainNodePrime, _sourceNodePrime); DPdPtr = solver.GetMatrixElement(_drainNodePrime, _drainNode); BgPtr = solver.GetMatrixElement(_bulkNode, _gateNode); DPgPtr = solver.GetMatrixElement(_drainNodePrime, _gateNode); SPgPtr = solver.GetMatrixElement(_sourceNodePrime, _gateNode); SPsPtr = solver.GetMatrixElement(_sourceNodePrime, _sourceNode); DPbPtr = solver.GetMatrixElement(_drainNodePrime, _bulkNode); SPbPtr = solver.GetMatrixElement(_sourceNodePrime, _bulkNode); SPdpPtr = solver.GetMatrixElement(_sourceNodePrime, _drainNodePrime); QqPtr = solver.GetMatrixElement(_qNode, _qNode); QdpPtr = solver.GetMatrixElement(_qNode, _drainNodePrime); QspPtr = solver.GetMatrixElement(_qNode, _sourceNodePrime); QgPtr = solver.GetMatrixElement(_qNode, _gateNode); QbPtr = solver.GetMatrixElement(_qNode, _bulkNode); DPqPtr = solver.GetMatrixElement(_drainNodePrime, _qNode); SPqPtr = solver.GetMatrixElement(_sourceNodePrime, _qNode); GqPtr = solver.GetMatrixElement(_gateNode, _qNode); BqPtr = solver.GetMatrixElement(_bulkNode, _qNode); }
/// <summary> /// Setup the behavior /// </summary> public override void Bind(Simulation simulation, BindingContext context) { base.Bind(simulation, context); _load = context.GetBehavior <BiasingBehavior>(); _load.TranBehavior = this; var method = ((TimeSimulation)simulation).Method; Qb = method.CreateDerivative(); Qg = method.CreateDerivative(); Qd = method.CreateDerivative(); }
/// <summary> /// Setup behavior /// </summary> /// <param name="context"></param> public override void Bind(Simulation simulation, BindingContext context) { base.Bind(simulation, context); // Get parameter sets _bp = context.GetParameterSet <BaseParameters>(); _mbp = context.GetParameterSet <ModelBaseParameters>(); // Get behaviors _temp = context.GetBehavior <TemperatureBehavior>(); _load = context.GetBehavior <BiasingBehavior>(); if (context is ComponentBindingContext cc) { _drainNode = cc.Pins[0]; _gateNode = cc.Pins[1]; _sourceNode = cc.Pins[2]; _bulkNode = cc.Pins[3]; } _drainNodePrime = _load.DrainNodePrime; _sourceNodePrime = _load.SourceNodePrime; }