Teuchos::RCP<const Epetra_MultiVector> ReducedSpaceFactory::getProjector(const Teuchos::RCP<Teuchos::ParameterList> ¶ms) { const Teuchos::RCP<const Epetra_MultiVector> basis = this->getBasis(params); const Teuchos::RCP<const Epetra_Map> basisMap = mapDowncast(basis->Map()); TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(basisMap)); const Teuchos::RCP<const Epetra_Operator> collocationOperator = this->getSamplingOperator(params, *basisMap); Teuchos::RCP<const Epetra_MultiVector> result = basis; if (Teuchos::nonnull(collocationOperator)) { const Teuchos::RCP<Epetra_MultiVector> dualBasis( new Epetra_MultiVector(collocationOperator->OperatorRangeMap(), basis->NumVectors(), false)); dualize(*basis, *collocationOperator, *dualBasis); result = dualBasis; } return result; }
int main( int argc, char** argv ) { bool use_binary = true; // interpret input as binary or ascii file bool use_save_binary = true; // write output as binary or ascii file bool use_dualize = false; // dualize filtration std::string input_filename; // name of file that contains the boundary matrix std::string output_filename; // name of file that will contain the boundary matrix in the new binary format parse_command_line( argc, argv, use_binary, use_save_binary, use_dualize, input_filename, output_filename ); phat::boundary_matrix< phat::bit_tree_pivot_column > matrix; if( use_binary ) matrix.load_binary( input_filename ); else matrix.load_ascii( input_filename ); if( use_dualize ) dualize( matrix ); if( use_save_binary ) matrix.save_binary( output_filename ); else matrix.save_ascii( output_filename ); }