26 #include "grins_config.h"
37 #include "libmesh/exact_solution.h"
40 #ifdef GRINS_HAVE_GRVY
46 const libMesh::Parameters& params,
47 const std::string& sys,
48 const std::string& var );
52 const libMesh::Parameters& params,
53 const std::string& sys,
54 const std::string& var );
56 int main(
int argc,
char* argv[])
59 #ifdef GRINS_USE_GRVY_TIMERS
60 GRVY::GRVY_Timer_Class grvy_timer;
61 grvy_timer.Init(
"GRINS Timer");
68 std::cerr <<
"Error: Must specify libMesh input file." << std::endl;
73 std::string libMesh_input_filename = argv[1];
76 GetPot libMesh_inputfile( libMesh_input_filename );
78 #ifdef GRINS_USE_GRVY_TIMERS
79 grvy_timer.BeginTimer(
"Initialize Solver");
83 libMesh::LibMeshInit libmesh_init(argc, argv);
89 libmesh_init.comm() );
91 #ifdef GRINS_USE_GRVY_TIMERS
92 grvy_timer.EndTimer(
"Initialize Solver");
95 grins.attach_grvy_timer( &grvy_timer );
100 #ifdef GRINS_USE_GRVY_TIMERS
101 grvy_timer.Finalize();
104 std::tr1::shared_ptr<libMesh::EquationSystems> es = grins.get_equation_system();
107 libMesh::ExactSolution exact_sol(*es);
113 exact_sol.compute_error(
"GRINS",
"v");
115 double l2error = exact_sol.l2_error(
"GRINS",
"v");
116 double h1error = exact_sol.h1_error(
"GRINS",
"v");
120 if( l2error > 4.0e-9 || h1error > 4.0e-9 )
124 std::cout <<
"Tolerance exceeded for Couette flow test." << std::endl
125 <<
"l2 error = " << l2error << std::endl
126 <<
"h1 error = " << h1error << std::endl;
134 const libMesh::Parameters& ,
135 const std::string& sys,
136 const std::string& var )
138 const double x = p(0);
140 if( sys !=
"GRINS" || var !=
"v" )
141 std::cout <<
"sys = " << sys <<
", var = " << var << std::endl;
144 libMesh::Number f = 10.0*x;
151 const libMesh::Parameters& ,
152 const std::string& sys,
153 const std::string& var )
157 if( sys !=
"GRINS" || var !=
"v" )
158 std::cout <<
"sys = " << sys <<
", var = " << var << std::endl;
libMesh::Number exact_solution(const libMesh::Point &p, const libMesh::Parameters ¶ms, const std::string &sys, const std::string &var)
int main(int argc, char *argv[])
libMesh::Gradient exact_derivative(const libMesh::Point &p, const libMesh::Parameters ¶ms, const std::string &sys, const std::string &var)