Teuchos::RCP<const Epetra_MultiVector>
ReducedSpaceFactory::getProjector(const Teuchos::RCP<Teuchos::ParameterList> &params)
{
  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;
}
Beispiel #2
0
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 );
}