26 #include "grins_config.h"
36 #include "libmesh/exact_solution.h"
39 #ifdef GRINS_HAVE_GRVY
45 const libMesh::Parameters&,
51 const libMesh::Parameters&,
55 int main(
int argc,
char* argv[])
58 #ifdef GRINS_USE_GRVY_TIMERS
59 GRVY::GRVY_Timer_Class grvy_timer;
60 grvy_timer.Init(
"GRINS Timer");
67 std::cerr <<
"Error: Must specify libMesh input file." << std::endl;
72 std::string libMesh_input_filename = argv[1];
75 GetPot libMesh_inputfile( libMesh_input_filename );
77 #ifdef GRINS_USE_GRVY_TIMERS
78 grvy_timer.BeginTimer(
"Initialize Solver");
82 libMesh::LibMeshInit libmesh_init(argc, argv);
88 libmesh_init.comm() );
90 #ifdef GRINS_USE_GRVY_TIMERS
91 grvy_timer.EndTimer(
"Initialize Solver");
94 grins.attach_grvy_timer( &grvy_timer );
99 #ifdef GRINS_USE_GRVY_TIMERS
100 grvy_timer.Finalize();
103 std::tr1::shared_ptr<libMesh::EquationSystems> es = grins.get_equation_system();
106 libMesh::ExactSolution exact_sol(*es);
112 exact_sol.compute_error(
"GRINS",
"u");
114 double l2error = exact_sol.l2_error(
"GRINS",
"u");
115 double h1error = exact_sol.h1_error(
"GRINS",
"u");
119 if( l2error > 1.0e-10 || h1error > 1.0e-10 )
123 std::cout <<
"Tolerance exceeded for Couette flow test." << std::endl
124 <<
"l2 error = " << l2error << std::endl
125 <<
"h1 error = " << h1error << std::endl;
133 const libMesh::Parameters& ,
137 const double y = p(1);
140 libMesh::Number f = 10.0*y;
147 const libMesh::Parameters& ,
libMesh::Number exact_solution(const libMesh::Point &p, const libMesh::Parameters &, const std::string &, const std::string &)
libMesh::Gradient exact_derivative(const libMesh::Point &p, const libMesh::Parameters &, const std::string &, const std::string &)
int main(int argc, char *argv[])