Physlib

Physlib.ClassicalMechanics.Force

Forces

This module defines forces acting on objects, expressed in a reference frame. A `Force` records its target and its vector value over time. An `InternalForce` additionally records a distinct source object.

The time-dependent vector describes the force acting on the target, without prescribing how that force is determined. For example, a gravitational force can be specified directly from the target's mass, while a constraint force can be specified by its relation to the motion of the objects. Representing both by the same type allows Newton's laws to be stated independently of the particular interactions present.

The reference frame appears in the type of a force's vector values, keeping their coordinate dependence explicit. The definition lives in the `ClassicalMechanics.ReferenceFrame` namespace to support dot notation such as `frame.Force Object`, but also occupies a general name that future non-particle Newtonian formalizations may need.

The target type `Object` is therefore deliberately left arbitrary. Newtonian mechanics is not limited to point particles, so this force representation is kept independent of any particular model of matter, with the intention it may get generalized for rigid body mechanics, continuum mechanics, or other Newtonian models in the future.

5 declarations

instance

Force as a function F:Time→VectorF: \text{Time} \to \text{Vector}

Given a reference frame `frame` and a type of `Object`, this instance allows an element FF of type `frame.Force Object` to be treated as a function from time to vectors. Specifically, for any t∈Timet \in \text{Time}, F(t)F(t) returns the vector value of the force at that time within the specified reference frame.

instance

Coercion of an internal force to a vector-valued function of time

For a given reference frame and object type, an internal force FF can be treated as a function that maps a time t∈Timet \in \text{Time} to a vector V∈VectorV \in \text{Vector}. This instance allows the use of the notation F(t)F(t) to represent the vector value of the internal force at that specific time.

instance

Coercion from `InternalForce` to `Force`

Given a reference frame and a type of objects, an internal force (which consists of a source object, a target object, and a time-dependent vector) can be coerced into a general force (which consists only of a target object and a time-dependent vector). This is achieved by the function `InternalForce.toForce`, which retains the target and the vector value while disregarding the source object.

definition

Reaction force of an internal force FF

For an internal force FF in a given reference frame, characterized by a source object SS, a target object TT, and a time-dependent vector value v(t)\mathbf{v}(t), the function `reverse` defines the corresponding reaction force. This resulting internal force has TT as its source and SS as its target, with its vector value at any time tt being the additive inverse −v(t)-\mathbf{v}(t) of the original force. This corresponds to the "equal and opposite" force described by Newton's Third Law.

definition

Net force on an object oo at time tt

In a given reference frame, the net force on a specific object oo at time tt is the vector sum of all forces acting on that object. Given a multiset of internal forces I\mathcal{I} and a multiset of external forces E\mathcal{E}, the net force is computed by: 1. Converting all internal forces in I\mathcal{I} to general forces (retaining their target and vector value). 2. Combining these with the external forces E\mathcal{E} to form a single collection of forces F\mathcal{F}. 3. Summing the vector values F⃗(t)\vec{F}(t) for all forces F⃗∈F\vec{F} \in \mathcal{F} whose target is the object oo. Mathematically, this is expressed as: netForce(o,I,E,t)=∑{F⃗∈(I+E)∣target(F⃗)=o}F⃗(t)\text{netForce}(o, \mathcal{I}, \mathcal{E}, t) = \sum_{\{\vec{F} \in (\mathcal{I} + \mathcal{E}) \mid \text{target}(\vec{F}) = o\}} \vec{F}(t) where the sum is taken over the multiset of forces whose target property matches oo.