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,2726 @@
1
+ standard library package ISQAtomicNuclear {
2
+ doc
3
+ /*
4
+ * International System of Quantities and Units
5
+ * Generated on 2025-03-13T15:00:05Z from standard ISO-80000-10:2019 "Atomic and nuclear physics"
6
+ * see also https://www.iso.org/standard/64980.html
7
+ *
8
+ * Note 1: In documentation comments, AsciiMath notation (see http://asciimath.org/) is used for mathematical concepts,
9
+ * with Greek letters in Unicode encoding. In running text, AsciiMath is placed between backticks.
10
+ * Note 2: For vector and tensor quantities currently the unit and quantity value type for their (scalar) magnitude is
11
+ * defined, as well as their typical Cartesian 3d VectorMeasurementReference (i.e. coordinate system)
12
+ * or TensorMeasurementReference.
13
+ */
14
+
15
+ private import ScalarValues::Real;
16
+ private import Quantities::*;
17
+ private import MeasurementReferences::*;
18
+ private import ISQBase::*;
19
+
20
+ /* Quantity definitions referenced from other ISQ packages */
21
+ private import ISQChemistryMolecular::DiffusionCoefficientUnit;
22
+ private import ISQChemistryMolecular::DiffusionCoefficientValue;
23
+ private import ISQChemistryMolecular::diffusionCoefficient;
24
+ private import ISQElectromagnetism::ElectricChargeValue;
25
+ private import ISQSpaceTime::AngularFrequencyValue;
26
+ private import ISQSpaceTime::AreaValue;
27
+ private import ISQThermodynamics::EnergyValue;
28
+
29
+ /* ISO-80000-10 item 10-1.1 atomic number, proton number */
30
+ attribute atomicNumber: CountValue :> scalarQuantities {
31
+ doc
32
+ /*
33
+ * source: item 10-1.1 atomic number, proton number
34
+ * symbol(s): `Z`
35
+ * application domain: generic
36
+ * name: AtomicNumber (specializes Count)
37
+ * quantity dimension: 1
38
+ * measurement unit(s): 1
39
+ * tensor order: 0
40
+ * definition: number of protons in an atomic nucleus
41
+ * remarks: A nuclide is a species of atom with specified numbers of protons and neutrons. Nuclides with the same value of `Z` but different values of `N` are called isotopes of an element. The ordinal number of an element in the periodic table is equal to the atomic number. The atomic number equals the quotient of the charge (IEC 80000-6) of the nucleus and the elementary charge (ISO 80000-1).
42
+ */
43
+ }
44
+
45
+ alias protonNumber for atomicNumber;
46
+
47
+ /* ISO-80000-10 item 10-1.2 neutron number */
48
+ attribute neutronNumber: CountValue :> scalarQuantities {
49
+ doc
50
+ /*
51
+ * source: item 10-1.2 neutron number
52
+ * symbol(s): `N`
53
+ * application domain: generic
54
+ * name: NeutronNumber (specializes Count)
55
+ * quantity dimension: 1
56
+ * measurement unit(s): 1
57
+ * tensor order: 0
58
+ * definition: number of neutrons in an atomic nucleus
59
+ * remarks: Nuclides with the same value of `N` but different values of `Z` are called isotones. `N - Z` is called the neutron excess number.
60
+ */
61
+ }
62
+
63
+ /* ISO-80000-10 item 10-1.3 nucleon number, mass number */
64
+ attribute nucleonNumber: CountValue :> scalarQuantities {
65
+ doc
66
+ /*
67
+ * source: item 10-1.3 nucleon number, mass number
68
+ * symbol(s): `A`
69
+ * application domain: generic
70
+ * name: NucleonNumber (specializes Count)
71
+ * quantity dimension: 1
72
+ * measurement unit(s): 1
73
+ * tensor order: 0
74
+ * definition: number of nucleons in an atomic nucleus
75
+ * remarks: `A` = `Z` + `N` Nuclides with the same value of `A` are called isobars.
76
+ */
77
+ }
78
+
79
+ alias massNumber for nucleonNumber;
80
+
81
+ /* ISO-80000-10 item 10-2 rest mass, proper mass */
82
+ attribute restMass: MassValue :> scalarQuantities {
83
+ doc
84
+ /*
85
+ * source: item 10-2 rest mass, proper mass
86
+ * symbol(s): `m(X)`, `m_X`
87
+ * application domain: generic
88
+ * name: RestMass (specializes Mass)
89
+ * quantity dimension: M^1
90
+ * measurement unit(s): kg, Da, u
91
+ * tensor order: 0
92
+ * definition: for particle X, mass (ISO 80000-4) of that particle at rest in an inertial frame
93
+ * remarks: EXAMPLE `m(H_2O)` for a water molecule, `m_e` for an electron. Rest mass is often denoted `m_0`. 1 u is equal to 1/12 times the mass of a free carbon 12 atom, at rest and in its ground state. 1 Da = 1 u
94
+ */
95
+ }
96
+
97
+ alias properMass for restMass;
98
+
99
+ /* ISO-80000-10 item 10-3 rest energy */
100
+ attribute restEnergy: EnergyValue :> scalarQuantities {
101
+ doc
102
+ /*
103
+ * source: item 10-3 rest energy
104
+ * symbol(s): `E_0`
105
+ * application domain: generic
106
+ * name: RestEnergy (specializes Energy)
107
+ * quantity dimension: L^2*M^1*T^-2
108
+ * measurement unit(s): J, N*m, kg*m^2*s^-2
109
+ * tensor order: 0
110
+ * definition: energy `E_0` (ISO 80000-5) of a particle at rest: `E_0 = m_0 c_0^2` where `m_0` is the rest mass (item 10-2) of that particle, and `c_0` is speed of light in vacuum (ISO 80000-1)
111
+ * remarks: None.
112
+ */
113
+ }
114
+
115
+ /* ISO-80000-10 item 10-4.1 atomic mass */
116
+ attribute atomicMass: MassValue :> scalarQuantities {
117
+ doc
118
+ /*
119
+ * source: item 10-4.1 atomic mass
120
+ * symbol(s): `m(X)`, `m_X`
121
+ * application domain: generic
122
+ * name: AtomicMass (specializes Mass)
123
+ * quantity dimension: M^1
124
+ * measurement unit(s): kg, Da, u
125
+ * tensor order: 0
126
+ * definition: rest mass (item 10-2) of an atom X in the ground state
127
+ * remarks: `m(X)/m_u` is called the relative atomic mass. 1 u is equal to 1/12 times the mass of a free carbon 12 atom, at rest and in its ground state. 1 Da = 1 u
128
+ */
129
+ }
130
+
131
+ /* ISO-80000-10 item 10-4.2 nuclidic mass */
132
+ attribute nuclidicMass: MassValue :> scalarQuantities {
133
+ doc
134
+ /*
135
+ * source: item 10-4.2 nuclidic mass
136
+ * symbol(s): `m(X)`, `m_X`
137
+ * application domain: generic
138
+ * name: NuclidicMass (specializes Mass)
139
+ * quantity dimension: M^1
140
+ * measurement unit(s): kg, Da, u
141
+ * tensor order: 0
142
+ * definition: rest mass (item 10-2) of a nuclide X in the ground state
143
+ * remarks: 1 u is equal to 1/12 times the mass of a free carbon 12 atom, at rest and in its ground state. 1 Da = 1 u
144
+ */
145
+ }
146
+
147
+ /* ISO-80000-10 item 10-4.3 unified atomic mass constant */
148
+ attribute unifiedAtomicMassConstant: MassValue :> scalarQuantities {
149
+ doc
150
+ /*
151
+ * source: item 10-4.3 unified atomic mass constant
152
+ * symbol(s): `m_u`
153
+ * application domain: generic
154
+ * name: UnifiedAtomicMassConstant (specializes Mass)
155
+ * quantity dimension: M^1
156
+ * measurement unit(s): kg, Da, u
157
+ * tensor order: 0
158
+ * definition: 1/12 of the mass (ISO 80000-4) of an atom of the nuclide ^(12)C in the ground state at rest
159
+ * remarks: 1 u is equal to 1/12 times the mass of a free carbon 12 atom, at rest and in its ground state. 1 Da = 1 u
160
+ */
161
+ }
162
+
163
+ /* ISO-80000-10 item 10-5.1 elementary charge */
164
+ attribute elementaryCharge: ElectricChargeValue :> scalarQuantities {
165
+ doc
166
+ /*
167
+ * source: item 10-5.1 elementary charge
168
+ * symbol(s): `e`
169
+ * application domain: generic
170
+ * name: ElementaryCharge (specializes ElectricCharge)
171
+ * quantity dimension: T^1*I^1
172
+ * measurement unit(s): C, s*A
173
+ * tensor order: 0
174
+ * definition: one of the fundamental constants in the SI system (ISO 80000-1), equal to the charge of the proton and opposite to the charge of the electron
175
+ * remarks: None.
176
+ */
177
+ }
178
+
179
+ /* ISO-80000-10 item 10-5.2 charge number, ionization number */
180
+ attribute def ChargeNumberValue :> DimensionOneValue {
181
+ doc
182
+ /*
183
+ * source: item 10-5.2 charge number, ionization number
184
+ * symbol(s): `c`
185
+ * application domain: generic
186
+ * name: ChargeNumber (specializes DimensionOneQuantity)
187
+ * quantity dimension: 1
188
+ * measurement unit(s): 1
189
+ * tensor order: 0
190
+ * definition: for a particle, quotient of the electric charge (IEC 80000-6) and the elementary charge (ISO 80000-1)
191
+ * remarks: A particle is said to be electrically neutral if its charge number is equal to zero. The charge number of a particle can be positive, negative, or zero. The state of charge of a particle may be presented as a superscript to the symbol of that particle, e.g. `H^+, He^(++), Al^(3+), Cl^-, S^(--), N^(3-)`.
192
+ */
193
+ }
194
+ attribute chargeNumber: ChargeNumberValue :> scalarQuantities;
195
+
196
+ alias ionizationNumber for chargeNumber;
197
+
198
+ /* ISO-80000-10 item 10-6 Bohr radius */
199
+ attribute bohrRadius: LengthValue :> scalarQuantities {
200
+ doc
201
+ /*
202
+ * source: item 10-6 Bohr radius
203
+ * symbol(s): `a_0`
204
+ * application domain: generic
205
+ * name: BohrRadius (specializes Length)
206
+ * quantity dimension: L^1
207
+ * measurement unit(s): m, Å
208
+ * tensor order: 0
209
+ * definition: radius (ISO 80000-3) of the electron orbital in the hydrogen atom in its ground state in the Bohr model of the atom: `a_0 = (4 π ε_0 ℏ^2)/(m_e e^2)` where `ε_0` is the electric constant (IEC 80000-6), `ℏ` is the reduced Planck constant (ISO 80000-1), `m_e` is the rest mass (item 10-2) of electron, and `e` is the elementary charge (ISO 80000-1)
210
+ * remarks: The radius of the electron orbital in the H atom in its ground state is `a_0` in the Bohr model of the atom. ångström (Å), `1 Å := 10^-10 m`.
211
+ */
212
+ }
213
+
214
+ /* ISO-80000-10 item 10-7 Rydberg constant */
215
+ attribute def RydbergConstantValue :> ScalarQuantityValue {
216
+ doc
217
+ /*
218
+ * source: item 10-7 Rydberg constant
219
+ * symbol(s): `R_∞`
220
+ * application domain: generic
221
+ * name: RydbergConstant
222
+ * quantity dimension: L^-1
223
+ * measurement unit(s): m^-1
224
+ * tensor order: 0
225
+ * definition: spectroscopic constant that determines the wave numbers of the lines in the spectrum of hydrogen: `R_(oo) = e^2/(8 π ε_0 a_0 h c_0)` where `e` is the elementary charge (ISO 80000-1), `ε_0` is the electric constant (IEC 80000-6), `a_0` is the Bohr radius (item 10-6), `h` is the Planck constant (ISO 80000-1), and `c_0` is the speed of light in vacuum (ISO 80000-1)
226
+ * remarks: The quantity `R_y = R_∞ h c_0` is called the Rydberg energy.
227
+ */
228
+ attribute :>> num: Real;
229
+ attribute :>> mRef: RydbergConstantUnit[1];
230
+ }
231
+
232
+ attribute rydbergConstant: RydbergConstantValue[*] nonunique :> scalarQuantities;
233
+
234
+ attribute def RydbergConstantUnit :> DerivedUnit {
235
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
236
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
237
+ }
238
+
239
+ /* ISO-80000-10 item 10-8 Hartree energy */
240
+ attribute def HartreeEnergyValue :> ScalarQuantityValue {
241
+ doc
242
+ /*
243
+ * source: item 10-8 Hartree energy
244
+ * symbol(s): `E_H`, `E_h`
245
+ * application domain: generic
246
+ * name: HartreeEnergy
247
+ * quantity dimension: L^6*M^3*T^-6
248
+ * measurement unit(s): eV*J*kg*m^2*s^-2
249
+ * tensor order: 0
250
+ * definition: energy (ISO 80000-5) of the electron in a hydrogen atom in its ground state: `E_H = e^2/(4 π ε_0 a_0)` where `e` is the elementary charge (ISO 80000-1), `ε_0` is the electric constant (IEC 80000-6), and `a_0` is the Bohr radius (item 10-6)
251
+ * remarks: The energy of the electron in an H atom in its ground state is `E_H`.
252
+ */
253
+ attribute :>> num: Real;
254
+ attribute :>> mRef: HartreeEnergyUnit[1];
255
+ }
256
+
257
+ attribute hartreeEnergy: HartreeEnergyValue[*] nonunique :> scalarQuantities;
258
+
259
+ attribute def HartreeEnergyUnit :> DerivedUnit {
260
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 6; }
261
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 3; }
262
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -6; }
263
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
264
+ }
265
+
266
+ /* ISO-80000-10 item 10-9.1 magnetic dipole moment */
267
+ attribute def MagneticDipoleMomentValue :> ScalarQuantityValue {
268
+ doc
269
+ /*
270
+ * source: item 10-9.1 magnetic dipole moment (magnitude)
271
+ * symbol(s): `μ`
272
+ * application domain: atomic physics
273
+ * name: MagneticDipoleMoment
274
+ * quantity dimension: L^2*I^1
275
+ * measurement unit(s): m^2*A
276
+ * tensor order: 0
277
+ * definition: for a particle, vector (ISO 80000-2) quantity causing a change to its energy (ISO 80000-5) `ΔW` in an external magnetic field of field flux density `vec(B)` (IEC 80000-6): `ΔW` = -`vec(μ)` · `vec(B)`
278
+ * remarks: For an atom or nucleus, this energy is quantized and can be written as: `W` = `g μ_x M B` where `g` is the appropriate `g` factor (item 10-14.1 or item 10-14.2), `μ_x` is mostly the Bohr magneton or nuclear magneton (item 10-9.2 or item 10-9.3), `M` is magnetic quantum number (item 10-13.4), and `B` is magnitude of the magnetic flux density. See also IEC 80000-6.
279
+ */
280
+ attribute :>> num: Real;
281
+ attribute :>> mRef: MagneticDipoleMomentUnit[1];
282
+ }
283
+
284
+ attribute magneticDipoleMoment: MagneticDipoleMomentValue[*] nonunique :> scalarQuantities;
285
+
286
+ attribute def MagneticDipoleMomentUnit :> DerivedUnit {
287
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
288
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
289
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, electricCurrentPF); }
290
+ }
291
+
292
+ attribute def CartesianMagneticDipoleMoment3dVector :> '3dVectorQuantityValue' {
293
+ doc
294
+ /*
295
+ * source: item 10-9.1 magnetic dipole moment (vector)
296
+ * symbol(s): `vec(μ)`
297
+ * application domain: atomic physics
298
+ * name: MagneticDipoleMoment
299
+ * quantity dimension: L^2*I^1
300
+ * measurement unit(s): m^2*A
301
+ * tensor order: 1
302
+ * definition: for a particle, vector (ISO 80000-2) quantity causing a change to its energy (ISO 80000-5) `ΔW` in an external magnetic field of field flux density `vec(B)` (IEC 80000-6): `ΔW` = -`vec(μ)` · `vec(B)`
303
+ * remarks: For an atom or nucleus, this energy is quantized and can be written as: `W` = `g μ_x M B` where `g` is the appropriate `g` factor (item 10-14.1 or item 10-14.2), `μ_x` is mostly the Bohr magneton or nuclear magneton (item 10-9.2 or item 10-9.3), `M` is magnetic quantum number (item 10-13.4), and `B` is magnitude of the magnetic flux density. See also IEC 80000-6.
304
+ */
305
+ attribute :>> isBound = false;
306
+ attribute :>> mRef: CartesianMagneticDipoleMoment3dCoordinateFrame[1];
307
+ }
308
+
309
+ attribute cartesianMagneticDipoleMoment3dVector: CartesianMagneticDipoleMoment3dVector :> vectorQuantities;
310
+
311
+ attribute def CartesianMagneticDipoleMoment3dCoordinateFrame :> '3dCoordinateFrame' {
312
+ attribute :>> isBound = false;
313
+ attribute :>> isOrthogonal = true;
314
+ attribute :>> mRefs: MagneticDipoleMomentUnit[3];
315
+ }
316
+
317
+ /* ISO-80000-10 item 10-9.2 Bohr magneton */
318
+ attribute bohrMagneton: MagneticDipoleMomentValue :> scalarQuantities {
319
+ doc
320
+ /*
321
+ * source: item 10-9.2 Bohr magneton
322
+ * symbol(s): `μ_B`
323
+ * application domain: generic
324
+ * name: BohrMagneton (specializes MagneticDipoleMoment)
325
+ * quantity dimension: L^2*I^1
326
+ * measurement unit(s): m^2*A
327
+ * tensor order: 0
328
+ * definition: magnitude of the magnetic moment of an electron in a state with orbital angular momentum quantum number `l`=1 (item 10-13.3) due to its orbital motion: `μ_B = (e ℏ)/(2 m_e)` where `e` is the elementary charge (ISO 80000-1), `ℏ` is the reduced Planck constant (ISO 80000-1), and `m_e` is the rest mass (item 10-2) of electron
329
+ * remarks: None.
330
+ */
331
+ }
332
+
333
+ /* ISO-80000-10 item 10-9.3 nuclear magneton */
334
+ attribute nuclearMagneton: MagneticDipoleMomentValue :> scalarQuantities {
335
+ doc
336
+ /*
337
+ * source: item 10-9.3 nuclear magneton
338
+ * symbol(s): `μ_N`
339
+ * application domain: generic
340
+ * name: NuclearMagneton (specializes MagneticDipoleMoment)
341
+ * quantity dimension: L^2*I^1
342
+ * measurement unit(s): m^2*A
343
+ * tensor order: 0
344
+ * definition: absolute value of the magnetic moment of a nucleus: `μ_N = (e ℏ)/(2 m_p)` where `e` is the elementary charge (ISO 80000-1), `ℏ` is the reduced Planck constant (ISO 80000-1), and `m_p` is the rest mass (item 10-2) of proton
345
+ * remarks: Subscript N stands for nucleus. For the neutron magnetic moment, subscript n is used. The magnetic moments of protons and neutrons differ from this quantity by their specific `g` factors (item 10-14.2).
346
+ */
347
+ }
348
+
349
+ /* ISO-80000-10 item 10-10 spin */
350
+ attribute def SpinValue :> ScalarQuantityValue {
351
+ doc
352
+ /*
353
+ * source: item 10-10 spin (magnitude)
354
+ * symbol(s): `s`
355
+ * application domain: generic
356
+ * name: Spin
357
+ * quantity dimension: L^2*M^1*T^-1
358
+ * measurement unit(s): kg*m^2*s^-1
359
+ * tensor order: 0
360
+ * definition: vector (ISO 80000-2) quantity expressing the internal angular momentum (ISO 80000-4) of a particle or a particle system
361
+ * remarks: Spin is an additive vector quantity.
362
+ */
363
+ attribute :>> num: Real;
364
+ attribute :>> mRef: SpinUnit[1];
365
+ }
366
+
367
+ attribute spin: SpinValue[*] nonunique :> scalarQuantities;
368
+
369
+ attribute def SpinUnit :> DerivedUnit {
370
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
371
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
372
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
373
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
374
+ }
375
+
376
+ attribute def CartesianSpin3dVector :> '3dVectorQuantityValue' {
377
+ doc
378
+ /*
379
+ * source: item 10-10 spin (vector)
380
+ * symbol(s): `vec(s)`
381
+ * application domain: generic
382
+ * name: Spin
383
+ * quantity dimension: L^2*M^1*T^-1
384
+ * measurement unit(s): kg*m^2*s^-1
385
+ * tensor order: 1
386
+ * definition: vector (ISO 80000-2) quantity expressing the internal angular momentum (ISO 80000-4) of a particle or a particle system
387
+ * remarks: Spin is an additive vector quantity.
388
+ */
389
+ attribute :>> isBound = false;
390
+ attribute :>> mRef: CartesianSpin3dCoordinateFrame[1];
391
+ }
392
+
393
+ attribute cartesianSpin3dVector: CartesianSpin3dVector :> vectorQuantities;
394
+
395
+ attribute def CartesianSpin3dCoordinateFrame :> '3dCoordinateFrame' {
396
+ attribute :>> isBound = false;
397
+ attribute :>> isOrthogonal = true;
398
+ attribute :>> mRefs: SpinUnit[3];
399
+ }
400
+
401
+ /* ISO-80000-10 item 10-11 total angular momentum */
402
+ attribute def TotalAngularMomentumValue :> ScalarQuantityValue {
403
+ doc
404
+ /*
405
+ * source: item 10-11 total angular momentum (magnitude)
406
+ * symbol(s): `J`
407
+ * application domain: generic
408
+ * name: TotalAngularMomentum
409
+ * quantity dimension: L^2*M^1*T^-1
410
+ * measurement unit(s): J*s*eV*s, kg*m^2*s^-1
411
+ * tensor order: 0
412
+ * definition: vector (ISO 80000-2) quantity in a quantum system composed of the vectorial sum of angular momentum `vec(L)` (ISO 80000-4) and spin `vec(s)` (item 10-10)
413
+ * remarks: In atomic and nuclear physics, orbital angular momentum is usually denoted by `vec(l)` or `vec(L)`. The magnitude of `vec(J)` is quantized so that: `J^2 = ℏ^2 j (j+1)` where `j` is the total angular momentum quantum number (item 10-13.6). Total angular momentum and magnetic dipole moment have the same direction. `j` is not the magnitude of the total angular momentum `vec(J)` but its projection onto the quantization axis, divided by `ℏ`.
414
+ */
415
+ attribute :>> num: Real;
416
+ attribute :>> mRef: TotalAngularMomentumUnit[1];
417
+ }
418
+
419
+ attribute totalAngularMomentum: TotalAngularMomentumValue[*] nonunique :> scalarQuantities;
420
+
421
+ attribute def TotalAngularMomentumUnit :> DerivedUnit {
422
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
423
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
424
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
425
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
426
+ }
427
+
428
+ attribute def CartesianTotalAngularMomentum3dVector :> '3dVectorQuantityValue' {
429
+ doc
430
+ /*
431
+ * source: item 10-11 total angular momentum (vector)
432
+ * symbol(s): `vec(J)`
433
+ * application domain: generic
434
+ * name: TotalAngularMomentum
435
+ * quantity dimension: L^2*M^1*T^-1
436
+ * measurement unit(s): J*s*eV*s, kg*m^2*s^-1
437
+ * tensor order: 1
438
+ * definition: vector (ISO 80000-2) quantity in a quantum system composed of the vectorial sum of angular momentum `vec(L)` (ISO 80000-4) and spin `vec(s)` (item 10-10)
439
+ * remarks: In atomic and nuclear physics, orbital angular momentum is usually denoted by `vec(l)` or `vec(L)`. The magnitude of `vec(J)` is quantized so that: `J^2 = ℏ^2 j (j+1)` where `j` is the total angular momentum quantum number (item 10-13.6). Total angular momentum and magnetic dipole moment have the same direction. `j` is not the magnitude of the total angular momentum `vec(J)` but its projection onto the quantization axis, divided by `ℏ`.
440
+ */
441
+ attribute :>> isBound = false;
442
+ attribute :>> mRef: CartesianTotalAngularMomentum3dCoordinateFrame[1];
443
+ }
444
+
445
+ attribute cartesianTotalAngularMomentum3dVector: CartesianTotalAngularMomentum3dVector :> vectorQuantities;
446
+
447
+ attribute def CartesianTotalAngularMomentum3dCoordinateFrame :> '3dCoordinateFrame' {
448
+ attribute :>> isBound = false;
449
+ attribute :>> isOrthogonal = true;
450
+ attribute :>> mRefs: TotalAngularMomentumUnit[3];
451
+ }
452
+
453
+ /* ISO-80000-10 item 10-12.1 gyromagnetic ratio, magnetogyric ratio, gyromagnetic coefficient */
454
+ attribute def GyromagneticRatioValue :> ScalarQuantityValue {
455
+ doc
456
+ /*
457
+ * source: item 10-12.1 gyromagnetic ratio, magnetogyric ratio, gyromagnetic coefficient
458
+ * symbol(s): `γ`
459
+ * application domain: generic
460
+ * name: GyromagneticRatio
461
+ * quantity dimension: M^-1*T^1*I^1
462
+ * measurement unit(s): A*m^2*J^-1*s^-1, A*s/kg, kg^-1*s*A
463
+ * tensor order: 0
464
+ * definition: proportionality constant between the magnetic dipole moment and the angular momentum: `vec(μ)` = `γ` `vec(J)` where `vec(μ)` is the magnetic dipole moment (item 10-9.1), and `vec(J)` is the total angular momentum (item 10-11)
465
+ * remarks: 1 A·m^2/(J·s) = 1 A·s/kg = 1 T^-1·s^-1 The systematic name is "gyromagnetic coefficient", but "gyromagnetic ratio" is more usual. The gyromagnetic ratio of the proton is denoted by `γ_p`. The gyromagnetic ratio of the neutron is denoted by `γ_n`.
466
+ */
467
+ attribute :>> num: Real;
468
+ attribute :>> mRef: GyromagneticRatioUnit[1];
469
+ }
470
+
471
+ attribute gyromagneticRatio: GyromagneticRatioValue[*] nonunique :> scalarQuantities;
472
+
473
+ attribute def GyromagneticRatioUnit :> DerivedUnit {
474
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
475
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
476
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
477
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
478
+ }
479
+
480
+ alias MagnetogyricRatioUnit for GyromagneticRatioUnit;
481
+ alias MagnetogyricRatioValue for GyromagneticRatioValue;
482
+ alias magnetogyricRatio for gyromagneticRatio;
483
+
484
+ alias GyromagneticCoefficientUnit for GyromagneticRatioUnit;
485
+ alias GyromagneticCoefficientValue for GyromagneticRatioValue;
486
+ alias gyromagneticCoefficient for gyromagneticRatio;
487
+
488
+ /* ISO-80000-10 item 10-12.2 gyromagnetic ratio of the electron, magnetogyric ratio of the electron, gyromagnetic coefficient of the electron */
489
+ attribute def GyromagneticRatioOfTheElectronValue :> ScalarQuantityValue {
490
+ doc
491
+ /*
492
+ * source: item 10-12.2 gyromagnetic ratio of the electron, magnetogyric ratio of the electron, gyromagnetic coefficient of the electron
493
+ * symbol(s): `γ_e`
494
+ * application domain: generic
495
+ * name: GyromagneticRatioOfTheElectron
496
+ * quantity dimension: M^-1*T^1*I^1
497
+ * measurement unit(s): A*m^2*J^-1*s^-1, A*s/kg, kg^-1*s*A
498
+ * tensor order: 0
499
+ * definition: proportionality constant between the magnetic dipole moment and the angular momentum of the electron `vec(μ)` = `γ_e` `vec(J)` where `vec(μ)` is the magnetic dipole moment (item 10-9.1), and `vec(J)` is the total angular momentum (item 10-11)
500
+ * remarks: 1 A·m^2/(J·s) = 1 A·s/kg = 1 T^-1·s^-1
501
+ */
502
+ attribute :>> num: Real;
503
+ attribute :>> mRef: GyromagneticRatioOfTheElectronUnit[1];
504
+ }
505
+
506
+ attribute gyromagneticRatioOfTheElectron: GyromagneticRatioOfTheElectronValue[*] nonunique :> scalarQuantities;
507
+
508
+ attribute def GyromagneticRatioOfTheElectronUnit :> DerivedUnit {
509
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
510
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
511
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
512
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
513
+ }
514
+
515
+ alias MagnetogyricRatioOfTheElectronUnit for GyromagneticRatioOfTheElectronUnit;
516
+ alias MagnetogyricRatioOfTheElectronValue for GyromagneticRatioOfTheElectronValue;
517
+ alias magnetogyricRatioOfTheElectron for gyromagneticRatioOfTheElectron;
518
+
519
+ alias GyromagneticCoefficientOfTheElectronUnit for GyromagneticRatioOfTheElectronUnit;
520
+ alias GyromagneticCoefficientOfTheElectronValue for GyromagneticRatioOfTheElectronValue;
521
+ alias gyromagneticCoefficientOfTheElectron for gyromagneticRatioOfTheElectron;
522
+
523
+ /* ISO-80000-10 item 10-13.1 quantum number */
524
+ attribute def QuantumNumberValue :> DimensionOneValue {
525
+ doc
526
+ /*
527
+ * source: item 10-13.1 quantum number
528
+ * symbol(s): `N`, `L`, `M`, `j`, `s`, `F`
529
+ * application domain: generic
530
+ * name: QuantumNumber (specializes DimensionOneQuantity)
531
+ * quantity dimension: 1
532
+ * measurement unit(s): 1
533
+ * tensor order: 0
534
+ * definition: number describing a particular state of a quantum system
535
+ * remarks: Electron states determine the binding energy `E = E(n,l,m,j,s,f)` in an atom. Upper case letters `N, L, M, J, S, F` are usually used for the whole system. The spatial probability distribution of an electron is given by `|Ψ|^2`, where `Ψ` is its wave function. For an electron in an H atom in a non-relativistic approximation, the wave function can be presented as: `Ψ(r,θ,φ) = R_(nl)(r)*Y_l^m(θ,φ)`, where `r,θ,φ` are spherical coordinates (ISO 80000-2) with respect to the nucleus and to a given (quantization) axis, `R_(nl)(r)` is the radial distribution function, and `Y_l^m(θ,φ)` are spherical harmonics. In the Bohr model of one-electron atoms, `n`, `l`, and `m` define the possible orbits of an electron about the nucleus.
536
+ */
537
+ }
538
+ attribute quantumNumber: QuantumNumberValue :> scalarQuantities;
539
+
540
+ /* ISO-80000-10 item 10-13.2 principal quantum number */
541
+ attribute principalQuantumNumber: CountValue :> scalarQuantities {
542
+ doc
543
+ /*
544
+ * source: item 10-13.2 principal quantum number
545
+ * symbol(s): `n`
546
+ * application domain: generic
547
+ * name: PrincipalQuantumNumber (specializes Count)
548
+ * quantity dimension: 1
549
+ * measurement unit(s): 1
550
+ * tensor order: 0
551
+ * definition: atomic quantum number related to the number `n`-1 of radial nodes of one-electron wave functions
552
+ * remarks: In the Bohr model, `n = 1,2,…,∞` is related to the binding energy of an electron and the radius of spherical orbits (principal axis of the elliptic orbits). For an electron in an H atom, the semi-classical radius of its orbit is `r_n = a_0 n^2` and its binding energy is `E_n = E_H/n^2`.
553
+ */
554
+ }
555
+
556
+ /* ISO-80000-10 item 10-13.3 orbital angular momentum quantum number */
557
+ attribute orbitalAngularMomentumQuantumNumber: CountValue :> scalarQuantities {
558
+ doc
559
+ /*
560
+ * source: item 10-13.3 orbital angular momentum quantum number
561
+ * symbol(s): `l`, `l_i`, `L`
562
+ * application domain: generic
563
+ * name: OrbitalAngularMomentumQuantumNumber (specializes Count)
564
+ * quantity dimension: 1
565
+ * measurement unit(s): 1
566
+ * tensor order: 0
567
+ * definition: atomic quantum number related to the orbital angular momentum `l` of a one-electron state
568
+ * remarks: `abs(l)^2 = ℏ^2 l (l-1)` , `l = 0, 1, …, n-1` where `vec(l)` is the orbital angular momentum and `ℏ` is the reduced Planck constant (ISO 80000-1). If reference is made to a specific particle `i`, the symbol `l_i` is used instead of `l`; if reference is made to the whole system, the symbol `L` is used instead of `l`. An electron in an H atom for `l = 0` appears as a spherical cloud. In the Bohr model, it is related to the form of the orbit.
569
+ */
570
+ }
571
+
572
+ /* ISO-80000-10 item 10-13.4 magnetic quantum number */
573
+ attribute magneticQuantumNumber: CountValue :> scalarQuantities {
574
+ doc
575
+ /*
576
+ * source: item 10-13.4 magnetic quantum number
577
+ * symbol(s): `m`, `m_i`, `M`
578
+ * application domain: generic
579
+ * name: MagneticQuantumNumber (specializes Count)
580
+ * quantity dimension: 1
581
+ * measurement unit(s): 1
582
+ * tensor order: 0
583
+ * definition: atomic quantum number related to the `z` component `l_z`, `j_z` or `s_z`, of the orbital, total, or spin angular momentum
584
+ * remarks: `l_z = m_l ℏ` , `j_z = m_j ℏ` , and `s_z = m_s ℏ` , with the ranges from `-l` to `l`, from `-j` to `j`, and `±1/2`, respectively. `m_i` refers to a specific particle `i`. `M` is used for the whole system. Subscripts `l`, `s`, `j`, etc., as appropriate, indicate the angular momentum involved. `ℏ` is the reduced Planck constant (ISO 80000-1).
585
+ */
586
+ }
587
+
588
+ /* ISO-80000-10 item 10-13.5 spin quantum number */
589
+ attribute spinQuantumNumber: CountValue :> scalarQuantities {
590
+ doc
591
+ /*
592
+ * source: item 10-13.5 spin quantum number
593
+ * symbol(s): `s`
594
+ * application domain: generic
595
+ * name: SpinQuantumNumber (specializes Count)
596
+ * quantity dimension: 1
597
+ * measurement unit(s): 1
598
+ * tensor order: 0
599
+ * definition: characteristic quantum number `s` of a particle, related to its spin (item 10-10), `vec(s)`: `s^2 = ℏ^2 s (s+1)` where `ℏ` is the reduced Planck constant (ISO 80000-1)
600
+ * remarks: Spin quantum numbers of fermions are odd multiples of 1/2, and those of bosons are integers.
601
+ */
602
+ }
603
+
604
+ /* ISO-80000-10 item 10-13.6 total angular momentum quantum number */
605
+ attribute totalAngularMomentumQuantumNumber: CountValue :> scalarQuantities {
606
+ doc
607
+ /*
608
+ * source: item 10-13.6 total angular momentum quantum number
609
+ * symbol(s): `j`, `j_i`, `J`
610
+ * application domain: generic
611
+ * name: TotalAngularMomentumQuantumNumber (specializes Count)
612
+ * quantity dimension: 1
613
+ * measurement unit(s): 1
614
+ * tensor order: 0
615
+ * definition: quantum number in an atom describing the magnitude of total angular momentum `vec(J)` (item 10-11)
616
+ * remarks: `j_i` refers to a specific particle `i`; `J` is used for the whole system. The quantum number `J` and the magnitude of total angular momentum `vec(J)` (item 10-11) are different quantities. The two values of `j` are `l`±1/2. (See item 10-13.3.)
617
+ */
618
+ }
619
+
620
+ /* ISO-80000-10 item 10-13.7 nuclear spin quantum number */
621
+ attribute nuclearSpinQuantumNumber: CountValue :> scalarQuantities {
622
+ doc
623
+ /*
624
+ * source: item 10-13.7 nuclear spin quantum number
625
+ * symbol(s): `I`
626
+ * application domain: generic
627
+ * name: NuclearSpinQuantumNumber (specializes Count)
628
+ * quantity dimension: 1
629
+ * measurement unit(s): 1
630
+ * tensor order: 0
631
+ * definition: quantum number related to the total angular momentum (item 10-11), `vec(J)`, of a nucleus in any specified state, normally called nuclear spin: `vec(J)^2 = ℏ^2 I (I+1)` where `ℏ` is the reduced Planck constant (ISO 80000-1)
632
+ * remarks: Nuclear spin is composed of spins of the nucleons (protons and neutrons) and their (orbital) motions. In principle there is no upper limit for the nuclear spin quantum number. It has possible values `I` = 0,1,2,… for even `A` and `I = 1/2, 3/2, …` for odd `A`. In nuclear and particle physics, `vec(J)` is often used.
633
+ */
634
+ }
635
+
636
+ /* ISO-80000-10 item 10-13.8 hyperfine structure quantum number */
637
+ attribute hyperfineStructureQuantumNumber: CountValue :> scalarQuantities {
638
+ doc
639
+ /*
640
+ * source: item 10-13.8 hyperfine structure quantum number
641
+ * symbol(s): `F`
642
+ * application domain: generic
643
+ * name: HyperfineStructureQuantumNumber (specializes Count)
644
+ * quantity dimension: 1
645
+ * measurement unit(s): 1
646
+ * tensor order: 0
647
+ * definition: quantum number of an atom describing the inclination of the nuclear spin with respect to a quantization axis given by the magnetic field produced by the orbital electrons
648
+ * remarks: The interval of `F` is │`I`-`J`│, │`I`-`J`│+1, ..., `I`-`J`. This is related to the hyperfine splitting of the atomic energy levels due to the interaction between the electron and nuclear magnetic moments.
649
+ */
650
+ }
651
+
652
+ /* ISO-80000-10 item 10-14.1 Lande factor, g factor of atom */
653
+ attribute def LandeFactorValue :> DimensionOneValue {
654
+ doc
655
+ /*
656
+ * source: item 10-14.1 Lande factor, g factor of atom
657
+ * symbol(s): `g`
658
+ * application domain: generic
659
+ * name: LandeFactor (specializes DimensionOneQuantity)
660
+ * quantity dimension: 1
661
+ * measurement unit(s): 1
662
+ * tensor order: 0
663
+ * definition: quotient of the magnetic dipole moment of an atom, and the product of the total angular momentum quantum number and the Bohr magneton: `g = μ/(J*μ_B)` where `μ` is magnitude of magnetic dipole moment (item 10-9.1), `J` is total angular momentum quantum number (item 10-13.6), and `μ_B` is the Bohr magneton (item 10-9.2)
664
+ * remarks: These quantities are also called `g` values. The Landé factor can be calculated from the expression: `g(L, S, J) = 1 + (g_e -1) xx (J(J+1) + S(S+1) - L(L+1))/(2J(J+1))` where `g_e` is the` g` factor of the electron.
665
+ */
666
+ }
667
+ attribute landeFactor: LandeFactorValue :> scalarQuantities;
668
+
669
+ alias gFactorOfAtom for landeFactor;
670
+
671
+ /* ISO-80000-10 item 10-14.2 g factor of nucleus or nuclear particle */
672
+ attribute def GFactorOfNucleusOrNuclearParticleValue :> DimensionOneValue {
673
+ doc
674
+ /*
675
+ * source: item 10-14.2 g factor of nucleus or nuclear particle
676
+ * symbol(s): `g`
677
+ * application domain: generic
678
+ * name: GFactorOfNucleusOrNuclearParticle (specializes DimensionOneQuantity)
679
+ * quantity dimension: 1
680
+ * measurement unit(s): 1
681
+ * tensor order: 0
682
+ * definition: quotient of the magnetic dipole moment of an atom, and the product of the nuclear spin quantum number and the nuclear magneton: `g = μ/(I*μ_N)` where `μ` is magnitude of magnetic dipole moment (item 10-9.1), `I` is nuclear spin quantum number (item 10-13.7), and `μ_N` is the nuclear magneton (item 10-9.3)
683
+ * remarks: The `g` factors for nuclei or nucleons are known from measurements.
684
+ */
685
+ }
686
+ attribute gFactorOfNucleusOrNuclearParticle: GFactorOfNucleusOrNuclearParticleValue :> scalarQuantities;
687
+
688
+ /* ISO-80000-10 item 10-15.1 Larmor angular frequency */
689
+ attribute larmorAngularFrequency: AngularFrequencyValue :> scalarQuantities {
690
+ doc
691
+ /*
692
+ * source: item 10-15.1 Larmor angular frequency
693
+ * symbol(s): `ω_L`
694
+ * application domain: generic
695
+ * name: LarmorAngularFrequency (specializes AngularFrequency)
696
+ * quantity dimension: T^-1
697
+ * measurement unit(s): rad*s^-1, s^-1
698
+ * tensor order: 0
699
+ * definition: angular frequency (ISO 80000-3) of the electron angular momentum (ISO 80000-4) vector precession about the axis of an external magnetic field: `ω_L = e/(2 m_e) B` where `e` is the elementary charge (ISO 80000-1), `m_e` is the rest mass (item 10-2) of electron, and `B` is magnetic flux density (IEC 80000-6)
700
+ * remarks: None.
701
+ */
702
+ }
703
+
704
+ /* ISO-80000-10 item 10-15.2 Larmor frequency */
705
+ attribute def LarmorFrequencyValue :> ScalarQuantityValue {
706
+ doc
707
+ /*
708
+ * source: item 10-15.2 Larmor frequency
709
+ * symbol(s): `ν_L`
710
+ * application domain: generic
711
+ * name: LarmorFrequency
712
+ * quantity dimension: T^-1
713
+ * measurement unit(s): s^-1
714
+ * tensor order: 0
715
+ * definition: quotient of Larmor angular frequency (ISO 80000-3) and 2π
716
+ * remarks: None.
717
+ */
718
+ attribute :>> num: Real;
719
+ attribute :>> mRef: LarmorFrequencyUnit[1];
720
+ }
721
+
722
+ attribute larmorFrequency: LarmorFrequencyValue[*] nonunique :> scalarQuantities;
723
+
724
+ attribute def LarmorFrequencyUnit :> DerivedUnit {
725
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
726
+ attribute :>> quantityDimension { :>> quantityPowerFactors = durationPF; }
727
+ }
728
+
729
+ /* ISO-80000-10 item 10-15.3 nuclear precession angular frequency */
730
+ attribute nuclearPrecessionAngularFrequency: AngularFrequencyValue :> scalarQuantities {
731
+ doc
732
+ /*
733
+ * source: item 10-15.3 nuclear precession angular frequency
734
+ * symbol(s): `ω_N`
735
+ * application domain: generic
736
+ * name: NuclearPrecessionAngularFrequency (specializes AngularFrequency)
737
+ * quantity dimension: T^-1
738
+ * measurement unit(s): rad*s^-1, s^-1
739
+ * tensor order: 0
740
+ * definition: frequency (ISO 80000-3) by which the nucleus angular momentum vector (ISO 80000-4) precesses about the axis of an external magnetic field: `ω_N` = `γ` `B` where `γ` is the gyromagnetic ratio (item 10-12.1), and `B` is magnetic flux density (IEC 80000-6)
741
+ * remarks: None.
742
+ */
743
+ }
744
+
745
+ /* ISO-80000-10 item 10-16 cyclotron angular frequency */
746
+ attribute cyclotronAngularFrequency: AngularFrequencyValue :> scalarQuantities {
747
+ doc
748
+ /*
749
+ * source: item 10-16 cyclotron angular frequency
750
+ * symbol(s): `ω_c`
751
+ * application domain: generic
752
+ * name: CyclotronAngularFrequency (specializes AngularFrequency)
753
+ * quantity dimension: T^-1
754
+ * measurement unit(s): rad*s^-1, s^-1
755
+ * tensor order: 0
756
+ * definition: quotient of the product of the electric charge of a particle and the magnitude of the magnetic flux density of the magnetic field, and the particle mass: `ω_c = abs(q)/m B` where `q` is the electric charge (IEC 80000-6) of the particle, `m` is the mass (ISO 80000-4) of the particle, and `B` is the absolute value of the magnetic flux density (IEC 80000-6)
757
+ * remarks: The quantity `v_c` = `ω_c`/2π is called the cyclotron frequency.
758
+ */
759
+ }
760
+
761
+ /* ISO-80000-10 item 10-17 gyroradius, Larmor radius */
762
+ attribute gyroradius: LengthValue :> scalarQuantities {
763
+ doc
764
+ /*
765
+ * source: item 10-17 gyroradius, Larmor radius
766
+ * symbol(s): `r_g`, `r_L`
767
+ * application domain: generic
768
+ * name: Gyroradius (specializes Length)
769
+ * quantity dimension: L^1
770
+ * measurement unit(s): m
771
+ * tensor order: 0
772
+ * definition: radius (ISO 80000-3) of circular movement of a particle with mass (ISO 80000-4), velocity `vec(v)` (ISO 80000-3), and electric charge `q` (IEC 80000-6), moving in a magnetic field with magnetic flux density `vec(B)` (IEC 80000-6): `r_g = (m abs(vec(v) xx vec(B)))/(q B^2)`
773
+ * remarks: None.
774
+ */
775
+ }
776
+
777
+ alias larmorRadius for gyroradius;
778
+
779
+ /* ISO-80000-10 item 10-18 nuclear quadrupole moment */
780
+ attribute def NuclearQuadrupoleMomentValue :> ScalarQuantityValue {
781
+ doc
782
+ /*
783
+ * source: item 10-18 nuclear quadrupole moment
784
+ * symbol(s): `Q`
785
+ * application domain: generic
786
+ * name: NuclearQuadrupoleMoment
787
+ * quantity dimension: L^2
788
+ * measurement unit(s): m^2
789
+ * tensor order: 0
790
+ * definition: `z` component of the diagonalized tensor of nuclear quadrupole moment: `Q = (1/e) int (3z^2 - r^2) ρ(x, y, z) dV` in the quantum state with the nuclear spin in the field direction (`z`), where `e` is the elementary charge (ISO 80000-1), `r^2 = x^2 + y^2 + z^2`, `ρ(x,y,z)` is the nuclear electric charge density (IEC 80000-6), and `dV` is the volume element `dx dy dz`
791
+ * remarks: The electric nuclear quadrupole moment is `eQ`. This value is equal to the `z` component of the diagonalized tensor of quadrupole moment.
792
+ */
793
+ attribute :>> num: Real;
794
+ attribute :>> mRef: NuclearQuadrupoleMomentUnit[1];
795
+ }
796
+
797
+ attribute nuclearQuadrupoleMoment: NuclearQuadrupoleMomentValue[*] nonunique :> scalarQuantities;
798
+
799
+ attribute def NuclearQuadrupoleMomentUnit :> DerivedUnit {
800
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
801
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
802
+ }
803
+
804
+ /* ISO-80000-10 item 10-19.1 nuclear radius */
805
+ attribute nuclearRadius: LengthValue :> scalarQuantities {
806
+ doc
807
+ /*
808
+ * source: item 10-19.1 nuclear radius
809
+ * symbol(s): `R`
810
+ * application domain: generic
811
+ * name: NuclearRadius (specializes Length)
812
+ * quantity dimension: L^1
813
+ * measurement unit(s): m
814
+ * tensor order: 0
815
+ * definition: conventional radius (ISO 80000-3) of sphere in which the nuclear matter is included
816
+ * remarks: This quantity is not exactly defined. It is given approximately for nuclei in their ground state by: `R = r_0 A^(1//3)` where `r_0 ~~ 1.2 * 10^-15` m, and `A` is the nucleon number (item 10-1.3). Nuclear radius is usually expressed in femtometres, 1 fm = 10^(-15) m.
817
+ */
818
+ }
819
+
820
+ /* ISO-80000-10 item 10-19.2 electron radius */
821
+ attribute electronRadius: LengthValue :> scalarQuantities {
822
+ doc
823
+ /*
824
+ * source: item 10-19.2 electron radius
825
+ * symbol(s): `r_e`
826
+ * application domain: generic
827
+ * name: ElectronRadius (specializes Length)
828
+ * quantity dimension: L^1
829
+ * measurement unit(s): m
830
+ * tensor order: 0
831
+ * definition: radius of a sphere such that the relativistic electron energy is distributed uniformly: `r_e = e^2/(4 π ε_0 m_e c_0^2)` where `e` is the elementary charge (ISO 80000-1), `ε_0` is the electric constant (IEC 80000-6), `m_e` is the rest mass (item 10-2) of electron, and `c_0` is the speed of light in vacuum (ISO 80000-1)
832
+ * remarks: This quantity corresponds to the electrostatic energy `E` of a charge distributed inside a sphere of radius `r_e` as if all the rest energy (item 10-3) of the electron were attributed to the energy of electromagnetic origin, using the relation `E = m_e c_0^2`.
833
+ */
834
+ }
835
+
836
+ /* ISO-80000-10 item 10-20 Compton wavelength */
837
+ attribute comptonWavelength: LengthValue :> scalarQuantities {
838
+ doc
839
+ /*
840
+ * source: item 10-20 Compton wavelength
841
+ * symbol(s): `λ_C`
842
+ * application domain: generic
843
+ * name: ComptonWavelength (specializes Length)
844
+ * quantity dimension: L^1
845
+ * measurement unit(s): m
846
+ * tensor order: 0
847
+ * definition: quotient of the Planck constant and the product of the mass of the particle and the speed of light in vacuum: `λ_C = h / (m c_0)` where `h` is the Planck constant (ISO 80000-1), `m` is the rest mass (item 10-2) of a particle, and `c_0` is the speed of light in vacuum (ISO 80000-1)
848
+ * remarks: The wavelength of electromagnetic radiation scattered from free electrons (Compton scattering) is larger than that of the incident radiation by a maximum of 2`λ_C`.
849
+ */
850
+ }
851
+
852
+ /* ISO-80000-10 item 10-21.1 mass excess */
853
+ attribute massExcess: MassValue :> scalarQuantities {
854
+ doc
855
+ /*
856
+ * source: item 10-21.1 mass excess
857
+ * symbol(s): `Δ`
858
+ * application domain: generic
859
+ * name: MassExcess (specializes Mass)
860
+ * quantity dimension: M^1
861
+ * measurement unit(s): kg, Da, u
862
+ * tensor order: 0
863
+ * definition: difference between the mass of an atom, and the product of its mass number and the unified mass constant: `Δ = m_a - A*m_u`, where `m_a` is the rest mass (item 10-2) of the atom, `A` is its nucleon number (item 10-1.3), and `m_u` is the unified atomic mass constant (item 10-4.3)
864
+ * remarks: The mass excess is usually expressed in daltons, 1 Da = 1 u. See item 10-2.
865
+ */
866
+ }
867
+
868
+ /* ISO-80000-10 item 10-21.2 mass defect */
869
+ attribute massDefect: MassValue :> scalarQuantities {
870
+ doc
871
+ /*
872
+ * source: item 10-21.2 mass defect
873
+ * symbol(s): `B`
874
+ * application domain: generic
875
+ * name: MassDefect (specializes Mass)
876
+ * quantity dimension: M^1
877
+ * measurement unit(s): kg, Da, u
878
+ * tensor order: 0
879
+ * definition: sum of the product of the proton number and the hydrogen atomic mass, and the neutron rest mass, minus the rest mass of the atom: `B = Z*m(⁢^1"H") + N*m_n - m_a` where `Z` is the proton number (item 10-1.1) of the atom, `m(⁢^1"H")` is atomic mass (item 10-4.1) of `⁢^1"H"`, `N` is neutron number (item 10-1.2), `m_n` is the rest mass (item 10-2) of the neutron, and `m_a` is the rest mass (item 10-2) of the atom
880
+ * remarks: The mass excess is usually expressed in daltons, 1 Da = 1 u. If the binding energy of the orbital electrons is neglected, `B c_0^2` is equal to the binding energy of the nucleus.
881
+ */
882
+ }
883
+
884
+ /* ISO-80000-10 item 10-22.1 relative mass excess */
885
+ attribute def RelativeMassExcessValue :> DimensionOneValue {
886
+ doc
887
+ /*
888
+ * source: item 10-22.1 relative mass excess
889
+ * symbol(s): `Δ_r`
890
+ * application domain: generic
891
+ * name: RelativeMassExcess (specializes DimensionOneQuantity)
892
+ * quantity dimension: 1
893
+ * measurement unit(s): 1
894
+ * tensor order: 0
895
+ * definition: quotient of mass excess and the unified atomic mass constant: `Δ_r = Δ/m_u` where `Δ` is mass excess (item 10-21.1), and `m_u` is the unified atomic mass constant (item 10-4.3)
896
+ * remarks: None.
897
+ */
898
+ }
899
+ attribute relativeMassExcess: RelativeMassExcessValue :> scalarQuantities;
900
+
901
+ /* ISO-80000-10 item 10-22.2 relative mass defect */
902
+ attribute def RelativeMassDefectValue :> DimensionOneValue {
903
+ doc
904
+ /*
905
+ * source: item 10-22.2 relative mass defect
906
+ * symbol(s): `B_r`
907
+ * application domain: generic
908
+ * name: RelativeMassDefect (specializes DimensionOneQuantity)
909
+ * quantity dimension: 1
910
+ * measurement unit(s): 1
911
+ * tensor order: 0
912
+ * definition: quotient of mass defect and the unified atomic mass constant: `B_r = B/m_u` where `B` is mass defect (item 10-21.2), and `m_u` is the unified atomic mass constant (item 10-4.3)
913
+ * remarks: None.
914
+ */
915
+ }
916
+ attribute relativeMassDefect: RelativeMassDefectValue :> scalarQuantities;
917
+
918
+ /* ISO-80000-10 item 10-23.1 packing fraction */
919
+ attribute def PackingFractionValue :> DimensionOneValue {
920
+ doc
921
+ /*
922
+ * source: item 10-23.1 packing fraction
923
+ * symbol(s): `f`
924
+ * application domain: generic
925
+ * name: PackingFraction (specializes DimensionOneQuantity)
926
+ * quantity dimension: 1
927
+ * measurement unit(s): 1
928
+ * tensor order: 0
929
+ * definition: quotient of relative mass excess and the nucleon number: `f` = Δ_r/A` where `Δ_r` is relative mass excess (item 10-22.1), and `A` is the nucleon number (item 10-1.3)
930
+ * remarks: None.
931
+ */
932
+ }
933
+ attribute packingFraction: PackingFractionValue :> scalarQuantities;
934
+
935
+ /* ISO-80000-10 item 10-23.2 binding fraction */
936
+ attribute def BindingFractionValue :> DimensionOneValue {
937
+ doc
938
+ /*
939
+ * source: item 10-23.2 binding fraction
940
+ * symbol(s): `b`
941
+ * application domain: generic
942
+ * name: BindingFraction (specializes DimensionOneQuantity)
943
+ * quantity dimension: 1
944
+ * measurement unit(s): 1
945
+ * tensor order: 0
946
+ * definition: quotient of relative mass defect and the nucleon number: `b = B_r/A` where `B_r` is relative mass defect (item 10-22.2), and `A` is the nucleon number (item 10-1.3)
947
+ * remarks: None.
948
+ */
949
+ }
950
+ attribute bindingFraction: BindingFractionValue :> scalarQuantities;
951
+
952
+ /* ISO-80000-10 item 10-24 decay constant, disintegration constant */
953
+ attribute def DecayConstantValue :> ScalarQuantityValue {
954
+ doc
955
+ /*
956
+ * source: item 10-24 decay constant, disintegration constant
957
+ * symbol(s): `λ`
958
+ * application domain: generic
959
+ * name: DecayConstant
960
+ * quantity dimension: T^-1
961
+ * measurement unit(s): s^-1
962
+ * tensor order: 0
963
+ * definition: quotient of `(-dN)/N` and `dt`, where `(dN)/N` is the mean fractional change in the number of nuclei in a particular energy state due to spontaneous transformations in a time interval of duration (ISO 80000-3) `dt`: `λ = -1/N (dN)/(dt)`
964
+ * remarks: For exponential decay, this quantity is constant. For more than one decay channel, `λ = sum λ_a` where `λ_a` denotes the decay constant for a specified final state and the sum is taken over all final states.
965
+ */
966
+ attribute :>> num: Real;
967
+ attribute :>> mRef: DecayConstantUnit[1];
968
+ }
969
+
970
+ attribute decayConstant: DecayConstantValue[*] nonunique :> scalarQuantities;
971
+
972
+ attribute def DecayConstantUnit :> DerivedUnit {
973
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
974
+ attribute :>> quantityDimension { :>> quantityPowerFactors = durationPF; }
975
+ }
976
+
977
+ alias DisintegrationConstantUnit for DecayConstantUnit;
978
+ alias DisintegrationConstantValue for DecayConstantValue;
979
+ alias disintegrationConstant for decayConstant;
980
+
981
+ /* ISO-80000-10 item 10-25 mean duration of life, mean life time */
982
+ attribute meanDurationOfLife: DurationValue :> scalarQuantities {
983
+ doc
984
+ /*
985
+ * source: item 10-25 mean duration of life, mean life time
986
+ * symbol(s): `τ`
987
+ * application domain: atomic and nuclear physics
988
+ * name: MeanDurationOfLife (specializes Duration)
989
+ * quantity dimension: T^1
990
+ * measurement unit(s): s
991
+ * tensor order: 0
992
+ * definition: reciprocal of the decay constant `λ` (item 10-24): `τ = 1/λ`
993
+ * remarks: Mean duration of life is the expected value of the duration of life of an unstable particle or an excited state of a particle when the number of decay events in a short time interval follows a Poisson distribution.
994
+ */
995
+ }
996
+
997
+ alias meanLifeTime for meanDurationOfLife;
998
+
999
+ /* ISO-80000-10 item 10-26 level width */
1000
+ attribute levelWidth: EnergyValue :> scalarQuantities {
1001
+ doc
1002
+ /*
1003
+ * source: item 10-26 level width
1004
+ * symbol(s): `Γ`
1005
+ * application domain: generic
1006
+ * name: LevelWidth (specializes Energy)
1007
+ * quantity dimension: L^2*M^1*T^-2
1008
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1009
+ * tensor order: 0
1010
+ * definition: quotient of the reduced Planck constant and the mean life: `Γ = ℏ/τ` where `ℏ` is the reduced Planck constant (ISO 80000-1), and `τ` is mean duration of life (item 10-25)
1011
+ * remarks: Level width is the uncertainty of the energy of an unstable particle or an excited state of a system due to the Heisenberg principle. The term energy level refers to the configuration of the distribution function of the density of states. Energy levels may be considered as discrete, like those in an atom, or may have a finite width, like e.g. this item or like e.g. the valence or conduction band in solid state physics. Energy levels are applicable to both real and virtual particles, e.g. electrons and phonons, respectively.
1012
+ */
1013
+ }
1014
+
1015
+ /* ISO-80000-10 item 10-27 nuclear activity */
1016
+ attribute def NuclearActivityValue :> ScalarQuantityValue {
1017
+ doc
1018
+ /*
1019
+ * source: item 10-27 nuclear activity
1020
+ * symbol(s): `A`
1021
+ * application domain: generic
1022
+ * name: NuclearActivity
1023
+ * quantity dimension: T^-1
1024
+ * measurement unit(s): Bq, s^-1
1025
+ * tensor order: 0
1026
+ * definition: differential quotient of `N` with respect to time, where `N` is the mean change in the number of nuclei in a particular energy state due to spontaneous nuclear transformations in a time interval of duration (ISO 80000-3) `dt`: `A = -(dN)/(dt)`
1027
+ * remarks: For exponential decay, `A = λN`, where `λ` is the decay constant (item 10-24). The becquerel (Bq) is a special name for second to the power minus one, to be used as the coherent SI unit of activity. In report 85a of the ICRU a definition with an equivalent meaning is given as: The activity, `A`, of an amount of a radionuclide in a particular energy state at a given time is the quotient of `-dN` by `dt`, where `dN` is the mean change in the number of nuclei in that energy state due to spontaneous nuclear transformations in the time interval `dt`: `A = -(dN)/(dt)`. See also section 0.3.
1028
+ */
1029
+ attribute :>> num: Real;
1030
+ attribute :>> mRef: NuclearActivityUnit[1];
1031
+ }
1032
+
1033
+ attribute nuclearActivity: NuclearActivityValue[*] nonunique :> scalarQuantities;
1034
+
1035
+ attribute def NuclearActivityUnit :> DerivedUnit {
1036
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1037
+ attribute :>> quantityDimension { :>> quantityPowerFactors = durationPF; }
1038
+ }
1039
+
1040
+ /* ISO-80000-10 item 10-28 specific activity, massic activity */
1041
+ attribute def SpecificActivityValue :> ScalarQuantityValue {
1042
+ doc
1043
+ /*
1044
+ * source: item 10-28 specific activity, massic activity
1045
+ * symbol(s): `a`
1046
+ * application domain: generic
1047
+ * name: SpecificActivity
1048
+ * quantity dimension: M^-1*T^-1
1049
+ * measurement unit(s): Bq/kg, kg^-1*s^-1
1050
+ * tensor order: 0
1051
+ * definition: quotient of the activity `A` (item 10-27) of a sample and the mass `m` (ISO 80000-4) of that sample: `a = A/m`
1052
+ * remarks: None.
1053
+ */
1054
+ attribute :>> num: Real;
1055
+ attribute :>> mRef: SpecificActivityUnit[1];
1056
+ }
1057
+
1058
+ attribute specificActivity: SpecificActivityValue[*] nonunique :> scalarQuantities;
1059
+
1060
+ attribute def SpecificActivityUnit :> DerivedUnit {
1061
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1062
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1063
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1064
+ }
1065
+
1066
+ alias MassicActivityUnit for SpecificActivityUnit;
1067
+ alias MassicActivityValue for SpecificActivityValue;
1068
+ alias massicActivity for specificActivity;
1069
+
1070
+ /* ISO-80000-10 item 10-29 activity density, volumic activity, activity concentration */
1071
+ attribute def ActivityDensityValue :> ScalarQuantityValue {
1072
+ doc
1073
+ /*
1074
+ * source: item 10-29 activity density, volumic activity, activity concentration
1075
+ * symbol(s): `c_A`
1076
+ * application domain: generic
1077
+ * name: ActivityDensity
1078
+ * quantity dimension: L^-3*T^-1
1079
+ * measurement unit(s): Bq/m^3, m^-3*s^-1
1080
+ * tensor order: 0
1081
+ * definition: quotient of the activity `A` (item 10-27) of a sample and the mass `m` (ISO 80000-4) of that sample: `a = A/m`
1082
+ * remarks: None.
1083
+ */
1084
+ attribute :>> num: Real;
1085
+ attribute :>> mRef: ActivityDensityUnit[1];
1086
+ }
1087
+
1088
+ attribute activityDensity: ActivityDensityValue[*] nonunique :> scalarQuantities;
1089
+
1090
+ attribute def ActivityDensityUnit :> DerivedUnit {
1091
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
1092
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1093
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1094
+ }
1095
+
1096
+ alias VolumicActivityUnit for ActivityDensityUnit;
1097
+ alias VolumicActivityValue for ActivityDensityValue;
1098
+ alias volumicActivity for activityDensity;
1099
+
1100
+ alias ActivityConcentrationUnit for ActivityDensityUnit;
1101
+ alias ActivityConcentrationValue for ActivityDensityValue;
1102
+ alias activityConcentration for activityDensity;
1103
+
1104
+ /* ISO-80000-10 item 10-30 surface-activity density */
1105
+ attribute def SurfaceActivityDensityValue :> ScalarQuantityValue {
1106
+ doc
1107
+ /*
1108
+ * source: item 10-30 surface-activity density
1109
+ * symbol(s): `a_S`
1110
+ * application domain: generic
1111
+ * name: SurfaceActivityDensity
1112
+ * quantity dimension: L^-2*T^-1
1113
+ * measurement unit(s): Bq/m^2, m^-2*s^-1
1114
+ * tensor order: 0
1115
+ * definition: quotient of the activity `A` (item 10-27) of a sample and the total area `S` (ISO 80000-3) of the surface of that sample: `a_S` = `A`/`S`
1116
+ * remarks: This value is usually defined for flat sources, where `S` corresponds to the total area of surface of one side of the source.
1117
+ */
1118
+ attribute :>> num: Real;
1119
+ attribute :>> mRef: SurfaceActivityDensityUnit[1];
1120
+ }
1121
+
1122
+ attribute surfaceActivityDensity: SurfaceActivityDensityValue[*] nonunique :> scalarQuantities;
1123
+
1124
+ attribute def SurfaceActivityDensityUnit :> DerivedUnit {
1125
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1126
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1127
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1128
+ }
1129
+
1130
+ /* ISO-80000-10 item 10-31 half life */
1131
+ attribute halfLife: DurationValue :> scalarQuantities {
1132
+ doc
1133
+ /*
1134
+ * source: item 10-31 half life
1135
+ * symbol(s): `T_(1/2)`
1136
+ * application domain: generic
1137
+ * name: HalfLife (specializes Duration)
1138
+ * quantity dimension: T^1
1139
+ * measurement unit(s): s
1140
+ * tensor order: 0
1141
+ * definition: mean duration (ISO 80000-3) required for the decay of one half of the atoms or nuclei
1142
+ * remarks: For exponential decay, `T_(1/2) = (ln2)/λ`, where `λ` is the decay constant (item 10-24).
1143
+ */
1144
+ }
1145
+
1146
+ /* ISO-80000-10 item 10-32 alpha disintegration energy */
1147
+ attribute alphaDisintegrationEnergy: EnergyValue :> scalarQuantities {
1148
+ doc
1149
+ /*
1150
+ * source: item 10-32 alpha disintegration energy
1151
+ * symbol(s): `Q_α`
1152
+ * application domain: generic
1153
+ * name: AlphaDisintegrationEnergy (specializes Energy)
1154
+ * quantity dimension: L^2*M^1*T^-2
1155
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1156
+ * tensor order: 0
1157
+ * definition: sum of the kinetic energy (ISO 80000-4) of the α-particle produced in the disintegration process and the recoil energy (ISO 80000-5) of the product atom in a reference frame in which the emitting nucleus is at rest before its disintegration
1158
+ * remarks: The ground-state alpha disintegration energy, `Q_(α,0)`, also includes the energy of any nuclear transitions that take place in the daughter produced.
1159
+ */
1160
+ }
1161
+
1162
+ /* ISO-80000-10 item 10-33 maximum beta-particle energy */
1163
+ attribute maximumBetaParticleEnergy: EnergyValue :> scalarQuantities {
1164
+ doc
1165
+ /*
1166
+ * source: item 10-33 maximum beta-particle energy
1167
+ * symbol(s): `E_β`
1168
+ * application domain: generic
1169
+ * name: MaximumBetaParticleEnergy (specializes Energy)
1170
+ * quantity dimension: L^2*M^1*T^-2
1171
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1172
+ * tensor order: 0
1173
+ * definition: maximum kinetic energy (ISO 80000-4) of the emitted beta particle produced in the nuclear disintegration process
1174
+ * remarks: The maximum kinetic energy corresponds to the highest energy of the beta spectrum.
1175
+ */
1176
+ }
1177
+
1178
+ /* ISO-80000-10 item 10-34 beta disintegration energy */
1179
+ attribute betaDisintegrationEnergy: EnergyValue :> scalarQuantities {
1180
+ doc
1181
+ /*
1182
+ * source: item 10-34 beta disintegration energy
1183
+ * symbol(s): `Q_β`
1184
+ * application domain: generic
1185
+ * name: BetaDisintegrationEnergy (specializes Energy)
1186
+ * quantity dimension: L^2*M^1*T^-2
1187
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1188
+ * tensor order: 0
1189
+ * definition: sum of the maximum beta-particle kinetic energy (item 10-33) and the recoil energy (ISO 80000-5) of the atom produced in a reference frame in which the emitting nucleus is at rest before its disintegration
1190
+ * remarks: For positron emitters, the energy for the production of the annihilation radiation created in the combination of an electron with the positron is part of the beta disintegration energy. The ground-state beta disintegration energy, `Q_(β,0)`, also includes the energy of any nuclear transitions that take place in the daughter product.
1191
+ */
1192
+ }
1193
+
1194
+ /* ISO-80000-10 item 10-35 internal conversion factor */
1195
+ attribute def InternalConversionFactorValue :> DimensionOneValue {
1196
+ doc
1197
+ /*
1198
+ * source: item 10-35 internal conversion factor
1199
+ * symbol(s): `α`
1200
+ * application domain: generic
1201
+ * name: InternalConversionFactor (specializes DimensionOneQuantity)
1202
+ * quantity dimension: 1
1203
+ * measurement unit(s): 1
1204
+ * tensor order: 0
1205
+ * definition: quotient of the number of internal conversion electrons and the number of gamma quanta emitted by the radioactive atom in a given transition, where a conversion electron represents an orbital electron emitted through the radioactive decay
1206
+ * remarks: The quantity `α/(α+1)` is also used and called the internal-conversion fraction. Partial conversion fractions referring to the various electron shells `K, L, ...` are indicated by `α_K`, `α_L`, ... `α_K/α_L` is called the K-to-L internal conversion ratio.
1207
+ */
1208
+ }
1209
+ attribute internalConversionFactor: InternalConversionFactorValue :> scalarQuantities;
1210
+
1211
+ /* ISO-80000-10 item 10-36 particle emission rate */
1212
+ attribute def ParticleEmissionRateValue :> ScalarQuantityValue {
1213
+ doc
1214
+ /*
1215
+ * source: item 10-36 particle emission rate
1216
+ * symbol(s): `dot(N)`
1217
+ * application domain: generic
1218
+ * name: ParticleEmissionRate
1219
+ * quantity dimension: T^-1
1220
+ * measurement unit(s): s^-1
1221
+ * tensor order: 0
1222
+ * definition: differential quotient of `N` with respect to time, where `N` is the number of particles being emitted from an infinitesimally small volume element in the time interval of duration `dt` (ISO 80000-3), and `dt`: `dot(N) = (dN)/(dt)`
1223
+ * remarks: Usually the kind of particles is specified, e.g. neutron emission rate or alpha particle emission rate.
1224
+ */
1225
+ attribute :>> num: Real;
1226
+ attribute :>> mRef: ParticleEmissionRateUnit[1];
1227
+ }
1228
+
1229
+ attribute particleEmissionRate: ParticleEmissionRateValue[*] nonunique :> scalarQuantities;
1230
+
1231
+ attribute def ParticleEmissionRateUnit :> DerivedUnit {
1232
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1233
+ attribute :>> quantityDimension { :>> quantityPowerFactors = durationPF; }
1234
+ }
1235
+
1236
+ /* ISO-80000-10 item 10-37.1 reaction energy */
1237
+ attribute reactionEnergy: EnergyValue :> scalarQuantities {
1238
+ doc
1239
+ /*
1240
+ * source: item 10-37.1 reaction energy
1241
+ * symbol(s): `Q`
1242
+ * application domain: generic
1243
+ * name: ReactionEnergy (specializes Energy)
1244
+ * quantity dimension: L^2*M^1*T^-2
1245
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1246
+ * tensor order: 0
1247
+ * definition: in a nuclear reaction, sum of the kinetic energies (ISO 80000-4) and photon energies (ISO 80000-5) of the reaction products minus the sum of the kinetic and photon energies of the reactants
1248
+ * remarks: For exothermic nuclear reactions, `Q>0`. For endothermic nuclear reactions, `Q<0`.
1249
+ */
1250
+ }
1251
+
1252
+ /* ISO-80000-10 item 10-37.2 resonance energy */
1253
+ attribute resonanceEnergy: EnergyValue :> scalarQuantities {
1254
+ doc
1255
+ /*
1256
+ * source: item 10-37.2 resonance energy
1257
+ * symbol(s): `E_r`, `E_"res"`
1258
+ * application domain: generic
1259
+ * name: ResonanceEnergy (specializes Energy)
1260
+ * quantity dimension: L^2*M^1*T^-2
1261
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1262
+ * tensor order: 0
1263
+ * definition: kinetic energy (ISO 80000-4) of an incident particle, in the reference frame of the target, corresponding to a resonance in a nuclear reaction
1264
+ * remarks: The energy of the resonance corresponds to the difference of the energy levels involved of the nucleus.
1265
+ */
1266
+ }
1267
+
1268
+ /* ISO-80000-10 item 10-38.1 cross section */
1269
+ attribute crossSection: AreaValue :> scalarQuantities {
1270
+ doc
1271
+ /*
1272
+ * source: item 10-38.1 cross section
1273
+ * symbol(s): `σ`
1274
+ * application domain: atomic physics
1275
+ * name: CrossSection (specializes Area)
1276
+ * quantity dimension: L^2
1277
+ * measurement unit(s): m^2, b
1278
+ * tensor order: 0
1279
+ * definition: for a specified target entity and for a specified reaction or process produced by incident charged or uncharged particles of a given type and energy, the quotient of the mean number of such reactions or processes and the incident-particle fluence (item 10-43)
1280
+ * remarks: The type of process is indicated by subscripts, e.g. absorption cross section `σ_a`, scattering cross section `σ_s`, fission cross section `σ_f`. `1 "barn" ("b") = 10^(-28) "m"^2`.
1281
+ */
1282
+ }
1283
+
1284
+ /* ISO-80000-10 item 10-38.2 total cross section */
1285
+ attribute totalCrossSection: AreaValue :> scalarQuantities {
1286
+ doc
1287
+ /*
1288
+ * source: item 10-38.2 total cross section
1289
+ * symbol(s): `σ_"tot"`, `σ_"T"`
1290
+ * application domain: atomic physics
1291
+ * name: TotalCrossSection (specializes Area)
1292
+ * quantity dimension: L^2
1293
+ * measurement unit(s): m^2, b
1294
+ * tensor order: 0
1295
+ * definition: sum of all cross sections (item 10-38.1) corresponding to the various reactions or processes between an incident particle of specified type and energy (ISO 80000-5) and a target entity
1296
+ * remarks: In the case of a narrow unidirectional beam of incident particles, this is the effective cross section for the removal of an incident particle from the beam. See the Remarks for item 10-52. `1 "barn" ("b") = 10^(-28) "m"^2`.
1297
+ */
1298
+ }
1299
+
1300
+ /* ISO-80000-10 item 10-39 direction distribution of cross section */
1301
+ attribute def DirectionDistributionOfCrossSectionValue :> ScalarQuantityValue {
1302
+ doc
1303
+ /*
1304
+ * source: item 10-39 direction distribution of cross section
1305
+ * symbol(s): `σ_Ω`
1306
+ * application domain: atomic physics
1307
+ * name: DirectionDistributionOfCrossSection
1308
+ * quantity dimension: L^2
1309
+ * measurement unit(s): m^2*sr^-1, m^2
1310
+ * tensor order: 0
1311
+ * definition: differential quotient of `σ` with respect to `Ω`, where `σ` is the cross section (item 10-38.1) for ejecting or scattering a particle into a specified direction, and `Ω` is the solid angle (ISO 80000-3) around that direction: `σ_Ω = (dσ)/(dΩ)`
1312
+ * remarks: Quantities listed under items 10-39, 10-40 and 10-41 are sometimes called differential cross sections. The type of interaction needs to be specified.
1313
+ */
1314
+ attribute :>> num: Real;
1315
+ attribute :>> mRef: DirectionDistributionOfCrossSectionUnit[1];
1316
+ }
1317
+
1318
+ attribute directionDistributionOfCrossSection: DirectionDistributionOfCrossSectionValue[*] nonunique :> scalarQuantities;
1319
+
1320
+ attribute def DirectionDistributionOfCrossSectionUnit :> DerivedUnit {
1321
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1322
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1323
+ }
1324
+
1325
+ /* ISO-80000-10 item 10-40 energy distribution of cross section */
1326
+ attribute def EnergyDistributionOfCrossSectionValue :> ScalarQuantityValue {
1327
+ doc
1328
+ /*
1329
+ * source: item 10-40 energy distribution of cross section
1330
+ * symbol(s): `σ_E`
1331
+ * application domain: atomic physics
1332
+ * name: EnergyDistributionOfCrossSection
1333
+ * quantity dimension: M^-1*T^2
1334
+ * measurement unit(s): m^2/J, kg^-1*s^2
1335
+ * tensor order: 0
1336
+ * definition: differential quotient of `σ` with respect to energy, where `σ` is the cross section (item 10-38.1) for a process in which the energy `E` (ISO 80000-5) of the ejected or scattered particle is between `E` and `E + dE`: `σ_E = (dσ)/(dE)`
1337
+ * remarks: None.
1338
+ */
1339
+ attribute :>> num: Real;
1340
+ attribute :>> mRef: EnergyDistributionOfCrossSectionUnit[1];
1341
+ }
1342
+
1343
+ attribute energyDistributionOfCrossSection: EnergyDistributionOfCrossSectionValue[*] nonunique :> scalarQuantities;
1344
+
1345
+ attribute def EnergyDistributionOfCrossSectionUnit :> DerivedUnit {
1346
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1347
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 2; }
1348
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1349
+ }
1350
+
1351
+ /* ISO-80000-10 item 10-41 direction and energy distribution of cross section */
1352
+ attribute def DirectionAndEnergyDistributionOfCrossSectionValue :> ScalarQuantityValue {
1353
+ doc
1354
+ /*
1355
+ * source: item 10-41 direction and energy distribution of cross section
1356
+ * symbol(s): `σ_(Ω,E)`
1357
+ * application domain: atomic physics
1358
+ * name: DirectionAndEnergyDistributionOfCrossSection
1359
+ * quantity dimension: M^-1*T^2
1360
+ * measurement unit(s): m^2/(J*sr), kg^-1*s^2
1361
+ * tensor order: 0
1362
+ * definition: partial differential quotient of `σ` with respect to solid angle and energy, where `σ` is the cross section (item 10-38.1) for ejecting or scattering a particle into a solid angle `dΩ` around a specified direction and with an energy between `E` and `E+dE`: `σ_(Ω,E) = (del^2 σ) / (del Ω del E)`
1363
+ * remarks: None.
1364
+ */
1365
+ attribute :>> num: Real;
1366
+ attribute :>> mRef: DirectionAndEnergyDistributionOfCrossSectionUnit[1];
1367
+ }
1368
+
1369
+ attribute directionAndEnergyDistributionOfCrossSection: DirectionAndEnergyDistributionOfCrossSectionValue[*] nonunique :> scalarQuantities;
1370
+
1371
+ attribute def DirectionAndEnergyDistributionOfCrossSectionUnit :> DerivedUnit {
1372
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1373
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 2; }
1374
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1375
+ }
1376
+
1377
+ /* ISO-80000-10 item 10-42.1 volumic cross section, macroscopic cross section */
1378
+ attribute def VolumicCrossSectionValue :> ScalarQuantityValue {
1379
+ doc
1380
+ /*
1381
+ * source: item 10-42.1 volumic cross section, macroscopic cross section
1382
+ * symbol(s): `Σ`
1383
+ * application domain: atomic physics
1384
+ * name: VolumicCrossSection
1385
+ * quantity dimension: L^-1
1386
+ * measurement unit(s): m^-1
1387
+ * tensor order: 0
1388
+ * definition: product of the number density `n_a` of the atoms and of the cross section (item 10-38.1) `σ_a` for a given type of atoms: `Σ = n_a σ_a`
1389
+ * remarks: When the target particles of the medium are at rest, `Σ = 1/l`, where `l` is the mean free path (item 10-71).
1390
+ */
1391
+ attribute :>> num: Real;
1392
+ attribute :>> mRef: VolumicCrossSectionUnit[1];
1393
+ }
1394
+
1395
+ attribute volumicCrossSection: VolumicCrossSectionValue[*] nonunique :> scalarQuantities;
1396
+
1397
+ attribute def VolumicCrossSectionUnit :> DerivedUnit {
1398
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1399
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1400
+ }
1401
+
1402
+ alias MacroscopicCrossSectionUnit for VolumicCrossSectionUnit;
1403
+ alias MacroscopicCrossSectionValue for VolumicCrossSectionValue;
1404
+ alias macroscopicCrossSection for volumicCrossSection;
1405
+
1406
+ /* ISO-80000-10 item 10-42.2 volumic total cross section, macroscopic total cross section */
1407
+ attribute def VolumicTotalCrossSectionValue :> ScalarQuantityValue {
1408
+ doc
1409
+ /*
1410
+ * source: item 10-42.2 volumic total cross section, macroscopic total cross section
1411
+ * symbol(s): `Σ_"tot"`, `Σ_"T"`
1412
+ * application domain: atomic physics
1413
+ * name: VolumicTotalCrossSection
1414
+ * quantity dimension: L^-1
1415
+ * measurement unit(s): m^-1
1416
+ * tensor order: 0
1417
+ * definition: product of the number density `n_a` of the atoms and the cross section (item 10-38.1) `σ_"tot"` for a given type of atoms: `Σ_"tot" = n_a*σ_"tot"`
1418
+ * remarks: See the Remarks for item 10-49.
1419
+ */
1420
+ attribute :>> num: Real;
1421
+ attribute :>> mRef: VolumicTotalCrossSectionUnit[1];
1422
+ }
1423
+
1424
+ attribute volumicTotalCrossSection: VolumicTotalCrossSectionValue[*] nonunique :> scalarQuantities;
1425
+
1426
+ attribute def VolumicTotalCrossSectionUnit :> DerivedUnit {
1427
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1428
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1429
+ }
1430
+
1431
+ alias MacroscopicTotalCrossSectionUnit for VolumicTotalCrossSectionUnit;
1432
+ alias MacroscopicTotalCrossSectionValue for VolumicTotalCrossSectionValue;
1433
+ alias macroscopicTotalCrossSection for volumicTotalCrossSection;
1434
+
1435
+ /* ISO-80000-10 item 10-43 particle fluence */
1436
+ attribute def ParticleFluenceValue :> ScalarQuantityValue {
1437
+ doc
1438
+ /*
1439
+ * source: item 10-43 particle fluence
1440
+ * symbol(s): `Φ`
1441
+ * application domain: generic
1442
+ * name: ParticleFluence
1443
+ * quantity dimension: L^-2
1444
+ * measurement unit(s): m^-2
1445
+ * tensor order: 0
1446
+ * definition: differential quotient of `N` with respect to `a`, where `N` is the number of particles incident on a sphere of cross-sectional area `a` (item 10-38.1): `Φ = (dN)/(da)`
1447
+ * remarks: The word "particle" is usually replaced by the name of a specific particle, for example `proton` fluence. If a flat area of size `dA` is passed perpendicularly by a number of `dN` particles, the corresponding particle fluence is: `Φ = (dN)/(dA)`. A plane area of size `dA` crossed at an angle `α` with respect to the surface normal by a number of `dN` particles results in the particle fluence: `Φ = (dN)/(cos(α) dA)` In report 85a of the ICRU a definition with an equivalent meaning is given as: The fluence, `Φ` , is the quotient of `dN` and `da`, where `dN` is the number of particles incident on a sphere of cross-sectional area `da`: `Φ = (dN)/(dA)`. See also section 0.3.
1448
+ */
1449
+ attribute :>> num: Real;
1450
+ attribute :>> mRef: ParticleFluenceUnit[1];
1451
+ }
1452
+
1453
+ attribute particleFluence: ParticleFluenceValue[*] nonunique :> scalarQuantities;
1454
+
1455
+ attribute def ParticleFluenceUnit :> DerivedUnit {
1456
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1457
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1458
+ }
1459
+
1460
+ /* ISO-80000-10 item 10-44 particle fluence rate */
1461
+ attribute def ParticleFluenceRateValue :> ScalarQuantityValue {
1462
+ doc
1463
+ /*
1464
+ * source: item 10-44 particle fluence rate
1465
+ * symbol(s): `dot(Φ)`
1466
+ * application domain: generic
1467
+ * name: ParticleFluenceRate
1468
+ * quantity dimension: L^-2*T^-1
1469
+ * measurement unit(s): m^-2*s^-1
1470
+ * tensor order: 0
1471
+ * definition: differential quotient of fluence `Φ` (item 10-43) with respect to time (ISO 80000-3): `dot(Φ) = (dΦ)/(dA)`
1472
+ * remarks: The word "particle" is usually replaced by the name of a specific particle, for example proton fluence rate. The distribution function expressed in terms of speed and energy, `dot(Φ)_v` and `dot(Φ)_E` , are related to by: `dot(Φ) = int dot(Φ)_v dv = int dot(Φ)_E dE`. This quantity has also been termed particle flux density. Because the word "density" has several connotations, the term "fluence rate" is preferred. For a radiation field composed of particles of velocity `v`, the fluence rate is equal to `n`·`v` where `n` is the particle number density. See Remarks for item 10-43. In report 85a of the ICRU a definition with an equivalent meaning is given as: The fluence rate, `dot(Φ)` , is the quotient of `d Φ` and `dt`, where `d Φ` is the increment of the fluence in the time interval `dt`: `dot(Φ) = (dΦ)/(dt)`. See also section 0.3.
1473
+ */
1474
+ attribute :>> num: Real;
1475
+ attribute :>> mRef: ParticleFluenceRateUnit[1];
1476
+ }
1477
+
1478
+ attribute particleFluenceRate: ParticleFluenceRateValue[*] nonunique :> scalarQuantities;
1479
+
1480
+ attribute def ParticleFluenceRateUnit :> DerivedUnit {
1481
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1482
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1483
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1484
+ }
1485
+
1486
+ /* ISO-80000-10 item 10-45 radiant energy */
1487
+ attribute radiantEnergyForIonizingRadiation: EnergyValue :> scalarQuantities {
1488
+ doc
1489
+ /*
1490
+ * source: item 10-45 radiant energy
1491
+ * symbol(s): `R`
1492
+ * application domain: ionizing radiation
1493
+ * name: RadiantEnergy (specializes Energy)
1494
+ * quantity dimension: L^2*M^1*T^-2
1495
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1496
+ * tensor order: 0
1497
+ * definition: mean energy (ISO 80000-5), excluding rest energy (item 10-3), of the particles that are emitted, transferred, or received
1498
+ * remarks: For particles of energy `E` (excluding rest energy), the radiant energy, `R`, is equal to the product `N·E` where `N` is the number of the particles that are emitted, transferred, or received The distributions, `N_E` and `R_E`, of the particle number and the radiant energy with respect to energy are given by `N_E` = `dN`/d`E` and `R_E` = `dR`/d`E`, respectively, where `dN` is the number of particles with energy between `E` and `E`+d`E`, and `dR` is their radiant energy. The two distributions are related by `R_E` = `E`·`N_E`.
1499
+ */
1500
+ }
1501
+
1502
+ /* ISO-80000-10 item 10-46 energy fluence */
1503
+ attribute def EnergyFluenceValue :> ScalarQuantityValue {
1504
+ doc
1505
+ /*
1506
+ * source: item 10-46 energy fluence
1507
+ * symbol(s): `Ψ`
1508
+ * application domain: generic
1509
+ * name: EnergyFluence
1510
+ * quantity dimension: M^1*T^-2
1511
+ * measurement unit(s): eV/m^2, J/m^2, kg*s^-2
1512
+ * tensor order: 0
1513
+ * definition: differential quotient of radiant energy `R` (item 10-45) incident on a sphere of cross-sectional area (item 10-38.1) `a` with respect to that area: `Ψ = (dR)/(da)`
1514
+ * remarks: In report 85a of the ICRU a definition with an equivalent meaning is given as: The energy fluence, `Ψ` is the quotient of `dR` and `da`, where `dR` is the radiant energy incident on a sphere of cross-sectional area `da`: `Ψ = (dR)/(da)`. See also section 0.3.
1515
+ */
1516
+ attribute :>> num: Real;
1517
+ attribute :>> mRef: EnergyFluenceUnit[1];
1518
+ }
1519
+
1520
+ attribute energyFluence: EnergyFluenceValue[*] nonunique :> scalarQuantities;
1521
+
1522
+ attribute def EnergyFluenceUnit :> DerivedUnit {
1523
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1524
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1525
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1526
+ }
1527
+
1528
+ /* ISO-80000-10 item 10-47 energy fluence rate */
1529
+ attribute def EnergyFluenceRateValue :> ScalarQuantityValue {
1530
+ doc
1531
+ /*
1532
+ * source: item 10-47 energy fluence rate
1533
+ * symbol(s): `dot(Ψ)`
1534
+ * application domain: generic
1535
+ * name: EnergyFluenceRate
1536
+ * quantity dimension: M^1*T^-3
1537
+ * measurement unit(s): W/m^2, kg*s^-3
1538
+ * tensor order: 0
1539
+ * definition: differential quotient of the energy fluence `Ψ` (item 10-46) with respect to time (ISO 80000-3): `dot(Ψ) = (d Ψ)/(dt)`
1540
+ * remarks: In report 85a of the ICRU a definition with an equivalent meaning is given as: The energy-fluence rate, `dot(Ψ)` , is the quotient of `d Ψ` by `dt`, where `d Ψ` is the increment of the energy fluence in the time interval `dt`: `dot(Ψ) = (d Ψ)/(dt)`. See also section 0.3.
1541
+ */
1542
+ attribute :>> num: Real;
1543
+ attribute :>> mRef: EnergyFluenceRateUnit[1];
1544
+ }
1545
+
1546
+ attribute energyFluenceRate: EnergyFluenceRateValue[*] nonunique :> scalarQuantities;
1547
+
1548
+ attribute def EnergyFluenceRateUnit :> DerivedUnit {
1549
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1550
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
1551
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF); }
1552
+ }
1553
+
1554
+ /* ISO-80000-10 item 10-48 particle current density */
1555
+ attribute def ParticleCurrentDensityValue :> ScalarQuantityValue {
1556
+ doc
1557
+ /*
1558
+ * source: item 10-48 particle current density (magnitude)
1559
+ * symbol(s): `J`, `S`
1560
+ * application domain: generic
1561
+ * name: ParticleCurrentDensity
1562
+ * quantity dimension: L^-2*T^-1
1563
+ * measurement unit(s): m^-2*s^-1
1564
+ * tensor order: 0
1565
+ * definition: vector whose component in direction of an area normal is given by: `vec(J_n) = int Φ_Ω(θ, α) cos(θ) dΩ` where `Φ_Ω(θ, α)` is the directional distribution of the particle fluence rate (item 10-44), and ` θ` and `α` are polar and azimuthal angles, respectively
1566
+ * remarks: Usually the word "particle" is replaced by the name of a specific particle, for example proton current. Symbol `vec(S)` is recommended when there is a possibility of confusion with the symbol `vec(J)` for electric current density. For neutron current, the symbol `vec(J)` is generally used. The distribution functions expressed in terms of speed and energy, `vec(J_v)` and `vec(J_E)`, are related to `vec(J)` by: `vec(J) = int vec(J_v) dv = int vec(J_E) dE`. The directional distribution of the particle fluence rate is also denoted as particle radiance.
1567
+ */
1568
+ attribute :>> num: Real;
1569
+ attribute :>> mRef: ParticleCurrentDensityUnit[1];
1570
+ }
1571
+
1572
+ attribute particleCurrentDensity: ParticleCurrentDensityValue[*] nonunique :> scalarQuantities;
1573
+
1574
+ attribute def ParticleCurrentDensityUnit :> DerivedUnit {
1575
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1576
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1577
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1578
+ }
1579
+
1580
+ attribute def CartesianParticleCurrentDensity3dVector :> '3dVectorQuantityValue' {
1581
+ doc
1582
+ /*
1583
+ * source: item 10-48 particle current density (vector)
1584
+ * symbol(s): `vec(J)`, `vec(S)`
1585
+ * application domain: generic
1586
+ * name: ParticleCurrentDensity
1587
+ * quantity dimension: L^-2*T^-1
1588
+ * measurement unit(s): m^-2*s^-1
1589
+ * tensor order: 1
1590
+ * definition: vector whose component in direction of an area normal is given by: `vec(J_n) = int Φ_Ω(θ, α) cos(θ) dΩ` where `Φ_Ω(θ, α)` is the directional distribution of the particle fluence rate (item 10-44), and ` θ` and `α` are polar and azimuthal angles, respectively
1591
+ * remarks: Usually the word "particle" is replaced by the name of a specific particle, for example proton current. Symbol `vec(S)` is recommended when there is a possibility of confusion with the symbol `vec(J)` for electric current density. For neutron current, the symbol `vec(J)` is generally used. The distribution functions expressed in terms of speed and energy, `vec(J_v)` and `vec(J_E)`, are related to `vec(J)` by: `vec(J) = int vec(J_v) dv = int vec(J_E) dE`. The directional distribution of the particle fluence rate is also denoted as particle radiance.
1592
+ */
1593
+ attribute :>> isBound = false;
1594
+ attribute :>> mRef: CartesianParticleCurrentDensity3dCoordinateFrame[1];
1595
+ }
1596
+
1597
+ attribute cartesianParticleCurrentDensity3dVector: CartesianParticleCurrentDensity3dVector :> vectorQuantities;
1598
+
1599
+ attribute def CartesianParticleCurrentDensity3dCoordinateFrame :> '3dCoordinateFrame' {
1600
+ attribute :>> isBound = false;
1601
+ attribute :>> isOrthogonal = true;
1602
+ attribute :>> mRefs: ParticleCurrentDensityUnit[3];
1603
+ }
1604
+
1605
+ /* ISO-80000-10 item 10-49 linear attenuation coefficient */
1606
+ attribute def LinearAttenuationCoefficientForIonizingRadiationValue :> ScalarQuantityValue {
1607
+ doc
1608
+ /*
1609
+ * source: item 10-49 linear attenuation coefficient
1610
+ * symbol(s): `μ`, `μ_l`
1611
+ * application domain: ionizing radiation
1612
+ * name: LinearAttenuationCoefficient
1613
+ * quantity dimension: L^-1
1614
+ * measurement unit(s): m^-1
1615
+ * tensor order: 0
1616
+ * definition: for uncharged particles of a given type and energy the differential quotient `n` with respect to `l,` where `n` is the fraction of `N` incoming particles that experience interactions in traversing a distance (ISO 80000-3) `l` in a given material: `μ = (dn)/(dl) = 1/N (dN)/(dl)` where `dN` is the number of particles that experience interactions in traversing `dl`
1617
+ * remarks: `μ` is equal to the macroscopic total cross section `Σ_"tot"` for the removal of particles from the beam. Using the relation `μ_m = μ/ρ` between the linear attenuation coefficient `μ`, the mass attenuation coefficient `μ_m` (item 10-50) and the density `ρ`, the definition given for the mass attenuation coefficient in report 85a of the ICRU can be applied to the linear attenuation coefficient resulting in: The linear attenuation coefficient, `μ`, of a material, for uncharged particles of a given type and energy, is the quotient of `(dN)/N` by `dl`, where `(dN)/N` is the mean fraction of the particles that experience interactions in traversing a distance `dl` in the material: `μ = 1/(dl) (dN)/(N)`. This definition has an equivalent meaning as the one given in column 4 of this item. See also section 0.3.
1618
+ */
1619
+ attribute :>> num: Real;
1620
+ attribute :>> mRef: LinearAttenuationCoefficientForIonizingRadiationUnit[1];
1621
+ }
1622
+
1623
+ attribute linearAttenuationCoefficientForIonizingRadiation: LinearAttenuationCoefficientForIonizingRadiationValue[*] nonunique :> scalarQuantities;
1624
+
1625
+ attribute def LinearAttenuationCoefficientForIonizingRadiationUnit :> DerivedUnit {
1626
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1627
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1628
+ }
1629
+
1630
+ /* ISO-80000-10 item 10-50 mass attenuation coefficient */
1631
+ attribute def MassAttenuationCoefficientForIonizingRadiationValue :> ScalarQuantityValue {
1632
+ doc
1633
+ /*
1634
+ * source: item 10-50 mass attenuation coefficient
1635
+ * symbol(s): `μ_m`
1636
+ * application domain: ionizing radiation
1637
+ * name: MassAttenuationCoefficient
1638
+ * quantity dimension: L^2*M^-1
1639
+ * measurement unit(s): kg^-1*m^2
1640
+ * tensor order: 0
1641
+ * definition: quotient of the linear attenuation coefficient `µ` (item 10-49) and the mass density `ρ` (ISO 80000-4) of the medium: `μ_m = μ/ρ`
1642
+ * remarks: None.
1643
+ */
1644
+ attribute :>> num: Real;
1645
+ attribute :>> mRef: MassAttenuationCoefficientForIonizingRadiationUnit[1];
1646
+ }
1647
+
1648
+ attribute massAttenuationCoefficientForIonizingRadiation: MassAttenuationCoefficientForIonizingRadiationValue[*] nonunique :> scalarQuantities;
1649
+
1650
+ attribute def MassAttenuationCoefficientForIonizingRadiationUnit :> DerivedUnit {
1651
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1652
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1653
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
1654
+ }
1655
+
1656
+ /* ISO-80000-10 item 10-51 molar attenuation coefficient */
1657
+ attribute def MolarAttenuationCoefficientValue :> ScalarQuantityValue {
1658
+ doc
1659
+ /*
1660
+ * source: item 10-51 molar attenuation coefficient
1661
+ * symbol(s): `μ_c`
1662
+ * application domain: generic
1663
+ * name: MolarAttenuationCoefficient
1664
+ * quantity dimension: L^2*N^-1
1665
+ * measurement unit(s): m^2*mol^-1
1666
+ * tensor order: 0
1667
+ * definition: quotient of linear attenuation coefficient `µ` (item 10-49) and the amount c (ISO 80000-9) of the medium: `μ_c = μ/c`
1668
+ * remarks: None.
1669
+ */
1670
+ attribute :>> num: Real;
1671
+ attribute :>> mRef: MolarAttenuationCoefficientUnit[1];
1672
+ }
1673
+
1674
+ attribute molarAttenuationCoefficient: MolarAttenuationCoefficientValue[*] nonunique :> scalarQuantities;
1675
+
1676
+ attribute def MolarAttenuationCoefficientUnit :> DerivedUnit {
1677
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1678
+ private attribute amountOfSubstancePF: QuantityPowerFactor[1] { :>> quantity = isq.N; :>> exponent = -1; }
1679
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, amountOfSubstancePF); }
1680
+ }
1681
+
1682
+ /* ISO-80000-10 item 10-52 atomic attenuation coefficient */
1683
+ attribute def AtomicAttenuationCoefficientValue :> ScalarQuantityValue {
1684
+ doc
1685
+ /*
1686
+ * source: item 10-52 atomic attenuation coefficient
1687
+ * symbol(s): `μ_a`
1688
+ * application domain: generic
1689
+ * name: AtomicAttenuationCoefficient
1690
+ * quantity dimension: L^2
1691
+ * measurement unit(s): m^2
1692
+ * tensor order: 0
1693
+ * definition: quotient of the linear attenuation coefficient `µ` (item 10-49) and the number density (item 10-62.1), `n`, of atoms in the substance: `μ_a = μ/n`
1694
+ * remarks: `μ` is equal to the total cross section `σ_"tot"` for the removal of particles from the beam. See also item 10-38.2.
1695
+ */
1696
+ attribute :>> num: Real;
1697
+ attribute :>> mRef: AtomicAttenuationCoefficientUnit[1];
1698
+ }
1699
+
1700
+ attribute atomicAttenuationCoefficient: AtomicAttenuationCoefficientValue[*] nonunique :> scalarQuantities;
1701
+
1702
+ attribute def AtomicAttenuationCoefficientUnit :> DerivedUnit {
1703
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1704
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1705
+ }
1706
+
1707
+ /* ISO-80000-10 item 10-53 half-value thickness */
1708
+ attribute halfValueThickness: LengthValue :> scalarQuantities {
1709
+ doc
1710
+ /*
1711
+ * source: item 10-53 half-value thickness
1712
+ * symbol(s): `d_(1//2)`
1713
+ * application domain: generic
1714
+ * name: HalfValueThickness (specializes Length)
1715
+ * quantity dimension: L^1
1716
+ * measurement unit(s): m
1717
+ * tensor order: 0
1718
+ * definition: thickness (ISO 80000-3) of the attenuating layer that reduces the quantity of interest of a unidirectional beam of infinitesimal width to half of its initial value
1719
+ * remarks: For exponential attenuation, `d_(1/2) = ln(2)/μ`. The quantity of interest is often the air kerma or exposure.
1720
+ */
1721
+ }
1722
+
1723
+ /* ISO-80000-10 item 10-54 total linear stopping power, linear stopping power */
1724
+ attribute def TotalLinearStoppingPowerValue :> ScalarQuantityValue {
1725
+ doc
1726
+ /*
1727
+ * source: item 10-54 total linear stopping power, linear stopping power
1728
+ * symbol(s): `S`, `S_l`
1729
+ * application domain: generic
1730
+ * name: TotalLinearStoppingPower
1731
+ * quantity dimension: L^1*M^1*T^-2
1732
+ * measurement unit(s): eV/m, J/m, kg*m*s^-2
1733
+ * tensor order: 0
1734
+ * definition: for charged particles of a given type and energy `E_0` the differential quotient of `E` with respect to `x,` where `E` is the mean energy (ISO 80000-4) lost by the charged particles in traversing a distance (ISO 80000-3) `x` in the given material: `S = -(dE)/(dx)`
1735
+ * remarks: The total linear stopping power is sometimes also called stopping power. Both electronic losses and radiative losses are included. The quotient of the total linear stopping power of a substance and that of a reference substance is called the relative linear stopping power. See also item 10-85. Using the relation `S_m = S/ρ` between the total mass stopping power `S_m` (item 10-55), the total linear stopping power `S`, and the density `ρ`, the definition given for the mass stopping in report 85a of the ICRU can be applied to that of the total linear stopping power resulting in: The linear stopping power, `S`, of a material, for charged particles of a given type and energy, is the quotient of `dE` by `dl`, where `dE` is the mean energy lost by the charged particles in traversing a distance `dl` in the material: `S = -(dE)/(dx)`. This definition has an equivalent meaning as the one given in column 4 of this item. See also section 0.3.
1736
+ */
1737
+ attribute :>> num: Real;
1738
+ attribute :>> mRef: TotalLinearStoppingPowerUnit[1];
1739
+ }
1740
+
1741
+ attribute totalLinearStoppingPower: TotalLinearStoppingPowerValue[*] nonunique :> scalarQuantities;
1742
+
1743
+ attribute def TotalLinearStoppingPowerUnit :> DerivedUnit {
1744
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
1745
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1746
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1747
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1748
+ }
1749
+
1750
+ alias LinearStoppingPowerUnit for TotalLinearStoppingPowerUnit;
1751
+ alias LinearStoppingPowerValue for TotalLinearStoppingPowerValue;
1752
+ alias linearStoppingPower for totalLinearStoppingPower;
1753
+
1754
+ /* ISO-80000-10 item 10-55 total mass stopping power, mass stopping power */
1755
+ attribute def TotalMassStoppingPowerValue :> ScalarQuantityValue {
1756
+ doc
1757
+ /*
1758
+ * source: item 10-55 total mass stopping power, mass stopping power
1759
+ * symbol(s): `S_m`
1760
+ * application domain: generic
1761
+ * name: TotalMassStoppingPower
1762
+ * quantity dimension: L^4*T^-2
1763
+ * measurement unit(s): eV*m^-2/kg, J*m^2/kg, m^4*s^-2
1764
+ * tensor order: 0
1765
+ * definition: quotient of the total linear stopping power `S` (item 10-54) and the mass density `ρ` (ISO 80000-4) of the material: `S_m = S/ρ`
1766
+ * remarks: The quotient of total mass stopping power of a material and that of a reference material is called relative mass stopping power.
1767
+ */
1768
+ attribute :>> num: Real;
1769
+ attribute :>> mRef: TotalMassStoppingPowerUnit[1];
1770
+ }
1771
+
1772
+ attribute totalMassStoppingPower: TotalMassStoppingPowerValue[*] nonunique :> scalarQuantities;
1773
+
1774
+ attribute def TotalMassStoppingPowerUnit :> DerivedUnit {
1775
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 4; }
1776
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1777
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
1778
+ }
1779
+
1780
+ alias MassStoppingPowerUnit for TotalMassStoppingPowerUnit;
1781
+ alias MassStoppingPowerValue for TotalMassStoppingPowerValue;
1782
+ alias massStoppingPower for totalMassStoppingPower;
1783
+
1784
+ /* ISO-80000-10 item 10-56 mean linear range */
1785
+ attribute meanLinearRange: LengthValue :> scalarQuantities {
1786
+ doc
1787
+ /*
1788
+ * source: item 10-56 mean linear range
1789
+ * symbol(s): `R`, `R_l`
1790
+ * application domain: generic
1791
+ * name: MeanLinearRange (specializes Length)
1792
+ * quantity dimension: L^1
1793
+ * measurement unit(s): m
1794
+ * tensor order: 0
1795
+ * definition: mean total rectified path length (ISO 80000-3) travelled by a particle in the course of slowing down to rest in a given material averaged over a group of particles having the same initial energy (ISO 80000-5)
1796
+ * remarks: None.
1797
+ */
1798
+ }
1799
+
1800
+ /* ISO-80000-10 item 10-57 mean mass range */
1801
+ attribute def MeanMassRangeValue :> ScalarQuantityValue {
1802
+ doc
1803
+ /*
1804
+ * source: item 10-57 mean mass range
1805
+ * symbol(s): `R_ρ`, `R_m`
1806
+ * application domain: generic
1807
+ * name: MeanMassRange
1808
+ * quantity dimension: L^-2*M^1
1809
+ * measurement unit(s): kg*m^-2
1810
+ * tensor order: 0
1811
+ * definition: product of the mean linear range (item 10-56) `R` and the mass density `ρ` (ISO 80000-4) of the material: `R_ρ = R*ρ`
1812
+ * remarks: None.
1813
+ */
1814
+ attribute :>> num: Real;
1815
+ attribute :>> mRef: MeanMassRangeUnit[1];
1816
+ }
1817
+
1818
+ attribute meanMassRange: MeanMassRangeValue[*] nonunique :> scalarQuantities;
1819
+
1820
+ attribute def MeanMassRangeUnit :> DerivedUnit {
1821
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -2; }
1822
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1823
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
1824
+ }
1825
+
1826
+ /* ISO-80000-10 item 10-58 linear ionization */
1827
+ attribute def LinearIonizationValue :> ScalarQuantityValue {
1828
+ doc
1829
+ /*
1830
+ * source: item 10-58 linear ionization
1831
+ * symbol(s): `N_{i_l}`
1832
+ * application domain: generic
1833
+ * name: LinearIonization
1834
+ * quantity dimension: L^-1
1835
+ * measurement unit(s): m^-1
1836
+ * tensor order: 0
1837
+ * definition: differential quotient of `q` with respect to `l`, where `q` is the average total charge (IEC 80000-6) of all positive ions produced by an ionizing charged particle over a path `l` (ISO 80000-3), divided by the elementary charge, `e` (ISO 80000-1): `N_{i_l} = 1/e*(dq)/(dl)`
1838
+ * remarks: Ionization due to secondary ionizing particles is included.
1839
+ */
1840
+ attribute :>> num: Real;
1841
+ attribute :>> mRef: LinearIonizationUnit[1];
1842
+ }
1843
+
1844
+ attribute linearIonization: LinearIonizationValue[*] nonunique :> scalarQuantities;
1845
+
1846
+ attribute def LinearIonizationUnit :> DerivedUnit {
1847
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -1; }
1848
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1849
+ }
1850
+
1851
+ /* ISO-80000-10 item 10-59 total ionization */
1852
+ attribute def TotalIonizationValue :> DimensionOneValue {
1853
+ doc
1854
+ /*
1855
+ * source: item 10-59 total ionization
1856
+ * symbol(s): `N_i`
1857
+ * application domain: generic
1858
+ * name: TotalIonization (specializes DimensionOneQuantity)
1859
+ * quantity dimension: 1
1860
+ * measurement unit(s): 1
1861
+ * tensor order: 0
1862
+ * definition: quotient of the total mean charge of all positive ions produced by an ionizing charged particle along its entire path and along the paths of any secondary charged particles, and the elementary charge, `e` (ISO 80000-1)
1863
+ * remarks: `N_i = int N_(il) dl` See item 10-58.
1864
+ */
1865
+ }
1866
+ attribute totalIonization: TotalIonizationValue :> scalarQuantities;
1867
+
1868
+ /* ISO-80000-10 item 10-60 average energy loss per elementary charge produced */
1869
+ attribute def AverageEnergyLossPerElementaryChargeProducedValue :> ScalarQuantityValue {
1870
+ doc
1871
+ /*
1872
+ * source: item 10-60 average energy loss per elementary charge produced
1873
+ * symbol(s): `W_i`
1874
+ * application domain: generic
1875
+ * name: AverageEnergyLossPerElementaryChargeProduced
1876
+ * quantity dimension: L^2*M^1*T^-2
1877
+ * measurement unit(s): eV, J, kg*m^2*s^-2
1878
+ * tensor order: 0
1879
+ * definition: quotient of the initial kinetic energy `E_k` (ISO 80000-4) of an ionizing charged particle and the total ionization `N_i` (item 10-59) produced by that particle: `W_i = E_k/N_i`
1880
+ * remarks: The name "average energy loss per ion pair formed" is usually used, although it is ambiguous. In the practical dosimetry of ionizing radiation the term `W`/`e`, the quotient of `W`, the average energy deposited in dry air per ion pair formed, and `e`, the elementary charge, is used as the factor which, when multiplied with the electric charge of one sign carried by all ion pairs formed in dry air of given mass, gives the energy deposited in this amount of dry air in the form of excitations and ionizations. In ICRU Report 85a, the mean energy expended in a gas per ion pair formed, `W`, is the quotient of `E` by `N,` where `N` is the mean total liberated charge of either sign, divided by the elementary charge when the initial kinetic energy `E` of a charged particle introduced into the gas is completely dissipated in the gas. Thus, `W` = `E`/`N`. It follows from the definition of `W` that the ions produced by bremsstrahlung or other secondary radiation emitted by the initial and secondary charged particles are included in `N`.
1881
+ */
1882
+ attribute :>> num: Real;
1883
+ attribute :>> mRef: AverageEnergyLossPerElementaryChargeProducedUnit[1];
1884
+ }
1885
+
1886
+ attribute averageEnergyLossPerElementaryChargeProduced: AverageEnergyLossPerElementaryChargeProducedValue[*] nonunique :> scalarQuantities;
1887
+
1888
+ attribute def AverageEnergyLossPerElementaryChargeProducedUnit :> DerivedUnit {
1889
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
1890
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
1891
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
1892
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
1893
+ }
1894
+
1895
+ /* ISO-80000-10 item 10-61 mobility */
1896
+ attribute def MobilityValue :> ScalarQuantityValue {
1897
+ doc
1898
+ /*
1899
+ * source: item 10-61 mobility
1900
+ * symbol(s): `μ`, `μ_m`
1901
+ * application domain: generic
1902
+ * name: Mobility
1903
+ * quantity dimension: M^-1*T^2*I^1
1904
+ * measurement unit(s): m^2/(V*s), kg^-1*s^2*A
1905
+ * tensor order: 0
1906
+ * definition: quotient of average drift speed (ISO 80000-3) imparted to a charged particle in a medium by an electric field, and the electric field strength (IEC 80000-6)
1907
+ * remarks: None.
1908
+ */
1909
+ attribute :>> num: Real;
1910
+ attribute :>> mRef: MobilityUnit[1];
1911
+ }
1912
+
1913
+ attribute mobility: MobilityValue[*] nonunique :> scalarQuantities;
1914
+
1915
+ attribute def MobilityUnit :> DerivedUnit {
1916
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
1917
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 2; }
1918
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
1919
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
1920
+ }
1921
+
1922
+ /* ISO-80000-10 item 10-62.1 particle number density */
1923
+ attribute def ParticleNumberDensityValue :> ScalarQuantityValue {
1924
+ doc
1925
+ /*
1926
+ * source: item 10-62.1 particle number density
1927
+ * symbol(s): `n`
1928
+ * application domain: generic
1929
+ * name: ParticleNumberDensity
1930
+ * quantity dimension: L^-3
1931
+ * measurement unit(s): m^-3
1932
+ * tensor order: 0
1933
+ * definition: quotient of the mean number `N` of particles in the volume (ISO 80000-3) `V` and volume: `n = N/V`
1934
+ * remarks: `n` is the general symbol for the number density of particles. The distribution functions expressed in terms of speed and energy, `n_v` and `n_E`, are related to `n` by: `n = int n_v dv = int n_E dE`. The word "particle" is usually replaced by the name of a specific particle, for example `neutron` number density.
1935
+ */
1936
+ attribute :>> num: Real;
1937
+ attribute :>> mRef: ParticleNumberDensityUnit[1];
1938
+ }
1939
+
1940
+ attribute particleNumberDensity: ParticleNumberDensityValue[*] nonunique :> scalarQuantities;
1941
+
1942
+ attribute def ParticleNumberDensityUnit :> DerivedUnit {
1943
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
1944
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1945
+ }
1946
+
1947
+ /* ISO-80000-10 item 10-62.2 ion number density, ion density */
1948
+ attribute def IonNumberDensityValue :> ScalarQuantityValue {
1949
+ doc
1950
+ /*
1951
+ * source: item 10-62.2 ion number density, ion density
1952
+ * symbol(s): `n^"+"`, `n^"-"`
1953
+ * application domain: generic
1954
+ * name: IonNumberDensity
1955
+ * quantity dimension: L^-3
1956
+ * measurement unit(s): m^-3
1957
+ * tensor order: 0
1958
+ * definition: quotient of the number of positive and negative ions, `N^"+"` and `N^"-"`, respectively, in the volume `V` (ISO 80000-3), and that volume: `n^"+" = N^"+" / V`, `n^"-" = N^"-" / V`
1959
+ * remarks: None.
1960
+ */
1961
+ attribute :>> num: Real;
1962
+ attribute :>> mRef: IonNumberDensityUnit[1];
1963
+ }
1964
+
1965
+ attribute ionNumberDensity: IonNumberDensityValue[*] nonunique :> scalarQuantities;
1966
+
1967
+ attribute def IonNumberDensityUnit :> DerivedUnit {
1968
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
1969
+ attribute :>> quantityDimension { :>> quantityPowerFactors = lengthPF; }
1970
+ }
1971
+
1972
+ alias IonDensityUnit for IonNumberDensityUnit;
1973
+ alias IonDensityValue for IonNumberDensityValue;
1974
+ alias ionDensity for ionNumberDensity;
1975
+
1976
+ /* ISO-80000-10 item 10-63 Recombination coefficient */
1977
+ attribute def RecombinationCoefficientValue :> ScalarQuantityValue {
1978
+ doc
1979
+ /*
1980
+ * source: item 10-63 Recombination coefficient
1981
+ * symbol(s): `α`
1982
+ * application domain: generic
1983
+ * name: RecombinationCoefficient
1984
+ * quantity dimension: L^3*T^-1
1985
+ * measurement unit(s): m^3*s^-1
1986
+ * tensor order: 0
1987
+ * definition: coefficient in the law of recombination: `-(dn^"+")/(dt) = -(dn^"-")/(dt) = α*n^"+"*n^"-"`, where `n^"+"` and `n^"-"` are the ion number densities (item 10-62.2) of positive and negative ions, respectively, recombined during a time interval of duration `dt` (ISO 80000-3)
1988
+ * remarks: The widely used term "recombination factor" is not correct because "factor" should only be used for quantities with dimension 1. The terms `(dn^"+")/(dt)` , `(dn^"-")/(dt)` are differential quotients.
1989
+ */
1990
+ attribute :>> num: Real;
1991
+ attribute :>> mRef: RecombinationCoefficientUnit[1];
1992
+ }
1993
+
1994
+ attribute recombinationCoefficient: RecombinationCoefficientValue[*] nonunique :> scalarQuantities;
1995
+
1996
+ attribute def RecombinationCoefficientUnit :> DerivedUnit {
1997
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 3; }
1998
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
1999
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2000
+ }
2001
+
2002
+ /* ISO-80000-10 item 10-64 diffusion coefficient, diffusion coefficient for particle number density */
2003
+ /* Refer to declaration for DiffusionCoefficient in ISQChemistryMolecular item 9-39 diffusion coefficient */
2004
+
2005
+ alias DiffusionCoefficientForParticleNumberDensityUnit for DiffusionCoefficientUnit;
2006
+ alias DiffusionCoefficientForParticleNumberDensityValue for DiffusionCoefficientValue;
2007
+ alias diffusionCoefficientForParticleNumberDensity for diffusionCoefficient;
2008
+
2009
+ /* ISO-80000-10 item 10-65 diffusion coefficient for fluence rate */
2010
+ attribute diffusionCoefficientForFluenceRate: LengthValue :> scalarQuantities {
2011
+ doc
2012
+ /*
2013
+ * source: item 10-65 diffusion coefficient for fluence rate
2014
+ * symbol(s): `D_ϕ`, `D`
2015
+ * application domain: generic
2016
+ * name: DiffusionCoefficientForFluenceRate (specializes Length)
2017
+ * quantity dimension: L^1
2018
+ * measurement unit(s): m
2019
+ * tensor order: 0
2020
+ * definition: proportionality constant between the particle current density `vec(J )`(item 10-48) and the gradient of the particle fluence rate `dot(Φ)` (item 10-44): `vec(J) = -vec(D) * nabla Φ`
2021
+ * remarks: For a particle of a given speed `v`: `D_Ψ(v) = -J_{v,x}/(partial Ψ // partial x)` and `vec(v) * vec(D_Ψ)(v) = -vec(D_n)(v)`
2022
+ */
2023
+ }
2024
+
2025
+ /* ISO-80000-10 item 10-66 particle source density */
2026
+ attribute def ParticleSourceDensityValue :> ScalarQuantityValue {
2027
+ doc
2028
+ /*
2029
+ * source: item 10-66 particle source density
2030
+ * symbol(s): `S`
2031
+ * application domain: generic
2032
+ * name: ParticleSourceDensity
2033
+ * quantity dimension: L^-3*T^-1
2034
+ * measurement unit(s): m^-3*s^-1
2035
+ * tensor order: 0
2036
+ * definition: quotient of the mean rate of production of particles in a volume, and that volume (ISO 80000-3)
2037
+ * remarks: The word "particle" is usually replaced by the name of a specific particle, for example `proton` source density. The distribution functions expressed in terms of speed and energy, `S_v` and `S_E`, are related to `S` by: `S = int S_v dv = int S_E dE`.
2038
+ */
2039
+ attribute :>> num: Real;
2040
+ attribute :>> mRef: ParticleSourceDensityUnit[1];
2041
+ }
2042
+
2043
+ attribute particleSourceDensity: ParticleSourceDensityValue[*] nonunique :> scalarQuantities;
2044
+
2045
+ attribute def ParticleSourceDensityUnit :> DerivedUnit {
2046
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
2047
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
2048
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2049
+ }
2050
+
2051
+ /* ISO-80000-10 item 10-67 slowing-down density */
2052
+ attribute def SlowingDownDensityValue :> ScalarQuantityValue {
2053
+ doc
2054
+ /*
2055
+ * source: item 10-67 slowing-down density
2056
+ * symbol(s): `q`
2057
+ * application domain: generic
2058
+ * name: SlowingDownDensity
2059
+ * quantity dimension: L^-3*T^-1
2060
+ * measurement unit(s): m^-3*s^-1
2061
+ * tensor order: 0
2062
+ * definition: differential quotient of `n` with respect to time, where `n` is the number density of particles that are slowed down in a time interval of duration (ISO 80000-3) `t`: `q = -(dn)/(dt)`
2063
+ * remarks: None.
2064
+ */
2065
+ attribute :>> num: Real;
2066
+ attribute :>> mRef: SlowingDownDensityUnit[1];
2067
+ }
2068
+
2069
+ attribute slowingDownDensity: SlowingDownDensityValue[*] nonunique :> scalarQuantities;
2070
+
2071
+ attribute def SlowingDownDensityUnit :> DerivedUnit {
2072
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = -3; }
2073
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -1; }
2074
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2075
+ }
2076
+
2077
+ /* ISO-80000-10 item 10-68 resonance escape probability */
2078
+ attribute def ResonanceEscapeProbabilityValue :> DimensionOneValue {
2079
+ doc
2080
+ /*
2081
+ * source: item 10-68 resonance escape probability
2082
+ * symbol(s): `p`
2083
+ * application domain: generic
2084
+ * name: ResonanceEscapeProbability (specializes DimensionOneQuantity)
2085
+ * quantity dimension: 1
2086
+ * measurement unit(s): 1
2087
+ * tensor order: 0
2088
+ * definition: in an infinite medium, the probability that a neutron slowing down will traverse all or some specified portion of the range of resonance energies (item 10-37.2) without being absorbed
2089
+ * remarks: None.
2090
+ */
2091
+ }
2092
+ attribute resonanceEscapeProbability: ResonanceEscapeProbabilityValue :> scalarQuantities;
2093
+
2094
+ /* ISO-80000-10 item 10-69 lethargy */
2095
+ attribute def LethargyValue :> DimensionOneValue {
2096
+ doc
2097
+ /*
2098
+ * source: item 10-69 lethargy
2099
+ * symbol(s): `u`
2100
+ * application domain: generic
2101
+ * name: Lethargy (specializes DimensionOneQuantity)
2102
+ * quantity dimension: 1
2103
+ * measurement unit(s): 1
2104
+ * tensor order: 0
2105
+ * definition: for a neutron of kinetic energy `E` (ISO 80000-4) : `u = ln(E_0/E)`, where `E_0` is a reference energy
2106
+ * remarks: Lethargy is also referred to as logarithmic energy decrement.
2107
+ */
2108
+ }
2109
+ attribute lethargy: LethargyValue :> scalarQuantities;
2110
+
2111
+ /* ISO-80000-10 item 10-70 average logarithmic energy decrement */
2112
+ attribute def AverageLogarithmicEnergyDecrementValue :> DimensionOneValue {
2113
+ doc
2114
+ /*
2115
+ * source: item 10-70 average logarithmic energy decrement
2116
+ * symbol(s): `ζ`
2117
+ * application domain: generic
2118
+ * name: AverageLogarithmicEnergyDecrement (specializes DimensionOneQuantity)
2119
+ * quantity dimension: 1
2120
+ * measurement unit(s): 1
2121
+ * tensor order: 0
2122
+ * definition: average value of the increase in lethargy (item 10-69) in elastic collisions between neutrons and nuclei whose kinetic energy (ISO 80000-4) is negligible compared with that of the neutrons
2123
+ * remarks: None.
2124
+ */
2125
+ }
2126
+ attribute averageLogarithmicEnergyDecrement: AverageLogarithmicEnergyDecrementValue :> scalarQuantities;
2127
+
2128
+ /* ISO-80000-10 item 10-71 mean free path */
2129
+ attribute meanFreePathForAtomicPhysics: LengthValue :> scalarQuantities {
2130
+ doc
2131
+ /*
2132
+ * source: item 10-71 mean free path
2133
+ * symbol(s): `l`, `λ`
2134
+ * application domain: atomic physics
2135
+ * name: MeanFreePath (specializes Length)
2136
+ * quantity dimension: L^1
2137
+ * measurement unit(s): m
2138
+ * tensor order: 0
2139
+ * definition: average distance (ISO 80000-3) that particles travel between two successive specified reactions or processes
2140
+ * remarks: See the Remarks for item 10-42.1.
2141
+ */
2142
+ }
2143
+
2144
+ /* ISO-80000-10 item 10-72.1 slowing-down area */
2145
+ attribute slowingDownArea: AreaValue :> scalarQuantities {
2146
+ doc
2147
+ /*
2148
+ * source: item 10-72.1 slowing-down area
2149
+ * symbol(s): `L_s^2`, `L_"sl"^2`
2150
+ * application domain: generic
2151
+ * name: SlowingDownArea (specializes Area)
2152
+ * quantity dimension: L^2
2153
+ * measurement unit(s): m^2
2154
+ * tensor order: 0
2155
+ * definition: in an infinite homogenous medium, one-sixth of the mean square of the distance (ISO 80000-3) between the neutron source and the point where a neutron reaches a given energy (ISO 80000-5)
2156
+ * remarks: None.
2157
+ */
2158
+ }
2159
+
2160
+ /* ISO-80000-10 item 10-72.2 diffusion area */
2161
+ attribute diffusionArea: AreaValue :> scalarQuantities {
2162
+ doc
2163
+ /*
2164
+ * source: item 10-72.2 diffusion area
2165
+ * symbol(s): `L^2`
2166
+ * application domain: generic
2167
+ * name: DiffusionArea (specializes Area)
2168
+ * quantity dimension: L^2
2169
+ * measurement unit(s): m^2
2170
+ * tensor order: 0
2171
+ * definition: in an infinite homogenous medium, one-sixth of the mean square distance (ISO 80000-3) between the point where a neutron enters a specified class and the point where it leaves this class
2172
+ * remarks: The class of neutrons must be specified, e.g. thermal.
2173
+ */
2174
+ }
2175
+
2176
+ /* ISO-80000-10 item 10-72.3 migration area */
2177
+ attribute migrationArea: AreaValue :> scalarQuantities {
2178
+ doc
2179
+ /*
2180
+ * source: item 10-72.3 migration area
2181
+ * symbol(s): `M^2`
2182
+ * application domain: generic
2183
+ * name: MigrationArea (specializes Area)
2184
+ * quantity dimension: L^2
2185
+ * measurement unit(s): m^2
2186
+ * tensor order: 0
2187
+ * definition: sum of the slowing-down area (item 10-72.1) from fission energy to thermal energy (ISO 80000-5) and the diffusion area (item 10-72.2) for thermal neutrons
2188
+ * remarks: None.
2189
+ */
2190
+ }
2191
+
2192
+ /* ISO-80000-10 item 10-73.1 slowing-down length */
2193
+ attribute slowingDownLength: LengthValue :> scalarQuantities {
2194
+ doc
2195
+ /*
2196
+ * source: item 10-73.1 slowing-down length
2197
+ * symbol(s): `L_s`, `L_"sl"`
2198
+ * application domain: generic
2199
+ * name: SlowingDownLength (specializes Length)
2200
+ * quantity dimension: L^1
2201
+ * measurement unit(s): m
2202
+ * tensor order: 0
2203
+ * definition: square root of the slowing down area `L_s^2` (item 10-72.1): `L_s = sqrt(L_s^2)`
2204
+ * remarks: None.
2205
+ */
2206
+ }
2207
+
2208
+ /* ISO-80000-10 item 10-73.2 diffusion length */
2209
+ attribute diffusionLength: LengthValue :> scalarQuantities {
2210
+ doc
2211
+ /*
2212
+ * source: item 10-73.2 diffusion length
2213
+ * symbol(s): `L`
2214
+ * application domain: atomic physics
2215
+ * name: DiffusionLength (specializes Length)
2216
+ * quantity dimension: L^1
2217
+ * measurement unit(s): m
2218
+ * tensor order: 0
2219
+ * definition: square root of the diffusion area `L^2` (item 10-72.2): `L = sqrt(L^2)`
2220
+ * remarks: None.
2221
+ */
2222
+ }
2223
+
2224
+ /* ISO-80000-10 item 10-73.3 migration length */
2225
+ attribute migrationLength: LengthValue :> scalarQuantities {
2226
+ doc
2227
+ /*
2228
+ * source: item 10-73.3 migration length
2229
+ * symbol(s): `M`
2230
+ * application domain: generic
2231
+ * name: MigrationLength (specializes Length)
2232
+ * quantity dimension: L^1
2233
+ * measurement unit(s): m
2234
+ * tensor order: 0
2235
+ * definition: square root of the migration area `M^2` (item 10-72.3): `M = sqrt(M^2)`
2236
+ * remarks: None.
2237
+ */
2238
+ }
2239
+
2240
+ /* ISO-80000-10 item 10-74.1 neutron yield per fission */
2241
+ attribute neutronYieldPerFission: CountValue :> scalarQuantities {
2242
+ doc
2243
+ /*
2244
+ * source: item 10-74.1 neutron yield per fission
2245
+ * symbol(s): `ν`
2246
+ * application domain: generic
2247
+ * name: NeutronYieldPerFission (specializes Count)
2248
+ * quantity dimension: 1
2249
+ * measurement unit(s): 1
2250
+ * tensor order: 0
2251
+ * definition: average number of fission neutrons, both prompt and delayed, emitted per fission event
2252
+ * remarks: None.
2253
+ */
2254
+ }
2255
+
2256
+ /* ISO-80000-10 item 10-74.2 neutron yield per absorption */
2257
+ attribute neutronYieldPerAbsorption: CountValue :> scalarQuantities {
2258
+ doc
2259
+ /*
2260
+ * source: item 10-74.2 neutron yield per absorption
2261
+ * symbol(s): `η`
2262
+ * application domain: generic
2263
+ * name: NeutronYieldPerAbsorption (specializes Count)
2264
+ * quantity dimension: 1
2265
+ * measurement unit(s): 1
2266
+ * tensor order: 0
2267
+ * definition: average number of fission neutrons, both prompt and delayed, emitted per neutron absorbed in a fissionable nuclide or in a nuclear fuel, as specified
2268
+ * remarks: `ν/η` is equal to the quotient of the macroscopic cross section for fission and that for absorption, both for neutrons in the fuel material.
2269
+ */
2270
+ }
2271
+
2272
+ /* ISO-80000-10 item 10-75 fast fission factor */
2273
+ attribute def FastFissionFactorValue :> ScalarQuantityValue {
2274
+ doc
2275
+ /*
2276
+ * source: item 10-75 fast fission factor
2277
+ * symbol(s): `φ`
2278
+ * application domain: generic
2279
+ * name: FastFissionFactor
2280
+ * quantity dimension: 1
2281
+ * measurement unit(s): 1
2282
+ * tensor order: 0
2283
+ * definition: in an infinite medium, the quotient of the mean number of neutrons produced by fission due to neutrons of all energies (ISO 80000-5) and the mean number of neutrons produced by fissions due to thermal neutrons only
2284
+ * remarks: The class of neutrons must be specified, e.g. thermal.
2285
+ */
2286
+ attribute :>> num: Real;
2287
+ attribute :>> mRef: FastFissionFactorUnit[1];
2288
+ }
2289
+
2290
+ attribute fastFissionFactor: FastFissionFactorValue[*] nonunique :> scalarQuantities;
2291
+
2292
+ attribute def FastFissionFactorUnit :> DimensionOneUnit {
2293
+ }
2294
+
2295
+ /* ISO-80000-10 item 10-76 thermal utilization factor */
2296
+ attribute def ThermalUtilizationFactorValue :> ScalarQuantityValue {
2297
+ doc
2298
+ /*
2299
+ * source: item 10-76 thermal utilization factor
2300
+ * symbol(s): `f`
2301
+ * application domain: generic
2302
+ * name: ThermalUtilizationFactor
2303
+ * quantity dimension: 1
2304
+ * measurement unit(s): 1
2305
+ * tensor order: 0
2306
+ * definition: in an infinite medium, the quotient of the number of thermal neutrons absorbed in a fissionable nuclide or in a nuclear fuel, as specified, and the total number of thermal neutrons absorbed
2307
+ * remarks: None.
2308
+ */
2309
+ attribute :>> num: Real;
2310
+ attribute :>> mRef: ThermalUtilizationFactorUnit[1];
2311
+ }
2312
+
2313
+ attribute thermalUtilizationFactor: ThermalUtilizationFactorValue[*] nonunique :> scalarQuantities;
2314
+
2315
+ attribute def ThermalUtilizationFactorUnit :> DimensionOneUnit {
2316
+ }
2317
+
2318
+ /* ISO-80000-10 item 10-77 non-leakage probability */
2319
+ attribute def NonLeakageProbabilityValue :> ScalarQuantityValue {
2320
+ doc
2321
+ /*
2322
+ * source: item 10-77 non-leakage probability
2323
+ * symbol(s): `Λ`
2324
+ * application domain: generic
2325
+ * name: NonLeakageProbability
2326
+ * quantity dimension: 1
2327
+ * measurement unit(s): 1
2328
+ * tensor order: 0
2329
+ * definition: probability that a neutron will not escape from the reactor during the slowing-down process or while it diffuses as a thermal neutron
2330
+ * remarks: None.
2331
+ */
2332
+ attribute :>> num: Real;
2333
+ attribute :>> mRef: NonLeakageProbabilityUnit[1];
2334
+ }
2335
+
2336
+ attribute nonLeakageProbability: NonLeakageProbabilityValue[*] nonunique :> scalarQuantities;
2337
+
2338
+ attribute def NonLeakageProbabilityUnit :> DimensionOneUnit {
2339
+ }
2340
+
2341
+ /* ISO-80000-10 item 10-78.1 multiplication factor */
2342
+ attribute def MultiplicationFactorValue :> ScalarQuantityValue {
2343
+ doc
2344
+ /*
2345
+ * source: item 10-78.1 multiplication factor
2346
+ * symbol(s): `k`
2347
+ * application domain: generic
2348
+ * name: MultiplicationFactor
2349
+ * quantity dimension: 1
2350
+ * measurement unit(s): 1
2351
+ * tensor order: 0
2352
+ * definition: quotient of the total number of fission or fission-dependent neutrons produced in the duration of a time interval and the total number of neutrons lost by absorption and leakage in that duration
2353
+ * remarks: None.
2354
+ */
2355
+ attribute :>> num: Real;
2356
+ attribute :>> mRef: MultiplicationFactorUnit[1];
2357
+ }
2358
+
2359
+ attribute multiplicationFactor: MultiplicationFactorValue[*] nonunique :> scalarQuantities;
2360
+
2361
+ attribute def MultiplicationFactorUnit :> DimensionOneUnit {
2362
+ }
2363
+
2364
+ /* ISO-80000-10 item 10-78.2 infinite multiplication factor */
2365
+ attribute def InfiniteMultiplicationFactorValue :> ScalarQuantityValue {
2366
+ doc
2367
+ /*
2368
+ * source: item 10-78.2 infinite multiplication factor
2369
+ * symbol(s): `k_∞`
2370
+ * application domain: generic
2371
+ * name: InfiniteMultiplicationFactor
2372
+ * quantity dimension: 1
2373
+ * measurement unit(s): 1
2374
+ * tensor order: 0
2375
+ * definition: multiplication factor (item 10-78.1) for an infinite medium or for an infinite repeating lattice
2376
+ * remarks: For a thermal reactor, `k_∞ = η*ε*p*f`
2377
+ */
2378
+ attribute :>> num: Real;
2379
+ attribute :>> mRef: InfiniteMultiplicationFactorUnit[1];
2380
+ }
2381
+
2382
+ attribute infiniteMultiplicationFactor: InfiniteMultiplicationFactorValue[*] nonunique :> scalarQuantities;
2383
+
2384
+ attribute def InfiniteMultiplicationFactorUnit :> DimensionOneUnit {
2385
+ }
2386
+
2387
+ /* ISO-80000-10 item 10-79 reactor time constant */
2388
+ attribute reactorTimeConstant: DurationValue :> scalarQuantities {
2389
+ doc
2390
+ /*
2391
+ * source: item 10-79 reactor time constant
2392
+ * symbol(s): `T`
2393
+ * application domain: generic
2394
+ * name: ReactorTimeConstant (specializes Duration)
2395
+ * quantity dimension: T^1
2396
+ * measurement unit(s): s
2397
+ * tensor order: 0
2398
+ * definition: duration (ISO 80000-3) required for the neutron fluence rate (item 10-44) in a reactor to change by the factor e when the fluence rate is rising or falling exponentially
2399
+ * remarks: Also called reactor period.
2400
+ */
2401
+ }
2402
+
2403
+ /* ISO-80000-10 item 10-80.1 energy imparted */
2404
+ attribute energyImparted: EnergyValue :> scalarQuantities {
2405
+ doc
2406
+ /*
2407
+ * source: item 10-80.1 energy imparted
2408
+ * symbol(s): `ε`
2409
+ * application domain: generic
2410
+ * name: EnergyImparted (specializes Energy)
2411
+ * quantity dimension: L^2*M^1*T^-2
2412
+ * measurement unit(s): eV, J, kg*m^2*s^-2
2413
+ * tensor order: 0
2414
+ * definition: sum of all energy deposits in a given volume: `ε = sum_i ε_i` where the summation is performed over all energy (ISO 80000-5) deposits `ε_i` of interaction `i` in that volume
2415
+ * remarks: Energy imparted is a stochastic quantity. `ε_i` is given by: `ε_i = ε_(i n) - ε_"out" + Q` where `ε_(i n)` is the energy (ISO 80000-5) of the incident ionizing particle, excluding rest energy (item 10-3), `ε_"out"` is the sum of the energies (ISO 80000-5) of all ionizing particles leaving the interaction, excluding rest energy (item 10-3), and `Q` is the change in the rest energies (item 10-3) of the nucleus and of all particles involved in the interaction. `Q > 0` means decrease of rest energy; `Q < 0` means increase of rest energy. Stochastic quantities such as the energy imparted and the specific energy imparted (item 10-81.2) and their probability distributions have been introduced as they describe the discontinuous nature of the ionizing radiations as a determinant of radiochemical and radiobiological effects. In radiation applications involving large numbers of ionizing particles, e.g. in medicine, radiation protection and materials testing and processing, these fluctuations are adequately represented by the expectation values of the probability distributions. Non-stochastic quantities such as particle fluence (item 10-43), absorbed dose (item 10-81.1) and kerma (item 10-86.1) are based on these expectation values.
2416
+ */
2417
+ }
2418
+
2419
+ /* ISO-80000-10 item 10-80.2 mean energy imparted */
2420
+ attribute meanEnergyImparted: EnergyValue :> scalarQuantities {
2421
+ doc
2422
+ /*
2423
+ * source: item 10-80.2 mean energy imparted
2424
+ * symbol(s): `bar(ε)`
2425
+ * application domain: generic
2426
+ * name: MeanEnergyImparted (specializes Energy)
2427
+ * quantity dimension: L^2*M^1*T^-2
2428
+ * measurement unit(s): eV, J, kg*m^2*s^-2
2429
+ * tensor order: 0
2430
+ * definition: expectation value of the energy imparted (item 10-80.1): `bar(ε) = R_"in" - R_"out" + sum Q` where `R_"in"` is the radiant energy (item 10-45) of all those charged and uncharged ionizing particles that enter the volume, `R_"out"` is the radiant energy of all those charged and uncharged ionizing particles that leave the volume, and `sum Q` is the sum of all changes of the rest energy (item 10-3) of nuclei and elementary particles that occur in that volume
2431
+ * remarks: Sometimes, it has been called the integral absorbed dose. `Q > 0` means decrease of rest energy; `Q < 0` means increase of rest energy.
2432
+ */
2433
+ }
2434
+
2435
+ /* ISO-80000-10 item 10-81.1 absorbed dose */
2436
+ attribute def AbsorbedDoseValue :> ScalarQuantityValue {
2437
+ doc
2438
+ /*
2439
+ * source: item 10-81.1 absorbed dose
2440
+ * symbol(s): `D`
2441
+ * application domain: generic
2442
+ * name: AbsorbedDose
2443
+ * quantity dimension: L^2*T^-2
2444
+ * measurement unit(s): Gy, J/kg, m^2*s^-2
2445
+ * tensor order: 0
2446
+ * definition: differential quotient of `bar(ε)` with respect to `m`, where `bar(ε)` is the mean energy (ISO 80000-5) imparted by ionizing radiation to matter of mass (ISO 80000-4) `m`: `D = (d bar(ε))/(dm)`
2447
+ * remarks: The gray is a special name for joule per kilogram, to be used as the coherent SI unit for absorbed dose. `1 "Gy" = 1 "J"/"kg"`. `bar(ε) = int D dm` where `dm` is the element of mass of the irradiated matter. In the limit of a small domain, the mean specific energy `bar(z) = (Δ bar(ε))/(Δ m)` is equal to the absorbed dose `D`. The absorbed dose can also be expressed in terms of the volume of the mass element by: `D = (d bar(ε))/(dm) = (d bar(ε))/(ρ dV)` where `ρ` is the mass density of the mass element. In report 85a of the ICRU a definition with an equivalent meaning is given as: The absorbed dose, `D`, is the quotient of `d bar(ε)` by dm, where `d bar(ε)` is the mean energy imparted by ionizing radiation to matter of mass `dm`: `D = (d bar(ε))/(dm)`.
2448
+ */
2449
+ attribute :>> num: Real;
2450
+ attribute :>> mRef: AbsorbedDoseUnit[1];
2451
+ }
2452
+
2453
+ attribute absorbedDose: AbsorbedDoseValue[*] nonunique :> scalarQuantities;
2454
+
2455
+ attribute def AbsorbedDoseUnit :> DerivedUnit {
2456
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2457
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
2458
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2459
+ }
2460
+
2461
+ /* ISO-80000-10 item 10-81.2 specific energy imparted */
2462
+ attribute specificEnergyImparted: AbsorbedDoseValue :> scalarQuantities {
2463
+ doc
2464
+ /*
2465
+ * source: item 10-81.2 specific energy imparted
2466
+ * symbol(s): `z`
2467
+ * application domain: generic
2468
+ * name: SpecificEnergyImparted (specializes AbsorbedDose)
2469
+ * quantity dimension: L^2*T^-2
2470
+ * measurement unit(s): Gy, J/kg, m^2*s^-2
2471
+ * tensor order: 0
2472
+ * definition: quotient of the energy imparted `ε` (item 10-80.1) and the mass `m` (ISO 80000-4) of the matter in a given volume element: `z = ε / m`
2473
+ * remarks: `z` is a stochastic quantity. In the limit of a small domain, the mean specific energy `bar(z)` is equal to the absorbed dose `D`. The specific energy imparted can be due to one or more (energy-deposition) events.
2474
+ */
2475
+ }
2476
+
2477
+ /* ISO-80000-10 item 10-82 quality factor */
2478
+ attribute def QualityFactorForIonizingRadiationValue :> ScalarQuantityValue {
2479
+ doc
2480
+ /*
2481
+ * source: item 10-82 quality factor
2482
+ * symbol(s): `Q`
2483
+ * application domain: ionizing radiation
2484
+ * name: QualityFactor
2485
+ * quantity dimension: 1
2486
+ * measurement unit(s): 1
2487
+ * tensor order: 0
2488
+ * definition: factor in the calculation and measurement of dose equivalent (item 10-83.1), by which the absorbed dose (item 10-81.1) is to be weighted in order to account for different biological effectiveness of radiations, for radiation protection purposes
2489
+ * remarks: `Q` is determined by the linear energy transfer (item 10-85) for `Δ -> ∞` , `L_∞` (often denoted as `L` or LET), of charged particles passing through a small volume element at this point (the value of `L_∞` refers to water, not to tissue; the difference, however, is small). The relationship between `L` and `Q` is given in ICRP Publication 103 (ICRP, 2007).
2490
+ */
2491
+ attribute :>> num: Real;
2492
+ attribute :>> mRef: QualityFactorForIonizingRadiationUnit[1];
2493
+ }
2494
+
2495
+ attribute qualityFactorForIonizingRadiation: QualityFactorForIonizingRadiationValue[*] nonunique :> scalarQuantities;
2496
+
2497
+ attribute def QualityFactorForIonizingRadiationUnit :> DimensionOneUnit {
2498
+ }
2499
+
2500
+ /* ISO-80000-10 item 10-83.1 dose equivalent */
2501
+ attribute def DoseEquivalentValue :> ScalarQuantityValue {
2502
+ doc
2503
+ /*
2504
+ * source: item 10-83.1 dose equivalent
2505
+ * symbol(s): `H`
2506
+ * application domain: generic
2507
+ * name: DoseEquivalent
2508
+ * quantity dimension: L^2*T^-2
2509
+ * measurement unit(s): Sv, J/kg, m^2*s^-2
2510
+ * tensor order: 0
2511
+ * definition: product of the absorbed dose `D` (item 10-81.1) to tissue at the point of interest and the quality factor `Q` (item 10-82) at that point: `H = DQ`
2512
+ * remarks: The sievert (Sv) is a special name for joule per kilogram, and is the coherent SI unit for dose equivalent. `1 "Sv" = 1 "J/kg"`. The dose equivalent at a point in tissue is given by: `H = int_0^∞ Q(L) D_L dL` where `D_L = (dD)/(dL)` is the distribution of `D` in `L` at the point of interest. See ICRP Publication 103 (ICRP, 2007). The quantities measured with radiation protection dosimeters are based on the definition `H = Q*D`. If various radiation qualities `i` have to be simultaneously accounted for, the definition is: `H = sum_i Q_i*D_i`. In ICRU 51 this quantity is denoted as "dose equivalent". In order to quantify the radiation exposition of the human body and to specify dose limits, use is made of a quantity defined in ICRP 103, the "equivalent dose to a tissue or organ": `H_T = w_T*sum_R w_R*D_{T,R}`. The weighting factors `w_T` for various tissues and organs `T` and `w_R` for various radiation qualities `R` have been numerically laid down in ICRP 103. `D_{T,R}` is the mean absorbed dose to tissue within a tissue or organ `T`, imparted by radiation with radiation quality `R`.
2513
+ */
2514
+ attribute :>> num: Real;
2515
+ attribute :>> mRef: DoseEquivalentUnit[1];
2516
+ }
2517
+
2518
+ attribute doseEquivalent: DoseEquivalentValue[*] nonunique :> scalarQuantities;
2519
+
2520
+ attribute def DoseEquivalentUnit :> DerivedUnit {
2521
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2522
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
2523
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2524
+ }
2525
+
2526
+ /* ISO-80000-10 item 10-83.2 dose equivalent rate */
2527
+ attribute doseEquivalentRate: DoseEquivalentValue :> scalarQuantities {
2528
+ doc
2529
+ /*
2530
+ * source: item 10-83.2 dose equivalent rate
2531
+ * symbol(s): `dot(H)`
2532
+ * application domain: generic
2533
+ * name: DoseEquivalentRate (specializes DoseEquivalent)
2534
+ * quantity dimension: L^2*T^-3
2535
+ * measurement unit(s): Sv/s, W/kg, m^2*s^-3
2536
+ * tensor order: 0
2537
+ * definition: differential quotient of dose equivalent `H` (item 10-83.1) with respect to time (ISO 80000-3): `dot(H) = (dH)/(dt)`
2538
+ * remarks: `1 "Sv/s" = 1 "W/kg"`. See the remarks for item 10-83.1.
2539
+ */
2540
+ }
2541
+
2542
+ /* ISO-80000-10 item 10-84 absorbed-dose rate */
2543
+ attribute def AbsorbedDoseRateValue :> ScalarQuantityValue {
2544
+ doc
2545
+ /*
2546
+ * source: item 10-84 absorbed-dose rate
2547
+ * symbol(s): `dot(D)`
2548
+ * application domain: generic
2549
+ * name: AbsorbedDoseRate
2550
+ * quantity dimension: L^2*T^-3
2551
+ * measurement unit(s): Gy/s, W/kg, m^2*s^-3
2552
+ * tensor order: 0
2553
+ * definition: differential quotient of the absorbed dose `D` (item 10-81.1) with respect to time (ISO 80000-3): `dot(D) = (dD)/(dt)`
2554
+ * remarks: `1 "Gy/s" = 1 "W/kg"` See the remarks for item 10-81.1. In report 85a of the ICRU a definition with an equivalent meaning is given as: The absorbed-does rate, `dot(D)` , is the quotient of `dD` by `dt`, where `dD` is the increment of absorbed does in the time interval `dt`: `dot(D) = (dD)/(dt)`.
2555
+ */
2556
+ attribute :>> num: Real;
2557
+ attribute :>> mRef: AbsorbedDoseRateUnit[1];
2558
+ }
2559
+
2560
+ attribute absorbedDoseRate: AbsorbedDoseRateValue[*] nonunique :> scalarQuantities;
2561
+
2562
+ attribute def AbsorbedDoseRateUnit :> DerivedUnit {
2563
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2564
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
2565
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2566
+ }
2567
+
2568
+ /* ISO-80000-10 item 10-85 linear energy transfer */
2569
+ attribute def LinearEnergyTransferValue :> ScalarQuantityValue {
2570
+ doc
2571
+ /*
2572
+ * source: item 10-85 linear energy transfer
2573
+ * symbol(s): `L_Δ`
2574
+ * application domain: generic
2575
+ * name: LinearEnergyTransfer
2576
+ * quantity dimension: L^1*M^1*T^-2
2577
+ * measurement unit(s): eV/m, J/m, kg*m*s^-2
2578
+ * tensor order: 0
2579
+ * definition: quotient of the mean energy (ISO 80000-4) `dE_Δ` lost by the charged particles due to electronic interactions in traversing a distance (ISO 80000-3) `dl`, minus the mean sum of the kinetic energies in excess of `Δ` of all the electrons released by the charged particles and `dl`: `L_Δ = (dE_Δ)/(dl)`
2580
+ * remarks: This quantity is not completely defined unless `Δ` is specified, i.e. the maximum kinetic energy of secondary electrons whose energy is considered to be "locally deposited". `Δ` may be expressed in `"eV"`. Note that the abbreviation LET specifically refers to the quantity `L_∞` mentioned in the remark to 10-82.
2581
+ */
2582
+ attribute :>> num: Real;
2583
+ attribute :>> mRef: LinearEnergyTransferUnit[1];
2584
+ }
2585
+
2586
+ attribute linearEnergyTransfer: LinearEnergyTransferValue[*] nonunique :> scalarQuantities;
2587
+
2588
+ attribute def LinearEnergyTransferUnit :> DerivedUnit {
2589
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 1; }
2590
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = 1; }
2591
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
2592
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF, durationPF); }
2593
+ }
2594
+
2595
+ /* ISO-80000-10 item 10-86.1 kerma */
2596
+ attribute def KermaValue :> ScalarQuantityValue {
2597
+ doc
2598
+ /*
2599
+ * source: item 10-86.1 kerma
2600
+ * symbol(s): `K`
2601
+ * application domain: generic
2602
+ * name: Kerma
2603
+ * quantity dimension: L^2*T^-2
2604
+ * measurement unit(s): Gy, J/kg, m^2*s^-2
2605
+ * tensor order: 0
2606
+ * definition: for uncharged ionizing radiation, differential quotient of `E_(`tr) with respect to `m`, where `E_(`tr) is the mean sum of the initial kinetic energies (ISO 80000-4) of all the charged ionizing particles liberated in a mass (ISO 80000-4) `m` of a material: `K = (dE_tr)/(dm)`
2607
+ * remarks: `1 "Gy" = 1 "J/kg"` See the remarks for item 10-81.1. The name "kerma" is derived from Kinetic Energy Released in MAtter (or MAss or MAterial). The quantity `dE_(tr)` includes also the kinetic energy of the charged particles emitted in the decay of excited atoms, molecules, or nuclei. When the mass element `dm` consists of air the term air kerma is used. It can be convenient to refer to a value of air kerma in free space or at a point inside a material different from air, e.g. to the air kerma at a point inside a water phantom. In report 85a of the ICRU a definition with an equivalent meaning is given as: The kerma, `K`, for ionizing uncharged particles, is the quotient of `dE_(tr)` by `dm`, where `dE_(tr)` is the mean sum of the initial kinetic energies of all the charged particles liberated in a mass `dm` of a material by the uncharged particles incident on `dm`: `K = (dE_(tr))/(dm)`.
2608
+ */
2609
+ attribute :>> num: Real;
2610
+ attribute :>> mRef: KermaUnit[1];
2611
+ }
2612
+
2613
+ attribute kerma: KermaValue[*] nonunique :> scalarQuantities;
2614
+
2615
+ attribute def KermaUnit :> DerivedUnit {
2616
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2617
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -2; }
2618
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2619
+ }
2620
+
2621
+ /* ISO-80000-10 item 10-86.2 kerma rate */
2622
+ attribute def KermaRateValue :> ScalarQuantityValue {
2623
+ doc
2624
+ /*
2625
+ * source: item 10-86.2 kerma rate
2626
+ * symbol(s): `dot(K)`
2627
+ * application domain: generic
2628
+ * name: KermaRate
2629
+ * quantity dimension: L^2*T^-3
2630
+ * measurement unit(s): Gy/s, W/kg, m^2*s^-3
2631
+ * tensor order: 0
2632
+ * definition: differential quotient of kerma (item 10-86.1) with respect to time (ISO 80000-3): `dot(K) = (dK)/(dt)`
2633
+ * remarks: `1 "Gy/s" = 1 "W/kg"`. See the Remarks for item 10-81.1. In report 85a of the ICRU a definition with an equivalent meaning is given as: The kerma rate, `dot(K)` , is the quotient of `dK` by `dt`, where `dK` is the increment of kerma in the time interval `dt`: `dot(K) = (dK)/(dt)`.
2634
+ */
2635
+ attribute :>> num: Real;
2636
+ attribute :>> mRef: KermaRateUnit[1];
2637
+ }
2638
+
2639
+ attribute kermaRate: KermaRateValue[*] nonunique :> scalarQuantities;
2640
+
2641
+ attribute def KermaRateUnit :> DerivedUnit {
2642
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2643
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = -3; }
2644
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, durationPF); }
2645
+ }
2646
+
2647
+ /* ISO-80000-10 item 10-87 mass energy-transfer coefficient */
2648
+ attribute def MassEnergyTransferCoefficientValue :> ScalarQuantityValue {
2649
+ doc
2650
+ /*
2651
+ * source: item 10-87 mass energy-transfer coefficient
2652
+ * symbol(s): `μ_"tr"/ρ`
2653
+ * application domain: generic
2654
+ * name: MassEnergyTransferCoefficient
2655
+ * quantity dimension: L^2*M^-1
2656
+ * measurement unit(s): kg^-1*m^2
2657
+ * tensor order: 0
2658
+ * definition: for ionizing uncharged particles of a given type and energy, the differential quotient of `R_"tr"` with respect to `l`: `m_"tr"/ρ = 1/ρ 1/R (dR_"tr")/(dl)` where `R_"tr"` is the mean energy (ISO 80000-5) that is transferred to kinetic energy (ISO 80000-4) of charged particles by interactions of the uncharged particles of incident radiant energy `R` (item 10-45) in traversing a distance (ISO 80000-3) `l` in the material of density (ISO 80000-4) `ρ`, divided by `ρ` and `R`
2659
+ * remarks: `m_(tr)/ρ = (dot(K))/ψ` , where `dot(K)` is kerma rate (item 10-86.2) and `ψ` is energy fluence rate (item 10-47). The quantity: `μ_(en)/ρ = μ_(tr)/ρ(1-g)` where `g` is mean fraction of the kinetic energy of the liberated charged particles that is lost in radiative processes in the material, is called mass energy-absorption coefficient. The mass energy-absorption coefficient of a compound material depends on the stopping power of the material. Thus, its evaluation cannot, in principle, be reduced to a simple summation of the mass energy-absorption coefficient of the atomic constituents. Such a summation can provide an adequate approximation when the value of `g` is sufficiently small. In report 85a of the ICRU a definition with an equivalent meaning is given as: The mass energy-transfer coefficient, `μ_(tr)/ρ` , of a material, for uncharged particles of a given type and energy, is the quotient of `(dR_(tr))/R` by `ρ dl`, where `dR_(tr)` is the mean energy that is transferred to kinetic energy of charged particles by interactions of the uncharged particles of incident radiant energy `R` in traversing a distance `dl` in the material of density `ρ` : `μ_(tr)/ρ = 1/(ρ dl) (d R_(tr))/R`.
2660
+ */
2661
+ attribute :>> num: Real;
2662
+ attribute :>> mRef: MassEnergyTransferCoefficientUnit[1];
2663
+ }
2664
+
2665
+ attribute massEnergyTransferCoefficient: MassEnergyTransferCoefficientValue[*] nonunique :> scalarQuantities;
2666
+
2667
+ attribute def MassEnergyTransferCoefficientUnit :> DerivedUnit {
2668
+ private attribute lengthPF: QuantityPowerFactor[1] { :>> quantity = isq.L; :>> exponent = 2; }
2669
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2670
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (lengthPF, massPF); }
2671
+ }
2672
+
2673
+ /* ISO-80000-10 item 10-88 exposure */
2674
+ attribute def ExposureValue :> ScalarQuantityValue {
2675
+ doc
2676
+ /*
2677
+ * source: item 10-88 exposure
2678
+ * symbol(s): `X`
2679
+ * application domain: ionizing radiation
2680
+ * name: Exposure
2681
+ * quantity dimension: M^-1*T^1*I^1
2682
+ * measurement unit(s): C/kg, kg^-1*s*A
2683
+ * tensor order: 0
2684
+ * definition: for X- or gamma radiation the differential quotient of `q` with respect to `m`, where `q` is the absolute value of the mean total electric charge of the ions of one sign produced when all the electrons and positrons liberated or created by photons incident on an element of dry air with mass `m` (ISO 80000-4) are completely stopped in dry air: `X = (dq)/(dm)`
2685
+ * remarks: The ionization produced by electrons emitted in atomic or molecular relaxation is included in `dq`. The ionization due to photons emitted by radiative processes (i.e. bremsstrahlung and fluorescence photons) is not included in `dq`. This quantity should not be confused with the quantity photon exposure (ISO 80000-7), radiation exposure (ISO 80000-7), or the quantity luminous exposure (ISO 80000-7). It can be convenient to refer to a value of exposure in free space or at a point inside a material different from air, e.g. to the exposure at a point inside a water phantom. The exposure is related to the air kerma, `K_a`, (see item 10-86.1) by: `X = (e (1-g))/W K_a` , where `e` is the elementary charge (ISO 80000-1), `W` the average energy loss per elementary charge produced (item 10-60), and `g` is the fraction of the kinetic energy of liberated charged particles that is lost in radiative processes. In report 85a of the ICRU a definition with an equivalent meaning is given as: The exposure, `X`, is the quotient of `dq` by `dm`, where `dq` is the absolute value of the mean total charge of the ions of one sign produced when all the electrons and positrons liberated or created by photons incident on a mass `dm` of dry air are completely stopped in dry air: `X = (dq)/(dm)`.
2686
+ */
2687
+ attribute :>> num: Real;
2688
+ attribute :>> mRef: ExposureUnit[1];
2689
+ }
2690
+
2691
+ attribute exposure: ExposureValue[*] nonunique :> scalarQuantities;
2692
+
2693
+ attribute def ExposureUnit :> DerivedUnit {
2694
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2695
+ private attribute durationPF: QuantityPowerFactor[1] { :>> quantity = isq.T; :>> exponent = 1; }
2696
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
2697
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, durationPF, electricCurrentPF); }
2698
+ }
2699
+
2700
+ /* ISO-80000-10 item 10-89 exposure rate */
2701
+ attribute def ExposureRateValue :> ScalarQuantityValue {
2702
+ doc
2703
+ /*
2704
+ * source: item 10-89 exposure rate
2705
+ * symbol(s): `dot(X)`
2706
+ * application domain: generic
2707
+ * name: ExposureRate
2708
+ * quantity dimension: M^-1*I^1
2709
+ * measurement unit(s): C/(kg*s), kg^-1*A
2710
+ * tensor order: 0
2711
+ * definition: differential quotient of the exposure `X` (item 10-88) with respect to time (ISO 80000-3): `dot(X) = (dX)/(dt)`
2712
+ * remarks: `1 "C/(kg s)" = 1 "A/kg"`. In report 85a of the ICRU a definition with an equivalent meaning is given as: The exposure rate, `dot(X)` , is the quotient of `dX` by `dt`, where `dX` is the increment of exposure in the time interval `dt`: `dot(X) = (dX)/(dt)`.
2713
+ */
2714
+ attribute :>> num: Real;
2715
+ attribute :>> mRef: ExposureRateUnit[1];
2716
+ }
2717
+
2718
+ attribute exposureRate: ExposureRateValue[*] nonunique :> scalarQuantities;
2719
+
2720
+ attribute def ExposureRateUnit :> DerivedUnit {
2721
+ private attribute massPF: QuantityPowerFactor[1] { :>> quantity = isq.M; :>> exponent = -1; }
2722
+ private attribute electricCurrentPF: QuantityPowerFactor[1] { :>> quantity = isq.I; :>> exponent = 1; }
2723
+ attribute :>> quantityDimension { :>> quantityPowerFactors = (massPF, electricCurrentPF); }
2724
+ }
2725
+
2726
+ }