void strafo::initAC (void) { nr_double_t t1 = getPropertyDouble ("T1"); nr_double_t t2 = getPropertyDouble ("T2"); setVoltageSources (2); allocMatrixMNA (); setB (NODE_1, VSRC_1, -1.0); setB (NODE_2, VSRC_1, + t1); setB (NODE_3, VSRC_1, - t1); setB (NODE_4, VSRC_1, +0.0); setB (NODE_5, VSRC_1, +0.0); setB (NODE_6, VSRC_1, +1.0); setB (NODE_1, VSRC_2, +0.0); setB (NODE_2, VSRC_2, + t2); setB (NODE_3, VSRC_2, - t2); setB (NODE_4, VSRC_2, +1.0); setB (NODE_5, VSRC_2, -1.0); setB (NODE_6, VSRC_2, +0.0); setC (VSRC_1, NODE_1, +1.0); setC (VSRC_1, NODE_2, - t1); setC (VSRC_1, NODE_3, + t1); setC (VSRC_1, NODE_4, +0.0); setC (VSRC_1, NODE_5, +0.0); setC (VSRC_1, NODE_6, -1.0); setC (VSRC_2, NODE_1, +0.0); setC (VSRC_2, NODE_2, - t2); setC (VSRC_2, NODE_3, + t2); setC (VSRC_2, NODE_4, -1.0); setC (VSRC_2, NODE_5, +1.0); setC (VSRC_2, NODE_6, +0.0); setD (VSRC_1, VSRC_1, 0); setD (VSRC_2, VSRC_2, 0); setD (VSRC_1, VSRC_2, 0); setD (VSRC_2, VSRC_1, 0); setE (VSRC_1, 0.0); setE (VSRC_2, 0.0); }
void mutual::calcTR (nr_double_t) { nr_double_t k = getPropertyDouble ("k"); nr_double_t l1 = getPropertyDouble ("L1"); nr_double_t l2 = getPropertyDouble ("L2"); nr_double_t i1 = real (getJ (VSRC_1)); nr_double_t i2 = real (getJ (VSRC_2)); nr_double_t r11, r12, r21, r22, v11, v22, v12, v21; nr_double_t M12 = k * sqrt (l1 * l2); // self inductances setState (fState11, i1 * l1); integrate (fState11, l1, r11, v11); setState (fState22, i2 * l2); integrate (fState22, l2, r22, v22); // mutual inductances setState (fState12, i2 * M12); integrate (fState12, M12, r12, v12); setState (fState21, i1 * M12); integrate (fState21, M12, r21, v21); setD (VSRC_1, VSRC_1, -r11); setD (VSRC_1, VSRC_2, -r12); setD (VSRC_2, VSRC_2, -r22); setD (VSRC_2, VSRC_1, -r21); setE (VSRC_1, v11 + v12); setE (VSRC_2, v22 + v21); }
void opamp::initDC (void) { allocMatrixMNA (); setB (NODE_INP, VSRC_1, 0); setB (NODE_OUT, VSRC_1, 1); setB (NODE_INM, VSRC_1, 0); setC (VSRC_1, NODE_OUT, -1); setD (VSRC_1, VSRC_1, 0); setE (VSRC_1, 0); }
// Set from Botan representation void BotanGOSTPrivateKey::setFromBotan(const Botan::GOST_3410_PrivateKey* inECKEY) { ByteString inEC = BotanUtil::ecGroup2ByteString(inECKEY->domain()); setEC(inEC); ByteString inD = BotanUtil::bigInt2ByteStringPrefix(inECKEY->private_value(), 32); setD(inD); }
// Set from Botan representation void BotanECDHPrivateKey::setFromBotan(const Botan::ECDH_PrivateKey* inECKEY) { ByteString inEC = BotanUtil::ecGroup2ByteString(inECKEY->domain()); setEC(inEC); ByteString inD = BotanUtil::bigInt2ByteString(inECKEY->private_value()); setD(inD); }
bool RSAPrivateKey::deserialise(ByteString& serialised) { ByteString dP = ByteString::chainDeserialise(serialised); ByteString dQ = ByteString::chainDeserialise(serialised); ByteString dPQ = ByteString::chainDeserialise(serialised); ByteString dDP1 = ByteString::chainDeserialise(serialised); ByteString dDQ1 = ByteString::chainDeserialise(serialised); ByteString dD = ByteString::chainDeserialise(serialised); ByteString dN = ByteString::chainDeserialise(serialised); ByteString dE = ByteString::chainDeserialise(serialised); if ((dD.size() == 0) || (dN.size() == 0) || (dE.size() == 0)) { return false; } setP(dP); setQ(dQ); setPQ(dPQ); setDP1(dDP1); setDQ1(dDQ1); setD(dD); setN(dN); setE(dE); return true; }
// Set from Botan representation void BotanECDHPrivateKey::setFromBotan(const Botan::ECDH_PrivateKey* eckey) { ByteString ec = BotanUtil::ecGroup2ByteString(eckey->domain()); setEC(ec); ByteString d = BotanUtil::bigInt2ByteString(eckey->private_value()); setD(d); }
Quaternion::Quaternion() : Vector(4) { setA(1.0f); setB(0.0f); setC(0.0f); setD(0.0f); }
void tline::initTR (void) { nr_double_t l = getPropertyDouble ("L"); nr_double_t z = getPropertyDouble ("Z"); deleteHistory (); if (l > 0.0) { setVoltageSources (2); allocMatrixMNA (); setHistory (true); initHistory (l / C0); setB (NODE_1, VSRC_1, +1); setB (NODE_2, VSRC_2, +1); setC (VSRC_1, NODE_1, +1); setC (VSRC_2, NODE_2, +1); setD (VSRC_1, VSRC_1, -z); setD (VSRC_2, VSRC_2, -z); } else { setVoltageSources (1); allocMatrixMNA (); voltageSource (VSRC_1, NODE_1, NODE_2); } }
Quaternion::Quaternion(float a, float b, float c, float d) : Vector(4) { setA(a); setB(b); setC(c); setD(d); }
// 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); }
void EllipsePosition::setDiangle(double dia) { #ifndef WIN32 assert( !std::isnan(dia) ); #else assert( !isnan(dia) ); #endif diangle = dia; setD(); }
TransformationMatrix::TransformationMatrix(const CGAffineTransform& t) { setA(t.a); setB(t.b); setC(t.c); setD(t.d); setE(t.tx); setF(t.ty); }
void mutual2::calcTR (nr_double_t) { nr_double_t k12 = getPropertyDouble ("k12"); nr_double_t k13 = getPropertyDouble ("k13"); nr_double_t k23 = getPropertyDouble ("k23"); nr_double_t l1 = getPropertyDouble ("L1"); nr_double_t l2 = getPropertyDouble ("L2"); nr_double_t l3 = getPropertyDouble ("L3"); nr_double_t M12 = k12 * sqrt (l1 * l2); nr_double_t M13 = k13 * sqrt (l1 * l3); nr_double_t M23 = k23 * sqrt (l2 * l3); nr_double_t r11, r12, r13, r21, r22, r23, r31, r32, r33; nr_double_t v11, v12, v13, v21, v22, v23, v31, v32, v33; nr_double_t i1 = real (getJ (VSRC_1)); nr_double_t i2 = real (getJ (VSRC_2)); nr_double_t i3 = real (getJ (VSRC_3)); setState (fState11, i1 * l1); integrate (fState11, l1, r11, v11); setState (fState22, i2 * l2); integrate (fState22, l2, r22, v22); setState (fState33, i3 * l3); integrate (fState33, l3, r33, v33); setState (fState12, i2 * M12); integrate (fState12, M12, r12, v12); setState (fState13, i3 * M13); integrate (fState13, M13, r13, v13); setState (fState21, i1 * M12); integrate (fState21, M12, r21, v21); setState (fState23, i3 * M23); integrate (fState23, M23, r23, v23); setState (fState31, i1 * M13); integrate (fState31, M13, r31, v31); setState (fState32, i2 * M23); integrate (fState32, M23, r32, v32); setD (VSRC_1, VSRC_1, -r11); setD (VSRC_1, VSRC_2, -r12); setD (VSRC_1, VSRC_3, -r13); setD (VSRC_2, VSRC_1, -r21); setD (VSRC_2, VSRC_2, -r22); setD (VSRC_2, VSRC_3, -r23); setD (VSRC_3, VSRC_1, -r31); setD (VSRC_3, VSRC_2, -r32); setD (VSRC_3, VSRC_3, -r33); setE (VSRC_1, v11 + v12 + v13); setE (VSRC_2, v21 + v22 + v23); setE (VSRC_3, v31 + v32 + v33); }
void dcfeed::calcTR (nr_double_t) { nr_double_t l = getPropertyDouble ("L"); nr_double_t r, v; nr_double_t i = real (getJ (VSRC_1)); setState (fState, i * l); integrate (fState, l, r, v); setD (VSRC_1, VSRC_1, -r); setE (VSRC_1, v); }
void digisource::initDC (void) { char * init = getPropertyString ("init"); nr_double_t v = getPropertyDouble ("V"); bool lo = !strcmp (init, "low"); allocMatrixMNA (); setC (VSRC_1, NODE_1, 1.0); setB (NODE_1, VSRC_1, 1.0); setD (VSRC_1, VSRC_1, 0.0); setE (VSRC_1, lo ? 0 : v); }
void vcvs::initDC (void) { nr_double_t g = getPropertyDouble ("G"); allocMatrixMNA (); setC (VSRC_1, NODE_1, +g); setC (VSRC_1, NODE_2, -1.0); setC (VSRC_1, NODE_3, +1.0); setC (VSRC_1, NODE_4, -g); setB (NODE_1, VSRC_1, +0); setB (NODE_2, VSRC_1, -1.0); setB (NODE_3, VSRC_1, +1.0); setB (NODE_4, VSRC_1, +0); setD (VSRC_1, VSRC_1, 0.0); setE (VSRC_1, 0.0); }
void cccs::initDC (void) { setISource (false); allocMatrixMNA (); nr_double_t g = getPropertyDouble ("G"); setC (VSRC_1, NODE_1, +1.0); setC (VSRC_1, NODE_2, +0.0); setC (VSRC_1, NODE_3, +0.0); setC (VSRC_1, NODE_4, -1.0); setB (NODE_1, VSRC_1, +1/g); setB (NODE_2, VSRC_1, +1.0); setB (NODE_3, VSRC_1, -1.0); setB (NODE_4, VSRC_1, -1/g); setD (VSRC_1, VSRC_1, 0.0); setE (VSRC_1, 0.0); }
Quaternion::Quaternion(const Dcm &dcm) : Vector(4) { setA(0.5f * sqrtf(1 + dcm(0, 0) + dcm(1, 1) + dcm(2, 2))); setB((dcm(2, 1) - dcm(1, 2)) / (4 * getA())); setC((dcm(0, 2) - dcm(2, 0)) / (4 * getA())); setD((dcm(1, 0) - dcm(0, 1)) / (4 * getA())); }
void circulator::initDC (void) { nr_double_t z1 = getPropertyDouble ("Z1"); nr_double_t z2 = getPropertyDouble ("Z2"); nr_double_t z3 = getPropertyDouble ("Z3"); nr_double_t r1 = (z0 - z1) / (z0 + z1); nr_double_t r2 = (z0 - z2) / (z0 + z2); nr_double_t r3 = (z0 - z3) / (z0 + z3); nr_double_t d = 1 - r1 * r2 * r3; nr_double_t s11 = (r2 * r3 - r1) / d; nr_double_t s22 = (r1 * r3 - r2) / d; nr_double_t s33 = (r1 * r2 - r3) / d; nr_double_t s12 = sqrt (z2/z1) * (z1+z0) / (z2+z0) * r3 * (1-r1*r1) / d; nr_double_t s23 = sqrt (z3/z2) * (z2+z0) / (z3+z0) * r1 * (1-r2*r2) / d; nr_double_t s31 = sqrt (z1/z3) * (z3+z0) / (z1+z0) * r2 * (1-r3*r3) / d; nr_double_t s21 = sqrt (z1/z2) * (z2+z0) / (z1+z0) * (1-r2*r2) / d; nr_double_t s13 = sqrt (z3/z1) * (z1+z0) / (z3+z0) * (1-r1*r1) / d; nr_double_t s32 = sqrt (z2/z3) * (z3+z0) / (z2+z0) * (1-r3*r3) / d; allocMatrixMNA (); setB (NODE_1, VSRC_1, +1.0); setB (NODE_1, VSRC_2, +0.0); setB (NODE_1, VSRC_3, +0.0); setB (NODE_2, VSRC_1, +0.0); setB (NODE_2, VSRC_2, +1.0); setB (NODE_2, VSRC_3, +0.0); setB (NODE_3, VSRC_1, +0.0); setB (NODE_3, VSRC_2, +0.0); setB (NODE_3, VSRC_3, +1.0); setC (VSRC_1, NODE_1, s11 - 1.0); setC (VSRC_1, NODE_2, s12); setC (VSRC_1, NODE_3, s13); setC (VSRC_2, NODE_1, s21); setC (VSRC_2, NODE_2, s22 - 1.0); setC (VSRC_2, NODE_3, s23); setC (VSRC_3, NODE_1, s31); setC (VSRC_3, NODE_2, s32); setC (VSRC_3, NODE_3, s33 - 1.0); setD (VSRC_1, VSRC_1, z0 * (s11 + 1.0)); setD (VSRC_1, VSRC_2, z0 * s12); setD (VSRC_1, VSRC_3, z0 * s13); setD (VSRC_2, VSRC_1, z0 * s21); setD (VSRC_2, VSRC_2, z0 * (s22 + 1.0)); setD (VSRC_2, VSRC_3, z0 * s23); setD (VSRC_3, VSRC_1, z0 * s31); setD (VSRC_3, VSRC_2, z0 * s32); setD (VSRC_3, VSRC_3, z0 * (s33 + 1.0)); setE (VSRC_1, +0.0); setE (VSRC_2, +0.0); setE (VSRC_3, +0.0); }
// Set from OpenSSL representation void OSSLGOSTPrivateKey::setFromOSSL(const EVP_PKEY* pkey) { const EC_KEY* eckey = (const EC_KEY*) EVP_PKEY_get0((EVP_PKEY*) pkey); const BIGNUM* priv = EC_KEY_get0_private_key(eckey); setD(OSSL::bn2ByteString(priv)); ByteString inEC; int nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(eckey)); inEC.resize(i2d_ASN1_OBJECT(OBJ_nid2obj(nid), NULL)); unsigned char *p = &inEC[0]; i2d_ASN1_OBJECT(OBJ_nid2obj(nid), &p); setEC(inEC); }
bool OSSLGOSTPrivateKey::deserialise(ByteString& serialised) { ByteString dD = ByteString::chainDeserialise(serialised); if (dD.size() == 0) { return false; } setD(dD); return true; }
void isolator::initDC (void) { nr_double_t z1 = getPropertyDouble ("Z1"); nr_double_t z2 = getPropertyDouble ("Z2"); #if AUGMENTED nr_double_t z21 = 2 * sqrt (z1 * z2); setVoltageSources (2); allocMatrixMNA (); setB (NODE_1, VSRC_1, +1.0); setB (NODE_1, VSRC_2, +0.0); setB (NODE_2, VSRC_1, +0.0); setB (NODE_2, VSRC_2, +1.0); setC (VSRC_1, NODE_1, -1.0); setC (VSRC_1, NODE_2, +0.0); setC (VSRC_2, NODE_1, +0.0); setC (VSRC_2, NODE_2, -1.0); setD (VSRC_1, VSRC_1, +z1); setD (VSRC_2, VSRC_2, +z2); setD (VSRC_1, VSRC_2, +0.0); setD (VSRC_2, VSRC_1, +z21); setE (VSRC_1, +0.0); setE (VSRC_2, +0.0); #else setVoltageSources (0); allocMatrixMNA (); setY (NODE_1, NODE_1, 1 / z1); setY (NODE_1, NODE_2, 0); setY (NODE_2, NODE_1, -2 / sqrt (z1 * z2)); setY (NODE_2, NODE_2, 1 / z2); #endif }
Quaternion::Quaternion(const Dcm &dcm) : Vector(4) { // avoiding singularities by not using // division equations setA(0.5 * sqrt(1.0 + double(dcm(0, 0) + dcm(1, 1) + dcm(2, 2)))); setB(0.5 * sqrt(1.0 + double(dcm(0, 0) - dcm(1, 1) - dcm(2, 2)))); setC(0.5 * sqrt(1.0 + double(-dcm(0, 0) + dcm(1, 1) - dcm(2, 2)))); setD(0.5 * sqrt(1.0 + double(-dcm(0, 0) - dcm(1, 1) + dcm(2, 2)))); }
// Set from OpenSSL representation void OSSLECPrivateKey::setFromOSSL(const EC_KEY* inECKEY) { const EC_GROUP* grp = EC_KEY_get0_group(inECKEY); if (grp != NULL) { ByteString inEC = OSSL::grp2ByteString(grp); setEC(inEC); } const BIGNUM* pk = EC_KEY_get0_private_key(inECKEY); if (pk != NULL) { ByteString inD = OSSL::bn2ByteString(pk); setD(inD); } }
void Trapezoid::configure(const std::string& parameters) { if (parameters.empty()) return; std::vector<std::string> values = Op::split(parameters, " "); std::size_t required = 4; if (values.size() < required) { std::ostringstream ex; ex << "[configuration error] term <" << className() << ">" << " requires <" << required << "> parameters"; throw fl::Exception(ex.str(), FL_AT); } setA(Op::toScalar(values.at(0))); setB(Op::toScalar(values.at(1))); setC(Op::toScalar(values.at(2))); setD(Op::toScalar(values.at(3))); }
void inductor::calcTR (nr_double_t) { nr_double_t l = getPropertyDouble ("L"); nr_double_t r, v; nr_double_t i = real (getJ (VSRC_1)); /* apply initial condition if requested */ if (getMode () == MODE_INIT && isPropertyGiven ("I")) { i = getPropertyDouble ("I"); } setState (fState, i * l); integrate (fState, l, r, v); setD (VSRC_1, VSRC_1, -r); setE (VSRC_1, v); }
bool BotanGOSTPrivateKey::deserialise(ByteString& serialised) { ByteString dEC = ByteString::chainDeserialise(serialised); ByteString dD = ByteString::chainDeserialise(serialised); if ((dEC.size() == 0) || (dD.size() == 0)) { return false; } setEC(dEC); setD(dD); return true; }
Quaternion::Quaternion(const EulerAngles &euler) : Vector(4) { float cosPhi_2 = cosf(euler.getPhi() / 2.0f); float cosTheta_2 = cosf(euler.getTheta() / 2.0f); float cosPsi_2 = cosf(euler.getPsi() / 2.0f); float sinPhi_2 = sinf(euler.getPhi() / 2.0f); float sinTheta_2 = sinf(euler.getTheta() / 2.0f); float sinPsi_2 = sinf(euler.getPsi() / 2.0f); setA(cosPhi_2 * cosTheta_2 * cosPsi_2 + sinPhi_2 * sinTheta_2 * sinPsi_2); setB(sinPhi_2 * cosTheta_2 * cosPsi_2 - cosPhi_2 * sinTheta_2 * sinPsi_2); setC(cosPhi_2 * sinTheta_2 * cosPsi_2 + sinPhi_2 * cosTheta_2 * sinPsi_2); setD(cosPhi_2 * cosTheta_2 * sinPsi_2 + sinPhi_2 * sinTheta_2 * cosPsi_2); }
Quaternion::Quaternion(const EulerAngles &euler) : Vector(4) { double cosPhi_2 = cos(double(euler.getPhi()) / 2.0); double sinPhi_2 = sin(double(euler.getPhi()) / 2.0); double cosTheta_2 = cos(double(euler.getTheta()) / 2.0); double sinTheta_2 = sin(double(euler.getTheta()) / 2.0); double cosPsi_2 = cos(double(euler.getPsi()) / 2.0); double sinPsi_2 = sin(double(euler.getPsi()) / 2.0); setA(cosPhi_2 * cosTheta_2 * cosPsi_2 + sinPhi_2 * sinTheta_2 * sinPsi_2); setB(sinPhi_2 * cosTheta_2 * cosPsi_2 - cosPhi_2 * sinTheta_2 * sinPsi_2); setC(cosPhi_2 * sinTheta_2 * cosPsi_2 + sinPhi_2 * cosTheta_2 * sinPsi_2); setD(cosPhi_2 * cosTheta_2 * sinPsi_2 - sinPhi_2 * sinTheta_2 * cosPsi_2); }