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   103     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemSecondOrderTimeSolverBase>>(0.5,10);
   114     this->run_test_with_exact_soln<LinearTimeSecondOrderODE<SecondOrderScalarSystemSecondOrderTimeSolverBase>>(0.5,10);
   121     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
   132     this->run_test_with_exact_soln<LinearTimeSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
   137 template<
typename TimeSolverType>
   149   { time_solver.theta = 
_theta; }
   163 #ifdef LIBMESH_HAVE_SOLVER   176     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
   187 #ifdef LIBMESH_HAVE_SOLVER   199     this->run_test_with_exact_soln<ConstantSecondOrderODE<SecondOrderScalarSystemFirstOrderTimeSolverBase>>(0.5,10);
 
virtual void aux_time_solver_init(NewmarkSolver &time_solver) override
 
Implements ODE: 3.14{u} = 2.71, u(0) = 0,. 
 
virtual Number u(Real t) override
 
CPPUNIT_TEST(testEulerSolverConstantSecondOrderODE)
 
virtual Number F(FEMContext &context, unsigned int) override
 
void testNewmarkSolverLinearTimeSecondOrderODEFirstOrderStyle()
 
LIBMESH_CPPUNIT_TEST_SUITE(NewmarkSolverTest)
 
virtual Number F(FEMContext &, unsigned int) override
 
void set_theta(Real theta)
 
virtual Number C(FEMContext &, unsigned int) override
 
void testEuler2SolverConstantSecondOrderODE()
 
CPPUNIT_TEST_SUITE_REGISTRATION(NewmarkSolverTest)
 
ConstantSecondOrderODE(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
 
CPPUNIT_TEST(testNewmarkSolverConstantSecondOrderODESecondOrderStyle)
 
virtual Number M(FEMContext &, unsigned int) override
 
void testNewmarkSolverLinearTimeSecondOrderODESecondOrderStyle()
 
LIBMESH_CPPUNIT_TEST_SUITE(EulerSolverSecondOrderTest)
 
LIBMESH_CPPUNIT_TEST_SUITE(Euler2SolverSecondOrderTest)
 
void testNewmarkSolverConstantSecondOrderODEFirstOrderStyle()
 
CPPUNIT_TEST(testEuler2SolverConstantSecondOrderODE)
 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
 
virtual Number C(FEMContext &, unsigned int) override
 
virtual Number u(Real t) override
 
virtual void aux_time_solver_init(TimeSolverType &time_solver)
 
Implements ODE: 1.0{u} = 6.0*t+2.0, u(0) = 0,. 
 
LinearTimeSecondOrderODE(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
 
virtual Number M(FEMContext &, unsigned int) override
 
void testNewmarkSolverConstantSecondOrderODESecondOrderStyle()
 
void testEulerSolverConstantSecondOrderODE()