const std::vector<Real> & BoundaryFluxBase::getFlux(unsigned int iside, dof_id_type ielem, const std::vector<Real> & uvec1, const RealVectorValue & dwave, THREAD_ID tid) const { Threads::spin_mutex::scoped_lock lock(_mutex); if (_cached_elem_id != ielem || _cached_side_id != iside) { _cached_elem_id = ielem; _cached_side_id = iside; calcFlux(iside, ielem, uvec1, dwave, _flux[tid]); } return _flux[tid]; }
void RMANAGER::TimeStep() { VESSEL * v = NULL; OBJHANDLE hVes = NULL; char ini[255]; for (int i = 0; i < oapiGetVesselCount(); i++) { hVes = oapiGetVesselByIndex(i); if (!oapiIsVessel(hVes)) continue; v = oapiGetVesselInterface(hVes); if (isAttended(v)) continue; if (!hasConfig(v)) continue; sprintf(ini,"./Config/orbReentryStream/%s.ini",INI(v)); atList.push_back(ReadAndAssign(ini,v)); } VOBJ * vbj = NULL; for (int i = 0; i < atList.size(); i++) { if (!atList[i]) continue; if (!oapiIsVessel(atList[i]->hook)) continue; vbj = atList[i]; v = oapiGetVesselInterface(vbj->hook); hVes = v->GetHandle(); if (calcFlux(v) > vbj->flux) { if (!vbj->th) CreateResourceAndStreams(vbj); v->SetThrusterLevel(vbj->th,1); }else if (vbj->th) v->SetThrusterLevel(vbj->th,0); } }