// Outputs T^ijk V_i summing over ith (1st 2nd or 3rd) index. eg i = // 1: M_ij = T^kij V_k // 2: M_ij = T^jki V_k // 3: M_ij = T^ijk V_k // so the matrix indices are just in order from L-R AFTER summed index. DoubleMatrix Tensor::dotProd(const DoubleVector & V, int i) const { DoubleMatrix result(3, 3); int j, k, l; for (j=1; j<=3; j++) for (k=1; k<=3; k++) switch(i) { case 1: for (l=1; l<=3; l++) result(j, k) += display(l, j, k) * V.display(l); break; case 2: for (l=1; l<=3; l++) result(j, k) += display(k, l, j) * V.display(l); break; case 3: for (l=1; l<=3; l++) result(j, k) += display(j, k, l) * V.display(l); break; default: ostringstream ii; ii << "sum out of range in dot product " << *this << "*" << V << "(" << V.displayStart() << "," << V.displayEnd() << ")" << " on " << i << "th index.\n"; throw ii.str(); } return result; }
void NmssmSusy::set(const DoubleVector & y) { assert(y.displayEnd() - y.displayStart() + 1 >= numNMssmPars); MssmSusy::set(y); sVev = y.display(34); lambda = y.display(35); kappa = y.display(36); mupr = y.display(37); xiF = y.display(38); }
void gaugegravityBcs1( MssmSoftsusy & m, const DoubleVector & inputParameters ) { double M_moduli_local, M_gauge_local, M_mess_local ; M_moduli_local = inputParameters.display(1) ; double m1, m2, m3 ; m.setGaugeCoupling( 1, global_g1 ); m.setGaugeCoupling( 2, global_g2 ); m.setGaugeCoupling( 3, global_g3 ); m1 = l1 * M_moduli_local ; m2 = l2 * M_moduli_local ; m3 = l3 * M_moduli_local ; m.setGauginoMass( 1, m1 ) ; m.setGauginoMass( 2, m2 ) ; m.setGauginoMass( 3, m3 ) ; double mqlsq , mllsq, mursq, mdrsq, mersq ; double mhusq , mhdsq; double M_moduli_sqr_local; M_moduli_sqr_local = M_moduli_local*M_moduli_local ; mqlsq = ( 1 - nQ ) * M_moduli_sqr_local ; mllsq = ( 1 - nL ) * M_moduli_sqr_local ; mursq = ( 1 - nU ) * M_moduli_sqr_local ; mdrsq = ( 1 - nD ) * M_moduli_sqr_local ; mersq = ( 1 - nE ) * M_moduli_sqr_local ; mhusq = ( 1 - nHu) * M_moduli_sqr_local ; mhdsq = ( 1 - nHd) * M_moduli_sqr_local ; DoubleMatrix id(3, 3); id(1, 1) = 1.0; id(2, 2) = 1.0; id(3, 3) = 1.0; m.setSoftMassMatrix(mQl, mqlsq * id); m.setSoftMassMatrix(mUr, mursq * id); m.setSoftMassMatrix(mDr, mdrsq * id); m.setSoftMassMatrix(mLl, mllsq * id); m.setSoftMassMatrix(mEr, mersq * id); m.setMh1Squared(mhdsq); m.setMh2Squared(mhusq); double A_HuQU , A_HdQD, A_HdLE ; A_HuQU = ( 3 - nHu - nQ - nU ) * M_moduli_local ; A_HdQD = ( 3 - nHd - nQ - nD ) * M_moduli_local ; A_HdLE = ( 3 - nHd - nL - nE ) * M_moduli_local ; m.setTrilinearElement(UA, 1, 1, m.displayYukawaElement(YU, 1, 1) * A_HuQU); m.setTrilinearElement(UA, 2, 2, m.displayYukawaElement(YU, 2, 2) * A_HuQU); m.setTrilinearElement(UA, 3, 3, m.displayYukawaElement(YU, 3, 3) * A_HuQU); m.setTrilinearElement(DA, 1, 1, m.displayYukawaElement(YD, 1, 1) * A_HdQD); m.setTrilinearElement(DA, 2, 2, m.displayYukawaElement(YD, 2, 2) * A_HdQD); m.setTrilinearElement(DA, 3, 3, m.displayYukawaElement(YD, 3, 3) * A_HdQD); m.setTrilinearElement(EA, 1, 1, m.displayYukawaElement(YE, 1, 1) * A_HdLE); m.setTrilinearElement(EA, 2, 2, m.displayYukawaElement(YE, 2, 2) * A_HdLE); m.setTrilinearElement(EA, 3, 3, m.displayYukawaElement(YE, 3, 3) * A_HdLE); }
void StandardModel<Two_scale>::set(const DoubleVector& y) { int i, j, k = 0; for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++) { k++; yu(i, j) = y.display(k); yd(i, j) = y.display(k + 9); ye(i, j) = y.display(k + 18); } k = 27; for (i = 1; i <= 3; i++) { k++; g(i) = y.display(k); } }
// l labels the position the vector index goes in. // After that, indices are cyclic. Tensor outerProduct(const DoubleVector &V, const DoubleMatrix & M, int l) { Tensor temp; int i, j, k; for (i=1; i<=3; i++) for (j=1; j<=3; j++) for (k=1; k<=3; k++) { switch(l) { case 1: temp(i, j, k) = V.display(i) * M.display(j, k); break; case 2: temp(i, j, k) = V.display(j) * M.display(k, i); break; case 3: temp(i, j, k) = V.display(k) * M.display(i, j); break; default: ostringstream ii; ii << "Trying to outer product " << l << "th element of tensor"; throw ii.str(); break; } } return temp; }
void MssmSusy::set(const DoubleVector & y) { int i, j, k=0; for (i=1; i<=3; i++) for (j=1; j<=3; j++){ k++; u(i, j) = y.display(k); d(i, j) = y.display(k+9); e(i, j) = y.display(k+18); } k=27; for (i=1; i<=3; i++) { k++; g(i) = y.display(k); } smu = y.display(31); tanb = y.display(32); hVev = y.display(33); }
void gaugegravityBcs2( MssmSoftsusy & m, const DoubleVector & inputParameters ) { double alpha1, alpha2 , alpha3 ; alpha1 = sqr(m.displayGaugeCoupling(1)) / ( 4.0 * PI ) ; alpha2 = sqr(m.displayGaugeCoupling(2)) / ( 4.0 * PI ) ; alpha3 = sqr(m.displayGaugeCoupling(3)) / ( 4.0 * PI ) ; double M_gauge_local ; M_gauge_local = inputParameters.display(2); m.setGaugeCoupling( 1, global_g1 ); m.setGaugeCoupling( 2, global_g2 ); m.setGaugeCoupling( 3, global_g3 ); double m1 , m2 , m3 ; m1 = inter_gaugino1 - N * alpha1 / (4.0*PI) * M_gauge_local ; m2 = inter_gaugino2 - N * alpha2 / (4.0*PI) * M_gauge_local ; m3 = inter_gaugino3 - N * alpha3 / (4.0*PI) * M_gauge_local ; m.setGauginoMass(1, m1) ; m.setGauginoMass(2, m2) ; m.setGauginoMass(3, m3) ; double mqlsq , mllsq, mursq, mdrsq, mersq ; double mhusq , mhdsq; double M_gauge_sqr_local; M_gauge_sqr_local = sqr( M_gauge_local ) ; mursq = 2.0/sqr( 4.0 * PI )*N * M_gauge_sqr_local * ( 4.0/3.0 * sqr(alpha3) + 0.6 * 4.0 / 9.0 * sqr(alpha1) ) ; mdrsq = 2.0/sqr( 4.0 * PI )*N * M_gauge_sqr_local * ( 4.0/3.0 * sqr(alpha3) + 0.6 * 1.0 / 9.0 * sqr(alpha1) ) ; mersq = 2.0/sqr( 4.0 * PI )*N * M_gauge_sqr_local * ( 0.6 * sqr(alpha1) ) ; mqlsq = 2.0/sqr( 4.0 * PI )*N * M_gauge_sqr_local * ( 4.0/3.0 * sqr(alpha3) + 0.75 * sqr(alpha2) + 0.6 /36.0 * sqr(alpha1)) ; mllsq = 2.0/sqr( 4.0 * PI )*N * M_gauge_sqr_local * ( 0.75 * sqr(alpha2) + 0.6*0.25 * sqr(alpha1) ) ; mhusq = mllsq; mhdsq = mllsq; DoubleMatrix id(3, 3); id(1, 1) = 1.0; id(2, 2) = 1.0; id(3, 3) = 1.0; m.setSoftMassMatrix(mQl, inter_massmQl + mqlsq * id); m.setSoftMassMatrix(mUr, inter_massmUr + mursq * id); m.setSoftMassMatrix(mDr, inter_massmDr + mdrsq * id); m.setSoftMassMatrix(mLl, inter_massmLl + mllsq * id); m.setSoftMassMatrix(mEr, inter_massmEr + mersq * id); m.setMh2Squared(inter_massmHu+ mhusq); m.setMh1Squared(inter_massmHd+ mhdsq); m.setTrilinearElement(UA, 1, 1, m.displayYukawaElement(YU, 1, 1) * inter_A_HuQU(1,1)); m.setTrilinearElement(UA, 2, 2, m.displayYukawaElement(YU, 2, 2) * inter_A_HuQU(2,2)); m.setTrilinearElement(UA, 3, 3, m.displayYukawaElement(YU, 3, 3) * inter_A_HuQU(3,3)); m.setTrilinearElement(DA, 1, 1, m.displayYukawaElement(YD, 1, 1) * inter_A_HdQD(1,1)); m.setTrilinearElement(DA, 2, 2, m.displayYukawaElement(YD, 2, 2) * inter_A_HdQD(2,2)); m.setTrilinearElement(DA, 3, 3, m.displayYukawaElement(YD, 3, 3) * inter_A_HdQD(3,3)); m.setTrilinearElement(EA, 1, 1, m.displayYukawaElement(YE, 1, 1) * inter_A_HdLE(1,1)); m.setTrilinearElement(EA, 2, 2, m.displayYukawaElement(YE, 2, 2) * inter_A_HdLE(2,2)); m.setTrilinearElement(EA, 3, 3, m.displayYukawaElement(YE, 3, 3) * inter_A_HdLE(3,3)); // cout << "In gaugegravityBcs2" << endl; // cout << "gaugino(1) = " << inter_gaugino1 << " " << m1 << endl // << "gaugino(2) = " << inter_gaugino2 << " " << m2 << endl // << "gaugino(3) = " << inter_gaugino3 << " " << m3 << endl; // cout << "inter_massmQl + mqlsq * id (3,3) = " << inter_massmQl(3,3) + mqlsq // << endl; }
//For communication with outside routines: sets all data by one vector y=1..11. void QedQcd::set(const DoubleVector & y) { a(ALPHA) = y.display(1); a(ALPHAS) = y.display(2); int i; for (i=3; i<=11; i++) mf(i-2) = y.display(i); }