54 #include "ROL_Elementwise_Function.hpp" 59 #include "Teuchos_oblackholestream.hpp" 60 #include "Teuchos_GlobalMPISession.hpp" 68 typedef typename PV::size_type size_type;
70 const PV eb = Teuchos::dyn_cast<
const PV>(x);
73 for(size_type k=0; k<n; ++k) {
74 std::cout <<
"[subvector " << k <<
"]" << std::endl;
75 Teuchos::RCP<const V> vec = eb.get(k);
76 Teuchos::RCP<const std::vector<Real> > vp =
77 Teuchos::dyn_cast<SV>(
const_cast<V&
>(*vec)).getVector();
78 for(size_type i=0;i<vp->size();++i) {
79 std::cout << (*vp)[i] << std::endl;
92 const Teuchos::RCP<const V>
x_;
93 const Teuchos::RCP<const V>
y_;
98 const Teuchos::RCP<const V> &y ) : x_(x), y_(y) {}
100 void apply( V &Hv,
const V &v, Real &tol )
const {
115 void apply( V &Hv,
const V &v, Real &tol )
const {
125 int main(
int argc,
char *argv[]) {
128 typedef std::vector<RealT> vector;
138 typedef typename vector::size_type uint;
140 using namespace Teuchos;
142 GlobalMPISession mpiSession(&argc, &argv);
144 int iprint = argc - 1;
146 RCP<std::ostream> outStream;
147 oblackholestream bhs;
150 outStream = rcp(&std::cout,
false);
152 outStream = rcp(&bhs,
false);
162 RCP<vector> x1_rcp = rcp(
new vector(dim,1.0) );
163 RCP<vector> x2_rcp = rcp(
new vector(dim,2.0) );
165 RCP<vector> y1_rcp = rcp(
new vector(dim,0.0) );
166 RCP<vector> y2_rcp = rcp(
new vector(dim,0.0) );
168 RCP<vector> z1_rcp = rcp(
new vector(dim,0.0) );
169 RCP<vector> z2_rcp = rcp(
new vector(dim,0.0) );
171 RCP<V> x1 = rcp(
new SV( x1_rcp) );
172 RCP<V> x2 = rcp(
new SV( x2_rcp) );
174 RCP<V> y1 = rcp(
new SV( y1_rcp) );
175 RCP<V> y2 = rcp(
new SV( y2_rcp) );
177 RCP<V> z1 = rcp(
new SV( z1_rcp) );
178 RCP<V> z2 = rcp(
new SV( z2_rcp) );
185 RCP<vector> d1_rcp = rcp(
new vector(dim,0.0) );
186 RCP<vector> d2_rcp = rcp(
new vector(dim,0.0) );
189 RCP<vector> u_rcp = rcp(
new vector(dim,0.0) );
190 RCP<vector> v_rcp = rcp(
new vector(dim,1.0) );
192 (*d1_rcp)[0] = 6.0; (*d2_rcp)[0] = 3.0;
193 (*d1_rcp)[1] = 5.0; (*d2_rcp)[1] = 2.0;
194 (*d1_rcp)[2] = 4.0; (*d2_rcp)[2] = 1.0;
196 (*z1_rcp)[0] = 6.0; (*z2_rcp)[0] = 6.0;
197 (*z1_rcp)[1] = 11.0; (*z2_rcp)[1] = 4.0;
198 (*z1_rcp)[2] = 4.0; (*z2_rcp)[2] = 2.0;
202 RCP<V> d1 = rcp(
new SV(d1_rcp) );
203 RCP<V> d2 = rcp(
new SV(d2_rcp) );
204 RCP<V> u = rcp(
new SV(u_rcp) );
205 RCP<V> v = rcp(
new SV(v_rcp) );
207 RCP<LinOp> D1 = rcp(
new DiagOp(*d1) );
208 RCP<LinOp> NO = rcp(
new NullOp() );
209 RCP<LinOp> UV = rcp(
new DyadOp(u,v) );
210 RCP<LinOp> D2 = rcp(
new DiagOp(*d2) );
215 D1->apply(*x1,*x1,tol);
216 D1->applyInverse(*x1,*x1,tol);
221 bkop.
apply(*y,*x,tol);
225 errorFlag +=
static_cast<int>(z->norm()>errtol);
229 catch (std::logic_error err) {
235 std::cout <<
"End Result: TEST FAILED\n";
237 std::cout <<
"End Result: TEST PASSED\n";
int main(int argc, char *argv[])
virtual void scale(const Real alpha)=0
Compute where .
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.
Teuchos::RCP< Vector< Real > > CreatePartitionedVector(const Teuchos::RCP< Vector< Real > > &a)
virtual void zero()
Set to zero vector.
Defines the linear algebra or vector space interface.
void print_vector(const ROL::Vector< Real > &x)
virtual Real dot(const Vector &x) const =0
Compute where .
Provides the interface to apply a diagonal operator which acts like elementwise multiplication when a...
void apply(V &Hv, const V &v, Real &tol) const
Apply linear operator.
void apply(V &Hv, const V &v, Real &tol) const
Apply linear operator.
Provides the interface to apply a linear operator.
void apply(V &Hv, const V &v, Real &tol) const
Apply linear operator.
const Teuchos::RCP< const V > y_
virtual void set(const Vector &x)
Set where .
DyadicOperator(const Teuchos::RCP< const V > &x, const Teuchos::RCP< const V > &y)
const Teuchos::RCP< const V > x_