Exemplo n.º 1
0
        /// <summary>
        /// Do temperature-dependent calculations
        /// </summary>
        /// <param name="ckt">The circuit</param>
        public override void Temperature(Circuit ckt)
        {
            double        factor;
            double        difference;
            ResistorModel model = Model as ResistorModel ?? defaultmodel;

            // Default Value Processing for Resistor Instance
            if (!REStemp.Given)
            {
                REStemp.Value = ckt.State.Temperature;
            }
            if (!RESwidth.Given)
            {
                RESwidth.Value = model?.RESdefWidth ?? 0.0;
            }
            if (!RESlength.Given)
            {
                RESlength.Value = 0;
            }
            if (!RESresist.Given)
            {
                if (model.RESsheetRes.Given && (model.RESsheetRes != 0) && (RESlength != 0))
                {
                    RESresist.Value = model.RESsheetRes * (RESlength - model.RESnarrow) / (RESwidth - model.RESnarrow);
                }
                else
                {
                    CircuitWarning.Warning(this, string.Format("{0}: resistance=0, set to 1000", Name ?? "NULL"));
                    RESresist.Value = 1000;
                }
            }

            if (model != null)
            {
                difference = REStemp - model.REStnom;
                factor     = 1.0 + (model.REStempCoeff1) * difference + (model.REStempCoeff2) * difference * difference;
            }
            else
            {
                difference = REStemp - 300.15;
                factor     = 1.0;
            }

            RESconduct = 1.0 / (RESresist * factor);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Set the model for the resistor
 /// </summary>
 /// <param name="model"></param>
 public void SetModel(ResistorModel model) => Model = model;