Friction

Smooth Mollifier

double ipc::smooth_friction_f0(const double yconst double eps_v);

Smooth friction mollifier function.

\[ f_0(y)= \begin{cases} -\frac{y^3}{3\epsilon_v^2} + \frac{y^2}{\epsilon_v} + \frac{\epsilon_v}{3}, & |y| < \epsilon_v \newline y, & |y| \geq \epsilon_v \end{cases} \]

Parameters:
const double y

The tangential relative speed.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the mollifier function at y.

double ipc::smooth_friction_f1(const double yconst double eps_v);

The first derivative of the smooth friction mollifier.

\[ f_1(y) = f_0'(y) = \begin{cases} -\frac{y^2}{\epsilon_v^2}+\frac{2 y}{\epsilon_v}, & |y| < \epsilon_v \newline 1, & |y| \geq \epsilon_v \end{cases} \]

Parameters:
const double y

The tangential relative speed.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the derivative of the smooth friction mollifier at y.

double ipc::smooth_friction_f2(const double yconst double eps_v);

The second derivative of the smooth friction mollifier.

\[ f_2(y) = f_0''(y) = \begin{cases} -\frac{2 y}{\epsilon_v^2}+\frac{2}{\epsilon_v}, & |y| < \epsilon_v \newline 0, & |y| \geq \epsilon_v \end{cases} \]

Parameters:
const double y

The tangential relative speed.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the second derivative of the smooth friction mollifier at y.

double ipc::smooth_friction_f1_over_x(
    
const double yconst double eps_v);

Compute the derivative of the smooth friction mollifier divided by y ( \(\frac{f_0'(y)}{y}\)).

\[ \frac{f_1(y)}{y} = \begin{cases} -\frac{y}{\epsilon_v^2}+\frac{2}{\epsilon_v}, & |y| < \epsilon_v \newline \frac{1}{y}, & |y| \geq \epsilon_v \end{cases} \]

Note

The x in the function name refers to the parameter y.

Parameters:
const double y

The tangential relative speed.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the derivative of smooth_friction_f0 divided by y.

double ipc::smooth_friction_f2_x_minus_f1_over_x3(
    
const double yconst double eps_v);

The derivative of f1 times y minus f1 all divided by y cubed.

\[ \frac{f_1'(y) y - f_1(y)}{y^3} = \begin{cases} -\frac{1}{y \epsilon_v^2}, & |y| < \epsilon_v \newline -\frac{1}{y^3}, & |y| \geq \epsilon_v \end{cases} \]

Note

The x in the function name refers to the parameter y.

Parameters:
const double y

The tangential relative speed.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The derivative of f1 times y minus f1 all divided by y cubed.

Smooth \(\mu\)

double ipc::smooth_mu(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Smooth coefficient from static to kinetic friction.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the μ at y.

double ipc::smooth_mu_derivative(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Compute the derivative of the smooth coefficient from static to kinetic friction.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the derivative at y.

double ipc::smooth_mu_f0(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Compute the value of the ∫ μ(y) f₁(y) dy, where f₁ is the first derivative of the smooth friction mollifier.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the integral at y.

double ipc::smooth_mu_f1(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Compute the value of the μ(y) f₁(y), where f₁ is the first derivative of the smooth friction mollifier.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the product at y.

double ipc::smooth_mu_f2(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Compute the value of d/dy (μ(y) f₁(y)), where f₁ is the first derivative of the smooth friction mollifier.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the derivative at y.

double ipc::smooth_mu_f1_over_x(const double yconst double mu_s,
    
const double mu_kconst double eps_v);

Compute the value of the μ(y) f₁(y) / y, where f₁ is the first derivative of the smooth friction mollifier.

Note

The x in the function name refers to the parameter y.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the product at y.

double ipc::smooth_mu_f2_x_minus_mu_f1_over_x3(const double y,
    
const double mu_sconst double mu_kconst double eps_v);

Compute the value of the [(d/dy μ(y) f₁(y)) ⋅ y - μ(y) f₁(y)] / y³, where f₁ and f₂ are the first and second derivatives of the smooth friction mollifier.

Note

The x in the function name refers to the parameter y.

Parameters:
const double y

The tangential relative speed.

const double mu_s

Coefficient of static friction.

const double mu_k

Coefficient of kinetic friction.

const double eps_v

Velocity threshold below which static friction force is applied.

Returns:

The value of the expression at y.