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); }