53 double r2 = r[0]*r[0]+r[2]*r[2];
55 if(r2<minimumR*minimumR) {
60 const double r6 = (r2*r2*r2);
62 const double D = -
q[2];
64 const double DerivativeSameComponent=D*( 2*r[2]*(r[2]*r[2]-3*r[0]*r[0]))/r6;
65 const double DerivativeDiffComponent=D*( 2*r[0]*(r[0]*r[0]-3*r[2]*r[2]))/r6;
73 return D*2*r[0]*r[2]/(r2*r2);
75 return D*(r[2]*r[2]-r[0]*r[0])/(r2*r2);
81 if(dcomponent == 1 || component == 1) {
83 }
else if(dcomponent == component) {
86 return DerivativeSameComponent;
88 return -DerivativeSameComponent;
93 return DerivativeDiffComponent;
double operator()(double x, double y, double z, coordinate component, unsigned int derivative=0, coordinate dcomponent=X) const