51 #include "Teuchos_oblackholestream.hpp" 52 #include "Teuchos_GlobalMPISession.hpp" 63 typedef typename PV::size_type size_type;
65 const PV eb = Teuchos::dyn_cast<
const PV>(x);
68 for(size_type k=0; k<n; ++k) {
69 std::cout <<
"[subvector " << k <<
"]" << std::endl;
70 Teuchos::RCP<const V> vec = eb.get(k);
71 Teuchos::RCP<const std::vector<Real> > vp =
72 Teuchos::dyn_cast<SV>(
const_cast<V&
>(*vec)).getVector();
73 for(size_type i=0;i<vp->size();++i) {
74 std::cout << (*vp)[i] << std::endl;
81 int main(
int argc,
char *argv[]) {
83 using namespace Teuchos;
89 GlobalMPISession mpiSession(&argc, &argv);
91 int iprint = argc - 1;
93 RCP<std::ostream> outStream;
97 outStream = rcp(&std::cout,
false);
99 outStream = rcp(&bhs,
false);
107 PV::size_type nvec = 3;
108 std::vector<int> dim;
116 RealT left = -1e0, right = 1e0;
118 RCP<std::vector<RCP<V> > > x_rcp = rcp(
new std::vector<RCP<V> > );
119 RCP<std::vector<RCP<V> > > y_rcp = rcp(
new std::vector<RCP<V> > );
120 RCP<std::vector<RCP<V> > > z_rcp = rcp(
new std::vector<RCP<V> > );
122 for( PV::size_type k=0; k<nvec; ++k ) {
123 RCP<std::vector<RealT> > xk_rcp = rcp(
new std::vector<RealT>(dim[k]) );
124 RCP<std::vector<RealT> > yk_rcp = rcp(
new std::vector<RealT>(dim[k]) );
125 RCP<std::vector<RealT> > zk_rcp = rcp(
new std::vector<RealT>(dim[k]) );
127 for(
int i=0; i<dim[k]; ++i ) {
128 (*xk_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
129 (*yk_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
130 (*zk_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
133 RCP<V> xk = rcp(
new SV( xk_rcp ) );
134 RCP<V> yk = rcp(
new SV( yk_rcp ) );
135 RCP<V> zk = rcp(
new SV( zk_rcp ) );
137 x_rcp->push_back(xk);
138 y_rcp->push_back(yk);
139 z_rcp->push_back(zk);
150 std::vector<RealT> consistency = x.checkVector(y, z,
true, *outStream);
152 if (checkvec.
norm() > std::sqrt(errtol)) {
158 Teuchos::RCP<ROL::Vector<RealT> > zp = x.clone();
160 RealT znorm = zp->norm();
161 *outStream <<
"Norm of ROL::Vector z (first basis vector): " << znorm <<
"\n";
162 if ( std::abs(znorm-1.0) > errtol ) {
163 *outStream <<
"---> POSSIBLE ERROR ABOVE!\n";
167 zp = x.basis(total_dim/2);
169 *outStream <<
"\nNorm of ROL::Vector z ('middle' basis vector): " << znorm <<
"\n";
170 if ( std::abs(znorm-1.0) > errtol ) {
171 *outStream <<
"---> POSSIBLE ERROR ABOVE!\n";
175 zp = x.basis(total_dim-1);
177 *outStream <<
"\nNorm of ROL::Vector z (last basis vector): " << znorm <<
"\n";
178 if ( std::abs(znorm-1.0) > errtol ) {
179 *outStream <<
"---> POSSIBLE ERROR ABOVE!\n";
185 consistency = x.checkVector(x, x,
true, *outStream);
186 if (checkvec.
norm() > 0.0) {
191 int m = atoi(argv[1]);
200 catch (std::logic_error err) {
201 *outStream << err.what() <<
"\n";
206 std::cout <<
"End Result: TEST FAILED\n";
208 std::cout <<
"End Result: TEST PASSED\n";
size_type numVectors() const
Defines the linear algebra of vector space on a generic partitioned vector.
Contains definitions of custom data types in ROL.
static const double ROL_THRESHOLD
Tolerance for various equality tests.
Defines the linear algebra or vector space interface.
Real norm() const
Returns where .
Provides the std::vector implementation of the ROL::Vector interface.
void print_vector(const ROL::Vector< Real > &x)
int main(int argc, char *argv[])