@@ -466,6 +466,7 @@ public:
466466#endif
467467#endif // LIBMESH_DIM > 1
468468#if LIBMESH_DIM > 2
469+ CPPUNIT_TEST ( testFirstScalarNumber );
469470 CPPUNIT_TEST ( testProjectHierarchicHex27 );
470471 CPPUNIT_TEST ( testProjectMeshFunctionHex27 );
471472 CPPUNIT_TEST ( testBoundaryProjectCube );
@@ -584,6 +585,45 @@ public:
584585 }
585586
586587
588+ void testFirstScalarNumber ()
589+ {
590+ Mesh mesh (* TestCommWorld );
591+
592+ MeshTools ::Generation ::build_cube (mesh ,
593+ 1 , 1 , 1 ,
594+ 0. , 1. , 0. , 1. , 0. , 1. ,
595+ HEX8 );
596+
597+ EquationSystems es (mesh );
598+ System & sys = es .add_system < System > ("SimpleSystem" );
599+
600+ const FEFamily types [3 ] = {MONOMIAL_VEC , LAGRANGE_VEC , NEDELEC_ONE };
601+ const Order orders [3 ] = {CONSTANT , SECOND , FIRST };
602+ const std ::string names [3 ] = {"u" , "v" , "w" };
603+ const unsigned int var_nums [3 ] =
604+ {
605+ sys .add_variable ("u" , CONSTANT , MONOMIAL_VEC ),
606+ sys .add_variable ("v" , SECOND , LAGRANGE_VEC ),
607+ sys .add_variable ("w" , FIRST , NEDELEC_ONE )
608+ };
609+
610+ for (unsigned int i : {0 , 1 , 2 })
611+ {
612+ // We did just add these in order
613+ CPPUNIT_ASSERT_EQUAL (i , var_nums [i ]);
614+
615+ auto & var = sys .variable (i );
616+ CPPUNIT_ASSERT_EQUAL (var .system (), & sys );
617+ CPPUNIT_ASSERT_EQUAL (var .name (), names [i ]);
618+ CPPUNIT_ASSERT_EQUAL (var .number (), i );
619+ CPPUNIT_ASSERT_EQUAL (var .first_scalar_number (), i * 3 );
620+ CPPUNIT_ASSERT_EQUAL (var .type ().family , types [i ]);
621+ CPPUNIT_ASSERT_EQUAL (Order (var .type ().order ), orders [i ]);
622+ CPPUNIT_ASSERT_EQUAL (var .n_components (mesh ), 3u );
623+ }
624+ }
625+
626+
587627 void test100KVariables ()
588628 {
589629 Mesh mesh (* TestCommWorld );
0 commit comments