コード例 #1
0
ファイル: resistor.cpp プロジェクト: Freecore/qucs
void resistor::initTR (void) {
  initDC ();
}

void resistor::calcTR (nr_double_t) {
  calcDC ();
}

// Initialize computation of MNA matrix entries for HB.
void resistor::initHB (void) {
  initModel ();
  nr_double_t r = getScaledProperty ("R");
  setVoltageSources (1);
  setInternalVoltageSource (1);
  allocMatrixMNA ();
  voltageSource (VSRC_1, NODE_1, NODE_2);
  setD (VSRC_1, VSRC_1, -r);
}

// properties
PROP_REQ [] = {
  { "R", PROP_REAL, { 50, PROP_NO_STR }, PROP_NO_RANGE }, PROP_NO_PROP };
PROP_OPT [] = {
  { "Temp", PROP_REAL, { 26.85, PROP_NO_STR }, PROP_MIN_VAL (K) },
  { "Tc1", PROP_REAL, { 0, PROP_NO_STR }, PROP_NO_RANGE },
  { "Tc2", PROP_REAL, { 0, PROP_NO_STR }, PROP_NO_RANGE },
  { "Tnom", PROP_REAL, { 26.85, PROP_NO_STR }, PROP_MIN_VAL (K) },
  PROP_NO_PROP };
struct define_t resistor::cirdef =
  { "R", 2, PROP_COMPONENT, PROP_NO_SUBSTRATE, PROP_LINEAR, PROP_DEF };
コード例 #2
0
ファイル: opamp.cpp プロジェクト: Freecore/qucs
  setE (VSRC_1, Uin * gv - Uout);
}

void opamp::calcOperatingPoints (void) {
  setOperatingPoint ("g", gv);
}

void opamp::initAC (void) {
  initDC ();
  setC (VSRC_1, NODE_INP, +gv);
  setC (VSRC_1, NODE_INM, -gv);
}

void opamp::initTR (void) {
  initDC ();
}

void opamp::calcTR (nr_double_t) {
  calcDC ();
}

// properties
PROP_REQ [] = {
  { "G", PROP_REAL, { 1e6, PROP_NO_STR }, PROP_MIN_VAL (1) },
  PROP_NO_PROP };
PROP_OPT [] = {
  { "Umax", PROP_REAL, { 15, PROP_NO_STR }, PROP_POS_RANGE },
  PROP_NO_PROP };
struct define_t opamp::cirdef =
  { "OpAmp", 3, PROP_COMPONENT, PROP_NO_SUBSTRATE, PROP_NONLINEAR, PROP_DEF };
コード例 #3
0
ファイル: amplifier.cpp プロジェクト: Tushar1313/qucs_cvs
void amplifier::calcNoiseAC (nr_double_t) {
  nr_double_t g = getPropertyDouble ("G");
  nr_double_t z2 = getPropertyDouble ("Z2");
  nr_double_t NF = getPropertyDouble ("NF");
  setN (NODE_1, NODE_1, 0);
  setN (NODE_2, NODE_2, 4 * sqr (g) * (NF - 1) / z2);
  setN (NODE_1, NODE_2, 0);
  setN (NODE_2, NODE_1, 0);
}

/*! Transient model initialization.

    Idem than DC model.
*/
void amplifier::initTR (void) {
  initDC ();
}

// properties
PROP_REQ [] = {
  { "G", PROP_REAL, { 10, PROP_NO_STR }, PROP_MIN_VAL (1) },
  PROP_NO_PROP };
PROP_OPT [] = {
  { "Z1", PROP_REAL, { 50, PROP_NO_STR }, PROP_POS_RANGE },
  { "Z2", PROP_REAL, { 50, PROP_NO_STR }, PROP_POS_RANGE },
  { "NF", PROP_REAL, { 1, PROP_NO_STR }, PROP_MIN_VAL (1) },
  PROP_NO_PROP };
struct define_t amplifier::cirdef =
  { "Amp", 2, PROP_COMPONENT, PROP_NO_SUBSTRATE, PROP_LINEAR, PROP_DEF };
コード例 #4
0
  convHelper = CONV_None;
  eqnAlgo = ALGO_LU_SUBSTITUTION_CROUT;

  // compute noise voltage for each node (and voltage source)
  for (int i = 0; i < N + M; i++) {
    z->set (0); z->set (i, -1); // modify right hand side appropriately
    runMNA ();                  // solve
    zn = *x;                    // save transimpedance vector

    // compute actual noise voltage
    xn->set (i, sqrt (real (scalar (zn * (*C), conj (zn)))));
  }

  // restore usual AC results
  *x = xsave;
}

// properties
PROP_REQ [] = {
  { "Type", PROP_STR, { PROP_NO_VAL, "lin" }, PROP_RNG_TYP },
  PROP_NO_PROP };
PROP_OPT [] = {
  { "Noise", PROP_STR, { PROP_NO_VAL, "no" }, PROP_RNG_YESNO },
  { "Start", PROP_REAL, { 1e9, PROP_NO_STR }, PROP_POS_RANGE },
  { "Stop", PROP_REAL, { 10e9, PROP_NO_STR }, PROP_POS_RANGE },
  { "Points", PROP_INT, { 10, PROP_NO_STR }, PROP_MIN_VAL (2) },
  { "Values", PROP_LIST, { 10, PROP_NO_STR }, PROP_POS_RANGE },
  PROP_NO_PROP };
struct define_t acsolver::anadef =
  { "AC", 0, PROP_ACTION, PROP_NO_SUBSTRATE, PROP_LINEAR, PROP_DEF };