@jetta/axle-load-calculator 0.1.3 → 0.2.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 (519) hide show
  1. package/README.md +4 -1
  2. package/build/core/contracts/{chassi_reference.d.ts → ChassiReference.d.ts} +1 -1
  3. package/build/core/contracts/ChassiReference.d.ts.map +1 -0
  4. package/build/core/contracts/{ms_faixas_contract.d.ts → MsFaixasContract.d.ts} +2 -2
  5. package/build/core/contracts/MsFaixasContract.d.ts.map +1 -0
  6. package/build/core/contracts/{ms_faixas_contract.js → MsFaixasContract.js} +3 -3
  7. package/build/core/contracts/{rotation_enum.d.ts → RotationEnum.d.ts} +1 -1
  8. package/build/core/contracts/RotationEnum.d.ts.map +1 -0
  9. package/build/core/contracts/{suspension_type.d.ts → SuspensionType.d.ts} +1 -1
  10. package/build/core/contracts/SuspensionType.d.ts.map +1 -0
  11. package/build/core/contracts/{transport_record.d.ts → TransportRecord.d.ts} +1 -1
  12. package/build/core/contracts/TransportRecord.d.ts.map +1 -0
  13. package/build/core/contracts/{vehicle_type.d.ts → VehicleType.d.ts} +1 -1
  14. package/build/core/contracts/VehicleType.d.ts.map +1 -0
  15. package/build/core/contracts/{vehicle_version.d.ts → VehicleVersion.d.ts} +1 -1
  16. package/build/core/contracts/VehicleVersion.d.ts.map +1 -0
  17. package/build/core/contracts/{wire_flags.d.ts → WireFlags.d.ts} +1 -1
  18. package/build/core/contracts/WireFlags.d.ts.map +1 -0
  19. package/build/core/math/{float_tools.d.ts → FloatTools.d.ts} +1 -1
  20. package/build/core/math/FloatTools.d.ts.map +1 -0
  21. package/build/core/math/{gaussian_elimination.d.ts → GaussianElimination.d.ts} +1 -1
  22. package/build/core/math/GaussianElimination.d.ts.map +1 -0
  23. package/build/core/orchestration/{axle_weight_physics.d.ts → AxleWeightPhysics.d.ts} +1 -1
  24. package/build/core/orchestration/AxleWeightPhysics.d.ts.map +1 -0
  25. package/build/core/orchestration/{axle_weight_physics.js → AxleWeightPhysics.js} +3 -3
  26. package/build/core/orchestration/{collision_checker.d.ts → CollisionChecker.d.ts} +1 -1
  27. package/build/core/orchestration/CollisionChecker.d.ts.map +1 -0
  28. package/build/core/orchestration/{collision_checker.js → CollisionChecker.js} +3 -1
  29. package/build/core/orchestration/{connector_payload_builder.d.ts → ConnectorPayloadBuilder.d.ts} +1 -1
  30. package/build/core/orchestration/ConnectorPayloadBuilder.d.ts.map +1 -0
  31. package/build/core/orchestration/{connector_payload_builder.js → ConnectorPayloadBuilder.js} +27 -13
  32. package/build/core/orchestration/ItemOverlapError.d.ts +9 -0
  33. package/build/core/orchestration/ItemOverlapError.d.ts.map +1 -0
  34. package/build/core/orchestration/ItemOverlapError.js +11 -0
  35. package/build/core/orchestration/{java_mass_center.d.ts → JavaMassCenter.d.ts} +2 -2
  36. package/build/core/orchestration/JavaMassCenter.d.ts.map +1 -0
  37. package/build/core/orchestration/{java_mass_center.js → JavaMassCenter.js} +1 -1
  38. package/build/core/orchestration/{output_builder.d.ts → OutputBuilder.d.ts} +1 -1
  39. package/build/core/orchestration/OutputBuilder.d.ts.map +1 -0
  40. package/build/core/orchestration/{request_schema.d.ts → RequestSchema.d.ts} +8 -1
  41. package/build/core/orchestration/RequestSchema.d.ts.map +1 -0
  42. package/build/core/orchestration/RequestSchema.js +41 -0
  43. package/build/core/orchestration/WeightByAxisTask.d.ts +8 -0
  44. package/build/core/orchestration/WeightByAxisTask.d.ts.map +1 -0
  45. package/build/core/orchestration/{weight_by_axis_task.js → WeightByAxisTask.js} +10 -8
  46. package/build/core/physics/items/{allocated_item.d.ts → AllocatedItem.d.ts} +3 -3
  47. package/build/core/physics/items/AllocatedItem.d.ts.map +1 -0
  48. package/build/core/physics/items/{allocated_item.js → AllocatedItem.js} +1 -1
  49. package/build/core/physics/items/{allocated_item_manager.d.ts → AllocatedItemManager.d.ts} +3 -3
  50. package/build/core/physics/items/AllocatedItemManager.d.ts.map +1 -0
  51. package/build/core/physics/items/BindChassiSolver.d.ts +12 -0
  52. package/build/core/physics/items/BindChassiSolver.d.ts.map +1 -0
  53. package/build/core/physics/items/BindChassiSolver.js +10 -0
  54. package/build/core/physics/items/{center_of_mass.d.ts → CenterOfMass.d.ts} +2 -2
  55. package/build/core/physics/items/CenterOfMass.d.ts.map +1 -0
  56. package/build/core/physics/items/{compute_grouper_center_of_mass.d.ts → ComputeGrouperCenterOfMass.d.ts} +6 -6
  57. package/build/core/physics/items/ComputeGrouperCenterOfMass.d.ts.map +1 -0
  58. package/build/core/physics/items/{compute_grouper_center_of_mass.js → ComputeGrouperCenterOfMass.js} +2 -2
  59. package/build/core/physics/items/{item_templates.d.ts → ItemTemplates.d.ts} +2 -2
  60. package/build/core/physics/items/ItemTemplates.d.ts.map +1 -0
  61. package/build/core/physics/items/{item_templates.js → ItemTemplates.js} +4 -3
  62. package/build/core/physics/items/{multi_container_allocated_items.d.ts → MultiContainerAllocatedItems.d.ts} +4 -4
  63. package/build/core/physics/items/MultiContainerAllocatedItems.d.ts.map +1 -0
  64. package/build/core/physics/items/{multi_container_allocated_items.js → MultiContainerAllocatedItems.js} +2 -2
  65. package/build/core/physics/items/{rotation_transforms.d.ts → RotationTransforms.d.ts} +2 -2
  66. package/build/core/physics/items/RotationTransforms.d.ts.map +1 -0
  67. package/build/core/physics/items/{rotation_transforms.js → RotationTransforms.js} +1 -1
  68. package/build/core/physics/items/UnknownItemIdError.d.ts +10 -0
  69. package/build/core/physics/items/UnknownItemIdError.d.ts.map +1 -0
  70. package/build/core/physics/items/UnknownItemIdError.js +12 -0
  71. package/build/core/physics/models/{axle_weight_model.d.ts → AxleWeightModel.d.ts} +6 -6
  72. package/build/core/physics/models/AxleWeightModel.d.ts.map +1 -0
  73. package/build/core/physics/models/{axle_weight_model.js → AxleWeightModel.js} +11 -10
  74. package/build/core/physics/models/{bi_truck_model.d.ts → BiTruckModel.d.ts} +5 -5
  75. package/build/core/physics/models/BiTruckModel.d.ts.map +1 -0
  76. package/build/core/physics/models/{bi_truck_model.js → BiTruckModel.js} +5 -5
  77. package/build/core/physics/models/{bi_truck_tractor_semi_trailer_model.d.ts → BiTruckTractorSemiTrailerModel.d.ts} +5 -5
  78. package/build/core/physics/models/BiTruckTractorSemiTrailerModel.d.ts.map +1 -0
  79. package/build/core/physics/models/{bi_truck_tractor_semi_trailer_model.js → BiTruckTractorSemiTrailerModel.js} +5 -5
  80. package/build/core/physics/models/{bitrem_model.d.ts → BitremModel.d.ts} +6 -6
  81. package/build/core/physics/models/BitremModel.d.ts.map +1 -0
  82. package/build/core/physics/models/{bitrem_model.js → BitremModel.js} +7 -6
  83. package/build/core/physics/models/{chassi_forces.d.ts → ChassiForces.d.ts} +1 -1
  84. package/build/core/physics/models/ChassiForces.d.ts.map +1 -0
  85. package/build/core/physics/models/{old_tare_model.d.ts → OldTareModel.d.ts} +2 -2
  86. package/build/core/physics/models/OldTareModel.d.ts.map +1 -0
  87. package/build/core/physics/models/{old_tare_model.js → OldTareModel.js} +5 -5
  88. package/build/core/physics/models/{old_tare_scale.d.ts → OldTareScale.d.ts} +1 -1
  89. package/build/core/physics/models/OldTareScale.d.ts.map +1 -0
  90. package/build/core/physics/models/{old_tare_semireboque.d.ts → OldTareSemireboque.d.ts} +2 -2
  91. package/build/core/physics/models/OldTareSemireboque.d.ts.map +1 -0
  92. package/build/core/physics/models/{old_tare_semireboque.js → OldTareSemireboque.js} +2 -2
  93. package/build/core/physics/models/{old_tare_truck.d.ts → OldTareTruck.d.ts} +2 -2
  94. package/build/core/physics/models/OldTareTruck.d.ts.map +1 -0
  95. package/build/core/physics/models/{old_tare_truck.js → OldTareTruck.js} +2 -2
  96. package/build/core/physics/models/{old_tare_vanderleia.d.ts → OldTareVanderleia.d.ts} +2 -2
  97. package/build/core/physics/models/OldTareVanderleia.d.ts.map +1 -0
  98. package/build/core/physics/models/{old_tare_vanderleia.js → OldTareVanderleia.js} +1 -1
  99. package/build/core/physics/models/{percentage_on_axles_calculator.d.ts → PercentageOnAxlesCalculator.d.ts} +2 -2
  100. package/build/core/physics/models/PercentageOnAxlesCalculator.d.ts.map +1 -0
  101. package/build/core/physics/models/{percentage_on_axles_calculator.js → PercentageOnAxlesCalculator.js} +1 -1
  102. package/build/core/physics/models/{quad_semi_trailer_model.d.ts → QuadSemiTrailerModel.d.ts} +5 -5
  103. package/build/core/physics/models/QuadSemiTrailerModel.d.ts.map +1 -0
  104. package/build/core/physics/models/{quad_semi_trailer_model.js → QuadSemiTrailerModel.js} +5 -5
  105. package/build/core/physics/models/{rodotrem_model.d.ts → RodotremModel.d.ts} +6 -6
  106. package/build/core/physics/models/RodotremModel.d.ts.map +1 -0
  107. package/build/core/physics/models/{rodotrem_model.js → RodotremModel.js} +7 -6
  108. package/build/core/physics/models/SemiDelegate.d.ts +9 -0
  109. package/build/core/physics/models/SemiDelegate.d.ts.map +1 -0
  110. package/build/core/physics/models/SemiDelegate.js +1 -0
  111. package/build/core/physics/models/{semi_reboque_base.d.ts → SemiReboqueBase.d.ts} +4 -4
  112. package/build/core/physics/models/SemiReboqueBase.d.ts.map +1 -0
  113. package/build/core/physics/models/{semi_reboque_base.js → SemiReboqueBase.js} +4 -4
  114. package/build/core/physics/models/{semi_reboque_model.d.ts → SemiReboqueModel.d.ts} +5 -5
  115. package/build/core/physics/models/SemiReboqueModel.d.ts.map +1 -0
  116. package/build/core/physics/models/{semi_reboque_model.js → SemiReboqueModel.js} +8 -7
  117. package/build/core/physics/models/{simple_truck_base.d.ts → SimpleTruckBase.d.ts} +4 -4
  118. package/build/core/physics/models/SimpleTruckBase.d.ts.map +1 -0
  119. package/build/core/physics/models/{simple_truck_base.js → SimpleTruckBase.js} +3 -3
  120. package/build/core/physics/models/{simple_truck_model.d.ts → SimpleTruckModel.d.ts} +5 -5
  121. package/build/core/physics/models/SimpleTruckModel.d.ts.map +1 -0
  122. package/build/core/physics/models/{simple_truck_model.js → SimpleTruckModel.js} +7 -6
  123. package/build/core/physics/models/{single_container_tare.d.ts → SingleContainerTare.d.ts} +2 -2
  124. package/build/core/physics/models/SingleContainerTare.d.ts.map +1 -0
  125. package/build/core/physics/models/{single_container_tare.js → SingleContainerTare.js} +2 -2
  126. package/build/core/physics/models/{tare_model.d.ts → TareModel.d.ts} +2 -2
  127. package/build/core/physics/models/TareModel.d.ts.map +1 -0
  128. package/build/core/physics/models/{tare_model.js → TareModel.js} +3 -3
  129. package/build/core/physics/models/TruckDelegate.d.ts +9 -0
  130. package/build/core/physics/models/TruckDelegate.d.ts.map +1 -0
  131. package/build/core/physics/models/TruckDelegate.js +1 -0
  132. package/build/core/physics/models/UnrecognizedSuspensionTypeError.d.ts +10 -0
  133. package/build/core/physics/models/UnrecognizedSuspensionTypeError.d.ts.map +1 -0
  134. package/build/core/physics/models/UnrecognizedSuspensionTypeError.js +12 -0
  135. package/build/core/physics/models/UnsupportedVehicleTypeError.d.ts +10 -0
  136. package/build/core/physics/models/UnsupportedVehicleTypeError.d.ts.map +1 -0
  137. package/build/core/physics/models/UnsupportedVehicleTypeError.js +12 -0
  138. package/build/core/physics/models/{vanderleia_model.d.ts → VanderleiaModel.d.ts} +6 -6
  139. package/build/core/physics/models/VanderleiaModel.d.ts.map +1 -0
  140. package/build/core/physics/models/{vanderleia_model.js → VanderleiaModel.js} +10 -8
  141. package/build/core/physics/models/VehicleModel.d.ts +11 -0
  142. package/build/core/physics/models/VehicleModel.d.ts.map +1 -0
  143. package/build/core/physics/models/VehicleModel.js +1 -0
  144. package/build/core/physics/models/deflection/{beam_deflection.d.ts → BeamDeflection.d.ts} +2 -2
  145. package/build/core/physics/models/deflection/BeamDeflection.d.ts.map +1 -0
  146. package/build/core/physics/models/deflection/{beam_deflection.js → BeamDeflection.js} +2 -2
  147. package/build/core/physics/models/deflection/{bitrem_deflection.d.ts → BitremDeflection.d.ts} +3 -3
  148. package/build/core/physics/models/deflection/BitremDeflection.d.ts.map +1 -0
  149. package/build/core/physics/models/deflection/{bitrem_deflection.js → BitremDeflection.js} +3 -3
  150. package/build/core/physics/models/deflection/{create_deflection_delegate.d.ts → CreateDeflectionDelegate.d.ts} +3 -6
  151. package/build/core/physics/models/deflection/CreateDeflectionDelegate.d.ts.map +1 -0
  152. package/build/core/physics/models/deflection/CreateDeflectionDelegate.js +24 -0
  153. package/build/core/physics/models/deflection/DeflectionDelegate.d.ts +8 -0
  154. package/build/core/physics/models/deflection/DeflectionDelegate.d.ts.map +1 -0
  155. package/build/core/physics/models/deflection/DeflectionDelegate.js +1 -0
  156. package/build/core/physics/models/deflection/DeflectionDelegateFactories.d.ts +36 -0
  157. package/build/core/physics/models/deflection/DeflectionDelegateFactories.d.ts.map +1 -0
  158. package/build/core/physics/models/deflection/DeflectionDelegateFactories.js +51 -0
  159. package/build/core/physics/models/deflection/{deflection_model.d.ts → DeflectionModel.d.ts} +3 -3
  160. package/build/core/physics/models/deflection/DeflectionModel.d.ts.map +1 -0
  161. package/build/core/physics/models/deflection/{deflection_model.js → DeflectionModel.js} +2 -2
  162. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts +9 -0
  163. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts.map +1 -0
  164. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.js +11 -0
  165. package/build/core/physics/models/deflection/{deflection_support_manager.d.ts → DeflectionSupportManager.d.ts} +15 -1
  166. package/build/core/physics/models/deflection/DeflectionSupportManager.d.ts.map +1 -0
  167. package/build/core/physics/models/deflection/{deflection_support_manager.js → DeflectionSupportManager.js} +14 -0
  168. package/build/core/physics/models/deflection/{deflection_tools.d.ts → DeflectionTools.d.ts} +1 -1
  169. package/build/core/physics/models/deflection/DeflectionTools.d.ts.map +1 -0
  170. package/build/core/physics/models/deflection/DelegateFactory.d.ts +12 -0
  171. package/build/core/physics/models/deflection/DelegateFactory.d.ts.map +1 -0
  172. package/build/core/physics/models/deflection/DelegateFactory.js +1 -0
  173. package/build/core/physics/models/deflection/{integration_constant_calculator.d.ts → IntegrationConstantCalculator.d.ts} +6 -3
  174. package/build/core/physics/models/deflection/IntegrationConstantCalculator.d.ts.map +1 -0
  175. package/build/core/physics/models/deflection/{integration_constant_calculator.js → IntegrationConstantCalculator.js} +4 -1
  176. package/build/core/physics/models/deflection/{rodotrem_deflection.d.ts → RodotremDeflection.d.ts} +3 -3
  177. package/build/core/physics/models/deflection/RodotremDeflection.d.ts.map +1 -0
  178. package/build/core/physics/models/deflection/{rodotrem_deflection.js → RodotremDeflection.js} +3 -3
  179. package/build/core/physics/models/deflection/{semi_reboque_deflection.d.ts → SemiReboqueDeflection.d.ts} +3 -3
  180. package/build/core/physics/models/deflection/SemiReboqueDeflection.d.ts.map +1 -0
  181. package/build/core/physics/models/deflection/{semi_reboque_deflection.js → SemiReboqueDeflection.js} +2 -2
  182. package/build/core/physics/models/deflection/{simple_truck_deflection.d.ts → SimpleTruckDeflection.d.ts} +3 -3
  183. package/build/core/physics/models/deflection/SimpleTruckDeflection.d.ts.map +1 -0
  184. package/build/core/physics/models/deflection/{simple_truck_deflection.js → SimpleTruckDeflection.js} +2 -2
  185. package/build/core/physics/models/deflection/{vanderleia_deflection.d.ts → VanderleiaDeflection.d.ts} +3 -3
  186. package/build/core/physics/models/deflection/VanderleiaDeflection.d.ts.map +1 -0
  187. package/build/core/physics/models/deflection/{vanderleia_deflection.js → VanderleiaDeflection.js} +3 -3
  188. package/build/core/physics/services/{axle_weight_output_builder.d.ts → AxleWeightOutputBuilder.d.ts} +4 -4
  189. package/build/core/physics/services/AxleWeightOutputBuilder.d.ts.map +1 -0
  190. package/build/core/physics/services/{axle_weight_output_builder.js → AxleWeightOutputBuilder.js} +2 -2
  191. package/build/core/physics/services/{axle_weight_service.d.ts → AxleWeightService.d.ts} +1 -1
  192. package/build/core/physics/services/AxleWeightService.d.ts.map +1 -0
  193. package/build/core/physics/services/{axle_weight_service.js → AxleWeightService.js} +6 -6
  194. package/build/core/physics/services/{cm_axle_weight_service.d.ts → CmAxleWeightService.d.ts} +2 -2
  195. package/build/core/physics/services/CmAxleWeightService.d.ts.map +1 -0
  196. package/build/core/physics/services/{cm_axle_weight_service.js → CmAxleWeightService.js} +3 -3
  197. package/build/core/physics/services/{container_corner_forces.d.ts → ContainerCornerForces.d.ts} +1 -1
  198. package/build/core/physics/services/ContainerCornerForces.d.ts.map +1 -0
  199. package/build/core/physics/transports/{axle_manager.d.ts → AxleManager.d.ts} +3 -3
  200. package/build/core/physics/transports/AxleManager.d.ts.map +1 -0
  201. package/build/core/physics/transports/{axle_manager.js → AxleManager.js} +2 -2
  202. package/build/core/physics/transports/{axle_record.d.ts → AxleRecord.d.ts} +1 -1
  203. package/build/core/physics/transports/AxleRecord.d.ts.map +1 -0
  204. package/build/core/physics/transports/{axle_record.js → AxleRecord.js} +1 -1
  205. package/build/core/physics/transports/{chassi.d.ts → Chassi.d.ts} +3 -3
  206. package/build/core/physics/transports/{chassi.d.ts.map → Chassi.d.ts.map} +1 -1
  207. package/build/core/physics/transports/{chassi.js → Chassi.js} +2 -2
  208. package/build/core/physics/transports/{container_record.d.ts → ContainerRecord.d.ts} +1 -1
  209. package/build/core/physics/transports/ContainerRecord.d.ts.map +1 -0
  210. package/build/core/physics/transports/{container_record.js → ContainerRecord.js} +1 -1
  211. package/build/core/physics/transports/ContainerSequenceNotFoundError.d.ts +10 -0
  212. package/build/core/physics/transports/ContainerSequenceNotFoundError.d.ts.map +1 -0
  213. package/build/core/physics/transports/ContainerSequenceNotFoundError.js +12 -0
  214. package/build/core/physics/transports/{grouped_containers.d.ts → GroupedContainers.d.ts} +2 -2
  215. package/build/core/physics/transports/GroupedContainers.d.ts.map +1 -0
  216. package/build/core/physics/transports/{grouped_containers.js → GroupedContainers.js} +3 -2
  217. package/build/core/physics/transports/GrouperNotFoundError.d.ts +10 -0
  218. package/build/core/physics/transports/GrouperNotFoundError.d.ts.map +1 -0
  219. package/build/core/physics/transports/GrouperNotFoundError.js +12 -0
  220. package/build/core/physics/transports/{merged_containers.d.ts → MergedContainers.d.ts} +3 -3
  221. package/build/core/physics/transports/MergedContainers.d.ts.map +1 -0
  222. package/build/core/physics/transports/{merged_containers.js → MergedContainers.js} +3 -2
  223. package/build/core/physics/transports/MissingContainerError.d.ts +10 -0
  224. package/build/core/physics/transports/MissingContainerError.d.ts.map +1 -0
  225. package/build/core/physics/transports/MissingContainerError.js +12 -0
  226. package/build/core/physics/transports/{transport.d.ts → Transport.d.ts} +5 -5
  227. package/build/core/physics/transports/Transport.d.ts.map +1 -0
  228. package/build/core/physics/transports/{transport.js → Transport.js} +7 -6
  229. package/build/core/physics/transports/containerweight/{container_max_weight_calculator.d.ts → ContainerMaxWeightCalculator.d.ts} +3 -9
  230. package/build/core/physics/transports/containerweight/ContainerMaxWeightCalculator.d.ts.map +1 -0
  231. package/build/core/physics/transports/containerweight/{container_tare_calculator.d.ts → ContainerTareCalculator.d.ts} +3 -3
  232. package/build/core/physics/transports/containerweight/ContainerTareCalculator.d.ts.map +1 -0
  233. package/build/core/physics/transports/containerweight/{container_weight_model.d.ts → ContainerWeightModel.d.ts} +2 -2
  234. package/build/core/physics/transports/containerweight/ContainerWeightModel.d.ts.map +1 -0
  235. package/build/core/physics/transports/containerweight/{container_weight_model.js → ContainerWeightModel.js} +3 -3
  236. package/build/core/physics/transports/containerweight/MaxWeightInput.d.ts +10 -0
  237. package/build/core/physics/transports/containerweight/MaxWeightInput.d.ts.map +1 -0
  238. package/build/core/physics/transports/containerweight/MaxWeightInput.js +1 -0
  239. package/build/core/physics/transports/containerweight/{merged_containers_weight_calculator.d.ts → MergedContainersWeightCalculator.d.ts} +3 -3
  240. package/build/core/physics/transports/containerweight/MergedContainersWeightCalculator.d.ts.map +1 -0
  241. package/build/core/physics/transports/containerweight/{single_container_weight_calculator.d.ts → SingleContainerWeightCalculator.d.ts} +3 -3
  242. package/build/core/physics/transports/containerweight/SingleContainerWeightCalculator.d.ts.map +1 -0
  243. package/build/core/physics/transports/containerweight/{single_container_weight_calculator.js → SingleContainerWeightCalculator.js} +2 -2
  244. package/build/core/physics/transports/tare/BitremAxleSplit.d.ts +8 -0
  245. package/build/core/physics/transports/tare/BitremAxleSplit.d.ts.map +1 -0
  246. package/build/core/physics/transports/tare/BitremAxleSplit.js +1 -0
  247. package/build/core/physics/transports/tare/BitremAxleSplitTarget.d.ts +12 -0
  248. package/build/core/physics/transports/tare/BitremAxleSplitTarget.d.ts.map +1 -0
  249. package/build/core/physics/transports/tare/BitremAxleSplitTarget.js +1 -0
  250. package/build/core/physics/transports/tare/{bitrem_axle_splitter.d.ts → BitremAxleSplitter.d.ts} +3 -3
  251. package/build/core/physics/transports/tare/BitremAxleSplitter.d.ts.map +1 -0
  252. package/build/core/physics/transports/tare/{bitrem_axle_splitter.js → BitremAxleSplitter.js} +5 -5
  253. package/build/core/physics/transports/tare/{bitrem_axle_weight_split.d.ts → BitremAxleWeightSplit.d.ts} +3 -12
  254. package/build/core/physics/transports/tare/BitremAxleWeightSplit.d.ts.map +1 -0
  255. package/build/index.d.ts +7 -0
  256. package/build/index.d.ts.map +1 -1
  257. package/build/index.js +4 -6
  258. package/package.json +3 -3
  259. package/.cursor/ai_changelog/INDEX.md +0 -13
  260. package/.cursor/ai_changelog/_TEMPLATE.md +0 -55
  261. package/.cursor/rules/code-standards.mdc +0 -103
  262. package/.cursor/rules/knowledge-base.mdc +0 -14
  263. package/.cursor/rules/planning-standards.mdc +0 -55
  264. package/.cursor/skills/document-feature-knowledge/SKILL.md +0 -51
  265. package/bitbucket-pipelines.yml +0 -81
  266. package/build/core/contracts/chassi_reference.d.ts.map +0 -1
  267. package/build/core/contracts/ms_faixas_contract.d.ts.map +0 -1
  268. package/build/core/contracts/rotation_enum.d.ts.map +0 -1
  269. package/build/core/contracts/suspension_type.d.ts.map +0 -1
  270. package/build/core/contracts/transport_record.d.ts.map +0 -1
  271. package/build/core/contracts/vehicle_type.d.ts.map +0 -1
  272. package/build/core/contracts/vehicle_version.d.ts.map +0 -1
  273. package/build/core/contracts/wire_flags.d.ts.map +0 -1
  274. package/build/core/math/float_tools.d.ts.map +0 -1
  275. package/build/core/math/gaussian_elimination.d.ts.map +0 -1
  276. package/build/core/orchestration/axle_weight_physics.d.ts.map +0 -1
  277. package/build/core/orchestration/collision_checker.d.ts.map +0 -1
  278. package/build/core/orchestration/connector_payload_builder.d.ts.map +0 -1
  279. package/build/core/orchestration/java_mass_center.d.ts.map +0 -1
  280. package/build/core/orchestration/output_builder.d.ts.map +0 -1
  281. package/build/core/orchestration/request_schema.d.ts.map +0 -1
  282. package/build/core/orchestration/request_schema.js +0 -20
  283. package/build/core/orchestration/weight_by_axis_task.d.ts +0 -7
  284. package/build/core/orchestration/weight_by_axis_task.d.ts.map +0 -1
  285. package/build/core/physics/items/allocated_item.d.ts.map +0 -1
  286. package/build/core/physics/items/allocated_item_manager.d.ts.map +0 -1
  287. package/build/core/physics/items/center_of_mass.d.ts.map +0 -1
  288. package/build/core/physics/items/compute_grouper_center_of_mass.d.ts.map +0 -1
  289. package/build/core/physics/items/item_templates.d.ts.map +0 -1
  290. package/build/core/physics/items/multi_container_allocated_items.d.ts.map +0 -1
  291. package/build/core/physics/items/rotation_transforms.d.ts.map +0 -1
  292. package/build/core/physics/models/axle_weight_model.d.ts.map +0 -1
  293. package/build/core/physics/models/bi_truck_model.d.ts.map +0 -1
  294. package/build/core/physics/models/bi_truck_tractor_semi_trailer_model.d.ts.map +0 -1
  295. package/build/core/physics/models/bitrem_model.d.ts.map +0 -1
  296. package/build/core/physics/models/chassi_forces.d.ts.map +0 -1
  297. package/build/core/physics/models/deflection/beam_deflection.d.ts.map +0 -1
  298. package/build/core/physics/models/deflection/bitrem_deflection.d.ts.map +0 -1
  299. package/build/core/physics/models/deflection/create_deflection_delegate.d.ts.map +0 -1
  300. package/build/core/physics/models/deflection/create_deflection_delegate.js +0 -32
  301. package/build/core/physics/models/deflection/deflection_model.d.ts.map +0 -1
  302. package/build/core/physics/models/deflection/deflection_support_manager.d.ts.map +0 -1
  303. package/build/core/physics/models/deflection/deflection_tools.d.ts.map +0 -1
  304. package/build/core/physics/models/deflection/integration_constant_calculator.d.ts.map +0 -1
  305. package/build/core/physics/models/deflection/rodotrem_deflection.d.ts.map +0 -1
  306. package/build/core/physics/models/deflection/semi_reboque_deflection.d.ts.map +0 -1
  307. package/build/core/physics/models/deflection/simple_truck_deflection.d.ts.map +0 -1
  308. package/build/core/physics/models/deflection/vanderleia_deflection.d.ts.map +0 -1
  309. package/build/core/physics/models/old_tare_model.d.ts.map +0 -1
  310. package/build/core/physics/models/old_tare_scale.d.ts.map +0 -1
  311. package/build/core/physics/models/old_tare_semireboque.d.ts.map +0 -1
  312. package/build/core/physics/models/old_tare_truck.d.ts.map +0 -1
  313. package/build/core/physics/models/old_tare_vanderleia.d.ts.map +0 -1
  314. package/build/core/physics/models/percentage_on_axles_calculator.d.ts.map +0 -1
  315. package/build/core/physics/models/quad_semi_trailer_model.d.ts.map +0 -1
  316. package/build/core/physics/models/rodotrem_model.d.ts.map +0 -1
  317. package/build/core/physics/models/semi_reboque_base.d.ts.map +0 -1
  318. package/build/core/physics/models/semi_reboque_model.d.ts.map +0 -1
  319. package/build/core/physics/models/simple_truck_base.d.ts.map +0 -1
  320. package/build/core/physics/models/simple_truck_model.d.ts.map +0 -1
  321. package/build/core/physics/models/single_container_tare.d.ts.map +0 -1
  322. package/build/core/physics/models/tare_model.d.ts.map +0 -1
  323. package/build/core/physics/models/vanderleia_model.d.ts.map +0 -1
  324. package/build/core/physics/services/axle_weight_output_builder.d.ts.map +0 -1
  325. package/build/core/physics/services/axle_weight_service.d.ts.map +0 -1
  326. package/build/core/physics/services/cm_axle_weight_service.d.ts.map +0 -1
  327. package/build/core/physics/services/container_corner_forces.d.ts.map +0 -1
  328. package/build/core/physics/transports/axle_manager.d.ts.map +0 -1
  329. package/build/core/physics/transports/axle_record.d.ts.map +0 -1
  330. package/build/core/physics/transports/container_record.d.ts.map +0 -1
  331. package/build/core/physics/transports/containerweight/container_max_weight_calculator.d.ts.map +0 -1
  332. package/build/core/physics/transports/containerweight/container_tare_calculator.d.ts.map +0 -1
  333. package/build/core/physics/transports/containerweight/container_weight_model.d.ts.map +0 -1
  334. package/build/core/physics/transports/containerweight/merged_containers_weight_calculator.d.ts.map +0 -1
  335. package/build/core/physics/transports/containerweight/single_container_weight_calculator.d.ts.map +0 -1
  336. package/build/core/physics/transports/grouped_containers.d.ts.map +0 -1
  337. package/build/core/physics/transports/merged_containers.d.ts.map +0 -1
  338. package/build/core/physics/transports/tare/bitrem_axle_splitter.d.ts.map +0 -1
  339. package/build/core/physics/transports/tare/bitrem_axle_weight_split.d.ts.map +0 -1
  340. package/build/core/physics/transports/transport.d.ts.map +0 -1
  341. package/eslint.config.js +0 -51
  342. package/src/core/contracts/chassi_reference.ts +0 -7
  343. package/src/core/contracts/ms_faixas_contract.ts +0 -114
  344. package/src/core/contracts/rotation_enum.ts +0 -11
  345. package/src/core/contracts/suspension_type.ts +0 -4
  346. package/src/core/contracts/transport_record.ts +0 -4
  347. package/src/core/contracts/vehicle_type.ts +0 -12
  348. package/src/core/contracts/vehicle_version.ts +0 -7
  349. package/src/core/contracts/wire_flags.ts +0 -26
  350. package/src/core/math/float_tools.ts +0 -17
  351. package/src/core/math/gaussian_elimination.ts +0 -104
  352. package/src/core/orchestration/axle_weight_physics.ts +0 -37
  353. package/src/core/orchestration/collision_checker.ts +0 -86
  354. package/src/core/orchestration/connector_payload_builder.ts +0 -81
  355. package/src/core/orchestration/java_mass_center.ts +0 -98
  356. package/src/core/orchestration/output_builder.ts +0 -18
  357. package/src/core/orchestration/request_schema.ts +0 -26
  358. package/src/core/orchestration/weight_by_axis_task.ts +0 -140
  359. package/src/core/physics/items/allocated_item.ts +0 -41
  360. package/src/core/physics/items/allocated_item_manager.ts +0 -50
  361. package/src/core/physics/items/center_of_mass.ts +0 -31
  362. package/src/core/physics/items/compute_grouper_center_of_mass.ts +0 -44
  363. package/src/core/physics/items/item_templates.ts +0 -65
  364. package/src/core/physics/items/multi_container_allocated_items.ts +0 -120
  365. package/src/core/physics/items/rotation_transforms.ts +0 -29
  366. package/src/core/physics/models/axle_weight_model.ts +0 -109
  367. package/src/core/physics/models/bi_truck_model.ts +0 -74
  368. package/src/core/physics/models/bi_truck_tractor_semi_trailer_model.ts +0 -86
  369. package/src/core/physics/models/bitrem_model.ts +0 -148
  370. package/src/core/physics/models/chassi_forces.ts +0 -50
  371. package/src/core/physics/models/deflection/beam_deflection.ts +0 -105
  372. package/src/core/physics/models/deflection/bitrem_deflection.ts +0 -68
  373. package/src/core/physics/models/deflection/create_deflection_delegate.ts +0 -46
  374. package/src/core/physics/models/deflection/deflection_model.ts +0 -33
  375. package/src/core/physics/models/deflection/deflection_support_manager.ts +0 -56
  376. package/src/core/physics/models/deflection/deflection_tools.ts +0 -11
  377. package/src/core/physics/models/deflection/integration_constant_calculator.ts +0 -62
  378. package/src/core/physics/models/deflection/rodotrem_deflection.ts +0 -57
  379. package/src/core/physics/models/deflection/semi_reboque_deflection.ts +0 -40
  380. package/src/core/physics/models/deflection/simple_truck_deflection.ts +0 -35
  381. package/src/core/physics/models/deflection/vanderleia_deflection.ts +0 -48
  382. package/src/core/physics/models/old_tare_model.ts +0 -51
  383. package/src/core/physics/models/old_tare_scale.ts +0 -9
  384. package/src/core/physics/models/old_tare_semireboque.ts +0 -51
  385. package/src/core/physics/models/old_tare_truck.ts +0 -15
  386. package/src/core/physics/models/old_tare_vanderleia.ts +0 -44
  387. package/src/core/physics/models/percentage_on_axles_calculator.ts +0 -49
  388. package/src/core/physics/models/quad_semi_trailer_model.ts +0 -87
  389. package/src/core/physics/models/rodotrem_model.ts +0 -131
  390. package/src/core/physics/models/semi_reboque_base.ts +0 -103
  391. package/src/core/physics/models/semi_reboque_model.ts +0 -127
  392. package/src/core/physics/models/simple_truck_base.ts +0 -70
  393. package/src/core/physics/models/simple_truck_model.ts +0 -115
  394. package/src/core/physics/models/single_container_tare.ts +0 -56
  395. package/src/core/physics/models/tare_model.ts +0 -46
  396. package/src/core/physics/models/vanderleia_model.ts +0 -125
  397. package/src/core/physics/services/axle_weight_output_builder.ts +0 -63
  398. package/src/core/physics/services/axle_weight_service.ts +0 -116
  399. package/src/core/physics/services/cm_axle_weight_service.ts +0 -45
  400. package/src/core/physics/services/container_corner_forces.ts +0 -95
  401. package/src/core/physics/transports/axle_manager.ts +0 -45
  402. package/src/core/physics/transports/axle_record.ts +0 -68
  403. package/src/core/physics/transports/chassi.ts +0 -130
  404. package/src/core/physics/transports/container_record.ts +0 -58
  405. package/src/core/physics/transports/containerweight/container_max_weight_calculator.ts +0 -59
  406. package/src/core/physics/transports/containerweight/container_tare_calculator.ts +0 -76
  407. package/src/core/physics/transports/containerweight/container_weight_model.ts +0 -38
  408. package/src/core/physics/transports/containerweight/merged_containers_weight_calculator.ts +0 -39
  409. package/src/core/physics/transports/containerweight/single_container_weight_calculator.ts +0 -65
  410. package/src/core/physics/transports/grouped_containers.ts +0 -91
  411. package/src/core/physics/transports/merged_containers.ts +0 -62
  412. package/src/core/physics/transports/tare/bitrem_axle_splitter.ts +0 -107
  413. package/src/core/physics/transports/tare/bitrem_axle_weight_split.ts +0 -55
  414. package/src/core/physics/transports/transport.ts +0 -137
  415. package/src/index.ts +0 -12
  416. package/src/service/.gitkeep +0 -0
  417. package/test/data/src/core/orchestration/weight_by_axis/case_1_basic_truck_input.json +0 -1759
  418. package/test/data/src/core/orchestration/weight_by_axis/case_2_vanderleia_input.json +0 -1286
  419. package/test/data/src/core/orchestration/weight_by_axis/case_3_interlink_input.json +0 -2226
  420. package/test/data/src/core/orchestration/weight_by_axis/case_4_quad_semi_trailer.json +0 -639
  421. package/test/data/src/core/orchestration/weight_by_axis/case_5_custom_center_of_gravity.json +0 -557
  422. package/test/data/src/core/physics/axle_weight_calculations/case_2_bitruck.json +0 -664
  423. package/test/data/src/core/physics/axle_weight_calculations/case_4_quad_semi_trailer.json +0 -674
  424. package/test/data/src/core/physics/axle_weight_calculations/case_5_bi_truck_semi_trailer.json +0 -674
  425. package/test/data/src/core/physics/axle_weight_service/case_1_input_truck.json +0 -1025
  426. package/test/data/src/core/physics/axle_weight_service/case_1_output_truck.json +0 -38
  427. package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_input.json +0 -1286
  428. package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_output.json +0 -65
  429. package/test/data/src/core/physics/axle_weight_service/case_3_input_semireboque.json +0 -24625
  430. package/test/data/src/core/physics/axle_weight_service/case_3_output_semireboque.json +0 -57
  431. package/test/data/src/core/physics/axle_weight_service/case_4_input_bitrem.json +0 -2226
  432. package/test/data/src/core/physics/axle_weight_service/case_4_output_bitrem.json +0 -96
  433. package/test/data/src/core/physics/beam_deflection/case_10_rodotrem_offset.json +0 -474
  434. package/test/data/src/core/physics/beam_deflection/case_11_bitruck.json +0 -664
  435. package/test/data/src/core/physics/beam_deflection/case_12_quad_semi_trailer.json +0 -792
  436. package/test/data/src/core/physics/beam_deflection/case_13_bi_truck_semi_trailer.json +0 -792
  437. package/test/data/src/core/physics/beam_deflection/case_1_documentation.ipynb +0 -316
  438. package/test/data/src/core/physics/beam_deflection/case_1_semireboque.json +0 -402
  439. package/test/data/src/core/physics/beam_deflection/case_2_bitrem.json +0 -434
  440. package/test/data/src/core/physics/beam_deflection/case_3_rodotrem.json +0 -474
  441. package/test/data/src/core/physics/beam_deflection/case_4_vanderleia_pneumatica.json +0 -425
  442. package/test/data/src/core/physics/beam_deflection/case_5_vanderleia_mecanica.json +0 -366
  443. package/test/data/src/core/physics/beam_deflection/case_6_truck.json +0 -279
  444. package/test/data/src/core/physics/beam_deflection/case_7_semireboque_structural_offset.json +0 -318
  445. package/test/data/src/core/physics/beam_deflection/case_8_vanderleia_offset.json +0 -425
  446. package/test/data/src/core/physics/beam_deflection/case_9_bitrem_offset.json +0 -434
  447. package/test/data/src/core/physics/bitrem_axle_splitter/case_1_simple_bitrem.json +0 -145
  448. package/test/data/src/core/physics/bitrem_axle_splitter/case_2_lowered_bitrem.json +0 -238
  449. package/test/data/src/core/physics/bitrem_axle_splitter/case_3_lowered_positive_proportion.json +0 -238
  450. package/test/data/src/core/physics/c_m_axle_weight_service/case_1_interlink_trailer.json +0 -94
  451. package/test/data/src/core/physics/calculations/case_1_simple_truck.json +0 -83
  452. package/test/data/src/core/physics/calculations/case_2_lowered_bitrem.json +0 -1051
  453. package/test/data/src/core/physics/calculations/case_3_container_mercedes.json +0 -50
  454. package/test/data/src/core/physics/container_corner_forces/case_1.json +0 -674
  455. package/test/data/src/core/physics/container_weight/case_1_basictruck.json +0 -223
  456. package/test/data/src/core/physics/container_weight/case_2_roadtrain.json +0 -277
  457. package/test/data/src/core/physics/container_weight/case_3_semireboque_rebaixado.json +0 -197
  458. package/test/data/src/core/physics/container_weight/case_4_semireboque_neck_limit.json +0 -197
  459. package/test/data/src/core/physics/container_weight/case_5_vanderleia_rebaixada.json +0 -211
  460. package/test/data/src/core/physics/container_weight/case_6_lowered_interlink.json +0 -230
  461. package/test/data/src/core/physics/python_goldens.json +0 -9
  462. package/test/data/src/core/physics/tare/case_1_simple_vanderleia.json +0 -185
  463. package/test/data/src/core/physics/tare/case_2_lowered_vanderleia.json +0 -646
  464. package/test/data/src/core/physics/tare/case_3_lowered_interlink.json +0 -230
  465. package/test/data/src/core/physics/tare/case_4_negative_tare_VUC.json +0 -483
  466. package/test/data/src/core/physics/tare/case_5_truck_bitruck.json +0 -664
  467. package/test/data/src/core/physics/tare/case_6_quad_semi_trailer.json +0 -203
  468. package/test/data/src/core/physics/tare/case_7_bi_truck_semi_trailer.json +0 -203
  469. package/test/data/src/core/physics/tare/case_8_triaxle_semi_trailer.json +0 -203
  470. package/test/data/src/core/physics/time_performance/case_1_center_of_mass.json +0 -2916
  471. package/test/data/src/core/physics/trucks/bitrem.json +0 -150
  472. package/test/data/src/core/physics/trucks/lowered_bitrem.json +0 -1216
  473. package/test/data/src/core/physics/trucks/lowered_bitrem_empty_first_container.json +0 -1182
  474. package/test/data/src/core/physics/trucks/rodotrem.json +0 -148
  475. package/test/data/src/core/physics/trucks/semi_reboque.json +0 -91
  476. package/test/data/src/core/physics/trucks/semi_reboque_rebaixado.json +0 -1629
  477. package/test/data/src/core/physics/trucks/simple_truck.json +0 -85
  478. package/test/data/src/core/physics/trucks/vanderleia_mechanical.json +0 -105
  479. package/test/data/src/core/physics/trucks/vanderleia_pneumatic.json +0 -105
  480. package/test/src/core/orchestration/request_schema.test.ts +0 -20
  481. package/test/src/core/orchestration/weight_by_axis_task.test.ts +0 -87
  482. package/test/src/core/physics/items/center_of_mass.test.ts +0 -38
  483. package/test/src/core/physics/items/multi_container_allocated_items.test.ts +0 -22
  484. package/test/src/core/physics/math_input_helpers.ts +0 -64
  485. package/test/src/core/physics/models/bitrem_model.test.ts +0 -54
  486. package/test/src/core/physics/models/deflection/deflection_model.test.ts +0 -78
  487. package/test/src/core/physics/models/rodotrem_model.test.ts +0 -29
  488. package/test/src/core/physics/models/semi_reboque_model.test.ts +0 -72
  489. package/test/src/core/physics/models/simple_truck_model.test.ts +0 -23
  490. package/test/src/core/physics/models/tare_model.test.ts +0 -34
  491. package/test/src/core/physics/models/vanderleia_model.test.ts +0 -36
  492. package/test/src/core/physics/services/axle_weight_service.test.ts +0 -56
  493. package/test/src/core/physics/services/cm_axle_weight_service.test.ts +0 -23
  494. package/test/src/core/physics/services/container_corner_forces.test.ts +0 -23
  495. package/test/src/core/physics/test_helpers.ts +0 -13
  496. package/test/src/core/physics/transports/chassi.test.ts +0 -35
  497. package/test/src/core/physics/transports/containerweight/container_weight_model.test.ts +0 -57
  498. package/test/src/core/physics/transports/tare/bitrem_axle_splitter.test.ts +0 -30
  499. package/test/src/index.test.ts +0 -35
  500. /package/build/core/contracts/{chassi_reference.js → ChassiReference.js} +0 -0
  501. /package/build/core/contracts/{rotation_enum.js → RotationEnum.js} +0 -0
  502. /package/build/core/contracts/{suspension_type.js → SuspensionType.js} +0 -0
  503. /package/build/core/contracts/{transport_record.js → TransportRecord.js} +0 -0
  504. /package/build/core/contracts/{vehicle_type.js → VehicleType.js} +0 -0
  505. /package/build/core/contracts/{vehicle_version.js → VehicleVersion.js} +0 -0
  506. /package/build/core/contracts/{wire_flags.js → WireFlags.js} +0 -0
  507. /package/build/core/math/{float_tools.js → FloatTools.js} +0 -0
  508. /package/build/core/math/{gaussian_elimination.js → GaussianElimination.js} +0 -0
  509. /package/build/core/orchestration/{output_builder.js → OutputBuilder.js} +0 -0
  510. /package/build/core/physics/items/{allocated_item_manager.js → AllocatedItemManager.js} +0 -0
  511. /package/build/core/physics/items/{center_of_mass.js → CenterOfMass.js} +0 -0
  512. /package/build/core/physics/models/{chassi_forces.js → ChassiForces.js} +0 -0
  513. /package/build/core/physics/models/{old_tare_scale.js → OldTareScale.js} +0 -0
  514. /package/build/core/physics/models/deflection/{deflection_tools.js → DeflectionTools.js} +0 -0
  515. /package/build/core/physics/services/{container_corner_forces.js → ContainerCornerForces.js} +0 -0
  516. /package/build/core/physics/transports/containerweight/{container_max_weight_calculator.js → ContainerMaxWeightCalculator.js} +0 -0
  517. /package/build/core/physics/transports/containerweight/{container_tare_calculator.js → ContainerTareCalculator.js} +0 -0
  518. /package/build/core/physics/transports/containerweight/{merged_containers_weight_calculator.js → MergedContainersWeightCalculator.js} +0 -0
  519. /package/build/core/physics/transports/tare/{bitrem_axle_weight_split.js → BitremAxleWeightSplit.js} +0 -0
