Ejemplo n.º 1
0
int baffle_flow(struct solver_data *solver, 
                            int x, double min_1, double min_2, double max_1, double max_2, 
                            double *value, long int pos) {

  long int i, j, k, imin, jmin, kmin, imax, jmax, kmax;
  
  if(baffle_setup(solver, x, pos, &imin, &jmin, &kmin, &imax, &jmax, &kmax, min_1, min_2, max_1, max_2)) {
    *value = solver_mpi_sum(solver, 0);
    return 0;
  }
  
  *value = 0;
  
  for(i=imin; i <= imax; i++) {
    for(j=jmin; j <= jmax; j++) {
      for(k=kmin; k <= kmax; k++) {   
        switch(x) {
        case 0:
          *value = DELY * DELZ * (U(i,j,k) * ((VOF(i,j,k) + VOF(i+1,j,k)) / 2) * AE(i,j,k)) + *value;
          break;
        case 1:
          *value = DELX * DELZ * (V(i,j,k) * ((VOF(i,j,k) + VOF(i,j+1,k)) / 2) * AN(i,j,k)) + *value;
          break;
        case 2:
          *value = DELX * DELY * (W(i,j,k) * ((VOF(i,j,k) + VOF(i,j,k+1)) / 2) * AT(i,j,k)) + *value;
          break;
        }        
      }
    }
  }

  *value = solver_mpi_sum(solver, *value);

  return 0;
}
Ejemplo n.º 2
0
void encodeFileRange(::libmaus::autoarray::AutoArray<uint8_t> const & data, unsigned int const alph, bw_type & CB)
{
	::libmaus::timing::RealTimeClock rtc; rtc.start();

	::libmaus::arithmetic::RangeEncoder < bw_type > AE(CB);
	model_type ME(alph);

	for ( uint64_t i = 0; i < data.size(); ++i )
		AE.encodeUpdate(ME,data[i]);
	AE.flush(true /* add end marker */);
	
	std::cerr << "Encoded in " << rtc.getElapsedSeconds() << " s, " 
		<< 1./(rtc.getElapsedSeconds()/data.size())
		<< std::endl;	
}
Ejemplo n.º 3
0
void Nasha256_compile(hashState256 *state)
{
	int i;
	uint_64t x[16],y[16],l1,l2;
	B64 tmp;
	uint_32t A1, B1, C1, A2, B2, C2;
    uint_16t alpha1, beta1, gama1, alpha2, beta2, gama2;
	uint_8t a1,b1,c1,a2,b2,c2,a3,b3,c3;
	
	PutX(y,state);
	LinTr16(y,x);
	
	// computing the leaders l1 and l2
	l1=x[0]+x[1];
	l2=x[2]+x[3];
	
	//computing the 8-bite words a1, b1, c1,a2,b2,c2,a3,b3,c3
	tmp.bit64=x[4]+x[5];
	a1=tmp.b8[7]; b1=tmp.b8[6]; c1=tmp.b8[5];
	a2=tmp.b8[4]; b2=tmp.b8[3]; c2=tmp.b8[2];
	a3=tmp.b8[1]; b3=tmp.b8[0]; c3=a1;
	
	//computing the 16-bite words alpha1, beta1, gama1, alpha2, beta2, gama2
	tmp.bit64=x[6]+x[7];
	alpha1=tmp.bit16[3]; beta1=tmp.bit16[2]; gama1=tmp.bit16[1]; alpha2=tmp.bit16[0];
	
	tmp.bit64=x[8]+x[9]; 
	beta2=tmp.bit16[3]; gama2=tmp.bit16[2];
	
	//computing the 32-bite words A1, B1, C1, A2, B2, C2
	tmp.bit64=x[10]+x[11];
	A1=tmp.bit32[1]; B1=tmp.bit32[0];

	tmp.bit64=x[12]+x[13];
	C1=tmp.bit32[1]; A2=tmp.bit32[0];

	tmp.bit64=x[14]+x[15];
	B2=tmp.bit32[1]; C2=tmp.bit32[0];
	AE(l2,x,y,16,a1,b1,c1,a2,b2,c2,a3,b3,c3,alpha1, beta1, gama1,A1, B1, C1);
	swap_64(y,16);
	RAE(l1,y,x,15,a1,b1,c1,a2,b2,c2,a3,b3,c3,alpha2, beta2, gama2,A2, B2, C2);
	/*  Finally compute the hash digest (or/and the hash chain value) */
	for (i=0;i<4;i++){
		state->H[i]=x[(i<<2)+1];
		state->hash[i]=x[(i<<2)+3];
	}
}
Ejemplo n.º 4
0
void qat_hal_set_live_ctx(struct icp_qat_fw_loader_handle *handle,
			  unsigned char ae, unsigned int ctx_mask)
{
	AE(handle, ae).live_ctx_mask = ctx_mask;
}
Ejemplo n.º 5
0
	return 1;
}

