@dnv-plant/typescriptpws 1.0.70 → 1.0.73-alpha.1902013

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 (215) hide show
  1. package/index.ts +2 -2
  2. package/jest.config.js +5 -0
  3. package/package.json +6 -6
  4. package/src/calculations/applicationTools.ts +2 -2
  5. package/src/calculations/discharge.ts +2 -2
  6. package/src/calculations/dispersion.ts +2 -2
  7. package/src/calculations/dispersionView.ts +2 -2
  8. package/src/calculations/fireball.ts +2 -2
  9. package/src/calculations/jetFire.ts +2 -2
  10. package/src/calculations/lateExplosion.ts +2 -2
  11. package/src/calculations/linkedRunners.ts +2 -2
  12. package/src/calculations/poolFire.ts +2 -2
  13. package/src/calculations/properties.ts +2 -2
  14. package/src/calculations/radiation.ts +2 -2
  15. package/src/calculations/standalones.ts +2 -2
  16. package/src/calculations/toxics.ts +2 -2
  17. package/src/calculations/utilities.ts +2 -2
  18. package/src/constants.ts +2 -2
  19. package/src/entities.ts +2 -2
  20. package/src/entity-schemas.ts +2 -2
  21. package/src/enums.ts +2 -2
  22. package/src/materials.ts +14 -14
  23. package/src/utilities.ts +2 -2
  24. package/tests/concentration-at-point-calculation/testCase116.test.ts +146 -0
  25. package/tests/concentration-at-point-calculation/testCase117.test.ts +142 -0
  26. package/tests/concentration-at-point-calculation/testCase118.test.ts +143 -0
  27. package/tests/concentration-at-point-calculation/testCase119.test.ts +149 -0
  28. package/tests/concentration-at-point-calculation/testCase120.test.ts +155 -0
  29. package/tests/constants/testConstants.test.ts +23 -0
  30. package/tests/convert-comp-mass-to-mole-calculation/testCase129.test.ts +74 -0
  31. package/tests/convert-comp-mass-to-mole-calculation/testCase130.test.ts +73 -0
  32. package/tests/convert-comp-mass-to-mole-calculation/testCase131.test.ts +73 -0
  33. package/tests/convert-comp-mass-to-mole-calculation/testCase132.test.ts +73 -0
  34. package/tests/convert-comp-mass-to-mole-calculation/testCase133.test.ts +73 -0
  35. package/tests/convert-comp-mole-to-mass-calculation/testCase134.test.ts +72 -0
  36. package/tests/convert-comp-mole-to-mass-calculation/testCase135.test.ts +72 -0
  37. package/tests/convert-comp-mole-to-mass-calculation/testCase136.test.ts +72 -0
  38. package/tests/convert-comp-mole-to-mass-calculation/testCase137.test.ts +72 -0
  39. package/tests/convert-comp-mole-to-mass-calculation/testCase138.test.ts +72 -0
  40. package/tests/distances-and-ellipses-to-radiation-levels-calculation/testCase64.test.ts +194 -0
  41. package/tests/distances-and-ellipses-to-radiation-levels-calculation/testCase65.test.ts +197 -0
  42. package/tests/distances-and-ellipses-to-radiation-levels-calculation/testCase66.test.ts +194 -0
  43. package/tests/distances-and-ellipses-to-radiation-levels-calculation/testCase67.test.ts +198 -0
  44. package/tests/distances-and-ellipses-to-radiation-levels-calculation/testCase68.test.ts +178 -0
  45. package/tests/distances-and-footprints-to-concentration-levels-calculation/testCase31a.test.ts +158 -0
  46. package/tests/distances-and-footprints-to-concentration-levels-calculation/testCase32a.test.ts +156 -0
  47. package/tests/distances-and-footprints-to-concentration-levels-calculation/testCase33a.test.ts +158 -0
  48. package/tests/distances-and-footprints-to-concentration-levels-calculation/testCase34a.test.ts +165 -0
  49. package/tests/distances-and-footprints-to-concentration-levels-calculation/testCase35a.test.ts +188 -0
  50. package/tests/distances-to-conc-levels-calculation/testCase121.test.ts +149 -0
  51. package/tests/distances-to-conc-levels-calculation/testCase122.test.ts +145 -0
  52. package/tests/distances-to-conc-levels-calculation/testCase123.test.ts +150 -0
  53. package/tests/distances-to-conc-levels-calculation/testCase124.test.ts +154 -0
  54. package/tests/distances-to-conc-levels-calculation/testCase125.test.ts +157 -0
  55. package/tests/entities/testVessel.test.ts +49 -0
  56. package/tests/fireball-calculation/testCase89.test.ts +151 -0
  57. package/tests/fireball-calculation/testCase90.test.ts +153 -0
  58. package/tests/fireball-calculation/testCase91.test.ts +152 -0
  59. package/tests/fireball-calculation/testCse92.test.ts +150 -0
  60. package/tests/flash-calculation/testCase26.test.ts +71 -0
  61. package/tests/flash-calculation/testCase27.test.ts +69 -0
  62. package/tests/flash-calculation/testCase28.test.ts +69 -0
  63. package/tests/flash-calculation/testCase29.test.ts +67 -0
  64. package/tests/flash-calculation/testCase30.test.ts +70 -0
  65. package/tests/general/operation-id-demo.test.ts +64 -0
  66. package/tests/get-component-by-id/get-component-by-id-METHANE.test.ts +35 -0
  67. package/tests/get-mass-from-vessel-calculation/testCase139.test.ts +65 -0
  68. package/tests/jet-fire-calculation/testCase36.test.ts +141 -0
  69. package/tests/jet-fire-calculation/testCase37.test.ts +148 -0
  70. package/tests/jet-fire-calculation/testCase38.test.ts +147 -0
  71. package/tests/jet-fire-calculation/testCase39.test.ts +146 -0
  72. package/tests/jet-fire-calculation/testCase40.test.ts +152 -0
  73. package/tests/late-explosion-calculation/testCase46.test.ts +157 -0
  74. package/tests/late-explosion-calculation/testCase47.test.ts +149 -0
  75. package/tests/late-explosion-calculation/testCase48.test.ts +176 -0
  76. package/tests/late-explosion-calculation/testCase49.test.ts +178 -0
  77. package/tests/late-explosion-calculation/testCase50.test.ts +176 -0
  78. package/tests/late-explosion-calculation/testCase74.test.ts +166 -0
  79. package/tests/late-explosion-calculation/testCase75.test.ts +163 -0
  80. package/tests/late-explosion-calculation/testCase76.test.ts +174 -0
  81. package/tests/late-explosion-calculation/testCase77.test.ts +175 -0
  82. package/tests/late-explosion-calculation/testCase78.test.ts +175 -0
  83. package/tests/lethality-distance-calculation/testCase60.test.ts +142 -0
  84. package/tests/linked-runners/user-defined-source-linked-run/test-uds-153.test.ts +121 -0
  85. package/tests/linked-runners/user-defined-source-linked-run/test-uds-154.test.ts +167 -0
  86. package/tests/linked-runners/user-defined-source-linked-run/test-uds-155.test.ts +202 -0
  87. package/tests/linked-runners/user-defined-source-linked-run/test-uds-156.test.ts +201 -0
  88. package/tests/linked-runners/vessel-leak-linked-run/test-vl-157.test.ts +182 -0
  89. package/tests/linked-runners/vessel-leak-linked-run/test-vl-158.test.ts +200 -0
  90. package/tests/linked-runners/vessel-leak-linked-run/test-vl-159.test.ts +158 -0
  91. package/tests/linked-runners/vessel-leak-linked-run/test-vl-160.test.ts +165 -0
  92. package/tests/linked-runners/vessel-line-rupture-linked-run/test-vlr-161.test.ts +161 -0
  93. package/tests/linked-runners/vessel-line-rupture-linked-run/test-vlr-162.test.ts +167 -0
  94. package/tests/linked-runners/vessel-line-rupture-linked-run/test-vlr-163.test.ts +177 -0
  95. package/tests/linked-runners/vessel-line-rupture-linked-run/test-vlr-164.test.ts +165 -0
  96. package/tests/linked-runners/vessel-relief-valve-linked-run/test-vrv-165.test.ts +166 -0
  97. package/tests/linked-runners/vessel-relief-valve-linked-run/test-vrv-166.test.ts +154 -0
  98. package/tests/linked-runners/vessel-relief-valve-linked-run/test-vrv-167.test.ts +157 -0
  99. package/tests/linked-runners/vessel-relief-valve-linked-run/test-vrv-168.test.ts +168 -0
  100. package/tests/load-mass-inventory-vessel-for-line-rupture-scenario-calculation/testCase126.test.ts +72 -0
  101. package/tests/load-mass-inventory-vessel-for-line-rupture-scenario-calculation/testCase127.test.ts +73 -0
  102. package/tests/load-mass-inventory-vessel-for-line-rupture-scenario-calculation/testCase128.test.ts +72 -0
  103. package/tests/load-mass-inventory-vessel-for-relief-valve-scenario-calculation/testCase103.test.ts +74 -0
  104. package/tests/load-mass-inventory-vessel-for-relief-valve-scenario-calculation/testCase104.test.ts +75 -0
  105. package/tests/load-mass-inventory-vessel-for-relief-valve-scenario-calculation/testCase105.test.ts +74 -0
  106. package/tests/long-pipe-calculation/testCase55.test.ts +88 -0
  107. package/tests/long-pipe-calculation/testCase56.test.ts +90 -0
  108. package/tests/long-pipe-calculation/testCase57.test.ts +88 -0
  109. package/tests/long-pipe-calculation/testCase58.test.ts +88 -0
  110. package/tests/long-pipe-calculation/testCase59.test.ts +88 -0
  111. package/tests/materials/test-get-component-by-cas-id-1-2-PROPYLENE-OXIDE.test.ts +23 -0
  112. package/tests/materials/test-get-component-by-cas-id-CARBON-MONOXIDE.test.ts +25 -0
  113. package/tests/materials/test-get-component-by-cas-id-METHANE.test.ts +22 -0
  114. package/tests/materials/test-get-component-by-id-1-2-PROPYLENE-OXIDE.test.ts +23 -0
  115. package/tests/materials/test-get-component-by-id-CARBON-MONOXIDE.test.ts +22 -0
  116. package/tests/materials/test-get-component-by-id-METHANE.test.ts +22 -0
  117. package/tests/materials/test-get-component-by-name-1-2-PROPYLENE-OXIDE.test.ts +24 -0
  118. package/tests/materials/test-get-component-by-name-CARBON-MONOXIDE.test.ts +23 -0
  119. package/tests/materials/test-get-component-by-name-METHANE.test.ts +25 -0
  120. package/tests/materials/test-get-components.test.ts +47 -0
  121. package/tests/materials/test-get-dippr-components.test.ts +28 -0
  122. package/tests/materials/test-get-dnv-components.test.ts +28 -0
  123. package/tests/materials/test-get-material-by-cas-id-1-2-PROPYLENE-OXIDE.test.ts +29 -0
  124. package/tests/materials/test-get-material-by-cas-id-CARBON-MONOXIDE.test.ts +31 -0
  125. package/tests/materials/test-get-material-by-cas-id-METHANE.test.ts +30 -0
  126. package/tests/materials/test-get-material-by-cas-id-ZERO.test.ts +31 -0
  127. package/tests/materials/test-get-material-by-id-1-2-PROPYLENE-OXIDE.test.ts +30 -0
  128. package/tests/materials/test-get-material-by-id-CARBON-MONOXIDE.test.ts +29 -0
  129. package/tests/materials/test-get-material-by-id-METHANE.test.ts +29 -0
  130. package/tests/materials/test-get-material-by-name-1-2-PROPYLENE-OXIDE.test.ts +29 -0
  131. package/tests/materials/test-get-material-by-name-CARBON-MONOXIDE.test.ts +29 -0
  132. package/tests/materials/test-get-material-by-name-METHANE.test.ts +29 -0
  133. package/tests/materials/test-get-materials.test.ts +32 -0
  134. package/tests/max-conc-distance-calculation/testCase106.test.ts +146 -0
  135. package/tests/max-conc-distance-calculation/testCase107.test.ts +148 -0
  136. package/tests/max-conc-distance-calculation/testCase108.test.ts +172 -0
  137. package/tests/max-conc-distance-calculation/testCase109.test.ts +146 -0
  138. package/tests/max-conc-distance-calculation/testCase110.test.ts +146 -0
  139. package/tests/max-conc-footprint-calculation/testCase31.test.ts +169 -0
  140. package/tests/max-conc-footprint-calculation/testCase32.test.ts +183 -0
  141. package/tests/max-conc-footprint-calculation/testCase33.test.ts +161 -0
  142. package/tests/max-conc-footprint-calculation/testCase34.test.ts +172 -0
  143. package/tests/max-conc-footprint-calculation/testCase35.test.ts +188 -0
  144. package/tests/max-distance-to-conc-calculation/testCase111.test.ts +138 -0
  145. package/tests/max-distance-to-conc-calculation/testCase112.test.ts +174 -0
  146. package/tests/max-distance-to-conc-calculation/testCase113.test.ts +153 -0
  147. package/tests/max-distance-to-conc-calculation/testCase114.test.ts +162 -0
  148. package/tests/max-distance-to-conc-calculation/testCase115.test.ts +167 -0
  149. package/tests/mixture-constant-properties-calculation/testCase97.test.ts +83 -0
  150. package/tests/mixture-constant-properties-calculation/testCase98.test.ts +90 -0
  151. package/tests/mixture-constant-properties-calculation/testCase99.test.ts +87 -0
  152. package/tests/pool-fire-calculation/testCase41.test.ts +153 -0
  153. package/tests/pool-fire-calculation/testCase41a.test.ts +141 -0
  154. package/tests/pool-fire-calculation/testCase42.test.ts +169 -0
  155. package/tests/pool-fire-calculation/testCase42a.test.ts +175 -0
  156. package/tests/pool-fire-calculation/testCase43.test.ts +161 -0
  157. package/tests/pool-fire-calculation/testCase43a.test.ts +157 -0
  158. package/tests/pool-fire-calculation/testCase44.test.ts +147 -0
  159. package/tests/pool-fire-calculation/testCase44a.test.ts +152 -0
  160. package/tests/pool-fire-calculation/testCase45.test.ts +176 -0
  161. package/tests/pool-fire-calculation/testCase45a.test.ts +182 -0
  162. package/tests/radiation-at-ponts/testCase69.test.ts +167 -0
  163. package/tests/radiation-at-ponts/testCase70.test.ts +179 -0
  164. package/tests/radiation-at-ponts/testCase71.test.ts +150 -0
  165. package/tests/radiation-at-ponts/testCase72.test.ts +166 -0
  166. package/tests/radiation-at-ponts/testCase73.test.ts +169 -0
  167. package/tests/radiation-contour-calculation/testCase51.test.ts +127 -0
  168. package/tests/radiation-contour-calculation/testCase52.test.ts +126 -0
  169. package/tests/radiation-contour-calculation/testCase53.test.ts +126 -0
  170. package/tests/radiation-contour-calculation/testCase54.test.ts +131 -0
  171. package/tests/relief-valve-min-temperature-calculation/testCase140.test.ts +49 -0
  172. package/tests/set-mixing-layer-height/testCase100.test.ts +36 -0
  173. package/tests/set-mixing-layer-height/testCase101.test.ts +36 -0
  174. package/tests/set-mixing-layer-height/testCase102.test.ts +36 -0
  175. package/tests/set-phase-to-be-released-for-leak-calculation/testCase150.test.ts +67 -0
  176. package/tests/set-phase-to-be-released-for-line-rupture-calculation/testCase151.test.ts +67 -0
  177. package/tests/set-phase-to-be-released-for-relief-valve-calculation/TestCase152.test.ts +61 -0
  178. package/tests/sideview/testCase31b.test.ts +150 -0
  179. package/tests/sideview/testCase32b.test.ts +145 -0
  180. package/tests/sideview/testCase33b.test.ts +130 -0
  181. package/tests/sideview/testCase34b.test.ts +153 -0
  182. package/tests/sideview/testCase35b.test.ts +140 -0
  183. package/tests/tank-fire-calculation/testCase79.test.ts +61 -0
  184. package/tests/tank-fire-calculation/testCase80.test.ts +67 -0
  185. package/tests/tank-fire-calculation/testCase81.test.ts +68 -0
  186. package/tests/tank-fire-calculation/testCase82.test.ts +68 -0
  187. package/tests/tank-fire-calculation/testCase83.test.ts +73 -0
  188. package/tests/utilities/convert-camel-case-to-snake-case.test.ts +7 -0
  189. package/tests/utilities/convert-snake-case-to-camel-case.test.ts +7 -0
  190. package/tests/vessel-catastrophic-rupture-calculation/testCase1.test.ts +83 -0
  191. package/tests/vessel-catastrophic-rupture-calculation/testCase2.test.ts +82 -0
  192. package/tests/vessel-catastrophic-rupture-calculation/testCase3.test.ts +91 -0
  193. package/tests/vessel-catastrophic-rupture-calculation/testCase4.test.ts +85 -0
  194. package/tests/vessel-catastrophic-rupture-calculation/testCase5.test.ts +84 -0
  195. package/tests/vessel-leak-calculation/testCase10.test.ts +108 -0
  196. package/tests/vessel-leak-calculation/testCase6.test.ts +113 -0
  197. package/tests/vessel-leak-calculation/testCase7.test.ts +123 -0
  198. package/tests/vessel-leak-calculation/testCase8.test.ts +102 -0
  199. package/tests/vessel-leak-calculation/testCase9.test.ts +106 -0
  200. package/tests/vessel-line-rupture-calculation/vlr-ammonia.test.ts +84 -0
  201. package/tests/vessel-line-rupture-calculation/vlr-ethaneMethane.test.ts +82 -0
  202. package/tests/vessel-line-rupture-calculation/vlr-nDecane.test.ts +79 -0
  203. package/tests/vessel-line-rupture-calculation/vlr-oxygen.test.ts +77 -0
  204. package/tests/vessel-line-rupture-calculation/vlr-propane.test.ts +77 -0
  205. package/tests/vessel-relief-valve-calculation/vrv-chlorine.test.ts +99 -0
  206. package/tests/vessel-relief-valve-calculation/vrv-hydrogen.test.ts +96 -0
  207. package/tests/vessel-relief-valve-calculation/vrv-methane.test.ts +80 -0
  208. package/tests/vessel-relief-valve-calculation/vrv-methaneH2s.test.ts +86 -0
  209. package/tests/vessel-relief-valve-calculation/vrv-nitrogen.test.ts +80 -0
  210. package/tests/vessel-state-calculation/vs-ammonia.test.ts +56 -0
  211. package/tests/vessel-state-calculation/vs-butane.test.ts +57 -0
  212. package/tests/vessel-state-calculation/vs-chlorine.test.ts +56 -0
  213. package/tests/vessel-state-calculation/vs-methane.test.ts +57 -0
  214. package/tests/vessel-state-calculation/vs-naturalGas.test.ts +59 -0
  215. package/tests/vessel-state-calculation/vs-nitrogenPentane.test.ts +58 -0
