59int main(
int argc,
char *argv[])
66 RCP<const Thyra::VectorSpaceBase<double> > xSpace =
67 Thyra::defaultSpmdVectorSpace<double>(vectorLength);
69 RCP<Thyra::VectorBase<double> > x_n = Thyra::createMember(xSpace);
70 RCP<Thyra::VectorBase<double> > xDot_n = Thyra::createMember(xSpace);
75 double epsilon = 1.0e-1;
78 Thyra::DetachedVectorView<double> x_n_view(*x_n);
81 Thyra::DetachedVectorView<double> xDot_n_view(*xDot_n);
83 xDot_n_view[1] = -2.0/epsilon;
87 double finalTime = 2.0;
88 int nTimeSteps = 2000;
89 const double constDT = finalTime/nTimeSteps;
92 cout << n <<
" " << time <<
" " << get_ele(*(x_n), 0)
93 <<
" " << get_ele(*(x_n), 1) << endl;
94 while (passed && time < finalTime && n < nTimeSteps) {
97 RCP<Thyra::VectorBase<double> > x_np1 = x_n->clone_v();
105 Thyra::ConstDetachedVectorView<double> x_n_view(*x_n);
106 Thyra::DetachedVectorView<double> xDot_n_view(*xDot_n);
107 xDot_n_view[0] = x_n_view[1];
109 ((1.0-x_n_view[0]*x_n_view[0])*x_n_view[1]-x_n_view[0])/epsilon;
113 Thyra::V_VpStV(x_np1.ptr(), *x_n, dt, *xDot_n);
116 if ( std::isnan(Thyra::norm(*x_np1)) ) {
120 Thyra::V_V(x_n.ptr(), *x_np1);
126 cout << n <<
" " << time <<
" " << get_ele(*(x_n), 0)
127 <<
" " << get_ele(*(x_n), 1) << endl;
131 RCP<Thyra::VectorBase<double> > x_regress = x_n->clone_v();
133 Thyra::DetachedVectorView<double> x_regress_view(*x_regress);
134 x_regress_view[0] = -1.59496108218721311;
135 x_regress_view[1] = 0.96359412806611255;
138 RCP<Thyra::VectorBase<double> > x_error = x_n->clone_v();
139 Thyra::V_VmV(x_error.ptr(), *x_n, *x_regress);
140 double x_L2norm_error = Thyra::norm_2(*x_error );
141 double x_L2norm_regress = Thyra::norm_2(*x_regress);
143 cout <<
"Relative L2 Norm of the error (regression) = "
144 << x_L2norm_error/x_L2norm_regress << endl;
145 if ( x_L2norm_error > 1.0e-08*x_L2norm_regress) {
147 cout <<
"FAILED regression constraint!" << endl;
149 if (passed) success =
true;
151 TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
154 cout <<
"\nEnd Result: Test Passed!" << std::endl;
156 return ( success ? EXIT_SUCCESS : EXIT_FAILURE );