void MatrixZero::initialize(
  const VectorSpace::space_ptr_t&    space_cols
  ,const VectorSpace::space_ptr_t&   space_rows
  )
{
  TEUCHOS_TEST_FOR_EXCEPTION(
    (space_cols.get() == NULL && space_rows.get() != NULL)
    || (space_cols.get() != NULL && space_rows.get() == NULL)
    , std::invalid_argument
    ,"MatrixZero::initialize(...) : Error, the space_cols.get() and "
    "space_rows.get() must both be != NULL or == NULL" );
  space_cols_ = space_cols;
  space_rows_ = space_rows;
}
void ExampleBasisSystem::initialize(
  const VectorSpace::space_ptr_t       &space_x
  ,const Range1D                       &var_dep
  ,const Range1D                       &var_indep
  )
{
  namespace mmp = MemMngPack;
  TEUCHOS_TEST_FOR_EXCEPTION(
    space_x.get() == NULL, std::invalid_argument
    ,"ExampleBasisSystem::initialize(...) : Error, space_x must be specified!"
    );
  BasisSystemComposite::initialize(
    space_x
    ,var_dep
    ,var_indep
    ,space_x->sub_space(var_dep)
    ,Teuchos::rcp(new Teuchos::AbstractFactoryStd<MatrixOpNonsing,MatrixSymDiagStd>())      // C
    ,Teuchos::rcp(new Teuchos::AbstractFactoryStd<MatrixSymOp,MatrixSymDiagStd>())          // D'*D
    ,Teuchos::rcp(new Teuchos::AbstractFactoryStd<MatrixSymOpNonsing,MatrixSymDiagStd>())   // S
    ,Teuchos::rcp(new Teuchos::AbstractFactoryStd<MatrixOp,MatrixSymDiagStd>())             // D
    );
}