#define SOCKERR sockassert( C, 1 )
#define SOCKCLEARERR sockassert( C, 0 )


#ifdef _WIN32
#  define AE( x ) #x, (const char*) WSA##x
#else
#  define AE( x ) #x, (const char*) x
#endif
static const char* socket_errno_key_table[] =
{
#ifndef _WIN32
	AE( EBADMSG ), AE( ECANCELED ), AE( EIDRM ), AE( ENODATA ),
	AE( ENOLINK ), AE( ENOMSG ), AE( ENOSR ), AE( ENOSTR ),
	AE( ENOTRECOVERABLE ), AE( ENOTSUP ), AE( EOVERFLOW ),
	AE( EOWNERDEAD ), AE( EPROTO ), AE( ETIME ), AE( ETXTBSY ),
#endif
	
	AE( EADDRINUSE ), AE( EADDRNOTAVAIL ), AE( EAFNOSUPPORT ),
	AE( EALREADY ), AE( ECONNABORTED ), AE( ECONNREFUSED ),
	AE( ECONNRESET ), AE( EDESTADDRREQ ), AE( EHOSTUNREACH ),
	AE( EINPROGRESS ), AE( EISCONN ), AE( ELOOP ), AE( EMSGSIZE ),
	AE( ENETDOWN ), AE( ENETRESET ), AE( ENETUNREACH ), AE( ENOBUFS ),
	AE( ENOPROTOOPT ), AE( ENOTCONN ), AE( ENOTSOCK ),
	AE( EOPNOTSUPP ), AE( EPROTONOSUPPORT ), AE( EPROTOTYPE ),
	AE( ETIMEDOUT ), AE( EWOULDBLOCK ),
	
	NULL,
Ejemplo n.º 6
0
int
main(int argc, char **argv)
{
  GSGraph     *g;
  GSSinkDGS   *out;
  GSSourceDGS *in;

  BEGIN("create graph");
  g = gs_graph_create("g");
  DONE;

  BEGIN("create sink");
  out = gs_stream_sink_file_dgs_open("foo.dgs");
  if (out)
    DONE;
  else 
    FAILED;

  BEGIN("connect");
  gs_stream_source_sink_add(GS_SOURCE(g),
                            GS_SINK(out));
  DONE;

  BEGIN("write");
  AN("A");
  AN("B");
  AN("C");

  AE("A", "B");
  AE("A", "C");
  AE("B", "C");
  gs_stream_sink_file_dgs_close(out);
  DONE;

  gs_graph_destroy(g);
  g = gs_graph_create("g");

  BEGIN("create source");
  in = gs_stream_source_file_dgs_open("foo.dgs");
  if (in)
    DONE;
  else 
    FAILED;

  BEGIN("connect");
  gs_stream_source_sink_add(GS_SOURCE(in),
                            GS_SINK(g));
  DONE;
  
  BEGIN("read");
  while (gs_stream_source_file_dgs_next(in))
    ;

  gs_stream_source_file_dgs_close(in);

  DONE;
  
  BEGIN("check nodes");
  
  if (gs_graph_node_get_count(g) != 3)
    FAILED;

  if (gs_graph_node_get(g, "A") == NULL ||
      gs_graph_node_get(g, "B") == NULL ||
      gs_graph_node_get(g, "C") == NULL)
    FAILED;

  DONE;

  BEGIN("check edges");
  
  if (gs_graph_edge_get_count(g) != 3)
    FAILED;

  if (gs_graph_edge_get(g, "A_B") == NULL ||
      gs_graph_edge_get(g, "B_C") == NULL ||
      gs_graph_edge_get(g, "A_C") == NULL)
    FAILED;

  DONE;

  gs_graph_destroy(g);

  return 0;
}
Ejemplo n.º 7
0
bool FeynHiggsWrapper::SetFeynHiggsPars()
{
    int err;

    /* FeynHiggs debug flag */
    //FHSetDebug(2);
    //FHSetDebug(3);

    Mw_FHinput = mySUSY.Mw_tree(); /* Tree-level W-boson mass */
    //Mw_FHinput = mySUSY.StandardModel::Mw(); /* SM prediction, which should not be used, since mHl cannot be set before calling FeynHiggs. */
    //std::cout << "Mw = " << Mw_FHinput << " used in FeynHiggsWrapper::SetFeynHiggsPars()" << std::endl;

    /* Set the FeynHiggs SM input parameters */
    FHSetSMPara(&err,
                1.0/mySUSY.alphaMz(),
                mySUSY.getAlsMz(), mySUSY.getGF(),
                mySUSY.getLeptons(StandardModel::ELECTRON).getMass(),
                mySUSY.getQuarks(QCD::UP).getMass(),
                mySUSY.getQuarks(QCD::DOWN).getMass(),
                mySUSY.getLeptons(StandardModel::MU).getMass(),
                mySUSY.getQuarks(QCD::CHARM).getMass(),
                mySUSY.getQuarks(QCD::STRANGE).getMass(),
                mySUSY.getLeptons(StandardModel::TAU).getMass(),
                mySUSY.getQuarks(QCD::BOTTOM).getMass(),
                Mw_FHinput, mySUSY.getMz(),
                mySUSY.getLambda(), mySUSY.getA(), mySUSY.getRhob(), mySUSY.getEtab());
    if (err != 0) {
#ifdef FHDEBUG
        std::cout << "FeynHiggsWrapper::SetFeynHiggsPars(): Error has been detected in SetPara.F:"
                  << err << std::endl;
#endif
        return (false);
    }

    /* Parameters for FeynHiggs */
    double Q_S = mySUSY.Q_SUSY;
    gslpp::complex muHFH = mySUSY.muH;
    gslpp::complex M1FH = mySUSY.m1;
    gslpp::complex M2FH = mySUSY.m2;
    gslpp::matrix<gslpp::complex> MsQ2 = mySUSY.msQhat2;
    gslpp::matrix<gslpp::complex> MsU2 = mySUSY.msUhat2;
    gslpp::matrix<gslpp::complex> MsD2 = mySUSY.msDhat2;
    gslpp::matrix<gslpp::complex> MsL2 = mySUSY.msLhat2;
    gslpp::matrix<gslpp::complex> MsE2 = mySUSY.msEhat2;
    gslpp::matrix<gslpp::complex> KU = mySUSY.TUhat.hconjugate() * mySUSY.v2() / sqrt(2.0);
    gslpp::matrix<gslpp::complex> KD = mySUSY.TDhat.hconjugate() * mySUSY.v1() / sqrt(2.0);
    gslpp::matrix<gslpp::complex> KE = mySUSY.TEhat.hconjugate() * mySUSY.v1() / sqrt(2.0);

    /* MFV trilinear couplings */
    gslpp::vector<gslpp::complex> AU(3,0.), AD(3,0.), AE(3,0.);
    for (int i=0; i<3; i++) {
        int p = (int)mySUSY.UP + 2*i;
        AU.assign(i, KU(i,i) / mySUSY.Mq_Q((QCD::quark)p));
        p = (int)mySUSY.DOWN + 2*i;
        AD.assign(i, KD(i,i) / mySUSY.Mq_Q((QCD::quark)p));
        p = (int)mySUSY.ELECTRON + 2*i;
        AE.assign(i, KE(i,i) / mySUSY.Ml_Q((StandardModel::lepton)p));
    }

    /* Check if non-minimal flavor-violating (NMFV) entries exist in the
     * sfermion mass matrices. See also IniFV() in SetFV.F of FeynHiggs. */
    NMFVu = true; NMFVd = true; NMFVe = true;// NMFVnu = true; 
    double TMPu = 0.0, TMPd = 0.0, TMPe = 0.0; //TMPnu = 0.0
    for (int i=0; i<3; i++) {
        for (int j=0; j<3; j++) {
           if (i < j) {
               TMPu += MsQ2(i, j).abs2() + MsU2(i, j).abs2();
               TMPd += MsQ2(i, j).abs2() + MsD2(i, j).abs2();
               //TMPnu += MsL2(i, j).abs2(); /* not used */
               TMPe += MsL2(i, j).abs2() + MsE2(i, j).abs2();
           }
           if (i != j) {
               TMPu += KU(i, j).abs2();
               TMPd += KD(i, j).abs2();
               TMPe += KE(i, j).abs2();
           }
        }
    }
    if (!TMPu) NMFVu = false;
    if (!TMPe) NMFVd = false;
    if (!TMPe) NMFVe = false;

    /* NMFV trilinear couplings. In the case of NMFV, the trilinear couplings
     * AU, AD and AE for FHSetPara() as well as KU, KD and KE for FHSetNMFV()
     * and FHSetLFV() have to be rotated. */
    gslpp::complex muHphase(1.0, - 2.0*muHFH.arg(), true);
    if (NMFVu) AU *= muHphase;
    if (NMFVd) AD *= muHphase;
    if (NMFVe) AE *= muHphase;
    KU *= muHphase;
    KD *= muHphase;
    KE *= muHphase;

    /* NMFV parameters for FeynHiggs */
    gslpp::matrix<gslpp::complex> deltaQLL(3,3,0.);
    gslpp::matrix<gslpp::complex> deltaULR(3,3,0.), deltaURL(3,3,0.), deltaURR(3,3,0.);
    gslpp::matrix<gslpp::complex> deltaDLR(3,3,0.), deltaDRL(3,3,0.), deltaDRR(3,3,0.);
    gslpp::matrix<gslpp::complex> deltaLLL(3,3,0.);
    gslpp::matrix<gslpp::complex> deltaELR(3,3,0.), deltaERL(3,3,0.), deltaERR(3,3,0.);
    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++) {
            deltaQLL.assign(i, j, MsQ2(i,j) / sqrt(MsQ2(i,i).real() * MsQ2(j,j).real()));
            deltaULR.assign(i, j, KU(i,j) / sqrt(MsQ2(i,i).real() * MsU2(j,j).real()));
            deltaURL.assign(i, j, KU(j,i).conjugate() / sqrt(MsU2(i,i).real() * MsQ2(j,j).real()));
            deltaURR.assign(i, j, MsU2(i,j) / sqrt(MsU2(i,i).real() * MsU2(j,j).real()));
            deltaDLR.assign(i, j, KD(i,j) / sqrt(MsQ2(i,i).real() * MsD2(j,j).real()));
            deltaDRL.assign(i, j, KD(j,i).conjugate() / sqrt(MsD2(i,i).real() * MsQ2(j,j).real()));
            deltaDRR.assign(i, j, MsD2(i,j) / sqrt(MsD2(i,i).real() * MsD2(j,j).real()));
            deltaLLL.assign(i, j, MsL2(i,j) / sqrt(MsL2(i,i).real() * MsL2(j,j).real()));
            deltaELR.assign(i, j, KE(i,j) / sqrt(MsL2(i,i).real() * MsE2(j,j).real()));
            deltaERL.assign(i, j, KE(j,i).conjugate() / sqrt(MsE2(i,i).real() * MsL2(j,j).real()));
            deltaERR.assign(i, j, MsE2(i,j) / sqrt(MsE2(i,i).real() * MsE2(j,j).real()));
        }

    /* Set the FeynHiggs parameters, where the GUT relation is used for M1=0. */
    FHSetPara(&err,
              mySUSY.mut/mySUSY.quarks[QCD::TOP].getMass(),
              mySUSY.mtpole, mySUSY.tanb,
              mySUSY.mHptree,  // as now used, "mHptree" is a name for MA0. We shall be using mA instead of mHptree
	      -1, // this is now not used, the mHptree 
              //
              sqrt(MsL2(2,2).real()), sqrt(MsE2(2,2).real()),
              sqrt(MsQ2(2,2).real()), sqrt(MsU2(2,2).real()),
              sqrt(MsD2(2,2).real()),
              sqrt(MsL2(1,1).real()), sqrt(MsE2(1,1).real()),
              sqrt(MsQ2(1,1).real()), sqrt(MsU2(1,1).real()),
              sqrt(MsD2(1,1).real()),
              sqrt(MsL2(0,0).real()), sqrt(MsE2(0,0).real()),
              sqrt(MsQ2(0,0).real()), sqrt(MsU2(0,0).real()),
              sqrt(MsD2(0,0).real()),
              //
              ToComplex2(muHFH.real(), muHFH.imag()),
              //
              ToComplex2(AE(2).real(), AE(2).imag()),
              ToComplex2(AU(2).real(), AU(2).imag()),
              ToComplex2(AD(2).real(), AD(2).imag()),
              ToComplex2(AE(1).real(), AE(1).imag()),
              ToComplex2(AU(1).real(), AU(1).imag()),
              ToComplex2(AD(1).real(), AD(1).imag()),
              ToComplex2(AE(0).real(), AE(0).imag()),
              ToComplex2(AU(0).real(), AU(0).imag()),
              ToComplex2(AD(0).real(), AD(0).imag()),
              //
              ToComplex2(M1FH.real(), M1FH.imag()),
              ToComplex2(M2FH.real(), M2FH.imag()),
              ToComplex2(mySUSY.m3, 0.),
              //
              Q_S, Q_S, Q_S);
    if (err != 0) {
#ifdef FHDEBUG
        std::cout << "FeynHiggsWrapper::SetFeynHiggsPars(): Error has been detected in SetPara.F:"
                  << err << std::endl;
#endif
        return (false);
    }

    /* Set the non-minimal flavor-violating parameters in the squark sector */
    FHSetNMFV(&err,
              // Q_LL
              ToComplex2(deltaQLL(0,1).real(), deltaQLL(0,1).imag()),
              ToComplex2(deltaQLL(1,2).real(), deltaQLL(1,2).imag()),
              ToComplex2(deltaQLL(0,2).real(), deltaQLL(0,2).imag()),
              // U_LR
              ToComplex2(deltaULR(0,1).real(), deltaULR(0,1).imag()),
              ToComplex2(deltaULR(1,2).real(), deltaULR(1,2).imag()),
              ToComplex2(deltaULR(0,2).real(), deltaULR(0,2).imag()),
              // U_RL
              ToComplex2(deltaURL(0,1).real(), deltaURL(0,1).imag()),
              ToComplex2(deltaURL(1,2).real(), deltaURL(1,2).imag()),
              ToComplex2(deltaURL(0,2).real(), deltaURL(0,2).imag()),
              // U_RR
              ToComplex2(deltaURR(0,1).real(), deltaURR(0,1).imag()),
              ToComplex2(deltaURR(1,2).real(), deltaURR(1,2).imag()),
              ToComplex2(deltaURR(0,2).real(), deltaURR(0,2).imag()),
              // D_LR
              ToComplex2(deltaDLR(0,1).real(), deltaDLR(0,1).imag()),
              ToComplex2(deltaDLR(1,2).real(), deltaDLR(1,2).imag()),
              ToComplex2(deltaDLR(0,2).real(), deltaDLR(0,2).imag()),
              // D_RL
              ToComplex2(deltaDRL(0,1).real(), deltaDRL(0,1).imag()),
              ToComplex2(deltaDRL(1,2).real(), deltaDRL(1,2).imag()),
              ToComplex2(deltaDRL(0,2).real(), deltaDRL(0,2).imag()),
              // D_RR
              ToComplex2(deltaDRR(0,1).real(), deltaDRR(0,1).imag()),
              ToComplex2(deltaDRR(1,2).real(), deltaDRR(1,2).imag()),
              ToComplex2(deltaDRR(0,2).real(), deltaDRR(0,2).imag())
              );
    if (err != 0) {
#ifdef FHDEBUG
        std::cout << "FeynHiggsWrapper::SetFeynHiggsPars(): Error was detected in SetFV.F:"
                  << err << std::endl;
#endif
        return (false);
    }

    /* Set the non-minimal flavor-violating parameters in the slepton sector,
     * which are not used to compute the sneutrino mass spectrum. */
    FHSetLFV(&err,
              // L_LL
              ToComplex2(deltaLLL(0,1).real(), deltaLLL(0,1).imag()),
              ToComplex2(deltaLLL(1,2).real(), deltaLLL(1,2).imag()),
              ToComplex2(deltaLLL(0,2).real(), deltaLLL(0,2).imag()),
              // E_LR
              ToComplex2(deltaELR(0,1).real(), deltaELR(0,1).imag()),
              ToComplex2(deltaELR(1,2).real(), deltaELR(1,2).imag()),
              ToComplex2(deltaELR(0,2).real(), deltaELR(0,2).imag()),
              // E_RL
              ToComplex2(deltaERL(0,1).real(), deltaERL(0,1).imag()),
              ToComplex2(deltaERL(1,2).real(), deltaERL(1,2).imag()),
              ToComplex2(deltaERL(0,2).real(), deltaERL(0,2).imag()),
              // E_RR
              ToComplex2(deltaERR(0,1).real(), deltaERR(0,1).imag()),
              ToComplex2(deltaERR(1,2).real(), deltaERR(1,2).imag()),
              ToComplex2(deltaERR(0,2).real(), deltaERR(0,2).imag())
              );
    if (err != 0) {
#ifdef FHDEBUG
        std::cout << "FeynHiggsWrapper::SetFeynHiggsPars(): Error was detected in SetFV.F:"
                  << err << std::endl;
#endif
        return (false);
    }

    computeHiggsCouplings = true;
    computeHiggsProd = true;
    computeConstraints = true;
    computeFlavour = true;

    return (true);
}
Ejemplo n.º 8
0
int baffle_velocity_dev(struct solver_data *solver, 
                            int x, double min_1, double min_2, double max_1, double max_2, 
                            double *value, long int pos) {

  long int i, j, k, imin, jmin, kmin, imax, jmax, kmax, ip1, im1, jp1, jm1, kp1, km1;
  double count;
  double v_ave, v_dev;
  
  if(baffle_setup(solver, x, pos, &imin, &jmin, &kmin, &imax, &jmax, &kmax, min_1, min_2, max_1, max_2)) return 0;
  
  *value = 0;
    
  v_ave = 0;
  v_dev = 0;
  count = 0;
  
  for(i=imin; i <= imax; i++) {
    for(j=jmin; j <= jmax; j++) {
      for(k=kmin; k <= kmax; k++) {         
      
        switch(x) {
        case 0:
          if(AE(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i+1,j,k)) > solver->emf) {
          	jp1 = min(j+1, jmax);
          	jm1 = max(j-1, 0);
          	kp1 = min(k+1, kmax);
          	km1 = max(k-1, 0);
          	
          	if(AE(i,jp1,k) < (1-solver->emf)) continue;
          	if(AE(i,jm1,k) < (1-solver->emf)) continue;
          	if(AE(i,j,kp1) < (1-solver->emf)) continue;
          	if(AE(i,j,km1) < (1-solver->emf)) continue;
          	
            v_ave += U(i,j,k);
            count = count+1;
          }
          break;
        case 1:
          if(AN(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i,j+1,k)) > solver->emf) {
          	ip1 = min(i+1, imax);
          	im1 = max(i-1, 0);
          	kp1 = min(k+1, kmax);
          	km1 = max(k-1, 0);
          	
          	if(AN(ip1,j,k) < (1-solver->emf)) continue;
          	if(AN(im1,j,k) < (1-solver->emf)) continue;
          	if(AN(i,j,kp1) < (1-solver->emf)) continue;
          	if(AN(i,j,km1) < (1-solver->emf)) continue;
            v_ave += V(i,j,k);
            count = count+1;
          }
          break;
        case 2:
          if(AT(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i,j,k+1)) > solver->emf) {
          	ip1 = min(i+1, imax);
          	im1 = max(i-1, 0);
          	jp1 = min(j+1, jmax);
          	jm1 = max(j-1, 0);
          	
          	if(AT(ip1,j,k) < (1-solver->emf)) continue;
          	if(AT(im1,j,k) < (1-solver->emf)) continue;
          	if(AT(i,jp1,k) < (1-solver->emf)) continue;
          	if(AT(i,jm1,k) < (1-solver->emf)) continue;
            v_ave += W(i,j,k);
            count = count+1;
          }
          break;
        }        
      }
    }
  }
  
  v_ave = fabs(v_ave / count);
  
  for(i=imin; i <= imax; i++) {
    for(j=jmin; j <= jmax; j++) {
      for(k=kmin; k <= kmax; k++) {         
      
        switch(x) {
        case 0:
          if(AE(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i+1,j,k)) > solver->emf) {
          	v_dev = max(v_dev, fabs(U(i,j,k) / v_ave));
          }
          break;
        case 1:
          if(AN(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i,j+1,k)) > solver->emf) {
          	v_dev = max(v_dev, fabs(V(i,j,k) / v_ave));
          }
          break;
        case 2:
          if(AT(i,j,k) > (1-solver->emf) && (VOF(i,j,k) + VOF(i,j,k+1)) > solver->emf) {
          	v_dev = max(v_dev, fabs(W(i,j,k) / v_ave));
          }
          break;
        }        
      }
    }
  }
  
  *value = v_dev;
  
  return 0;
}
Ejemplo n.º 9
0
int baffle_swirl(struct solver_data *solver, 
                            int x, double min_1, double min_2, double max_1, double max_2, 
                            double *value, long int pos) {

  long int i, j, k, imin, jmin, kmin, imax, jmax, kmax;
  double count;
  double swirl, u_ave, v_ave, w_ave;
  
  if(baffle_setup(solver, x, pos, &imin, &jmin, &kmin, &imax, &jmax, &kmax, min_1, min_2, max_1, max_2)) {
    swirl = solver_mpi_sum(solver, 0);
    count = solver_mpi_sum(solver, 0);
    *value = swirl / count;
    if(isnan(*value)) *value = 0;
    return 0;
  }

  *value = 0;
  
  imin = max(imin-1,0);
  jmin = max(jmin-1,0);
  kmin = max(kmin-1,0);
  switch(x) {
  case 0:
    imax = max(imax-1,0);
    break;
  case 1:
    jmax = max(jmax-1,0);
    break;
  case 2:
    kmax = max(kmax-1,0);
    break;
  }
  
  swirl = 0;
  count = 0;
  
  for(i=imin; i <= imax; i++) {
    for(j=jmin; j <= jmax; j++) {
      for(k=kmin; k <= kmax; k++) {   
        /* find cell-centered velocity */
        u_ave = (U(i,j,k) + U(i+1,j,k)) / 2;
        v_ave = (V(i,j,k) + V(i,j+1,k)) / 2;
        w_ave = (W(i,j,k) + W(i,j,k+1)) / 2;        
      
        switch(x) {
        case 0:
          if((AE(i,j,k) + AE(i+1,j,k)) < (1-solver->emf) || fabs(u_ave) < solver->emf) continue;
          swirl = swirl + atan(sqrt(pow(v_ave,2) + pow(w_ave,2)) / fabs(u_ave)) * 180 / M_PI;
          count = count + 1;
          break;
        case 1:
          if((AN(i,j,k) + AN(i,j+1,k)) < (1-solver->emf) || fabs(v_ave) < solver->emf) continue;
          swirl = swirl + atan(sqrt(pow(u_ave,2) + pow(w_ave,2)) / fabs(v_ave)) * 180 / M_PI;
          count = count + 1;
          break;
        case 2:
          if((AT(i,j,k) + AT(i+1,j,k)) < (1-solver->emf) || fabs(w_ave) < solver->emf) continue;
          swirl = swirl + atan(sqrt(pow(u_ave,2) + pow(v_ave,2)) / fabs(w_ave)) * 180 / M_PI;
          count = count + 1;
          break;
        }        
      }
    }
  }
  
  swirl = solver_mpi_sum(solver, swirl);
  count = solver_mpi_sum(solver, count);
  *value = swirl / count;
  if(isnan(*value)) *value = 0;
  
  return 0;
}
Ejemplo n.º 10
0
int baffle_k(struct solver_data *solver, 
                            int x, double min_1, double min_2, double max_1, double max_2, 
                            double value, long int pos) {

  long int i, j, k, imin, jmin, kmin, imax, jmax, kmax;
  double delp, v_prime;
  double sgn = 1.0;
  
  if(baffle_setup(solver, x, pos, &imin, &jmin, &kmin, &imax, &jmax, &kmax, min_1, min_2, max_1, max_2)) return 0;
  
  if(value < 0.01) {
    return 0;
  }
  
  /* if(solver->p_flag != 0) return 0; */
  
  for(i=imin; i <= imax; i++) {
    for(j=jmin; j <= jmax; j++) {
      for(k=kmin; k <= kmax; k++) {   
        sgn = 1.0;
        switch(x) {
        case 0:
          if(AE(i,j,k) < solver->emf) continue;
          if(fabs(U(i,j,k)) < solver->emf) continue;
          
          delp = P(i,j,k) - P(i+1,j,k);
          
          if(delp < 0.0) sgn = -1.0;
          v_prime = sgn * sqrt((fabs(delp) * 2) / (solver->rho * value));
                    
          if(v_prime * U(i,j,k) < solver->emf * -1.0) v_prime = 0; /* this shouldn't cause a direction change */
          if(fabs(v_prime) > fabs(U(i,j,k)) && v_prime * U(i,j,k) > solver->emf) continue; /* and never speed up */
          else U(i,j,k) = v_prime;

          break;
        case 1:
          if(AN(i,j,k) < solver->emf) continue;
          if(fabs(V(i,j,k)) < solver->emf) continue;
          
          delp = P(i,j,k) - P(i,j+1,k);
          
          if(delp < 0.0) sgn = -1.0;
          v_prime = sgn * sqrt((fabs(delp) * 2) / (solver->rho * value));
                    
          if(v_prime * V(i,j,k) < solver->emf * -1.0) v_prime = 0; /* this shouldn't cause a direction change */
          if(fabs(v_prime) > fabs(V(i,j,k)) && v_prime * V(i,j,k) > solver->emf) continue; /* and never speed up */
          else V(i,j,k) = v_prime;

          break;
        case 2:
          if(AT(i,j,k) < solver->emf) continue;
          if(fabs(W(i,j,k)) < solver->emf) continue;
          
          delp = P(i,j,k) - P(i,j,k+1);
          
          if(delp < 0.0) sgn = -1.0;
          v_prime = sgn * sqrt((fabs(delp) * 2) / (solver->rho * value));
                    
          if(v_prime * W(i,j,k) < solver->emf * -1.0) v_prime = 0; /* this shouldn't cause a direction change */
          if(fabs(v_prime) > fabs(W(i,j,k)) && v_prime * W(i,j,k) > solver->emf) continue; /* and never speed up */
          else W(i,j,k) = v_prime;

          break;
        }          
      }
    }
  }

  return 0;
}