Skip to content
Snippets Groups Projects
Commit 23d50e6c authored by Oliver Sander's avatar Oliver Sander Committed by sander@FU-BERLIN.DE
Browse files

use fd approximation provided by the LocalGFEFunction

[[Imported from SVN: r7137]]
parent 95f5a8ac
No related branches found
No related tags found
No related merge requests found
......@@ -156,29 +156,8 @@ void testDerivativeOfGradientWRTCoefficients(const std::vector<TargetSpace>& cor
// evaluate fd approximation of derivative
Tensor3<double, TargetSpace::EmbeddedTangentVector::size, TargetSpace::EmbeddedTangentVector::size, domainDim> fdDerivative;
f.evaluateFDDerivativeOfGradientWRTCoefficient(quadPos, i, fdDerivative);
for (int j=0; j<TargetSpace::EmbeddedTangentVector::size; j++) {
std::vector<TargetSpace> cornersPlus = corners;
std::vector<TargetSpace> cornersMinus = corners;
typename TargetSpace::CoordinateType aPlus = corners[i].globalCoordinates();
typename TargetSpace::CoordinateType aMinus = corners[i].globalCoordinates();
aPlus[j] += eps;
aMinus[j] -= eps;
cornersPlus[i] = TargetSpace(aPlus);
cornersMinus[i] = TargetSpace(aMinus);
LocalGeodesicFEFunction<domainDim,double,TargetSpace> fPlus(cornersPlus);
LocalGeodesicFEFunction<domainDim,double,TargetSpace> fMinus(cornersMinus);
FieldMatrix<double,TargetSpace::EmbeddedTangentVector::size,domainDim> hPlus = fPlus.evaluateDerivative(quadPos);
FieldMatrix<double,TargetSpace::EmbeddedTangentVector::size,domainDim> hMinus = fMinus.evaluateDerivative(quadPos);
fdDerivative[j] = hPlus;
fdDerivative[j] -= hMinus;
fdDerivative[j] /= 2*eps;
}
if ( (derivative - fdDerivative).infinity_norm() > eps ) {
std::cout << className(corners[0]) << ": Analytical derivative of gradient does not match fd approximation." << std::endl;
std::cout << "gfe: ";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment