/// <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); }
/// <summary> /// Set the model for the resistor /// </summary> /// <param name="model"></param> public void SetModel(ResistorModel model) => Model = model;