@jetta/axle-load-calculator 0.1.3 → 0.3.1

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 (520) hide show
  1. package/README.md +48 -7
  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/{connector_payload_builder.d.ts → ConnectorPayloadBuilder.d.ts} +1 -1
  27. package/build/core/orchestration/ConnectorPayloadBuilder.d.ts.map +1 -0
  28. package/build/core/orchestration/{connector_payload_builder.js → ConnectorPayloadBuilder.js} +27 -13
  29. package/build/core/orchestration/{java_mass_center.d.ts → JavaMassCenter.d.ts} +2 -2
  30. package/build/core/orchestration/JavaMassCenter.d.ts.map +1 -0
  31. package/build/core/orchestration/{java_mass_center.js → JavaMassCenter.js} +1 -1
  32. package/build/core/orchestration/OutputBuilder.d.ts +7 -0
  33. package/build/core/orchestration/OutputBuilder.d.ts.map +1 -0
  34. package/build/core/orchestration/OutputBuilder.js +7 -0
  35. package/build/core/orchestration/{request_schema.d.ts → RequestSchema.d.ts} +14 -22
  36. package/build/core/orchestration/RequestSchema.d.ts.map +1 -0
  37. package/build/core/orchestration/RequestSchema.js +18 -0
  38. package/build/core/orchestration/WeightByAxisResponse.d.ts +11 -0
  39. package/build/core/orchestration/WeightByAxisResponse.d.ts.map +1 -0
  40. package/build/core/orchestration/WeightByAxisResponse.js +1 -0
  41. package/build/core/orchestration/WeightByAxisTask.d.ts +17 -0
  42. package/build/core/orchestration/WeightByAxisTask.d.ts.map +1 -0
  43. package/build/core/orchestration/{weight_by_axis_task.js → WeightByAxisTask.js} +27 -28
  44. package/build/core/physics/items/{allocated_item.d.ts → AllocatedItem.d.ts} +3 -3
  45. package/build/core/physics/items/AllocatedItem.d.ts.map +1 -0
  46. package/build/core/physics/items/{allocated_item.js → AllocatedItem.js} +1 -1
  47. package/build/core/physics/items/{allocated_item_manager.d.ts → AllocatedItemManager.d.ts} +3 -3
  48. package/build/core/physics/items/AllocatedItemManager.d.ts.map +1 -0
  49. package/build/core/physics/items/BindChassiSolver.d.ts +12 -0
  50. package/build/core/physics/items/BindChassiSolver.d.ts.map +1 -0
  51. package/build/core/physics/items/BindChassiSolver.js +10 -0
  52. package/build/core/physics/items/{center_of_mass.d.ts → CenterOfMass.d.ts} +2 -2
  53. package/build/core/physics/items/CenterOfMass.d.ts.map +1 -0
  54. package/build/core/physics/items/{compute_grouper_center_of_mass.d.ts → ComputeGrouperCenterOfMass.d.ts} +6 -6
  55. package/build/core/physics/items/ComputeGrouperCenterOfMass.d.ts.map +1 -0
  56. package/build/core/physics/items/{compute_grouper_center_of_mass.js → ComputeGrouperCenterOfMass.js} +2 -2
  57. package/build/core/physics/items/{item_templates.d.ts → ItemTemplates.d.ts} +2 -2
  58. package/build/core/physics/items/ItemTemplates.d.ts.map +1 -0
  59. package/build/core/physics/items/{item_templates.js → ItemTemplates.js} +4 -3
  60. package/build/core/physics/items/{multi_container_allocated_items.d.ts → MultiContainerAllocatedItems.d.ts} +4 -4
  61. package/build/core/physics/items/MultiContainerAllocatedItems.d.ts.map +1 -0
  62. package/build/core/physics/items/{multi_container_allocated_items.js → MultiContainerAllocatedItems.js} +2 -2
  63. package/build/core/physics/items/{rotation_transforms.d.ts → RotationTransforms.d.ts} +2 -2
  64. package/build/core/physics/items/RotationTransforms.d.ts.map +1 -0
  65. package/build/core/physics/items/{rotation_transforms.js → RotationTransforms.js} +1 -1
  66. package/build/core/physics/items/UnknownItemIdError.d.ts +10 -0
  67. package/build/core/physics/items/UnknownItemIdError.d.ts.map +1 -0
  68. package/build/core/physics/items/UnknownItemIdError.js +12 -0
  69. package/build/core/physics/models/{axle_weight_model.d.ts → AxleWeightModel.d.ts} +6 -6
  70. package/build/core/physics/models/AxleWeightModel.d.ts.map +1 -0
  71. package/build/core/physics/models/{axle_weight_model.js → AxleWeightModel.js} +11 -10
  72. package/build/core/physics/models/{bi_truck_model.d.ts → BiTruckModel.d.ts} +5 -5
  73. package/build/core/physics/models/BiTruckModel.d.ts.map +1 -0
  74. package/build/core/physics/models/{bi_truck_model.js → BiTruckModel.js} +5 -5
  75. package/build/core/physics/models/{bi_truck_tractor_semi_trailer_model.d.ts → BiTruckTractorSemiTrailerModel.d.ts} +5 -5
  76. package/build/core/physics/models/BiTruckTractorSemiTrailerModel.d.ts.map +1 -0
  77. package/build/core/physics/models/{bi_truck_tractor_semi_trailer_model.js → BiTruckTractorSemiTrailerModel.js} +5 -5
  78. package/build/core/physics/models/{bitrem_model.d.ts → BitremModel.d.ts} +6 -6
  79. package/build/core/physics/models/BitremModel.d.ts.map +1 -0
  80. package/build/core/physics/models/{bitrem_model.js → BitremModel.js} +7 -6
  81. package/build/core/physics/models/{chassi_forces.d.ts → ChassiForces.d.ts} +1 -1
  82. package/build/core/physics/models/ChassiForces.d.ts.map +1 -0
  83. package/build/core/physics/models/{old_tare_model.d.ts → OldTareModel.d.ts} +2 -2
  84. package/build/core/physics/models/OldTareModel.d.ts.map +1 -0
  85. package/build/core/physics/models/{old_tare_model.js → OldTareModel.js} +5 -5
  86. package/build/core/physics/models/{old_tare_scale.d.ts → OldTareScale.d.ts} +1 -1
  87. package/build/core/physics/models/OldTareScale.d.ts.map +1 -0
  88. package/build/core/physics/models/{old_tare_semireboque.d.ts → OldTareSemireboque.d.ts} +2 -2
  89. package/build/core/physics/models/OldTareSemireboque.d.ts.map +1 -0
  90. package/build/core/physics/models/{old_tare_semireboque.js → OldTareSemireboque.js} +2 -2
  91. package/build/core/physics/models/{old_tare_truck.d.ts → OldTareTruck.d.ts} +2 -2
  92. package/build/core/physics/models/OldTareTruck.d.ts.map +1 -0
  93. package/build/core/physics/models/{old_tare_truck.js → OldTareTruck.js} +2 -2
  94. package/build/core/physics/models/{old_tare_vanderleia.d.ts → OldTareVanderleia.d.ts} +2 -2
  95. package/build/core/physics/models/OldTareVanderleia.d.ts.map +1 -0
  96. package/build/core/physics/models/{old_tare_vanderleia.js → OldTareVanderleia.js} +1 -1
  97. package/build/core/physics/models/{percentage_on_axles_calculator.d.ts → PercentageOnAxlesCalculator.d.ts} +2 -2
  98. package/build/core/physics/models/PercentageOnAxlesCalculator.d.ts.map +1 -0
  99. package/build/core/physics/models/{percentage_on_axles_calculator.js → PercentageOnAxlesCalculator.js} +1 -1
  100. package/build/core/physics/models/{quad_semi_trailer_model.d.ts → QuadSemiTrailerModel.d.ts} +5 -5
  101. package/build/core/physics/models/QuadSemiTrailerModel.d.ts.map +1 -0
  102. package/build/core/physics/models/{quad_semi_trailer_model.js → QuadSemiTrailerModel.js} +5 -5
  103. package/build/core/physics/models/{rodotrem_model.d.ts → RodotremModel.d.ts} +6 -6
  104. package/build/core/physics/models/RodotremModel.d.ts.map +1 -0
  105. package/build/core/physics/models/{rodotrem_model.js → RodotremModel.js} +7 -6
  106. package/build/core/physics/models/SemiDelegate.d.ts +9 -0
  107. package/build/core/physics/models/SemiDelegate.d.ts.map +1 -0
  108. package/build/core/physics/models/SemiDelegate.js +1 -0
  109. package/build/core/physics/models/{semi_reboque_base.d.ts → SemiReboqueBase.d.ts} +4 -4
  110. package/build/core/physics/models/SemiReboqueBase.d.ts.map +1 -0
  111. package/build/core/physics/models/{semi_reboque_base.js → SemiReboqueBase.js} +4 -4
  112. package/build/core/physics/models/{semi_reboque_model.d.ts → SemiReboqueModel.d.ts} +5 -5
  113. package/build/core/physics/models/SemiReboqueModel.d.ts.map +1 -0
  114. package/build/core/physics/models/{semi_reboque_model.js → SemiReboqueModel.js} +8 -7
  115. package/build/core/physics/models/{simple_truck_base.d.ts → SimpleTruckBase.d.ts} +4 -4
  116. package/build/core/physics/models/SimpleTruckBase.d.ts.map +1 -0
  117. package/build/core/physics/models/{simple_truck_base.js → SimpleTruckBase.js} +3 -3
  118. package/build/core/physics/models/{simple_truck_model.d.ts → SimpleTruckModel.d.ts} +5 -5
  119. package/build/core/physics/models/SimpleTruckModel.d.ts.map +1 -0
  120. package/build/core/physics/models/{simple_truck_model.js → SimpleTruckModel.js} +7 -6
  121. package/build/core/physics/models/{single_container_tare.d.ts → SingleContainerTare.d.ts} +2 -2
  122. package/build/core/physics/models/SingleContainerTare.d.ts.map +1 -0
  123. package/build/core/physics/models/{single_container_tare.js → SingleContainerTare.js} +2 -2
  124. package/build/core/physics/models/{tare_model.d.ts → TareModel.d.ts} +2 -2
  125. package/build/core/physics/models/TareModel.d.ts.map +1 -0
  126. package/build/core/physics/models/{tare_model.js → TareModel.js} +3 -3
  127. package/build/core/physics/models/TruckDelegate.d.ts +9 -0
  128. package/build/core/physics/models/TruckDelegate.d.ts.map +1 -0
  129. package/build/core/physics/models/TruckDelegate.js +1 -0
  130. package/build/core/physics/models/UnrecognizedSuspensionTypeError.d.ts +10 -0
  131. package/build/core/physics/models/UnrecognizedSuspensionTypeError.d.ts.map +1 -0
  132. package/build/core/physics/models/UnrecognizedSuspensionTypeError.js +12 -0
  133. package/build/core/physics/models/UnsupportedVehicleTypeError.d.ts +10 -0
  134. package/build/core/physics/models/UnsupportedVehicleTypeError.d.ts.map +1 -0
  135. package/build/core/physics/models/UnsupportedVehicleTypeError.js +12 -0
  136. package/build/core/physics/models/{vanderleia_model.d.ts → VanderleiaModel.d.ts} +6 -6
  137. package/build/core/physics/models/VanderleiaModel.d.ts.map +1 -0
  138. package/build/core/physics/models/{vanderleia_model.js → VanderleiaModel.js} +10 -8
  139. package/build/core/physics/models/VehicleModel.d.ts +11 -0
  140. package/build/core/physics/models/VehicleModel.d.ts.map +1 -0
  141. package/build/core/physics/models/VehicleModel.js +1 -0
  142. package/build/core/physics/models/deflection/{beam_deflection.d.ts → BeamDeflection.d.ts} +2 -2
  143. package/build/core/physics/models/deflection/BeamDeflection.d.ts.map +1 -0
  144. package/build/core/physics/models/deflection/{beam_deflection.js → BeamDeflection.js} +2 -2
  145. package/build/core/physics/models/deflection/{bitrem_deflection.d.ts → BitremDeflection.d.ts} +3 -3
  146. package/build/core/physics/models/deflection/BitremDeflection.d.ts.map +1 -0
  147. package/build/core/physics/models/deflection/{bitrem_deflection.js → BitremDeflection.js} +3 -3
  148. package/build/core/physics/models/deflection/{create_deflection_delegate.d.ts → CreateDeflectionDelegate.d.ts} +3 -6
  149. package/build/core/physics/models/deflection/CreateDeflectionDelegate.d.ts.map +1 -0
  150. package/build/core/physics/models/deflection/CreateDeflectionDelegate.js +24 -0
  151. package/build/core/physics/models/deflection/DeflectionDelegate.d.ts +8 -0
  152. package/build/core/physics/models/deflection/DeflectionDelegate.d.ts.map +1 -0
  153. package/build/core/physics/models/deflection/DeflectionDelegate.js +1 -0
  154. package/build/core/physics/models/deflection/DeflectionDelegateFactories.d.ts +36 -0
  155. package/build/core/physics/models/deflection/DeflectionDelegateFactories.d.ts.map +1 -0
  156. package/build/core/physics/models/deflection/DeflectionDelegateFactories.js +51 -0
  157. package/build/core/physics/models/deflection/{deflection_model.d.ts → DeflectionModel.d.ts} +3 -3
  158. package/build/core/physics/models/deflection/DeflectionModel.d.ts.map +1 -0
  159. package/build/core/physics/models/deflection/{deflection_model.js → DeflectionModel.js} +2 -2
  160. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts +9 -0
  161. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts.map +1 -0
  162. package/build/core/physics/models/deflection/DeflectionModelNotImplementedError.js +11 -0
  163. package/build/core/physics/models/deflection/{deflection_support_manager.d.ts → DeflectionSupportManager.d.ts} +15 -1
  164. package/build/core/physics/models/deflection/DeflectionSupportManager.d.ts.map +1 -0
  165. package/build/core/physics/models/deflection/{deflection_support_manager.js → DeflectionSupportManager.js} +14 -0
  166. package/build/core/physics/models/deflection/{deflection_tools.d.ts → DeflectionTools.d.ts} +1 -1
  167. package/build/core/physics/models/deflection/DeflectionTools.d.ts.map +1 -0
  168. package/build/core/physics/models/deflection/DelegateFactory.d.ts +12 -0
  169. package/build/core/physics/models/deflection/DelegateFactory.d.ts.map +1 -0
  170. package/build/core/physics/models/deflection/DelegateFactory.js +1 -0
  171. package/build/core/physics/models/deflection/{integration_constant_calculator.d.ts → IntegrationConstantCalculator.d.ts} +6 -3
  172. package/build/core/physics/models/deflection/IntegrationConstantCalculator.d.ts.map +1 -0
  173. package/build/core/physics/models/deflection/{integration_constant_calculator.js → IntegrationConstantCalculator.js} +4 -1
  174. package/build/core/physics/models/deflection/{rodotrem_deflection.d.ts → RodotremDeflection.d.ts} +3 -3
  175. package/build/core/physics/models/deflection/RodotremDeflection.d.ts.map +1 -0
  176. package/build/core/physics/models/deflection/{rodotrem_deflection.js → RodotremDeflection.js} +3 -3
  177. package/build/core/physics/models/deflection/{semi_reboque_deflection.d.ts → SemiReboqueDeflection.d.ts} +3 -3
  178. package/build/core/physics/models/deflection/SemiReboqueDeflection.d.ts.map +1 -0
  179. package/build/core/physics/models/deflection/{semi_reboque_deflection.js → SemiReboqueDeflection.js} +2 -2
  180. package/build/core/physics/models/deflection/{simple_truck_deflection.d.ts → SimpleTruckDeflection.d.ts} +3 -3
  181. package/build/core/physics/models/deflection/SimpleTruckDeflection.d.ts.map +1 -0
  182. package/build/core/physics/models/deflection/{simple_truck_deflection.js → SimpleTruckDeflection.js} +2 -2
  183. package/build/core/physics/models/deflection/{vanderleia_deflection.d.ts → VanderleiaDeflection.d.ts} +3 -3
  184. package/build/core/physics/models/deflection/VanderleiaDeflection.d.ts.map +1 -0
  185. package/build/core/physics/models/deflection/{vanderleia_deflection.js → VanderleiaDeflection.js} +3 -3
  186. package/build/core/physics/services/{axle_weight_output_builder.d.ts → AxleWeightOutputBuilder.d.ts} +4 -4
  187. package/build/core/physics/services/AxleWeightOutputBuilder.d.ts.map +1 -0
  188. package/build/core/physics/services/{axle_weight_output_builder.js → AxleWeightOutputBuilder.js} +2 -2
  189. package/build/core/physics/services/{axle_weight_service.d.ts → AxleWeightService.d.ts} +1 -1
  190. package/build/core/physics/services/AxleWeightService.d.ts.map +1 -0
  191. package/build/core/physics/services/{axle_weight_service.js → AxleWeightService.js} +6 -6
  192. package/build/core/physics/services/{cm_axle_weight_service.d.ts → CmAxleWeightService.d.ts} +2 -2
  193. package/build/core/physics/services/CmAxleWeightService.d.ts.map +1 -0
  194. package/build/core/physics/services/{cm_axle_weight_service.js → CmAxleWeightService.js} +3 -3
  195. package/build/core/physics/services/{container_corner_forces.d.ts → ContainerCornerForces.d.ts} +1 -1
  196. package/build/core/physics/services/ContainerCornerForces.d.ts.map +1 -0
  197. package/build/core/physics/transports/{axle_manager.d.ts → AxleManager.d.ts} +3 -3
  198. package/build/core/physics/transports/AxleManager.d.ts.map +1 -0
  199. package/build/core/physics/transports/{axle_manager.js → AxleManager.js} +2 -2
  200. package/build/core/physics/transports/{axle_record.d.ts → AxleRecord.d.ts} +1 -1
  201. package/build/core/physics/transports/AxleRecord.d.ts.map +1 -0
  202. package/build/core/physics/transports/{axle_record.js → AxleRecord.js} +1 -1
  203. package/build/core/physics/transports/{chassi.d.ts → Chassi.d.ts} +3 -3
  204. package/build/core/physics/transports/{chassi.d.ts.map → Chassi.d.ts.map} +1 -1
  205. package/build/core/physics/transports/{chassi.js → Chassi.js} +2 -2
  206. package/build/core/physics/transports/{container_record.d.ts → ContainerRecord.d.ts} +1 -1
  207. package/build/core/physics/transports/ContainerRecord.d.ts.map +1 -0
  208. package/build/core/physics/transports/{container_record.js → ContainerRecord.js} +1 -1
  209. package/build/core/physics/transports/ContainerSequenceNotFoundError.d.ts +10 -0
  210. package/build/core/physics/transports/ContainerSequenceNotFoundError.d.ts.map +1 -0
  211. package/build/core/physics/transports/ContainerSequenceNotFoundError.js +12 -0
  212. package/build/core/physics/transports/{grouped_containers.d.ts → GroupedContainers.d.ts} +2 -2
  213. package/build/core/physics/transports/GroupedContainers.d.ts.map +1 -0
  214. package/build/core/physics/transports/{grouped_containers.js → GroupedContainers.js} +3 -2
  215. package/build/core/physics/transports/GrouperNotFoundError.d.ts +10 -0
  216. package/build/core/physics/transports/GrouperNotFoundError.d.ts.map +1 -0
  217. package/build/core/physics/transports/GrouperNotFoundError.js +12 -0
  218. package/build/core/physics/transports/{merged_containers.d.ts → MergedContainers.d.ts} +3 -3
  219. package/build/core/physics/transports/MergedContainers.d.ts.map +1 -0
  220. package/build/core/physics/transports/{merged_containers.js → MergedContainers.js} +3 -2
  221. package/build/core/physics/transports/MissingContainerError.d.ts +10 -0
  222. package/build/core/physics/transports/MissingContainerError.d.ts.map +1 -0
  223. package/build/core/physics/transports/MissingContainerError.js +12 -0
  224. package/build/core/physics/transports/{transport.d.ts → Transport.d.ts} +5 -5
  225. package/build/core/physics/transports/Transport.d.ts.map +1 -0
  226. package/build/core/physics/transports/{transport.js → Transport.js} +7 -6
  227. package/build/core/physics/transports/containerweight/{container_max_weight_calculator.d.ts → ContainerMaxWeightCalculator.d.ts} +3 -9
  228. package/build/core/physics/transports/containerweight/ContainerMaxWeightCalculator.d.ts.map +1 -0
  229. package/build/core/physics/transports/containerweight/{container_tare_calculator.d.ts → ContainerTareCalculator.d.ts} +3 -3
  230. package/build/core/physics/transports/containerweight/ContainerTareCalculator.d.ts.map +1 -0
  231. package/build/core/physics/transports/containerweight/{container_weight_model.d.ts → ContainerWeightModel.d.ts} +2 -2
  232. package/build/core/physics/transports/containerweight/ContainerWeightModel.d.ts.map +1 -0
  233. package/build/core/physics/transports/containerweight/{container_weight_model.js → ContainerWeightModel.js} +3 -3
  234. package/build/core/physics/transports/containerweight/MaxWeightInput.d.ts +10 -0
  235. package/build/core/physics/transports/containerweight/MaxWeightInput.d.ts.map +1 -0
  236. package/build/core/physics/transports/containerweight/MaxWeightInput.js +1 -0
  237. package/build/core/physics/transports/containerweight/{merged_containers_weight_calculator.d.ts → MergedContainersWeightCalculator.d.ts} +3 -3
  238. package/build/core/physics/transports/containerweight/MergedContainersWeightCalculator.d.ts.map +1 -0
  239. package/build/core/physics/transports/containerweight/{single_container_weight_calculator.d.ts → SingleContainerWeightCalculator.d.ts} +3 -3
  240. package/build/core/physics/transports/containerweight/SingleContainerWeightCalculator.d.ts.map +1 -0
  241. package/build/core/physics/transports/containerweight/{single_container_weight_calculator.js → SingleContainerWeightCalculator.js} +2 -2
  242. package/build/core/physics/transports/tare/BitremAxleSplit.d.ts +8 -0
  243. package/build/core/physics/transports/tare/BitremAxleSplit.d.ts.map +1 -0
  244. package/build/core/physics/transports/tare/BitremAxleSplit.js +1 -0
  245. package/build/core/physics/transports/tare/BitremAxleSplitTarget.d.ts +12 -0
  246. package/build/core/physics/transports/tare/BitremAxleSplitTarget.d.ts.map +1 -0
  247. package/build/core/physics/transports/tare/BitremAxleSplitTarget.js +1 -0
  248. package/build/core/physics/transports/tare/{bitrem_axle_splitter.d.ts → BitremAxleSplitter.d.ts} +3 -3
  249. package/build/core/physics/transports/tare/BitremAxleSplitter.d.ts.map +1 -0
  250. package/build/core/physics/transports/tare/{bitrem_axle_splitter.js → BitremAxleSplitter.js} +5 -5
  251. package/build/core/physics/transports/tare/{bitrem_axle_weight_split.d.ts → BitremAxleWeightSplit.d.ts} +3 -12
  252. package/build/core/physics/transports/tare/BitremAxleWeightSplit.d.ts.map +1 -0
  253. package/build/index.d.ts +19 -4
  254. package/build/index.d.ts.map +1 -1
  255. package/build/index.js +18 -6
  256. package/package.json +4 -4
  257. package/.cursor/ai_changelog/INDEX.md +0 -13
  258. package/.cursor/ai_changelog/_TEMPLATE.md +0 -55
  259. package/.cursor/rules/code-standards.mdc +0 -103
  260. package/.cursor/rules/knowledge-base.mdc +0 -14
  261. package/.cursor/rules/planning-standards.mdc +0 -55
  262. package/.cursor/skills/document-feature-knowledge/SKILL.md +0 -51
  263. package/bitbucket-pipelines.yml +0 -81
  264. package/build/core/contracts/chassi_reference.d.ts.map +0 -1
  265. package/build/core/contracts/ms_faixas_contract.d.ts.map +0 -1
  266. package/build/core/contracts/rotation_enum.d.ts.map +0 -1
  267. package/build/core/contracts/suspension_type.d.ts.map +0 -1
  268. package/build/core/contracts/transport_record.d.ts.map +0 -1
  269. package/build/core/contracts/vehicle_type.d.ts.map +0 -1
  270. package/build/core/contracts/vehicle_version.d.ts.map +0 -1
  271. package/build/core/contracts/wire_flags.d.ts.map +0 -1
  272. package/build/core/math/float_tools.d.ts.map +0 -1
  273. package/build/core/math/gaussian_elimination.d.ts.map +0 -1
  274. package/build/core/orchestration/axle_weight_physics.d.ts.map +0 -1
  275. package/build/core/orchestration/collision_checker.d.ts +0 -6
  276. package/build/core/orchestration/collision_checker.d.ts.map +0 -1
  277. package/build/core/orchestration/collision_checker.js +0 -67
  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 +0 -11
  281. package/build/core/orchestration/output_builder.d.ts.map +0 -1
  282. package/build/core/orchestration/output_builder.js +0 -15
  283. package/build/core/orchestration/request_schema.d.ts.map +0 -1
  284. package/build/core/orchestration/request_schema.js +0 -20
  285. package/build/core/orchestration/weight_by_axis_task.d.ts +0 -7
  286. package/build/core/orchestration/weight_by_axis_task.d.ts.map +0 -1
  287. package/build/core/physics/items/allocated_item.d.ts.map +0 -1
  288. package/build/core/physics/items/allocated_item_manager.d.ts.map +0 -1
  289. package/build/core/physics/items/center_of_mass.d.ts.map +0 -1
  290. package/build/core/physics/items/compute_grouper_center_of_mass.d.ts.map +0 -1
  291. package/build/core/physics/items/item_templates.d.ts.map +0 -1
  292. package/build/core/physics/items/multi_container_allocated_items.d.ts.map +0 -1
  293. package/build/core/physics/items/rotation_transforms.d.ts.map +0 -1
  294. package/build/core/physics/models/axle_weight_model.d.ts.map +0 -1
  295. package/build/core/physics/models/bi_truck_model.d.ts.map +0 -1
  296. package/build/core/physics/models/bi_truck_tractor_semi_trailer_model.d.ts.map +0 -1
  297. package/build/core/physics/models/bitrem_model.d.ts.map +0 -1
  298. package/build/core/physics/models/chassi_forces.d.ts.map +0 -1
  299. package/build/core/physics/models/deflection/beam_deflection.d.ts.map +0 -1
  300. package/build/core/physics/models/deflection/bitrem_deflection.d.ts.map +0 -1
  301. package/build/core/physics/models/deflection/create_deflection_delegate.d.ts.map +0 -1
  302. package/build/core/physics/models/deflection/create_deflection_delegate.js +0 -32
  303. package/build/core/physics/models/deflection/deflection_model.d.ts.map +0 -1
  304. package/build/core/physics/models/deflection/deflection_support_manager.d.ts.map +0 -1
  305. package/build/core/physics/models/deflection/deflection_tools.d.ts.map +0 -1
  306. package/build/core/physics/models/deflection/integration_constant_calculator.d.ts.map +0 -1
  307. package/build/core/physics/models/deflection/rodotrem_deflection.d.ts.map +0 -1
  308. package/build/core/physics/models/deflection/semi_reboque_deflection.d.ts.map +0 -1
  309. package/build/core/physics/models/deflection/simple_truck_deflection.d.ts.map +0 -1
  310. package/build/core/physics/models/deflection/vanderleia_deflection.d.ts.map +0 -1
  311. package/build/core/physics/models/old_tare_model.d.ts.map +0 -1
  312. package/build/core/physics/models/old_tare_scale.d.ts.map +0 -1
  313. package/build/core/physics/models/old_tare_semireboque.d.ts.map +0 -1
  314. package/build/core/physics/models/old_tare_truck.d.ts.map +0 -1
  315. package/build/core/physics/models/old_tare_vanderleia.d.ts.map +0 -1
  316. package/build/core/physics/models/percentage_on_axles_calculator.d.ts.map +0 -1
  317. package/build/core/physics/models/quad_semi_trailer_model.d.ts.map +0 -1
  318. package/build/core/physics/models/rodotrem_model.d.ts.map +0 -1
  319. package/build/core/physics/models/semi_reboque_base.d.ts.map +0 -1
  320. package/build/core/physics/models/semi_reboque_model.d.ts.map +0 -1
  321. package/build/core/physics/models/simple_truck_base.d.ts.map +0 -1
  322. package/build/core/physics/models/simple_truck_model.d.ts.map +0 -1
  323. package/build/core/physics/models/single_container_tare.d.ts.map +0 -1
  324. package/build/core/physics/models/tare_model.d.ts.map +0 -1
  325. package/build/core/physics/models/vanderleia_model.d.ts.map +0 -1
  326. package/build/core/physics/services/axle_weight_output_builder.d.ts.map +0 -1
  327. package/build/core/physics/services/axle_weight_service.d.ts.map +0 -1
  328. package/build/core/physics/services/cm_axle_weight_service.d.ts.map +0 -1
  329. package/build/core/physics/services/container_corner_forces.d.ts.map +0 -1
  330. package/build/core/physics/transports/axle_manager.d.ts.map +0 -1
  331. package/build/core/physics/transports/axle_record.d.ts.map +0 -1
  332. package/build/core/physics/transports/container_record.d.ts.map +0 -1
  333. package/build/core/physics/transports/containerweight/container_max_weight_calculator.d.ts.map +0 -1
  334. package/build/core/physics/transports/containerweight/container_tare_calculator.d.ts.map +0 -1
  335. package/build/core/physics/transports/containerweight/container_weight_model.d.ts.map +0 -1
  336. package/build/core/physics/transports/containerweight/merged_containers_weight_calculator.d.ts.map +0 -1
  337. package/build/core/physics/transports/containerweight/single_container_weight_calculator.d.ts.map +0 -1
  338. package/build/core/physics/transports/grouped_containers.d.ts.map +0 -1
  339. package/build/core/physics/transports/merged_containers.d.ts.map +0 -1
  340. package/build/core/physics/transports/tare/bitrem_axle_splitter.d.ts.map +0 -1
  341. package/build/core/physics/transports/tare/bitrem_axle_weight_split.d.ts.map +0 -1
  342. package/build/core/physics/transports/transport.d.ts.map +0 -1
  343. package/eslint.config.js +0 -51
  344. package/src/core/contracts/chassi_reference.ts +0 -7
  345. package/src/core/contracts/ms_faixas_contract.ts +0 -114
  346. package/src/core/contracts/rotation_enum.ts +0 -11
  347. package/src/core/contracts/suspension_type.ts +0 -4
  348. package/src/core/contracts/transport_record.ts +0 -4
  349. package/src/core/contracts/vehicle_type.ts +0 -12
  350. package/src/core/contracts/vehicle_version.ts +0 -7
  351. package/src/core/contracts/wire_flags.ts +0 -26
  352. package/src/core/math/float_tools.ts +0 -17
  353. package/src/core/math/gaussian_elimination.ts +0 -104
  354. package/src/core/orchestration/axle_weight_physics.ts +0 -37
  355. package/src/core/orchestration/collision_checker.ts +0 -86
  356. package/src/core/orchestration/connector_payload_builder.ts +0 -81
  357. package/src/core/orchestration/java_mass_center.ts +0 -98
  358. package/src/core/orchestration/output_builder.ts +0 -18
  359. package/src/core/orchestration/request_schema.ts +0 -26
  360. package/src/core/orchestration/weight_by_axis_task.ts +0 -140
  361. package/src/core/physics/items/allocated_item.ts +0 -41
  362. package/src/core/physics/items/allocated_item_manager.ts +0 -50
  363. package/src/core/physics/items/center_of_mass.ts +0 -31
  364. package/src/core/physics/items/compute_grouper_center_of_mass.ts +0 -44
  365. package/src/core/physics/items/item_templates.ts +0 -65
  366. package/src/core/physics/items/multi_container_allocated_items.ts +0 -120
  367. package/src/core/physics/items/rotation_transforms.ts +0 -29
  368. package/src/core/physics/models/axle_weight_model.ts +0 -109
  369. package/src/core/physics/models/bi_truck_model.ts +0 -74
  370. package/src/core/physics/models/bi_truck_tractor_semi_trailer_model.ts +0 -86
  371. package/src/core/physics/models/bitrem_model.ts +0 -148
  372. package/src/core/physics/models/chassi_forces.ts +0 -50
  373. package/src/core/physics/models/deflection/beam_deflection.ts +0 -105
  374. package/src/core/physics/models/deflection/bitrem_deflection.ts +0 -68
  375. package/src/core/physics/models/deflection/create_deflection_delegate.ts +0 -46
  376. package/src/core/physics/models/deflection/deflection_model.ts +0 -33
  377. package/src/core/physics/models/deflection/deflection_support_manager.ts +0 -56
  378. package/src/core/physics/models/deflection/deflection_tools.ts +0 -11
  379. package/src/core/physics/models/deflection/integration_constant_calculator.ts +0 -62
  380. package/src/core/physics/models/deflection/rodotrem_deflection.ts +0 -57
  381. package/src/core/physics/models/deflection/semi_reboque_deflection.ts +0 -40
  382. package/src/core/physics/models/deflection/simple_truck_deflection.ts +0 -35
  383. package/src/core/physics/models/deflection/vanderleia_deflection.ts +0 -48
  384. package/src/core/physics/models/old_tare_model.ts +0 -51
  385. package/src/core/physics/models/old_tare_scale.ts +0 -9
  386. package/src/core/physics/models/old_tare_semireboque.ts +0 -51
  387. package/src/core/physics/models/old_tare_truck.ts +0 -15
  388. package/src/core/physics/models/old_tare_vanderleia.ts +0 -44
  389. package/src/core/physics/models/percentage_on_axles_calculator.ts +0 -49
  390. package/src/core/physics/models/quad_semi_trailer_model.ts +0 -87
  391. package/src/core/physics/models/rodotrem_model.ts +0 -131
  392. package/src/core/physics/models/semi_reboque_base.ts +0 -103
  393. package/src/core/physics/models/semi_reboque_model.ts +0 -127
  394. package/src/core/physics/models/simple_truck_base.ts +0 -70
  395. package/src/core/physics/models/simple_truck_model.ts +0 -115
  396. package/src/core/physics/models/single_container_tare.ts +0 -56
  397. package/src/core/physics/models/tare_model.ts +0 -46
  398. package/src/core/physics/models/vanderleia_model.ts +0 -125
  399. package/src/core/physics/services/axle_weight_output_builder.ts +0 -63
  400. package/src/core/physics/services/axle_weight_service.ts +0 -116
  401. package/src/core/physics/services/cm_axle_weight_service.ts +0 -45
  402. package/src/core/physics/services/container_corner_forces.ts +0 -95
  403. package/src/core/physics/transports/axle_manager.ts +0 -45
  404. package/src/core/physics/transports/axle_record.ts +0 -68
  405. package/src/core/physics/transports/chassi.ts +0 -130
  406. package/src/core/physics/transports/container_record.ts +0 -58
  407. package/src/core/physics/transports/containerweight/container_max_weight_calculator.ts +0 -59
  408. package/src/core/physics/transports/containerweight/container_tare_calculator.ts +0 -76
  409. package/src/core/physics/transports/containerweight/container_weight_model.ts +0 -38
  410. package/src/core/physics/transports/containerweight/merged_containers_weight_calculator.ts +0 -39
  411. package/src/core/physics/transports/containerweight/single_container_weight_calculator.ts +0 -65
  412. package/src/core/physics/transports/grouped_containers.ts +0 -91
  413. package/src/core/physics/transports/merged_containers.ts +0 -62
  414. package/src/core/physics/transports/tare/bitrem_axle_splitter.ts +0 -107
  415. package/src/core/physics/transports/tare/bitrem_axle_weight_split.ts +0 -55
  416. package/src/core/physics/transports/transport.ts +0 -137
  417. package/src/index.ts +0 -12
  418. package/src/service/.gitkeep +0 -0
  419. package/test/data/src/core/orchestration/weight_by_axis/case_1_basic_truck_input.json +0 -1759
  420. package/test/data/src/core/orchestration/weight_by_axis/case_2_vanderleia_input.json +0 -1286
  421. package/test/data/src/core/orchestration/weight_by_axis/case_3_interlink_input.json +0 -2226
  422. package/test/data/src/core/orchestration/weight_by_axis/case_4_quad_semi_trailer.json +0 -639
  423. package/test/data/src/core/orchestration/weight_by_axis/case_5_custom_center_of_gravity.json +0 -557
  424. package/test/data/src/core/physics/axle_weight_calculations/case_2_bitruck.json +0 -664
  425. package/test/data/src/core/physics/axle_weight_calculations/case_4_quad_semi_trailer.json +0 -674
  426. package/test/data/src/core/physics/axle_weight_calculations/case_5_bi_truck_semi_trailer.json +0 -674
  427. package/test/data/src/core/physics/axle_weight_service/case_1_input_truck.json +0 -1025
  428. package/test/data/src/core/physics/axle_weight_service/case_1_output_truck.json +0 -38
  429. package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_input.json +0 -1286
  430. package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_output.json +0 -65
  431. package/test/data/src/core/physics/axle_weight_service/case_3_input_semireboque.json +0 -24625
  432. package/test/data/src/core/physics/axle_weight_service/case_3_output_semireboque.json +0 -57
  433. package/test/data/src/core/physics/axle_weight_service/case_4_input_bitrem.json +0 -2226
  434. package/test/data/src/core/physics/axle_weight_service/case_4_output_bitrem.json +0 -96
  435. package/test/data/src/core/physics/beam_deflection/case_10_rodotrem_offset.json +0 -474
  436. package/test/data/src/core/physics/beam_deflection/case_11_bitruck.json +0 -664
  437. package/test/data/src/core/physics/beam_deflection/case_12_quad_semi_trailer.json +0 -792
  438. package/test/data/src/core/physics/beam_deflection/case_13_bi_truck_semi_trailer.json +0 -792
  439. package/test/data/src/core/physics/beam_deflection/case_1_documentation.ipynb +0 -316
  440. package/test/data/src/core/physics/beam_deflection/case_1_semireboque.json +0 -402
  441. package/test/data/src/core/physics/beam_deflection/case_2_bitrem.json +0 -434
  442. package/test/data/src/core/physics/beam_deflection/case_3_rodotrem.json +0 -474
  443. package/test/data/src/core/physics/beam_deflection/case_4_vanderleia_pneumatica.json +0 -425
  444. package/test/data/src/core/physics/beam_deflection/case_5_vanderleia_mecanica.json +0 -366
  445. package/test/data/src/core/physics/beam_deflection/case_6_truck.json +0 -279
  446. package/test/data/src/core/physics/beam_deflection/case_7_semireboque_structural_offset.json +0 -318
  447. package/test/data/src/core/physics/beam_deflection/case_8_vanderleia_offset.json +0 -425
  448. package/test/data/src/core/physics/beam_deflection/case_9_bitrem_offset.json +0 -434
  449. package/test/data/src/core/physics/bitrem_axle_splitter/case_1_simple_bitrem.json +0 -145
  450. package/test/data/src/core/physics/bitrem_axle_splitter/case_2_lowered_bitrem.json +0 -238
  451. package/test/data/src/core/physics/bitrem_axle_splitter/case_3_lowered_positive_proportion.json +0 -238
  452. package/test/data/src/core/physics/c_m_axle_weight_service/case_1_interlink_trailer.json +0 -94
  453. package/test/data/src/core/physics/calculations/case_1_simple_truck.json +0 -83
  454. package/test/data/src/core/physics/calculations/case_2_lowered_bitrem.json +0 -1051
  455. package/test/data/src/core/physics/calculations/case_3_container_mercedes.json +0 -50
  456. package/test/data/src/core/physics/container_corner_forces/case_1.json +0 -674
  457. package/test/data/src/core/physics/container_weight/case_1_basictruck.json +0 -223
  458. package/test/data/src/core/physics/container_weight/case_2_roadtrain.json +0 -277
  459. package/test/data/src/core/physics/container_weight/case_3_semireboque_rebaixado.json +0 -197
  460. package/test/data/src/core/physics/container_weight/case_4_semireboque_neck_limit.json +0 -197
  461. package/test/data/src/core/physics/container_weight/case_5_vanderleia_rebaixada.json +0 -211
  462. package/test/data/src/core/physics/container_weight/case_6_lowered_interlink.json +0 -230
  463. package/test/data/src/core/physics/python_goldens.json +0 -9
  464. package/test/data/src/core/physics/tare/case_1_simple_vanderleia.json +0 -185
  465. package/test/data/src/core/physics/tare/case_2_lowered_vanderleia.json +0 -646
  466. package/test/data/src/core/physics/tare/case_3_lowered_interlink.json +0 -230
  467. package/test/data/src/core/physics/tare/case_4_negative_tare_VUC.json +0 -483
  468. package/test/data/src/core/physics/tare/case_5_truck_bitruck.json +0 -664
  469. package/test/data/src/core/physics/tare/case_6_quad_semi_trailer.json +0 -203
  470. package/test/data/src/core/physics/tare/case_7_bi_truck_semi_trailer.json +0 -203
  471. package/test/data/src/core/physics/tare/case_8_triaxle_semi_trailer.json +0 -203
  472. package/test/data/src/core/physics/time_performance/case_1_center_of_mass.json +0 -2916
  473. package/test/data/src/core/physics/trucks/bitrem.json +0 -150
  474. package/test/data/src/core/physics/trucks/lowered_bitrem.json +0 -1216
  475. package/test/data/src/core/physics/trucks/lowered_bitrem_empty_first_container.json +0 -1182
  476. package/test/data/src/core/physics/trucks/rodotrem.json +0 -148
  477. package/test/data/src/core/physics/trucks/semi_reboque.json +0 -91
  478. package/test/data/src/core/physics/trucks/semi_reboque_rebaixado.json +0 -1629
  479. package/test/data/src/core/physics/trucks/simple_truck.json +0 -85
  480. package/test/data/src/core/physics/trucks/vanderleia_mechanical.json +0 -105
  481. package/test/data/src/core/physics/trucks/vanderleia_pneumatic.json +0 -105
  482. package/test/src/core/orchestration/request_schema.test.ts +0 -20
  483. package/test/src/core/orchestration/weight_by_axis_task.test.ts +0 -87
  484. package/test/src/core/physics/items/center_of_mass.test.ts +0 -38
  485. package/test/src/core/physics/items/multi_container_allocated_items.test.ts +0 -22
  486. package/test/src/core/physics/math_input_helpers.ts +0 -64
  487. package/test/src/core/physics/models/bitrem_model.test.ts +0 -54
  488. package/test/src/core/physics/models/deflection/deflection_model.test.ts +0 -78
  489. package/test/src/core/physics/models/rodotrem_model.test.ts +0 -29
  490. package/test/src/core/physics/models/semi_reboque_model.test.ts +0 -72
  491. package/test/src/core/physics/models/simple_truck_model.test.ts +0 -23
  492. package/test/src/core/physics/models/tare_model.test.ts +0 -34
  493. package/test/src/core/physics/models/vanderleia_model.test.ts +0 -36
  494. package/test/src/core/physics/services/axle_weight_service.test.ts +0 -56
  495. package/test/src/core/physics/services/cm_axle_weight_service.test.ts +0 -23
  496. package/test/src/core/physics/services/container_corner_forces.test.ts +0 -23
  497. package/test/src/core/physics/test_helpers.ts +0 -13
  498. package/test/src/core/physics/transports/chassi.test.ts +0 -35
  499. package/test/src/core/physics/transports/containerweight/container_weight_model.test.ts +0 -57
  500. package/test/src/core/physics/transports/tare/bitrem_axle_splitter.test.ts +0 -30
  501. package/test/src/index.test.ts +0 -35
  502. /package/build/core/contracts/{chassi_reference.js → ChassiReference.js} +0 -0
  503. /package/build/core/contracts/{rotation_enum.js → RotationEnum.js} +0 -0
  504. /package/build/core/contracts/{suspension_type.js → SuspensionType.js} +0 -0
  505. /package/build/core/contracts/{transport_record.js → TransportRecord.js} +0 -0
  506. /package/build/core/contracts/{vehicle_type.js → VehicleType.js} +0 -0
  507. /package/build/core/contracts/{vehicle_version.js → VehicleVersion.js} +0 -0
  508. /package/build/core/contracts/{wire_flags.js → WireFlags.js} +0 -0
  509. /package/build/core/math/{float_tools.js → FloatTools.js} +0 -0
  510. /package/build/core/math/{gaussian_elimination.js → GaussianElimination.js} +0 -0
  511. /package/build/core/physics/items/{allocated_item_manager.js → AllocatedItemManager.js} +0 -0
  512. /package/build/core/physics/items/{center_of_mass.js → CenterOfMass.js} +0 -0
  513. /package/build/core/physics/models/{chassi_forces.js → ChassiForces.js} +0 -0
  514. /package/build/core/physics/models/{old_tare_scale.js → OldTareScale.js} +0 -0
  515. /package/build/core/physics/models/deflection/{deflection_tools.js → DeflectionTools.js} +0 -0
  516. /package/build/core/physics/services/{container_corner_forces.js → ContainerCornerForces.js} +0 -0
  517. /package/build/core/physics/transports/containerweight/{container_max_weight_calculator.js → ContainerMaxWeightCalculator.js} +0 -0
  518. /package/build/core/physics/transports/containerweight/{container_tare_calculator.js → ContainerTareCalculator.js} +0 -0
  519. /package/build/core/physics/transports/containerweight/{merged_containers_weight_calculator.js → MergedContainersWeightCalculator.js} +0 -0
  520. /package/build/core/physics/transports/tare/{bitrem_axle_weight_split.js → BitremAxleWeightSplit.js} +0 -0
