52 #ifdef GRINS_USE_GRVY_TIMERS 
   53   GRVY::GRVY_Timer_Class grvy_timer;
 
   54   grvy_timer.Init(
"GRINS Timer");
 
   60                 std::cerr << 
"Error: Must specify libMesh input file." << std::endl;
 
   65         std::string libMesh_input_filename = argv[1];
 
   68         GetPot libMesh_inputfile( libMesh_input_filename );
 
   72                 std::ifstream i(libMesh_input_filename.c_str());
 
   75                         std::cerr << 
"Error: Could not read from libMesh input file " 
   76                                         << libMesh_input_filename << std::endl;
 
   82         libMesh::LibMeshInit libmesh_init(argc, argv);
 
   84         libMesh::out << 
"Starting GRINS with command:\n";
 
   85         for (
int i=0; i != argc; ++i)
 
   86                 libMesh::out << argv[i] << 
' ';
 
   87         libMesh::out << std::endl;
 
   93                                                      libmesh_init.comm() );
 
   95         std::string system_name = libMesh_inputfile( 
"screen-options/system_name", 
"GRINS" );
 
   98         GRINS::SharedPtr<libMesh::EquationSystems> es = grins.get_equation_system();
 
   99         const libMesh::System& system = es->get_system(system_name);
 
  101         libMesh::Parameters ¶ms = es->parameters;
 
  110         libMesh::ExactSolution exact_sol(*es);
 
  112         libMesh::EquationSystems es_ref( es->get_mesh() );
 
  115         std::string solution_file = std::string(argv[2]);
 
  116         es_ref.read( solution_file );
 
  118         exact_sol.attach_reference_solution( &es_ref );
 
  121         exact_sol.compute_error(system_name, 
"u");
 
  122         exact_sol.compute_error(system_name, 
"v");
 
  123         exact_sol.compute_error(system_name, 
"w");
 
  125         double u_l2error = exact_sol.l2_error(system_name, 
"u");
 
  126         double u_h1error = exact_sol.h1_error(system_name, 
"u");
 
  128         double v_l2error = exact_sol.l2_error(system_name, 
"v");
 
  129         double v_h1error = exact_sol.h1_error(system_name, 
"v");
 
  131         double w_l2error = exact_sol.l2_error(system_name, 
"w");
 
  132         double w_h1error = exact_sol.h1_error(system_name, 
"w");
 
  138         if( u_l2error > tol   || u_h1error > tol   ||
 
  139             v_l2error > tol   || v_h1error > tol   ||
 
  140             w_l2error > tol   || w_h1error > tol     )
 
  144           std::cout << 
"Tolerance exceeded for suspended cable test." << std::endl
 
  145                 << 
"tolerance     = " << tol << std::endl
 
  146                 << 
"u l2 error    = " << u_l2error << std::endl
 
  147                 << 
"u h1 error    = " << u_h1error << std::endl
 
  148                 << 
"v l2 error    = " << v_l2error << std::endl
 
  149                 << 
"v h1 error    = " << v_h1error << std::endl
 
  150                 << 
"w l2 error    = " << w_l2error << std::endl
 
  151                 << 
"w h1 error    = " << w_h1error << std::endl;
 
libMesh::Real initial_values(const libMesh::Point &p, const libMesh::Parameters ¶ms, const std::string &system_name, const std::string &unknown_name)