Matrix<double> GeneralConstraint::getCovariance( const VariableSet& varSet ) { Matrix<double> covariance(varSet.size(),varSet.size(),0.0); int i(0); for(VariableSet::const_iterator iti=varSet.begin(); iti!=varSet.end(); ++iti) { int j(0); for(VariableSet::const_iterator itj=varSet.begin(); itj!=varSet.end(); ++itj) { covariance[i][j] = solver.getCovariance(*iti,*itj); j++; } i++; } return covariance; } // End of method 'GeneralConstraint::getCovariance(...'
OptionalMessageList UndeclaredVariableCheck::visitLambdaDefinition(const LambdaDefinitionAddress& lambdaDef) { OptionalMessageList res; VariableSet recFunctions; for_each(lambdaDef.getAddressedNode()->getDefinitions(), [&recFunctions](const LambdaBindingPtr& cur) { recFunctions.insert(cur->getVariable()); }); for_each(lambdaDef->getDefinitions(), [&](const LambdaBindingAddress& cur) { // assemble set of defined variables VariableSet declared; // add recursive function variables declared.insert(recFunctions.begin(), recFunctions.end()); // add parameters auto paramList = cur.getAddressedNode()->getLambda()->getParameterList(); declared.insert(paramList.begin(), paramList.end()); // run check on body ... VarDeclarationCheck check(declared); // trigger check addAll(res, conductCheck(check, cur->getLambda())); }); return res; }
void GeneralConstraint::stackVariables( VariableList& varList, const VariableSet& varSet ) { for(VariableSet::const_iterator it= varSet.begin(); it!=varSet.end(); ++it) { varList.push_back(*it); } } // End of method 'GeneralConstraint::stackVariables()'
VariableSet GeneralConstraint::differenceVariables( const VariableSet& vs1, const VariableSet& vs2 ) { VariableSet tempSet; for(VariableSet::const_iterator it=vs1.begin(); it!=vs1.end(); ++it) { VariableSet::const_iterator it2 = vs2.find(*it); if(it2==vs2.end()) tempSet.insert(*it); } for(VariableSet::const_iterator it=vs2.begin(); it!=vs2.end(); ++it) { VariableSet::const_iterator it2 = vs1.find(*it); if(it2==vs1.end()) tempSet.insert(*it); } return tempSet; } // End of method 'GeneralConstraint::differenceVariables()'
VariableSet GeneralConstraint::unionVariables( const VariableSet& vs1, const VariableSet& vs2 ) { VariableSet tempSet(vs1); for(VariableSet::const_iterator it=vs2.begin(); it!=vs2.end(); ++it) { tempSet.insert(*it); } return tempSet; } // End of method 'GeneralConstraint::unionVariables()'
VariableSet GeneralConstraint::getVariables( const SatID& sat, const TypeID& type ) { VariableSet vset; VariableSet varSet = getVariables(sat); for(VariableSet::iterator itv=varSet.begin(); itv!=varSet.end(); ++itv) { if( (itv->getType()==type) ) vset.insert(*itv); } return vset; } // End of method 'GeneralConstraint::getVariables(const SatID& sat,...)'
Vector<double> GeneralConstraint::getSolution( const VariableSet& varSet ) { Vector<double> solution(varSet.size(),0.0); int i(0); for(VariableSet::const_iterator it=varSet.begin(); it!=varSet.end(); ++it) { solution[i] = solver.getSolution(*it); i++; } return solution; } // End of method 'GeneralConstraint::getSolution(...'
VariableSet GeneralConstraint::getVariables( const SatID& sat, const TypeIDSet& typeSet ) { VariableSet vset; VariableSet varSet = getVariables(sat); for(VariableSet::iterator itv=varSet.begin(); itv!=varSet.end(); ++itv) { TypeIDSet::const_iterator it = typeSet.find(itv->getType()); if( (it!=typeSet.end()) ) vset.insert(*itv); } return vset; } // End of method 'GeneralConstraint::getVariables(...'
inline std::string asString(const VariableSet& vset) { std::ostringstream oss; for( VariableSet::const_iterator it = vset.begin(); it != vset.end(); ++it ) { oss << it->getType() << " " << it->getSource() << " " << it->getSatellite() << " " << it->getTypeIndexed() << " " << it->getSourceIndexed() << " " << it->getSatIndexed()<< std::endl; } return oss.str(); }
VariableSet GeneralConstraint::getVariables( const SourceID& source, const SatIDSet& satSet, const TypeID& type ) { VariableSet vset; VariableSet varSet = getVariables(source,type); for(VariableSet::iterator itv=varSet.begin(); itv!=varSet.end(); ++itv) { SatIDSet::const_iterator it = satSet.find(itv->getSatellite()); if( it != satSet.end() ) vset.insert(*itv); } return vset; } // End of method 'GeneralConstraint::getVariables(...'
VariableSet GeneralConstraint::getVariables( const SourceIDSet& sourceSet, const TypeID& type ) { VariableSet vset; VariableSet varSet = getVariables(sourceSet); for(VariableSet::iterator itv=varSet.begin(); itv!=varSet.end(); ++itv) { if( (itv->getType()==type) && itv->getSourceIndexed() ) { vset.insert(*itv); } } return vset; } // End of method 'GeneralConstraint::getVariables(...'
Variable GeneralConstraint::getVariable( const SourceID& source, const SatID& sat, const TypeID& type ) { VariableSet vset; VariableSet varSet = getVariables(source,type); for(VariableSet::iterator itv=varSet.begin(); itv!=varSet.end(); ++itv) { if( itv->getType()==type ) return (*itv); } Exception e("The desirable variable not exist int the solver."); GPSTK_THROW(e); return Variable(); } // End of method 'GeneralConstraint::getVariables(...'
void Stepper::unregisterProcess( Process* aProcess ) { ProcessVector::iterator ip( std::find( theProcessVector.begin(), theProcessVector.end(), aProcess ) ); if( ip == theProcessVector.end() ) { THROW_EXCEPTION_INSIDE( NotFound, asString() + ": Failed to dissociate [" + aProcess->asString() + "] (no such Process is " "associated to this stepper)" ); } typedef std::set< Variable* > VariableSet; VariableSet aVarSet; Process::VariableReferenceVector const& aVarRefVector( aProcess->getVariableReferenceVector() ); std::transform( aVarRefVector.begin(), aVarRefVector.end(), inserter( aVarSet, aVarSet.begin() ), std::mem_fun_ref( &VariableReference::getVariable ) ); VariableVector aNewVector; VariableVector::size_type aReadWriteVariableOffset, aReadOnlyVariableOffset; for( VariableVector::iterator i( theVariableVector.begin() ), e( theVariableVector.begin() + theReadWriteVariableOffset ); i != e; ++i ) { VariableSet::iterator j( aVarSet.find( *i ) ); if ( j != aVarSet.end() ) aVarSet.erase( j ); else aNewVector.push_back( *i ); } aReadWriteVariableOffset = aNewVector.size(); for( VariableVector::iterator i( theVariableVector.begin() + theReadWriteVariableOffset ), e( theVariableVector.begin() + theReadOnlyVariableOffset ); i != e; ++i ) { VariableSet::iterator j( aVarSet.find( *i ) ); if ( j != aVarSet.end() ) aVarSet.erase( j ); else aNewVector.push_back( *i ); } aReadOnlyVariableOffset = aNewVector.size(); for( VariableVector::iterator i( theVariableVector.begin() + theReadOnlyVariableOffset ), e( theVariableVector.end() ); i != e; ++i ) { VariableSet::iterator j( aVarSet.find( *i ) ); if ( j != aVarSet.end() ) aVarSet.erase( j ); else aNewVector.push_back( *i ); } theVariableVector.swap( aNewVector ); theReadWriteVariableOffset = aReadWriteVariableOffset; theReadOnlyVariableOffset = aReadOnlyVariableOffset; theProcessVector.erase( ip ); }