{
  "node": {
    "id": "block:force-torque",
    "type": "Block",
    "label": "External force and torque",
    "properties": {
      "id": "force-torque",
      "kind": "studio",
      "name": "External force and torque",
      "summary": "Applies a force and torque at frame B with the corresponding reaction at A, expressed in the selected reference frame.",
      "behavior": "Applies a force and torque at frame B with the corresponding reaction at A, expressed in the selected reference frame.",
      "documentationSlug": "force-torque",
      "referenceOnly": true,
      "ports": [
        {
          "name": "a",
          "direction": "conserving",
          "unit": "frame",
          "description": "Reference frame A"
        },
        {
          "name": "b",
          "direction": "conserving",
          "unit": "frame",
          "description": "Attached frame B"
        },
        {
          "name": "force X",
          "direction": "input",
          "unit": "N",
          "description": "force X is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection."
        },
        {
          "name": "force Y",
          "direction": "input",
          "unit": "N",
          "description": "force Y is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection."
        },
        {
          "name": "force Z",
          "direction": "input",
          "unit": "N",
          "description": "force Z is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection."
        },
        {
          "name": "torque X",
          "direction": "input",
          "unit": "N·m",
          "description": "torque X is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection."
        },
        {
          "name": "torque Y",
          "direction": "input",
          "unit": "N·m",
          "description": "torque Y is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection."
        },
        {
          "name": "torque Z",
          "direction": "input",
          "unit": "N·m",
          "description": "torque Z is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection."
        }
      ],
      "parameters": [
        {
          "key": "forceX",
          "label": "forceX",
          "unit": "N",
          "default": 0,
          "description": "Declared authoring field: forceX.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "forceY",
          "label": "forceY",
          "unit": "N",
          "default": 0,
          "description": "Declared authoring field: forceY.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "forceZ",
          "label": "forceZ",
          "unit": "N",
          "default": 0,
          "description": "Declared authoring field: forceZ.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "torqueX",
          "label": "torqueX",
          "unit": "N m",
          "default": 0,
          "description": "Declared authoring field: torqueX.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "torqueY",
          "label": "torqueY",
          "unit": "N m",
          "default": 0,
          "description": "Declared authoring field: torqueY.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "torqueZ",
          "label": "torqueZ",
          "unit": "N m",
          "default": 0,
          "description": "Declared authoring field: torqueZ.",
          "min": -1000000000000,
          "max": 1000000000000
        },
        {
          "key": "referenceFrame",
          "label": "referenceFrame",
          "unit": "0 world, 1 frame A, 2 frame B",
          "default": 0,
          "description": "Declared authoring field: referenceFrame.",
          "min": 0,
          "max": 2
        }
      ],
      "equations": [],
      "example": {
        "title": "Use this authoring component",
        "text": "Choose this component in the Studio library and configure its declared interface. This reference describes the authoring contract; it does not claim a standalone numerical validation or a measured result.",
        "url": "https://design.lemonergy.com/cosim",
        "label": "Open Studio"
      },
      "limits": [
        "The symbolic diagram describes the component and its declared interface. It is not a solved circuit or simulated output.",
        "Configured parameters and model connections determine the result. Check the complete model before interpreting its outputs."
      ],
      "evidence": [
        "docs/glossary/studio-help-catalog.json"
      ],
      "caseIds": [],
      "sourceRepository": "battery-design",
      "sourceRevision": "e248d21a9902225f1075624f23e7628b54cdb7cc",
      "reviewed": "2026-10-30",
      "type": "force-torque",
      "implementationId": "force-torque",
      "url": "https://lemonergy.com/learn/glossary/blocks/force-torque/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/force-torque/",
      "sourceFile": "studio-help-catalog.json",
      "studioHelp": {
        "type": "force-torque",
        "namespace": "physical",
        "slug": "force-torque",
        "canonicalSlug": "force-torque",
        "existing": false,
        "dynamic": false,
        "scene": {
          "kind": "component",
          "componentId": "reference",
          "type": "force-torque",
          "name": "External force and torque",
          "domain": "mechanical",
          "family": "force-source",
          "operation": "Applies a force and torque at frame B with the corresponding reaction at A, expressed in the selected reference frame.",
          "mechanism": [
            "Commanded wrench",
            "Frame B application",
            "Frame A reaction"
          ],
          "ports": [
            {
              "id": "a",
              "domain": "frame",
              "kind": "conserving",
              "label": "Reference frame A",
              "net": null,
              "peers": []
            },
            {
              "id": "b",
              "domain": "frame",
              "kind": "conserving",
              "label": "Attached frame B",
              "net": null,
              "peers": []
            }
          ],
          "terms": [
            {
              "type": "body-inertia",
              "label": "Rigid body and inertia"
            },
            {
              "type": "frame-sensor",
              "label": "Relative frame sensor"
            }
          ],
          "symbol": [
            {
              "tag": "path",
              "attrs": {
                "d": "M15 40H80L65 25M80 40L65 55M185 40H120L135 25M120 40L135 55"
              }
            },
            {
              "tag": "circle",
              "attrs": {
                "cx": 100,
                "cy": 40,
                "r": 12
              }
            }
          ],
          "selection": {},
          "commands": [
            {
              "id": "forceX",
              "label": "force X",
              "quantity": "force",
              "unit": "N",
              "active": true,
              "summary": "force X is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            },
            {
              "id": "forceY",
              "label": "force Y",
              "quantity": "force",
              "unit": "N",
              "active": true,
              "summary": "force Y is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            },
            {
              "id": "forceZ",
              "label": "force Z",
              "quantity": "force",
              "unit": "N",
              "active": true,
              "summary": "force Z is a directed force input to this component, expressed in N. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            },
            {
              "id": "torqueX",
              "label": "torque X",
              "quantity": "torque",
              "unit": "N·m",
              "active": true,
              "summary": "torque X is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            },
            {
              "id": "torqueY",
              "label": "torque Y",
              "quantity": "torque",
              "unit": "N·m",
              "active": true,
              "summary": "torque Y is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            },
            {
              "id": "torqueZ",
              "label": "torque Z",
              "quantity": "torque",
              "unit": "N·m",
              "active": true,
              "summary": "torque Z is a directed torque input to this component, expressed in N·m. Its binding supplies information; it is not a conserving connection.",
              "source": null,
              "target": null
            }
          ],
          "outputs": [],
          "parameters": [
            {
              "id": "forceX",
              "default": 0,
              "unit": "N",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "forceY",
              "default": 0,
              "unit": "N",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "forceZ",
              "default": 0,
              "unit": "N",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "torqueX",
              "default": 0,
              "unit": "N m",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "torqueY",
              "default": 0,
              "unit": "N m",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "torqueZ",
              "default": 0,
              "unit": "N m",
              "min": -1000000000000,
              "max": 1000000000000,
              "value": 0
            },
            {
              "id": "referenceFrame",
              "default": 0,
              "unit": "0 world, 1 frame A, 2 frame B",
              "min": 0,
              "max": 2,
              "value": 0
            }
          ]
        }
      }
    }
  },
  "incoming": [],
  "outgoing": [],
  "neighbors": []
}
