boost::optional<ModelObject> SetpointManagerSingleZoneReheat_Impl::controlZoneAsModelObject() { OptionalModelObject result; OptionalThermalZone intermediate = controlZone(); if (intermediate) { result = *intermediate; } return result; }
// Info<< "DEBUG BeforeCollisions" << nl // << " Check acceleration = " // << acceleration_ << nl // << " Delta time = " // << mesh_.time().deltaTValue() << nl // << endl; forAll(controlZone(), c) { const List<DynamicList<dsmcParcel*> >& cellOccupancy = cloud_.cellOccupancy(); const label& cellI = controlZone()[c]; const List<dsmcParcel*>& molsInCell = cellOccupancy[cellI]; forAll(molsInCell, mIC) { dsmcParcel* p = molsInCell[mIC]; p->U() -= 0.5*acceleration_*mesh_.time().deltaTValue(); }
void polyTemperatureMaxwellDemon::controlAfterVelocityII() { if(control_) { Info << "polyTemperatureMaxwellDemon: control" << endl; forAll(controlZone(), c) { const label& cellI = controlZone()[c]; const List<polyMolecule*>& molsInCell = molCloud_.cellOccupancy()[cellI]; forAll(molsInCell, m) { polyMolecule* molI = molsInCell[m]; if(findIndex(molIds_, molI->id()) != -1) { if(molCloud_.rndGen().sample01<scalar>() <= p_) { const scalar& massI = molCloud_.cP().mass(molI->id()); scalar sigma = sqrt (temperatures_[c]*molCloud_.redUnits().kB() / massI); vector molVel ( sigma*molCloud_.rndGen().GaussNormalMD<scalar>(), sigma*molCloud_.rndGen().GaussNormalMD<scalar>(), sigma*molCloud_.rndGen().GaussNormalMD<scalar>() ); molI->v() = velocities_[c] + molVel; } } } } }