@@ -1,316 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 1,
6
- "metadata": {},
7
- "outputs": [],
8
- "source": [
9
- "import numpy as np\n"
10
- ]
11
- },
12
- {
13
- "cell_type": "code",
14
- "execution_count": 2,
15
- "metadata": {},
16
- "outputs": [],
17
- "source": [
18
- "# Empresa\n",
19
- " # JettaCargo Standard\n",
20
- "\n",
21
- "# Transport\n",
22
- " # Link: https://route.jettacargo.com.br/contenedores/64397f27f0edce0027432250\n",
23
- " # ID\n",
24
- " # LQG9648 | HMV9725\n",
25
- "\n",
26
- " # Description\n",
27
- " # LQG9648 | HMV9725 | TRUCADO | 06 EIXOS | SOMA\n",
28
- "\n",
29
- "# Body\n",
30
- "length_body = 13\n",
31
- "king_pin_distance = 1.6\n",
32
- "\n",
33
- "# Axles distances\n",
34
- "distance_axle_0_to_container = 2.25\n",
35
- "distance_axle_0_to_axle_1 = 4.2\n",
36
- "distance_axle_1_to_axle_2 = 7.7\n",
37
- "\n",
38
- "# Tare\n",
39
- "total_tare = 16000\n",
40
- "\n",
41
- "# Load:\n",
42
- " # Link: https://route.jettacargo.com.br/loads/64397f28f0edce0027432257\n",
43
- " # Coils\n",
44
- " # Mass | Length | Position JettaCargo\n",
45
- "# Load performed by JettaCargo\n",
46
- "# coil_load = np.array([\n",
47
- "# [9410, 1.21, 1.746],\n",
48
- "# [11345, 1.21, 6.299],\n",
49
- "# [11365, 1.2, 9.37]\n",
50
- "# ])\n",
51
- "# Load performed by User\n",
52
- "# coil_load = np.array([\n",
53
- "# [9410, 1.21, 8.185],\n",
54
- "# [11345, 1.21, 1.112],\n",
55
- "# [11365, 1.2, 10.018]\n",
56
- "# ])\n",
57
- "# Load performed by Everton\n",
58
- "coil_load = np.array([\n",
59
- " [9410, 1.21, 7.5],\n",
60
- " [11345, 1.21, 1.05],\n",
61
- " [11365, 1.2, 9.8]\n",
62
- " ])\n"
63
- ]
64
- },
65
- {
66
- "cell_type": "code",
67
- "execution_count": 3,
68
- "metadata": {},
69
- "outputs": [],
70
- "source": [
71
- "# Tare Distribuition\n",
72
- "tare_distribution = np.array([0.286, 0.379, 0.335])\n",
73
- "\n",
74
- "## semi trailer\n",
75
- "p_st = (distance_axle_0_to_axle_1 + distance_axle_1_to_axle_2) - distance_axle_0_to_container\n",
76
- "p_st_p = king_pin_distance\n",
77
- "\n",
78
- "## tractor trailer\n",
79
- "p_tt_1 = distance_axle_0_to_axle_1\n",
80
- "p_tt_p = distance_axle_0_to_container + king_pin_distance\n"
81
- ]
82
- },
83
- {
84
- "cell_type": "code",
85
- "execution_count": 4,
86
- "metadata": {},
87
- "outputs": [],
88
- "source": [
89
- "a_reactions_matrix = np.array([[0, p_tt_1, -p_tt_p, 0],\n",
90
- " [1, 1, -1, 0],\n",
91
- " [0, 0, p_st_p, p_st],\n",
92
- " [0, 0, 1, 1]])\n",
93
- "\n",
94
- "b11 = 0\n",
95
- "b21 = 0\n",
96
- "b31 = 0\n",
97
- "b41 = 0\n",
98
- "const_B_eq_I = 0\n",
99
- "const_B_eq_II = 0\n",
100
- "\n",
101
- "for coil in coil_load:\n",
102
- "\n",
103
- " coil_mass = coil[0]\n",
104
- " coil_length = coil[1]\n",
105
- " coil_position = coil[2]\n",
106
- "\n",
107
- " p_b = coil_position + coil_length/2\n",
108
- " b31 = b31 + p_b * coil_mass\n",
109
- " b41 = b41 + coil_mass\n",
110
- "\n",
111
- " if (p_b < p_st_p):\n",
112
- " const_B_eq_I = const_B_eq_I + (coil_mass/6)*pow((p_st_p - p_b),3)\n",
113
- "\n",
114
- " if (p_b < p_st): \n",
115
- " const_B_eq_II = const_B_eq_II + (coil_mass/6)*pow((p_st - p_b),3)\n",
116
- " \n",
117
- "b_reactions_matrix = np.array([[b11],\n",
118
- " [b21],\n",
119
- " [b31],\n",
120
- " [b41],])"
121
- ]
122
- },
123
- {
124
- "cell_type": "code",
125
- "execution_count": 5,
126
- "metadata": {},
127
- "outputs": [],
128
- "source": [
129
- "reactions_semitrailer_truck = np.linalg.solve(a_reactions_matrix,b_reactions_matrix)\n",
130
- "\n",
131
- "Rp = float(reactions_semitrailer_truck[2])\n",
132
- "Rst = float(reactions_semitrailer_truck[3])\n",
133
- "\n",
134
- "reaction_Axle_1 = reactions_semitrailer_truck[0] + total_tare*tare_distribution[0]\n",
135
- "reaction_Axle_2 = reactions_semitrailer_truck[1] + total_tare*tare_distribution[1]\n",
136
- "reaction_Axle_3 = reactions_semitrailer_truck[3] + total_tare*tare_distribution[2]"
137
- ]
138
- },
139
- {
140
- "cell_type": "code",
141
- "execution_count": 6,
142
- "metadata": {},
143
- "outputs": [
144
- {
145
- "name": "stdout",
146
- "output_type": "stream",
147
- "text": [
148
- "Eixo 1: [5577.22127329] | [92.95368789]%\n",
149
- "Eixo 2: [17077.43400621] | [100.45549415]%\n",
150
- "Pino Rei: [12014.6552795]\n",
151
- "Eixo 3: [25465.3447205] | [99.86409694]%\n"
152
- ]
153
- }
154
- ],
155
- "source": [
156
- "print(f'Eixo 1: {reaction_Axle_1} | {(reaction_Axle_1/6000)*100}%')\n",
157
- "print(f'Eixo 2: {reaction_Axle_2} | {(reaction_Axle_2/17000)*100}%')\n",
158
- "print(f'Pino Rei: {reactions_semitrailer_truck[2]}')\n",
159
- "print(f'Eixo 3: {reaction_Axle_3} | {(reaction_Axle_3/25500)*100}%')"
160
- ]
161
- },
162
- {
163
- "cell_type": "code",
164
- "execution_count": 7,
165
- "metadata": {},
166
- "outputs": [],
167
- "source": [
168
- "# Deflection curve\n",
169
- "a_const_matrix = np.array([[p_st_p, 1.0],\n",
170
- " [p_st, 1.0]])\n",
171
- "\n",
172
- "b11_const = const_B_eq_I\n",
173
- "b21_const = (-Rp/6)*pow((p_st-p_st_p),3) + const_B_eq_II\n",
174
- "\n",
175
- "b_const_matrix = np.array([[b11_const],\n",
176
- " [b21_const]])\n",
177
- "\n",
178
- "\n",
179
- "const_c1_c2 = np.linalg.solve(a_const_matrix,b_const_matrix)\n",
180
- "const_c1 = float(const_c1_c2[0])\n",
181
- "const_c2 = float(const_c1_c2[1])"
182
- ]
183
- },
184
- {
185
- "cell_type": "code",
186
- "execution_count": 8,
187
- "metadata": {},
188
- "outputs": [],
189
- "source": [
190
- "# Elastic Curve\n",
191
- "\n",
192
- "number_of_samples = 10000\n",
193
- "x_elastic_curve = np.linspace(0,length_body,number_of_samples,endpoint=True)\n",
194
- "y_sample = np.zeros(number_of_samples)\n",
195
- "\n",
196
- "def calculate_result(x_elastic_curve, y_sample, coil_load, p_st, p_st_p, Rp, Rst):\n",
197
- "\n",
198
- " \n",
199
- " for idx, x in enumerate(x_elastic_curve):\n",
200
- " Rp_contribution = 0 # King Pin contribuition\n",
201
- " Rst_contribution = 0 # Axle 3 contribuition\n",
202
- " B_contribution = 0 # Load contribuition\n",
203
- "\n",
204
- " for coil in coil_load:\n",
205
- "\n",
206
- " coil_mass = coil[0]\n",
207
- " coil_length = coil[1]\n",
208
- " coil_position = coil[2]\n",
209
- " x_b = coil_position + coil_length/2\n",
210
- "\n",
211
- " if (x - x_b > 0):\n",
212
- " B_contribution = B_contribution + (-coil_mass/6)*pow((x - x_b),3)\n",
213
- " else:\n",
214
- " B_contribution = B_contribution\n",
215
- "\n",
216
- " if (x - p_st_p > 0):\n",
217
- " Rp_contribution = (Rp/6)*pow((x - p_st_p),3)\n",
218
- " else:\n",
219
- " Rp_contribution = 0\n",
220
- "\n",
221
- " if (x - p_st > 0):\n",
222
- " Rst_contribution = (Rst/6)*pow((x - p_st),3)\n",
223
- " else:\n",
224
- " Rst_contribution = 0\n",
225
- "\n",
226
- " y_sample[idx] = B_contribution + Rp_contribution + Rst_contribution + const_c1*x + const_c2\n",
227
- "\n",
228
- " return y_sample\n"
229
- ]
230
- },
231
- {
232
- "cell_type": "code",
233
- "execution_count": 11,
234
- "metadata": {},
235
- "outputs": [
236
- {
237
- "data": {
238
- "image/png": "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",
239
- "text/plain": [
240
- "<Figure size 640x480 with 1 Axes>"
241
- ]
242
- },
243
- "metadata": {},
244
- "output_type": "display_data"
245
- }
246
- ],
247
- "source": [
248
- "import matplotlib.pyplot as plt\n",
249
- "\n",
250
- "y_elastic_curve = calculate_result(x_elastic_curve, y_sample, coil_load,p_st,p_st_p,Rp,Rst)\n",
251
- "\n",
252
- "plt.plot(x_elastic_curve,y_elastic_curve,'o')\n",
253
- "plt.show()"
254
- ]
255
- },
256
- {
257
- "cell_type": "code",
258
- "execution_count": 12,
259
- "metadata": {},
260
- "outputs": [
261
- {
262
- "name": "stdout",
263
- "output_type": "stream",
264
- "text": [
265
- "12376.313416159517\n"
266
- ]
267
- }
268
- ],
269
- "source": [
270
- "elastic_curve_std = np.std(y_elastic_curve)\n",
271
- "print(elastic_curve_std)"
272
- ]
273
- },
274
- {
275
- "cell_type": "code",
276
- "execution_count": null,
277
- "metadata": {},
278
- "outputs": [],
279
- "source": []
280
- },
281
- {
282
- "cell_type": "code",
283
- "execution_count": null,
284
- "metadata": {},
285
- "outputs": [],
286
- "source": []
287
- }
288
- ],
289
- "metadata": {
290
- "kernelspec": {
291
- "display_name": "Python 3.10.8 64-bit",
292
- "language": "python",
293
- "name": "python3"
294
- },
295
- "language_info": {
296
- "codemirror_mode": {
297
- "name": "ipython",
298
- "version": 3
299
- },
300
- "file_extension": ".py",
301
- "mimetype": "text/x-python",
302
- "name": "python",
303
- "nbconvert_exporter": "python",
304
- "pygments_lexer": "ipython3",
305
- "version": "3.7.2"
306
- },
307
- "orig_nbformat": 4,
308
- "vscode": {
309
- "interpreter": {
310
- "hash": "afe3add611ffbdc025c97d7436df3247b20b152cbdbbf7a6c3483ee10e38e546"
311
- }
312
- }
313
- },
314
- "nbformat": 4,
315
- "nbformat_minor": 2
316
- }