void ParamPolicy_4<P1, P2, P3, P4>::set_t(){ t_ = ParamVec(4); t_[0] = prm1_; t_[1] = prm2_; t_[2] = prm3_; t_[3] = prm4_; }
int MuvisFeat::MuvisAFexHandler::API_Init() { soundfile* afile = parent->audiofile_ptr; double *args = ParamVec(); int f_dur = 100; // frame in milliseconds, fixme: should be cmdline parameter int p = (*fex_init)(args, afile->getSampleRate(), afile->getNChannels(), f_dur); delete args; return p; }
int ntlWorld::addDomain(elbeemSimulationSettings *settings) { // create domain obj SimulationObject *sim = new SimulationObject(); char simname[100]; snprintf(simname,100,"domain%04d",globalDomainCounter); globalDomainCounter++; sim->setName(string(simname)); mpGlob->getSims()->push_back( sim ); // important - add to both, only render scene objects are free'd mpGlob->getRenderScene()->addGeoClass( sim ); mpGlob->getSimScene()->addGeoClass( sim ); sim->setGeoStart(ntlVec3Gfx(settings->geoStart[0],settings->geoStart[1],settings->geoStart[2])); sim->setGeoEnd(ntlVec3Gfx( settings->geoStart[0]+settings->geoSize[0], settings->geoStart[1]+settings->geoSize[1], settings->geoStart[2]+settings->geoSize[2] )); // further init in postGeoConstrInit/initializeLbmSimulation of SimulationObject sim->copyElbeemSettings(settings); Parametrizer *param = sim->getParametrizer(); param->setSize( settings->resolutionxyz ); param->setDomainSize( settings->realsize ); param->setAniStart( settings->animStart ); param->setNormalizedGStar( settings->gstar ); // init domain channels vector<ParamFloat> valf; vector<ParamVec> valv; vector<double> time; #define INIT_CHANNEL_FLOAT(channel,size) \ valf.clear(); time.clear(); elbeemSimplifyChannelFloat(channel,&size); \ for(int i=0; i<size; i++) { valf.push_back( channel[2*i+0] ); time.push_back( channel[2*i+1] ); } #define INIT_CHANNEL_VEC(channel,size) \ valv.clear(); time.clear(); elbeemSimplifyChannelVec3(channel,&size); \ for(int i=0; i<size; i++) { valv.push_back( ParamVec(channel[4*i+0],channel[4*i+1],channel[4*i+2]) ); time.push_back( channel[4*i+3] ); } param->setViscosity( settings->viscosity ); if((settings->channelViscosity)&&(settings->channelSizeViscosity>0)) { INIT_CHANNEL_FLOAT(settings->channelViscosity, settings->channelSizeViscosity); param->initViscosityChannel(valf,time); } param->setGravity( ParamVec(settings->gravity[0], settings->gravity[1], settings->gravity[2]) ); if((settings->channelGravity)&&(settings->channelSizeGravity>0)) { INIT_CHANNEL_VEC(settings->channelGravity, settings->channelSizeGravity); param->initGravityChannel(valv,time); } param->setAniFrameTimeChannel( settings->aniFrameTime ); if((settings->channelFrameTime)&&(settings->channelSizeFrameTime>0)) { INIT_CHANNEL_FLOAT(settings->channelFrameTime, settings->channelSizeFrameTime); param->initAniFrameTimeChannel(valf,time); } #undef INIT_CHANNEL_FLOAT #undef INIT_CHANNEL_VEC // might be set by previous domain if(mpGlob->getAniFrames() < settings->noOfFrames) mpGlob->setAniFrames( settings->noOfFrames ); // set additionally to SimulationObject->mOutFilename mpGlob->setOutFilename( settings->outputPath ); return 0; }
DB.Page("R/D*"); for (int i = 0; i < 31; i++) { char buff[20]; sprintf(buff,"RDS%d",i); DB.Double(buff, "", &mo_RDStar[i] , MF_RESULT ); } DB.Page("Scale"); DB.Double("FACTA","", &mo_FACTA , MF_RESULT ); DB.Double("FACTB","", &mo_FACTB , MF_RESULT ); DB.Double("FACTC","", &mo_FACTC , MF_RESULT ); DB.Double("FACTD","", &mo_FACTD , MF_RESULT ); DB.Double("FACTE<Xm","", &mo_FACTEsizeltXm , MF_RESULT ); DB.Double("FACTE>Xm","", &mo_FACTEsizegeXm , MF_RESULT ); DB.Double("Xm","", &mo_Xm , MF_RESULT ); DB.ObjectEnd(); } //==================================================================================== void CMill_Ball::EvalProducts(MBaseMethod &M, MStream &Feed , MStream &Product , bool bInit ) { // Get info on Size Distribution MIPSD & l_PSD=*Feed.FindIF<MIPSD>(); if (IsNothing(l_PSD)) { int xx=0; return; //Why do we get here!!! } long l_SizeCount = l_PSD.getSizeCount(); long l_PSDVectorCount = l_PSD.getPSDVectorCount(); if ( bInit && !IsNothing(l_PSD)) { bInit = false; // Copy the Sieve Data Sizing Info SysCADSystemHelper::SysCADSizeDataToSystem(l_PSD, MatInfo); // Copy Material Information from database // For now we just set up n components // The MineralInfo data will come from a database MatInfo->SetNumberOfMinerals( l_PSD.PSDVectorCount ); SysCADSystemHelper::PopulateMaterialInfo(M,MatInfo); // Initialize Ball Mill m_Params[0] = mi_NParrallelMills; m_Params[1] = mi_DiameterSim; m_Params[2] = mi_LengthSim; m_Params[3] = mi_FracCriticalSpeedSim; m_Params[4] = mi_FracLoadSim; m_Params[5] = mi_WorkIndexSim; m_Params[6] = mi_BallTopSizeSim; m_Params[7] = mi_DiameterDerived; m_Params[8] = mi_LengthDerived; m_Params[9] = mi_FracCriticalSpeedDerived; m_Params[10] = mi_FracLoadDerived; m_Params[11] = mi_WorkIndexDerived; m_Params[12] = mi_BallTopSizeDerived; m_Params[13] = mi_K; m_Params[14] = mi_NumSplineKnots; for ( int i = 0 ; i < 31 ; i++ ) m_Params[15+i] = mi_KnotSize[i]; for ( int i = 0 ; i < 31 ; i++ ) m_Params[46+i] = mi_KnotLnRDStar[i]; for ( int i = 0 ; i < 31 ; i++ ) m_Params[77+i] = mi_A[i]; RioTintoTS::VectorView ParamVec(m_Params,108,1); Mill.Initialize(MatInfo,ParamVec); // Create the Feed Stream. Use SetConfig after initialisation // if we need to change anything. We need to initialise here // because we get the size information from the Feed stream FeedStream = RioTintoTS::FlowStream1::Create( MatInfo ); } if (!IsNothing(l_PSD)) { // Copy the input size data to the system feed stream solids SysCADSystemHelper::SysCADSolidsToSystem(Feed,FeedStream); SysCADSystemHelper::SysCADLiquidToSystem(Feed,FeedStream);