calculate_centripetal_force
Calculate the centripetal force and acceleration required to keep an object moving in a circular path. Use for car turns, satellite orbits, and centrifuges.
Instructions
Calculate centripetal force: F_c = m v² / r.
Force required to keep an object moving in a circle.
Always points toward the center of the circular path.
Args:
mass: Mass in kg
velocity: Speed (velocity magnitude) in m/s
radius: Radius of circular path in meters
Returns:
Dict containing:
- centripetal_force: F_c in Newtons
- centripetal_acceleration: a_c in m/s²
Tips for LLMs:
- Not a new force - it's the net inward force (tension, friction, gravity)
- Faster speed → much more force needed (v² relationship)
- Tighter turn → more force needed
- Use for: car turns, satellite orbits, centrifuges
Example - Car turning:
result = await calculate_centripetal_force(
mass=1500, # kg
velocity=20, # m/s (72 km/h)
radius=50 # meter turn radius
)
# F_c = 12000 N (provided by friction between tires and road)Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mass | Yes | ||
| velocity | Yes | ||
| radius | Yes |
Implementation Reference
- Core calculation function: computes centripetal force (F_c = m * v² / r) and centripetal acceleration (a_c = v² / r). Takes a CentripetalForceRequest and returns a CentripetalForceResponse.
def calculate_centripetal_force(request: CentripetalForceRequest) -> CentripetalForceResponse: """Calculate centripetal force: F_c = m * v² / r. Args: request: Centripetal force request Returns: Centripetal force and acceleration """ m = request.mass v = request.velocity r = request.radius a_c = (v * v) / r F_c = m * a_c return CentripetalForceResponse(centripetal_force=F_c, centripetal_acceleration=a_c) - Pydantic request model for centripetal force calculation with mass (>0), velocity (>=0), and radius (>0) fields.
class CentripetalForceRequest(BaseModel): """Request for centripetal force calculation.""" mass: float = Field(..., description="Mass in kg", gt=0.0) velocity: float = Field(..., description="Velocity magnitude in m/s", ge=0.0) radius: float = Field(..., description="Radius of circular path in meters", gt=0.0) - Pydantic response model containing centripetal_force (N) and centripetal_acceleration (m/s²).
class CentripetalForceResponse(BaseModel): """Response for centripetal force calculation.""" centripetal_force: float = Field(..., description="Centripetal force in Newtons") centripetal_acceleration: float = Field(..., description="Centripetal acceleration in m/s²") - src/chuk_mcp_physics/tools/circular_motion.py:6-49 (registration)MCP @tool-decorated async wrapper that registers calculate_centripetal_force as an MCP tool. Accepts mass, velocity, radius as float parameters, delegates to the core calculation function, and returns the result as a dict.
@tool # type: ignore[arg-type] async def calculate_centripetal_force( mass: float, velocity: float, radius: float, ) -> dict: """Calculate centripetal force: F_c = m v² / r. Force required to keep an object moving in a circle. Always points toward the center of the circular path. Args: mass: Mass in kg velocity: Speed (velocity magnitude) in m/s radius: Radius of circular path in meters Returns: Dict containing: - centripetal_force: F_c in Newtons - centripetal_acceleration: a_c in m/s² Tips for LLMs: - Not a new force - it's the net inward force (tension, friction, gravity) - Faster speed → much more force needed (v² relationship) - Tighter turn → more force needed - Use for: car turns, satellite orbits, centrifuges Example - Car turning: result = await calculate_centripetal_force( mass=1500, # kg velocity=20, # m/s (72 km/h) radius=50 # meter turn radius ) # F_c = 12000 N (provided by friction between tires and road) """ from ..circular_motion import CentripetalForceRequest, calculate_centripetal_force as calc_fc request = CentripetalForceRequest( mass=mass, velocity=velocity, radius=radius, ) response = calc_fc(request) return response.model_dump()