@jetta/axle-load-calculator 0.1.3
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.
- package/.cursor/ai_changelog/INDEX.md +13 -0
- package/.cursor/ai_changelog/_TEMPLATE.md +55 -0
- package/.cursor/rules/code-standards.mdc +103 -0
- package/.cursor/rules/knowledge-base.mdc +14 -0
- package/.cursor/rules/planning-standards.mdc +55 -0
- package/.cursor/skills/document-feature-knowledge/SKILL.md +51 -0
- package/README.md +49 -0
- package/bitbucket-pipelines.yml +81 -0
- package/build/core/contracts/chassi_reference.d.ts +7 -0
- package/build/core/contracts/chassi_reference.d.ts.map +1 -0
- package/build/core/contracts/chassi_reference.js +5 -0
- package/build/core/contracts/ms_faixas_contract.d.ts +13 -0
- package/build/core/contracts/ms_faixas_contract.d.ts.map +1 -0
- package/build/core/contracts/ms_faixas_contract.js +89 -0
- package/build/core/contracts/rotation_enum.d.ts +11 -0
- package/build/core/contracts/rotation_enum.d.ts.map +1 -0
- package/build/core/contracts/rotation_enum.js +9 -0
- package/build/core/contracts/suspension_type.d.ts +5 -0
- package/build/core/contracts/suspension_type.d.ts.map +1 -0
- package/build/core/contracts/suspension_type.js +4 -0
- package/build/core/contracts/transport_record.d.ts +5 -0
- package/build/core/contracts/transport_record.d.ts.map +1 -0
- package/build/core/contracts/transport_record.js +1 -0
- package/build/core/contracts/vehicle_type.d.ts +12 -0
- package/build/core/contracts/vehicle_type.d.ts.map +1 -0
- package/build/core/contracts/vehicle_type.js +10 -0
- package/build/core/contracts/vehicle_version.d.ts +8 -0
- package/build/core/contracts/vehicle_version.d.ts.map +1 -0
- package/build/core/contracts/vehicle_version.js +7 -0
- package/build/core/contracts/wire_flags.d.ts +27 -0
- package/build/core/contracts/wire_flags.d.ts.map +1 -0
- package/build/core/contracts/wire_flags.js +26 -0
- package/build/core/math/float_tools.d.ts +7 -0
- package/build/core/math/float_tools.d.ts.map +1 -0
- package/build/core/math/float_tools.js +14 -0
- package/build/core/math/gaussian_elimination.d.ts +8 -0
- package/build/core/math/gaussian_elimination.d.ts.map +1 -0
- package/build/core/math/gaussian_elimination.js +85 -0
- package/build/core/orchestration/axle_weight_physics.d.ts +7 -0
- package/build/core/orchestration/axle_weight_physics.d.ts.map +1 -0
- package/build/core/orchestration/axle_weight_physics.js +27 -0
- package/build/core/orchestration/collision_checker.d.ts +6 -0
- package/build/core/orchestration/collision_checker.d.ts.map +1 -0
- package/build/core/orchestration/collision_checker.js +67 -0
- package/build/core/orchestration/connector_payload_builder.d.ts +11 -0
- package/build/core/orchestration/connector_payload_builder.d.ts.map +1 -0
- package/build/core/orchestration/connector_payload_builder.js +67 -0
- package/build/core/orchestration/java_mass_center.d.ts +9 -0
- package/build/core/orchestration/java_mass_center.d.ts.map +1 -0
- package/build/core/orchestration/java_mass_center.js +79 -0
- package/build/core/orchestration/output_builder.d.ts +11 -0
- package/build/core/orchestration/output_builder.d.ts.map +1 -0
- package/build/core/orchestration/output_builder.js +15 -0
- package/build/core/orchestration/request_schema.d.ts +65 -0
- package/build/core/orchestration/request_schema.d.ts.map +1 -0
- package/build/core/orchestration/request_schema.js +20 -0
- package/build/core/orchestration/weight_by_axis_task.d.ts +7 -0
- package/build/core/orchestration/weight_by_axis_task.d.ts.map +1 -0
- package/build/core/orchestration/weight_by_axis_task.js +105 -0
- package/build/core/physics/items/allocated_item.d.ts +22 -0
- package/build/core/physics/items/allocated_item.d.ts.map +1 -0
- package/build/core/physics/items/allocated_item.js +29 -0
- package/build/core/physics/items/allocated_item_manager.d.ts +31 -0
- package/build/core/physics/items/allocated_item_manager.d.ts.map +1 -0
- package/build/core/physics/items/allocated_item_manager.js +38 -0
- package/build/core/physics/items/center_of_mass.d.ts +14 -0
- package/build/core/physics/items/center_of_mass.d.ts.map +1 -0
- package/build/core/physics/items/center_of_mass.js +24 -0
- package/build/core/physics/items/compute_grouper_center_of_mass.d.ts +19 -0
- package/build/core/physics/items/compute_grouper_center_of_mass.d.ts.map +1 -0
- package/build/core/physics/items/compute_grouper_center_of_mass.js +28 -0
- package/build/core/physics/items/item_templates.d.ts +32 -0
- package/build/core/physics/items/item_templates.d.ts.map +1 -0
- package/build/core/physics/items/item_templates.js +53 -0
- package/build/core/physics/items/multi_container_allocated_items.d.ts +37 -0
- package/build/core/physics/items/multi_container_allocated_items.d.ts.map +1 -0
- package/build/core/physics/items/multi_container_allocated_items.js +91 -0
- package/build/core/physics/items/rotation_transforms.d.ts +8 -0
- package/build/core/physics/items/rotation_transforms.d.ts.map +1 -0
- package/build/core/physics/items/rotation_transforms.js +21 -0
- package/build/core/physics/models/axle_weight_model.d.ts +32 -0
- package/build/core/physics/models/axle_weight_model.d.ts.map +1 -0
- package/build/core/physics/models/axle_weight_model.js +72 -0
- package/build/core/physics/models/bi_truck_model.d.ts +21 -0
- package/build/core/physics/models/bi_truck_model.d.ts.map +1 -0
- package/build/core/physics/models/bi_truck_model.js +60 -0
- package/build/core/physics/models/bi_truck_tractor_semi_trailer_model.d.ts +21 -0
- package/build/core/physics/models/bi_truck_tractor_semi_trailer_model.d.ts.map +1 -0
- package/build/core/physics/models/bi_truck_tractor_semi_trailer_model.js +69 -0
- package/build/core/physics/models/bitrem_model.d.ts +33 -0
- package/build/core/physics/models/bitrem_model.d.ts.map +1 -0
- package/build/core/physics/models/bitrem_model.js +123 -0
- package/build/core/physics/models/chassi_forces.d.ts +30 -0
- package/build/core/physics/models/chassi_forces.d.ts.map +1 -0
- package/build/core/physics/models/chassi_forces.js +39 -0
- package/build/core/physics/models/deflection/beam_deflection.d.ts +28 -0
- package/build/core/physics/models/deflection/beam_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/beam_deflection.js +78 -0
- package/build/core/physics/models/deflection/bitrem_deflection.d.ts +22 -0
- package/build/core/physics/models/deflection/bitrem_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/bitrem_deflection.js +54 -0
- package/build/core/physics/models/deflection/create_deflection_delegate.d.ts +12 -0
- package/build/core/physics/models/deflection/create_deflection_delegate.d.ts.map +1 -0
- package/build/core/physics/models/deflection/create_deflection_delegate.js +32 -0
- package/build/core/physics/models/deflection/deflection_model.d.ts +19 -0
- package/build/core/physics/models/deflection/deflection_model.d.ts.map +1 -0
- package/build/core/physics/models/deflection/deflection_model.js +23 -0
- package/build/core/physics/models/deflection/deflection_support_manager.d.ts +21 -0
- package/build/core/physics/models/deflection/deflection_support_manager.d.ts.map +1 -0
- package/build/core/physics/models/deflection/deflection_support_manager.js +40 -0
- package/build/core/physics/models/deflection/deflection_tools.d.ts +6 -0
- package/build/core/physics/models/deflection/deflection_tools.d.ts.map +1 -0
- package/build/core/physics/models/deflection/deflection_tools.js +10 -0
- package/build/core/physics/models/deflection/integration_constant_calculator.d.ts +22 -0
- package/build/core/physics/models/deflection/integration_constant_calculator.d.ts.map +1 -0
- package/build/core/physics/models/deflection/integration_constant_calculator.js +48 -0
- package/build/core/physics/models/deflection/rodotrem_deflection.d.ts +22 -0
- package/build/core/physics/models/deflection/rodotrem_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/rodotrem_deflection.js +47 -0
- package/build/core/physics/models/deflection/semi_reboque_deflection.d.ts +21 -0
- package/build/core/physics/models/deflection/semi_reboque_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/semi_reboque_deflection.js +31 -0
- package/build/core/physics/models/deflection/simple_truck_deflection.d.ts +20 -0
- package/build/core/physics/models/deflection/simple_truck_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/simple_truck_deflection.js +28 -0
- package/build/core/physics/models/deflection/vanderleia_deflection.d.ts +21 -0
- package/build/core/physics/models/deflection/vanderleia_deflection.d.ts.map +1 -0
- package/build/core/physics/models/deflection/vanderleia_deflection.js +41 -0
- package/build/core/physics/models/old_tare_model.d.ts +17 -0
- package/build/core/physics/models/old_tare_model.d.ts.map +1 -0
- package/build/core/physics/models/old_tare_model.js +40 -0
- package/build/core/physics/models/old_tare_scale.d.ts +7 -0
- package/build/core/physics/models/old_tare_scale.d.ts.map +1 -0
- package/build/core/physics/models/old_tare_scale.js +8 -0
- package/build/core/physics/models/old_tare_semireboque.d.ts +7 -0
- package/build/core/physics/models/old_tare_semireboque.d.ts.map +1 -0
- package/build/core/physics/models/old_tare_semireboque.js +37 -0
- package/build/core/physics/models/old_tare_truck.d.ts +7 -0
- package/build/core/physics/models/old_tare_truck.d.ts.map +1 -0
- package/build/core/physics/models/old_tare_truck.js +12 -0
- package/build/core/physics/models/old_tare_vanderleia.d.ts +7 -0
- package/build/core/physics/models/old_tare_vanderleia.d.ts.map +1 -0
- package/build/core/physics/models/old_tare_vanderleia.js +31 -0
- package/build/core/physics/models/percentage_on_axles_calculator.d.ts +19 -0
- package/build/core/physics/models/percentage_on_axles_calculator.d.ts.map +1 -0
- package/build/core/physics/models/percentage_on_axles_calculator.js +39 -0
- package/build/core/physics/models/quad_semi_trailer_model.d.ts +21 -0
- package/build/core/physics/models/quad_semi_trailer_model.d.ts.map +1 -0
- package/build/core/physics/models/quad_semi_trailer_model.js +70 -0
- package/build/core/physics/models/rodotrem_model.d.ts +33 -0
- package/build/core/physics/models/rodotrem_model.d.ts.map +1 -0
- package/build/core/physics/models/rodotrem_model.js +101 -0
- package/build/core/physics/models/semi_reboque_base.d.ts +34 -0
- package/build/core/physics/models/semi_reboque_base.d.ts.map +1 -0
- package/build/core/physics/models/semi_reboque_base.js +85 -0
- package/build/core/physics/models/semi_reboque_model.d.ts +41 -0
- package/build/core/physics/models/semi_reboque_model.d.ts.map +1 -0
- package/build/core/physics/models/semi_reboque_model.js +84 -0
- package/build/core/physics/models/simple_truck_base.d.ts +29 -0
- package/build/core/physics/models/simple_truck_base.d.ts.map +1 -0
- package/build/core/physics/models/simple_truck_base.js +57 -0
- package/build/core/physics/models/simple_truck_model.d.ts +41 -0
- package/build/core/physics/models/simple_truck_model.d.ts.map +1 -0
- package/build/core/physics/models/simple_truck_model.js +76 -0
- package/build/core/physics/models/single_container_tare.d.ts +18 -0
- package/build/core/physics/models/single_container_tare.d.ts.map +1 -0
- package/build/core/physics/models/single_container_tare.js +45 -0
- package/build/core/physics/models/tare_model.d.ts +12 -0
- package/build/core/physics/models/tare_model.d.ts.map +1 -0
- package/build/core/physics/models/tare_model.js +36 -0
- package/build/core/physics/models/vanderleia_model.d.ts +33 -0
- package/build/core/physics/models/vanderleia_model.d.ts.map +1 -0
- package/build/core/physics/models/vanderleia_model.js +100 -0
- package/build/core/physics/services/axle_weight_output_builder.d.ts +27 -0
- package/build/core/physics/services/axle_weight_output_builder.d.ts.map +1 -0
- package/build/core/physics/services/axle_weight_output_builder.js +42 -0
- package/build/core/physics/services/axle_weight_service.d.ts +20 -0
- package/build/core/physics/services/axle_weight_service.d.ts.map +1 -0
- package/build/core/physics/services/axle_weight_service.js +91 -0
- package/build/core/physics/services/cm_axle_weight_service.d.ts +12 -0
- package/build/core/physics/services/cm_axle_weight_service.d.ts.map +1 -0
- package/build/core/physics/services/cm_axle_weight_service.js +33 -0
- package/build/core/physics/services/container_corner_forces.d.ts +33 -0
- package/build/core/physics/services/container_corner_forces.d.ts.map +1 -0
- package/build/core/physics/services/container_corner_forces.js +84 -0
- package/build/core/physics/transports/axle_manager.d.ts +22 -0
- package/build/core/physics/transports/axle_manager.d.ts.map +1 -0
- package/build/core/physics/transports/axle_manager.js +34 -0
- package/build/core/physics/transports/axle_record.d.ts +21 -0
- package/build/core/physics/transports/axle_record.d.ts.map +1 -0
- package/build/core/physics/transports/axle_record.js +57 -0
- package/build/core/physics/transports/chassi.d.ts +52 -0
- package/build/core/physics/transports/chassi.d.ts.map +1 -0
- package/build/core/physics/transports/chassi.js +105 -0
- package/build/core/physics/transports/container_record.d.ts +25 -0
- package/build/core/physics/transports/container_record.d.ts.map +1 -0
- package/build/core/physics/transports/container_record.js +49 -0
- package/build/core/physics/transports/containerweight/container_max_weight_calculator.d.ts +27 -0
- package/build/core/physics/transports/containerweight/container_max_weight_calculator.d.ts.map +1 -0
- package/build/core/physics/transports/containerweight/container_max_weight_calculator.js +40 -0
- package/build/core/physics/transports/containerweight/container_tare_calculator.d.ts +28 -0
- package/build/core/physics/transports/containerweight/container_tare_calculator.d.ts.map +1 -0
- package/build/core/physics/transports/containerweight/container_tare_calculator.js +55 -0
- package/build/core/physics/transports/containerweight/container_weight_model.d.ts +15 -0
- package/build/core/physics/transports/containerweight/container_weight_model.d.ts.map +1 -0
- package/build/core/physics/transports/containerweight/container_weight_model.js +31 -0
- package/build/core/physics/transports/containerweight/merged_containers_weight_calculator.d.ts +17 -0
- package/build/core/physics/transports/containerweight/merged_containers_weight_calculator.d.ts.map +1 -0
- package/build/core/physics/transports/containerweight/merged_containers_weight_calculator.js +31 -0
- package/build/core/physics/transports/containerweight/single_container_weight_calculator.d.ts +20 -0
- package/build/core/physics/transports/containerweight/single_container_weight_calculator.d.ts.map +1 -0
- package/build/core/physics/transports/containerweight/single_container_weight_calculator.js +48 -0
- package/build/core/physics/transports/grouped_containers.d.ts +34 -0
- package/build/core/physics/transports/grouped_containers.d.ts.map +1 -0
- package/build/core/physics/transports/grouped_containers.js +68 -0
- package/build/core/physics/transports/merged_containers.d.ts +26 -0
- package/build/core/physics/transports/merged_containers.d.ts.map +1 -0
- package/build/core/physics/transports/merged_containers.js +45 -0
- package/build/core/physics/transports/tare/bitrem_axle_splitter.d.ts +26 -0
- package/build/core/physics/transports/tare/bitrem_axle_splitter.d.ts.map +1 -0
- package/build/core/physics/transports/tare/bitrem_axle_splitter.js +84 -0
- package/build/core/physics/transports/tare/bitrem_axle_weight_split.d.ts +22 -0
- package/build/core/physics/transports/tare/bitrem_axle_weight_split.d.ts.map +1 -0
- package/build/core/physics/transports/tare/bitrem_axle_weight_split.js +32 -0
- package/build/core/physics/transports/transport.d.ts +33 -0
- package/build/core/physics/transports/transport.d.ts.map +1 -0
- package/build/core/physics/transports/transport.js +110 -0
- package/build/index.d.ts +8 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +10 -0
- package/eslint.config.js +51 -0
- package/package.json +38 -0
- package/src/core/contracts/chassi_reference.ts +7 -0
- package/src/core/contracts/ms_faixas_contract.ts +114 -0
- package/src/core/contracts/rotation_enum.ts +11 -0
- package/src/core/contracts/suspension_type.ts +4 -0
- package/src/core/contracts/transport_record.ts +4 -0
- package/src/core/contracts/vehicle_type.ts +12 -0
- package/src/core/contracts/vehicle_version.ts +7 -0
- package/src/core/contracts/wire_flags.ts +26 -0
- package/src/core/math/float_tools.ts +17 -0
- package/src/core/math/gaussian_elimination.ts +104 -0
- package/src/core/orchestration/axle_weight_physics.ts +37 -0
- package/src/core/orchestration/collision_checker.ts +86 -0
- package/src/core/orchestration/connector_payload_builder.ts +81 -0
- package/src/core/orchestration/java_mass_center.ts +98 -0
- package/src/core/orchestration/output_builder.ts +18 -0
- package/src/core/orchestration/request_schema.ts +26 -0
- package/src/core/orchestration/weight_by_axis_task.ts +140 -0
- package/src/core/physics/items/allocated_item.ts +41 -0
- package/src/core/physics/items/allocated_item_manager.ts +50 -0
- package/src/core/physics/items/center_of_mass.ts +31 -0
- package/src/core/physics/items/compute_grouper_center_of_mass.ts +44 -0
- package/src/core/physics/items/item_templates.ts +65 -0
- package/src/core/physics/items/multi_container_allocated_items.ts +120 -0
- package/src/core/physics/items/rotation_transforms.ts +29 -0
- package/src/core/physics/models/axle_weight_model.ts +109 -0
- package/src/core/physics/models/bi_truck_model.ts +74 -0
- package/src/core/physics/models/bi_truck_tractor_semi_trailer_model.ts +86 -0
- package/src/core/physics/models/bitrem_model.ts +148 -0
- package/src/core/physics/models/chassi_forces.ts +50 -0
- package/src/core/physics/models/deflection/beam_deflection.ts +105 -0
- package/src/core/physics/models/deflection/bitrem_deflection.ts +68 -0
- package/src/core/physics/models/deflection/create_deflection_delegate.ts +46 -0
- package/src/core/physics/models/deflection/deflection_model.ts +33 -0
- package/src/core/physics/models/deflection/deflection_support_manager.ts +56 -0
- package/src/core/physics/models/deflection/deflection_tools.ts +11 -0
- package/src/core/physics/models/deflection/integration_constant_calculator.ts +62 -0
- package/src/core/physics/models/deflection/rodotrem_deflection.ts +57 -0
- package/src/core/physics/models/deflection/semi_reboque_deflection.ts +40 -0
- package/src/core/physics/models/deflection/simple_truck_deflection.ts +35 -0
- package/src/core/physics/models/deflection/vanderleia_deflection.ts +48 -0
- package/src/core/physics/models/old_tare_model.ts +51 -0
- package/src/core/physics/models/old_tare_scale.ts +9 -0
- package/src/core/physics/models/old_tare_semireboque.ts +51 -0
- package/src/core/physics/models/old_tare_truck.ts +15 -0
- package/src/core/physics/models/old_tare_vanderleia.ts +44 -0
- package/src/core/physics/models/percentage_on_axles_calculator.ts +49 -0
- package/src/core/physics/models/quad_semi_trailer_model.ts +87 -0
- package/src/core/physics/models/rodotrem_model.ts +131 -0
- package/src/core/physics/models/semi_reboque_base.ts +103 -0
- package/src/core/physics/models/semi_reboque_model.ts +127 -0
- package/src/core/physics/models/simple_truck_base.ts +70 -0
- package/src/core/physics/models/simple_truck_model.ts +115 -0
- package/src/core/physics/models/single_container_tare.ts +56 -0
- package/src/core/physics/models/tare_model.ts +46 -0
- package/src/core/physics/models/vanderleia_model.ts +125 -0
- package/src/core/physics/services/axle_weight_output_builder.ts +63 -0
- package/src/core/physics/services/axle_weight_service.ts +116 -0
- package/src/core/physics/services/cm_axle_weight_service.ts +45 -0
- package/src/core/physics/services/container_corner_forces.ts +95 -0
- package/src/core/physics/transports/axle_manager.ts +45 -0
- package/src/core/physics/transports/axle_record.ts +68 -0
- package/src/core/physics/transports/chassi.ts +130 -0
- package/src/core/physics/transports/container_record.ts +58 -0
- package/src/core/physics/transports/containerweight/container_max_weight_calculator.ts +59 -0
- package/src/core/physics/transports/containerweight/container_tare_calculator.ts +76 -0
- package/src/core/physics/transports/containerweight/container_weight_model.ts +38 -0
- package/src/core/physics/transports/containerweight/merged_containers_weight_calculator.ts +39 -0
- package/src/core/physics/transports/containerweight/single_container_weight_calculator.ts +65 -0
- package/src/core/physics/transports/grouped_containers.ts +91 -0
- package/src/core/physics/transports/merged_containers.ts +62 -0
- package/src/core/physics/transports/tare/bitrem_axle_splitter.ts +107 -0
- package/src/core/physics/transports/tare/bitrem_axle_weight_split.ts +55 -0
- package/src/core/physics/transports/transport.ts +137 -0
- package/src/index.ts +12 -0
- package/src/service/.gitkeep +0 -0
- package/test/data/src/core/orchestration/weight_by_axis/case_1_basic_truck_input.json +1759 -0
- package/test/data/src/core/orchestration/weight_by_axis/case_2_vanderleia_input.json +1286 -0
- package/test/data/src/core/orchestration/weight_by_axis/case_3_interlink_input.json +2226 -0
- package/test/data/src/core/orchestration/weight_by_axis/case_4_quad_semi_trailer.json +639 -0
- package/test/data/src/core/orchestration/weight_by_axis/case_5_custom_center_of_gravity.json +557 -0
- package/test/data/src/core/physics/axle_weight_calculations/case_2_bitruck.json +664 -0
- package/test/data/src/core/physics/axle_weight_calculations/case_4_quad_semi_trailer.json +674 -0
- package/test/data/src/core/physics/axle_weight_calculations/case_5_bi_truck_semi_trailer.json +674 -0
- package/test/data/src/core/physics/axle_weight_service/case_1_input_truck.json +1025 -0
- package/test/data/src/core/physics/axle_weight_service/case_1_output_truck.json +38 -0
- package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_input.json +1286 -0
- package/test/data/src/core/physics/axle_weight_service/case_2_vanderleia_output.json +65 -0
- package/test/data/src/core/physics/axle_weight_service/case_3_input_semireboque.json +24625 -0
- package/test/data/src/core/physics/axle_weight_service/case_3_output_semireboque.json +57 -0
- package/test/data/src/core/physics/axle_weight_service/case_4_input_bitrem.json +2226 -0
- package/test/data/src/core/physics/axle_weight_service/case_4_output_bitrem.json +96 -0
- package/test/data/src/core/physics/beam_deflection/case_10_rodotrem_offset.json +474 -0
- package/test/data/src/core/physics/beam_deflection/case_11_bitruck.json +664 -0
- package/test/data/src/core/physics/beam_deflection/case_12_quad_semi_trailer.json +792 -0
- package/test/data/src/core/physics/beam_deflection/case_13_bi_truck_semi_trailer.json +792 -0
- package/test/data/src/core/physics/beam_deflection/case_1_documentation.ipynb +316 -0
- package/test/data/src/core/physics/beam_deflection/case_1_semireboque.json +402 -0
- package/test/data/src/core/physics/beam_deflection/case_2_bitrem.json +434 -0
- package/test/data/src/core/physics/beam_deflection/case_3_rodotrem.json +474 -0
- package/test/data/src/core/physics/beam_deflection/case_4_vanderleia_pneumatica.json +425 -0
- package/test/data/src/core/physics/beam_deflection/case_5_vanderleia_mecanica.json +366 -0
- package/test/data/src/core/physics/beam_deflection/case_6_truck.json +279 -0
- package/test/data/src/core/physics/beam_deflection/case_7_semireboque_structural_offset.json +318 -0
- package/test/data/src/core/physics/beam_deflection/case_8_vanderleia_offset.json +425 -0
- package/test/data/src/core/physics/beam_deflection/case_9_bitrem_offset.json +434 -0
- package/test/data/src/core/physics/bitrem_axle_splitter/case_1_simple_bitrem.json +145 -0
- package/test/data/src/core/physics/bitrem_axle_splitter/case_2_lowered_bitrem.json +238 -0
- package/test/data/src/core/physics/bitrem_axle_splitter/case_3_lowered_positive_proportion.json +238 -0
- package/test/data/src/core/physics/c_m_axle_weight_service/case_1_interlink_trailer.json +94 -0
- package/test/data/src/core/physics/calculations/case_1_simple_truck.json +83 -0
- package/test/data/src/core/physics/calculations/case_2_lowered_bitrem.json +1051 -0
- package/test/data/src/core/physics/calculations/case_3_container_mercedes.json +50 -0
- package/test/data/src/core/physics/container_corner_forces/case_1.json +674 -0
- package/test/data/src/core/physics/container_weight/case_1_basictruck.json +223 -0
- package/test/data/src/core/physics/container_weight/case_2_roadtrain.json +277 -0
- package/test/data/src/core/physics/container_weight/case_3_semireboque_rebaixado.json +197 -0
- package/test/data/src/core/physics/container_weight/case_4_semireboque_neck_limit.json +197 -0
- package/test/data/src/core/physics/container_weight/case_5_vanderleia_rebaixada.json +211 -0
- package/test/data/src/core/physics/container_weight/case_6_lowered_interlink.json +230 -0
- package/test/data/src/core/physics/python_goldens.json +9 -0
- package/test/data/src/core/physics/tare/case_1_simple_vanderleia.json +185 -0
- package/test/data/src/core/physics/tare/case_2_lowered_vanderleia.json +646 -0
- package/test/data/src/core/physics/tare/case_3_lowered_interlink.json +230 -0
- package/test/data/src/core/physics/tare/case_4_negative_tare_VUC.json +483 -0
- package/test/data/src/core/physics/tare/case_5_truck_bitruck.json +664 -0
- package/test/data/src/core/physics/tare/case_6_quad_semi_trailer.json +203 -0
- package/test/data/src/core/physics/tare/case_7_bi_truck_semi_trailer.json +203 -0
- package/test/data/src/core/physics/tare/case_8_triaxle_semi_trailer.json +203 -0
- package/test/data/src/core/physics/time_performance/case_1_center_of_mass.json +2916 -0
- package/test/data/src/core/physics/trucks/bitrem.json +150 -0
- package/test/data/src/core/physics/trucks/lowered_bitrem.json +1216 -0
- package/test/data/src/core/physics/trucks/lowered_bitrem_empty_first_container.json +1182 -0
- package/test/data/src/core/physics/trucks/rodotrem.json +148 -0
- package/test/data/src/core/physics/trucks/semi_reboque.json +91 -0
- package/test/data/src/core/physics/trucks/semi_reboque_rebaixado.json +1629 -0
- package/test/data/src/core/physics/trucks/simple_truck.json +85 -0
- package/test/data/src/core/physics/trucks/vanderleia_mechanical.json +105 -0
- package/test/data/src/core/physics/trucks/vanderleia_pneumatic.json +105 -0
- package/test/src/core/orchestration/request_schema.test.ts +20 -0
- package/test/src/core/orchestration/weight_by_axis_task.test.ts +87 -0
- package/test/src/core/physics/items/center_of_mass.test.ts +38 -0
- package/test/src/core/physics/items/multi_container_allocated_items.test.ts +22 -0
- package/test/src/core/physics/math_input_helpers.ts +64 -0
- package/test/src/core/physics/models/bitrem_model.test.ts +54 -0
- package/test/src/core/physics/models/deflection/deflection_model.test.ts +78 -0
- package/test/src/core/physics/models/rodotrem_model.test.ts +29 -0
- package/test/src/core/physics/models/semi_reboque_model.test.ts +72 -0
- package/test/src/core/physics/models/simple_truck_model.test.ts +23 -0
- package/test/src/core/physics/models/tare_model.test.ts +34 -0
- package/test/src/core/physics/models/vanderleia_model.test.ts +36 -0
- package/test/src/core/physics/services/axle_weight_service.test.ts +56 -0
- package/test/src/core/physics/services/cm_axle_weight_service.test.ts +23 -0
- package/test/src/core/physics/services/container_corner_forces.test.ts +23 -0
- package/test/src/core/physics/test_helpers.ts +13 -0
- package/test/src/core/physics/transports/chassi.test.ts +35 -0
- package/test/src/core/physics/transports/containerweight/container_weight_model.test.ts +57 -0
- package/test/src/core/physics/transports/tare/bitrem_axle_splitter.test.ts +30 -0
- package/test/src/index.test.ts +35 -0
- package/tsconfig.eslint.json +15 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CHASSI_REFERENCE } from '../../../contracts/chassi_reference.js';
|
|
2
|
+
import { BeamDeflection } from './beam_deflection.js';
|
|
3
|
+
import { calculate_deflection_indicator } from './deflection_tools.js';
|
|
4
|
+
/**
|
|
5
|
+
* Bitrem interlink + semi beam deflection (sum of two indicators).
|
|
6
|
+
*/
|
|
7
|
+
export class BitremDeflection {
|
|
8
|
+
bitrem_model;
|
|
9
|
+
number_of_curve_samples;
|
|
10
|
+
/**
|
|
11
|
+
* @param bitrem_model - Axle weight model.
|
|
12
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
13
|
+
*/
|
|
14
|
+
constructor(bitrem_model, number_of_curve_samples) {
|
|
15
|
+
this.bitrem_model = bitrem_model;
|
|
16
|
+
this.number_of_curve_samples = number_of_curve_samples;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param multi_items - Allocated items.
|
|
20
|
+
* @returns Combined deflection indicator.
|
|
21
|
+
*/
|
|
22
|
+
calculate_deflection(multi_items) {
|
|
23
|
+
const forces = this.bitrem_model.calculate_chassi_forces(multi_items);
|
|
24
|
+
const interlink = this.interlink_curve(multi_items, forces);
|
|
25
|
+
const semi = this.semitrailer_curve(multi_items, forces);
|
|
26
|
+
return calculate_deflection_indicator(interlink)
|
|
27
|
+
+ calculate_deflection_indicator(semi);
|
|
28
|
+
}
|
|
29
|
+
interlink_curve(multi_items, forces) {
|
|
30
|
+
const pin_1 = this.bitrem_model.chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1);
|
|
31
|
+
const axle_3 = this.bitrem_model.chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1);
|
|
32
|
+
const support = [
|
|
33
|
+
[pin_1, forces.get_force_on_pin(0)],
|
|
34
|
+
[axle_3, forces.get_force_on_axle(2) + forces.get_force_on_axle(3)]
|
|
35
|
+
];
|
|
36
|
+
const pin_2 = this.bitrem_model.chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_1);
|
|
37
|
+
const external = [[pin_2, -forces.get_force_on_pin(1)]];
|
|
38
|
+
const items = multi_items.get_allocated_items_by_grouper_index(1);
|
|
39
|
+
const pin_2_pos = pin_2;
|
|
40
|
+
const length = Math.max(pin_2_pos, axle_3);
|
|
41
|
+
return new BeamDeflection(support, items, external).generate_curve_values(length, this.number_of_curve_samples);
|
|
42
|
+
}
|
|
43
|
+
semitrailer_curve(multi_items, forces) {
|
|
44
|
+
const pin_2 = this.bitrem_model.chassi.get_pin_position(1, CHASSI_REFERENCE.GROUPER_2);
|
|
45
|
+
const axle_4 = this.bitrem_model.chassi.get_axle_position(4, CHASSI_REFERENCE.GROUPER_2);
|
|
46
|
+
const support = [
|
|
47
|
+
[pin_2, forces.get_force_on_pin(1)],
|
|
48
|
+
[axle_4, forces.get_force_on_axle(4)]
|
|
49
|
+
];
|
|
50
|
+
const items = multi_items.get_allocated_items_by_grouper_index(2);
|
|
51
|
+
const length = this.bitrem_model.chassi.get_grouper_end(2, CHASSI_REFERENCE.GROUPER_2);
|
|
52
|
+
return new BeamDeflection(support, items).generate_curve_values(length, this.number_of_curve_samples);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Transport } from '../../transports/transport.js';
|
|
2
|
+
type DeflectionDelegate = {
|
|
3
|
+
calculate_deflection: (multi: import('../../items/multi_container_allocated_items.js').MultiContainerAllocatedItems) => number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* @param transport - Parsed transport.
|
|
7
|
+
* @param number_of_curve_samples - Sample count for deflection curve.
|
|
8
|
+
* @returns Vehicle-specific deflection delegate.
|
|
9
|
+
*/
|
|
10
|
+
export declare function create_deflection_delegate(transport: Transport, number_of_curve_samples: number): DeflectionDelegate;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=create_deflection_delegate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_deflection_delegate.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/create_deflection_delegate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAY9D,KAAK,kBAAkB,GAAG;IACtB,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,gDAAgD,EAAE,4BAA4B,KAAK,MAAM,CAAA;CACjI,CAAA;AAcD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,MAAM,GAChC,kBAAkB,CAQpB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { VEHICLE_TYPE } from '../../../contracts/vehicle_type.js';
|
|
2
|
+
import { SemiReboqueModel } from '../semi_reboque_model.js';
|
|
3
|
+
import { BitremModel } from '../bitrem_model.js';
|
|
4
|
+
import { RodotremModel } from '../rodotrem_model.js';
|
|
5
|
+
import { VanderleiaModel } from '../vanderleia_model.js';
|
|
6
|
+
import { SimpleTruckModel } from '../simple_truck_model.js';
|
|
7
|
+
import { SemiReboqueDeflection } from './semi_reboque_deflection.js';
|
|
8
|
+
import { BitremDeflection } from './bitrem_deflection.js';
|
|
9
|
+
import { RodotremDeflection } from './rodotrem_deflection.js';
|
|
10
|
+
import { VanderleiaDeflection } from './vanderleia_deflection.js';
|
|
11
|
+
import { SimpleTruckDeflection } from './simple_truck_deflection.js';
|
|
12
|
+
const DELEGATE_BY_TYPE = {
|
|
13
|
+
[VEHICLE_TYPE.SEMIREBOQUE]: (t, n) => new SemiReboqueDeflection(new SemiReboqueModel(t), n),
|
|
14
|
+
[VEHICLE_TYPE.REBAIXADO]: (t, n) => new SemiReboqueDeflection(new SemiReboqueModel(t), n),
|
|
15
|
+
[VEHICLE_TYPE.BITREM]: (t, n) => new BitremDeflection(new BitremModel(t), n),
|
|
16
|
+
[VEHICLE_TYPE.RODOTREM]: (t, n) => new RodotremDeflection(new RodotremModel(t), n),
|
|
17
|
+
[VEHICLE_TYPE.VANDERLEIA]: (t, n) => new VanderleiaDeflection(new VanderleiaModel(t), n),
|
|
18
|
+
[VEHICLE_TYPE.CAMINHAO]: (t, n) => new SimpleTruckDeflection(new SimpleTruckModel(t), n),
|
|
19
|
+
[VEHICLE_TYPE.VUC]: (t, n) => new SimpleTruckDeflection(new SimpleTruckModel(t), n)
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @param transport - Parsed transport.
|
|
23
|
+
* @param number_of_curve_samples - Sample count for deflection curve.
|
|
24
|
+
* @returns Vehicle-specific deflection delegate.
|
|
25
|
+
*/
|
|
26
|
+
export function create_deflection_delegate(transport, number_of_curve_samples) {
|
|
27
|
+
const factory = DELEGATE_BY_TYPE[transport.vehicle_type];
|
|
28
|
+
if (!factory) {
|
|
29
|
+
throw new Error('Deflection model of this vehicle is not implemented yet');
|
|
30
|
+
}
|
|
31
|
+
return factory(transport, number_of_curve_samples);
|
|
32
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Transport } from '../../transports/transport.js';
|
|
2
|
+
import type { AllocatedItemManager } from '../../items/allocated_item_manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vehicle-specific beam deflection facade (DRAGON-76).
|
|
5
|
+
*/
|
|
6
|
+
export declare class DeflectionModel {
|
|
7
|
+
private readonly delegate;
|
|
8
|
+
/**
|
|
9
|
+
* @param transport - Parsed transport.
|
|
10
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
11
|
+
*/
|
|
12
|
+
constructor(transport: Transport, number_of_curve_samples: number);
|
|
13
|
+
/**
|
|
14
|
+
* @param allocated_by_sequence - Items per container sequence.
|
|
15
|
+
* @returns Deflection indicator.
|
|
16
|
+
*/
|
|
17
|
+
calculate_deflection(allocated_by_sequence: Record<number, AllocatedItemManager>): number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=deflection_model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deflection_model.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/deflection_model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAMjF;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C;;;OAGG;gBACS,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM;IAKjE;;;OAGG;IACH,oBAAoB,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,MAAM;CAK5F"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js';
|
|
2
|
+
import { create_deflection_delegate } from './create_deflection_delegate.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vehicle-specific beam deflection facade (DRAGON-76).
|
|
5
|
+
*/
|
|
6
|
+
export class DeflectionModel {
|
|
7
|
+
delegate;
|
|
8
|
+
/**
|
|
9
|
+
* @param transport - Parsed transport.
|
|
10
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
11
|
+
*/
|
|
12
|
+
constructor(transport, number_of_curve_samples) {
|
|
13
|
+
this.delegate = create_deflection_delegate(transport, number_of_curve_samples);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @param allocated_by_sequence - Items per container sequence.
|
|
17
|
+
* @returns Deflection indicator.
|
|
18
|
+
*/
|
|
19
|
+
calculate_deflection(allocated_by_sequence) {
|
|
20
|
+
const multi = new MultiContainerAllocatedItems(allocated_by_sequence);
|
|
21
|
+
return this.delegate.calculate_deflection(multi);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered support positions and reaction forces for beam deflection.
|
|
3
|
+
*/
|
|
4
|
+
export declare class DeflectionSupportManager {
|
|
5
|
+
structural_offset: number;
|
|
6
|
+
private readonly support_data;
|
|
7
|
+
/**
|
|
8
|
+
* @param support_data - [[position, force], ...] sorted by position.
|
|
9
|
+
*/
|
|
10
|
+
constructor(support_data: [number, number][]);
|
|
11
|
+
list_support_indexes(): number[];
|
|
12
|
+
get_position(support_index: number): number;
|
|
13
|
+
get_force(support_index: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* @param external_forces - Optional extra point loads.
|
|
16
|
+
* @returns Forces with structural offset applied to positions.
|
|
17
|
+
*/
|
|
18
|
+
add_structural_offset_to_external_forces(external_forces: [number, number][]): [number, number][];
|
|
19
|
+
private evaluate_structural_offset;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=deflection_support_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deflection_support_manager.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/deflection_support_manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,wBAAwB;IAEjC,iBAAiB,SAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IAEjD;;OAEG;gBACS,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAM5C,oBAAoB,IAAI,MAAM,EAAE;IAKhC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAK3C,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAKxC;;;OAGG;IACH,wCAAwC,CACpC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GACpC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAQrB,OAAO,CAAC,0BAA0B;CASrC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered support positions and reaction forces for beam deflection.
|
|
3
|
+
*/
|
|
4
|
+
export class DeflectionSupportManager {
|
|
5
|
+
structural_offset = 0;
|
|
6
|
+
support_data;
|
|
7
|
+
/**
|
|
8
|
+
* @param support_data - [[position, force], ...] sorted by position.
|
|
9
|
+
*/
|
|
10
|
+
constructor(support_data) {
|
|
11
|
+
this.support_data = support_data.map((row) => [...row]);
|
|
12
|
+
this.evaluate_structural_offset();
|
|
13
|
+
}
|
|
14
|
+
list_support_indexes() {
|
|
15
|
+
return this.support_data.map((_row, index) => index);
|
|
16
|
+
}
|
|
17
|
+
get_position(support_index) {
|
|
18
|
+
return this.support_data[support_index][0];
|
|
19
|
+
}
|
|
20
|
+
get_force(support_index) {
|
|
21
|
+
return this.support_data[support_index][1];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @param external_forces - Optional extra point loads.
|
|
25
|
+
* @returns Forces with structural offset applied to positions.
|
|
26
|
+
*/
|
|
27
|
+
add_structural_offset_to_external_forces(external_forces) {
|
|
28
|
+
return external_forces.map(([position, force]) => [
|
|
29
|
+
position + this.structural_offset,
|
|
30
|
+
force
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
evaluate_structural_offset() {
|
|
34
|
+
const leftmost = Math.min(...this.support_data.map((row) => row[0]));
|
|
35
|
+
this.structural_offset = leftmost < 0 ? -leftmost : 0;
|
|
36
|
+
for (const row of this.support_data) {
|
|
37
|
+
row[0] += this.structural_offset;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deflection_tools.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/deflection_tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAM7E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param curve_values - Beam deflection samples.
|
|
3
|
+
* @returns Scalar deflection indicator.
|
|
4
|
+
*/
|
|
5
|
+
export function calculate_deflection_indicator(curve_values) {
|
|
6
|
+
const mean = curve_values.reduce((sum, value) => sum + value, 0) / curve_values.length;
|
|
7
|
+
const variance = curve_values.reduce((sum, value) => sum + (value - mean) ** 2, 0)
|
|
8
|
+
/ curve_values.length;
|
|
9
|
+
return Math.sqrt(variance) + Math.abs(mean);
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AllocatedItemManager } from '../../items/allocated_item_manager.js';
|
|
2
|
+
import type { DeflectionSupportManager } from './deflection_support_manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Integration constants for beam elastic curve (two supports).
|
|
5
|
+
*/
|
|
6
|
+
export declare class IntegrationConstantCalculator {
|
|
7
|
+
private readonly deflection_supports;
|
|
8
|
+
private readonly structural_offset;
|
|
9
|
+
private readonly b_constants;
|
|
10
|
+
/**
|
|
11
|
+
* @param deflection_supports - Support manager.
|
|
12
|
+
* @param structural_offset - Beam offset.
|
|
13
|
+
*/
|
|
14
|
+
constructor(deflection_supports: DeflectionSupportManager, structural_offset: number);
|
|
15
|
+
/**
|
|
16
|
+
* @param allocated_items - Load items.
|
|
17
|
+
* @returns Integration constants C1 and C2.
|
|
18
|
+
*/
|
|
19
|
+
calculate_integration_constants(allocated_items: AllocatedItemManager): [number, number];
|
|
20
|
+
private calculate_b_constants;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=integration_constant_calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration_constant_calculator.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/integration_constant_calculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAEjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAE/E;;GAEG;AACH,qBAAa,6BAA6B;IASlC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IARtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IAEtC;;;OAGG;gBAEkB,mBAAmB,EAAE,wBAAwB,EAC7C,iBAAiB,EAAE,MAAM;IAM9C;;;OAGG;IACH,+BAA+B,CAC3B,eAAe,EAAE,oBAAoB,GACtC,CAAC,MAAM,EAAE,MAAM,CAAC;IAenB,OAAO,CAAC,qBAAqB;CAiBhC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { solve_linear_system } from '../../../math/gaussian_elimination.js';
|
|
2
|
+
/**
|
|
3
|
+
* Integration constants for beam elastic curve (two supports).
|
|
4
|
+
*/
|
|
5
|
+
export class IntegrationConstantCalculator {
|
|
6
|
+
deflection_supports;
|
|
7
|
+
structural_offset;
|
|
8
|
+
b_constants;
|
|
9
|
+
/**
|
|
10
|
+
* @param deflection_supports - Support manager.
|
|
11
|
+
* @param structural_offset - Beam offset.
|
|
12
|
+
*/
|
|
13
|
+
constructor(deflection_supports, structural_offset) {
|
|
14
|
+
this.deflection_supports = deflection_supports;
|
|
15
|
+
this.structural_offset = structural_offset;
|
|
16
|
+
this.b_constants = deflection_supports.list_support_indexes().map(() => 0);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param allocated_items - Load items.
|
|
20
|
+
* @returns Integration constants C1 and C2.
|
|
21
|
+
*/
|
|
22
|
+
calculate_integration_constants(allocated_items) {
|
|
23
|
+
this.calculate_b_constants(allocated_items);
|
|
24
|
+
const a_matrix = this.deflection_supports.list_support_indexes().map((index) => [
|
|
25
|
+
this.deflection_supports.get_position(index),
|
|
26
|
+
1
|
|
27
|
+
]);
|
|
28
|
+
const displacement = this.deflection_supports.get_position(1)
|
|
29
|
+
- this.deflection_supports.get_position(0);
|
|
30
|
+
const second_term = (-this.deflection_supports.get_force(0) / 6)
|
|
31
|
+
* displacement * displacement * displacement;
|
|
32
|
+
const solution = solve_linear_system(a_matrix, [this.b_constants[0], this.b_constants[1] + second_term]);
|
|
33
|
+
return [solution[0], solution[1]];
|
|
34
|
+
}
|
|
35
|
+
calculate_b_constants(allocated_items) {
|
|
36
|
+
for (const item_index of allocated_items.list_item_indexes()) {
|
|
37
|
+
const item = allocated_items.get_item(item_index);
|
|
38
|
+
const center = item.zi + item.length / 2 + this.structural_offset;
|
|
39
|
+
const factor = item.weight / 6;
|
|
40
|
+
for (const support_index of this.deflection_supports.list_support_indexes()) {
|
|
41
|
+
const displacement = this.deflection_supports.get_position(support_index) - center;
|
|
42
|
+
if (displacement > 0) {
|
|
43
|
+
this.b_constants[support_index] += factor * displacement ** 3;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RodotremModel } from '../rodotrem_model.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js';
|
|
3
|
+
/**
|
|
4
|
+
* Rodotrem semi + simple trailer deflection indicator sum.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RodotremDeflection {
|
|
7
|
+
private readonly rodotrem_model;
|
|
8
|
+
private readonly number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param rodotrem_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(rodotrem_model: RodotremModel, number_of_curve_samples: number);
|
|
14
|
+
/**
|
|
15
|
+
* @param multi_items - Allocated items.
|
|
16
|
+
* @returns Combined deflection indicator.
|
|
17
|
+
*/
|
|
18
|
+
calculate_deflection(multi_items: MultiContainerAllocatedItems): number;
|
|
19
|
+
private semi_curve;
|
|
20
|
+
private simple_curve;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=rodotrem_deflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rodotrem_deflection.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/rodotrem_deflection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAIlG;;GAEG;AACH,qBAAa,kBAAkB;IAOvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAN5C;;;OAGG;gBAEkB,cAAc,EAAE,aAAa,EAC7B,uBAAuB,EAAE,MAAM;IAIpD;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM;IAQvE,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;CAYvB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CHASSI_REFERENCE } from '../../../contracts/chassi_reference.js';
|
|
2
|
+
import { BeamDeflection } from './beam_deflection.js';
|
|
3
|
+
import { calculate_deflection_indicator } from './deflection_tools.js';
|
|
4
|
+
/**
|
|
5
|
+
* Rodotrem semi + simple trailer deflection indicator sum.
|
|
6
|
+
*/
|
|
7
|
+
export class RodotremDeflection {
|
|
8
|
+
rodotrem_model;
|
|
9
|
+
number_of_curve_samples;
|
|
10
|
+
/**
|
|
11
|
+
* @param rodotrem_model - Axle weight model.
|
|
12
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
13
|
+
*/
|
|
14
|
+
constructor(rodotrem_model, number_of_curve_samples) {
|
|
15
|
+
this.rodotrem_model = rodotrem_model;
|
|
16
|
+
this.number_of_curve_samples = number_of_curve_samples;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param multi_items - Allocated items.
|
|
20
|
+
* @returns Combined deflection indicator.
|
|
21
|
+
*/
|
|
22
|
+
calculate_deflection(multi_items) {
|
|
23
|
+
const forces = this.rodotrem_model.calculate_chassi_forces(multi_items);
|
|
24
|
+
const semi = this.semi_curve(multi_items, forces);
|
|
25
|
+
const simple = this.simple_curve(multi_items, forces);
|
|
26
|
+
return calculate_deflection_indicator(semi) + calculate_deflection_indicator(simple);
|
|
27
|
+
}
|
|
28
|
+
semi_curve(multi_items, forces) {
|
|
29
|
+
const pin = this.rodotrem_model.chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1);
|
|
30
|
+
const axle_3 = this.rodotrem_model.chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1);
|
|
31
|
+
const support = [[pin, forces.get_force_on_pin(0)], [axle_3, forces.get_force_on_axle(2)]];
|
|
32
|
+
const items = multi_items.get_allocated_items_by_grouper_index(1);
|
|
33
|
+
const length = this.rodotrem_model.chassi.get_grouper_end(1, CHASSI_REFERENCE.GROUPER_1);
|
|
34
|
+
return new BeamDeflection(support, items).generate_curve_values(length, this.number_of_curve_samples);
|
|
35
|
+
}
|
|
36
|
+
simple_curve(multi_items, forces) {
|
|
37
|
+
const axle_4 = this.rodotrem_model.chassi.get_axle_position(3, CHASSI_REFERENCE.GROUPER_2);
|
|
38
|
+
const axle_5 = this.rodotrem_model.chassi.get_axle_position(4, CHASSI_REFERENCE.GROUPER_2);
|
|
39
|
+
const support = [
|
|
40
|
+
[axle_4, forces.get_force_on_axle(3)],
|
|
41
|
+
[axle_5, forces.get_force_on_axle(4)]
|
|
42
|
+
];
|
|
43
|
+
const items = multi_items.get_allocated_items_by_grouper_index(2);
|
|
44
|
+
const length = this.rodotrem_model.chassi.get_grouper_end(2, CHASSI_REFERENCE.GROUPER_2);
|
|
45
|
+
return new BeamDeflection(support, items).generate_curve_values(length, this.number_of_curve_samples);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SemiReboqueModel } from '../semi_reboque_model.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js';
|
|
3
|
+
/**
|
|
4
|
+
* Semi-reboque beam deflection indicator.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SemiReboqueDeflection {
|
|
7
|
+
private readonly semi_reboque_model;
|
|
8
|
+
private readonly number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param semi_reboque_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(semi_reboque_model: SemiReboqueModel, number_of_curve_samples: number);
|
|
14
|
+
/**
|
|
15
|
+
* @param multi_items - Allocated items.
|
|
16
|
+
* @returns Deflection indicator scalar.
|
|
17
|
+
*/
|
|
18
|
+
calculate_deflection(multi_items: MultiContainerAllocatedItems): number;
|
|
19
|
+
private calculate_deflection_curve;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=semi_reboque_deflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semi_reboque_deflection.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/semi_reboque_deflection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAIlG;;GAEG;AACH,qBAAa,qBAAqB;IAO1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAN5C;;;OAGG;gBAEkB,kBAAkB,EAAE,gBAAgB,EACpC,uBAAuB,EAAE,MAAM;IAIpD;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM;IAMvE,OAAO,CAAC,0BAA0B;CASrC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BeamDeflection } from './beam_deflection.js';
|
|
2
|
+
import { calculate_deflection_indicator } from './deflection_tools.js';
|
|
3
|
+
/**
|
|
4
|
+
* Semi-reboque beam deflection indicator.
|
|
5
|
+
*/
|
|
6
|
+
export class SemiReboqueDeflection {
|
|
7
|
+
semi_reboque_model;
|
|
8
|
+
number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param semi_reboque_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(semi_reboque_model, number_of_curve_samples) {
|
|
14
|
+
this.semi_reboque_model = semi_reboque_model;
|
|
15
|
+
this.number_of_curve_samples = number_of_curve_samples;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @param multi_items - Allocated items.
|
|
19
|
+
* @returns Deflection indicator scalar.
|
|
20
|
+
*/
|
|
21
|
+
calculate_deflection(multi_items) {
|
|
22
|
+
const curve = this.calculate_deflection_curve(multi_items);
|
|
23
|
+
return calculate_deflection_indicator(curve);
|
|
24
|
+
}
|
|
25
|
+
calculate_deflection_curve(multi_items) {
|
|
26
|
+
const support = this.semi_reboque_model.calculate_support_data(multi_items);
|
|
27
|
+
const allocated = multi_items.get_allocated_items_by_grouper_index(1);
|
|
28
|
+
const beam = new BeamDeflection(support, allocated);
|
|
29
|
+
return beam.generate_curve_values(this.semi_reboque_model.calculate_container_length(), this.number_of_curve_samples);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SimpleTruckModel } from '../simple_truck_model.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js';
|
|
3
|
+
/**
|
|
4
|
+
* Caminhão beam deflection indicator.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SimpleTruckDeflection {
|
|
7
|
+
private readonly simple_truck_model;
|
|
8
|
+
private readonly number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param simple_truck_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(simple_truck_model: SimpleTruckModel, number_of_curve_samples: number);
|
|
14
|
+
/**
|
|
15
|
+
* @param multi_items - Allocated items.
|
|
16
|
+
* @returns Deflection indicator scalar.
|
|
17
|
+
*/
|
|
18
|
+
calculate_deflection(multi_items: MultiContainerAllocatedItems): number;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=simple_truck_deflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple_truck_deflection.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/simple_truck_deflection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAIlG;;GAEG;AACH,qBAAa,qBAAqB;IAO1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAN5C;;;OAGG;gBAEkB,kBAAkB,EAAE,gBAAgB,EACpC,uBAAuB,EAAE,MAAM;IAIpD;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM;CAU1E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BeamDeflection } from './beam_deflection.js';
|
|
2
|
+
import { calculate_deflection_indicator } from './deflection_tools.js';
|
|
3
|
+
/**
|
|
4
|
+
* Caminhão beam deflection indicator.
|
|
5
|
+
*/
|
|
6
|
+
export class SimpleTruckDeflection {
|
|
7
|
+
simple_truck_model;
|
|
8
|
+
number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param simple_truck_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(simple_truck_model, number_of_curve_samples) {
|
|
14
|
+
this.simple_truck_model = simple_truck_model;
|
|
15
|
+
this.number_of_curve_samples = number_of_curve_samples;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @param multi_items - Allocated items.
|
|
19
|
+
* @returns Deflection indicator scalar.
|
|
20
|
+
*/
|
|
21
|
+
calculate_deflection(multi_items) {
|
|
22
|
+
const support = this.simple_truck_model.calculate_support_data(multi_items);
|
|
23
|
+
const allocated = multi_items.get_allocated_items_by_grouper_index(1);
|
|
24
|
+
const beam = new BeamDeflection(support, allocated);
|
|
25
|
+
const curve = beam.generate_curve_values(this.simple_truck_model.calculate_container_length(), this.number_of_curve_samples);
|
|
26
|
+
return calculate_deflection_indicator(curve);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { VanderleiaModel } from '../vanderleia_model.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../../items/multi_container_allocated_items.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vanderleia trailer beam deflection indicator.
|
|
5
|
+
*/
|
|
6
|
+
export declare class VanderleiaDeflection {
|
|
7
|
+
private readonly vanderleia_model;
|
|
8
|
+
private readonly number_of_curve_samples;
|
|
9
|
+
/**
|
|
10
|
+
* @param vanderleia_model - Axle weight model.
|
|
11
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
12
|
+
*/
|
|
13
|
+
constructor(vanderleia_model: VanderleiaModel, number_of_curve_samples: number);
|
|
14
|
+
/**
|
|
15
|
+
* @param multi_items - Allocated items.
|
|
16
|
+
* @returns Deflection indicator scalar.
|
|
17
|
+
*/
|
|
18
|
+
calculate_deflection(multi_items: MultiContainerAllocatedItems): number;
|
|
19
|
+
private generate_support_data;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=vanderleia_deflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vanderleia_deflection.d.ts","sourceRoot":"","sources":["../../../../../src/core/physics/models/deflection/vanderleia_deflection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAIlG;;GAEG;AACH,qBAAa,oBAAoB;IAOzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAN5C;;;OAGG;gBAEkB,gBAAgB,EAAE,eAAe,EACjC,uBAAuB,EAAE,MAAM;IAIpD;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM;IAUvE,OAAO,CAAC,qBAAqB;CAYhC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CHASSI_REFERENCE } from '../../../contracts/chassi_reference.js';
|
|
2
|
+
import { BeamDeflection } from './beam_deflection.js';
|
|
3
|
+
import { calculate_deflection_indicator } from './deflection_tools.js';
|
|
4
|
+
/**
|
|
5
|
+
* Vanderleia trailer beam deflection indicator.
|
|
6
|
+
*/
|
|
7
|
+
export class VanderleiaDeflection {
|
|
8
|
+
vanderleia_model;
|
|
9
|
+
number_of_curve_samples;
|
|
10
|
+
/**
|
|
11
|
+
* @param vanderleia_model - Axle weight model.
|
|
12
|
+
* @param number_of_curve_samples - Curve sample count.
|
|
13
|
+
*/
|
|
14
|
+
constructor(vanderleia_model, number_of_curve_samples) {
|
|
15
|
+
this.vanderleia_model = vanderleia_model;
|
|
16
|
+
this.number_of_curve_samples = number_of_curve_samples;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param multi_items - Allocated items.
|
|
20
|
+
* @returns Deflection indicator scalar.
|
|
21
|
+
*/
|
|
22
|
+
calculate_deflection(multi_items) {
|
|
23
|
+
const support = this.generate_support_data(multi_items);
|
|
24
|
+
const allocated = multi_items.get_allocated_items_by_grouper_index(1);
|
|
25
|
+
const beam = new BeamDeflection(support, allocated);
|
|
26
|
+
const length = this.vanderleia_model.chassi.get_grouper_end(1, CHASSI_REFERENCE.GROUPER_1);
|
|
27
|
+
const curve = beam.generate_curve_values(length, this.number_of_curve_samples);
|
|
28
|
+
return calculate_deflection_indicator(curve);
|
|
29
|
+
}
|
|
30
|
+
generate_support_data(multi_items) {
|
|
31
|
+
const forces = this.vanderleia_model.calculate_chassi_forces(multi_items);
|
|
32
|
+
const trailer_force = forces.get_force_on_axle(2)
|
|
33
|
+
+ forces.get_force_on_axle(3)
|
|
34
|
+
+ forces.get_force_on_axle(4);
|
|
35
|
+
const pin = this.vanderleia_model.chassi.get_pin_position(0, CHASSI_REFERENCE.GROUPER_1);
|
|
36
|
+
const axle_3 = this.vanderleia_model.chassi.get_axle_position(2, CHASSI_REFERENCE.GROUPER_1);
|
|
37
|
+
const axle_5 = this.vanderleia_model.chassi.get_axle_position(4, CHASSI_REFERENCE.GROUPER_1);
|
|
38
|
+
const mean_axle = 0.5 * (axle_5 - axle_3) + axle_3;
|
|
39
|
+
return [[pin, forces.get_force_on_pin(0)], [mean_axle, trailer_force]];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Transport } from '../transports/transport.js';
|
|
2
|
+
/**
|
|
3
|
+
* Legacy tare split by vehicle type (Python OldTareModel).
|
|
4
|
+
*/
|
|
5
|
+
export declare class OldTareModel {
|
|
6
|
+
/**
|
|
7
|
+
* @param transport - Parsed transport.
|
|
8
|
+
* @returns Tare per axle.
|
|
9
|
+
*/
|
|
10
|
+
calculate(transport: Transport): number[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @param transport - Parsed transport.
|
|
14
|
+
* @returns Tare per axle for vehicle type.
|
|
15
|
+
*/
|
|
16
|
+
export declare function old_tare_by_vehicle(transport: Transport): number[];
|
|
17
|
+
//# sourceMappingURL=old_tare_model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"old_tare_model.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/old_tare_model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAM3D;;GAEG;AACH,qBAAa,YAAY;IAErB;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE;CAI5C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAwBlE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { VEHICLE_TYPE } from '../../contracts/vehicle_type.js';
|
|
2
|
+
import { scale_tare } from './old_tare_scale.js';
|
|
3
|
+
import { semireboque_tare } from './old_tare_semireboque.js';
|
|
4
|
+
import { vanderleia_tare } from './old_tare_vanderleia.js';
|
|
5
|
+
import { truck_tare } from './old_tare_truck.js';
|
|
6
|
+
/**
|
|
7
|
+
* Legacy tare split by vehicle type (Python OldTareModel).
|
|
8
|
+
*/
|
|
9
|
+
export class OldTareModel {
|
|
10
|
+
/**
|
|
11
|
+
* @param transport - Parsed transport.
|
|
12
|
+
* @returns Tare per axle.
|
|
13
|
+
*/
|
|
14
|
+
calculate(transport) {
|
|
15
|
+
return old_tare_by_vehicle(transport);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param transport - Parsed transport.
|
|
20
|
+
* @returns Tare per axle for vehicle type.
|
|
21
|
+
*/
|
|
22
|
+
export function old_tare_by_vehicle(transport) {
|
|
23
|
+
const type = transport.vehicle_type;
|
|
24
|
+
if (type === VEHICLE_TYPE.BITREM) {
|
|
25
|
+
return scale_tare(transport.tare, [0.23, 0.255, 0.285, 0.23]);
|
|
26
|
+
}
|
|
27
|
+
if (type === VEHICLE_TYPE.RODOTREM) {
|
|
28
|
+
return scale_tare(transport.tare, [0.19, 0.28, 0.21, 0.16, 0.16]);
|
|
29
|
+
}
|
|
30
|
+
if (type === VEHICLE_TYPE.SEMIREBOQUE || type === VEHICLE_TYPE.REBAIXADO) {
|
|
31
|
+
return semireboque_tare(transport);
|
|
32
|
+
}
|
|
33
|
+
if (type === VEHICLE_TYPE.VANDERLEIA) {
|
|
34
|
+
return vanderleia_tare(transport);
|
|
35
|
+
}
|
|
36
|
+
if (type === VEHICLE_TYPE.CAMINHAO || type === VEHICLE_TYPE.VUC) {
|
|
37
|
+
return truck_tare(transport);
|
|
38
|
+
}
|
|
39
|
+
return [];
|
|
40
|
+
}
|