Пример #1
0
// 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;
}
Пример #2
0
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);
}
Пример #3
0
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);

}
Пример #4
0
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);
   }
}
Пример #5
0
// 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;
}
Пример #6
0
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);
}
Пример #7
0
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;
}
Пример #8
0
//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);
}