void Foam::mosDMDEigenBase::realSymmEigenSolver(const Eigen::MatrixXd& M, Eigen::DiagonalMatrix<scalar, Eigen::Dynamic>& S, Eigen::MatrixXd& U) { // Solve eigenvalues and eigenvectors Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> eigenSolver; eigenSolver.compute(M); // Sort eigenvalues and corresponding eigenvectors // in descending order SortableList<scalar> sortedList(M.rows()); forAll (sortedList, i) { sortedList[i] = eigenSolver.eigenvalues()[i]; } // Do sort sortedList.sort(); label n = 0; forAllReverse(sortedList, i) { S.diagonal()[n] = sortedList[i]; U.col(n) = eigenSolver.eigenvectors().col(sortedList.indices()[i]); n++; }
// --------------------------------------------------------------------------- // SAX2SortAttributesFilter: Overrides of the SAX2XMLFilter interface // --------------------------------------------------------------------------- void SAX2SortAttributesFilter::startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes) { AttrList sortedList(attributes.getLength()); for(XMLSize_t i=0;i<attributes.getLength();i++) { XMLSize_t j; for(j=0;j<sortedList.getLength();j++) { if(XMLString::compareString(sortedList.elementAt(j)->qName,attributes.getQName(i))>=0) break; } Attr* pClone=new Attr; pClone->qName = attributes.getQName(i); pClone->uri = attributes.getURI(i); pClone->localPart = attributes.getLocalName(i); pClone->value = attributes.getValue(i); pClone->attrType = attributes.getType(i); sortedList.insertElementAt(pClone, j); } SAX2XMLFilterImpl::startElement(uri, localname, qname, sortedList); }
void processDatatypeValidator( const DatatypeValidator* dtValidator, bool margin ) { if( !dtValidator ) { return; } if( margin ) { XERCES_STD_QUALIFIER cout << "\t"; } XERCES_STD_QUALIFIER cout << "Base Datatype:\t\t"; switch( dtValidator->getType() ) { case DatatypeValidator::String: XERCES_STD_QUALIFIER cout << "string"; break; case DatatypeValidator::AnyURI: XERCES_STD_QUALIFIER cout << "AnyURI"; break; case DatatypeValidator::QName: XERCES_STD_QUALIFIER cout << "QName"; break; case DatatypeValidator::Name: XERCES_STD_QUALIFIER cout << "Name"; break; case DatatypeValidator::NCName: XERCES_STD_QUALIFIER cout << "NCName"; break; case DatatypeValidator::Boolean: XERCES_STD_QUALIFIER cout << "Boolean"; break; case DatatypeValidator::Float: XERCES_STD_QUALIFIER cout << "Float"; break; case DatatypeValidator::Double: XERCES_STD_QUALIFIER cout << "Double"; break; case DatatypeValidator::Decimal: XERCES_STD_QUALIFIER cout << "Decimal"; break; case DatatypeValidator::HexBinary: XERCES_STD_QUALIFIER cout << "HexBinary"; break; case DatatypeValidator::Base64Binary: XERCES_STD_QUALIFIER cout << "Base64Binary";break; case DatatypeValidator::Duration: XERCES_STD_QUALIFIER cout << "Duration"; break; case DatatypeValidator::DateTime: XERCES_STD_QUALIFIER cout << "DateTime"; break; case DatatypeValidator::Date: XERCES_STD_QUALIFIER cout << "Date"; break; case DatatypeValidator::Time: XERCES_STD_QUALIFIER cout << "Time"; break; case DatatypeValidator::MonthDay: XERCES_STD_QUALIFIER cout << "MonthDay"; break; case DatatypeValidator::YearMonth: XERCES_STD_QUALIFIER cout << "YearMonth"; break; case DatatypeValidator::Year: XERCES_STD_QUALIFIER cout << "Year"; break; case DatatypeValidator::Month: XERCES_STD_QUALIFIER cout << "Month"; break; case DatatypeValidator::Day: XERCES_STD_QUALIFIER cout << "Day"; break; case DatatypeValidator::ID: XERCES_STD_QUALIFIER cout << "ID"; break; case DatatypeValidator::IDREF: XERCES_STD_QUALIFIER cout << "IDREF"; break; case DatatypeValidator::ENTITY: XERCES_STD_QUALIFIER cout << "ENTITY"; break; case DatatypeValidator::NOTATION: XERCES_STD_QUALIFIER cout << "NOTATION"; break; case DatatypeValidator::List: XERCES_STD_QUALIFIER cout << "List"; break; case DatatypeValidator::Union: XERCES_STD_QUALIFIER cout << "Union"; break; case DatatypeValidator::AnySimpleType: XERCES_STD_QUALIFIER cout << "AnySimpleType"; break; case DatatypeValidator::UnKnown: XERCES_STD_QUALIFIER cout << "UNKNOWN"; break; } XERCES_STD_QUALIFIER cout << "\n"; // Facets RefHashTableOf<KVStringPair>* facets = dtValidator->getFacets(); if( facets && facets->getCount()>0) { XMLSize_t i; // Element's properties XERCES_STD_QUALIFIER cout << "Facets:\t\t\n"; // use a list to print them sorted, or the list could be different on 64-bit machines RefVectorOf<XMLCh> sortedList(facets->getCount(), false); RefHashTableOfEnumerator<KVStringPair> enumFacets(facets); while( enumFacets.hasMoreElements() ) { const KVStringPair& curPair = enumFacets.nextElement(); const XMLCh* key=curPair.getKey(); XMLSize_t len=sortedList.size(); for(i=0;i<len;i++) if(XMLString::compareString(key, sortedList.elementAt(i))<0) { sortedList.insertElementAt((XMLCh*)key,i); break; } if(i==len) sortedList.addElement((XMLCh*)key); } XMLSize_t len=sortedList.size(); for(i=0;i<len;i++) { const XMLCh* key = sortedList.elementAt(i); XERCES_STD_QUALIFIER cout << "\t" << StrX( key ) << "=" << StrX( facets->get(key)->getValue() ) << "\n"; } } // Enumerations RefVectorOf<XMLCh>* enums = (RefVectorOf<XMLCh>*) dtValidator->getEnumString(); if (enums) { XERCES_STD_QUALIFIER cout << "Enumeration:\t\t\n"; XMLSize_t enumLength = enums->size(); for ( XMLSize_t i = 0; i < enumLength; i++) { XERCES_STD_QUALIFIER cout << "\t" << StrX( enums->elementAt(i)) << "\n"; } } }