sysmledgraph 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +71 -0
  2. package/dist/bin/cli.d.ts +6 -0
  3. package/dist/bin/cli.d.ts.map +1 -0
  4. package/dist/bin/cli.js +61 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/mcp/index.d.ts +3 -0
  7. package/dist/mcp/index.d.ts.map +1 -0
  8. package/dist/mcp/index.js +8 -0
  9. package/dist/mcp/index.js.map +1 -0
  10. package/dist/src/cli/commands.d.ts +22 -0
  11. package/dist/src/cli/commands.d.ts.map +1 -0
  12. package/dist/src/cli/commands.js +87 -0
  13. package/dist/src/cli/commands.js.map +1 -0
  14. package/dist/src/discovery/find-sysml.d.ts +16 -0
  15. package/dist/src/discovery/find-sysml.d.ts.map +1 -0
  16. package/dist/src/discovery/find-sysml.js +30 -0
  17. package/dist/src/discovery/find-sysml.js.map +1 -0
  18. package/dist/src/discovery/load-order.d.ts +11 -0
  19. package/dist/src/discovery/load-order.d.ts.map +1 -0
  20. package/dist/src/discovery/load-order.js +85 -0
  21. package/dist/src/discovery/load-order.js.map +1 -0
  22. package/dist/src/graph/connection.d.ts +6 -0
  23. package/dist/src/graph/connection.d.ts.map +1 -0
  24. package/dist/src/graph/connection.js +7 -0
  25. package/dist/src/graph/connection.js.map +1 -0
  26. package/dist/src/graph/graph-store.d.ts +37 -0
  27. package/dist/src/graph/graph-store.d.ts.map +1 -0
  28. package/dist/src/graph/graph-store.js +108 -0
  29. package/dist/src/graph/graph-store.js.map +1 -0
  30. package/dist/src/graph/schema.d.ts +13 -0
  31. package/dist/src/graph/schema.d.ts.map +1 -0
  32. package/dist/src/graph/schema.js +21 -0
  33. package/dist/src/graph/schema.js.map +1 -0
  34. package/dist/src/index.d.ts +14 -0
  35. package/dist/src/index.d.ts.map +1 -0
  36. package/dist/src/index.js +14 -0
  37. package/dist/src/index.js.map +1 -0
  38. package/dist/src/indexer/indexer.d.ts +20 -0
  39. package/dist/src/indexer/indexer.d.ts.map +1 -0
  40. package/dist/src/indexer/indexer.js +56 -0
  41. package/dist/src/indexer/indexer.js.map +1 -0
  42. package/dist/src/indexer/pipeline-phases.d.ts +8 -0
  43. package/dist/src/indexer/pipeline-phases.d.ts.map +1 -0
  44. package/dist/src/indexer/pipeline-phases.js +14 -0
  45. package/dist/src/indexer/pipeline-phases.js.map +1 -0
  46. package/dist/src/mcp/resources/context.d.ts +6 -0
  47. package/dist/src/mcp/resources/context.d.ts.map +1 -0
  48. package/dist/src/mcp/resources/context.js +45 -0
  49. package/dist/src/mcp/resources/context.js.map +1 -0
  50. package/dist/src/mcp/resources/schema.d.ts +6 -0
  51. package/dist/src/mcp/resources/schema.d.ts.map +1 -0
  52. package/dist/src/mcp/resources/schema.js +14 -0
  53. package/dist/src/mcp/resources/schema.js.map +1 -0
  54. package/dist/src/mcp/server.d.ts +8 -0
  55. package/dist/src/mcp/server.d.ts.map +1 -0
  56. package/dist/src/mcp/server.js +175 -0
  57. package/dist/src/mcp/server.js.map +1 -0
  58. package/dist/src/mcp/tools/clean-index.d.ts +12 -0
  59. package/dist/src/mcp/tools/clean-index.d.ts.map +1 -0
  60. package/dist/src/mcp/tools/clean-index.js +22 -0
  61. package/dist/src/mcp/tools/clean-index.js.map +1 -0
  62. package/dist/src/mcp/tools/context.d.ts +14 -0
  63. package/dist/src/mcp/tools/context.d.ts.map +1 -0
  64. package/dist/src/mcp/tools/context.js +51 -0
  65. package/dist/src/mcp/tools/context.js.map +1 -0
  66. package/dist/src/mcp/tools/cypher.d.ts +13 -0
  67. package/dist/src/mcp/tools/cypher.d.ts.map +1 -0
  68. package/dist/src/mcp/tools/cypher.js +25 -0
  69. package/dist/src/mcp/tools/cypher.js.map +1 -0
  70. package/dist/src/mcp/tools/generate-map.d.ts +13 -0
  71. package/dist/src/mcp/tools/generate-map.d.ts.map +1 -0
  72. package/dist/src/mcp/tools/generate-map.js +96 -0
  73. package/dist/src/mcp/tools/generate-map.js.map +1 -0
  74. package/dist/src/mcp/tools/impact.d.ts +14 -0
  75. package/dist/src/mcp/tools/impact.d.ts.map +1 -0
  76. package/dist/src/mcp/tools/impact.js +47 -0
  77. package/dist/src/mcp/tools/impact.js.map +1 -0
  78. package/dist/src/mcp/tools/index-db-graph.d.ts +14 -0
  79. package/dist/src/mcp/tools/index-db-graph.d.ts.map +1 -0
  80. package/dist/src/mcp/tools/index-db-graph.js +32 -0
  81. package/dist/src/mcp/tools/index-db-graph.js.map +1 -0
  82. package/dist/src/mcp/tools/list-indexed.d.ts +9 -0
  83. package/dist/src/mcp/tools/list-indexed.d.ts.map +1 -0
  84. package/dist/src/mcp/tools/list-indexed.js +14 -0
  85. package/dist/src/mcp/tools/list-indexed.js.map +1 -0
  86. package/dist/src/mcp/tools/query.d.ts +14 -0
  87. package/dist/src/mcp/tools/query.d.ts.map +1 -0
  88. package/dist/src/mcp/tools/query.js +47 -0
  89. package/dist/src/mcp/tools/query.js.map +1 -0
  90. package/dist/src/mcp/tools/rename.d.ts +19 -0
  91. package/dist/src/mcp/tools/rename.d.ts.map +1 -0
  92. package/dist/src/mcp/tools/rename.js +46 -0
  93. package/dist/src/mcp/tools/rename.js.map +1 -0
  94. package/dist/src/parser/lsp-client.d.ts +52 -0
  95. package/dist/src/parser/lsp-client.d.ts.map +1 -0
  96. package/dist/src/parser/lsp-client.js +230 -0
  97. package/dist/src/parser/lsp-client.js.map +1 -0
  98. package/dist/src/parser/lsp-server-path.d.ts +10 -0
  99. package/dist/src/parser/lsp-server-path.d.ts.map +1 -0
  100. package/dist/src/parser/lsp-server-path.js +29 -0
  101. package/dist/src/parser/lsp-server-path.js.map +1 -0
  102. package/dist/src/parser/symbols.d.ts +13 -0
  103. package/dist/src/parser/symbols.d.ts.map +1 -0
  104. package/dist/src/parser/symbols.js +150 -0
  105. package/dist/src/parser/symbols.js.map +1 -0
  106. package/dist/src/parser/sysml-mcp-client.d.ts +109 -0
  107. package/dist/src/parser/sysml-mcp-client.d.ts.map +1 -0
  108. package/dist/src/parser/sysml-mcp-client.js +185 -0
  109. package/dist/src/parser/sysml-mcp-client.js.map +1 -0
  110. package/dist/src/storage/clean.d.ts +15 -0
  111. package/dist/src/storage/clean.d.ts.map +1 -0
  112. package/dist/src/storage/clean.js +44 -0
  113. package/dist/src/storage/clean.js.map +1 -0
  114. package/dist/src/storage/list.d.ts +9 -0
  115. package/dist/src/storage/list.d.ts.map +1 -0
  116. package/dist/src/storage/list.js +12 -0
  117. package/dist/src/storage/list.js.map +1 -0
  118. package/dist/src/storage/location.d.ts +22 -0
  119. package/dist/src/storage/location.d.ts.map +1 -0
  120. package/dist/src/storage/location.js +36 -0
  121. package/dist/src/storage/location.js.map +1 -0
  122. package/dist/src/storage/registry.d.ts +14 -0
  123. package/dist/src/storage/registry.d.ts.map +1 -0
  124. package/dist/src/storage/registry.js +59 -0
  125. package/dist/src/storage/registry.js.map +1 -0
  126. package/dist/src/symbol-to-graph/mapping.d.ts +17 -0
  127. package/dist/src/symbol-to-graph/mapping.d.ts.map +1 -0
  128. package/dist/src/symbol-to-graph/mapping.js +102 -0
  129. package/dist/src/symbol-to-graph/mapping.js.map +1 -0
  130. package/dist/src/types.d.ts +40 -0
  131. package/dist/src/types.d.ts.map +1 -0
  132. package/dist/src/types.js +35 -0
  133. package/dist/src/types.js.map +1 -0
  134. package/dist/src/worker/client.d.ts +21 -0
  135. package/dist/src/worker/client.d.ts.map +1 -0
  136. package/dist/src/worker/client.js +126 -0
  137. package/dist/src/worker/client.js.map +1 -0
  138. package/dist/src/worker/gateway.d.ts +79 -0
  139. package/dist/src/worker/gateway.d.ts.map +1 -0
  140. package/dist/src/worker/gateway.js +93 -0
  141. package/dist/src/worker/gateway.js.map +1 -0
  142. package/dist/src/worker/graph-worker.d.ts +7 -0
  143. package/dist/src/worker/graph-worker.d.ts.map +1 -0
  144. package/dist/src/worker/graph-worker.js +91 -0
  145. package/dist/src/worker/graph-worker.js.map +1 -0
  146. package/dist/src/worker/protocol.d.ts +21 -0
  147. package/dist/src/worker/protocol.d.ts.map +1 -0
  148. package/dist/src/worker/protocol.js +9 -0
  149. package/dist/src/worker/protocol.js.map +1 -0
  150. package/docs/INSTALL.md +16 -0
  151. package/docs/MCP_CLIENT_TEMPLATE_ANALYSIS.md +196 -0
  152. package/docs/MCP_INTERACTION_GUIDE.md +201 -0
  153. package/docs/MCP_SERVER_FOR_CURSOR.md +124 -0
  154. package/docs/PLAN.md +58 -0
  155. package/docs/PLAN_INDEPENDENT_LSP.md +145 -0
  156. package/docs/SKILL_DESIGN_PATTERNS.md +305 -0
  157. package/docs/TOOLS.md +317 -0
  158. package/lsp/README.md +41 -0
  159. package/lsp/node_modules/.bin/sysml-mcp +12 -0
  160. package/lsp/node_modules/.bin/sysml-mcp.cmd +9 -0
  161. package/lsp/node_modules/.bin/sysml-mcp.ps1 +16 -0
  162. package/lsp/node_modules/.package-lock.json +22 -0
  163. package/lsp/node_modules/sysml-v2-lsp/CHANGELOG.md +188 -0
  164. package/lsp/node_modules/sysml-v2-lsp/LICENSE +21 -0
  165. package/lsp/node_modules/sysml-v2-lsp/README.md +172 -0
  166. package/lsp/node_modules/sysml-v2-lsp/dist/server/mcpServer.js +167 -0
  167. package/lsp/node_modules/sysml-v2-lsp/dist/server/server.js +142 -0
  168. package/lsp/node_modules/sysml-v2-lsp/index.cjs +23 -0
  169. package/lsp/node_modules/sysml-v2-lsp/package.json +131 -0
  170. package/lsp/node_modules/sysml-v2-lsp/sysml.library/.project +17 -0
  171. package/lsp/node_modules/sysml-v2-lsp/sysml.library/.settings/org.eclipse.jdt.core.prefs +11 -0
  172. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/.meta.json +10 -0
  173. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/.project.json +27 -0
  174. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +34 -0
  175. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +119 -0
  176. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -0
  177. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +171 -0
  178. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/.meta.json +8 -0
  179. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/.project.json +23 -0
  180. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +83 -0
  181. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -0
  182. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/.meta.json +8 -0
  183. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/.project.json +27 -0
  184. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +899 -0
  185. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +168 -0
  186. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/.meta.json +10 -0
  187. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/.project.json +19 -0
  188. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +78 -0
  189. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +143 -0
  190. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +39 -0
  191. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +100 -0
  192. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/.meta.json +29 -0
  193. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/.project.json +23 -0
  194. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -0
  195. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -0
  196. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -0
  197. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -0
  198. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -0
  199. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -0
  200. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -0
  201. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -0
  202. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -0
  203. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -0
  204. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -0
  205. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -0
  206. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -0
  207. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -0
  208. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -0
  209. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -0
  210. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -0
  211. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -0
  212. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -0
  213. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +50 -0
  214. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -0
  215. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -0
  216. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -0
  217. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +8 -0
  218. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/.project.json +19 -0
  219. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +63 -0
  220. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +39 -0
  221. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +9 -0
  222. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +11 -0
  223. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +147 -0
  224. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -0
  225. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +64 -0
  226. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +23 -0
  227. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +15 -0
  228. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +80 -0
  229. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -0
  230. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -0
  231. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -0
  232. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +117 -0
  233. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +43 -0
  234. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -0
  235. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -0
  236. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +43 -0
  237. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +154 -0
  238. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -0
  239. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -0
  240. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +33 -0
  241. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +111 -0
  242. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -0
  243. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +35 -0
  244. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +273 -0
  245. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +22 -0
  246. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +15 -0
  247. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +95 -0
  248. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +156 -0
  249. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +135 -0
  250. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +190 -0
  251. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -0
  252. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +67 -0
  253. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +58 -0
  254. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -0
  255. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +161 -0
  256. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -0
  257. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +293 -0
  258. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +197 -0
  259. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +145 -0
  260. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +281 -0
  261. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +66 -0
  262. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +188 -0
  263. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/.meta.json +27 -0
  264. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/.project.json +19 -0
  265. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Actions.sysml +552 -0
  266. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Allocations.sysml +29 -0
  267. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/AnalysisCases.sysml +38 -0
  268. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Attributes.sysml +25 -0
  269. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Calculations.sysml +37 -0
  270. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Cases.sysml +71 -0
  271. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Connections.sysml +60 -0
  272. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Constraints.sysml +44 -0
  273. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Flows.sysml +126 -0
  274. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Interfaces.sysml +89 -0
  275. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Items.sysml +153 -0
  276. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Metadata.sysml +32 -0
  277. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Parts.sysml +81 -0
  278. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Ports.sysml +54 -0
  279. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Requirements.sysml +194 -0
  280. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -0
  281. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/States.sysml +103 -0
  282. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/SysML.sysml +539 -0
  283. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/UseCases.sysml +57 -0
  284. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/VerificationCases.sysml +103 -0
  285. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Views.sysml +164 -0
  286. package/lsp/package-lock.json +30 -0
  287. package/lsp/package.json +15 -0
  288. package/lsp/test-server.mjs +120 -0
  289. package/package.json +61 -0
  290. package/scripts/access-sysml-mcp.mjs +45 -0
  291. package/scripts/check-sysml-v2-lsp-version.mjs +39 -0
  292. package/scripts/clean.mjs +14 -0
  293. package/scripts/compare-mcp-vs-lsp-symbols.mjs +76 -0
  294. package/scripts/debug-index.mjs +23 -0
  295. package/scripts/debug-lsp-symbols.mjs +62 -0
  296. package/scripts/deploy-skills.mjs +43 -0
  297. package/scripts/example-sysml-mcp.mjs +27 -0
  298. package/scripts/export-graph.mjs +80 -0
  299. package/scripts/generate-map.mjs +110 -0
  300. package/scripts/index-and-map.mjs +43 -0
  301. package/scripts/index-and-query.mjs +39 -0
  302. package/scripts/query-one.mjs +34 -0
  303. package/scripts/setup-lsp.mjs +36 -0
  304. package/scripts/test-lsp.mjs +55 -0
  305. package/scripts/test-mcp-debug.mjs +32 -0
  306. package/scripts/test-mcp-sysml.mjs +75 -0
  307. package/scripts/test-mcp-tools.mjs +185 -0
  308. package/scripts/test-sysml-mcp-from-node_modules.mjs +56 -0
  309. package/scripts/validate-sysml-file.mjs +69 -0
