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,2333 @@
1
+ standard library package ISQElectromagnetism {
2
+ doc
3
+ /*
4
+ * International System of Quantities and Units
5
+ * Generated on 2025-03-13T15:00:05Z from standard IEC-80000-6:2008 "Electromagnetism"
6
+ * see also https://www.iso.org/obp/ui/#iso:std:iec:80000:-6:ed-1:v1:en,fr
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 ISQMechanics::PowerValue;
22
+ private import ISQSpaceTime::AngularMeasureValue;
23
+ private import ISQThermodynamics::EnergyValue;
24
+
25
+ /* IEC-80000-6 item 6-1 electric current */
26
+ /* See package ISQBase for the declarations of ElectricCurrentValue and ElectricCurrentUnit */
27
+
28
+ /* IEC-80000-6 item 6-2 electric charge */
29
+ attribute def ElectricChargeValue :> ScalarQuantityValue {
30
+ doc
31
+ /*
32
+ * source: item 6-2 electric charge
33
+ * symbol(s): `Q`, `q`
34
+ * application domain: generic
35
+ * name: ElectricCharge
36
+ * quantity dimension: T^1*I^1
37
+ * measurement unit(s): C
38
+ * tensor order: 0
39
+ * definition: `d(Q) = I dt` where `I` is electric current (item 6-1) and `t` is time (ISO 80000-3, item 3-7)
40
+ * remarks: Electric charge is carried by discrete particles and can be positive or negative. The sign convention is such that the elementary electric charge `e`, i.e. the charge of the proton, is positive. See IEC 60050-121, item121-11-01. To denote a point charge `q` is often used, and that is done in the present document.
41
+ */
42
+ attribute :>> num: Real;
43
+ attribute :>> mRef: ElectricChargeUnit[1];
44
+ }
45
+
46
+ attribute electricCharge: ElectricChargeValue[*] nonunique :> scalarQuantities;
47
+
48
+ attribute def ElectricChargeUnit :> DerivedUnit {
49
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
50
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
51
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (durationPF, electricCurrentPF); }
52
+ }
53
+
54
+ /* IEC-80000-6 item 6-3 electric charge density, volumic electric charge */
55
+ attribute def ElectricChargeDensityValue :> ScalarQuantityValue {
56
+ doc
57
+ /*
58
+ * source: item 6-3 electric charge density, volumic electric charge
59
+ * symbol(s): `ρ`, `ρ_V`
60
+ * application domain: generic
61
+ * name: ElectricChargeDensity
62
+ * quantity dimension: L^-3*T^1*I^1
63
+ * measurement unit(s): C/m^3
64
+ * tensor order: 0
65
+ * definition: `ρ = (dQ)/(dV)` where `Q` is electric charge (item 6-2) and `V` is volume (ISO 80000-3, item 3-4)
66
+ * remarks: See IEC 60050-121, item 121-11-07.
67
+ */
68
+ attribute :>> num: Real;
69
+ attribute :>> mRef: ElectricChargeDensityUnit[1];
70
+ }
71
+
72
+ attribute electricChargeDensity: ElectricChargeDensityValue[*] nonunique :> scalarQuantities;
73
+
74
+ attribute def ElectricChargeDensityUnit :> DerivedUnit {
75
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
76
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
77
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
78
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
79
+ }
80
+
81
+ alias VolumicElectricChargeUnit for ElectricChargeDensityUnit;
82
+ alias VolumicElectricChargeValue for ElectricChargeDensityValue;
83
+ alias volumicElectricCharge for electricChargeDensity;
84
+
85
+ /* IEC-80000-6 item 6-4 surface density of electric charge, areic electric charge */
86
+ attribute def SurfaceDensityOfElectricChargeValue :> ScalarQuantityValue {
87
+ doc
88
+ /*
89
+ * source: item 6-4 surface density of electric charge, areic electric charge
90
+ * symbol(s): `ρ_A`, `sigma`
91
+ * application domain: generic
92
+ * name: SurfaceDensityOfElectricCharge
93
+ * quantity dimension: L^-2*T^1*I^1
94
+ * measurement unit(s): C/m^2
95
+ * tensor order: 0
96
+ * definition: `ρ_A = (dQ)/(dA)` where `Q` is electric charge (item 6-2) and `A` is area (ISO 80000-3, item 3-3)`
97
+ * remarks: See IEC 60050-121, item 121-11-08.
98
+ */
99
+ attribute :>> num: Real;
100
+ attribute :>> mRef: SurfaceDensityOfElectricChargeUnit[1];
101
+ }
102
+
103
+ attribute surfaceDensityOfElectricCharge: SurfaceDensityOfElectricChargeValue[*] nonunique :> scalarQuantities;
104
+
105
+ attribute def SurfaceDensityOfElectricChargeUnit :> DerivedUnit {
106
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
107
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
108
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
109
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
110
+ }
111
+
112
+ alias AreicElectricChargeUnit for SurfaceDensityOfElectricChargeUnit;
113
+ alias AreicElectricChargeValue for SurfaceDensityOfElectricChargeValue;
114
+ alias areicElectricCharge for surfaceDensityOfElectricCharge;
115
+
116
+ /* IEC-80000-6 item 6-5 linear density of electric charge, lineic electric charge */
117
+ attribute def LinearDensityOfElectricChargeValue :> ScalarQuantityValue {
118
+ doc
119
+ /*
120
+ * source: item 6-5 linear density of electric charge, lineic electric charge
121
+ * symbol(s): `ρ_l`, `tau`
122
+ * application domain: generic
123
+ * name: LinearDensityOfElectricCharge
124
+ * quantity dimension: L^-1*T^1*I^1
125
+ * measurement unit(s): C/m
126
+ * tensor order: 0
127
+ * definition: `ρ_l = (dQ)/(dl)` where `Q` is electric charge (item 6-2) and `l` is length (ISO 80000-3, item 3-1.1)
128
+ * remarks: See IEC 60050-121, item121-11-09.
129
+ */
130
+ attribute :>> num: Real;
131
+ attribute :>> mRef: LinearDensityOfElectricChargeUnit[1];
132
+ }
133
+
134
+ attribute linearDensityOfElectricCharge: LinearDensityOfElectricChargeValue[*] nonunique :> scalarQuantities;
135
+
136
+ attribute def LinearDensityOfElectricChargeUnit :> DerivedUnit {
137
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
138
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
139
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
140
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
141
+ }
142
+
143
+ alias LineicElectricChargeUnit for LinearDensityOfElectricChargeUnit;
144
+ alias LineicElectricChargeValue for LinearDensityOfElectricChargeValue;
145
+ alias lineicElectricCharge for linearDensityOfElectricCharge;
146
+
147
+ /* IEC-80000-6 item 6-6 electric dipole moment */
148
+ attribute def ElectricDipoleMomentValue :> ScalarQuantityValue {
149
+ doc
150
+ /*
151
+ * source: item 6-6 electric dipole moment (magnitude)
152
+ * symbol(s): `p`
153
+ * application domain: generic
154
+ * name: ElectricDipoleMoment
155
+ * quantity dimension: L^1*T^1*I^1
156
+ * measurement unit(s): C*m
157
+ * tensor order: 0
158
+ * definition: `vec(p) = q (vec(r_+) - vec(r_-))` where `vec(r_+)` and `vec(r_-)` are the position vectors (ISO 80000-3, item 3-1.11) to carriers of electric charges `q` and `-q` (item 6-2), respectively
159
+ * remarks: The electric dipole moment of a substance within a domain is the vector sum of electric dipole moments of electric dipoles included in the domain. See IEC 60050-121, items 121-11-35 and 121-11-36.
160
+ */
161
+ attribute :>> num: Real;
162
+ attribute :>> mRef: ElectricDipoleMomentUnit[1];
163
+ }
164
+
165
+ attribute electricDipoleMoment: ElectricDipoleMomentValue[*] nonunique :> scalarQuantities;
166
+
167
+ attribute def ElectricDipoleMomentUnit :> DerivedUnit {
168
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
169
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
170
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
171
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
172
+ }
173
+
174
+ attribute def CartesianElectricDipoleMoment3dVector :> '3dVectorQuantityValue' {
175
+ doc
176
+ /*
177
+ * source: item 6-6 electric dipole moment (vector)
178
+ * symbol(s): `vec(p)`
179
+ * application domain: generic
180
+ * name: ElectricDipoleMoment
181
+ * quantity dimension: L^1*T^1*I^1
182
+ * measurement unit(s): C*m
183
+ * tensor order: 1
184
+ * definition: `vec(p) = q (vec(r_+) - vec(r_-))` where `vec(r_+)` and `vec(r_-)` are the position vectors (ISO 80000-3, item 3-1.11) to carriers of electric charges `q` and `-q` (item 6-2), respectively
185
+ * remarks: The electric dipole moment of a substance within a domain is the vector sum of electric dipole moments of electric dipoles included in the domain. See IEC 60050-121, items 121-11-35 and 121-11-36.
186
+ */
187
+ attribute :>> isBound = false;
188
+ attribute :>> mRef: CartesianElectricDipoleMoment3dCoordinateFrame[1];
189
+ }
190
+
191
+ attribute cartesianElectricDipoleMoment3dVector: CartesianElectricDipoleMoment3dVector :> vectorQuantities;
192
+
193
+ attribute def CartesianElectricDipoleMoment3dCoordinateFrame :> '3dCoordinateFrame' {
194
+ attribute :>> isBound = false;
195
+ attribute :>> isOrthogonal = true;
196
+ attribute :>> mRefs: ElectricDipoleMomentUnit[3];
197
+ }
198
+
199
+ /* IEC-80000-6 item 6-7 electric polarization */
200
+ attribute def ElectricPolarizationValue :> ScalarQuantityValue {
201
+ doc
202
+ /*
203
+ * source: item 6-7 electric polarization (magnitude)
204
+ * symbol(s): `P`
205
+ * application domain: generic
206
+ * name: ElectricPolarization
207
+ * quantity dimension: L^-2*T^1*I^1
208
+ * measurement unit(s): C/m^2
209
+ * tensor order: 0
210
+ * definition: `vec(P) = (d vec(p))/(dV)` where `vec(p)` is electric dipole moment (item 6-6) of a substance within a domain with volume `V` (ISO 80000-3, item 3-4)
211
+ * remarks: See IEC 60050-121, item 121-11-37.
212
+ */
213
+ attribute :>> num: Real;
214
+ attribute :>> mRef: ElectricPolarizationUnit[1];
215
+ }
216
+
217
+ attribute electricPolarization: ElectricPolarizationValue[*] nonunique :> scalarQuantities;
218
+
219
+ attribute def ElectricPolarizationUnit :> DerivedUnit {
220
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
221
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
222
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
223
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
224
+ }
225
+
226
+ attribute def CartesianElectricPolarization3dVector :> '3dVectorQuantityValue' {
227
+ doc
228
+ /*
229
+ * source: item 6-7 electric polarization (vector)
230
+ * symbol(s): `vec(P)`
231
+ * application domain: generic
232
+ * name: ElectricPolarization
233
+ * quantity dimension: L^-2*T^1*I^1
234
+ * measurement unit(s): C/m^2
235
+ * tensor order: 1
236
+ * definition: `vec(P) = (d vec(p))/(dV)` where `vec(p)` is electric dipole moment (item 6-6) of a substance within a domain with volume `V` (ISO 80000-3, item 3-4)
237
+ * remarks: See IEC 60050-121, item 121-11-37.
238
+ */
239
+ attribute :>> isBound = false;
240
+ attribute :>> mRef: CartesianElectricPolarization3dCoordinateFrame[1];
241
+ }
242
+
243
+ attribute cartesianElectricPolarization3dVector: CartesianElectricPolarization3dVector :> vectorQuantities;
244
+
245
+ attribute def CartesianElectricPolarization3dCoordinateFrame :> '3dCoordinateFrame' {
246
+ attribute :>> isBound = false;
247
+ attribute :>> isOrthogonal = true;
248
+ attribute :>> mRefs: ElectricPolarizationUnit[3];
249
+ }
250
+
251
+ /* IEC-80000-6 item 6-8 electric current density, areic electric current */
252
+ attribute def ElectricCurrentDensityValue :> ScalarQuantityValue {
253
+ doc
254
+ /*
255
+ * source: item 6-8 electric current density, areic electric current (magnitude)
256
+ * symbol(s): `J`
257
+ * application domain: generic
258
+ * name: ElectricCurrentDensity
259
+ * quantity dimension: L^-2*I^1
260
+ * measurement unit(s): A/m^2
261
+ * tensor order: 0
262
+ * definition: `vec(J) = ρ vec(v)` where `ρ` is electric charge density (item 6-3) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1)
263
+ * remarks: Electric current `I` (item 6-1) through a surface `S` is `I = int_S vec(J) * vec(e_n) dA` where `vec(e_n) dA` is vector surface element. See IEC 60050-121, item 121-11-11.
264
+ */
265
+ attribute :>> num: Real;
266
+ attribute :>> mRef: ElectricCurrentDensityUnit[1];
267
+ }
268
+
269
+ attribute electricCurrentDensity: ElectricCurrentDensityValue[*] nonunique :> scalarQuantities;
270
+
271
+ attribute def ElectricCurrentDensityUnit :> DerivedUnit {
272
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
273
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
274
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
275
+ }
276
+
277
+ attribute def CartesianElectricCurrentDensity3dVector :> '3dVectorQuantityValue' {
278
+ doc
279
+ /*
280
+ * source: item 6-8 electric current density, areic electric current (vector)
281
+ * symbol(s): `vec(J)`
282
+ * application domain: generic
283
+ * name: ElectricCurrentDensity
284
+ * quantity dimension: L^-2*I^1
285
+ * measurement unit(s): A/m^2
286
+ * tensor order: 1
287
+ * definition: `vec(J) = ρ vec(v)` where `ρ` is electric charge density (item 6-3) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1)
288
+ * remarks: Electric current `I` (item 6-1) through a surface `S` is `I = int_S vec(J) * vec(e_n) dA` where `vec(e_n) dA` is vector surface element. See IEC 60050-121, item 121-11-11.
289
+ */
290
+ attribute :>> isBound = false;
291
+ attribute :>> mRef: CartesianElectricCurrentDensity3dCoordinateFrame[1];
292
+ }
293
+
294
+ attribute cartesianElectricCurrentDensity3dVector: CartesianElectricCurrentDensity3dVector :> vectorQuantities;
295
+
296
+ attribute def CartesianElectricCurrentDensity3dCoordinateFrame :> '3dCoordinateFrame' {
297
+ attribute :>> isBound = false;
298
+ attribute :>> isOrthogonal = true;
299
+ attribute :>> mRefs: ElectricCurrentDensityUnit[3];
300
+ }
301
+
302
+ alias CartesianAreicElectricCurrent3dCoordinateFrame for CartesianElectricCurrentDensity3dCoordinateFrame;
303
+ alias cartesianAreicElectricCurrent3dVector for cartesianElectricCurrentDensity3dVector;
304
+
305
+ /* IEC-80000-6 item 6-9 linear electric current density, lineic electric current */
306
+ attribute def LinearElectricCurrentDensityValue :> ScalarQuantityValue {
307
+ doc
308
+ /*
309
+ * source: item 6-9 linear electric current density, lineic electric current (magnitude)
310
+ * symbol(s): `J_S`
311
+ * application domain: generic
312
+ * name: LinearElectricCurrentDensity
313
+ * quantity dimension: L^-1*I^1
314
+ * measurement unit(s): A/m
315
+ * tensor order: 0
316
+ * definition: `vec(J_S) = ρ_A vec(v)` where `ρ_A` is surface density of electric charge (item 6-4) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1)
317
+ * remarks: Electric current `I` (item 6-1) through a curve `C` on a surface is `I = int_C vec(J_S) xx vec(e_n) * d vec(r)` where `vec(e_n)` is a unit vector perpendicular to the surface and line vector element and `d vec(r)` is the differential of position vector `vec(r)`. See IEC 60050-121, item 121-11-12.
318
+ */
319
+ attribute :>> num: Real;
320
+ attribute :>> mRef: LinearElectricCurrentDensityUnit[1];
321
+ }
322
+
323
+ attribute linearElectricCurrentDensity: LinearElectricCurrentDensityValue[*] nonunique :> scalarQuantities;
324
+
325
+ attribute def LinearElectricCurrentDensityUnit :> DerivedUnit {
326
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
327
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
328
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
329
+ }
330
+
331
+ attribute def CartesianLinearElectricCurrentDensity3dVector :> '3dVectorQuantityValue' {
332
+ doc
333
+ /*
334
+ * source: item 6-9 linear electric current density, lineic electric current (vector)
335
+ * symbol(s): `vec(J_S)`
336
+ * application domain: generic
337
+ * name: LinearElectricCurrentDensity
338
+ * quantity dimension: L^-1*I^1
339
+ * measurement unit(s): A/m
340
+ * tensor order: 1
341
+ * definition: `vec(J_S) = ρ_A vec(v)` where `ρ_A` is surface density of electric charge (item 6-4) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1)
342
+ * remarks: Electric current `I` (item 6-1) through a curve `C` on a surface is `I = int_C vec(J_S) xx vec(e_n) * d vec(r)` where `vec(e_n)` is a unit vector perpendicular to the surface and line vector element and `d vec(r)` is the differential of position vector `vec(r)`. See IEC 60050-121, item 121-11-12.
343
+ */
344
+ attribute :>> isBound = false;
345
+ attribute :>> mRef: CartesianLinearElectricCurrentDensity3dCoordinateFrame[1];
346
+ }
347
+
348
+ attribute cartesianLinearElectricCurrentDensity3dVector: CartesianLinearElectricCurrentDensity3dVector :> vectorQuantities;
349
+
350
+ attribute def CartesianLinearElectricCurrentDensity3dCoordinateFrame :> '3dCoordinateFrame' {
351
+ attribute :>> isBound = false;
352
+ attribute :>> isOrthogonal = true;
353
+ attribute :>> mRefs: LinearElectricCurrentDensityUnit[3];
354
+ }
355
+
356
+ alias CartesianLineicElectricCurrent3dCoordinateFrame for CartesianLinearElectricCurrentDensity3dCoordinateFrame;
357
+ alias cartesianLineicElectricCurrent3dVector for cartesianLinearElectricCurrentDensity3dVector;
358
+
359
+ /* IEC-80000-6 item 6-10 electric field strength */
360
+ attribute def ElectricFieldStrengthValue :> ScalarQuantityValue {
361
+ doc
362
+ /*
363
+ * source: item 6-10 electric field strength (magnitude)
364
+ * symbol(s): `E`
365
+ * application domain: generic
366
+ * name: ElectricFieldStrength
367
+ * quantity dimension: L^1*M^1*T^-3*I^-1
368
+ * measurement unit(s): V/m
369
+ * tensor order: 0
370
+ * definition: `vec(E) = vec(F)/q` where `vec(F)` is force (ISO 80000-4, item 4-9.1) and `q` is electric charge (item 6-2)
371
+ * remarks: See IEC 60050, item 121-11-18. `q` is the charge of a test particle at rest.
372
+ */
373
+ attribute :>> num: Real;
374
+ attribute :>> mRef: ElectricFieldStrengthUnit[1];
375
+ }
376
+
377
+ attribute electricFieldStrength: ElectricFieldStrengthValue[*] nonunique :> scalarQuantities;
378
+
379
+ attribute def ElectricFieldStrengthUnit :> DerivedUnit {
380
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
381
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
382
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
383
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
384
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
385
+ }
386
+
387
+ attribute def CartesianElectricFieldStrength3dVector :> '3dVectorQuantityValue' {
388
+ doc
389
+ /*
390
+ * source: item 6-10 electric field strength (vector)
391
+ * symbol(s): `vec(E)`
392
+ * application domain: generic
393
+ * name: ElectricFieldStrength
394
+ * quantity dimension: L^1*M^1*T^-3*I^-1
395
+ * measurement unit(s): V/m
396
+ * tensor order: 1
397
+ * definition: `vec(E) = vec(F)/q` where `vec(F)` is force (ISO 80000-4, item 4-9.1) and `q` is electric charge (item 6-2)
398
+ * remarks: See IEC 60050, item 121-11-18. `q` is the charge of a test particle at rest.
399
+ */
400
+ attribute :>> isBound = false;
401
+ attribute :>> mRef: CartesianElectricFieldStrength3dCoordinateFrame[1];
402
+ }
403
+
404
+ attribute cartesianElectricFieldStrength3dVector: CartesianElectricFieldStrength3dVector :> vectorQuantities;
405
+
406
+ attribute def CartesianElectricFieldStrength3dCoordinateFrame :> '3dCoordinateFrame' {
407
+ attribute :>> isBound = false;
408
+ attribute :>> isOrthogonal = true;
409
+ attribute :>> mRefs: ElectricFieldStrengthUnit[3];
410
+ }
411
+
412
+ /* IEC-80000-6 item 6-11.1 electric potential */
413
+ attribute def ElectricPotentialValue :> ScalarQuantityValue {
414
+ doc
415
+ /*
416
+ * source: item 6-11.1 electric potential
417
+ * symbol(s): `V`, `φ`
418
+ * application domain: generic
419
+ * name: ElectricPotential
420
+ * quantity dimension: L^2*M^1*T^-3*I^-1
421
+ * measurement unit(s): V
422
+ * tensor order: 0
423
+ * definition: `-grad(V) = vec(E) + (del A)/(del t)` where `vec(E)` is electric field strength (item 610), `A` is magnetic vector potential (item 6-32) and `t` is time (ISO 80000-3, item 3-7)
424
+ * remarks: The electric potential is not unique, since any constant scalar field quantity can be added to it without changing its gradient. See IEC 60050-121, item 121-11-25.
425
+ */
426
+ attribute :>> num: Real;
427
+ attribute :>> mRef: ElectricPotentialUnit[1];
428
+ }
429
+
430
+ attribute electricPotential: ElectricPotentialValue[*] nonunique :> scalarQuantities;
431
+
432
+ attribute def ElectricPotentialUnit :> DerivedUnit {
433
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
434
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
435
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
436
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
437
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
438
+ }
439
+
440
+ /* IEC-80000-6 item 6-11.2 electric potential difference */
441
+ attribute def ElectricPotentialDifferenceValue :> ScalarQuantityValue {
442
+ doc
443
+ /*
444
+ * source: item 6-11.2 electric potential difference
445
+ * symbol(s): `V_(ab)`
446
+ * application domain: generic
447
+ * name: ElectricPotentialDifference
448
+ * quantity dimension: L^2*M^1*T^-3*I^-1
449
+ * measurement unit(s): V
450
+ * tensor order: 0
451
+ * definition: `V_(ab) = int_(vec(r_a))^(vec(r_b)) (vec(E) + (del A)/(del t)) * d vec(r)` where `vec(E)` is electric field strength (item 610), `A` is magnetic vector potential (item 6-32), `t` is time (ISO 80000-3, item 3-7), and `vec(r)` is position vector (ISO 80000-3, item 3-1.11) along a given curve `C` from point `a` to point `b`
452
+ * remarks: `V_(ab) = V_a - V_b` where `V_a` and `V_b` are the potentials at points `a` and `b`, respectively. See IEC 60050-121, item 121-11-26.
453
+ */
454
+ attribute :>> num: Real;
455
+ attribute :>> mRef: ElectricPotentialDifferenceUnit[1];
456
+ }
457
+
458
+ attribute electricPotentialDifference: ElectricPotentialDifferenceValue[*] nonunique :> scalarQuantities;
459
+
460
+ attribute def ElectricPotentialDifferenceUnit :> DerivedUnit {
461
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
462
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
463
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
464
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
465
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
466
+ }
467
+
468
+ /* IEC-80000-6 item 6-11.3 voltage, electric tension */
469
+ attribute voltage: ElectricPotentialDifferenceValue :> scalarQuantities {
470
+ doc
471
+ /*
472
+ * source: item 6-11.3 voltage, electric tension
473
+ * symbol(s): `U`, `U_(ab)`
474
+ * application domain: generic
475
+ * name: Voltage (specializes ElectricPotentialDifference)
476
+ * quantity dimension: L^2*M^1*T^-3*I^-1
477
+ * measurement unit(s): V
478
+ * tensor order: 0
479
+ * definition: in electric circuit theory, `U_(ab) = V_a - V_b` where `V_a` and `V_b` are the electric potentials (item 6-11.1) at points `a` and `b`, respectively
480
+ * remarks: For an electric field within a medium `U_(ab) = int_(vec(r_a) (C))^(vec(r_b)) vec(E) * d vec(r)` where `vec(E)` is electric field strength (item 6-10) and `vec(r)` is position vector (ISO 80000-3, item 3-1.11) along a given curve `C` from point `a` to point `b`. For an irrotational electric field, the voltage is independent of the path between the two points `a` and `b`. See IEC 60050-121, item 121-11-27.
481
+ */
482
+ }
483
+
484
+ alias electricTension for voltage;
485
+
486
+ /* IEC-80000-6 item 6-12 electric flux density, electric displacement */
487
+ attribute def ElectricFluxDensityValue :> ScalarQuantityValue {
488
+ doc
489
+ /*
490
+ * source: item 6-12 electric flux density, electric displacement (magnitude)
491
+ * symbol(s): `D`
492
+ * application domain: generic
493
+ * name: ElectricFluxDensity
494
+ * quantity dimension: L^-2*T^1*I^1
495
+ * measurement unit(s): C/m^2
496
+ * tensor order: 0
497
+ * definition: `vec(D) = ε_0 vec(E) + vec(P)` where `ε_0` is the electric constant (item 6-14.1 ), `vec(E)` is electric field strength (item 6-10), and `vec(P)` is electric polarization (item 6-7)
498
+ * remarks: The electric flux density is related to electric charge density via `nabla * vec(D) = ρ` where `nabla * vec(D)` denotes the divergence of `vec(D)`. See IEC 60050-121, item 121-11-40.
499
+ */
500
+ attribute :>> num: Real;
501
+ attribute :>> mRef: ElectricFluxDensityUnit[1];
502
+ }
503
+
504
+ attribute electricFluxDensity: ElectricFluxDensityValue[*] nonunique :> scalarQuantities;
505
+
506
+ attribute def ElectricFluxDensityUnit :> DerivedUnit {
507
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
508
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
509
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
510
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF, electricCurrentPF); }
511
+ }
512
+
513
+ attribute def CartesianElectricFluxDensity3dVector :> '3dVectorQuantityValue' {
514
+ doc
515
+ /*
516
+ * source: item 6-12 electric flux density, electric displacement (vector)
517
+ * symbol(s): `vec(D)`
518
+ * application domain: generic
519
+ * name: ElectricFluxDensity
520
+ * quantity dimension: L^-2*T^1*I^1
521
+ * measurement unit(s): C/m^2
522
+ * tensor order: 1
523
+ * definition: `vec(D) = ε_0 vec(E) + vec(P)` where `ε_0` is the electric constant (item 6-14.1 ), `vec(E)` is electric field strength (item 6-10), and `vec(P)` is electric polarization (item 6-7)
524
+ * remarks: The electric flux density is related to electric charge density via `nabla * vec(D) = ρ` where `nabla * vec(D)` denotes the divergence of `vec(D)`. See IEC 60050-121, item 121-11-40.
525
+ */
526
+ attribute :>> isBound = false;
527
+ attribute :>> mRef: CartesianElectricFluxDensity3dCoordinateFrame[1];
528
+ }
529
+
530
+ attribute cartesianElectricFluxDensity3dVector: CartesianElectricFluxDensity3dVector :> vectorQuantities;
531
+
532
+ attribute def CartesianElectricFluxDensity3dCoordinateFrame :> '3dCoordinateFrame' {
533
+ attribute :>> isBound = false;
534
+ attribute :>> isOrthogonal = true;
535
+ attribute :>> mRefs: ElectricFluxDensityUnit[3];
536
+ }
537
+
538
+ alias CartesianElectricDisplacement3dCoordinateFrame for CartesianElectricFluxDensity3dCoordinateFrame;
539
+ alias cartesianElectricDisplacement3dVector for cartesianElectricFluxDensity3dVector;
540
+
541
+ /* IEC-80000-6 item 6-13 capacitance */
542
+ attribute def CapacitanceValue :> ScalarQuantityValue {
543
+ doc
544
+ /*
545
+ * source: item 6-13 capacitance
546
+ * symbol(s): `C`
547
+ * application domain: generic
548
+ * name: Capacitance
549
+ * quantity dimension: L^-2*M^-1*T^4*I^2
550
+ * measurement unit(s): F
551
+ * tensor order: 0
552
+ * definition: `C = Q/U` where `Q` is electric charge (item 6-2) and `U` is voltage (6-11.3)
553
+ * remarks: See IEC 60050-131, item 131-12-13.
554
+ */
555
+ attribute :>> num: Real;
556
+ attribute :>> mRef: CapacitanceUnit[1];
557
+ }
558
+
559
+ attribute capacitance: CapacitanceValue[*] nonunique :> scalarQuantities;
560
+
561
+ attribute def CapacitanceUnit :> DerivedUnit {
562
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
563
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
564
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 4; }
565
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
566
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
567
+ }
568
+
569
+ /* IEC-80000-6 item 6-14.1 electric constant, permittivity of vacuum */
570
+ attribute def ElectricConstantValue :> ScalarQuantityValue {
571
+ doc
572
+ /*
573
+ * source: item 6-14.1 electric constant, permittivity of vacuum
574
+ * symbol(s): `ε_0`
575
+ * application domain: generic
576
+ * name: ElectricConstant
577
+ * quantity dimension: L^-3*M^-1*T^4*I^2
578
+ * measurement unit(s): F/m
579
+ * tensor order: 0
580
+ * definition: `ε_0 = 1 / (μ_0 * c_0^2)` where `μ_0` is the magnetic constant (item 6-26.1) and `c_0` is the speed of light (item 6-35.2)
581
+ * remarks: `ε_0 = 8.854188 * 10^-12` F/m. See IEC 60050-121, item 121-11-03.
582
+ */
583
+ attribute :>> num: Real;
584
+ attribute :>> mRef: ElectricConstantUnit[1];
585
+ }
586
+
587
+ attribute electricConstant: ElectricConstantValue[*] nonunique :> scalarQuantities;
588
+
589
+ attribute def ElectricConstantUnit :> DerivedUnit {
590
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
591
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
592
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 4; }
593
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
594
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
595
+ }
596
+
597
+ alias PermittivityOfVacuumUnit for ElectricConstantUnit;
598
+ alias PermittivityOfVacuumValue for ElectricConstantValue;
599
+ alias permittivityOfVacuum for electricConstant;
600
+
601
+ /* IEC-80000-6 item 6-14.2 permittivity */
602
+ attribute def PermittivityValue :> ScalarQuantityValue {
603
+ doc
604
+ /*
605
+ * source: item 6-14.2 permittivity
606
+ * symbol(s): `ε`
607
+ * application domain: generic
608
+ * name: Permittivity
609
+ * quantity dimension: L^-3*M^-1*T^4*I^2
610
+ * measurement unit(s): F/m
611
+ * tensor order: 0
612
+ * definition: `vec(D) = ε vec(E)` where `vec(D)` is electric flux density (item 6-12) and `vec(E)` is electric field strength (item 6-10)
613
+ * remarks: This definition applies to an isotropic medium. For an anisotropic medium, permittivity is a second order tensor. See IEC 60050-121, item 121-12-12.
614
+ */
615
+ attribute :>> num: Real;
616
+ attribute :>> mRef: PermittivityUnit[1];
617
+ }
618
+
619
+ attribute permittivity: PermittivityValue[*] nonunique :> scalarQuantities;
620
+
621
+ attribute def PermittivityUnit :> DerivedUnit {
622
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
623
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
624
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 4; }
625
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
626
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
627
+ }
628
+
629
+ /* IEC-80000-6 item 6-15 relative permittivity */
630
+ attribute def RelativePermittivityValue :> DimensionOneValue {
631
+ doc
632
+ /*
633
+ * source: item 6-15 relative permittivity
634
+ * symbol(s): `ε_r`
635
+ * application domain: generic
636
+ * name: RelativePermittivity (specializes DimensionOneQuantity)
637
+ * quantity dimension: 1
638
+ * measurement unit(s): 1
639
+ * tensor order: 0
640
+ * definition: `ε_r = ε / ε_0` where `ε` is permittivity (item 6-14.2) and `ε_0` is the electric constant (item 6-14.1)
641
+ * remarks: See IEC 60050-121, item 121-12-13.
642
+ */
643
+ }
644
+ attribute relativePermittivity: RelativePermittivityValue :> scalarQuantities;
645
+
646
+ /* IEC-80000-6 item 6-16 electric susceptibility */
647
+ attribute def ElectricSusceptibilityValue :> DimensionOneValue {
648
+ doc
649
+ /*
650
+ * source: item 6-16 electric susceptibility
651
+ * symbol(s): `χ`
652
+ * application domain: generic
653
+ * name: ElectricSusceptibility (specializes DimensionOneQuantity)
654
+ * quantity dimension: 1
655
+ * measurement unit(s): 1
656
+ * tensor order: 0
657
+ * definition: `vec(P) = ε_0 χ vec(E)` where `vec(P)` is electric polarization (item 6-7), `ε_0` is the electric constant (item 6-14. 1) and `vec(E)` is electric field strength (item 6-10)
658
+ * remarks: `χ = ε_r - 1`. The definition applies to an isotropic medium. For an anisotropic medium, electric susceptibility is a second order tensor. See IEC 60050-121, item 121-12-19.
659
+ */
660
+ }
661
+ attribute electricSusceptibility: ElectricSusceptibilityValue :> scalarQuantities;
662
+
663
+ /* IEC-80000-6 item 6-17 electric flux */
664
+ attribute def ElectricFluxValue :> ScalarQuantityValue {
665
+ doc
666
+ /*
667
+ * source: item 6-17 electric flux
668
+ * symbol(s): `Ψ`
669
+ * application domain: generic
670
+ * name: ElectricFlux
671
+ * quantity dimension: T^1*I^1
672
+ * measurement unit(s): C
673
+ * tensor order: 0
674
+ * definition: `Ψ = int_S vec(D) * vec(e_n) dA` over a surface `S`, where `vec(D)` is electric flux (item 6-12) en `vec(e_n) dA` is the vector surface element (ISO 80000-3 item 3-3)
675
+ * remarks: See IEC 60050-121, item 121-11-41.
676
+ */
677
+ attribute :>> num: Real;
678
+ attribute :>> mRef: ElectricFluxUnit[1];
679
+ }
680
+
681
+ attribute electricFlux: ElectricFluxValue[*] nonunique :> scalarQuantities;
682
+
683
+ attribute def ElectricFluxUnit :> DerivedUnit {
684
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
685
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
686
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (durationPF, electricCurrentPF); }
687
+ }
688
+
689
+ /* IEC-80000-6 item 6-18 displacement current density */
690
+ attribute def DisplacementCurrentDensityValue :> ScalarQuantityValue {
691
+ doc
692
+ /*
693
+ * source: item 6-18 displacement current density (magnitude)
694
+ * symbol(s): `J_D`
695
+ * application domain: generic
696
+ * name: DisplacementCurrentDensity
697
+ * quantity dimension: L^-2*I^1
698
+ * measurement unit(s): A/m^2
699
+ * tensor order: 0
700
+ * definition: `vec(J_D) = (del vec(D))/(del t)` where `vec(D)` is electric flux density (item 6-12) and `t` is time (ISO 80000-3, item 3-7)
701
+ * remarks: See IEC 60050-121, item 121-11-42.
702
+ */
703
+ attribute :>> num: Real;
704
+ attribute :>> mRef: DisplacementCurrentDensityUnit[1];
705
+ }
706
+
707
+ attribute displacementCurrentDensity: DisplacementCurrentDensityValue[*] nonunique :> scalarQuantities;
708
+
709
+ attribute def DisplacementCurrentDensityUnit :> DerivedUnit {
710
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
711
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
712
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
713
+ }
714
+
715
+ attribute def CartesianDisplacementCurrentDensity3dVector :> '3dVectorQuantityValue' {
716
+ doc
717
+ /*
718
+ * source: item 6-18 displacement current density (vector)
719
+ * symbol(s): `vec(J_D)`
720
+ * application domain: generic
721
+ * name: DisplacementCurrentDensity
722
+ * quantity dimension: L^-2*I^1
723
+ * measurement unit(s): A/m^2
724
+ * tensor order: 1
725
+ * definition: `vec(J_D) = (del vec(D))/(del t)` where `vec(D)` is electric flux density (item 6-12) and `t` is time (ISO 80000-3, item 3-7)
726
+ * remarks: See IEC 60050-121, item 121-11-42.
727
+ */
728
+ attribute :>> isBound = false;
729
+ attribute :>> mRef: CartesianDisplacementCurrentDensity3dCoordinateFrame[1];
730
+ }
731
+
732
+ attribute cartesianDisplacementCurrentDensity3dVector: CartesianDisplacementCurrentDensity3dVector :> vectorQuantities;
733
+
734
+ attribute def CartesianDisplacementCurrentDensity3dCoordinateFrame :> '3dCoordinateFrame' {
735
+ attribute :>> isBound = false;
736
+ attribute :>> isOrthogonal = true;
737
+ attribute :>> mRefs: DisplacementCurrentDensityUnit[3];
738
+ }
739
+
740
+ /* IEC-80000-6 item 6-19.1 displacement current */
741
+ attribute displacementCurrent: ElectricCurrentValue :> scalarQuantities {
742
+ doc
743
+ /*
744
+ * source: item 6-19.1 displacement current
745
+ * symbol(s): `I_D`
746
+ * application domain: generic
747
+ * name: DisplacementCurrent (specializes ElectricCurrent)
748
+ * quantity dimension: I^1
749
+ * measurement unit(s): A
750
+ * tensor order: 0
751
+ * definition: `I = int_S vec(J_D) * vec(e_n) dA` over a surface `S`, where `vec(J_D)` is displacement current density (item 6-18) en `vec(e_n) dA` is the vector surface element (ISO 80000-3 item 3-3)
752
+ * remarks: See IEC 60050-121, item 121-11-43.
753
+ */
754
+ }
755
+
756
+ /* IEC-80000-6 item 6-19.2 total current */
757
+ attribute totalCurrent: ElectricCurrentValue :> scalarQuantities {
758
+ doc
759
+ /*
760
+ * source: item 6-19.2 total current
761
+ * symbol(s): `I_"tot"`, `I_t`
762
+ * application domain: generic
763
+ * name: TotalCurrent (specializes ElectricCurrent)
764
+ * quantity dimension: I^1
765
+ * measurement unit(s): A
766
+ * tensor order: 0
767
+ * definition: `I_(tot) = I + I_D` where `I` is electric current (item 6-1) and `I_D` is displacement current (item 6-19.1)
768
+ * remarks: See IEC 60050-121, item 121-11-45.
769
+ */
770
+ }
771
+
772
+ /* IEC-80000-6 item 6-20 total current density */
773
+ attribute def TotalCurrentDensityValue :> ScalarQuantityValue {
774
+ doc
775
+ /*
776
+ * source: item 6-20 total current density (magnitude)
777
+ * symbol(s): `J_"tot"`, `J_t`
778
+ * application domain: generic
779
+ * name: TotalCurrentDensity
780
+ * quantity dimension: L^-2*I^1
781
+ * measurement unit(s): A/m^2
782
+ * tensor order: 0
783
+ * definition: `vec(J_(tot)) = vec(J) +vec(J_D)` where `vec(J)` is electric current density (item 6-8) and `vec(J_D)` is displacement current density (item 6-18)
784
+ * remarks: See IEC 60050-121, item 121-11-44.
785
+ */
786
+ attribute :>> num: Real;
787
+ attribute :>> mRef: TotalCurrentDensityUnit[1];
788
+ }
789
+
790
+ attribute totalCurrentDensity: TotalCurrentDensityValue[*] nonunique :> scalarQuantities;
791
+
792
+ attribute def TotalCurrentDensityUnit :> DerivedUnit {
793
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
794
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
795
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
796
+ }
797
+
798
+ attribute def CartesianTotalCurrentDensity3dVector :> '3dVectorQuantityValue' {
799
+ doc
800
+ /*
801
+ * source: item 6-20 total current density (vector)
802
+ * symbol(s): `vec(J_"tot")`, `vec(J_t)`
803
+ * application domain: generic
804
+ * name: TotalCurrentDensity
805
+ * quantity dimension: L^-2*I^1
806
+ * measurement unit(s): A/m^2
807
+ * tensor order: 1
808
+ * definition: `vec(J_(tot)) = vec(J) +vec(J_D)` where `vec(J)` is electric current density (item 6-8) and `vec(J_D)` is displacement current density (item 6-18)
809
+ * remarks: See IEC 60050-121, item 121-11-44.
810
+ */
811
+ attribute :>> isBound = false;
812
+ attribute :>> mRef: CartesianTotalCurrentDensity3dCoordinateFrame[1];
813
+ }
814
+
815
+ attribute cartesianTotalCurrentDensity3dVector: CartesianTotalCurrentDensity3dVector :> vectorQuantities;
816
+
817
+ attribute def CartesianTotalCurrentDensity3dCoordinateFrame :> '3dCoordinateFrame' {
818
+ attribute :>> isBound = false;
819
+ attribute :>> isOrthogonal = true;
820
+ attribute :>> mRefs: TotalCurrentDensityUnit[3];
821
+ }
822
+
823
+ /* IEC-80000-6 item 6-21 magnetic flux density */
824
+ attribute def MagneticFluxDensityValue :> ScalarQuantityValue {
825
+ doc
826
+ /*
827
+ * source: item 6-21 magnetic flux density (magnitude)
828
+ * symbol(s): `B`
829
+ * application domain: generic
830
+ * name: MagneticFluxDensity
831
+ * quantity dimension: M^1*T^-2*I^-1
832
+ * measurement unit(s): T
833
+ * tensor order: 0
834
+ * definition: `vec(F) = q vec(v) xx vec(B)` where `vec(F)` is force (ISO 80000-4, item 4-9.1) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1) of any test particle with electric charge `q` (item 6-2)
835
+ * remarks: The magnetic flux density has zero divergence, `nabla * vec(B) = 0`. See IEC 60050-121, item 121-11-19.
836
+ */
837
+ attribute :>> num: Real;
838
+ attribute :>> mRef: MagneticFluxDensityUnit[1];
839
+ }
840
+
841
+ attribute magneticFluxDensity: MagneticFluxDensityValue[*] nonunique :> scalarQuantities;
842
+
843
+ attribute def MagneticFluxDensityUnit :> DerivedUnit {
844
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
845
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
846
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
847
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
848
+ }
849
+
850
+ attribute def CartesianMagneticFluxDensity3dVector :> '3dVectorQuantityValue' {
851
+ doc
852
+ /*
853
+ * source: item 6-21 magnetic flux density (vector)
854
+ * symbol(s): `vec(B)`
855
+ * application domain: generic
856
+ * name: MagneticFluxDensity
857
+ * quantity dimension: M^1*T^-2*I^-1
858
+ * measurement unit(s): T
859
+ * tensor order: 1
860
+ * definition: `vec(F) = q vec(v) xx vec(B)` where `vec(F)` is force (ISO 80000-4, item 4-9.1) and `vec(v)` is velocity (ISO 80000-3, item 3-8.1) of any test particle with electric charge `q` (item 6-2)
861
+ * remarks: The magnetic flux density has zero divergence, `nabla * vec(B) = 0`. See IEC 60050-121, item 121-11-19.
862
+ */
863
+ attribute :>> isBound = false;
864
+ attribute :>> mRef: CartesianMagneticFluxDensity3dCoordinateFrame[1];
865
+ }
866
+
867
+ attribute cartesianMagneticFluxDensity3dVector: CartesianMagneticFluxDensity3dVector :> vectorQuantities;
868
+
869
+ attribute def CartesianMagneticFluxDensity3dCoordinateFrame :> '3dCoordinateFrame' {
870
+ attribute :>> isBound = false;
871
+ attribute :>> isOrthogonal = true;
872
+ attribute :>> mRefs: MagneticFluxDensityUnit[3];
873
+ }
874
+
875
+ /* IEC-80000-6 item 6-22.1 magnetic flux */
876
+ attribute def MagneticFluxValue :> ScalarQuantityValue {
877
+ doc
878
+ /*
879
+ * source: item 6-22.1 magnetic flux
880
+ * symbol(s): `Φ`
881
+ * application domain: generic
882
+ * name: MagneticFlux
883
+ * quantity dimension: L^2*M^1*T^-2*I^-1
884
+ * measurement unit(s): Wb
885
+ * tensor order: 0
886
+ * definition: `Φ = int_S vec(B) * vec(e_n) dA` over a surface `S`, where `vec(B)` is magnetic flux density (item 6-21) and `vec(e_n) dA` is vector surface element (ISO 80000-3, item 3-3)
887
+ * remarks: See IEC 60050-121, item 121-11-21.
888
+ */
889
+ attribute :>> num: Real;
890
+ attribute :>> mRef: MagneticFluxUnit[1];
891
+ }
892
+
893
+ attribute magneticFlux: MagneticFluxValue[*] nonunique :> scalarQuantities;
894
+
895
+ attribute def MagneticFluxUnit :> DerivedUnit {
896
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
897
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
898
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
899
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
900
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
901
+ }
902
+
903
+ /* IEC-80000-6 item 6-22.2 linked flux */
904
+ attribute def LinkedFluxValue :> ScalarQuantityValue {
905
+ doc
906
+ /*
907
+ * source: item 6-22.2 linked flux
908
+ * symbol(s): `Ψ_m`, `Ψ`
909
+ * application domain: generic
910
+ * name: LinkedFlux
911
+ * quantity dimension: L^2*M^1*T^-2*I^-1
912
+ * measurement unit(s): Wb
913
+ * tensor order: 0
914
+ * definition: `Ψ_m = int_C vec(A) * d vec(r)` where `vec(A)` is magnetic vector potential (item 6-32) and `d vec(r)` is line vector element of the curve `C`
915
+ * remarks: Line vector element `d vec(r)` is the differential of position vector `vec(r)` (ISO 80000-3, item 3-1.11). See IEC 60050-121, item 121-11-24.
916
+ */
917
+ attribute :>> num: Real;
918
+ attribute :>> mRef: LinkedFluxUnit[1];
919
+ }
920
+
921
+ attribute linkedFlux: LinkedFluxValue[*] nonunique :> scalarQuantities;
922
+
923
+ attribute def LinkedFluxUnit :> DerivedUnit {
924
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
925
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
926
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
927
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
928
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
929
+ }
930
+
931
+ /* IEC-80000-6 item 6-23 magnetic moment, magnetic area moment */
932
+ attribute def MagneticMomentValue :> ScalarQuantityValue {
933
+ doc
934
+ /*
935
+ * source: item 6-23 magnetic moment, magnetic area moment (magnitude)
936
+ * symbol(s): `m`
937
+ * application domain: generic
938
+ * name: MagneticMoment
939
+ * quantity dimension: L^2*I^1
940
+ * measurement unit(s): A*m^2
941
+ * tensor order: 0
942
+ * definition: `vec(m) = I vec(e_n) A` where `I` is electric current (item 6-1) in a small closed loop, `vec(e_n)` is a unit vector perpendicular to the loop, and `A` is area (ISO 80000-3, item 3-3) of the loop
943
+ * remarks: The magnetic moment of a substance within a domain is the vector sum of the magnetic moments of all entities included in the domain. See IEC 60050-121, items 121-11-49 and 121-11-50.
944
+ */
945
+ attribute :>> num: Real;
946
+ attribute :>> mRef: MagneticMomentUnit[1];
947
+ }
948
+
949
+ attribute magneticMoment: MagneticMomentValue[*] nonunique :> scalarQuantities;
950
+
951
+ attribute def MagneticMomentUnit :> DerivedUnit {
952
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
953
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
954
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
955
+ }
956
+
957
+ attribute def CartesianMagneticMoment3dVector :> '3dVectorQuantityValue' {
958
+ doc
959
+ /*
960
+ * source: item 6-23 magnetic moment, magnetic area moment (vector)
961
+ * symbol(s): `vec(m)`
962
+ * application domain: generic
963
+ * name: MagneticMoment
964
+ * quantity dimension: L^2*I^1
965
+ * measurement unit(s): A*m^2
966
+ * tensor order: 1
967
+ * definition: `vec(m) = I vec(e_n) A` where `I` is electric current (item 6-1) in a small closed loop, `vec(e_n)` is a unit vector perpendicular to the loop, and `A` is area (ISO 80000-3, item 3-3) of the loop
968
+ * remarks: The magnetic moment of a substance within a domain is the vector sum of the magnetic moments of all entities included in the domain. See IEC 60050-121, items 121-11-49 and 121-11-50.
969
+ */
970
+ attribute :>> isBound = false;
971
+ attribute :>> mRef: CartesianMagneticMoment3dCoordinateFrame[1];
972
+ }
973
+
974
+ attribute cartesianMagneticMoment3dVector: CartesianMagneticMoment3dVector :> vectorQuantities;
975
+
976
+ attribute def CartesianMagneticMoment3dCoordinateFrame :> '3dCoordinateFrame' {
977
+ attribute :>> isBound = false;
978
+ attribute :>> isOrthogonal = true;
979
+ attribute :>> mRefs: MagneticMomentUnit[3];
980
+ }
981
+
982
+ alias CartesianMagneticAreaMoment3dCoordinateFrame for CartesianMagneticMoment3dCoordinateFrame;
983
+ alias cartesianMagneticAreaMoment3dVector for cartesianMagneticMoment3dVector;
984
+
985
+ /* IEC-80000-6 item 6-24 magnetization */
986
+ attribute def MagnetizationValue :> ScalarQuantityValue {
987
+ doc
988
+ /*
989
+ * source: item 6-24 magnetization (magnitude)
990
+ * symbol(s): `M`, `H_i`
991
+ * application domain: generic
992
+ * name: Magnetization
993
+ * quantity dimension: L^-1*I^1
994
+ * measurement unit(s): A/m
995
+ * tensor order: 0
996
+ * definition: `vec(M) = (d vec(m)) / (dV)` where `vec(m)` is magnetic moment (item 6-23) of a substance in a domain with volume `V` (ISO 80000-3, item 3-4)
997
+ * remarks: See IEC 60050-121, item 121-11-52.
998
+ */
999
+ attribute :>> num: Real;
1000
+ attribute :>> mRef: MagnetizationUnit[1];
1001
+ }
1002
+
1003
+ attribute magnetization: MagnetizationValue[*] nonunique :> scalarQuantities;
1004
+
1005
+ attribute def MagnetizationUnit :> DerivedUnit {
1006
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1007
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
1008
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
1009
+ }
1010
+
1011
+ attribute def CartesianMagnetization3dVector :> '3dVectorQuantityValue' {
1012
+ doc
1013
+ /*
1014
+ * source: item 6-24 magnetization (vector)
1015
+ * symbol(s): `vec(M)`, `vec(H_i)`
1016
+ * application domain: generic
1017
+ * name: Magnetization
1018
+ * quantity dimension: L^-1*I^1
1019
+ * measurement unit(s): A/m
1020
+ * tensor order: 1
1021
+ * definition: `vec(M) = (d vec(m)) / (dV)` where `vec(m)` is magnetic moment (item 6-23) of a substance in a domain with volume `V` (ISO 80000-3, item 3-4)
1022
+ * remarks: See IEC 60050-121, item 121-11-52.
1023
+ */
1024
+ attribute :>> isBound = false;
1025
+ attribute :>> mRef: CartesianMagnetization3dCoordinateFrame[1];
1026
+ }
1027
+
1028
+ attribute cartesianMagnetization3dVector: CartesianMagnetization3dVector :> vectorQuantities;
1029
+
1030
+ attribute def CartesianMagnetization3dCoordinateFrame :> '3dCoordinateFrame' {
1031
+ attribute :>> isBound = false;
1032
+ attribute :>> isOrthogonal = true;
1033
+ attribute :>> mRefs: MagnetizationUnit[3];
1034
+ }
1035
+
1036
+ /* IEC-80000-6 item 6-25 magnetic field strength, magnetizing field */
1037
+ attribute def MagneticFieldStrengthValue :> ScalarQuantityValue {
1038
+ doc
1039
+ /*
1040
+ * source: item 6-25 magnetic field strength, magnetizing field (magnitude)
1041
+ * symbol(s): `H`
1042
+ * application domain: generic
1043
+ * name: MagneticFieldStrength
1044
+ * quantity dimension: L^-1*I^1
1045
+ * measurement unit(s): A/m
1046
+ * tensor order: 0
1047
+ * definition: `vec(H) = vec(B)/μ_0 - vec(M)` where `vec(B)` is magnetic flux density (item 6-21), `μ_0` is the magnetic constant (item 6-26.1), and `vec(M)` is magnetization (item 6-24)
1048
+ * remarks: The magnetic field strength is related to the total current density `vec(J_(t ot))` (item 6-20) via `rot vec(H) = vec(J_(t ot))`. See IEC 60050-121, item 121-11-56.
1049
+ */
1050
+ attribute :>> num: Real;
1051
+ attribute :>> mRef: MagneticFieldStrengthUnit[1];
1052
+ }
1053
+
1054
+ attribute magneticFieldStrength: MagneticFieldStrengthValue[*] nonunique :> scalarQuantities;
1055
+
1056
+ attribute def MagneticFieldStrengthUnit :> DerivedUnit {
1057
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1058
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
1059
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
1060
+ }
1061
+
1062
+ attribute def CartesianMagneticFieldStrength3dVector :> '3dVectorQuantityValue' {
1063
+ doc
1064
+ /*
1065
+ * source: item 6-25 magnetic field strength, magnetizing field (vector)
1066
+ * symbol(s): `vec(H)`
1067
+ * application domain: generic
1068
+ * name: MagneticFieldStrength
1069
+ * quantity dimension: L^-1*I^1
1070
+ * measurement unit(s): A/m
1071
+ * tensor order: 1
1072
+ * definition: `vec(H) = vec(B)/μ_0 - vec(M)` where `vec(B)` is magnetic flux density (item 6-21), `μ_0` is the magnetic constant (item 6-26.1), and `vec(M)` is magnetization (item 6-24)
1073
+ * remarks: The magnetic field strength is related to the total current density `vec(J_(t ot))` (item 6-20) via `rot vec(H) = vec(J_(t ot))`. See IEC 60050-121, item 121-11-56.
1074
+ */
1075
+ attribute :>> isBound = false;
1076
+ attribute :>> mRef: CartesianMagneticFieldStrength3dCoordinateFrame[1];
1077
+ }
1078
+
1079
+ attribute cartesianMagneticFieldStrength3dVector: CartesianMagneticFieldStrength3dVector :> vectorQuantities;
1080
+
1081
+ attribute def CartesianMagneticFieldStrength3dCoordinateFrame :> '3dCoordinateFrame' {
1082
+ attribute :>> isBound = false;
1083
+ attribute :>> isOrthogonal = true;
1084
+ attribute :>> mRefs: MagneticFieldStrengthUnit[3];
1085
+ }
1086
+
1087
+ alias CartesianMagnetizingField3dCoordinateFrame for CartesianMagneticFieldStrength3dCoordinateFrame;
1088
+ alias cartesianMagnetizingField3dVector for cartesianMagneticFieldStrength3dVector;
1089
+
1090
+ /* IEC-80000-6 item 6-26.1 magnetic constant, permeability of vacuum */
1091
+ attribute def MagneticConstantValue :> ScalarQuantityValue {
1092
+ doc
1093
+ /*
1094
+ * source: item 6-26.1 magnetic constant, permeability of vacuum
1095
+ * symbol(s): `μ_0`
1096
+ * application domain: generic
1097
+ * name: MagneticConstant
1098
+ * quantity dimension: L^1*M^1*T^-2*I^-2
1099
+ * measurement unit(s): H/m
1100
+ * tensor order: 0
1101
+ * definition: `μ_0 = 4 π * 10^-7` H/m
1102
+ * remarks: For this definition of `μ_0` see item 6-1.a. `μ_0 ~~ 1.256637 * 10^-6` H/m. See IEC 60050-121, item 121-11-14.
1103
+ */
1104
+ attribute :>> num: Real;
1105
+ attribute :>> mRef: MagneticConstantUnit[1];
1106
+ }
1107
+
1108
+ attribute magneticConstant: MagneticConstantValue[*] nonunique :> scalarQuantities;
1109
+
1110
+ attribute def MagneticConstantUnit :> DerivedUnit {
1111
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1112
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1113
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1114
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1115
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1116
+ }
1117
+
1118
+ alias PermeabilityOfVacuumUnit for MagneticConstantUnit;
1119
+ alias PermeabilityOfVacuumValue for MagneticConstantValue;
1120
+ alias permeabilityOfVacuum for magneticConstant;
1121
+
1122
+ /* IEC-80000-6 item 6-26.2 permeability */
1123
+ attribute def PermeabilityValue :> ScalarQuantityValue {
1124
+ doc
1125
+ /*
1126
+ * source: item 6-26.2 permeability
1127
+ * symbol(s): `μ`
1128
+ * application domain: generic
1129
+ * name: Permeability
1130
+ * quantity dimension: L^1*M^1*T^-2*I^-2
1131
+ * measurement unit(s): H/m
1132
+ * tensor order: 0
1133
+ * definition: `vec(B) = μ vec(H)` where `vec(B)` is magnetic flux density (item 6-21) and `vec(H)` is magnetic field strength (item 6-25)
1134
+ * remarks: This definition applies to an isotropic medium. For an anisotropic medium permeability is a second order tensor. See IEC 60050-121, item 121-12-28.
1135
+ */
1136
+ attribute :>> num: Real;
1137
+ attribute :>> mRef: PermeabilityUnit[1];
1138
+ }
1139
+
1140
+ attribute permeability: PermeabilityValue[*] nonunique :> scalarQuantities;
1141
+
1142
+ attribute def PermeabilityUnit :> DerivedUnit {
1143
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1144
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1145
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1146
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1147
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1148
+ }
1149
+
1150
+ /* IEC-80000-6 item 6-27 relative permeability */
1151
+ attribute def RelativePermeabilityValue :> DimensionOneValue {
1152
+ doc
1153
+ /*
1154
+ * source: item 6-27 relative permeability
1155
+ * symbol(s): `μ_r`
1156
+ * application domain: generic
1157
+ * name: RelativePermeability (specializes DimensionOneQuantity)
1158
+ * quantity dimension: 1
1159
+ * measurement unit(s): 1
1160
+ * tensor order: 0
1161
+ * definition: `μ_r = μ / μ_0` where `μ` is permeability (item 6-24) and `μ_0` is the magnetic constant (item 6-26.1)
1162
+ * remarks: See IEC 60050-121, item 121-12-29.
1163
+ */
1164
+ }
1165
+ attribute relativePermeability: RelativePermeabilityValue :> scalarQuantities;
1166
+
1167
+ /* IEC-80000-6 item 6-28 magnetic susceptibility */
1168
+ attribute def MagneticSusceptibilityValue :> DimensionOneValue {
1169
+ doc
1170
+ /*
1171
+ * source: item 6-28 magnetic susceptibility
1172
+ * symbol(s): `κ`, `χ_m`
1173
+ * application domain: generic
1174
+ * name: MagneticSusceptibility (specializes DimensionOneQuantity)
1175
+ * quantity dimension: 1
1176
+ * measurement unit(s): 1
1177
+ * tensor order: 0
1178
+ * definition: `vec(M) = κ vec(H)` where `vec(M)` is magnetization (item 6-24) and `vec(H)` is magnetic field strength (item 6-25)
1179
+ * remarks: `κ = μ_r - 1` This definition applies to an isotropic medium. For an anisotropic medium magnetic susceptibility is a second order tensor. See IEC 60050-121, item 121-12-37.
1180
+ */
1181
+ }
1182
+ attribute magneticSusceptibility: MagneticSusceptibilityValue :> scalarQuantities;
1183
+
1184
+ /* IEC-80000-6 item 6-29 magnetic polarization */
1185
+ attribute def MagneticPolarizationValue :> ScalarQuantityValue {
1186
+ doc
1187
+ /*
1188
+ * source: item 6-29 magnetic polarization (magnitude)
1189
+ * symbol(s): `J_m`
1190
+ * application domain: generic
1191
+ * name: MagneticPolarization
1192
+ * quantity dimension: M^1*T^-2*I^-1
1193
+ * measurement unit(s): T
1194
+ * tensor order: 0
1195
+ * definition: `vec(J_m) = μ_0 vec(M)` where `μ_0` is the magnetic constant (item 6-26.1), and `vec(M)` is magnetization (item 6-24)
1196
+ * remarks: See IEC 60050-121, item 121-11-54.
1197
+ */
1198
+ attribute :>> num: Real;
1199
+ attribute :>> mRef: MagneticPolarizationUnit[1];
1200
+ }
1201
+
1202
+ attribute magneticPolarization: MagneticPolarizationValue[*] nonunique :> scalarQuantities;
1203
+
1204
+ attribute def MagneticPolarizationUnit :> DerivedUnit {
1205
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1206
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1207
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
1208
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
1209
+ }
1210
+
1211
+ attribute def CartesianMagneticPolarization3dVector :> '3dVectorQuantityValue' {
1212
+ doc
1213
+ /*
1214
+ * source: item 6-29 magnetic polarization (vector)
1215
+ * symbol(s): `vec(J_m)`
1216
+ * application domain: generic
1217
+ * name: MagneticPolarization
1218
+ * quantity dimension: M^1*T^-2*I^-1
1219
+ * measurement unit(s): T
1220
+ * tensor order: 1
1221
+ * definition: `vec(J_m) = μ_0 vec(M)` where `μ_0` is the magnetic constant (item 6-26.1), and `vec(M)` is magnetization (item 6-24)
1222
+ * remarks: See IEC 60050-121, item 121-11-54.
1223
+ */
1224
+ attribute :>> isBound = false;
1225
+ attribute :>> mRef: CartesianMagneticPolarization3dCoordinateFrame[1];
1226
+ }
1227
+
1228
+ attribute cartesianMagneticPolarization3dVector: CartesianMagneticPolarization3dVector :> vectorQuantities;
1229
+
1230
+ attribute def CartesianMagneticPolarization3dCoordinateFrame :> '3dCoordinateFrame' {
1231
+ attribute :>> isBound = false;
1232
+ attribute :>> isOrthogonal = true;
1233
+ attribute :>> mRefs: MagneticPolarizationUnit[3];
1234
+ }
1235
+
1236
+ /* IEC-80000-6 item 6-30 magnetic dipole moment */
1237
+ attribute def MagneticDipoleMomentValue :> ScalarQuantityValue {
1238
+ doc
1239
+ /*
1240
+ * source: item 6-30 magnetic dipole moment (magnitude)
1241
+ * symbol(s): `j_m`, `j`
1242
+ * application domain: generic
1243
+ * name: MagneticDipoleMoment
1244
+ * quantity dimension: L^3*M^1*T^-2*I^-1
1245
+ * measurement unit(s): Wb*m
1246
+ * tensor order: 0
1247
+ * definition: `vec(j_m) = μ_0 vec(m)` where `μ_0` is the magnetic constant (item 6-26.1), and `vec(m)` is magnetic moment (item 6-23)
1248
+ * remarks: See IEC 60050-121, item 121-11-55.
1249
+ */
1250
+ attribute :>> num: Real;
1251
+ attribute :>> mRef: MagneticDipoleMomentUnit[1];
1252
+ }
1253
+
1254
+ attribute magneticDipoleMoment: MagneticDipoleMomentValue[*] nonunique :> scalarQuantities;
1255
+
1256
+ attribute def MagneticDipoleMomentUnit :> DerivedUnit {
1257
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
1258
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1259
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1260
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
1261
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1262
+ }
1263
+
1264
+ attribute def CartesianMagneticDipoleMoment3dVector :> '3dVectorQuantityValue' {
1265
+ doc
1266
+ /*
1267
+ * source: item 6-30 magnetic dipole moment (vector)
1268
+ * symbol(s): `vec(j_m)`, `vec(j)`
1269
+ * application domain: generic
1270
+ * name: MagneticDipoleMoment
1271
+ * quantity dimension: L^3*M^1*T^-2*I^-1
1272
+ * measurement unit(s): Wb*m
1273
+ * tensor order: 1
1274
+ * definition: `vec(j_m) = μ_0 vec(m)` where `μ_0` is the magnetic constant (item 6-26.1), and `vec(m)` is magnetic moment (item 6-23)
1275
+ * remarks: See IEC 60050-121, item 121-11-55.
1276
+ */
1277
+ attribute :>> isBound = false;
1278
+ attribute :>> mRef: CartesianMagneticDipoleMoment3dCoordinateFrame[1];
1279
+ }
1280
+
1281
+ attribute cartesianMagneticDipoleMoment3dVector: CartesianMagneticDipoleMoment3dVector :> vectorQuantities;
1282
+
1283
+ attribute def CartesianMagneticDipoleMoment3dCoordinateFrame :> '3dCoordinateFrame' {
1284
+ attribute :>> isBound = false;
1285
+ attribute :>> isOrthogonal = true;
1286
+ attribute :>> mRefs: MagneticDipoleMomentUnit[3];
1287
+ }
1288
+
1289
+ /* IEC-80000-6 item 6-31 coercivity */
1290
+ attribute def CoercivityValue :> ScalarQuantityValue {
1291
+ doc
1292
+ /*
1293
+ * source: item 6-31 coercivity
1294
+ * symbol(s): `H_(c,B)`
1295
+ * application domain: generic
1296
+ * name: Coercivity
1297
+ * quantity dimension: L^-1*I^1
1298
+ * measurement unit(s): A/m
1299
+ * tensor order: 0
1300
+ * definition: magnetic field strength (item 6-25) to be applied to bring the magnetic flux density (item 6-21) in a substance from its remaining magnetic flux density to zero
1301
+ * remarks: See IEC 60050-121, item 121-12-69. Also called coercive field strength.
1302
+ */
1303
+ attribute :>> num: Real;
1304
+ attribute :>> mRef: CoercivityUnit[1];
1305
+ }
1306
+
1307
+ attribute coercivity: CoercivityValue[*] nonunique :> scalarQuantities;
1308
+
1309
+ attribute def CoercivityUnit :> DerivedUnit {
1310
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1311
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
1312
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
1313
+ }
1314
+
1315
+ /* IEC-80000-6 item 6-32 magnetic vector potential */
1316
+ attribute def MagneticVectorPotentialValue :> ScalarQuantityValue {
1317
+ doc
1318
+ /*
1319
+ * source: item 6-32 magnetic vector potential (magnitude)
1320
+ * symbol(s): `A`
1321
+ * application domain: generic
1322
+ * name: MagneticVectorPotential
1323
+ * quantity dimension: L^1*M^1*T^-2*I^-1
1324
+ * measurement unit(s): Wb/m
1325
+ * tensor order: 0
1326
+ * definition: `vec(B) = rot vec(A)` where `vec(B)` is magnetic flux density (item 6-21)
1327
+ * remarks: The magnetic vector potential is not unique since any irrotational vector field can be added to it without changing its rotation. See IEC 60050-121, item 121-11-23.
1328
+ */
1329
+ attribute :>> num: Real;
1330
+ attribute :>> mRef: MagneticVectorPotentialUnit[1];
1331
+ }
1332
+
1333
+ attribute magneticVectorPotential: MagneticVectorPotentialValue[*] nonunique :> scalarQuantities;
1334
+
1335
+ attribute def MagneticVectorPotentialUnit :> DerivedUnit {
1336
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1337
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1338
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1339
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
1340
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1341
+ }
1342
+
1343
+ attribute def CartesianMagneticVectorPotential3dVector :> '3dVectorQuantityValue' {
1344
+ doc
1345
+ /*
1346
+ * source: item 6-32 magnetic vector potential (vector)
1347
+ * symbol(s): `vec(A)`
1348
+ * application domain: generic
1349
+ * name: MagneticVectorPotential
1350
+ * quantity dimension: L^1*M^1*T^-2*I^-1
1351
+ * measurement unit(s): Wb/m
1352
+ * tensor order: 1
1353
+ * definition: `vec(B) = rot vec(A)` where `vec(B)` is magnetic flux density (item 6-21)
1354
+ * remarks: The magnetic vector potential is not unique since any irrotational vector field can be added to it without changing its rotation. See IEC 60050-121, item 121-11-23.
1355
+ */
1356
+ attribute :>> isBound = true;
1357
+ attribute :>> mRef: CartesianMagneticVectorPotential3dCoordinateFrame[1];
1358
+ }
1359
+
1360
+ attribute cartesianMagneticVectorPotential3dVector: CartesianMagneticVectorPotential3dVector :> vectorQuantities;
1361
+
1362
+ attribute def CartesianMagneticVectorPotential3dCoordinateFrame :> '3dCoordinateFrame' {
1363
+ attribute :>> isBound = true;
1364
+ attribute :>> isOrthogonal = true;
1365
+ attribute :>> mRefs: MagneticVectorPotentialUnit[3];
1366
+ }
1367
+
1368
+ /* IEC-80000-6 item 6-33 electromagnetic energy density, volumic electromagnetic energy */
1369
+ attribute def ElectromagneticEnergyDensityValue :> ScalarQuantityValue {
1370
+ doc
1371
+ /*
1372
+ * source: item 6-33 electromagnetic energy density, volumic electromagnetic energy
1373
+ * symbol(s): `w`
1374
+ * application domain: generic
1375
+ * name: ElectromagneticEnergyDensity
1376
+ * quantity dimension: L^-1*M^1*T^-2
1377
+ * measurement unit(s): J/m^3
1378
+ * tensor order: 0
1379
+ * definition: `ω = 1/2*(vec(E)*vec(D) + vec(B) * vec(H))` where `vec(E)` is electric field strength (item 6-10), `vec(D)` is electric flux density (item 6-12), `vec(B)` is magnetic flux density (item 6-21), and `vec(H)` is magnetic field strength (item 6-25)
1380
+ * remarks: See IEC 60050-121, item 121-11-65.
1381
+ */
1382
+ attribute :>> num: Real;
1383
+ attribute :>> mRef: ElectromagneticEnergyDensityUnit[1];
1384
+ }
1385
+
1386
+ attribute electromagneticEnergyDensity: ElectromagneticEnergyDensityValue[*] nonunique :> scalarQuantities;
1387
+
1388
+ attribute def ElectromagneticEnergyDensityUnit :> DerivedUnit {
1389
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1390
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1391
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1392
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1393
+ }
1394
+
1395
+ alias VolumicElectromagneticEnergyUnit for ElectromagneticEnergyDensityUnit;
1396
+ alias VolumicElectromagneticEnergyValue for ElectromagneticEnergyDensityValue;
1397
+ alias volumicElectromagneticEnergy for electromagneticEnergyDensity;
1398
+
1399
+ /* IEC-80000-6 item 6-34 Poynting vector */
1400
+ attribute def PoyntingVectorMagnitudeValue :> ScalarQuantityValue {
1401
+ doc
1402
+ /*
1403
+ * source: item 6-34 Poynting vector (magnitude)
1404
+ * symbol(s): `S`
1405
+ * application domain: generic
1406
+ * name: PoyntingVectorMagnitude
1407
+ * quantity dimension: M^1*T^-3
1408
+ * measurement unit(s): W/m^2
1409
+ * tensor order: 0
1410
+ * definition: `vec(S) = vec(E) xx vec(H)` where `vec(E)` is electric field strength (item 6-10) and `vec(H)` is magnetic field strength (item 6-25)
1411
+ * remarks: See IEC 60050-121, item 121-11-66.
1412
+ */
1413
+ attribute :>> num: Real;
1414
+ attribute :>> mRef: PoyntingVectorMagnitudeUnit[1];
1415
+ }
1416
+
1417
+ attribute poyntingVectorMagnitude: PoyntingVectorMagnitudeValue[*] nonunique :> scalarQuantities;
1418
+
1419
+ attribute def PoyntingVectorMagnitudeUnit :> DerivedUnit {
1420
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1421
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1422
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1423
+ }
1424
+
1425
+ attribute def CartesianPoynting3dVector :> '3dVectorQuantityValue' {
1426
+ doc
1427
+ /*
1428
+ * source: item 6-34 Poynting vector
1429
+ * symbol(s): `vec(S)`
1430
+ * application domain: generic
1431
+ * name: PoyntingVector
1432
+ * quantity dimension: M^1*T^-3
1433
+ * measurement unit(s): W/m^2
1434
+ * tensor order: 1
1435
+ * definition: `vec(S) = vec(E) xx vec(H)` where `vec(E)` is electric field strength (item 6-10) and `vec(H)` is magnetic field strength (item 6-25)
1436
+ * remarks: See IEC 60050-121, item 121-11-66.
1437
+ */
1438
+ attribute :>> isBound = false;
1439
+ attribute :>> mRef: CartesianPoynting3dCoordinateFrame[1];
1440
+ }
1441
+
1442
+ attribute cartesianPoynting3dVector: CartesianPoynting3dVector :> vectorQuantities;
1443
+
1444
+ attribute def CartesianPoynting3dCoordinateFrame :> '3dCoordinateFrame' {
1445
+ attribute :>> isBound = false;
1446
+ attribute :>> isOrthogonal = true;
1447
+ attribute :>> mRefs: PoyntingVectorMagnitudeUnit[3];
1448
+ }
1449
+
1450
+ /* IEC-80000-6 item 6-35.1 phase speed of electromagnetic waves */
1451
+ attribute def PhaseSpeedOfElectromagneticWavesValue :> ScalarQuantityValue {
1452
+ doc
1453
+ /*
1454
+ * source: item 6-35.1 phase speed of electromagnetic waves
1455
+ * symbol(s): `c`
1456
+ * application domain: generic
1457
+ * name: PhaseSpeedOfElectromagneticWaves
1458
+ * quantity dimension: L^1*T^-1
1459
+ * measurement unit(s): m/s
1460
+ * tensor order: 0
1461
+ * definition: `c = ω/k` where `ω` is angular frequency (ISO 80000-3, item 3-16) and `k` is angular wavenumber (ISO 80000-3, item 3-19)
1462
+ * remarks: See ISO 80000-3, item 3-20.1.
1463
+ */
1464
+ attribute :>> num: Real;
1465
+ attribute :>> mRef: PhaseSpeedOfElectromagneticWavesUnit[1];
1466
+ }
1467
+
1468
+ attribute phaseSpeedOfElectromagneticWaves: PhaseSpeedOfElectromagneticWavesValue[*] nonunique :> scalarQuantities;
1469
+
1470
+ attribute def PhaseSpeedOfElectromagneticWavesUnit :> DerivedUnit {
1471
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1472
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1473
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1474
+ }
1475
+
1476
+ /* IEC-80000-6 item 6-35.2 speed of light, light speed */
1477
+ attribute def SpeedOfLightValue :> ScalarQuantityValue {
1478
+ doc
1479
+ /*
1480
+ * source: item 6-35.2 speed of light, light speed
1481
+ * symbol(s): `c_0`
1482
+ * application domain: generic
1483
+ * name: SpeedOfLight
1484
+ * quantity dimension: L^1*T^-1
1485
+ * measurement unit(s): m/s
1486
+ * tensor order: 0
1487
+ * definition: speed of electromagnetic waves in vacuum; `c_0 = 299792458` m/s
1488
+ * remarks: For this value of `c_0` see ISO 80000-3, item 3-1.a. `c_0 = 1/sqrt(ε_0 μ_0)`. See IEC 60050-111, item 111-13-07.
1489
+ */
1490
+ attribute :>> num: Real;
1491
+ attribute :>> mRef: SpeedOfLightUnit[1];
1492
+ }
1493
+
1494
+ attribute speedOfLight: SpeedOfLightValue[*] nonunique :> scalarQuantities;
1495
+
1496
+ attribute def SpeedOfLightUnit :> DerivedUnit {
1497
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1498
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1499
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1500
+ }
1501
+
1502
+ alias LightSpeedUnit for SpeedOfLightUnit;
1503
+ alias LightSpeedValue for SpeedOfLightValue;
1504
+ alias lightSpeed for speedOfLight;
1505
+
1506
+ /* IEC-80000-6 item 6-36 source voltage, source tension */
1507
+ attribute def SourceVoltageValue :> ScalarQuantityValue {
1508
+ doc
1509
+ /*
1510
+ * source: item 6-36 source voltage, source tension
1511
+ * symbol(s): `U_s`
1512
+ * application domain: generic
1513
+ * name: SourceVoltage
1514
+ * quantity dimension: L^2*M^1*T^-3*I^-1
1515
+ * measurement unit(s): V
1516
+ * tensor order: 0
1517
+ * definition: voltage (item 6-11.3) between the two terminals of a voltage source when there is no electric current (item 6-1) through the source
1518
+ * remarks: The name "electromotive force" with the abbreviation EMF and the symbol `E` is deprecated. See IEC 60050-131, item 131-12-22.
1519
+ */
1520
+ attribute :>> num: Real;
1521
+ attribute :>> mRef: SourceVoltageUnit[1];
1522
+ }
1523
+
1524
+ attribute sourceVoltage: SourceVoltageValue[*] nonunique :> scalarQuantities;
1525
+
1526
+ attribute def SourceVoltageUnit :> DerivedUnit {
1527
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1528
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1529
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1530
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -1; }
1531
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1532
+ }
1533
+
1534
+ alias SourceTensionUnit for SourceVoltageUnit;
1535
+ alias SourceTensionValue for SourceVoltageValue;
1536
+ alias sourceTension for sourceVoltage;
1537
+
1538
+ /* IEC-80000-6 item 6-37.1 scalar magnetic potential */
1539
+ attribute scalarMagneticPotential: ElectricCurrentValue :> scalarQuantities {
1540
+ doc
1541
+ /*
1542
+ * source: item 6-37.1 scalar magnetic potential
1543
+ * symbol(s): `V_m`, `φ`
1544
+ * application domain: generic
1545
+ * name: ScalarMagneticPotential (specializes ElectricCurrent)
1546
+ * quantity dimension: I^1
1547
+ * measurement unit(s): A
1548
+ * tensor order: 0
1549
+ * definition: for an irrotational magnetic field strength `vec(H) = -nabla V_m` where `vec(H)` is magnetic field strength (item 6-25)
1550
+ * remarks: The magnetic scalar potential is not unique since any constant scalar field can be added to it without changing its gradient. See IEC 60050-121, item 121-11-58.
1551
+ */
1552
+ }
1553
+
1554
+ /* IEC-80000-6 item 6-37.2 magnetic tension */
1555
+ attribute magneticTension: ElectricCurrentValue :> scalarQuantities {
1556
+ doc
1557
+ /*
1558
+ * source: item 6-37.2 magnetic tension
1559
+ * symbol(s): `U_m`
1560
+ * application domain: generic
1561
+ * name: MagneticTension (specializes ElectricCurrent)
1562
+ * quantity dimension: I^1
1563
+ * measurement unit(s): A
1564
+ * tensor order: 0
1565
+ * definition: `U_m = int_(vec(r_a) (C))^(vec(r_b)) vec(H) * d(vec(r))` where `vec(H)` is magnetic field strength (item 6-25) and `vec(r)` is position vector (ISO 80000-3, item 3-1.11) along a given curve `C` from point `a` to point `b`
1566
+ * remarks: For an irrotational magnetic field strength this quantity is equal to the magnetic potential difference. See IEC 60050-121, item121-11-57.
1567
+ */
1568
+ }
1569
+
1570
+ /* IEC-80000-6 item 6-37.3 magnetomotive force */
1571
+ attribute def MagnetomotiveForceValue :> ScalarQuantityValue {
1572
+ doc
1573
+ /*
1574
+ * source: item 6-37.3 magnetomotive force
1575
+ * symbol(s): `F_m`
1576
+ * application domain: generic
1577
+ * name: MagnetomotiveForce
1578
+ * quantity dimension: I^1
1579
+ * measurement unit(s): A
1580
+ * tensor order: 0
1581
+ * definition: `F_m = oint_C vec(H) * d vec(r)` where `vec(H)` is magnetic field strength (item 6-25) and `vec(r)` is position vector (ISO 80000-3, item 3-1 .11) along a closed curve `C`
1582
+ * remarks: This quantity name is under consideration . Compare remark to item 6-36. See IEC 60050-121, item 121-11-60.
1583
+ */
1584
+ attribute :>> num: Real;
1585
+ attribute :>> mRef: MagnetomotiveForceUnit[1];
1586
+ }
1587
+
1588
+ attribute magnetomotiveForce: MagnetomotiveForceValue[*] nonunique :> scalarQuantities;
1589
+
1590
+ attribute def MagnetomotiveForceUnit :> DerivedUnit {
1591
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
1592
+ attribute :>> quantityDimension { :>> quantityPowerFactors = electricCurrentPF; }
1593
+ }
1594
+
1595
+ /* IEC-80000-6 item 6-37.4 current linkage */
1596
+ attribute currentLinkage: ElectricCurrentValue :> scalarQuantities {
1597
+ doc
1598
+ /*
1599
+ * source: item 6-37.4 current linkage
1600
+ * symbol(s): `Θ`
1601
+ * application domain: generic
1602
+ * name: CurrentLinkage (specializes ElectricCurrent)
1603
+ * quantity dimension: I^1
1604
+ * measurement unit(s): A
1605
+ * tensor order: 0
1606
+ * definition: net electric current (item 6-1) through a surface delimited by a closed loop
1607
+ * remarks: When `Θ` results from `N` (item 6-38) equal electric currents `I` (item 6-1 ), then `Θ = N I`. See IEC 60050-121 , item 121 -11-46.
1608
+ */
1609
+ }
1610
+
1611
+ /* IEC-80000-6 item 6-38 number of turns in a winding */
1612
+ attribute numberOfTurnsInAWinding: CountValue :> scalarQuantities {
1613
+ doc
1614
+ /*
1615
+ * source: item 6-38 number of turns in a winding
1616
+ * symbol(s): `N`
1617
+ * application domain: generic
1618
+ * name: NumberOfTurnsInAWinding (specializes Count)
1619
+ * quantity dimension: 1
1620
+ * measurement unit(s): 1
1621
+ * tensor order: 0
1622
+ * definition: number of turns in a winding (same as the quantity name)
1623
+ * remarks: N may be non-integer number, see ISO 80000-3, item 3-14.
1624
+ */
1625
+ }
1626
+
1627
+ /* IEC-80000-6 item 6-39 reluctance */
1628
+ attribute def ReluctanceValue :> ScalarQuantityValue {
1629
+ doc
1630
+ /*
1631
+ * source: item 6-39 reluctance
1632
+ * symbol(s): `R_m`, `R`
1633
+ * application domain: generic
1634
+ * name: Reluctance
1635
+ * quantity dimension: L^-2*M^-1*T^2*I^2
1636
+ * measurement unit(s): H^-1
1637
+ * tensor order: 0
1638
+ * definition: `R_m = U_m/Φ` where `U_m` is magnetic tension (item 6-37.2) and `Φ` is magnetic flux (item 6-22 .1)
1639
+ * remarks: See IEC 60050-131 , item 131-12-28.
1640
+ */
1641
+ attribute :>> num: Real;
1642
+ attribute :>> mRef: ReluctanceUnit[1];
1643
+ }
1644
+
1645
+ attribute reluctance: ReluctanceValue[*] nonunique :> scalarQuantities;
1646
+
1647
+ attribute def ReluctanceUnit :> DerivedUnit {
1648
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1649
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1650
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 2; }
1651
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
1652
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1653
+ }
1654
+
1655
+ /* IEC-80000-6 item 6-40 permeance */
1656
+ attribute def PermeanceValue :> ScalarQuantityValue {
1657
+ doc
1658
+ /*
1659
+ * source: item 6-40 permeance
1660
+ * symbol(s): `Λ`
1661
+ * application domain: generic
1662
+ * name: Permeance
1663
+ * quantity dimension: L^2*M^1*T^-2*I^-2
1664
+ * measurement unit(s): H
1665
+ * tensor order: 0
1666
+ * definition: `Λ = 1/R_m` where `R_m` is reluctance (item 6-39)
1667
+ * remarks: See IEC 60050-131 , item 131-12-29.
1668
+ */
1669
+ attribute :>> num: Real;
1670
+ attribute :>> mRef: PermeanceUnit[1];
1671
+ }
1672
+
1673
+ attribute permeance: PermeanceValue[*] nonunique :> scalarQuantities;
1674
+
1675
+ attribute def PermeanceUnit :> DerivedUnit {
1676
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1677
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1678
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1679
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1680
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1681
+ }
1682
+
1683
+ /* IEC-80000-6 item 6-41.1 inductance, self inductance */
1684
+ attribute def InductanceValue :> ScalarQuantityValue {
1685
+ doc
1686
+ /*
1687
+ * source: item 6-41.1 inductance, self inductance
1688
+ * symbol(s): `L`, `L_m`
1689
+ * application domain: generic
1690
+ * name: Inductance
1691
+ * quantity dimension: L^2*M^1*T^-2*I^-2
1692
+ * measurement unit(s): H
1693
+ * tensor order: 0
1694
+ * definition: `L = Ψ / I` where `I` is an electric current (item 6-1) in a thin conducting loop and `Ψ` is the linked flux (item 6-22.2) caused by that electric current
1695
+ * remarks: The name "self inductance" is used for the quantity associated to mutual inductance when `n = m`. See IEC 60050-131 , items 131-12-19 and 131 -12-35.
1696
+ */
1697
+ attribute :>> num: Real;
1698
+ attribute :>> mRef: InductanceUnit[1];
1699
+ }
1700
+
1701
+ attribute inductance: InductanceValue[*] nonunique :> scalarQuantities;
1702
+
1703
+ attribute def InductanceUnit :> DerivedUnit {
1704
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1705
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1706
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1707
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1708
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1709
+ }
1710
+
1711
+ alias SelfInductanceUnit for InductanceUnit;
1712
+ alias SelfInductanceValue for InductanceValue;
1713
+ alias selfInductance for inductance;
1714
+
1715
+ /* IEC-80000-6 item 6-41.2 mutual inductance */
1716
+ attribute mutualInductance: InductanceValue :> scalarQuantities {
1717
+ doc
1718
+ /*
1719
+ * source: item 6-41.2 mutual inductance
1720
+ * symbol(s): `L_(mn)`
1721
+ * application domain: generic
1722
+ * name: MutualInductance (specializes Inductance)
1723
+ * quantity dimension: L^2*M^1*T^-2*I^-2
1724
+ * measurement unit(s): H
1725
+ * tensor order: 0
1726
+ * definition: `L_(mn) = Ψ_m / I_n` where `I_n` is an electric current (item 6-1) in a thin conducting loop `n` and `Ψ_m` is the linked flux (item 6-22.2) caused by that electric current in another loop `m`
1727
+ * remarks: `L_(mn) = L_(nm)`. For two loops , the symbol `M` is used for `L_(12)`. See IEC 60050-131, items 131-12-36.
1728
+ */
1729
+ }
1730
+
1731
+ /* IEC-80000-6 item 6-42.1 coupling factor */
1732
+ attribute def CouplingFactorValue :> DimensionOneValue {
1733
+ doc
1734
+ /*
1735
+ * source: item 6-42.1 coupling factor
1736
+ * symbol(s): `k`
1737
+ * application domain: generic
1738
+ * name: CouplingFactor (specializes DimensionOneQuantity)
1739
+ * quantity dimension: 1
1740
+ * measurement unit(s): 1
1741
+ * tensor order: 0
1742
+ * definition: for inductive coupling between two inductive elements `k = |L_(mn)| / sqrt(L_m L_n)` where `L_m` and `L_n` are their self inductances (item 6-41 .1 ), and `L_(mn)` is their mutual inductance (item 6-41.2)
1743
+ * remarks: See IEC 60050-131 , item 131-12-41.
1744
+ */
1745
+ }
1746
+ attribute couplingFactor: CouplingFactorValue :> scalarQuantities;
1747
+
1748
+ /* IEC-80000-6 item 6-42.2 leakage factor */
1749
+ attribute def LeakageFactorValue :> DimensionOneValue {
1750
+ doc
1751
+ /*
1752
+ * source: item 6-42.2 leakage factor
1753
+ * symbol(s): `σ`
1754
+ * application domain: generic
1755
+ * name: LeakageFactor (specializes DimensionOneQuantity)
1756
+ * quantity dimension: 1
1757
+ * measurement unit(s): 1
1758
+ * tensor order: 0
1759
+ * definition: `σ = 1 - k^2` where `k` is the coupling factor (item 6-42 .1)
1760
+ * remarks: See IEC 60050-131 , item 131-12-42.
1761
+ */
1762
+ }
1763
+ attribute leakageFactor: LeakageFactorValue :> scalarQuantities;
1764
+
1765
+ /* IEC-80000-6 item 6-43 conductivity */
1766
+ attribute def ConductivityValue :> ScalarQuantityValue {
1767
+ doc
1768
+ /*
1769
+ * source: item 6-43 conductivity
1770
+ * symbol(s): `σ`, `γ`
1771
+ * application domain: generic
1772
+ * name: Conductivity
1773
+ * quantity dimension: L^-3*M^-1*T^3*I^2
1774
+ * measurement unit(s): S/m
1775
+ * tensor order: 0
1776
+ * definition: `vec(J) = σ vec(E)` where `vec(J)` is electric current density (item 6-8) and `vec(E)` is electric field strength (item 6-10)
1777
+ * remarks: This definition applies to an isotropic medium. For an anisotropic medium `σ` is a second order tensor. `κ` is used in electrochemistry. See IEC 60050-121 , item 121-12-03.
1778
+ */
1779
+ attribute :>> num: Real;
1780
+ attribute :>> mRef: ConductivityUnit[1];
1781
+ }
1782
+
1783
+ attribute conductivity: ConductivityValue[*] nonunique :> scalarQuantities;
1784
+
1785
+ attribute def ConductivityUnit :> DerivedUnit {
1786
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
1787
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1788
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 3; }
1789
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
1790
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1791
+ }
1792
+
1793
+ /* IEC-80000-6 item 6-44 resistivity */
1794
+ attribute def ResistivityValue :> ScalarQuantityValue {
1795
+ doc
1796
+ /*
1797
+ * source: item 6-44 resistivity
1798
+ * symbol(s): `ρ`
1799
+ * application domain: generic
1800
+ * name: Resistivity
1801
+ * quantity dimension: L^3*M^1*T^-3*I^-2
1802
+ * measurement unit(s): Ω*m
1803
+ * tensor order: 0
1804
+ * definition: `ρ = 1/σ` if is exists, where `σ` is conductivity (item 6-43)
1805
+ * remarks: See IEC 60050-121, item 121-12-04.
1806
+ */
1807
+ attribute :>> num: Real;
1808
+ attribute :>> mRef: ResistivityUnit[1];
1809
+ }
1810
+
1811
+ attribute resistivity: ResistivityValue[*] nonunique :> scalarQuantities;
1812
+
1813
+ attribute def ResistivityUnit :> DerivedUnit {
1814
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
1815
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1816
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1817
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1818
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1819
+ }
1820
+
1821
+ /* IEC-80000-6 item 6-45 electric power, instantaneous power */
1822
+ attribute electricPower: PowerValue :> scalarQuantities {
1823
+ doc
1824
+ /*
1825
+ * source: item 6-45 electric power, instantaneous power
1826
+ * symbol(s): `p`
1827
+ * application domain: generic
1828
+ * name: ElectricPower (specializes Power)
1829
+ * quantity dimension: L^2*M^1*T^-3
1830
+ * measurement unit(s): W
1831
+ * tensor order: 0
1832
+ * definition: `p = ui` where `u` is instantaneous voltage (item 6-11 .3) and `i` is instantaneous electric current (item 6-1)
1833
+ * remarks: See IEC 60050-131 , item 131-11-30.
1834
+ */
1835
+ }
1836
+
1837
+ alias instantaneousPower for electricPower;
1838
+
1839
+ /* IEC-80000-6 item 6-46 resistance */
1840
+ attribute def ResistanceValue :> ScalarQuantityValue {
1841
+ doc
1842
+ /*
1843
+ * source: item 6-46 resistance
1844
+ * symbol(s): `R`
1845
+ * application domain: generic
1846
+ * name: Resistance
1847
+ * quantity dimension: L^2*M^1*T^-3*I^-2
1848
+ * measurement unit(s): Ω
1849
+ * tensor order: 0
1850
+ * definition: for resistive component `R = u i` where `u` is instantaneous voltage (item 6-11.3) and `i` is instantaneous electric current (item 6-1)
1851
+ * remarks: For alternating current, see item 6-51.2. See IEC 60050-131, item 131-12-04.
1852
+ */
1853
+ attribute :>> num: Real;
1854
+ attribute :>> mRef: ResistanceUnit[1];
1855
+ }
1856
+
1857
+ attribute resistance: ResistanceValue[*] nonunique :> scalarQuantities;
1858
+
1859
+ attribute def ResistanceUnit :> DerivedUnit {
1860
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1861
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1862
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1863
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1864
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1865
+ }
1866
+
1867
+ /* IEC-80000-6 item 6-47 conductance */
1868
+ attribute def ConductanceValue :> ScalarQuantityValue {
1869
+ doc
1870
+ /*
1871
+ * source: item 6-47 conductance
1872
+ * symbol(s): `G`
1873
+ * application domain: generic
1874
+ * name: Conductance
1875
+ * quantity dimension: L^-2*M^-1*T^3*I^2
1876
+ * measurement unit(s): S
1877
+ * tensor order: 0
1878
+ * definition: for resistive component `G = 1/R` where `R` is resistance (item 6-46)
1879
+ * remarks: For alternating current, see item 6-52.2. See IEC 60050-131, item 131-12-06.
1880
+ */
1881
+ attribute :>> num: Real;
1882
+ attribute :>> mRef: ConductanceUnit[1];
1883
+ }
1884
+
1885
+ attribute conductance: ConductanceValue[*] nonunique :> scalarQuantities;
1886
+
1887
+ attribute def ConductanceUnit :> DerivedUnit {
1888
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1889
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1890
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 3; }
1891
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
1892
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1893
+ }
1894
+
1895
+ /* IEC-80000-6 item 6-48 phase difference */
1896
+ attribute def PhaseDifferenceValue :> ScalarQuantityValue {
1897
+ doc
1898
+ /*
1899
+ * source: item 6-48 phase difference
1900
+ * symbol(s): `φ`
1901
+ * application domain: generic
1902
+ * name: PhaseDifference
1903
+ * quantity dimension: 1
1904
+ * measurement unit(s): rad
1905
+ * tensor order: 0
1906
+ * definition: `φ = φ_u - φ_i` where `φ_u` is the initial phase of the voltage (item 6-11 .3) and `φ_i` is the initial phase of the electric current (item 6-1)
1907
+ * remarks: When `u = hat(U) cos(ωt - φ_u)`, `i = hat(I) cos(ωt - φ_i)` where `u` is the voltage (item 6-11 . 3) and `i` is the electric current (item 6-1 ), `ω` is angular frequency (ISO 80000-3, item 3-16) and `t` is time (ISO 80000-3, item 3-7), then `φ` is phase difference. For phase angle, see items 6-49 and 6-50.
1908
+ */
1909
+ attribute :>> num: Real;
1910
+ attribute :>> mRef: PhaseDifferenceUnit[1];
1911
+ }
1912
+
1913
+ attribute phaseDifference: PhaseDifferenceValue[*] nonunique :> scalarQuantities;
1914
+
1915
+ attribute def PhaseDifferenceUnit :> DimensionOneUnit {
1916
+ }
1917
+
1918
+ /* IEC-80000-6 item 6-49 electric current phasor */
1919
+ attribute electricCurrentPhasor: ElectricCurrentValue :> scalarQuantities {
1920
+ doc
1921
+ /*
1922
+ * source: item 6-49 electric current phasor
1923
+ * symbol(s): `underline(I)`
1924
+ * application domain: generic
1925
+ * name: ElectricCurrentPhasor (specializes ElectricCurrent)
1926
+ * quantity dimension: I^1
1927
+ * measurement unit(s): A
1928
+ * tensor order: 0
1929
+ * definition: when `i = hat(I) cos(ωt + α)`, where `i` is the electric current (item 6-1 ), `ω` is angular frequency (ISO 80000-3, item 3-16), `t` is time (ISO 80000-3, item 3-7), and `α` is initial phase (ISO 80000-3, item 3-5), then `underline(l) = I e^(jα)`
1930
+ * remarks: `underline(l)` is the complex representation of the electric current `i = hat(I) cos(ωt + α)`. `j` is the imaginary unit.
1931
+ */
1932
+ }
1933
+
1934
+ /* IEC-80000-6 item 6-50 voltage phasor */
1935
+ attribute voltagePhasor: ElectricPotentialDifferenceValue :> scalarQuantities {
1936
+ doc
1937
+ /*
1938
+ * source: item 6-50 voltage phasor
1939
+ * symbol(s): `underline(U)`
1940
+ * application domain: generic
1941
+ * name: VoltagePhasor (specializes ElectricPotentialDifference)
1942
+ * quantity dimension: L^2*M^1*T^-3*I^-1
1943
+ * measurement unit(s): V
1944
+ * tensor order: 0
1945
+ * definition: when `u = hat(U) cos(ωt + α)`, where `u` is the voltage (item 6-11.3 ), `ω` is angular frequency (ISO 80000-3, item 3-16), `t` is time (ISO 80000-3, item 3-7), and `α` is initial phase (ISO 80000-3, item 3-5), then `underline(U) = U e^(jα)`
1946
+ * remarks: `underline(U)` is the complex representation of the voltage `u = hat(U) cos(ωt + α)`. `j` is the imaginary unit.
1947
+ */
1948
+ }
1949
+
1950
+ /* IEC-80000-6 item 6-51.1 impedance, complex impedance */
1951
+ attribute def ImpedanceValue :> ScalarQuantityValue {
1952
+ doc
1953
+ /*
1954
+ * source: item 6-51.1 impedance, complex impedance
1955
+ * symbol(s): `underline(Z)`
1956
+ * application domain: generic
1957
+ * name: Impedance
1958
+ * quantity dimension: L^2*M^1*T^-3*I^-2
1959
+ * measurement unit(s): Ω
1960
+ * tensor order: 0
1961
+ * definition: `underline(Z) = underline(U)/underline(I)` where `underline(U)` is the voltage phasor (item 6-50), and `underline(I)` is the electric current phasor (item 6-49)
1962
+ * remarks: `underline(Z) = R + jX`, where `R` is resistance (item 6-51.2) and `X` is reactance (item 6-51 .3). `j` is the imaginary unit. `underline(Z) = |underline(Z)| e^(jφ)`. See IEC 60050-131 , item 131-12-43.
1963
+ */
1964
+ attribute :>> num: Real;
1965
+ attribute :>> mRef: ImpedanceUnit[1];
1966
+ }
1967
+
1968
+ attribute impedance: ImpedanceValue[*] nonunique :> scalarQuantities;
1969
+
1970
+ attribute def ImpedanceUnit :> DerivedUnit {
1971
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1972
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1973
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1974
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
1975
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
1976
+ }
1977
+
1978
+ alias ComplexImpedanceUnit for ImpedanceUnit;
1979
+ alias ComplexImpedanceValue for ImpedanceValue;
1980
+ alias complexImpedance for impedance;
1981
+
1982
+ /* IEC-80000-6 item 6-51.2 resistance to alternating current */
1983
+ attribute def ResistanceToAlternatingCurrentValue :> ScalarQuantityValue {
1984
+ doc
1985
+ /*
1986
+ * source: item 6-51.2 resistance to alternating current
1987
+ * symbol(s): `R`
1988
+ * application domain: generic
1989
+ * name: ResistanceToAlternatingCurrent
1990
+ * quantity dimension: L^2*M^1*T^-3*I^-2
1991
+ * measurement unit(s): Ω
1992
+ * tensor order: 0
1993
+ * definition: `R = "Re" underline(Z)` where `underline(Z)`, is impedance (item 6-5.1) and `"Re"` denotes the real part
1994
+ * remarks: See IEC 60050-131, item 131-12-45.
1995
+ */
1996
+ attribute :>> num: Real;
1997
+ attribute :>> mRef: ResistanceToAlternatingCurrentUnit[1];
1998
+ }
1999
+
2000
+ attribute resistanceToAlternatingCurrent: ResistanceToAlternatingCurrentValue[*] nonunique :> scalarQuantities;
2001
+
2002
+ attribute def ResistanceToAlternatingCurrentUnit :> DerivedUnit {
2003
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2004
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
2005
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
2006
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
2007
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2008
+ }
2009
+
2010
+ /* IEC-80000-6 item 6-51.3 reactance */
2011
+ attribute def ReactanceValue :> ScalarQuantityValue {
2012
+ doc
2013
+ /*
2014
+ * source: item 6-51.3 reactance
2015
+ * symbol(s): `X`
2016
+ * application domain: generic
2017
+ * name: Reactance
2018
+ * quantity dimension: L^2*M^1*T^-3*I^-2
2019
+ * measurement unit(s): Ω
2020
+ * tensor order: 0
2021
+ * definition: `X = "Im" underline(Z)` where `underline(Z)`, is impedance (item 6-5.1) and `"Im"` denotes the imaginary part
2022
+ * remarks: `X = ωL - 1/(ωC)`. See IEC 60050-131 , item 131-12-46.
2023
+ */
2024
+ attribute :>> num: Real;
2025
+ attribute :>> mRef: ReactanceUnit[1];
2026
+ }
2027
+
2028
+ attribute reactance: ReactanceValue[*] nonunique :> scalarQuantities;
2029
+
2030
+ attribute def ReactanceUnit :> DerivedUnit {
2031
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2032
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
2033
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
2034
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
2035
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2036
+ }
2037
+
2038
+ /* IEC-80000-6 item 6-51.4 modulus of impedance */
2039
+ attribute def ModulusOfImpedanceValue :> ScalarQuantityValue {
2040
+ doc
2041
+ /*
2042
+ * source: item 6-51.4 modulus of impedance
2043
+ * symbol(s): `Z`
2044
+ * application domain: generic
2045
+ * name: ModulusOfImpedance
2046
+ * quantity dimension: L^2*M^1*T^-3*I^-2
2047
+ * measurement unit(s): Ω
2048
+ * tensor order: 0
2049
+ * definition: `Z = |underline(Z)|` where `underline(Z)` is impedance (item 6-51.1)
2050
+ * remarks: See IEC 60050-131 , item 131-12-44. Apparent impedance is defined more generally as the quotient of rms voltage and rms electric current; it is often denoted by `Z`.
2051
+ */
2052
+ attribute :>> num: Real;
2053
+ attribute :>> mRef: ModulusOfImpedanceUnit[1];
2054
+ }
2055
+
2056
+ attribute modulusOfImpedance: ModulusOfImpedanceValue[*] nonunique :> scalarQuantities;
2057
+
2058
+ attribute def ModulusOfImpedanceUnit :> DerivedUnit {
2059
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2060
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
2061
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
2062
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = -2; }
2063
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2064
+ }
2065
+
2066
+ /* IEC-80000-6 item 6-52.1 admittance, complex admittance */
2067
+ attribute def AdmittanceValue :> ScalarQuantityValue {
2068
+ doc
2069
+ /*
2070
+ * source: item 6-52.1 admittance, complex admittance
2071
+ * symbol(s): `underline(Y)`
2072
+ * application domain: generic
2073
+ * name: Admittance
2074
+ * quantity dimension: L^-2*M^-1*T^3*I^2
2075
+ * measurement unit(s): S
2076
+ * tensor order: 0
2077
+ * definition: `underline(Y) = 1/underline(Z)` where `underline(Z)` is impedance (item 6-51.1)
2078
+ * remarks: `underline(Y) = G + jB`, where `G` is conductance (item 6-52 .2) and `B` is susceptance (item 6-52 .3). `j` is the imaginary unit. `underline(Y) = |underline(Y)| e^-(jφ)`. See IEC 60050-131, item 131 -12-51.
2079
+ */
2080
+ attribute :>> num: Real;
2081
+ attribute :>> mRef: AdmittanceUnit[1];
2082
+ }
2083
+
2084
+ attribute admittance: AdmittanceValue[*] nonunique :> scalarQuantities;
2085
+
2086
+ attribute def AdmittanceUnit :> DerivedUnit {
2087
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
2088
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2089
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 3; }
2090
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
2091
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2092
+ }
2093
+
2094
+ alias ComplexAdmittanceUnit for AdmittanceUnit;
2095
+ alias ComplexAdmittanceValue for AdmittanceValue;
2096
+ alias complexAdmittance for admittance;
2097
+
2098
+ /* IEC-80000-6 item 6-52.2 conductance for alternating current */
2099
+ attribute conductanceForAlternatingCurrent: ConductanceValue :> scalarQuantities {
2100
+ doc
2101
+ /*
2102
+ * source: item 6-52.2 conductance for alternating current
2103
+ * symbol(s): `G`
2104
+ * application domain: generic
2105
+ * name: ConductanceForAlternatingCurrent (specializes Conductance)
2106
+ * quantity dimension: L^-2*M^-1*T^3*I^2
2107
+ * measurement unit(s): S
2108
+ * tensor order: 0
2109
+ * definition: `G = "Re" underline(Y)` where I is admittance (item 6-52.1)
2110
+ * remarks: See IEC 60050-131, item 131-12-53.
2111
+ */
2112
+ }
2113
+
2114
+ /* IEC-80000-6 item 6-52.3 susceptance */
2115
+ attribute def SusceptanceValue :> ScalarQuantityValue {
2116
+ doc
2117
+ /*
2118
+ * source: item 6-52.3 susceptance
2119
+ * symbol(s): `B`
2120
+ * application domain: generic
2121
+ * name: Susceptance
2122
+ * quantity dimension: L^-2*M^-1*T^3*I^2
2123
+ * measurement unit(s): S
2124
+ * tensor order: 0
2125
+ * definition: `B = "Im" underline(Y)` where `underline(Y)` is admittance (item 6-52.1)
2126
+ * remarks: See IEC 60050-131, item 131-12-54.
2127
+ */
2128
+ attribute :>> num: Real;
2129
+ attribute :>> mRef: SusceptanceUnit[1];
2130
+ }
2131
+
2132
+ attribute susceptance: SusceptanceValue[*] nonunique :> scalarQuantities;
2133
+
2134
+ attribute def SusceptanceUnit :> DerivedUnit {
2135
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
2136
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2137
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 3; }
2138
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
2139
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2140
+ }
2141
+
2142
+ /* IEC-80000-6 item 6-52.4 modulus of admittance */
2143
+ attribute def ModulusOfAdmittanceValue :> ScalarQuantityValue {
2144
+ doc
2145
+ /*
2146
+ * source: item 6-52.4 modulus of admittance
2147
+ * symbol(s): `Y`
2148
+ * application domain: generic
2149
+ * name: ModulusOfAdmittance
2150
+ * quantity dimension: L^-2*M^-1*T^3*I^2
2151
+ * measurement unit(s): S
2152
+ * tensor order: 0
2153
+ * definition: `Y = |underline(Y)|` where `underline(Y)` is admittance (item 6-52.1)
2154
+ * remarks: Apparent admittance is defined more generally as the quotient of rms electric current voltage and rms voltage; it is often denoted by `Y`.
2155
+ */
2156
+ attribute :>> num: Real;
2157
+ attribute :>> mRef: ModulusOfAdmittanceUnit[1];
2158
+ }
2159
+
2160
+ attribute modulusOfAdmittance: ModulusOfAdmittanceValue[*] nonunique :> scalarQuantities;
2161
+
2162
+ attribute def ModulusOfAdmittanceUnit :> DerivedUnit {
2163
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
2164
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2165
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 3; }
2166
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 2; }
2167
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF, electricCurrentPF); }
2168
+ }
2169
+
2170
+ /* IEC-80000-6 item 6-53 quality factor */
2171
+ attribute def QualityFactorValue :> DimensionOneValue {
2172
+ doc
2173
+ /*
2174
+ * source: item 6-53 quality factor
2175
+ * symbol(s): `Q`
2176
+ * application domain: generic
2177
+ * name: QualityFactor (specializes DimensionOneQuantity)
2178
+ * quantity dimension: 1
2179
+ * measurement unit(s): 1
2180
+ * tensor order: 0
2181
+ * definition: for non-radiating systems, if `underline(Z) = R + jX`, then `Q = |X|/R` where `underline(Z)` is impedance (item 6-51. 1), `R` is resistance (item 6-51 .2), and `X` is reactance (item 6-51.3)
2182
+ * remarks: None.
2183
+ */
2184
+ }
2185
+ attribute qualityFactor: QualityFactorValue :> scalarQuantities;
2186
+
2187
+ /* IEC-80000-6 item 6-54 loss factor */
2188
+ attribute def LossFactorValue :> DimensionOneValue {
2189
+ doc
2190
+ /*
2191
+ * source: item 6-54 loss factor
2192
+ * symbol(s): `d`
2193
+ * application domain: generic
2194
+ * name: LossFactor (specializes DimensionOneQuantity)
2195
+ * quantity dimension: 1
2196
+ * measurement unit(s): 1
2197
+ * tensor order: 0
2198
+ * definition: `d = 1/Q` where `Q` quality factor (item 6-53)
2199
+ * remarks: It is also named dissipation factor.
2200
+ */
2201
+ }
2202
+ attribute lossFactor: LossFactorValue :> scalarQuantities;
2203
+
2204
+ /* IEC-80000-6 item 6-55 loss angle */
2205
+ attribute lossAngle: AngularMeasureValue :> scalarQuantities {
2206
+ doc
2207
+ /*
2208
+ * source: item 6-55 loss angle
2209
+ * symbol(s): `δ`
2210
+ * application domain: generic
2211
+ * name: LossAngle (specializes AngularMeasure)
2212
+ * quantity dimension: 1
2213
+ * measurement unit(s): rad
2214
+ * tensor order: 0
2215
+ * definition: `δ = arctan d` where `d` is loss factor (item 6-54)
2216
+ * remarks: See IEC 60050-131 , item 131-12-49.
2217
+ */
2218
+ }
2219
+
2220
+ /* IEC-80000-6 item 6-56 active power */
2221
+ attribute activePower: PowerValue :> scalarQuantities {
2222
+ doc
2223
+ /*
2224
+ * source: item 6-56 active power
2225
+ * symbol(s): `P`
2226
+ * application domain: generic
2227
+ * name: ActivePower (specializes Power)
2228
+ * quantity dimension: L^2*M^1*T^-3
2229
+ * measurement unit(s): W
2230
+ * tensor order: 0
2231
+ * definition: `P = 1/T int_0^T p dt` where `T` is the period (ISO 80000-3, item 3-12) and `p` is instantaneous power (item 6-45)
2232
+ * remarks: In complex notation, `P = "Re" underline(S)` where `underline(S)` is complex power (item 6-59).
2233
+ */
2234
+ }
2235
+
2236
+ /* IEC-80000-6 item 6-57 apparent power */
2237
+ attribute apparentPower: PowerValue :> scalarQuantities {
2238
+ doc
2239
+ /*
2240
+ * source: item 6-57 apparent power
2241
+ * symbol(s): ``, `underline(S)`, ``
2242
+ * application domain: generic
2243
+ * name: ApparentPower (specializes Power)
2244
+ * quantity dimension: L^2*M^1*T^-3
2245
+ * measurement unit(s): V*A
2246
+ * tensor order: 0
2247
+ * definition: `|underline(S)| = U I` where `U` is rms value of voltage (item 6-11.3 and `I` is rms value of electric current (item 6-1)
2248
+ * remarks: `U = sqrt(1/T int_0^T u^2 dt)` and `I = sqrt(1/T int_0^T i^2 dt)`. When `u = sqrt 2 U cos(ωt)` and `i = sqrt 2 I cos(ωt - φ)`, then `P = U I cos(φ)`, `Q = U I sin(φ)` and `λ = cos(φ)` . See IEC 60050-131, item 131-11-41 .
2249
+ */
2250
+ }
2251
+
2252
+ /* IEC-80000-6 item 6-58 power factor */
2253
+ attribute def PowerFactorValue :> DimensionOneValue {
2254
+ doc
2255
+ /*
2256
+ * source: item 6-58 power factor
2257
+ * symbol(s): `λ`
2258
+ * application domain: generic
2259
+ * name: PowerFactor (specializes DimensionOneQuantity)
2260
+ * quantity dimension: 1
2261
+ * measurement unit(s): 1
2262
+ * tensor order: 0
2263
+ * definition: `λ = |P|/|S|` where `P` is active power (item 6-56) and `S` is apparent power (item 6-57)
2264
+ * remarks: See I EC 60050-131, item 131-11-46.
2265
+ */
2266
+ }
2267
+ attribute powerFactor: PowerFactorValue :> scalarQuantities;
2268
+
2269
+ /* IEC-80000-6 item 6-59 complex power */
2270
+ attribute complexPower: PowerValue :> scalarQuantities {
2271
+ doc
2272
+ /*
2273
+ * source: item 6-59 complex power
2274
+ * symbol(s): `underline(S)`
2275
+ * application domain: generic
2276
+ * name: ComplexPower (specializes Power)
2277
+ * quantity dimension: L^2*M^1*T^-3
2278
+ * measurement unit(s): V*A
2279
+ * tensor order: 0
2280
+ * definition: `underline(S) = underline(U) * underline(I)^"*"` where `underline(U)` is voltage phasor (item 6-50) and `underline(I)^"*"` is the complex conjugate of the current phasor (item 6-49)
2281
+ * remarks: `underline(S) = P + jQ` where `P` is active power (item 6-56) and `Q` is reactive power (item 6-60). See IEC 60050-131, item 131-11-39.
2282
+ */
2283
+ }
2284
+
2285
+ /* IEC-80000-6 item 6-60 reactive power */
2286
+ attribute reactivePower: PowerValue :> scalarQuantities {
2287
+ doc
2288
+ /*
2289
+ * source: item 6-60 reactive power
2290
+ * symbol(s): `Q`
2291
+ * application domain: generic
2292
+ * name: ReactivePower (specializes Power)
2293
+ * quantity dimension: L^2*M^1*T^-3
2294
+ * measurement unit(s): V*A, var
2295
+ * tensor order: 0
2296
+ * definition: `Q = "Im" underline(S)` where `underline(S)` is complex power (item 6-59)
2297
+ * remarks: See IEC 60050-131, item 131-11-44.
2298
+ */
2299
+ }
2300
+
2301
+ /* IEC-80000-6 item 6-61 non-active power */
2302
+ attribute nonActivePower: PowerValue :> scalarQuantities {
2303
+ doc
2304
+ /*
2305
+ * source: item 6-61 non-active power
2306
+ * symbol(s): `Q'`
2307
+ * application domain: generic
2308
+ * name: NonActivePower (specializes Power)
2309
+ * quantity dimension: L^2*M^1*T^-3
2310
+ * measurement unit(s): V*A
2311
+ * tensor order: 0
2312
+ * definition: `Q' = sqrt(|underline(S)|^2 - P^2)` where `|underline(S)|` is apparent power (item 6-57) and `P` is active power (item 6-56)
2313
+ * remarks: See IEC 60050-131, item 131-11-43.
2314
+ */
2315
+ }
2316
+
2317
+ /* IEC-80000-6 item 6-62 active energy */
2318
+ attribute activeEnergy: EnergyValue :> scalarQuantities {
2319
+ doc
2320
+ /*
2321
+ * source: item 6-62 active energy
2322
+ * symbol(s): `W`
2323
+ * application domain: generic
2324
+ * name: ActiveEnergy (specializes Energy)
2325
+ * quantity dimension: L^2*M^1*T^-2
2326
+ * measurement unit(s): J, W*h
2327
+ * tensor order: 0
2328
+ * definition: `W = int_(t_1)^(t_2) p dt` where `p` is instantaneous power (item 6-45), and the integral interval is the time interval from `t_1` to `t_2`
2329
+ * remarks: None.
2330
+ */
2331
+ }
2332
+
2333
+ }