Go to the documentation of this file.    1 #include <libmesh/equation_systems.h> 
    2 #include <libmesh/mesh.h> 
    3 #include <libmesh/mesh_generation.h> 
    4 #include <libmesh/fem_system.h> 
    5 #include <libmesh/quadrature.h> 
    6 #include <libmesh/diff_solver.h> 
    7 #include <libmesh/newmark_solver.h> 
    8 #include <libmesh/euler_solver.h> 
    9 #include <libmesh/euler2_solver.h> 
   15 template<
typename SystemBase>
 
   20                          const std::string & name_in,
 
   21                          const unsigned int number_in)
 
   22     : SystemBase(es, name_in, number_in)
 
   25   virtual Number F( FEMContext & , 
unsigned int  )
 override 
   26   { 
return -
Real(271)/100; }
 
   28   virtual Number C( FEMContext & , 
unsigned int  )
 override 
   31   virtual Number M( FEMContext & , 
unsigned int  )
 override 
   32   { 
return Real(314)/100; }
 
   35   { 
return Real(271)/
Real(314)*0.5*t*t; }
 
   39 template<
typename SystemBase>
 
   44                            const std::string & name_in,
 
   45                            const unsigned int number_in)
 
   46     : SystemBase(es, name_in, number_in)
 
   49   virtual Number F( FEMContext & context, 
unsigned int  )
 override 
   50   { 
return -6.0*context.get_time()-2.0; }
 
   52   virtual Number C( FEMContext & , 
unsigned int  )
 override 
   55   virtual Number M( FEMContext & , 
unsigned int  )
 override 
   73   { time_solver.set_beta(
_beta);
 
   74     time_solver.compute_initial_accel(); }
 
   88 #ifdef LIBMESH_HAVE_SOLVER 
  101     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemSecondOrderTimeSolverBase>>(0.5,10);
 
  110     this->run_test_with_exact_soln<LinearTimeSecondOrderODE<SecondOrderScalarSystemSecondOrderTimeSolverBase>>(0.5,10);
 
  115     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
 
  124     this->run_test_with_exact_soln<LinearTimeSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
 
  129 template<
typename TimeSolverType>
 
  141   { time_solver.theta = 
_theta; }
 
  155 #ifdef LIBMESH_HAVE_SOLVER 
  166     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
 
  177 #ifdef LIBMESH_HAVE_SOLVER 
  187     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
 
 
void testEulerSolverConstantSecondOrderODE()
 
void testNewmarkSolverConstantSecondOrderODESecondOrderStyle()
 
Implements ODE: 1.0\ddot{u} = 6.0*t+2.0, u(0) = 0,.
 
Implements ODE: 3.14\ddot{u} = 2.71, u(0) = 0,.
 
CPPUNIT_TEST_SUITE(Euler2SolverSecondOrderTest)
 
virtual void aux_time_solver_init(NewmarkSolver &time_solver) override
 
virtual Number F(FEMContext &, unsigned int) override
 
void testNewmarkSolverLinearTimeSecondOrderODESecondOrderStyle()
 
CPPUNIT_TEST(testEuler2SolverConstantSecondOrderODE)
 
virtual Number C(FEMContext &, unsigned int) override
 
void testNewmarkSolverConstantSecondOrderODEFirstOrderStyle()
 
CPPUNIT_TEST(testEulerSolverConstantSecondOrderODE)
 
CPPUNIT_TEST_SUITE_REGISTRATION(NewmarkSolverTest)
 
CPPUNIT_TEST_SUITE(NewmarkSolverTest)
 
virtual Number F(FEMContext &context, unsigned int) override
 
virtual Number M(FEMContext &, unsigned int) override
 
LinearTimeSecondOrderODE(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
 
virtual Number u(Real t) override
 
virtual Number M(FEMContext &, unsigned int) override
 
virtual void aux_time_solver_init(TimeSolverType &time_solver)
 
CPPUNIT_TEST(testNewmarkSolverConstantSecondOrderODESecondOrderStyle)
 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
 
virtual Number C(FEMContext &, unsigned int) override
 
virtual Number u(Real t) override
 
void testNewmarkSolverLinearTimeSecondOrderODEFirstOrderStyle()
 
ConstantSecondOrderODE(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
 
void testEuler2SolverConstantSecondOrderODE()
 
CPPUNIT_TEST_SUITE(EulerSolverSecondOrderTest)
 
void set_theta(Real theta)