@@ -1,74 +0,0 @@
1
- import type { Transport } from '../transports/transport.js'
2
- import { Chassi } from '../transports/chassi.js'
3
- import { CHASSI_REFERENCE } from '../../contracts/chassi_reference.js'
4
- import { CenterOfMass } from '../items/center_of_mass.js'
5
- import { ChassiForces } from './chassi_forces.js'
6
- import { SimpleTruckBase } from './simple_truck_base.js'
7
- import { solve_linear_system } from '../../math/gaussian_elimination.js'
8
-
9
- /**
10
- * Bitruck caminhão: equivalent 2-axle truck + front axle pair split.
11
- */
12
- export class BiTruckModel
13
- {
14
- private readonly chassi: Chassi
15
- readonly equivalent_truck: SimpleTruckBase
16
-
17
- /**
18
- * @param transport - Parsed transport.
19
- */
20
- constructor(transport: Transport)
21
- {
22
- this.chassi = new Chassi(transport)
23
- this.equivalent_truck = new SimpleTruckBase(transport)
24
- this.equivalent_truck.set_axles_positions(get_equivalent_positions(this.chassi, transport))
25
- }
26
-
27
- /**
28
- * @param center_of_mass_by_grouper - CM per grouper.
29
- * @returns Three-axle forces.
30
- */
31
- calculate_chassi_forces_with_load_center_of_mass(
32
- center_of_mass_by_grouper: Record<number, CenterOfMass>
33
- ): ChassiForces
34
- {
35
- const equivalent = this.equivalent_truck
36
- .calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper)
37
- const equivalent_z = this.equivalent_truck.axles_positions[0]
38
- const independent = [
39
- equivalent.get_force_on_axle(0),
40
- equivalent.get_force_on_axle(0) * equivalent_z
41
- ]
42
- const front = solve_linear_system(generate_front_matrix(this.chassi), independent)
43
- const forces = new ChassiForces()
44
- forces.add_axle_forces([front[0], front[1], equivalent.get_force_on_axle(1)])
45
- return forces
46
- }
47
- }
48
-
49
- /**
50
- * @param chassi - Chassis geometry.
51
- * @returns 2×2 front axle matrix.
52
- */
53
- function generate_front_matrix(chassi: Chassi): number[][]
54
- {
55
- const axle_1 = chassi.get_axle_position(0, CHASSI_REFERENCE.GROUPER_1)
56
- const axle_2 = chassi.get_axle_position(1, CHASSI_REFERENCE.GROUPER_1)
57
- return [[1, 1], [axle_1, axle_2]]
58
- }
59
-
60
- /**
61
- * @param chassi - Chassis geometry.
62
- * @param transport - Parsed transport.
63
- * @returns Equivalent two-axle positions.
64
- */
65
- function get_equivalent_positions(chassi: Chassi, transport: Transport): number[]
66
- {
67
- const axle_1 = chassi.get_axle_position(0, CHASSI_REFERENCE.GROUPER_1)
68
- const axle_2 = chassi.get_axle_position(1, CHASSI_REFERENCE.GROUPER_1)
69
- const axle_3 = chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1)
70
- const cap_1 = transport.axle_manager.get_axle(0).max_supported_weight
71
- const cap_2 = transport.axle_manager.get_axle(1).max_supported_weight
72
- const front_equivalent = (axle_1 * cap_1 + axle_2 * cap_2) / (cap_1 + cap_2)
73
- return [front_equivalent, axle_3]
74
- }
@@ -1,86 +0,0 @@
1
- import type { Transport } from '../transports/transport.js'
2
- import { Chassi } from '../transports/chassi.js'
3
- import { CHASSI_REFERENCE } from '../../contracts/chassi_reference.js'
4
- import { CenterOfMass } from '../items/center_of_mass.js'
5
- import { ChassiForces } from './chassi_forces.js'
6
- import { SemiReboqueBase } from './semi_reboque_base.js'
7
- import { solve_linear_system } from '../../math/gaussian_elimination.js'
8
-
9
- /**
10
- * Bitruck tractor + semi-trailer variant.
11
- */
12
- export class BiTruckTractorSemiTrailerModel
13
- {
14
- private readonly chassi: Chassi
15
- readonly equivalent_semi_trailer: SemiReboqueBase
16
-
17
- /**
18
- * @param transport - Parsed transport.
19
- */
20
- constructor(transport: Transport)
21
- {
22
- this.chassi = new Chassi(transport)
23
- this.equivalent_semi_trailer = new SemiReboqueBase(transport)
24
- this.equivalent_semi_trailer.set_linear_system_matrix(
25
- get_equivalent_positions(this.chassi, transport))
26
- }
27
-
28
- /**
29
- * @param center_of_mass_by_grouper - CM per grouper.
30
- * @returns Four-axle + pin forces.
31
- */
32
- calculate_chassi_forces_with_load_center_of_mass(
33
- center_of_mass_by_grouper: Record<number, CenterOfMass>
34
- ): ChassiForces
35
- {
36
- const equivalent = this.equivalent_semi_trailer
37
- .calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper)
38
- const equivalent_z = this.equivalent_semi_trailer.chassi_positions[1]
39
- const independent = [
40
- equivalent.get_force_on_axle(0),
41
- equivalent.get_force_on_axle(0) * equivalent_z
42
- ]
43
- const front = solve_linear_system(generate_tractor_front_matrix(this.chassi), independent)
44
- const forces = new ChassiForces()
45
- forces.add_axle_forces([
46
- front[0],
47
- front[1],
48
- equivalent.get_force_on_axle(1),
49
- equivalent.get_force_on_axle(2)
50
- ])
51
- forces.add_pin_forces([equivalent.get_force_on_pin(0)])
52
- return forces
53
- }
54
- }
55
-
56
- /**
57
- * @param chassi - Chassis geometry.
58
- * @returns 2×2 tractor front matrix.
59
- */
60
- function generate_tractor_front_matrix(chassi: Chassi): number[][]
61
- {
62
- const axle_1 = chassi.get_axle_position(0, CHASSI_REFERENCE.TRACTOR)
63
- const axle_2 = chassi.get_axle_position(1, CHASSI_REFERENCE.TRACTOR)
64
- return [[1, 1], [axle_1, axle_2]]
65
- }
66
-
67
- /**
68
- * @param chassi - Chassis geometry.
69
- * @param transport - Parsed transport.
70
- * @returns Equivalent semi chassis positions.
71
- */
72
- function get_equivalent_positions(chassi: Chassi, transport: Transport): number[]
73
- {
74
- const tractor_pin = chassi.get_pin_position(0, CHASSI_REFERENCE.TRACTOR)
75
- const tractor_axle_1 = chassi.get_axle_position(0, CHASSI_REFERENCE.TRACTOR)
76
- const tractor_axle_2 = chassi.get_axle_position(1, CHASSI_REFERENCE.TRACTOR)
77
- const tractor_axle_3 = chassi.get_axle_position(2, CHASSI_REFERENCE.TRACTOR)
78
- const semi_pin = chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1)
79
- const semi_axle_4 = chassi.get_axle_position(3, CHASSI_REFERENCE.GROUPER_1)
80
- const cap_1 = transport.axle_manager.get_axle(0).max_supported_weight
81
- const cap_2 = transport.axle_manager.get_axle(1).max_supported_weight
82
- const tractor_equivalent = (
83
- tractor_axle_1 * cap_1 + tractor_axle_2 * cap_2
84
- ) / (cap_1 + cap_2)
85
- return [tractor_pin, tractor_equivalent, tractor_axle_3, semi_pin, semi_axle_4]
86
- }
@@ -1,148 +0,0 @@
1
- import type { Transport } from '../transports/transport.js'
2
- import type { MultiContainerAllocatedItems } from '../items/multi_container_allocated_items.js'
3
- import { calculate_chassi_forces_from_multi } from '../items/compute_grouper_center_of_mass.js'
4
- import { Chassi } from '../transports/chassi.js'
5
- import { CHASSI_REFERENCE } from '../../contracts/chassi_reference.js'
6
- import { CenterOfMass } from '../items/center_of_mass.js'
7
- import { ChassiForces } from './chassi_forces.js'
8
- import { solve_linear_system } from '../../math/gaussian_elimination.js'
9
-
10
- /**
11
- * Bitrem interlink + semi static equilibrium (6×6 system).
12
- */
13
- export class BitremModel
14
- {
15
- readonly chassi: Chassi
16
- private readonly matrix: number[][]
17
-
18
- /**
19
- * @param transport - Parsed transport.
20
- */
21
- constructor(private readonly transport: Transport)
22
- {
23
- this.chassi = new Chassi(transport)
24
- this.matrix = generate_bitrem_matrix(this.chassi)
25
- }
26
-
27
- /**
28
- * @param multi_items - Allocated items by container sequence.
29
- * @returns Loaded weight per axle.
30
- */
31
- calculate_weight_on_axles(multi_items: MultiContainerAllocatedItems): number[]
32
- {
33
- const forces = this.calculate_chassi_forces(multi_items)
34
- return forces.list_axles_indexes().map((index) => forces.get_force_on_axle(index))
35
- }
36
-
37
- /**
38
- * @param multi_items - Allocated items.
39
- * @returns Chassis forces before rebalance split on axles 3–4.
40
- */
41
- calculate_chassi_forces(multi_items: MultiContainerAllocatedItems): ChassiForces
42
- {
43
- return calculate_chassi_forces_from_multi(
44
- this.transport,
45
- multi_items,
46
- (center_of_mass_by_grouper) =>
47
- this.calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper))
48
- }
49
-
50
- /**
51
- * @param center_of_mass_by_grouper - CM for groupers 1 and 2.
52
- * @returns Combined chassis forces.
53
- */
54
- calculate_chassi_forces_with_load_center_of_mass(
55
- center_of_mass_by_grouper: Record<number, CenterOfMass>
56
- ): ChassiForces
57
- {
58
- const interlink = center_of_mass_by_grouper[1]
59
- const semi = center_of_mass_by_grouper[2]
60
- const solution_interlink = solve_interlink_system(this.matrix, interlink)
61
- const solution_semi = solve_semi_system(this.matrix, semi)
62
- const forces = new ChassiForces()
63
- forces.add_pin_forces([
64
- solution_interlink[3] + solution_semi[3],
65
- solution_interlink[1] + solution_semi[1]
66
- ])
67
- const loaded = [
68
- solution_interlink[5] + solution_semi[5],
69
- solution_interlink[4] + solution_semi[4],
70
- solution_interlink[2],
71
- solution_semi[2],
72
- solution_interlink[0] + solution_semi[0]
73
- ]
74
- forces.add_axle_forces(linked_axle_weight_rebalance(this.transport, loaded))
75
- return forces
76
- }
77
- }
78
-
79
- /**
80
- * @param chassi - Chassis geometry.
81
- * @returns 6×6 matrix coefficients.
82
- */
83
- function generate_bitrem_matrix(chassi: Chassi): number[][]
84
- {
85
- const tractor_pin = chassi.get_pin_position(0, CHASSI_REFERENCE.TRACTOR)
86
- const tractor_axle_1 = chassi.get_axle_position(0, CHASSI_REFERENCE.TRACTOR)
87
- const tractor_axle_2 = chassi.get_axle_position(1, CHASSI_REFERENCE.TRACTOR)
88
- const interlink_pin_1 = chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1)
89
- const interlink_pin_2 = chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_1)
90
- const interlink_axle_3 = chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1)
91
- const semi_pin_2 = chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_2)
92
- const semi_axle_4 = chassi.get_axle_position(4, CHASSI_REFERENCE.GROUPER_2)
93
- return [
94
- [1, 1, 0, 0, 0, 0],
95
- [semi_axle_4, semi_pin_2, 0, 0, 0, 0],
96
- [0, -1, 1, 1, 0, 0],
97
- [0, -interlink_pin_2, interlink_axle_3, interlink_pin_1, 0, 0],
98
- [0, 0, 0, -1, 1, 1],
99
- [0, 0, 0, -tractor_pin, tractor_axle_2, tractor_axle_1]
100
- ]
101
- }
102
-
103
- /**
104
- * @param matrix - System matrix.
105
- * @param center_of_mass - Interlink load CM.
106
- * @returns Solution vector.
107
- */
108
- function solve_interlink_system(matrix: number[][], center_of_mass: CenterOfMass): number[]
109
- {
110
- const independent = [0, 0, center_of_mass.mass, center_of_mass.mass * center_of_mass.z, 0, 0]
111
- return solve_linear_system(matrix, independent)
112
- }
113
-
114
- /**
115
- * @param matrix - System matrix.
116
- * @param center_of_mass - Semi load CM.
117
- * @returns Solution vector.
118
- */
119
- function solve_semi_system(matrix: number[][], center_of_mass: CenterOfMass): number[]
120
- {
121
- const independent = [
122
- center_of_mass.mass,
123
- center_of_mass.mass * center_of_mass.z,
124
- 0,
125
- 0,
126
- 0,
127
- 0
128
- ]
129
- return solve_linear_system(matrix, independent)
130
- }
131
-
132
- /**
133
- * @param transport - Parsed transport.
134
- * @param loaded_weights - Raw axle loads before rebalance.
135
- * @returns Rebalanced axle 3–4 loads.
136
- */
137
- function linked_axle_weight_rebalance(transport: Transport, loaded_weights: number[]): number[]
138
- {
139
- const first = transport.axle_manager.get_axle(2)
140
- const second = transport.axle_manager.get_axle(3)
141
- const first_cap = first.max_supported_weight - first.tare
142
- const second_cap = second.max_supported_weight - second.tare
143
- const total_cap = first_cap + second_cap
144
- const total_load = loaded_weights[2] + loaded_weights[3]
145
- loaded_weights[2] = (first_cap / total_cap) * total_load
146
- loaded_weights[3] = (second_cap / total_cap) * total_load
147
- return loaded_weights
148
- }
@@ -1,50 +0,0 @@
1
- /**
2
- * Pin and axle reaction forces from static equilibrium solution.
3
- */
4
- export class ChassiForces
5
- {
6
- private pin_forces: number[] = []
7
- private axle_forces: number[] = []
8
-
9
- /**
10
- * @param pin_forces_list - Pin reaction forces.
11
- */
12
- add_pin_forces(pin_forces_list: number[]): void
13
- {
14
- this.pin_forces = pin_forces_list.map((value) => Number(value))
15
- }
16
-
17
- /**
18
- * @param axle_forces_list - Axle reaction forces (cargo load per axle).
19
- */
20
- add_axle_forces(axle_forces_list: number[]): void
21
- {
22
- this.axle_forces = axle_forces_list.map((value) => Number(value))
23
- }
24
-
25
- /**
26
- * @param axle_index - Zero-based axle index.
27
- * @returns Force on axle.
28
- */
29
- get_force_on_axle(axle_index: number): number
30
- {
31
- return this.axle_forces[axle_index]
32
- }
33
-
34
- /**
35
- * @param pin_index - Zero-based pin index.
36
- * @returns Force on pin.
37
- */
38
- get_force_on_pin(pin_index: number): number
39
- {
40
- return this.pin_forces[pin_index]
41
- }
42
-
43
- /**
44
- * @returns Axle index list.
45
- */
46
- list_axles_indexes(): number[]
47
- {
48
- return this.axle_forces.map((_force, index) => index)
49
- }
50
- }
@@ -1,105 +0,0 @@
1
- import type { AllocatedItemManager } from '../../items/allocated_item_manager.js'
2
- import { DeflectionSupportManager } from './deflection_support_manager.js'
3
- import { IntegrationConstantCalculator } from './integration_constant_calculator.js'
4
-
5
- /**
6
- * Cantilever beam deflection curve (DRAGON-76).
7
- */
8
- export class BeamDeflection
9
- {
10
- private readonly support_manager: DeflectionSupportManager
11
- private readonly constant_1: number
12
- private readonly constant_2: number
13
- private readonly external_forces: [number, number][]
14
-
15
- /**
16
- * @param support_data - Support positions and forces.
17
- * @param allocated_item_manager - Load items.
18
- * @param external_forces - Optional external point loads.
19
- */
20
- constructor(
21
- support_data: [number, number][],
22
- private readonly allocated_item_manager: AllocatedItemManager,
23
- external_forces: [number, number][] = []
24
- )
25
- {
26
- this.support_manager = new DeflectionSupportManager(support_data)
27
- this.external_forces = this.support_manager
28
- .add_structural_offset_to_external_forces(external_forces)
29
- const integration = new IntegrationConstantCalculator(
30
- this.support_manager,
31
- this.support_manager.structural_offset)
32
- ;[this.constant_1, this.constant_2] = integration.calculate_integration_constants(
33
- allocated_item_manager)
34
- }
35
-
36
- /**
37
- * @param beam_length - Container beam length.
38
- * @param number_of_curve_samples - Sample count.
39
- * @returns Deflection values along beam.
40
- */
41
- generate_curve_values(beam_length: number, number_of_curve_samples: number): number[]
42
- {
43
- const length = beam_length + this.support_manager.structural_offset
44
- const y_values: number[] = []
45
- for (let index = 0; index < number_of_curve_samples; index++)
46
- {
47
- const x = (length * index) / (number_of_curve_samples - 1)
48
- y_values.push(this.evaluate_at_x(x))
49
- }
50
- return y_values
51
- }
52
-
53
- private evaluate_at_x(x: number): number
54
- {
55
- let value = this.constant_1 * x + this.constant_2
56
- value += this.item_cubic_contribution(x)
57
- value += this.support_cubic_contribution(x)
58
- value += this.external_cubic_contribution(x)
59
- return value
60
- }
61
-
62
- private item_cubic_contribution(x: number): number
63
- {
64
- let value = 0
65
- for (const item_index of this.allocated_item_manager.list_item_indexes())
66
- {
67
- const item = this.allocated_item_manager.get_item(item_index)
68
- const position = item.zi + item.length / 2 + this.support_manager.structural_offset
69
- const displacement = x - position
70
- if (displacement > 0)
71
- {
72
- value += (-item.weight / 6) * displacement ** 3
73
- }
74
- }
75
- return value
76
- }
77
-
78
- private support_cubic_contribution(x: number): number
79
- {
80
- let value = 0
81
- for (const support_index of this.support_manager.list_support_indexes())
82
- {
83
- const displacement = x - this.support_manager.get_position(support_index)
84
- if (displacement > 0)
85
- {
86
- value += (this.support_manager.get_force(support_index) / 6) * displacement ** 3
87
- }
88
- }
89
- return value
90
- }
91
-
92
- private external_cubic_contribution(x: number): number
93
- {
94
- let value = 0
95
- for (const [position, force] of this.external_forces)
96
- {
97
- const displacement = x - position
98
- if (displacement > 0)
99
- {
100
- value += (force / 6) * displacement ** 3
101
- }
102
- }
103
- return value
104
- }
105
- }
@@ -1,68 +0,0 @@
1
- import { CHASSI_REFERENCE } from '../../../contracts/chassi_reference.js'
2
- import type { BitremModel } from '../bitrem_model.js'
3
- import type { ChassiForces } from '../chassi_forces.js'
4
- import type { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js'
5
- import { BeamDeflection } from './beam_deflection.js'
6
- import { calculate_deflection_indicator } from './deflection_tools.js'
7
-
8
- /**
9
- * Bitrem interlink + semi beam deflection (sum of two indicators).
10
- */
11
- export class BitremDeflection
12
- {
13
- /**
14
- * @param bitrem_model - Axle weight model.
15
- * @param number_of_curve_samples - Curve sample count.
16
- */
17
- constructor(
18
- private readonly bitrem_model: BitremModel,
19
- private readonly number_of_curve_samples: number
20
- )
21
- {}
22
-
23
- /**
24
- * @param multi_items - Allocated items.
25
- * @returns Combined deflection indicator.
26
- */
27
- calculate_deflection(multi_items: MultiContainerAllocatedItems): number
28
- {
29
- const forces = this.bitrem_model.calculate_chassi_forces(multi_items)
30
- const interlink = this.interlink_curve(multi_items, forces)
31
- const semi = this.semitrailer_curve(multi_items, forces)
32
- return calculate_deflection_indicator(interlink)
33
- + calculate_deflection_indicator(semi)
34
- }
35
-
36
- private interlink_curve(multi_items: MultiContainerAllocatedItems, forces: ChassiForces): number[]
37
- {
38
- const pin_1 = this.bitrem_model.chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1)
39
- const axle_3 = this.bitrem_model.chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1)
40
- const support: [number, number][] = [
41
- [pin_1, forces.get_force_on_pin(0)],
42
- [axle_3, forces.get_force_on_axle(2) + forces.get_force_on_axle(3)]
43
- ]
44
- const pin_2 = this.bitrem_model.chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_1)
45
- const external: [number, number][] = [[pin_2, -forces.get_force_on_pin(1)]]
46
- const items = multi_items.get_allocated_items_by_grouper_index(1)
47
- const pin_2_pos = pin_2
48
- const length = Math.max(pin_2_pos, axle_3)
49
- return new BeamDeflection(support, items, external).generate_curve_values(
50
- length,
51
- this.number_of_curve_samples)
52
- }
53
-
54
- private semitrailer_curve(multi_items: MultiContainerAllocatedItems, forces: ChassiForces): number[]
55
- {
56
- const pin_2 = this.bitrem_model.chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_2)
57
- const axle_4 = this.bitrem_model.chassi.get_axle_position(4, CHASSI_REFERENCE.GROUPER_2)
58
- const support: [number, number][] = [
59
- [pin_2, forces.get_force_on_pin(1)],
60
- [axle_4, forces.get_force_on_axle(4)]
61
- ]
62
- const items = multi_items.get_allocated_items_by_grouper_index(2)
63
- const length = this.bitrem_model.chassi.get_grouper_end(2, CHASSI_REFERENCE.GROUPER_2)
64
- return new BeamDeflection(support, items).generate_curve_values(
65
- length,
66
- this.number_of_curve_samples)
67
- }
68
- }
@@ -1,46 +0,0 @@
1
- import { VEHICLE_TYPE, type VehicleTypeCode } from '../../../contracts/vehicle_type.js'
2
- import type { Transport } from '../../transports/transport.js'
3
- import { SemiReboqueModel } from '../semi_reboque_model.js'
4
- import { BitremModel } from '../bitrem_model.js'
5
- import { RodotremModel } from '../rodotrem_model.js'
6
- import { VanderleiaModel } from '../vanderleia_model.js'
7
- import { SimpleTruckModel } from '../simple_truck_model.js'
8
- import { SemiReboqueDeflection } from './semi_reboque_deflection.js'
9
- import { BitremDeflection } from './bitrem_deflection.js'
10
- import { RodotremDeflection } from './rodotrem_deflection.js'
11
- import { VanderleiaDeflection } from './vanderleia_deflection.js'
12
- import { SimpleTruckDeflection } from './simple_truck_deflection.js'
13
-
14
- type DeflectionDelegate = {
15
- calculate_deflection: (multi: import('../../items/multi_container_allocated_items.js').MultiContainerAllocatedItems) => number
16
- }
17
-
18
- type DelegateFactory = (transport: Transport, samples: number) => DeflectionDelegate
19
-
20
- const DELEGATE_BY_TYPE: Partial<Record<VehicleTypeCode, DelegateFactory>> = {
21
- [VEHICLE_TYPE.SEMIREBOQUE]: (t, n) => new SemiReboqueDeflection(new SemiReboqueModel(t), n),
22
- [VEHICLE_TYPE.REBAIXADO]: (t, n) => new SemiReboqueDeflection(new SemiReboqueModel(t), n),
23
- [VEHICLE_TYPE.BITREM]: (t, n) => new BitremDeflection(new BitremModel(t), n),
24
- [VEHICLE_TYPE.RODOTREM]: (t, n) => new RodotremDeflection(new RodotremModel(t), n),
25
- [VEHICLE_TYPE.VANDERLEIA]: (t, n) => new VanderleiaDeflection(new VanderleiaModel(t), n),
26
- [VEHICLE_TYPE.CAMINHAO]: (t, n) => new SimpleTruckDeflection(new SimpleTruckModel(t), n),
27
- [VEHICLE_TYPE.VUC]: (t, n) => new SimpleTruckDeflection(new SimpleTruckModel(t), n)
28
- }
29
-
30
- /**
31
- * @param transport - Parsed transport.
32
- * @param number_of_curve_samples - Sample count for deflection curve.
33
- * @returns Vehicle-specific deflection delegate.
34
- */
35
- export function create_deflection_delegate(
36
- transport: Transport,
37
- number_of_curve_samples: number
38
- ): DeflectionDelegate
39
- {
40
- const factory = DELEGATE_BY_TYPE[transport.vehicle_type]
41
- if (!factory)
42
- {
43
- throw new Error('Deflection model of this vehicle is not implemented yet')
44
- }
45
- return factory(transport, number_of_curve_samples)
46
- }
@@ -1,33 +0,0 @@
1
- import type { Transport } from '../../transports/transport.js'
2
- import type { AllocatedItemManager } from '../../items/allocated_item_manager.js'
3
- import { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js'
4
- import { create_deflection_delegate } from './create_deflection_delegate.js'
5
-
6
- type DeflectionDelegate = ReturnType<typeof create_deflection_delegate>
7
-
8
- /**
9
- * Vehicle-specific beam deflection facade (DRAGON-76).
10
- */
11
- export class DeflectionModel
12
- {
13
- private readonly delegate: DeflectionDelegate
14
-
15
- /**
16
- * @param transport - Parsed transport.
17
- * @param number_of_curve_samples - Curve sample count.
18
- */
19
- constructor(transport: Transport, number_of_curve_samples: number)
20
- {
21
- this.delegate = create_deflection_delegate(transport, number_of_curve_samples)
22
- }
23
-
24
- /**
25
- * @param allocated_by_sequence - Items per container sequence.
26
- * @returns Deflection indicator.
27
- */
28
- calculate_deflection(allocated_by_sequence: Record<number, AllocatedItemManager>): number
29
- {
30
- const multi = new MultiContainerAllocatedItems(allocated_by_sequence)
31
- return this.delegate.calculate_deflection(multi)
32
- }
33
- }
@@ -1,56 +0,0 @@
1
- /**
2
- * Ordered support positions and reaction forces for beam deflection.
3
- */
4
- export class DeflectionSupportManager
5
- {
6
- structural_offset = 0
7
- private readonly support_data: [number, number][]
8
-
9
- /**
10
- * @param support_data - [[position, force], ...] sorted by position.
11
- */
12
- constructor(support_data: [number, number][])
13
- {
14
- this.support_data = support_data.map((row) => [...row] as [number, number])
15
- this.evaluate_structural_offset()
16
- }
17
-
18
- list_support_indexes(): number[]
19
- {
20
- return this.support_data.map((_row, index) => index)
21
- }
22
-
23
- get_position(support_index: number): number
24
- {
25
- return this.support_data[support_index][0]
26
- }
27
-
28
- get_force(support_index: number): number
29
- {
30
- return this.support_data[support_index][1]
31
- }
32
-
33
- /**
34
- * @param external_forces - Optional extra point loads.
35
- * @returns Forces with structural offset applied to positions.
36
- */
37
- add_structural_offset_to_external_forces(
38
- external_forces: [number, number][]
39
- ): [number, number][]
40
- {
41
- return external_forces.map(([position, force]) => [
42
- position + this.structural_offset,
43
- force
44
- ])
45
- }
46
-
47
- private evaluate_structural_offset(): void
48
- {
49
- const leftmost = Math.min(...this.support_data.map((row) => row[0]))
50
- this.structural_offset = leftmost < 0 ? -leftmost : 0
51
- for (const row of this.support_data)
52
- {
53
- row[0] += this.structural_offset
54
- }
55
- }
56
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * @param curve_values - Beam deflection samples.
3
- * @returns Scalar deflection indicator.
4
- */
5
- export function calculate_deflection_indicator(curve_values: number[]): number
6
- {
7
- const mean = curve_values.reduce((sum, value) => sum + value, 0) / curve_values.length
8
- const variance = curve_values.reduce((sum, value) => sum + (value - mean) ** 2, 0)
9
- / curve_values.length
10
- return Math.sqrt(variance) + Math.abs(mean)
11
- }