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; }
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; }
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]; } }
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; }
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,
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; }
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); }
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; }
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; }
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; }