@@ -0,0 +1,1564 @@
1
+ standard library package ISQMechanics {
2
+ doc
3
+ /*
4
+ * International System of Quantities and Units
5
+ * Generated on 2025-03-13T15:00:05Z from standard ISO-80000-4:2019 "Mechanics"
6
+ * see also https://www.iso.org/standard/64975.html
7
+ *
8
+ * Note 1: In documentation comments, AsciiMath notation (see http://asciimath.org/) is used for mathematical concepts,
9
+ * with Greek letters in Unicode encoding. In running text, AsciiMath is placed between backticks.
10
+ * Note 2: For vector and tensor quantities currently the unit and quantity value type for their (scalar) magnitude is
11
+ * defined, as well as their typical Cartesian 3d VectorMeasurementReference (i.e. coordinate system)
12
+ * or TensorMeasurementReference.
13
+ */
14
+
15
+ private import ScalarValues::Real;
16
+ private import Quantities::*;
17
+ private import MeasurementReferences::*;
18
+ private import ISQBase::*;
19
+
20
+ /* Quantity definitions referenced from other ISQ packages */
21
+ private import ISQThermodynamics::EnergyValue;
22
+
23
+ /* ISO-80000-4 item 4-1 mass */
24
+ /* See package ISQBase for the declarations of MassValue and MassUnit */
25
+
26
+ /* ISO-80000-4 item 4-2 mass density, density */
27
+ attribute def MassDensityValue :> ScalarQuantityValue {
28
+ doc
29
+ /*
30
+ * source: item 4-2 mass density, density
31
+ * symbol(s): `ρ`, `ρ_m`
32
+ * application domain: generic
33
+ * name: MassDensity
34
+ * quantity dimension: L^-3*M^1
35
+ * measurement unit(s): kg*m^-3
36
+ * tensor order: 0
37
+ * definition: quantity representing the spatial distribution of mass of a continuous material: `ρ(vec(r)) = (dm)/(dV)` where `m` is mass of the material contained in an infinitesimal domain at point `vec(r)` and `V` is volume of this domain
38
+ * remarks: None.
39
+ */
40
+ attribute :>> num: Real;
41
+ attribute :>> mRef: MassDensityUnit[1];
42
+ }
43
+
44
+ attribute massDensity: MassDensityValue[*] nonunique :> scalarQuantities;
45
+
46
+ attribute def MassDensityUnit :> DerivedUnit {
47
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
48
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
49
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
50
+ }
51
+
52
+ alias DensityUnit for MassDensityUnit;
53
+ alias DensityValue for MassDensityValue;
54
+ alias density for massDensity;
55
+
56
+ /* ISO-80000-4 item 4-3 specific volume */
57
+ attribute def SpecificVolumeValue :> ScalarQuantityValue {
58
+ doc
59
+ /*
60
+ * source: item 4-3 specific volume
61
+ * symbol(s): `v`
62
+ * application domain: generic
63
+ * name: SpecificVolume
64
+ * quantity dimension: L^3*M^-1
65
+ * measurement unit(s): kg^-1*m^3
66
+ * tensor order: 0
67
+ * definition: reciprocal of mass density `ρ` (item 4-2): `v = 1/ρ`
68
+ * remarks: None.
69
+ */
70
+ attribute :>> num: Real;
71
+ attribute :>> mRef: SpecificVolumeUnit[1];
72
+ }
73
+
74
+ attribute specificVolume: SpecificVolumeValue[*] nonunique :> scalarQuantities;
75
+
76
+ attribute def SpecificVolumeUnit :> DerivedUnit {
77
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
78
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
79
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
80
+ }
81
+
82
+ /* ISO-80000-4 item 4-4 relative mass density, relative density */
83
+ attribute def RelativeMassDensityValue :> DimensionOneValue {
84
+ doc
85
+ /*
86
+ * source: item 4-4 relative mass density, relative density
87
+ * symbol(s): `d`
88
+ * application domain: generic
89
+ * name: RelativeMassDensity (specializes DimensionOneQuantity)
90
+ * quantity dimension: 1
91
+ * measurement unit(s): 1
92
+ * tensor order: 0
93
+ * definition: quotient of mass density of a substance `ρ` and mass density of a reference substance `ρ_0` : `d = ρ/ρ_0`
94
+ * remarks: Conditions and material should be specified for the reference substance.
95
+ */
96
+ }
97
+ attribute relativeMassDensity: RelativeMassDensityValue :> scalarQuantities;
98
+
99
+ alias relativeDensity for relativeMassDensity;
100
+
101
+ /* ISO-80000-4 item 4-5 surface mass density, surface density */
102
+ attribute def SurfaceMassDensityValue :> ScalarQuantityValue {
103
+ doc
104
+ /*
105
+ * source: item 4-5 surface mass density, surface density
106
+ * symbol(s): `ρ_A`
107
+ * application domain: generic
108
+ * name: SurfaceMassDensity
109
+ * quantity dimension: L^-2*M^1
110
+ * measurement unit(s): kg*m^-2
111
+ * tensor order: 0
112
+ * definition: quantity representing the areal distribution of mass of a continuous material: `ρ_A(vec(r)) = (dm)/(dA)` where `m` is the mass of the material at position `vec(r)` and `A` is area
113
+ * remarks: The name "grammage" should not be used for this quantity.
114
+ */
115
+ attribute :>> num: Real;
116
+ attribute :>> mRef: SurfaceMassDensityUnit[1];
117
+ }
118
+
119
+ attribute surfaceMassDensity: SurfaceMassDensityValue[*] nonunique :> scalarQuantities;
120
+
121
+ attribute def SurfaceMassDensityUnit :> DerivedUnit {
122
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
123
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
124
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
125
+ }
126
+
127
+ alias SurfaceDensityUnit for SurfaceMassDensityUnit;
128
+ alias SurfaceDensityValue for SurfaceMassDensityValue;
129
+ alias surfaceDensity for surfaceMassDensity;
130
+
131
+ /* ISO-80000-4 item 4-6 linear mass density, linear density */
132
+ attribute def LinearMassDensityValue :> ScalarQuantityValue {
133
+ doc
134
+ /*
135
+ * source: item 4-6 linear mass density, linear density
136
+ * symbol(s): `ρ_I`
137
+ * application domain: generic
138
+ * name: LinearMassDensity
139
+ * quantity dimension: L^-1*M^1
140
+ * measurement unit(s): kg*m^-1
141
+ * tensor order: 0
142
+ * definition: quantity representing the linear distribution of mass of a continuous material: `ρ_I(vec(r)) = (dm)/(dI)` where `m` is the mass of the material at position `vec(r)` and `l` is length
143
+ * remarks: None.
144
+ */
145
+ attribute :>> num: Real;
146
+ attribute :>> mRef: LinearMassDensityUnit[1];
147
+ }
148
+
149
+ attribute linearMassDensity: LinearMassDensityValue[*] nonunique :> scalarQuantities;
150
+
151
+ attribute def LinearMassDensityUnit :> DerivedUnit {
152
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
153
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
154
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
155
+ }
156
+
157
+ alias LinearDensityUnit for LinearMassDensityUnit;
158
+ alias LinearDensityValue for LinearMassDensityValue;
159
+ alias linearDensity for linearMassDensity;
160
+
161
+ /* ISO-80000-4 item 4-7 moment of inertia */
162
+ attribute def MomentOfInertiaValue :> ScalarQuantityValue {
163
+ doc
164
+ /*
165
+ * source: item 4-7 moment of inertia (magnitude)
166
+ * symbol(s): `J`
167
+ * application domain: generic
168
+ * name: MomentOfInertia
169
+ * quantity dimension: L^2*M^1
170
+ * measurement unit(s): kg*m^2
171
+ * tensor order: 0
172
+ * definition: tensor (ISO 80000-2) quantity representing rotational inertia of a rigid body relative to a fixed centre of rotation expressed by the tensor product: `vec(L) = vec(vec(J)) vec(ω)` where `vec(L)` is angular momentum (item 4-11) of the body relative to the reference point and `vec(ω)` is its angular velocity (ISO 80000-3)
173
+ * remarks: The calculation of the value requires an integration.
174
+ */
175
+ attribute :>> num: Real;
176
+ attribute :>> mRef: MomentOfInertiaUnit[1];
177
+ }
178
+
179
+ attribute momentOfInertia: MomentOfInertiaValue[*] nonunique :> scalarQuantities;
180
+
181
+ attribute def MomentOfInertiaUnit :> DerivedUnit {
182
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
183
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
184
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
185
+ }
186
+
187
+ attribute def Cartesian3dMomentOfInertiaTensor :> TensorQuantityValue {
188
+ doc
189
+ /*
190
+ * source: item 4-7 moment of inertia (tensor)
191
+ * symbol(s): `vec(vec(J))`
192
+ * application domain: generic
193
+ * name: MomentOfInertia
194
+ * quantity dimension: L^2*M^1
195
+ * measurement unit(s): kg*m^2
196
+ * tensor order: 2
197
+ * definition: tensor (ISO 80000-2) quantity representing rotational inertia of a rigid body relative to a fixed centre of rotation expressed by the tensor product: `vec(L) = vec(vec(J)) vec(ω)` where `vec(L)` is angular momentum (item 4-11) of the body relative to the reference point and `vec(ω)` is its angular velocity (ISO 80000-3)
198
+ * remarks: The calculation of the value requires an integration.
199
+ */
200
+ attribute :>> isBound = false;
201
+ attribute :>> num: Real[9];
202
+ attribute :>> mRef: Cartesian3dMomentOfInertiaMeasurementReference[1];
203
+ }
204
+
205
+ attribute momentOfInertiaTensor: Cartesian3dMomentOfInertiaTensor :> tensorQuantities;
206
+
207
+ attribute def Cartesian3dMomentOfInertiaMeasurementReference :> TensorMeasurementReference {
208
+ attribute :>> dimensions = (3, 3);
209
+ attribute :>> isBound = false;
210
+ attribute :>> mRefs: MomentOfInertiaUnit[9];
211
+ }
212
+
213
+ /* ISO-80000-4 item 4-8 momentum */
214
+ attribute def MomentumValue :> ScalarQuantityValue {
215
+ doc
216
+ /*
217
+ * source: item 4-8 momentum (magnitude)
218
+ * symbol(s): `p`
219
+ * application domain: generic
220
+ * name: Momentum
221
+ * quantity dimension: L^1*M^1*T^-1
222
+ * measurement unit(s): kg*m*s^-1
223
+ * tensor order: 0
224
+ * definition: product of mass `m` (item 4-1) of a body and velocity `vec(v)` (ISO 80000-3) of its centre of mass: `vec(p) = m vec(v)`
225
+ * remarks: None.
226
+ */
227
+ attribute :>> num: Real;
228
+ attribute :>> mRef: MomentumUnit[1];
229
+ }
230
+
231
+ attribute momentum: MomentumValue[*] nonunique :> scalarQuantities;
232
+
233
+ attribute def MomentumUnit :> DerivedUnit {
234
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
235
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
236
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
237
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
238
+ }
239
+
240
+ attribute def CartesianMomentum3dVector :> '3dVectorQuantityValue' {
241
+ doc
242
+ /*
243
+ * source: item 4-8 momentum (vector)
244
+ * symbol(s): `vec(p)`
245
+ * application domain: generic
246
+ * name: Momentum
247
+ * quantity dimension: L^1*M^1*T^-1
248
+ * measurement unit(s): kg*m*s^-1
249
+ * tensor order: 1
250
+ * definition: product of mass `m` (item 4-1) of a body and velocity `vec(v)` (ISO 80000-3) of its centre of mass: `vec(p) = m vec(v)`
251
+ * remarks: None.
252
+ */
253
+ attribute :>> isBound = false;
254
+ attribute :>> mRef: CartesianMomentum3dCoordinateFrame[1];
255
+ }
256
+
257
+ attribute cartesianMomentum3dVector: CartesianMomentum3dVector :> vectorQuantities;
258
+
259
+ attribute def CartesianMomentum3dCoordinateFrame :> '3dCoordinateFrame' {
260
+ attribute :>> isBound = false;
261
+ attribute :>> isOrthogonal = true;
262
+ attribute :>> mRefs: MomentumUnit[3];
263
+ }
264
+
265
+ /* ISO-80000-4 item 4-9.1 force */
266
+ attribute def ForceValue :> ScalarQuantityValue {
267
+ doc
268
+ /*
269
+ * source: item 4-9.1 force (magnitude)
270
+ * symbol(s): `F`
271
+ * application domain: generic
272
+ * name: Force
273
+ * quantity dimension: L^1*M^1*T^-2
274
+ * measurement unit(s): N, kg*m*s^-2
275
+ * tensor order: 0
276
+ * definition: vector (ISO 80000-2) quantity describing interaction between bodies or particles
277
+ * remarks: None.
278
+ */
279
+ attribute :>> num: Real;
280
+ attribute :>> mRef: ForceUnit[1];
281
+ }
282
+
283
+ attribute force: ForceValue[*] nonunique :> scalarQuantities;
284
+
285
+ attribute def ForceUnit :> DerivedUnit {
286
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
287
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
288
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
289
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
290
+ }
291
+
292
+ attribute def CartesianForce3dVector :> '3dVectorQuantityValue' {
293
+ doc
294
+ /*
295
+ * source: item 4-9.1 force (vector)
296
+ * symbol(s): `vec(F)`
297
+ * application domain: generic
298
+ * name: Force
299
+ * quantity dimension: L^1*M^1*T^-2
300
+ * measurement unit(s): N, kg*m*s^-2
301
+ * tensor order: 1
302
+ * definition: vector (ISO 80000-2) quantity describing interaction between bodies or particles
303
+ * remarks: None.
304
+ */
305
+ attribute :>> isBound = false;
306
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
307
+ }
308
+
309
+ attribute cartesianForce3dVector: CartesianForce3dVector :> vectorQuantities;
310
+
311
+ attribute def CartesianForce3dCoordinateFrame :> '3dCoordinateFrame' {
312
+ attribute :>> isBound = false;
313
+ attribute :>> isOrthogonal = true;
314
+ attribute :>> mRefs: ForceUnit[3];
315
+ }
316
+
317
+ /* ISO-80000-4 item 4-9.2 weight */
318
+ attribute def CartesianWeight3dVector :> '3dVectorQuantityValue' {
319
+ doc
320
+ /*
321
+ * source: item 4-9.2 weight
322
+ * symbol(s): `vec(F_g)`
323
+ * application domain: generic
324
+ * name: Weight (specializes Force)
325
+ * quantity dimension: L^1*M^1*T^-2
326
+ * measurement unit(s): N, kg*m*s^-2
327
+ * tensor order: 1
328
+ * definition: force (item 4-9.1) acting on a body in the gravitational field of Earth: `vec(F_g) = m vec(g)` where `m` (item 4-1) is the mass of the body and `vec(g)` is the local acceleration of free fall (ISO 80000-3)
329
+ * remarks: In colloquial language, the name "weight" continues to be used where "mass" is meant. This practice should be avoided. Weight is an example of a gravitational force. Weight comprises not only the local gravitational force but also the local centrifugal force due to the rotation of the Earth.
330
+ */
331
+ attribute :>> isBound = false;
332
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
333
+ }
334
+
335
+ attribute cartesianWeight3dVector: CartesianWeight3dVector :> vectorQuantities;
336
+
337
+ /* ISO-80000-4 item 4-9.3 static friction force, static friction */
338
+ attribute def CartesianStaticFrictionForce3dVector :> '3dVectorQuantityValue' {
339
+ doc
340
+ /*
341
+ * source: item 4-9.3 static friction force, static friction
342
+ * symbol(s): `vec(F_s)`
343
+ * application domain: generic
344
+ * name: StaticFrictionForce (specializes Force)
345
+ * quantity dimension: L^1*M^1*T^-2
346
+ * measurement unit(s): N, kg*m*s^-2
347
+ * tensor order: 1
348
+ * definition: force (item 4-9.1) resisting the motion before a body starts to slide on a surface
349
+ * remarks: For the static friction coefficient, see item 4-23.1.
350
+ */
351
+ attribute :>> isBound = false;
352
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
353
+ }
354
+
355
+ attribute cartesianStaticFrictionForce3dVector: CartesianStaticFrictionForce3dVector :> vectorQuantities;
356
+
357
+ alias cartesianStaticFriction3dVector for cartesianStaticFrictionForce3dVector;
358
+
359
+ /* ISO-80000-4 item 4-9.4 kinetic friction force, dynamic friction force */
360
+ attribute def CartesianKineticFrictionForce3dVector :> '3dVectorQuantityValue' {
361
+ doc
362
+ /*
363
+ * source: item 4-9.4 kinetic friction force, dynamic friction force
364
+ * symbol(s): `vec(F_μ)`
365
+ * application domain: generic
366
+ * name: KineticFrictionForce (specializes Force)
367
+ * quantity dimension: L^1*M^1*T^-2
368
+ * measurement unit(s): N, kg*m*s^-2
369
+ * tensor order: 1
370
+ * definition: force (item 4-9.1) resisting the motion when a body slides on a surface
371
+ * remarks: For the kinetic friction factor, see item 4-23.2.
372
+ */
373
+ attribute :>> isBound = false;
374
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
375
+ }
376
+
377
+ attribute cartesianKineticFrictionForce3dVector: CartesianKineticFrictionForce3dVector :> vectorQuantities;
378
+
379
+ alias cartesianDynamicFrictionForce3dVector for cartesianKineticFrictionForce3dVector;
380
+
381
+ /* ISO-80000-4 item 4-9.5 rolling resistance, rolling drag, rolling friction force */
382
+ attribute def CartesianRollingResistance3dVector :> '3dVectorQuantityValue' {
383
+ doc
384
+ /*
385
+ * source: item 4-9.5 rolling resistance, rolling drag, rolling friction force
386
+ * symbol(s): `vec(F_"rr")`
387
+ * application domain: generic
388
+ * name: RollingResistance (specializes Force)
389
+ * quantity dimension: L^1*M^1*T^-2
390
+ * measurement unit(s): N, kg*m*s^-2
391
+ * tensor order: 1
392
+ * definition: force (item 4-9.1) resisting the motion when a body rolls on a surface
393
+ * remarks: For the rolling resistance factor, see item 4-23.3.
394
+ */
395
+ attribute :>> isBound = false;
396
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
397
+ }
398
+
399
+ attribute cartesianRollingResistance3dVector: CartesianRollingResistance3dVector :> vectorQuantities;
400
+
401
+ alias cartesianRollingDrag3dVector for cartesianRollingResistance3dVector;
402
+
403
+ alias cartesianRollingFrictionForce3dVector for cartesianRollingResistance3dVector;
404
+
405
+ /* ISO-80000-4 item 4-9.6 drag force */
406
+ attribute def CartesianDragForce3dVector :> '3dVectorQuantityValue' {
407
+ doc
408
+ /*
409
+ * source: item 4-9.6 drag force
410
+ * symbol(s): `vec(F_D)`
411
+ * application domain: generic
412
+ * name: DragForce (specializes Force)
413
+ * quantity dimension: L^1*M^1*T^-2
414
+ * measurement unit(s): N, kg*m*s^-2
415
+ * tensor order: 1
416
+ * definition: force (item 4-9.1) resisting the motion of a body in a fluid
417
+ * remarks: For the drag coefficient, see item 4-23.4.
418
+ */
419
+ attribute :>> isBound = false;
420
+ attribute :>> mRef: CartesianForce3dCoordinateFrame[1];
421
+ }
422
+
423
+ attribute cartesianDragForce3dVector: CartesianDragForce3dVector :> vectorQuantities;
424
+
425
+ /* ISO-80000-4 item 4-10 impulse */
426
+ attribute def ImpulseValue :> ScalarQuantityValue {
427
+ doc
428
+ /*
429
+ * source: item 4-10 impulse (magnitude)
430
+ * symbol(s): `I`
431
+ * application domain: generic
432
+ * name: Impulse
433
+ * quantity dimension: L^1*M^1*T^-1
434
+ * measurement unit(s): N*s, kg*m*s^-1
435
+ * tensor order: 0
436
+ * definition: vector (ISO 80000-2) quantity describing the effect of force acting during a time interval: `vec(I) = int_(t_1)^(t_2) vec(F)*dt` where `vec(F)` is force (item 4-9.1), `t` is time (ISO 80000-3) and `[t_1, t_2]` is considered time interval
437
+ * remarks: For a time interval `[t_1, t_2]`, `vec(I)(t_1, t_2) = vec(p)(t_1) - vec(p)(t_2) = vec(Δp)` where `vec(p)` is momentum (item 4-8).
438
+ */
439
+ attribute :>> num: Real;
440
+ attribute :>> mRef: ImpulseUnit[1];
441
+ }
442
+
443
+ attribute impulse: ImpulseValue[*] nonunique :> scalarQuantities;
444
+
445
+ attribute def ImpulseUnit :> DerivedUnit {
446
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
447
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
448
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
449
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
450
+ }
451
+
452
+ attribute def CartesianImpulse3dVector :> '3dVectorQuantityValue' {
453
+ doc
454
+ /*
455
+ * source: item 4-10 impulse (vector)
456
+ * symbol(s): `vec(I)`
457
+ * application domain: generic
458
+ * name: Impulse
459
+ * quantity dimension: L^1*M^1*T^-1
460
+ * measurement unit(s): N*s, kg*m*s^-1
461
+ * tensor order: 1
462
+ * definition: vector (ISO 80000-2) quantity describing the effect of force acting during a time interval: `vec(I) = int_(t_1)^(t_2) vec(F)*dt` where `vec(F)` is force (item 4-9.1), `t` is time (ISO 80000-3) and `[t_1, t_2]` is considered time interval
463
+ * remarks: For a time interval `[t_1, t_2]`, `vec(I)(t_1, t_2) = vec(p)(t_1) - vec(p)(t_2) = vec(Δp)` where `vec(p)` is momentum (item 4-8).
464
+ */
465
+ attribute :>> isBound = false;
466
+ attribute :>> mRef: CartesianImpulse3dCoordinateFrame[1];
467
+ }
468
+
469
+ attribute cartesianImpulse3dVector: CartesianImpulse3dVector :> vectorQuantities;
470
+
471
+ attribute def CartesianImpulse3dCoordinateFrame :> '3dCoordinateFrame' {
472
+ attribute :>> isBound = false;
473
+ attribute :>> isOrthogonal = true;
474
+ attribute :>> mRefs: ImpulseUnit[3];
475
+ }
476
+
477
+ /* ISO-80000-4 item 4-11 angular momentum */
478
+ attribute def AngularMomentumValue :> ScalarQuantityValue {
479
+ doc
480
+ /*
481
+ * source: item 4-11 angular momentum (magnitude)
482
+ * symbol(s): `L`
483
+ * application domain: generic
484
+ * name: AngularMomentum
485
+ * quantity dimension: L^2*M^1*T^-1
486
+ * measurement unit(s): kg*m^2*s^-1
487
+ * tensor order: 0
488
+ * definition: vector (ISO 80000-2) quantity described by the vector product: `vec(L) = vec(r) xx vec(p)` where `vec(r)` is position vector (ISO 80000-3) with respect to the axis of rotation and `vec(p)` is momentum (item 4-8)
489
+ * remarks: None.
490
+ */
491
+ attribute :>> num: Real;
492
+ attribute :>> mRef: AngularMomentumUnit[1];
493
+ }
494
+
495
+ attribute angularMomentum: AngularMomentumValue[*] nonunique :> scalarQuantities;
496
+
497
+ attribute def AngularMomentumUnit :> DerivedUnit {
498
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
499
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
500
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
501
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
502
+ }
503
+
504
+ attribute def CartesianAngularMomentum3dVector :> '3dVectorQuantityValue' {
505
+ doc
506
+ /*
507
+ * source: item 4-11 angular momentum (vector)
508
+ * symbol(s): `vec(L)`
509
+ * application domain: generic
510
+ * name: AngularMomentum
511
+ * quantity dimension: L^2*M^1*T^-1
512
+ * measurement unit(s): kg*m^2*s^-1
513
+ * tensor order: 1
514
+ * definition: vector (ISO 80000-2) quantity described by the vector product: `vec(L) = vec(r) xx vec(p)` where `vec(r)` is position vector (ISO 80000-3) with respect to the axis of rotation and `vec(p)` is momentum (item 4-8)
515
+ * remarks: None.
516
+ */
517
+ attribute :>> isBound = false;
518
+ attribute :>> mRef: CartesianAngularMomentum3dCoordinateFrame[1];
519
+ }
520
+
521
+ attribute cartesianAngularMomentum3dVector: CartesianAngularMomentum3dVector :> vectorQuantities;
522
+
523
+ attribute def CartesianAngularMomentum3dCoordinateFrame :> '3dCoordinateFrame' {
524
+ attribute :>> isBound = false;
525
+ attribute :>> isOrthogonal = true;
526
+ attribute :>> mRefs: AngularMomentumUnit[3];
527
+ }
528
+
529
+ /* ISO-80000-4 item 4-12.1 moment of force */
530
+ attribute def MomentOfForceValue :> ScalarQuantityValue {
531
+ doc
532
+ /*
533
+ * source: item 4-12.1 moment of force (magnitude)
534
+ * symbol(s): `M`
535
+ * application domain: generic
536
+ * name: MomentOfForce
537
+ * quantity dimension: L^2*M^1*T^-2
538
+ * measurement unit(s): N*m, kg*m^2*s^-2
539
+ * tensor order: 0
540
+ * definition: vector (ISO 80000-2) quantity described by the vector product: `vec(M) = vec(r) xx vec(F)` where `vec(r)` is position vector (ISO 80000-3) with respect to the axis of rotation and `vec(F)` is force (item 4-9.1)
541
+ * remarks: The bending moment of force is denoted by `vec(M)_b`.
542
+ */
543
+ attribute :>> num: Real;
544
+ attribute :>> mRef: MomentOfForceUnit[1];
545
+ }
546
+
547
+ attribute momentOfForce: MomentOfForceValue[*] nonunique :> scalarQuantities;
548
+
549
+ attribute def MomentOfForceUnit :> DerivedUnit {
550
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
551
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
552
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
553
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
554
+ }
555
+
556
+ attribute def CartesianMomentOfForce3dVector :> '3dVectorQuantityValue' {
557
+ doc
558
+ /*
559
+ * source: item 4-12.1 moment of force (vector)
560
+ * symbol(s): `vec(M)`
561
+ * application domain: generic
562
+ * name: MomentOfForce
563
+ * quantity dimension: L^2*M^1*T^-2
564
+ * measurement unit(s): N*m, kg*m^2*s^-2
565
+ * tensor order: 1
566
+ * definition: vector (ISO 80000-2) quantity described by the vector product: `vec(M) = vec(r) xx vec(F)` where `vec(r)` is position vector (ISO 80000-3) with respect to the axis of rotation and `vec(F)` is force (item 4-9.1)
567
+ * remarks: The bending moment of force is denoted by `vec(M)_b`.
568
+ */
569
+ attribute :>> isBound = false;
570
+ attribute :>> mRef: CartesianMomentOfForce3dCoordinateFrame[1];
571
+ }
572
+
573
+ attribute cartesianMomentOfForce3dVector: CartesianMomentOfForce3dVector :> vectorQuantities;
574
+
575
+ attribute def CartesianMomentOfForce3dCoordinateFrame :> '3dCoordinateFrame' {
576
+ attribute :>> isBound = false;
577
+ attribute :>> isOrthogonal = true;
578
+ attribute :>> mRefs: MomentOfForceUnit[3];
579
+ }
580
+
581
+ /* ISO-80000-4 item 4-12.2 torque */
582
+ attribute def TorqueValue :> ScalarQuantityValue {
583
+ doc
584
+ /*
585
+ * source: item 4-12.2 torque
586
+ * symbol(s): `T`, `M_Q`
587
+ * application domain: generic
588
+ * name: Torque
589
+ * quantity dimension: L^2*M^1*T^-2
590
+ * measurement unit(s): N*m, kg*m^2*s^-2
591
+ * tensor order: 0
592
+ * definition: quantity described by the scalar product: `T = vec(M)*vec(e_Q)` where `vec(M)` is moment of force (item 4-12.1) and `vec(e_Q)` is unit vector of direction with respect to which the torque is considered
593
+ * remarks: For example, torque is the twisting moment of force with respect to the longitudinal axis of a beam or shaft.
594
+ */
595
+ attribute :>> num: Real;
596
+ attribute :>> mRef: TorqueUnit[1];
597
+ }
598
+
599
+ attribute torque: TorqueValue[*] nonunique :> scalarQuantities;
600
+
601
+ attribute def TorqueUnit :> DerivedUnit {
602
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
603
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
604
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
605
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
606
+ }
607
+
608
+ /* ISO-80000-4 item 4-13 angular impulse */
609
+ attribute def AngularImpulseValue :> ScalarQuantityValue {
610
+ doc
611
+ /*
612
+ * source: item 4-13 angular impulse (magnitude)
613
+ * symbol(s): `H`
614
+ * application domain: generic
615
+ * name: AngularImpulse
616
+ * quantity dimension: L^2*M^1*T^-1
617
+ * measurement unit(s): N*m*s, kg*m^2*s^-1
618
+ * tensor order: 0
619
+ * definition: vector (ISO 80000-2) quantity describing the effect of moment of force during a time interval: `vec(H)(t_1; t_2) = int_(t_1)^(t_2) vec(M) dt` where `vec(M)` is moment of force (item 4-12.1), `t` is time (ISO 80000-3) and `[t_1, t_2]` is considered time interval
620
+ * remarks: For a time interval `[t_1, t_2]`, `vec(H)(t_1, t_2) = vec(L)(t_1) - vec(L)(t_2) = vec(ΔL)` where `vec(L)` is angular momentum.
621
+ */
622
+ attribute :>> num: Real;
623
+ attribute :>> mRef: AngularImpulseUnit[1];
624
+ }
625
+
626
+ attribute angularImpulse: AngularImpulseValue[*] nonunique :> scalarQuantities;
627
+
628
+ attribute def AngularImpulseUnit :> DerivedUnit {
629
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
630
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
631
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
632
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
633
+ }
634
+
635
+ attribute def CartesianAngularImpulse3dVector :> '3dVectorQuantityValue' {
636
+ doc
637
+ /*
638
+ * source: item 4-13 angular impulse (vector)
639
+ * symbol(s): `vec(H)`
640
+ * application domain: generic
641
+ * name: AngularImpulse
642
+ * quantity dimension: L^2*M^1*T^-1
643
+ * measurement unit(s): N*m*s, kg*m^2*s^-1
644
+ * tensor order: 1
645
+ * definition: vector (ISO 80000-2) quantity describing the effect of moment of force during a time interval: `vec(H)(t_1; t_2) = int_(t_1)^(t_2) vec(M) dt` where `vec(M)` is moment of force (item 4-12.1), `t` is time (ISO 80000-3) and `[t_1, t_2]` is considered time interval
646
+ * remarks: For a time interval `[t_1, t_2]`, `vec(H)(t_1, t_2) = vec(L)(t_1) - vec(L)(t_2) = vec(ΔL)` where `vec(L)` is angular momentum.
647
+ */
648
+ attribute :>> isBound = false;
649
+ attribute :>> mRef: CartesianAngularImpulse3dCoordinateFrame[1];
650
+ }
651
+
652
+ attribute cartesianAngularImpulse3dVector: CartesianAngularImpulse3dVector :> vectorQuantities;
653
+
654
+ attribute def CartesianAngularImpulse3dCoordinateFrame :> '3dCoordinateFrame' {
655
+ attribute :>> isBound = false;
656
+ attribute :>> isOrthogonal = true;
657
+ attribute :>> mRefs: AngularImpulseUnit[3];
658
+ }
659
+
660
+ /* ISO-80000-4 item 4-14.1 pressure */
661
+ attribute def PressureValue :> ScalarQuantityValue {
662
+ doc
663
+ /*
664
+ * source: item 4-14.1 pressure
665
+ * symbol(s): `p`
666
+ * application domain: generic
667
+ * name: Pressure
668
+ * quantity dimension: L^-1*M^1*T^-2
669
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
670
+ * tensor order: 0
671
+ * definition: quotient of the component of a force normal to a surface and its area: `p = (vec(e_n) * vec(F)) / A` where `vec(e_n)` is unit vector of the surface normal, `vec(F)` is force (item 4-9.1) and `A` is area (ISO 80000-3)
672
+ * remarks: None.
673
+ */
674
+ attribute :>> num: Real;
675
+ attribute :>> mRef: PressureUnit[1];
676
+ }
677
+
678
+ attribute pressure: PressureValue[*] nonunique :> scalarQuantities;
679
+
680
+ attribute def PressureUnit :> DerivedUnit {
681
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
682
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
683
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
684
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
685
+ }
686
+
687
+ /* ISO-80000-4 item 4-14.2 gauge pressure */
688
+ attribute gaugePressure: PressureValue :> scalarQuantities {
689
+ doc
690
+ /*
691
+ * source: item 4-14.2 gauge pressure
692
+ * symbol(s): `p_e`
693
+ * application domain: generic
694
+ * name: GaugePressure (specializes Pressure)
695
+ * quantity dimension: L^-1*M^1*T^-2
696
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
697
+ * tensor order: 0
698
+ * definition: pressure `p` (item 4-14.1) decremented by ambient pressure `p_amb` : `p_e = p - p_amb`
699
+ * remarks: Often, `p_amb` is chosen as a standard pressure. Gauge pressure is positive or negative.
700
+ */
701
+ }
702
+
703
+ /* ISO-80000-4 item 4-15 stress */
704
+ attribute def StressValue :> ScalarQuantityValue {
705
+ doc
706
+ /*
707
+ * source: item 4-15 stress (magnitude)
708
+ * symbol(s): `σ`
709
+ * application domain: generic
710
+ * name: Stress
711
+ * quantity dimension: L^-1*M^1*T^-2
712
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
713
+ * tensor order: 0
714
+ * definition: tensor (ISO 80000-2) quantity representing state of tension of matter
715
+ * remarks: Stress tensor is symmetric and has three normal-stress and three shear-stress (Cartesian) components.
716
+ */
717
+ attribute :>> num: Real;
718
+ attribute :>> mRef: StressUnit[1];
719
+ }
720
+
721
+ attribute stress: StressValue[*] nonunique :> scalarQuantities;
722
+
723
+ attribute def StressUnit :> DerivedUnit {
724
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
725
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
726
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
727
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
728
+ }
729
+
730
+ attribute def Cartesian3dStressTensor :> TensorQuantityValue {
731
+ doc
732
+ /*
733
+ * source: item 4-15 stress (tensor)
734
+ * symbol(s): `vec(vec(σ))`
735
+ * application domain: generic
736
+ * name: Stress
737
+ * quantity dimension: L^-1*M^1*T^-2
738
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
739
+ * tensor order: 2
740
+ * definition: tensor (ISO 80000-2) quantity representing state of tension of matter
741
+ * remarks: Stress tensor is symmetric and has three normal-stress and three shear-stress (Cartesian) components.
742
+ */
743
+ attribute :>> isBound = false;
744
+ attribute :>> num: Real[9];
745
+ attribute :>> mRef: Cartesian3dStressMeasurementReference[1];
746
+ }
747
+
748
+ attribute stressTensor: Cartesian3dStressTensor :> tensorQuantities;
749
+
750
+ attribute def Cartesian3dStressMeasurementReference :> TensorMeasurementReference {
751
+ attribute :>> dimensions = (3, 3);
752
+ attribute :>> isBound = false;
753
+ attribute :>> mRefs: StressUnit[9];
754
+ }
755
+
756
+ /* ISO-80000-4 item 4-16.1 normal stress */
757
+ attribute def NormalStressValue :> ScalarQuantityValue {
758
+ doc
759
+ /*
760
+ * source: item 4-16.1 normal stress
761
+ * symbol(s): `σ_n`, `σ`
762
+ * application domain: generic
763
+ * name: NormalStress
764
+ * quantity dimension: L^-1*M^1*T^-2
765
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
766
+ * tensor order: 0
767
+ * definition: scalar (ISO 80000-2) quantity describing surface action of a force into a body equal to: `σ_n = (d F_n)/(dA)` where `F_n` is the normal component of force (item 4-9.1) and `A` is the area (ISO 80000-3) of the surface element
768
+ * remarks: A couple of mutually opposite forces of magnitude `F` acting on the opposite surfaces of a slice (layer) of homogenous solid matter normal to it, and evenly distributed, cause a constant normal stress `σ_n = F A` in the slice (layer).
769
+ */
770
+ attribute :>> num: Real;
771
+ attribute :>> mRef: NormalStressUnit[1];
772
+ }
773
+
774
+ attribute normalStress: NormalStressValue[*] nonunique :> scalarQuantities;
775
+
776
+ attribute def NormalStressUnit :> DerivedUnit {
777
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
778
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
779
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
780
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
781
+ }
782
+
783
+ /* ISO-80000-4 item 4-16.2 shear stress */
784
+ attribute def ShearStressValue :> ScalarQuantityValue {
785
+ doc
786
+ /*
787
+ * source: item 4-16.2 shear stress
788
+ * symbol(s): `τ_s`, `τ`
789
+ * application domain: generic
790
+ * name: ShearStress
791
+ * quantity dimension: L^-1*M^1*T^-2
792
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
793
+ * tensor order: 0
794
+ * definition: scalar (ISO 80000-2) quantity describing surface action of a force into a body equal to: `τ_s = (d F_t)/(dA)` where `F_t` is the tangential component of force (item 4-9.1) and `A` is the area (ISO 80000-3) of the surface element
795
+ * remarks: A couple of mutually opposite forces of magnitude `F` acting on the opposite surfaces of a slice (layer) of homogenous solid matter parallel to it, and evenly distributed, cause a constant shear stress `τ = F/A` in the slice (layer).
796
+ */
797
+ attribute :>> num: Real;
798
+ attribute :>> mRef: ShearStressUnit[1];
799
+ }
800
+
801
+ attribute shearStress: ShearStressValue[*] nonunique :> scalarQuantities;
802
+
803
+ attribute def ShearStressUnit :> DerivedUnit {
804
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
805
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
806
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
807
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
808
+ }
809
+
810
+ /* ISO-80000-4 item 4-17.1 strain */
811
+ attribute def StrainValue :> ScalarQuantityValue {
812
+ doc
813
+ /*
814
+ * source: item 4-17.1 strain (magnitude)
815
+ * symbol(s): `ε`
816
+ * application domain: generic
817
+ * name: Strain
818
+ * quantity dimension: 1
819
+ * measurement unit(s): 1
820
+ * tensor order: 0
821
+ * definition: tensor (ISO 80000-2) quantity representing the deformation of matter caused by stress
822
+ * remarks: Strain tensor is symmetric and has three linear-strain and three shear strain (Cartesian) components.
823
+ */
824
+ attribute :>> num: Real;
825
+ attribute :>> mRef: StrainUnit[1];
826
+ }
827
+
828
+ attribute strain: StrainValue[*] nonunique :> scalarQuantities;
829
+
830
+ attribute def StrainUnit :> DimensionOneUnit {
831
+ }
832
+
833
+ attribute def Cartesian3dStrainTensor :> TensorQuantityValue {
834
+ doc
835
+ /*
836
+ * source: item 4-17.1 strain (tensor)
837
+ * symbol(s): `vec(vec(ε))`
838
+ * application domain: generic
839
+ * name: Strain
840
+ * quantity dimension: 1
841
+ * measurement unit(s): 1
842
+ * tensor order: 2
843
+ * definition: tensor (ISO 80000-2) quantity representing the deformation of matter caused by stress
844
+ * remarks: Strain tensor is symmetric and has three linear-strain and three shear strain (Cartesian) components.
845
+ */
846
+ attribute :>> isBound = false;
847
+ attribute :>> num: Real[9];
848
+ attribute :>> mRef: Cartesian3dStrainMeasurementReference[1];
849
+ }
850
+
851
+ attribute strainTensor: Cartesian3dStrainTensor :> tensorQuantities;
852
+
853
+ attribute def Cartesian3dStrainMeasurementReference :> TensorMeasurementReference {
854
+ attribute :>> dimensions = (3, 3);
855
+ attribute :>> isBound = false;
856
+ attribute :>> mRefs: StrainUnit[9];
857
+ }
858
+
859
+ /* ISO-80000-4 item 4-17.2 relative linear strain */
860
+ attribute def RelativeLinearStrainValue :> DimensionOneValue {
861
+ doc
862
+ /*
863
+ * source: item 4-17.2 relative linear strain
864
+ * symbol(s): `ε`, `(e)`
865
+ * application domain: generic
866
+ * name: RelativeLinearStrain (specializes DimensionOneQuantity)
867
+ * quantity dimension: 1
868
+ * measurement unit(s): 1
869
+ * tensor order: 0
870
+ * definition: quotient of change in length `Δl` (ISO 80000-3) of an object and its length `l` (ISO 80000-3): `ε = (Δl)/l`
871
+ * remarks: None.
872
+ */
873
+ }
874
+ attribute relativeLinearStrain: RelativeLinearStrainValue :> scalarQuantities;
875
+
876
+ /* ISO-80000-4 item 4-17.3 shear strain */
877
+ attribute def ShearStrainValue :> DimensionOneValue {
878
+ doc
879
+ /*
880
+ * source: item 4-17.3 shear strain
881
+ * symbol(s): `γ`
882
+ * application domain: generic
883
+ * name: ShearStrain (specializes DimensionOneQuantity)
884
+ * quantity dimension: 1
885
+ * measurement unit(s): 1
886
+ * tensor order: 0
887
+ * definition: quotient of parallel displacement `Δx` (ISO 80000-3) of two surfaces of a layer and the thickness `d` (ISO 80000-3) of the layer: `γ = (Δx)/d`
888
+ * remarks: None.
889
+ */
890
+ }
891
+ attribute shearStrain: ShearStrainValue :> scalarQuantities;
892
+
893
+ /* ISO-80000-4 item 4-17.4 relative volume strain */
894
+ attribute def RelativeVolumeStrainValue :> DimensionOneValue {
895
+ doc
896
+ /*
897
+ * source: item 4-17.4 relative volume strain
898
+ * symbol(s): `θ`
899
+ * application domain: generic
900
+ * name: RelativeVolumeStrain (specializes DimensionOneQuantity)
901
+ * quantity dimension: 1
902
+ * measurement unit(s): 1
903
+ * tensor order: 0
904
+ * definition: quotient of change in volume `ΔV` (ISO 80000-3) of an object and its volume `V_0` (ISO 80000-3): `θ = (ΔV)/V_0`
905
+ * remarks: None.
906
+ */
907
+ }
908
+ attribute relativeVolumeStrain: RelativeVolumeStrainValue :> scalarQuantities;
909
+
910
+ /* ISO-80000-4 item 4-18 Poisson number */
911
+ attribute def PoissonNumberValue :> DimensionOneValue {
912
+ doc
913
+ /*
914
+ * source: item 4-18 Poisson number
915
+ * symbol(s): `μ`, `(v)`
916
+ * application domain: generic
917
+ * name: PoissonNumber (specializes DimensionOneQuantity)
918
+ * quantity dimension: 1
919
+ * measurement unit(s): 1
920
+ * tensor order: 0
921
+ * definition: quotient of change in width `Δb` (width is defined in ISO 80000-3) and change in length `Δl` (length is defined in ISO 80000-3) of an object: `μ = (Δb)/(Δl)`
922
+ * remarks: None.
923
+ */
924
+ }
925
+ attribute poissonNumber: PoissonNumberValue :> scalarQuantities;
926
+
927
+ /* ISO-80000-4 item 4-19.1 modulus of elasticity, Young modulus */
928
+ attribute def ModulusOfElasticityValue :> ScalarQuantityValue {
929
+ doc
930
+ /*
931
+ * source: item 4-19.1 modulus of elasticity, Young modulus
932
+ * symbol(s): `E`, `E_m`, `Y`
933
+ * application domain: generic
934
+ * name: ModulusOfElasticity
935
+ * quantity dimension: L^-1*M^1*T^-2
936
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
937
+ * tensor order: 0
938
+ * definition: quotient of normal stress `σ` (item 4-16.1) and relative linear strain `ε` (item 4-17.2): `E = σ/ε`
939
+ * remarks: Conditions should be specified (e.g. adiabatic or isothermal process).
940
+ */
941
+ attribute :>> num: Real;
942
+ attribute :>> mRef: ModulusOfElasticityUnit[1];
943
+ }
944
+
945
+ attribute modulusOfElasticity: ModulusOfElasticityValue[*] nonunique :> scalarQuantities;
946
+
947
+ attribute def ModulusOfElasticityUnit :> DerivedUnit {
948
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
949
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
950
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
951
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
952
+ }
953
+
954
+ alias YoungModulusUnit for ModulusOfElasticityUnit;
955
+ alias YoungModulusValue for ModulusOfElasticityValue;
956
+ alias youngModulus for modulusOfElasticity;
957
+
958
+ /* ISO-80000-4 item 4-19.2 modulus of rigidity, shear modulus */
959
+ attribute def ModulusOfRigidityValue :> ScalarQuantityValue {
960
+ doc
961
+ /*
962
+ * source: item 4-19.2 modulus of rigidity, shear modulus
963
+ * symbol(s): `G`
964
+ * application domain: generic
965
+ * name: ModulusOfRigidity
966
+ * quantity dimension: L^-1*M^1*T^-2
967
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
968
+ * tensor order: 0
969
+ * definition: quotient of shear stress `τ` (item 4-16.2) and shear strain `γ` (item 4-17.3): `G = τ/γ`
970
+ * remarks: Conditions should be specified (e.g. isentropic or isothermal process).
971
+ */
972
+ attribute :>> num: Real;
973
+ attribute :>> mRef: ModulusOfRigidityUnit[1];
974
+ }
975
+
976
+ attribute modulusOfRigidity: ModulusOfRigidityValue[*] nonunique :> scalarQuantities;
977
+
978
+ attribute def ModulusOfRigidityUnit :> DerivedUnit {
979
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
980
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
981
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
982
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
983
+ }
984
+
985
+ alias ShearModulusUnit for ModulusOfRigidityUnit;
986
+ alias ShearModulusValue for ModulusOfRigidityValue;
987
+ alias shearModulus for modulusOfRigidity;
988
+
989
+ /* ISO-80000-4 item 4-19.3 modulus of compression, bulk modulus */
990
+ attribute def ModulusOfCompressionValue :> ScalarQuantityValue {
991
+ doc
992
+ /*
993
+ * source: item 4-19.3 modulus of compression, bulk modulus
994
+ * symbol(s): `K`, `K_m`, `B`
995
+ * application domain: generic
996
+ * name: ModulusOfCompression
997
+ * quantity dimension: L^-1*M^1*T^-2
998
+ * measurement unit(s): Pa, N*m^-2, kg*m^-1*s^-2
999
+ * tensor order: 0
1000
+ * definition: negative of the quotient of pressure `p` (item 4-14.1) and relative volume strain `θ` (item 4-17.4): `K = -(p/θ)`
1001
+ * remarks: Conditions should be specified (e.g. isentropic or isothermal process).
1002
+ */
1003
+ attribute :>> num: Real;
1004
+ attribute :>> mRef: ModulusOfCompressionUnit[1];
1005
+ }
1006
+
1007
+ attribute modulusOfCompression: ModulusOfCompressionValue[*] nonunique :> scalarQuantities;
1008
+
1009
+ attribute def ModulusOfCompressionUnit :> DerivedUnit {
1010
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1011
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1012
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1013
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1014
+ }
1015
+
1016
+ alias BulkModulusUnit for ModulusOfCompressionUnit;
1017
+ alias BulkModulusValue for ModulusOfCompressionValue;
1018
+ alias bulkModulus for modulusOfCompression;
1019
+
1020
+ /* ISO-80000-4 item 4-20 compressibility */
1021
+ attribute def CompressibilityValue :> ScalarQuantityValue {
1022
+ doc
1023
+ /*
1024
+ * source: item 4-20 compressibility
1025
+ * symbol(s): `ϰ`
1026
+ * application domain: generic
1027
+ * name: Compressibility
1028
+ * quantity dimension: L^1*M^-1*T^2
1029
+ * measurement unit(s): Pa^-1, kg^-1*m*s^2
1030
+ * tensor order: 0
1031
+ * definition: negative relative change of volume `V` (ISO 80000-3) of an object under pressure `p` (item 4-14.1) expressed by: `ϰ = -(1/V)(dV)/(dp)`
1032
+ * remarks: Conditions should be specified (e.g. isentropic or isothermal process). See also ISO 80000-5.
1033
+ */
1034
+ attribute :>> num: Real;
1035
+ attribute :>> mRef: CompressibilityUnit[1];
1036
+ }
1037
+
1038
+ attribute compressibility: CompressibilityValue[*] nonunique :> scalarQuantities;
1039
+
1040
+ attribute def CompressibilityUnit :> DerivedUnit {
1041
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1042
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1043
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 2; }
1044
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1045
+ }
1046
+
1047
+ /* ISO-80000-4 item 4-21.1 second axial moment of area */
1048
+ attribute def SecondAxialMomentOfAreaValue :> ScalarQuantityValue {
1049
+ doc
1050
+ /*
1051
+ * source: item 4-21.1 second axial moment of area
1052
+ * symbol(s): `I_a`
1053
+ * application domain: generic
1054
+ * name: SecondAxialMomentOfArea
1055
+ * quantity dimension: L^4
1056
+ * measurement unit(s): m^4
1057
+ * tensor order: 0
1058
+ * definition: geometrical characteristic of a shape of a body equal to: `I_a = int int_M r_Q^2 dA` where `M` is the two-dimensional domain of the cross-section of a plane and considered body, `r_Q` is radial distance (ISO 80000-3) from a Q-axis in the plane of the surface considered and `A` is area (ISO 80000-3)
1059
+ * remarks: This quantity is often referred to wrongly as "moment of inertia" (item 4-7). The subscript, `a`, may be omitted when there is no risk of confusion.
1060
+ */
1061
+ attribute :>> num: Real;
1062
+ attribute :>> mRef: SecondAxialMomentOfAreaUnit[1];
1063
+ }
1064
+
1065
+ attribute secondAxialMomentOfArea: SecondAxialMomentOfAreaValue[*] nonunique :> scalarQuantities;
1066
+
1067
+ attribute def SecondAxialMomentOfAreaUnit :> DerivedUnit {
1068
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 4; }
1069
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1070
+ }
1071
+
1072
+ /* ISO-80000-4 item 4-21.2 second polar moment of area */
1073
+ attribute def SecondPolarMomentOfAreaValue :> ScalarQuantityValue {
1074
+ doc
1075
+ /*
1076
+ * source: item 4-21.2 second polar moment of area
1077
+ * symbol(s): `I_p`
1078
+ * application domain: generic
1079
+ * name: SecondPolarMomentOfArea
1080
+ * quantity dimension: L^4
1081
+ * measurement unit(s): m^4
1082
+ * tensor order: 0
1083
+ * definition: geometrical characteristic of a shape of a body equal to: `I_p = int int_M r_Q^2 * dA` where `M` is the two-dimensional domain of the cross-section of a plane and considered body, `r_Q` is radial distance (ISO 80000-3) from a Q-axis perpendicular to the plane of the surface considered and `A` is area (ISO 80000-3)
1084
+ * remarks: This quantity is often referred to wrongly as "moment of inertia" (item 4-7). The subscript, `p`, may be omitted when there is no risk of confusion.
1085
+ */
1086
+ attribute :>> num: Real;
1087
+ attribute :>> mRef: SecondPolarMomentOfAreaUnit[1];
1088
+ }
1089
+
1090
+ attribute secondPolarMomentOfArea: SecondPolarMomentOfAreaValue[*] nonunique :> scalarQuantities;
1091
+
1092
+ attribute def SecondPolarMomentOfAreaUnit :> DerivedUnit {
1093
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 4; }
1094
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1095
+ }
1096
+
1097
+ /* ISO-80000-4 item 4-22 section modulus */
1098
+ attribute def SectionModulusValue :> ScalarQuantityValue {
1099
+ doc
1100
+ /*
1101
+ * source: item 4-22 section modulus
1102
+ * symbol(s): `Z`, `(W)`
1103
+ * application domain: generic
1104
+ * name: SectionModulus
1105
+ * quantity dimension: L^3
1106
+ * measurement unit(s): m^3
1107
+ * tensor order: 0
1108
+ * definition: geometrical characteristic of a shape of a body equal to: `Z = I_a/r_(Q_max)` where `I_a` is the second axial moment of area (item 4-21.1) and `r_(Q,max)` is the maximum radial distance (ISO 80000-3) of any point in the surface considered from the Q-axis with respect to which `I_a` is defined
1109
+ * remarks: None.
1110
+ */
1111
+ attribute :>> num: Real;
1112
+ attribute :>> mRef: SectionModulusUnit[1];
1113
+ }
1114
+
1115
+ attribute sectionModulus: SectionModulusValue[*] nonunique :> scalarQuantities;
1116
+
1117
+ attribute def SectionModulusUnit :> DerivedUnit {
1118
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
1119
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1120
+ }
1121
+
1122
+ /* ISO-80000-4 item 4-23.1 static friction coefficient, static friction factor, coefficient of static friction */
1123
+ attribute def StaticFrictionCoefficientValue :> DimensionOneValue {
1124
+ doc
1125
+ /*
1126
+ * source: item 4-23.1 static friction coefficient, static friction factor, coefficient of static friction
1127
+ * symbol(s): `μ_s`, `(f_s)`
1128
+ * application domain: generic
1129
+ * name: StaticFrictionCoefficient (specializes DimensionOneQuantity)
1130
+ * quantity dimension: 1
1131
+ * measurement unit(s): 1
1132
+ * tensor order: 0
1133
+ * definition: proportionality factor between the maximum magnitude of the tangential component `F_max` of the static friction force (item 4-9.3) and the magnitude of the normal component `N` of the contact force (item 4-9.1) between two bodies at relative rest with respect to each other: `F_max = μ_s * N`
1134
+ * remarks: When it is not necessary to distinguish between dynamic friction factor and static friction factor, the name friction factor may be used for both.
1135
+ */
1136
+ }
1137
+ attribute staticFrictionCoefficient: StaticFrictionCoefficientValue :> scalarQuantities;
1138
+
1139
+ alias staticFrictionFactor for staticFrictionCoefficient;
1140
+
1141
+ alias coefficientOfStaticFriction for staticFrictionCoefficient;
1142
+
1143
+ /* ISO-80000-4 item 4-23.2 kinetic friction factor, dynamic friction factor */
1144
+ attribute def KineticFrictionFactorValue :> DimensionOneValue {
1145
+ doc
1146
+ /*
1147
+ * source: item 4-23.2 kinetic friction factor, dynamic friction factor
1148
+ * symbol(s): `μ`, `(f)`
1149
+ * application domain: generic
1150
+ * name: KineticFrictionFactor (specializes DimensionOneQuantity)
1151
+ * quantity dimension: 1
1152
+ * measurement unit(s): 1
1153
+ * tensor order: 0
1154
+ * definition: proportionality factor between the magnitudes of the kinetic friction force, `F_μ` (item 4-9.4) and the normal component `N` of the contact force (item 4-9.1): `F_μ = μ * N`
1155
+ * remarks: When it is not necessary to distinguish between dynamic friction factor and static friction factor, the name friction factor may be used for both. The dynamic friction factor `µ` is independent in first approximation of the contact surface.
1156
+ */
1157
+ }
1158
+ attribute kineticFrictionFactor: KineticFrictionFactorValue :> scalarQuantities;
1159
+
1160
+ alias dynamicFrictionFactor for kineticFrictionFactor;
1161
+
1162
+ /* ISO-80000-4 item 4-23.3 rolling resistance factor */
1163
+ attribute def RollingResistanceFactorValue :> DimensionOneValue {
1164
+ doc
1165
+ /*
1166
+ * source: item 4-23.3 rolling resistance factor
1167
+ * symbol(s): `C_"rr"`
1168
+ * application domain: generic
1169
+ * name: RollingResistanceFactor (specializes DimensionOneQuantity)
1170
+ * quantity dimension: 1
1171
+ * measurement unit(s): 1
1172
+ * tensor order: 0
1173
+ * definition: proportionality factor between the magnitude of the tangential component `F` and the magnitude of the normal component `N` of the force applied to a body rolling on a surface at constant speed: `F = C_(rr)*N`
1174
+ * remarks: Also known as rolling resistance coefficient, RRC.
1175
+ */
1176
+ }
1177
+ attribute rollingResistanceFactor: RollingResistanceFactorValue :> scalarQuantities;
1178
+
1179
+ /* ISO-80000-4 item 4-23.4 drag coefficient, drag factor */
1180
+ attribute def DragCoefficientValue :> DimensionOneValue {
1181
+ doc
1182
+ /*
1183
+ * source: item 4-23.4 drag coefficient, drag factor
1184
+ * symbol(s): `C_D`
1185
+ * application domain: generic
1186
+ * name: DragCoefficient (specializes DimensionOneQuantity)
1187
+ * quantity dimension: 1
1188
+ * measurement unit(s): 1
1189
+ * tensor order: 0
1190
+ * definition: factor proportional to magnitude `F_D` of the drag force (item 4-9.6) of a body moving in a fluid, dependent on the shape and speed `v` (ISO 80000-3) of a body: `F_D = 1/2 * C_D * ρ * v^2 * A` where `ρ` is mass density (item 4-2) of the fluid and `A` is cross-section area (ISO 80000-3) of the body
1191
+ * remarks: None.
1192
+ */
1193
+ }
1194
+ attribute dragCoefficient: DragCoefficientValue :> scalarQuantities;
1195
+
1196
+ alias dragFactor for dragCoefficient;
1197
+
1198
+ /* ISO-80000-4 item 4-24 dynamic viscosity, viscosity */
1199
+ attribute def DynamicViscosityValue :> ScalarQuantityValue {
1200
+ doc
1201
+ /*
1202
+ * source: item 4-24 dynamic viscosity, viscosity
1203
+ * symbol(s): `η`
1204
+ * application domain: generic
1205
+ * name: DynamicViscosity
1206
+ * quantity dimension: L^-1*M^1*T^-1
1207
+ * measurement unit(s): Pa*s, kg*m^-1*s^-1
1208
+ * tensor order: 0
1209
+ * definition: for laminar flows, proportionality constant between shear stress `τ_(xz)` (item 4-16.2) in a fluid moving with a velocity `v_x` (ISO 80000-3) and gradient `(d v_x)/dz` perpendicular to the plane of shear: `τ_(xz) = η (d v_x)/(dz)`
1210
+ * remarks: None.
1211
+ */
1212
+ attribute :>> num: Real;
1213
+ attribute :>> mRef: DynamicViscosityUnit[1];
1214
+ }
1215
+
1216
+ attribute dynamicViscosity: DynamicViscosityValue[*] nonunique :> scalarQuantities;
1217
+
1218
+ attribute def DynamicViscosityUnit :> DerivedUnit {
1219
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1220
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1221
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1222
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1223
+ }
1224
+
1225
+ alias ViscosityUnit for DynamicViscosityUnit;
1226
+ alias ViscosityValue for DynamicViscosityValue;
1227
+ alias viscosity for dynamicViscosity;
1228
+
1229
+ /* ISO-80000-4 item 4-25 kinematic viscosity */
1230
+ attribute def KinematicViscosityValue :> ScalarQuantityValue {
1231
+ doc
1232
+ /*
1233
+ * source: item 4-25 kinematic viscosity
1234
+ * symbol(s): `v`
1235
+ * application domain: generic
1236
+ * name: KinematicViscosity
1237
+ * quantity dimension: L^2*T^-1
1238
+ * measurement unit(s): m^2*s^-1
1239
+ * tensor order: 0
1240
+ * definition: quotient of dynamic viscosity `η` (item 4-24) and mass density `ρ` (item 4-2) of a fluid: `v = η/ρ`
1241
+ * remarks: None.
1242
+ */
1243
+ attribute :>> num: Real;
1244
+ attribute :>> mRef: KinematicViscosityUnit[1];
1245
+ }
1246
+
1247
+ attribute kinematicViscosity: KinematicViscosityValue[*] nonunique :> scalarQuantities;
1248
+
1249
+ attribute def KinematicViscosityUnit :> DerivedUnit {
1250
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1251
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1252
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1253
+ }
1254
+
1255
+ /* ISO-80000-4 item 4-26 surface tension */
1256
+ attribute def SurfaceTensionValue :> ScalarQuantityValue {
1257
+ doc
1258
+ /*
1259
+ * source: item 4-26 surface tension
1260
+ * symbol(s): `γ`, `σ`
1261
+ * application domain: generic
1262
+ * name: SurfaceTension
1263
+ * quantity dimension: M^1*T^-2
1264
+ * measurement unit(s): N*m^-1, kg*s^-2
1265
+ * tensor order: 0
1266
+ * definition: magnitude of a force acting against the enlargement of area portion of a surface separating a liquid from its surrounding
1267
+ * remarks: The concept of surface energy is closely related to surface tension and has the same dimension.
1268
+ */
1269
+ attribute :>> num: Real;
1270
+ attribute :>> mRef: SurfaceTensionUnit[1];
1271
+ }
1272
+
1273
+ attribute surfaceTension: SurfaceTensionValue[*] nonunique :> scalarQuantities;
1274
+
1275
+ attribute def SurfaceTensionUnit :> DerivedUnit {
1276
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1277
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1278
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1279
+ }
1280
+
1281
+ /* ISO-80000-4 item 4-27.1 power */
1282
+ attribute def PowerValue :> ScalarQuantityValue {
1283
+ doc
1284
+ /*
1285
+ * source: item 4-27.1 power
1286
+ * symbol(s): `P`
1287
+ * application domain: generic
1288
+ * name: Power
1289
+ * quantity dimension: L^2*M^1*T^-3
1290
+ * measurement unit(s): W, J*s^-1, kg*m^2*s^-3
1291
+ * tensor order: 0
1292
+ * definition: quotient of energy (ISO 80000-5) and duration (ISO 80000-3)
1293
+ * remarks: None.
1294
+ */
1295
+ attribute :>> num: Real;
1296
+ attribute :>> mRef: PowerUnit[1];
1297
+ }
1298
+
1299
+ attribute power: PowerValue[*] nonunique :> scalarQuantities;
1300
+
1301
+ attribute def PowerUnit :> DerivedUnit {
1302
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1303
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1304
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1305
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1306
+ }
1307
+
1308
+ /* ISO-80000-4 item 4-27 mechanical power */
1309
+ attribute mechanicalPower: PowerValue :> scalarQuantities {
1310
+ doc
1311
+ /*
1312
+ * source: item 4-27 mechanical power
1313
+ * symbol(s): `P`
1314
+ * application domain: mechanics
1315
+ * name: MechanicalPower (specializes Power)
1316
+ * quantity dimension: L^2*M^1*T^-3
1317
+ * measurement unit(s): W, N*m*s^-1, kg*m^2*s^-3
1318
+ * tensor order: 0
1319
+ * definition: scalar product of force `vec(F)` (item 4-9.1) acting to a body and its velocity `vec(v)` (ISO 80000-3): `P = vec(F) * vec(v)`
1320
+ * remarks: None.
1321
+ */
1322
+ }
1323
+
1324
+ /* ISO-80000-4 item 4-28.1 potential energy */
1325
+ attribute potentialEnergy: EnergyValue :> scalarQuantities {
1326
+ doc
1327
+ /*
1328
+ * source: item 4-28.1 potential energy
1329
+ * symbol(s): `V`, `E_p`
1330
+ * application domain: generic
1331
+ * name: PotentialEnergy (specializes Energy)
1332
+ * quantity dimension: L^2*M^1*T^-2
1333
+ * measurement unit(s): J, kg*m^2*s^-2
1334
+ * tensor order: 0
1335
+ * definition: for conservative force `vec(F)`, scalar additive quantity obeying condition `vec(F) = -nabla F`, if it exists
1336
+ * remarks: For the definition of energy, see ISO 80000-5. A force is conservative when the force field is irrotational, i.e. `rot(F) = 0` , or `vec(F)` is perpendicular to the speed of the body to ensure `vec(F) * d vec(r) = 0` .
1337
+ */
1338
+ }
1339
+
1340
+ /* ISO-80000-4 item 4-28.2 kinetic energy */
1341
+ attribute kineticEnergy: EnergyValue :> scalarQuantities {
1342
+ doc
1343
+ /*
1344
+ * source: item 4-28.2 kinetic energy
1345
+ * symbol(s): `T`, `E_k`
1346
+ * application domain: generic
1347
+ * name: KineticEnergy (specializes Energy)
1348
+ * quantity dimension: L^2*M^1*T^-2
1349
+ * measurement unit(s): J, kg*m^2*s^-2
1350
+ * tensor order: 0
1351
+ * definition: scalar (ISO 80000-2) quantity characterizing a moving body expressed by: `T = 1/2 m v^2` where `m` is mass (item 4-1) of the body and `v` is its speed (ISO 80000-3)
1352
+ * remarks: For the definition of energy, see ISO 80000-5.
1353
+ */
1354
+ }
1355
+
1356
+ /* ISO-80000-4 item 4-28.3 mechanical energy */
1357
+ attribute mechanicalEnergy: EnergyValue :> scalarQuantities {
1358
+ doc
1359
+ /*
1360
+ * source: item 4-28.3 mechanical energy
1361
+ * symbol(s): `E`, `W`
1362
+ * application domain: generic
1363
+ * name: MechanicalEnergy (specializes Energy)
1364
+ * quantity dimension: L^2*M^1*T^-2
1365
+ * measurement unit(s): J, kg*m^2*s^-2
1366
+ * tensor order: 0
1367
+ * definition: sum of kinetic energy `T` (item 4-28.2) and potential energy `V` (item 4-28.1): `E = T+V`
1368
+ * remarks: The symbols `E` and `W` are also used for other kinds of energy. This definition is understood in a classical way and it does not include thermal motion.
1369
+ */
1370
+ }
1371
+
1372
+ /* ISO-80000-4 item 4-28.4 mechanical work, work */
1373
+ attribute mechanicalWork: EnergyValue :> scalarQuantities {
1374
+ doc
1375
+ /*
1376
+ * source: item 4-28.4 mechanical work, work
1377
+ * symbol(s): `A`, `W`
1378
+ * application domain: generic
1379
+ * name: MechanicalWork (specializes Energy)
1380
+ * quantity dimension: L^2*M^1*T^-2
1381
+ * measurement unit(s): J, kg*m^2*s^-2
1382
+ * tensor order: 0
1383
+ * definition: process quantity describing the total action of a force `vec(F)` (item 4-9.1) along a continuous curve `Γ` in three-dimensional space with infinitesimal displacement (ISO 80000-3) `dvec(r)`, as a line integral of their scalar product: `A = int_Γ vec(F) * d vec(r)`
1384
+ * remarks: The definition covers the case `A = -int_Γ p*dV` where `Γ` is a curve in the phase space and implies that work generally depends upon `Γ`, and that type of process must be defined (e.g. isentropic or isothermic).
1385
+ */
1386
+ }
1387
+
1388
+ alias work for mechanicalWork;
1389
+
1390
+ /* ISO-80000-4 item 4-29 mechanical efficiency */
1391
+ attribute def MechanicalEfficiencyValue :> DimensionOneValue {
1392
+ doc
1393
+ /*
1394
+ * source: item 4-29 mechanical efficiency
1395
+ * symbol(s): `η`
1396
+ * application domain: mechanics
1397
+ * name: MechanicalEfficiency (specializes DimensionOneQuantity)
1398
+ * quantity dimension: 1
1399
+ * measurement unit(s): 1
1400
+ * tensor order: 0
1401
+ * definition: quotient of output power `P_"out"` (item 4-27) from a system and input power `P_"in"` (item 4-27) to this system: `η = P_"out"/P_"in"`
1402
+ * remarks: The system must be specified. This quantity is often expressed by the unit percent, symbol %.
1403
+ */
1404
+ }
1405
+ attribute mechanicalEfficiency: MechanicalEfficiencyValue :> scalarQuantities;
1406
+
1407
+ /* ISO-80000-4 item 4-30.1 mass flow */
1408
+ attribute def MassFlowValue :> ScalarQuantityValue {
1409
+ doc
1410
+ /*
1411
+ * source: item 4-30.1 mass flow (magnitude)
1412
+ * symbol(s): `j_m`
1413
+ * application domain: generic
1414
+ * name: MassFlow
1415
+ * quantity dimension: L^-2*M^1*T^-1
1416
+ * measurement unit(s): kg*m^-2*s^-1
1417
+ * tensor order: 0
1418
+ * definition: vector (ISO 80000-2) quantity characterizing a flowing fluid by the product of its local mass density `ρ` (item 4-2) and local velocity `vec(v)` (ISO 80000-3): `vec(j_m) = ρ vec(v)`
1419
+ * remarks: None.
1420
+ */
1421
+ attribute :>> num: Real;
1422
+ attribute :>> mRef: MassFlowUnit[1];
1423
+ }
1424
+
1425
+ attribute massFlow: MassFlowValue[*] nonunique :> scalarQuantities;
1426
+
1427
+ attribute def MassFlowUnit :> DerivedUnit {
1428
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1429
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1430
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1431
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1432
+ }
1433
+
1434
+ attribute def CartesianMassFlow3dVector :> '3dVectorQuantityValue' {
1435
+ doc
1436
+ /*
1437
+ * source: item 4-30.1 mass flow (vector)
1438
+ * symbol(s): `vec(j_m)`
1439
+ * application domain: generic
1440
+ * name: MassFlow
1441
+ * quantity dimension: L^-2*M^1*T^-1
1442
+ * measurement unit(s): kg*m^-2*s^-1
1443
+ * tensor order: 1
1444
+ * definition: vector (ISO 80000-2) quantity characterizing a flowing fluid by the product of its local mass density `ρ` (item 4-2) and local velocity `vec(v)` (ISO 80000-3): `vec(j_m) = ρ vec(v)`
1445
+ * remarks: None.
1446
+ */
1447
+ attribute :>> isBound = false;
1448
+ attribute :>> mRef: CartesianMassFlow3dCoordinateFrame[1];
1449
+ }
1450
+
1451
+ attribute cartesianMassFlow3dVector: CartesianMassFlow3dVector :> vectorQuantities;
1452
+
1453
+ attribute def CartesianMassFlow3dCoordinateFrame :> '3dCoordinateFrame' {
1454
+ attribute :>> isBound = false;
1455
+ attribute :>> isOrthogonal = true;
1456
+ attribute :>> mRefs: MassFlowUnit[3];
1457
+ }
1458
+
1459
+ /* ISO-80000-4 item 4-30.2 mass flow rate */
1460
+ attribute def MassFlowRateValue :> ScalarQuantityValue {
1461
+ doc
1462
+ /*
1463
+ * source: item 4-30.2 mass flow rate
1464
+ * symbol(s): `q_m`
1465
+ * application domain: generic
1466
+ * name: MassFlowRate
1467
+ * quantity dimension: M^1*T^-1
1468
+ * measurement unit(s): kg*s^-1
1469
+ * tensor order: 0
1470
+ * definition: scalar (ISO 80000-2) quantity characterizing the total flow through the two-dimensional domain `A` with normal vector `vec(e)_n` of a flowing fluid with mass flow `vec(j)_m` (item 4-30.1) as an integral: `q_m = int int_A vec(j)_m * vec(e)_n dA` where `dA` is the area (ISO 80000-3) of an element of the two-dimensional domain `A`
1471
+ * remarks: None.
1472
+ */
1473
+ attribute :>> num: Real;
1474
+ attribute :>> mRef: MassFlowRateUnit[1];
1475
+ }
1476
+
1477
+ attribute massFlowRate: MassFlowRateValue[*] nonunique :> scalarQuantities;
1478
+
1479
+ attribute def MassFlowRateUnit :> DerivedUnit {
1480
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1481
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1482
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1483
+ }
1484
+
1485
+ /* ISO-80000-4 item 4-30.3 mass change rate */
1486
+ attribute def MassChangeRateValue :> ScalarQuantityValue {
1487
+ doc
1488
+ /*
1489
+ * source: item 4-30.3 mass change rate
1490
+ * symbol(s): `q_m`
1491
+ * application domain: generic
1492
+ * name: MassChangeRate
1493
+ * quantity dimension: M^1*T^-1
1494
+ * measurement unit(s): kg*s^-1
1495
+ * tensor order: 0
1496
+ * definition: rate of increment of mass `m` (item 4-1): `q_m = (dm)/(dt)` where `dm` is the infinitesimal mass (item 4-1) increment and `dt` is the infinitesimal duration (ISO 80000-3)
1497
+ * remarks: None.
1498
+ */
1499
+ attribute :>> num: Real;
1500
+ attribute :>> mRef: MassChangeRateUnit[1];
1501
+ }
1502
+
1503
+ attribute massChangeRate: MassChangeRateValue[*] nonunique :> scalarQuantities;
1504
+
1505
+ attribute def MassChangeRateUnit :> DerivedUnit {
1506
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1507
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1508
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1509
+ }
1510
+
1511
+ /* ISO-80000-4 item 4-31 volume flow rate */
1512
+ attribute def VolumeFlowRateValue :> ScalarQuantityValue {
1513
+ doc
1514
+ /*
1515
+ * source: item 4-31 volume flow rate
1516
+ * symbol(s): `q_v`
1517
+ * application domain: generic
1518
+ * name: VolumeFlowRate
1519
+ * quantity dimension: L^3*T^-1
1520
+ * measurement unit(s): m^3*s^-1
1521
+ * tensor order: 0
1522
+ * definition: scalar (ISO 80000-2) quantity characterizing the total flow through the two-dimensional domain `A` with the normal vector `vec(e)_n` of a flowing fluid with velocity `vec(v)` (ISO 80000-3) as an integral: `q_v = int int_A vec(v) * vec(e)_n dA` where `dA` is the area (ISO 80000-3) of an element of the two-dimensional domain `A`
1523
+ * remarks: None.
1524
+ */
1525
+ attribute :>> num: Real;
1526
+ attribute :>> mRef: VolumeFlowRateUnit[1];
1527
+ }
1528
+
1529
+ attribute volumeFlowRate: VolumeFlowRateValue[*] nonunique :> scalarQuantities;
1530
+
1531
+ attribute def VolumeFlowRateUnit :> DerivedUnit {
1532
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
1533
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1534
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1535
+ }
1536
+
1537
+ /* ISO-80000-4 item 4-32 action quantity */
1538
+ attribute def ActionQuantityValue :> ScalarQuantityValue {
1539
+ doc
1540
+ /*
1541
+ * source: item 4-32 action quantity
1542
+ * symbol(s): `S`
1543
+ * application domain: generic
1544
+ * name: ActionQuantity
1545
+ * quantity dimension: L^2*M^1*T^-1
1546
+ * measurement unit(s): J*s, kg*m^2*s^-1
1547
+ * tensor order: 0
1548
+ * definition: time integral of energy `E` over a time interval `(t_1, t_2)`: `S = int_(t_1)^(t_2) E dt`
1549
+ * remarks: The energy may be expressed by a Lagrangian or Hamiltonian function. Note for SysML: the ISQ quantity "action" has been renamed to "action quantity" to avoid the name clash with the SysML action keyword.
1550
+ */
1551
+ attribute :>> num: Real;
1552
+ attribute :>> mRef: ActionQuantityUnit[1];
1553
+ }
1554
+
1555
+ attribute actionQuantity: ActionQuantityValue[*] nonunique :> scalarQuantities;
1556
+
1557
+ attribute def ActionQuantityUnit :> DerivedUnit {
1558
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1559
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1560
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1561
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1562
+ }
1563
+
1564
+ }