@@ -0,0 +1,73 @@
1
+ import { ConvertCompositionMassToMoleCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe('Test Case 131', () => {
14
+ test('Convert composition mass to mole calculation for ETHANE, METHANE, and HYDROGEN', async () => {
15
+
16
+ // Define the test case properties
17
+ const materialName = 'ETHANE_METHANE_HYDROGEN';
18
+ const compositionMass = [0.3, 0.5, 0.2];
19
+
20
+ // Define the material
21
+ const material = new Material({
22
+ name: materialName,
23
+ components: [
24
+ new MaterialComponent({ name: 'ETHANE', moleFraction: 0.3 }),
25
+ new MaterialComponent({ name: 'METHANE', moleFraction: 0.5 }),
26
+ new MaterialComponent({ name: 'HYDROGEN', moleFraction: 0.2 })
27
+ ],
28
+ componentCount: 3
29
+ });
30
+
31
+ // Create a ConvertCompositionMassToMoleCalculation using the material and composition mass
32
+ const convertCompMassToMoleCalculation = new ConvertCompositionMassToMoleCalculation(
33
+ material,
34
+ compositionMass,
35
+ compositionMass.length
36
+ );
37
+
38
+ // Run the ConvertCompositionMassToMoleCalculation
39
+ console.log('Running convertCompMassToMoleCalculation...');
40
+ const resultCode = await convertCompMassToMoleCalculation.run();
41
+
42
+ // Print any messages
43
+ if (convertCompMassToMoleCalculation.messages.length > 0) {
44
+ console.log('Messages:');
45
+ convertCompMassToMoleCalculation.messages.forEach((message) => {
46
+ console.log(message);
47
+ });
48
+ }
49
+ expect(resultCode).toBe(ResultCode.SUCCESS);
50
+
51
+ // Log mole and mass fractions
52
+ console.log(`Mole fraction: ${convertCompMassToMoleCalculation.compositionMole}`);
53
+ console.log(`Mass fraction: ${convertCompMassToMoleCalculation.compositionMass}`);
54
+
55
+ // Ensure the properties are defined before using them
56
+ expect(convertCompMassToMoleCalculation.compositionMole).toBeDefined();
57
+ expect(convertCompMassToMoleCalculation.compositionMass).toBeDefined();
58
+
59
+ if (convertCompMassToMoleCalculation.compositionMole) {
60
+ // Regression check for the first mole fraction value
61
+ const expectedMoleFraction = 0.07108364334790362;
62
+ const actualMoleFraction = convertCompMassToMoleCalculation.compositionMole[0];
63
+ const moleFractionDifference = Math.abs((actualMoleFraction - expectedMoleFraction) / expectedMoleFraction);
64
+
65
+ // Perform the regression check and fail if the difference is too large
66
+ expect(moleFractionDifference).toBeLessThan(1e-3);
67
+
68
+ console.log(`SUCCESS: convertCompMassToMoleCalculation (${convertCompMassToMoleCalculation.calculationElapsedTime}ms)`);
69
+ } else {
70
+ throw new Error('Composition mole data is undefined.');
71
+ }
72
+ });
73
+ });
@@ -0,0 +1,73 @@
1
+ import { ConvertCompositionMassToMoleCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe('Test Case 132', () => {
14
+ test('Convert composition mass to mole calculation for BUTANE, DECANE, and ETHANE', async () => {
15
+
16
+ // Define the test case properties
17
+ const materialName = 'BUTANE_DECANE_ETHANE';
18
+ const compositionMass = [0.2, 0.2, 0.6];
19
+
20
+ // Define the material
21
+ const material = new Material({
22
+ name: materialName,
23
+ components: [
24
+ new MaterialComponent({ name: 'N-BUTANE', moleFraction: 0.2 }),
25
+ new MaterialComponent({ name: 'N-DECANE', moleFraction: 0.2 }),
26
+ new MaterialComponent({ name: 'ETHANE', moleFraction: 0.6 })
27
+ ],
28
+ componentCount: 3
29
+ });
30
+
31
+ // Create a ConvertCompositionMassToMoleCalculation using the material and composition mass
32
+ const convertCompMassToMoleCalculation = new ConvertCompositionMassToMoleCalculation(
33
+ material,
34
+ compositionMass,
35
+ compositionMass.length
36
+ );
37
+
38
+ // Run the ConvertCompositionMassToMoleCalculation
39
+ console.log('Running convertCompMassToMoleCalculation...');
40
+ const resultCode = await convertCompMassToMoleCalculation.run();
41
+
42
+ // Print any messages
43
+ if (convertCompMassToMoleCalculation.messages.length > 0) {
44
+ console.log('Messages:');
45
+ convertCompMassToMoleCalculation.messages.forEach((message) => {
46
+ console.log(message);
47
+ });
48
+ }
49
+ expect(resultCode).toBe(ResultCode.SUCCESS);
50
+
51
+ // Log mole and mass fractions
52
+ console.log(`Mole fraction: ${convertCompMassToMoleCalculation.compositionMole}`);
53
+ console.log(`Mass fraction: ${convertCompMassToMoleCalculation.compositionMass}`);
54
+
55
+ // Ensure the properties are defined before using them
56
+ expect(convertCompMassToMoleCalculation.compositionMole).toBeDefined();
57
+ expect(convertCompMassToMoleCalculation.compositionMass).toBeDefined();
58
+
59
+ if (convertCompMassToMoleCalculation.compositionMole) {
60
+ // Regression check for the first mole fraction value
61
+ const expectedMoleFraction = 0.13874660598043345;
62
+ const actualMoleFraction = convertCompMassToMoleCalculation.compositionMole[0];
63
+ const moleFractionDifference = Math.abs((actualMoleFraction - expectedMoleFraction) / expectedMoleFraction);
64
+
65
+ // Perform the regression check and fail if the difference is too large
66
+ expect(moleFractionDifference).toBeLessThan(1e-3);
67
+
68
+ console.log(`SUCCESS: convertCompMassToMoleCalculation (${convertCompMassToMoleCalculation.calculationElapsedTime}ms)`);
69
+ } else {
70
+ throw new Error('Composition mole data is undefined.');
71
+ }
72
+ });
73
+ });
@@ -0,0 +1,73 @@
1
+ import { ConvertCompositionMassToMoleCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+
6
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe('Test Case 133', () => {
14
+ test('Convert composition mass to mole calculation for TOLUENE, PROPANE, and BUTANE', async () => {
15
+
16
+ // Define the test case properties
17
+ const materialName = 'TOLUENE_PROPANE_BUTANE';
18
+ const compositionMass = [0.3, 0.2, 0.5];
19
+
20
+ // Define the material
21
+ const material = new Material({
22
+ name: materialName,
23
+ components: [
24
+ new MaterialComponent({ name: 'TOLUENE', moleFraction: 0.3 }),
25
+ new MaterialComponent({ name: 'PROPANE', moleFraction: 0.2 }),
26
+ new MaterialComponent({ name: 'N-BUTANE', moleFraction: 0.5 })
27
+ ],
28
+ componentCount: 3
29
+ });
30
+
31
+ // Create a ConvertCompositionMassToMoleCalculation using the material and composition mass
32
+ const convertCompMassToMoleCalculation = new ConvertCompositionMassToMoleCalculation(
33
+ material,
34
+ compositionMass,
35
+ compositionMass.length
36
+ );
37
+
38
+ // Run the ConvertCompositionMassToMoleCalculation
39
+ console.log('Running convertCompMassToMoleCalculation...');
40
+ const resultCode = await convertCompMassToMoleCalculation.run();
41
+
42
+ // Print any messages
43
+ if (convertCompMassToMoleCalculation.messages.length > 0) {
44
+ console.log('Messages:');
45
+ convertCompMassToMoleCalculation.messages.forEach((message) => {
46
+ console.log(message);
47
+ });
48
+ }
49
+ expect(resultCode).toBe(ResultCode.SUCCESS);
50
+
51
+ // Log mole and mass fractions
52
+ console.log(`Mole fraction: ${convertCompMassToMoleCalculation.compositionMole}`);
53
+ console.log(`Mass fraction: ${convertCompMassToMoleCalculation.compositionMass}`);
54
+
55
+ // Ensure the properties are defined before using them
56
+ expect(convertCompMassToMoleCalculation.compositionMole).toBeDefined();
57
+ expect(convertCompMassToMoleCalculation.compositionMass).toBeDefined();
58
+
59
+ if (convertCompMassToMoleCalculation.compositionMole) {
60
+ // Regression check for the first mole fraction value
61
+ const expectedMoleFraction = 0.1986058448591834;
62
+ const actualMoleFraction = convertCompMassToMoleCalculation.compositionMole[0];
63
+ const moleFractionDifference = Math.abs((actualMoleFraction - expectedMoleFraction) / expectedMoleFraction);
64
+
65
+ // Perform the regression check and fail if the difference is too large
66
+ expect(moleFractionDifference).toBeLessThan(1e-3);
67
+
68
+ console.log(`SUCCESS: convertCompMassToMoleCalculation (${convertCompMassToMoleCalculation.calculationElapsedTime}ms)`);
69
+ } else {
70
+ throw new Error('Composition mole data is undefined.');
71
+ }
72
+ });
73
+ });
@@ -0,0 +1,72 @@
1
+ import { ConvertCompositionMoleToMassCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe("Test Case 134 - Convert Composition Mole to Mass Scenario", () => {
14
+ test("should convert mole fractions to mass fractions with regression checks", async () => {
15
+ // Define the test case properties
16
+ const materialName = "ETHANE_BUTANE_PROPANE";
17
+ const compositionMoles = [0.3, 0.2, 0.5];
18
+
19
+ // Define the material
20
+ const material = new Material({
21
+ name: materialName,
22
+ components: [
23
+ new MaterialComponent({ name: "ETHANE", moleFraction: 0.3 }),
24
+ new MaterialComponent({ name: "N-BUTANE", moleFraction: 0.2 }),
25
+ new MaterialComponent({ name: "PROPANE", moleFraction: 0.5 }),
26
+ ],
27
+ componentCount: 3,
28
+ });
29
+
30
+ // Create a convert composition mole to mass calculation
31
+ const convertCompMoleToMassCalculation = new ConvertCompositionMoleToMassCalculation(
32
+ material,
33
+ compositionMoles,
34
+ compositionMoles.length,
35
+ );
36
+
37
+ // Run the convert composition mole to mass calculation
38
+ console.log("Running convert_comp_mole_to_mass_calculation...");
39
+ const resultCode = await convertCompMoleToMassCalculation.run();
40
+
41
+ // Print any messages
42
+ if (convertCompMoleToMassCalculation.messages.length > 0) {
43
+ console.log("Messages:");
44
+ convertCompMoleToMassCalculation.messages.forEach((message) => console.log(message));
45
+ }
46
+
47
+ // Assert the result code is SUCCESS
48
+ expect(resultCode).toBe(ResultCode.SUCCESS);
49
+
50
+ if (resultCode === ResultCode.SUCCESS) {
51
+ console.log(`Mole fraction: ${convertCompMoleToMassCalculation.compositionMoles}`);
52
+ console.log(`Mass fraction: ${convertCompMoleToMassCalculation.compositionMass}`);
53
+
54
+ // Regression check for the first mass fraction
55
+ const massFractionError = Math.abs(
56
+ (convertCompMoleToMassCalculation.compositionMass![0] - 0.2112924967705441) /
57
+ 0.2112924967705441
58
+ );
59
+ expect(massFractionError).toBeLessThan(1e-3);
60
+
61
+ console.log(
62
+ `SUCCESS: convert_comp_mole_to_mass_calculation (${
63
+ convertCompMoleToMassCalculation.calculationElapsedTime
64
+ }ms)`
65
+ );
66
+ } else {
67
+ throw new Error(
68
+ `FAILED convert_comp_mole_to_mass_calculation with result code ${resultCode}`
69
+ );
70
+ }
71
+ });
72
+ });
@@ -0,0 +1,72 @@
1
+ import { ConvertCompositionMoleToMassCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe("Test Case 135 - Convert Composition Mole to Mass Scenario", () => {
14
+ test("should convert mole fractions to mass fractions with regression checks", async () => {
15
+ // Define the test case properties
16
+ const materialName = "ETHANE_METHANE_PROPANE";
17
+ const compositionMoles = [0.3, 0.5, 0.2];
18
+
19
+ // Define the material
20
+ const material = new Material({
21
+ name: materialName,
22
+ components: [
23
+ new MaterialComponent({ name: "ETHANE", moleFraction: 0.3 }),
24
+ new MaterialComponent({ name: "METHANE", moleFraction: 0.5 }),
25
+ new MaterialComponent({ name: "PROPANE", moleFraction: 0.2 }),
26
+ ],
27
+ componentCount: 3,
28
+ });
29
+
30
+ // Create a convert composition mole to mass calculation
31
+ const convertCompMoleToMassCalculation = new ConvertCompositionMoleToMassCalculation(
32
+ material,
33
+ compositionMoles,
34
+ compositionMoles.length,
35
+ );
36
+
37
+ // Run the convert composition mole to mass calculation
38
+ console.log("Running convert_comp_mole_to_mass_calculation...");
39
+ const resultCode = await convertCompMoleToMassCalculation.run();
40
+
41
+ // Print any messages
42
+ if (convertCompMoleToMassCalculation.messages.length > 0) {
43
+ console.log("Messages:");
44
+ convertCompMoleToMassCalculation.messages.forEach((message) => console.log(message));
45
+ }
46
+
47
+ // Assert the result code is SUCCESS
48
+ expect(resultCode).toBe(ResultCode.SUCCESS);
49
+
50
+ if (resultCode === ResultCode.SUCCESS) {
51
+ console.log(`Mole fraction: ${convertCompMoleToMassCalculation.compositionMoles}`);
52
+ console.log(`Mass fraction: ${convertCompMoleToMassCalculation.compositionMass}`);
53
+
54
+ // Regression check for the first mass fraction
55
+ const massFractionError = Math.abs(
56
+ (convertCompMoleToMassCalculation.compositionMass![0] - 0.3488138195652663) /
57
+ 0.3488138195652663
58
+ );
59
+ expect(massFractionError).toBeLessThan(1e-3);
60
+
61
+ console.log(
62
+ `SUCCESS: convert_comp_mole_to_mass_calculation (${
63
+ convertCompMoleToMassCalculation.calculationElapsedTime
64
+ }ms)`
65
+ );
66
+ } else {
67
+ throw new Error(
68
+ `FAILED convert_comp_mole_to_mass_calculation with result code ${resultCode}`
69
+ );
70
+ }
71
+ });
72
+ });
@@ -0,0 +1,72 @@
1
+ import { ConvertCompositionMoleToMassCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe("Test Case 136 - Convert Composition Mole to Mass Scenario", () => {
14
+ test("should convert mole fractions to mass fractions with regression checks", async () => {
15
+ // Define the test case properties
16
+ const materialName = "ETHANE_METHANE_HYDROGEN";
17
+ const compositionMoles = [0.1, 0.3, 0.6];
18
+
19
+ // Define the material
20
+ const material = new Material({
21
+ name: materialName,
22
+ components: [
23
+ new MaterialComponent({ name: "ETHANE", moleFraction: 0.1 }),
24
+ new MaterialComponent({ name: "METHANE", moleFraction: 0.3 }),
25
+ new MaterialComponent({ name: "HYDROGEN", moleFraction: 0.6 }),
26
+ ],
27
+ componentCount: 3,
28
+ });
29
+
30
+ // Create a convert composition mole to mass calculation
31
+ const convertCompMoleToMassCalculation = new ConvertCompositionMoleToMassCalculation(
32
+ material,
33
+ compositionMoles,
34
+ compositionMoles.length,
35
+ );
36
+
37
+ // Run the convert composition mole to mass calculation
38
+ console.log("Running convert_comp_mole_to_mass_calculation...");
39
+ const resultCode = await convertCompMoleToMassCalculation.run();
40
+
41
+ // Print any messages
42
+ if (convertCompMoleToMassCalculation.messages.length > 0) {
43
+ console.log("Messages:");
44
+ convertCompMoleToMassCalculation.messages.forEach((message) => console.log(message));
45
+ }
46
+
47
+ // Assert the result code is SUCCESS
48
+ expect(resultCode).toBe(ResultCode.SUCCESS);
49
+
50
+ if (resultCode === ResultCode.SUCCESS) {
51
+ console.log(`Mole fraction: ${convertCompMoleToMassCalculation.compositionMoles}`);
52
+ console.log(`Mass fraction: ${convertCompMoleToMassCalculation.compositionMass}`);
53
+
54
+ // Regression check for the first mass fraction
55
+ const massFractionError = Math.abs(
56
+ (convertCompMoleToMassCalculation.compositionMass![0] - 0.3330203480316813) /
57
+ 0.3330203480316813
58
+ );
59
+ expect(massFractionError).toBeLessThan(1e-3);
60
+
61
+ console.log(
62
+ `SUCCESS: convert_comp_mole_to_mass_calculation (${
63
+ convertCompMoleToMassCalculation.calculationElapsedTime
64
+ }ms)`
65
+ );
66
+ } else {
67
+ throw new Error(
68
+ `FAILED convert_comp_mole_to_mass_calculation with result code ${resultCode}`
69
+ );
70
+ }
71
+ });
72
+ });
@@ -0,0 +1,72 @@
1
+ import { ConvertCompositionMoleToMassCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe("Test Case 137 - Convert Composition Mole to Mass Scenario", () => {
14
+ test("should convert mole fractions to mass fractions with regression checks", async () => {
15
+ // Define the test case properties
16
+ const materialName = "BUTANE_DECANE_ETHANE";
17
+ const compositionMoles = [0.4, 0.2, 0.4];
18
+
19
+ // Define the material
20
+ const material = new Material({
21
+ name: materialName,
22
+ components: [
23
+ new MaterialComponent({ name: "N-BUTANE", moleFraction: 0.4 }),
24
+ new MaterialComponent({ name: "N-DECANE", moleFraction: 0.2 }),
25
+ new MaterialComponent({ name: "ETHANE", moleFraction: 0.4 }),
26
+ ],
27
+ componentCount: 3,
28
+ });
29
+
30
+ // Create a convert composition mole to mass calculation
31
+ const convertCompMoleToMassCalculation = new ConvertCompositionMoleToMassCalculation(
32
+ material,
33
+ compositionMoles,
34
+ compositionMoles.length,
35
+ );
36
+
37
+ // Run the convert composition mole to mass calculation
38
+ console.log("Running convert_comp_mole_to_mass_calculation...");
39
+ const resultCode = await convertCompMoleToMassCalculation.run();
40
+
41
+ // Print any messages
42
+ if (convertCompMoleToMassCalculation.messages.length > 0) {
43
+ console.log("Messages:");
44
+ convertCompMoleToMassCalculation.messages.forEach((message) => console.log(message));
45
+ }
46
+
47
+ // Assert the result code is SUCCESS
48
+ expect(resultCode).toBe(ResultCode.SUCCESS);
49
+
50
+ if (resultCode === ResultCode.SUCCESS) {
51
+ console.log(`Mole fraction: ${convertCompMoleToMassCalculation.compositionMoles}`);
52
+ console.log(`Mass fraction: ${convertCompMoleToMassCalculation.compositionMass}`);
53
+
54
+ // Regression check for the first mass fraction
55
+ const massFractionError = Math.abs(
56
+ (convertCompMoleToMassCalculation.compositionMass![0] - 0.364786643038023) /
57
+ 0.364786643038023
58
+ );
59
+ expect(massFractionError).toBeLessThan(1e-3);
60
+
61
+ console.log(
62
+ `SUCCESS: convert_comp_mole_to_mass_calculation (${
63
+ convertCompMoleToMassCalculation.calculationElapsedTime
64
+ }ms)`
65
+ );
66
+ } else {
67
+ throw new Error(
68
+ `FAILED convert_comp_mole_to_mass_calculation with result code ${resultCode}`
69
+ );
70
+ }
71
+ });
72
+ });
@@ -0,0 +1,72 @@
1
+ import { ConvertCompositionMoleToMassCalculation } from "../../src/calculations/utilities";
2
+ import { Material, MaterialComponent } from "../../src/entities";
3
+ import { ResultCode } from "../../src/enums";
4
+ import { setAccessToken } from "../../src/utilities";
5
+ const accessToken = process.env.PWS_ACCESS_TOKEN;
6
+
7
+ if (!accessToken) {
8
+ throw new Error("ACCESS_TOKEN environment variable is not set.");
9
+ }
10
+
11
+ setAccessToken(accessToken);
12
+
13
+ describe("Test Case 138 - Convert Composition Mole to Mass Scenario", () => {
14
+ test("should convert mole fractions to mass fractions with regression checks", async () => {
15
+ // Define the test case properties
16
+ const materialName = "TOLUENE_PROPANE_BUTANE";
17
+ const compositionMoles = [0.2, 0.2, 0.6];
18
+
19
+ // Define the material
20
+ const material = new Material({
21
+ name: materialName,
22
+ components: [
23
+ new MaterialComponent({ name: "TOLUENE", moleFraction: 0.2 }),
24
+ new MaterialComponent({ name: "PROPANE", moleFraction: 0.2 }),
25
+ new MaterialComponent({ name: "N-BUTANE", moleFraction: 0.6 }),
26
+ ],
27
+ componentCount: 3,
28
+ });
29
+
30
+ // Create a convert composition mole to mass calculation
31
+ const convertCompMoleToMassCalculation = new ConvertCompositionMoleToMassCalculation(
32
+ material,
33
+ compositionMoles,
34
+ compositionMoles.length,
35
+ );
36
+
37
+ // Run the convert composition mole to mass calculation
38
+ console.log("Running convert_comp_mole_to_mass_calculation...");
39
+ const resultCode = await convertCompMoleToMassCalculation.run();
40
+
41
+ // Print any messages
42
+ if (convertCompMoleToMassCalculation.messages.length > 0) {
43
+ console.log("Messages:");
44
+ convertCompMoleToMassCalculation.messages.forEach((message) => console.log(message));
45
+ }
46
+
47
+ // Assert the result code is SUCCESS
48
+ expect(resultCode).toBe(ResultCode.SUCCESS);
49
+
50
+ if (resultCode === ResultCode.SUCCESS) {
51
+ console.log(`Mole fraction: ${convertCompMoleToMassCalculation.compositionMoles}`);
52
+ console.log(`Mass fraction: ${convertCompMoleToMassCalculation.compositionMass}`);
53
+
54
+ // Regression check for the first mass fraction
55
+ const massFractionError = Math.abs(
56
+ (convertCompMoleToMassCalculation.compositionMass![0] - 0.2966459438074564) /
57
+ 0.2966459438074564
58
+ );
59
+ expect(massFractionError).toBeLessThan(1e-3);
60
+
61
+ console.log(
62
+ `SUCCESS: convert_comp_mole_to_mass_calculation (${
63
+ convertCompMoleToMassCalculation.calculationElapsedTime
64
+ }ms)`
65
+ );
66
+ } else {
67
+ throw new Error(
68
+ `FAILED convert_comp_mole_to_mass_calculation with result code ${resultCode}`
69
+ );
70
+ }
71
+ });
72
+ });