void TestComputeTransformedBasisFunction2()
    {
        // 2D - with better test data
        std::vector<Node<2>*> nodes;
        nodes.push_back(new Node<2>(0, false, 4.0, 3.0));
        nodes.push_back(new Node<2>(1, false, 6.0, 4.0));
        nodes.push_back(new Node<2>(2, false, 3.0, 5.0));
        Element<2,2> element(INDEX_IS_NOT_USED, nodes);

        c_matrix<double, 2, 2> jacobian, inverse_jacobian;
        double determinant;
        element.CalculateInverseJacobian(jacobian, determinant, inverse_jacobian);
        ChastePoint<2> evaluation_point(1,1);
        c_matrix<double, 2, 3> trans_deriv;
        LinearBasisFunction<2>::ComputeTransformedBasisFunctionDerivatives(evaluation_point,
                                                                           inverse_jacobian,
                                                                           trans_deriv);

        TS_ASSERT_DELTA(trans_deriv(0,0),-0.2, 1e-12);
        TS_ASSERT_DELTA(trans_deriv(1,0),-0.6, 1e-12);
        TS_ASSERT_DELTA(trans_deriv(0,1),0.4, 1e-12);
        TS_ASSERT_DELTA(trans_deriv(1,1),0.2, 1e-12);
        TS_ASSERT_DELTA(trans_deriv(0,2),-0.2, 1e-12);
        TS_ASSERT_DELTA(trans_deriv(1,2),0.4, 1e-12);

        delete nodes[0];
        delete nodes[1];
        delete nodes[2];
    }
 void TestVaryingPde1D()
 {
     VaryingDiffusionAndSourceTermPde<1> pde;
     ChastePoint<1> evaluation_point(2);
     TS_ASSERT_EQUALS(pde.ComputeConstantInUSourceTerm(evaluation_point, NULL),8.0);
     c_matrix<double, 1, 1> diffusion_term = pde.ComputeDiffusionTerm(evaluation_point);
     TS_ASSERT_EQUALS(diffusion_term(0,0), 4);
 }
 void TestVaryingPde2D()
 {
     VaryingDiffusionAndSourceTermPde<2> pde;
     ChastePoint<2> evaluation_point(3,4);
     TS_ASSERT_EQUALS(pde.ComputeConstantInUSourceTerm(evaluation_point, NULL),125.0);
     c_matrix<double, 2, 2> diffusion_term = pde.ComputeDiffusionTerm(evaluation_point);
     TS_ASSERT_EQUALS(diffusion_term(0,0), 25.0);
     TS_ASSERT_EQUALS(diffusion_term(0,1), 0.0);
     TS_ASSERT_EQUALS(diffusion_term(1,0), 0.0);
     TS_ASSERT_EQUALS(diffusion_term(1,1), 25.0);
 }