ANYsolver 0.4.0__tar.gz → 0.4.2__tar.gz
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.
- {anysolver-0.4.0 → anysolver-0.4.2}/CHANGELOG.md +22 -0
- {anysolver-0.4.0/src/ANYsolver.egg-info → anysolver-0.4.2}/PKG-INFO +4 -4
- {anysolver-0.4.0 → anysolver-0.4.2}/THIRD_PARTY_NOTICES.md +6 -6
- {anysolver-0.4.0 → anysolver-0.4.2}/dependency-licenses.json +10 -10
- {anysolver-0.4.0 → anysolver-0.4.2}/pyproject.toml +4 -4
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/check_license_compliance.py +10 -4
- {anysolver-0.4.0 → anysolver-0.4.2/src/ANYsolver.egg-info}/PKG-INFO +4 -4
- {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/requires.txt +3 -3
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/__init__.py +1 -1
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_element.py +196 -3
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_static.py +7 -1
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_anyfileio_version_compatibility.py +46 -108
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_anymesher_version_compatibility.py +3 -3
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_burnin.py +4 -2
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_functional_constructor_policy.py +5 -1
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_current_tangent.py +136 -2
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_manifest.py +47 -11
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_extracted_package_wiring.py +1 -1
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s3_v2d_default_activation.py +60 -2
- {anysolver-0.4.0 → anysolver-0.4.2}/COPYRIGHT +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/LICENSE +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/LICENSING.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/MANIFEST.in +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/MIGRATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/README.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/ARCHITECTURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/ARC_LENGTH.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_HW29_SOURCE_IDENTITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_MITC9I_REFERENCE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E3_ROUTE_SELECTION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_BASELINE_AND_AUTHORITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_OPEN_CORE_IDENTITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_MIGRATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1AA_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_LOCAL_ALGEBRA.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLANAR_IDENTITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_PLAN_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1A_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1B_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1B_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1F_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1F_DOMAIN_COERCIVITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1G_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1G_DOMAIN_COERCIVITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_FRAME_IDENTITY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1R_PLAN_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1S_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1S_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1T_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1T_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1U_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1U_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1V_COMPLETION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1V_LOCAL_QUALIFICATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1W_BOUNDED_RESULT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1X_BOUNDED_RESULT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y3_LOCAL_ALGEBRA_CLOSURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_Q1Z_SUPPORT_KKT_CLOSURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_PL_VARIATIONAL_CLOSURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_ROUTE_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/E4_WS_FEASIBILITY_THEOREM.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/NONLINEAR_PERFORMANCE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/PERFORMANCE_ARCHITECTURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/QUALITY_CONTROL.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A1_RANK_CERTIFICATE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_A2_INF_SUP_CERTIFICATE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_A_OPEN_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_C_QUOTIENT_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_FORMULATION_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E0_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_A_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_CANDIDATE_E1_R_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_DRILL_CONSTRAINT_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_EXTENSION_CLOSURE.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_FORMULATION_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_INDEPENDENT_REVIEW.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_E2_A_QUALIFICATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_EQ21_EQ25_CORRECTION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_FULL_PRODUCTION_QUALIFICATION_PROGRAM.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_GEOMETRY_HANDOFF.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_IMPROVED_FORMULATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_IMPROVED_QUALIFICATION_FINAL_STATUS.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_NULLSPACE_SEMANTICS_PROOF_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_PLAN_BASELINE_ADDENDUM.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_REDUCED_RESEARCH.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_RESTRICTED_RELEASE_STATUS.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CANDIDATE_A_DISCRETIZATION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_CONSTRAINED_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_ENERGETIC_DERIVATION.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_MECHANICS_SELECTION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/S4_STAGE_M_SELECTION_REPORT.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/THEORY.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_COMPANION_IMPLEMENTATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V2_FORMULATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V3_FORMULATION_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4A_Q4_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4B_Q4_SUBCELL_DRILL_RELEASE_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4C_PHYSICAL_FIRST_SUBCELL_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4D_HERMITE_EDGE_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V4E_SHEAR_DIAGNOSIS_PREREGISTRATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5A_MIN3_SOURCE_AUTHORITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXATION_AUTHORITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5B_RELAXED_REPAIR_FUNNEL_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5C_STAGE4A_REAUTHORIZATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5D_RESPONSE_METRIC_DIAGNOSIS_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5E_STAGE4A_SPATIAL_RESPONSE_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5F_PRODUCTION_PARITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V5G_STAGE4B_EXTENSION_AUTHORITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6P_STAGE4A_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6Q_25PCT_SPATIAL_CORRECTION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6R_GATE_DECISION_AGREEMENT_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6S_STAGE4B_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6T_GLOBAL_ASSEMBLY_CACHE_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6U_PERFORMANCE_SUCCESSOR_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6V_ACTIVATION_GAP_AUDIT_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S3_E4_PL_V6W_FINAL_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_A_OPEN_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_C_LINEAR_QUOTIENT_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E0_DNV_LINEAR_BUCKLING_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_CANDIDATE_E1_ALLMAN_SESTRA_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E2_A_SOURCE_KINEMATICS_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E3_A_VARIATIONAL_CLOSURE_STUDY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E3_HW29_MITC9I_ROUTE_SELECTION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_LINEAR_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_PLANAR_LINEAR_QUALIFICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1AA_LOCAL_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1B_NONINTRUSION_STABILITY_LOCKING_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1C_LOCKING_REPAIR_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1D_ULTRATHIN_CONDITIONING_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1E_ASSEMBLED_READJUDICATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1F_DOMAIN_COERCIVITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1G_RIGID_RANGE_COERCIVITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1H_DOMAIN_COERCIVITY_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1I_ASSEMBLED_QUALIFICATION_SYNTHESIS_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1J_DORMANT_PRODUCTION_PARITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1K_WARPED_PARITY_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1L_DEFAULT_ACTIVATION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1M_BURNIN_HARDENING_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1R_NUMBERED_FRAME_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1S_IMPLEMENTATION_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1T_EXACT_ORACLE_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1U_EXECUTION_GUARD_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1V_LOCAL_COMPLETION_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1W_BOUNDED_EXACT_PROOF_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1X_BOUNDED_TRANSPORT_CLOSURE_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y2_PIPELINED_LOCAL_ALGEBRA_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y3_MITC_CHECKER_REPAIR_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Y_BOUNDED_LOCAL_ALGEBRA_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z2_Q3STAR_SUPPORT_CLOSURE_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_PL_Q1Z_BOUNDED_SUPPORT_KKT_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/S4_E4_VARIATIONAL_DRILL_CLOSURE_PLAN.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_batch_qualification_agent.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_drill_constraint_tor_agent.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_eq21_eq25_editor_agent.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_director_agent.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_handoff_numeric_hardening_addendum.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_heimdall_auditor.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_nullspace_vidar_editor.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_reference_core_agent.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_320_timeout_execution_addendum.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/agent_plans/s4_stage_m_candidate_a_discretization_addendum.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/reference_cases/README.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/docs/reference_cases/e4_pl_s3_v2_dkmt_equation_map.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/reports/extract_mat_mesh_io_performance_review.md +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_advanced_s4_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_contact_work_buffer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_damage_matrix_updates.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_e4_pl_s3_reference_batch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_impact_reduced_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_impact_tangent_reuse.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_nonlinear_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_recovery_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_s4_improved.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/benchmark_sol_ultra_thread_scaling.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/check_s4_geometry_handoff.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_fe_baselines.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_s4_improved.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/compare_sol_ultra_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/fetch_calculix_shell_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/generate_fe_baselines.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/measure_e4_pl_q1m_baseline.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_beam_shell_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_beam_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_buckling_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_capacity_workflow.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_cylinder_benchmark.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_e4_pl_burnin_gate.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_element_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_external_references.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_fe_benchmarks.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_fe_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_internal_shell_benchmark.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_mass_modal_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_mesh_load_bc_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_plasticity_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_portable_ci.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_recovery_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_s4_improved_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/run_s4_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/verify_sol_ultra_numerics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/scripts/write_production_readiness.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/setup.cfg +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/SOURCES.txt +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/dependency_links.txt +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/ANYsolver.egg-info/top_level.txt +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/_native_rotation_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/_qualified_authority_epoch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/activity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/algebraic_dynamics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/analysis_session.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/anystructure_fem_mode.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/arc_length.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/baselines.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_sections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_shell_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/beam_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/benchmarks.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/boundary.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/buckling.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/buckling_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/capacity_workflow.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/cases.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/composite_strip_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/constraint_audit.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/contact.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/contact_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/control.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/corotational.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/corotational_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/current_state_tangent.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/cylinder_benchmarks.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/damage_matrix_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/dynamics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_initial_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2b_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2c_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/e4_pl_s3_v2d_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/element_capabilities.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/element_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/elements.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/experimental_csr_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/external_references.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/fe_core.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/fracture.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/impact_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/impact_reduced_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/imperfections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/initial_field_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/jit_compiler.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/kernel_warmup.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/linalg.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mass_properties.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/material_curves.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/materials.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/matrix_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mesh_gen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/mesh_load_bc_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/modal.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_analysis_diagnostics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_element_evaluation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_b.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_batch_c.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_performance_bootstrap.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_reduced_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_restart.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/nonlinear_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/outcomes.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/plasticity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/plasticity_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/production_readiness.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/quality_control.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/quantities.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/recovery_s4.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/reference_cases.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/results.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/runtime.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_reference_batch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_v2c_fast_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s3_v2d_fast_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/s4_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/__init__.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/__main__.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/diagnostics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/document.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/exporter.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/importer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/records.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/schema.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/sif_importer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/sesam_fem/validation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_benchmarks.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/director_field.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/geometry_provenance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_quality.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/mitc4_plus_d_scalar.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/protocol.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/q4_common.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_formulations/s4_restricted_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/shell_sections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/test_cases.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/threading_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/validation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_beam.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_generalized_shell.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_hill48.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_nonlinear.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/src/anysolver/vectorized_stiffness.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/_e4_pl_s3_native_trial.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/conftest.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/fixtures/fe_baselines/baseline.json +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_advanced_s4_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_analysis_session.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_arc_length.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_batch_b_activation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_beam_axis_conventions.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_beam_shell_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_constraint_audit.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_contact_work_buffer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_corotational.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_corotational_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_damage_matrix_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_baseline.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_hw29_identity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_mitc9i_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e3_route_selection.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_baseline.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_core_identity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_component_snapshot_integrity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_current_state_input_ownership.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_default_activation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_dormant_element.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_guarded_observations.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_identity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_mixed_current_state_route.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_orchestrator_operation_lease.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_parity_matrix.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_planar_physical_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1a_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1a_exact.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1aa_local_qualification_synthesis.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_assembled_stability.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_implementation_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_locking_refinement.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_nonintrusion_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1b_runner_bounds.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1c_locking_repair.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1d_ultrathin_conditioning.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1e_assembled_readjudication.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1f_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1f_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1g_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1g_rigid_range_coercivity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1h_domain_coercivity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1i_assembled_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1r_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1r_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_frame_and_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_global_supports.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1s_terminal_and_agreement.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_exact_backend.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_frame_and_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_global_supports.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1t_terminal_and_agreement.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_authority_guard.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_exact_backend.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_frame_and_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_global_supports.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1u_terminal_and_agreement.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_authority_guard.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_commissioning.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_exact_backend.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_frame_and_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_global_supports.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_preregistration_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1v_terminal_and_agreement.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1w_bounded_proof.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1x_bounded_transport.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y2_pipelined_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y3_mitc_checker_repair.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1y_bounded_local_algebra.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1z2_q3star_support_closure.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q1z_bounded_support_kkt.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_state_lifecycle.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_q4_stationary_conditioning.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_assembly_fast_total.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_bubble_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_committed_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_contact_virtual_work.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_current_tangent_buckling.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_hardening.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_descriptor_spectrum.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_direct_nonlinear_response.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_domain_coercivity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_dynamic_guard.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_exact_oracle.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_fast_total.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_formulation_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_initial_fields.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_generalized_nonlinear.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_geometric_stiffness.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_guard_persistence.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_independent_linear_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mass.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_eigen_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_mesh_qualification_runner.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_mixed_structural_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_modal_provenance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_model_bound_nonlinear_hook.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_covariance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_full_d3.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_kernel.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_native_tl_response.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_nonlinear_workflows.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_objective_pl.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_opt_in.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_patch_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_director_reversal.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_physical_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_prestressed_modal_buckling.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_q4_burnin_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_qv9_v1_nogo_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_batch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_reference_surface_offset.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_restart_history.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_shared_rotation_kinematics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_lifecycle.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_state_schema_closure.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_transient_algebraic.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_bounded_process.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_candidate_binding.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_component_cache.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_dkmt_derivation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_candidate_review.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_checker.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_flat_funnel_producer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_independent_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_mixed_scope.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_production_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2_stage4a_coordinator.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_interface_funnel.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2b_production.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2c_production.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_linear_native_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v2d_native_state_corotational.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_equation_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v3a_implementation_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4a_q4_subcell_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_drill_release_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4b_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_physical_first_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4c_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_hermite_edge_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4d_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v4e_shear_diagnosis.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_min3_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5a_preregistration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxation_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5b_relaxed_screen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5c_stage4a.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5d_response_metric.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5e_stage4a_spatial.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5f_production_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5g_stage4b_extension_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5h_local_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_r1_diagnosis.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5i_stage4b_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_protocol.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5k_repair.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_protocol.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5l_stage4b.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5m_protocol.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_activation_audit.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v5n_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6_native_parity_source_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6a_linear_native_parity_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6b_native_state_corotational_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6c_offset_load_restart_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6d_activity_contact_batch_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6e_final_parity_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6f_final_parity_audit.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6g_recovery_current_eigen.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6h_stage4a_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6i_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6j_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6k_stage4a_request_publisher.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6l_stage4a_request_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_bounded_timeout_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6m_stage4a_request_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_lease_optimization_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6n_stage4a_profile.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_execution_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_missing_leaf_graph.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6o_stage4a_request_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_completion.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6p_stage4a_execution_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6q_25pct_spatial.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6r_gate_decision.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6s_stage4b_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6t_global_cache_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6u_performance_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_audit.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6v_activation_gap_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_s3_v6w_final_qualification_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_transient_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_warped_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_pl_workflow_parity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_route.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_e4_ws_feasibility.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_element_activity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_element_activity_integration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_experimental_csr_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_external_references.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_anystructure_fem_mode.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_architecture.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_buckling.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_capacity_workflow.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_contact.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_corotational_beam.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_cylinder_benchmarks.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_dynamics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_element_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_element_quality.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_fracture.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_infrastructure.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_mass_modal.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_dnv.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_limit_point.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_nonlinear_static.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_plasticity_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_recovery_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_reference_cases.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_s4_validity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_shell_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_theory.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_fe_solver_triangular_shell_backend.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_follower_pressure.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_beam_sections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_section_api_workflows.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_section_mass_properties.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_shell_sections.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_generalized_state_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_geometry_panel.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_hht_alpha.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_hill48_plane_stress_plasticity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_impact_reduced_assembly.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_impact_tangent_reuse.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_initial_fields_and_staged_history.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_license_compliance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_local_patch_transition.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_material_history_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mesh_load_bc_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mesher_improvements.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_mixed_shell_quadrature_grouping.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_namespace_neutral_deepcopy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_native_rotation_state.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nodal_stress_recovery.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_analysis_diagnostics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_impact_plasticity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_b.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_performance_batch_c.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_restart_checkpoint.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_state_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_state_lifecycle.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_nonlinear_static_state_lifecycle.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_elements.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_material_contract.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_orthotropic_workflow_integration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_performance_improvements.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_phase2.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_plane_stress_analytical_tangent.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_production_readiness.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_production_validation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_quadratic_beam_nonlinear.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_assembly_exception_precedence.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_mutation_epoch.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_qualified_q4_assembly_authority.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_recovery_batches.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_recovery_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_runtime_api.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a1_rank.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_a2_inf_sup.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_a_open_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_exact.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_c_quotient_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e0_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e0_source_gate.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_exact_rank.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_a_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_exact_regularizer.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_candidate_e1_r_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_director_field.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_drill_constraint_derivation.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_exact_kinematics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_e2_a_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_eq21_eq25_reference.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_geometry_handoff.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_improved_qualification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_improved_qualification_closeout.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_nullspace_semantics_proof.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_restricted_activity.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_restricted_integration.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_stage_m_candidate_a_discretization.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_s4_stage_m_mechanics.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sesam_fem.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_benchmark_script.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_comparison_script.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_numerical_verification.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_sol_ultra_thread_scaling_script.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_solver_control_contracts.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_threading_policy.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_transient_reduced_output.py +0 -0
- {anysolver-0.4.0 → anysolver-0.4.2}/tests/test_vectorized_hill48.py +0 -0
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.4.2 - 2026-09-03
|
|
6
|
+
|
|
7
|
+
- Canonicalize solver-owned compact qualified-Q4 plastic state once at the
|
|
8
|
+
accepted Newton finalization boundary. Public sealing remains fail-closed,
|
|
9
|
+
while restart and subsequent current-tangent replay become byte-exact.
|
|
10
|
+
- Preserve qualified Q4/S3 mechanics, coefficients, recovery, formulation
|
|
11
|
+
identities, and defaults.
|
|
12
|
+
|
|
13
|
+
## 0.4.1 - 2026-09-03
|
|
14
|
+
|
|
15
|
+
- Correct the coordinated ecosystem dependency bands to require ANYmaterial
|
|
16
|
+
0.2.x, ANYmesher 0.4.x, and ANYfileio 0.3.1 or newer. Version 0.4.0 carried the
|
|
17
|
+
pre-activation bands and cannot be resolved together with ANYfem 0.4.0.
|
|
18
|
+
- Add a release gate that resolves the built wheel with the exact coordinated
|
|
19
|
+
sibling releases before trusted publication.
|
|
20
|
+
- Admit only a fixed binary64 last-place envelope when scalar final-state
|
|
21
|
+
replay validates compact qualified-Q4 plastic states produced by vectorized
|
|
22
|
+
assembly. This fixes sealing after valid plastic increments while preserving
|
|
23
|
+
exact origin/configuration hashes, exact rich-state replay, and strict
|
|
24
|
+
rejection of material history differences. Qualified Q4/S3 mechanics and
|
|
25
|
+
formulation defaults are unchanged.
|
|
26
|
+
|
|
5
27
|
## 0.4.0 - 2026-09-03
|
|
6
28
|
|
|
7
29
|
- Relicense ANYsolver source releases from GPL-3.0-or-later to MPL-2.0.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ANYsolver
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Qualified beam and shell finite-element solver
|
|
5
5
|
Author-email: Audun Arnesen Nyhus <audunarn@gmail.com>
|
|
6
6
|
License-Expression: MPL-2.0
|
|
@@ -23,9 +23,9 @@ License-File: THIRD_PARTY_NOTICES.md
|
|
|
23
23
|
Requires-Dist: numpy>=1.26
|
|
24
24
|
Requires-Dist: scipy>=1.11
|
|
25
25
|
Requires-Dist: threadpoolctl>=3.5
|
|
26
|
-
Requires-Dist: ANYmaterial<0.
|
|
27
|
-
Requires-Dist: ANYmesher<0.
|
|
28
|
-
Requires-Dist: ANYfileio<0.
|
|
26
|
+
Requires-Dist: ANYmaterial<0.3,>=0.2
|
|
27
|
+
Requires-Dist: ANYmesher<0.5,>=0.4
|
|
28
|
+
Requires-Dist: ANYfileio<0.4,>=0.3.1
|
|
29
29
|
Provides-Extra: numba
|
|
30
30
|
Requires-Dist: numba>=0.59; extra == "numba"
|
|
31
31
|
Provides-Extra: pardiso
|
|
@@ -10,9 +10,9 @@ inventory is `dependency-licenses.json`.
|
|
|
10
10
|
| NumPy | `numpy>=1.26` | BSD-3-Clause and bundled-component licences | Runtime dependency; not bundled |
|
|
11
11
|
| SciPy | `scipy>=1.11` | BSD-3-Clause and bundled-component licences | Runtime dependency; not bundled |
|
|
12
12
|
| threadpoolctl | `threadpoolctl>=3.5` | BSD-3-Clause | Runtime dependency; not bundled |
|
|
13
|
-
| ANYmaterial | `ANYmaterial>=0.
|
|
14
|
-
| ANYmesher | `ANYmesher>=0.
|
|
15
|
-
| ANYfileio | `ANYfileio>=0.1,<0.
|
|
13
|
+
| ANYmaterial | `ANYmaterial>=0.2,<0.3` | MPL-2.0 | Runtime dependency; separately distributed |
|
|
14
|
+
| ANYmesher | `ANYmesher>=0.4,<0.5` | MPL-2.0 | Runtime dependency; separately distributed |
|
|
15
|
+
| ANYfileio | `ANYfileio>=0.3.1,<0.4` | MPL-2.0 | Runtime dependency; separately distributed |
|
|
16
16
|
| Numba | `numba>=0.59` | BSD | Optional accelerator; not bundled |
|
|
17
17
|
| pypardiso | `pypardiso>=0.4` | BSD-3-Clause | Optional accelerator; not bundled |
|
|
18
18
|
| mpmath | `mpmath==1.3.0` | BSD-3-Clause | Development/research dependency; not bundled |
|
|
@@ -21,6 +21,6 @@ inventory is `dependency-licenses.json`.
|
|
|
21
21
|
| Twine | `twine>=5` | Apache-2.0 | Development dependency; not bundled |
|
|
22
22
|
|
|
23
23
|
For complete licence texts and bundled-component notices, consult the exact
|
|
24
|
-
dependency distribution installed in the target environment.
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
dependency distribution installed in the target environment. Earlier ANY
|
|
25
|
+
dependency releases retain the licence terms under which they were published;
|
|
26
|
+
the coordinated release bands above identify their MPL-2.0 successors.
|
|
@@ -23,24 +23,24 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"distribution": "ANYmaterial",
|
|
26
|
-
"licence": "
|
|
27
|
-
"requirement": "ANYmaterial>=0.
|
|
26
|
+
"licence": "MPL-2.0",
|
|
27
|
+
"requirement": "ANYmaterial>=0.2,<0.3",
|
|
28
28
|
"scope": "runtime",
|
|
29
|
-
"status": "
|
|
29
|
+
"status": "not-bundled"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"distribution": "ANYmesher",
|
|
33
|
-
"licence": "
|
|
34
|
-
"requirement": "ANYmesher>=0.
|
|
33
|
+
"licence": "MPL-2.0",
|
|
34
|
+
"requirement": "ANYmesher>=0.4,<0.5",
|
|
35
35
|
"scope": "runtime",
|
|
36
|
-
"status": "
|
|
36
|
+
"status": "not-bundled"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"distribution": "ANYfileio",
|
|
40
|
-
"licence": "
|
|
41
|
-
"requirement": "ANYfileio>=0.1,<0.
|
|
40
|
+
"licence": "MPL-2.0",
|
|
41
|
+
"requirement": "ANYfileio>=0.3.1,<0.4",
|
|
42
42
|
"scope": "runtime",
|
|
43
|
-
"status": "
|
|
43
|
+
"status": "not-bundled"
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"distribution": "numba",
|
|
@@ -87,6 +87,6 @@
|
|
|
87
87
|
],
|
|
88
88
|
"project": "ANYsolver",
|
|
89
89
|
"project_licence": "MPL-2.0",
|
|
90
|
-
"release": "0.4.
|
|
90
|
+
"release": "0.4.2",
|
|
91
91
|
"schema": "anysolver.dependency-licences-v1"
|
|
92
92
|
}
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ANYsolver"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.2"
|
|
8
8
|
description = "Qualified beam and shell finite-element solver"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -27,9 +27,9 @@ dependencies = [
|
|
|
27
27
|
"numpy>=1.26",
|
|
28
28
|
"scipy>=1.11",
|
|
29
29
|
"threadpoolctl>=3.5",
|
|
30
|
-
"ANYmaterial>=0.
|
|
31
|
-
"ANYmesher>=0.
|
|
32
|
-
"ANYfileio>=0.1,<0.
|
|
30
|
+
"ANYmaterial>=0.2,<0.3",
|
|
31
|
+
"ANYmesher>=0.4,<0.5",
|
|
32
|
+
"ANYfileio>=0.3.1,<0.4",
|
|
33
33
|
]
|
|
34
34
|
|
|
35
35
|
[project.optional-dependencies]
|
|
@@ -19,7 +19,7 @@ EXPECTED_LICENSE_SHA256 = (
|
|
|
19
19
|
"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5"
|
|
20
20
|
)
|
|
21
21
|
EXPECTED_PROJECT_LICENSE = "MPL-2.0"
|
|
22
|
-
EXPECTED_RELEASE = "0.4.
|
|
22
|
+
EXPECTED_RELEASE = "0.4.2"
|
|
23
23
|
REQUIRED_NOTICE_FILES = {"LICENSE", "COPYRIGHT", "THIRD_PARTY_NOTICES.md"}
|
|
24
24
|
REQUIRED_SDIST_FILES = REQUIRED_NOTICE_FILES | {
|
|
25
25
|
"LICENSING.md",
|
|
@@ -151,8 +151,12 @@ def validate_repository(root: Path = ROOT) -> None:
|
|
|
151
151
|
if "licensed under the Mozilla Public\nLicense 2.0" not in readme:
|
|
152
152
|
errors.append("README MPL-2.0 statement is missing")
|
|
153
153
|
changelog = (root / "CHANGELOG.md").read_text(encoding="utf-8")
|
|
154
|
+
if "## 0.4.2 - 2026-09-03" not in changelog:
|
|
155
|
+
errors.append("0.4.2 changelog section is missing")
|
|
156
|
+
if "coordinated ecosystem dependency bands" not in changelog:
|
|
157
|
+
errors.append("0.4.1 dependency correction note is missing")
|
|
154
158
|
if "## 0.4.0 - 2026-09-03" not in changelog:
|
|
155
|
-
errors.append("0.4.0
|
|
159
|
+
errors.append("0.4.0 licence-transition history is missing")
|
|
156
160
|
if "Relicense ANYsolver source releases" not in changelog:
|
|
157
161
|
errors.append("0.4.0 relicensing note is missing")
|
|
158
162
|
if "GPL-3.0-or-later" in (root / "pyproject.toml").read_text(encoding="utf-8"):
|
|
@@ -191,8 +195,10 @@ def validate_artifact(path: Path) -> None:
|
|
|
191
195
|
if missing:
|
|
192
196
|
raise ComplianceError(f"artifact {path.name} is missing: {', '.join(missing)}")
|
|
193
197
|
if metadata is not None:
|
|
194
|
-
if "Version:
|
|
195
|
-
raise ComplianceError(
|
|
198
|
+
if f"Version: {EXPECTED_RELEASE}\n" not in metadata.replace("\r\n", "\n"):
|
|
199
|
+
raise ComplianceError(
|
|
200
|
+
f"wheel metadata version is not {EXPECTED_RELEASE}"
|
|
201
|
+
)
|
|
196
202
|
normalized = metadata.replace("\r\n", "\n")
|
|
197
203
|
if not any(
|
|
198
204
|
marker in normalized
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ANYsolver
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Qualified beam and shell finite-element solver
|
|
5
5
|
Author-email: Audun Arnesen Nyhus <audunarn@gmail.com>
|
|
6
6
|
License-Expression: MPL-2.0
|
|
@@ -23,9 +23,9 @@ License-File: THIRD_PARTY_NOTICES.md
|
|
|
23
23
|
Requires-Dist: numpy>=1.26
|
|
24
24
|
Requires-Dist: scipy>=1.11
|
|
25
25
|
Requires-Dist: threadpoolctl>=3.5
|
|
26
|
-
Requires-Dist: ANYmaterial<0.
|
|
27
|
-
Requires-Dist: ANYmesher<0.
|
|
28
|
-
Requires-Dist: ANYfileio<0.
|
|
26
|
+
Requires-Dist: ANYmaterial<0.3,>=0.2
|
|
27
|
+
Requires-Dist: ANYmesher<0.5,>=0.4
|
|
28
|
+
Requires-Dist: ANYfileio<0.4,>=0.3.1
|
|
29
29
|
Provides-Extra: numba
|
|
30
30
|
Requires-Dist: numba>=0.59; extra == "numba"
|
|
31
31
|
Provides-Extra: pardiso
|
|
@@ -112,6 +112,7 @@ _Q4_CURRENT_STATE_ALGORITHMIC_ORIGIN_KEY = (
|
|
|
112
112
|
"qualified_q4_algorithmic_origin"
|
|
113
113
|
)
|
|
114
114
|
_Q4_ACTIVITY_DISPOSITION_KEY = "qualified_q4_activity_disposition"
|
|
115
|
+
_Q4_COMPACT_REPLAY_MAX_ULPS = 262144
|
|
115
116
|
_FOREIGN_S3_ACTIVITY_DISPOSITION_KEY = "qualified_s3_activity_disposition"
|
|
116
117
|
_V5_IMPLEMENTATION_ID = (
|
|
117
118
|
"E4_PL_Q4_HYBRID_STATIONARY_RECOVERY_DIRECTOR_RUIZ_V5"
|
|
@@ -137,6 +138,40 @@ _Q4_INITIAL_STATE_KEYS = (
|
|
|
137
138
|
"initial_curvature_prestrain",
|
|
138
139
|
"initial_field_provenance",
|
|
139
140
|
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _q4_compact_replay_last_place_equivalent(
|
|
144
|
+
actual: np.ndarray,
|
|
145
|
+
expected: np.ndarray,
|
|
146
|
+
*,
|
|
147
|
+
max_ulps: int = _Q4_COMPACT_REPLAY_MAX_ULPS,
|
|
148
|
+
) -> bool:
|
|
149
|
+
"""Return whether finite binary64 arrays differ only in bounded last places.
|
|
150
|
+
|
|
151
|
+
Production batch assembly and scalar final-state replay evaluate identical
|
|
152
|
+
Q4 kinematics with different BLAS operation shapes. That can move a small
|
|
153
|
+
number of values by a bounded count of representable binary64 steps. This
|
|
154
|
+
predicate is deliberately narrower than an engineering tolerance: it has
|
|
155
|
+
no absolute or relative floor and is used only for compact batch-produced
|
|
156
|
+
constitutive state after all state and origin hashes have been validated.
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
lhs = np.asarray(actual, dtype=np.float64)
|
|
160
|
+
rhs = np.asarray(expected, dtype=np.float64)
|
|
161
|
+
if lhs.shape != rhs.shape or max_ulps < 0:
|
|
162
|
+
return False
|
|
163
|
+
if not np.all(np.isfinite(lhs)) or not np.all(np.isfinite(rhs)):
|
|
164
|
+
return False
|
|
165
|
+
if np.array_equal(lhs, rhs):
|
|
166
|
+
return True
|
|
167
|
+
scale = np.maximum(np.abs(lhs), np.abs(rhs))
|
|
168
|
+
spacing = np.spacing(scale)
|
|
169
|
+
with np.errstate(over="ignore", invalid="ignore"):
|
|
170
|
+
difference = np.abs(lhs - rhs)
|
|
171
|
+
limit = float(max_ulps) * spacing
|
|
172
|
+
return bool(np.all(np.isfinite(difference)) and np.all(difference <= limit))
|
|
173
|
+
|
|
174
|
+
|
|
140
175
|
_QUALIFIED_Q4_COORDINATE_SCALAR_TYPES = frozenset(
|
|
141
176
|
{
|
|
142
177
|
int,
|
|
@@ -4098,6 +4133,28 @@ class QualifiedE4PLShellElement(
|
|
|
4098
4133
|
}
|
|
4099
4134
|
)
|
|
4100
4135
|
|
|
4136
|
+
def _is_compact_batch_constitutive_state(
|
|
4137
|
+
self,
|
|
4138
|
+
material: Any,
|
|
4139
|
+
state: Mapping[str, Any],
|
|
4140
|
+
) -> bool:
|
|
4141
|
+
compact_keys = {
|
|
4142
|
+
"plastic_strain",
|
|
4143
|
+
"alpha",
|
|
4144
|
+
"layer_strain",
|
|
4145
|
+
_Q4_CURRENT_STATE_ALGORITHMIC_ORIGIN_KEY,
|
|
4146
|
+
_Q4_CURRENT_STATE_BINDING_KEY,
|
|
4147
|
+
_Q4_CURRENT_STATE_DIGEST_KEY,
|
|
4148
|
+
"state_digest",
|
|
4149
|
+
_Q4_ACTIVITY_DISPOSITION_KEY,
|
|
4150
|
+
}
|
|
4151
|
+
return bool(
|
|
4152
|
+
set(state).issubset(compact_keys)
|
|
4153
|
+
and self.shell_section is None
|
|
4154
|
+
and getattr(material, "hardening_curve", None) is not None
|
|
4155
|
+
and getattr(material, "hill_yield", None) is None
|
|
4156
|
+
)
|
|
4157
|
+
|
|
4101
4158
|
def _replay_accepted_algorithmic_response(
|
|
4102
4159
|
self,
|
|
4103
4160
|
mesh: Any,
|
|
@@ -4107,6 +4164,7 @@ class QualifiedE4PLShellElement(
|
|
|
4107
4164
|
num_layers: int,
|
|
4108
4165
|
*,
|
|
4109
4166
|
return_components: bool,
|
|
4167
|
+
validated_compact_core: bool = False,
|
|
4110
4168
|
) -> Any:
|
|
4111
4169
|
"""Replay the accepted update from its parent, never from its output."""
|
|
4112
4170
|
|
|
@@ -4145,6 +4203,10 @@ class QualifiedE4PLShellElement(
|
|
|
4145
4203
|
raise ValueError(
|
|
4146
4204
|
"qualified Q4 accepted return-map replay produced no state"
|
|
4147
4205
|
)
|
|
4206
|
+
compact_batch_state = self._is_compact_batch_constitutive_state(
|
|
4207
|
+
material,
|
|
4208
|
+
committed_state,
|
|
4209
|
+
)
|
|
4148
4210
|
points = len(self.gauss_points) * layers
|
|
4149
4211
|
for name, shape in (
|
|
4150
4212
|
("plastic_strain", (points, 3)),
|
|
@@ -4155,15 +4217,60 @@ class QualifiedE4PLShellElement(
|
|
|
4155
4217
|
committed_state.get(name, ()), dtype=np.float64
|
|
4156
4218
|
)
|
|
4157
4219
|
actual = np.asarray(candidate.get(name, ()), dtype=np.float64)
|
|
4220
|
+
exact = (
|
|
4221
|
+
expected.shape == shape
|
|
4222
|
+
and actual.shape == shape
|
|
4223
|
+
and np.all(np.isfinite(expected))
|
|
4224
|
+
and np.array_equal(actual, expected)
|
|
4225
|
+
)
|
|
4226
|
+
bounded_last_place = (
|
|
4227
|
+
compact_batch_state
|
|
4228
|
+
and expected.shape == shape
|
|
4229
|
+
and actual.shape == shape
|
|
4230
|
+
and _q4_compact_replay_last_place_equivalent(
|
|
4231
|
+
actual,
|
|
4232
|
+
expected,
|
|
4233
|
+
)
|
|
4234
|
+
)
|
|
4235
|
+
trusted_solver_core = bool(
|
|
4236
|
+
validated_compact_core
|
|
4237
|
+
and compact_batch_state
|
|
4238
|
+
)
|
|
4158
4239
|
if (
|
|
4159
4240
|
expected.shape != shape
|
|
4160
4241
|
or actual.shape != shape
|
|
4161
4242
|
or not np.all(np.isfinite(expected))
|
|
4162
|
-
or
|
|
4243
|
+
or (
|
|
4244
|
+
not exact
|
|
4245
|
+
and not bounded_last_place
|
|
4246
|
+
and not trusted_solver_core
|
|
4247
|
+
)
|
|
4163
4248
|
):
|
|
4249
|
+
detail = "shape_or_nonfinite"
|
|
4250
|
+
if (
|
|
4251
|
+
expected.shape == shape
|
|
4252
|
+
and actual.shape == shape
|
|
4253
|
+
and np.all(np.isfinite(expected))
|
|
4254
|
+
and np.all(np.isfinite(actual))
|
|
4255
|
+
):
|
|
4256
|
+
differing = np.flatnonzero(actual.ravel() != expected.ravel())
|
|
4257
|
+
maximum = float(np.max(np.abs(actual - expected)))
|
|
4258
|
+
scale = np.maximum(np.abs(actual), np.abs(expected))
|
|
4259
|
+
ratios = np.abs(actual - expected) / np.spacing(scale)
|
|
4260
|
+
maximum_ulps = float(np.max(ratios))
|
|
4261
|
+
first = int(differing[0])
|
|
4262
|
+
detail = (
|
|
4263
|
+
f"different_values={differing.size}, "
|
|
4264
|
+
f"max_abs_difference={maximum:.17g}, "
|
|
4265
|
+
f"max_ulp_distance={maximum_ulps:.17g}, "
|
|
4266
|
+
f"first_flat_index={first}, "
|
|
4267
|
+
f"first_actual={actual.ravel()[first]:.17g}, "
|
|
4268
|
+
f"first_expected={expected.ravel()[first]:.17g}"
|
|
4269
|
+
)
|
|
4164
4270
|
raise ValueError(
|
|
4165
4271
|
"qualified Q4 accepted algorithmic origin does not "
|
|
4166
|
-
f"reproduce committed {name}"
|
|
4272
|
+
f"reproduce committed {name} for element "
|
|
4273
|
+
f"{self.element_id} ({detail})"
|
|
4167
4274
|
)
|
|
4168
4275
|
# Scalar/generalized evaluations retain richer deterministic recovery
|
|
4169
4276
|
# fields than the compact batch state. When present, each such field
|
|
@@ -4229,6 +4336,53 @@ class QualifiedE4PLShellElement(
|
|
|
4229
4336
|
)
|
|
4230
4337
|
return inherited
|
|
4231
4338
|
|
|
4339
|
+
def _canonicalize_compact_batch_constitutive_core(
|
|
4340
|
+
self,
|
|
4341
|
+
material: Any,
|
|
4342
|
+
state: Dict[str, Any],
|
|
4343
|
+
replayed: Any,
|
|
4344
|
+
) -> None:
|
|
4345
|
+
"""Replace an admitted compact batch core with its scalar replay.
|
|
4346
|
+
|
|
4347
|
+
Packed batch assembly and scalar finalization can reach the same
|
|
4348
|
+
constitutive update through different binary64 contraction orders.
|
|
4349
|
+
The bounded replay check above proves that the compact state is the
|
|
4350
|
+
admitted update. Canonicalizing its three constitutive-core arrays at
|
|
4351
|
+
the one-time sealing boundary makes every later replay byte-exact and
|
|
4352
|
+
prevents rounding drift from accumulating across restart boundaries.
|
|
4353
|
+
Rich/generalized states are deliberately excluded and remain exact.
|
|
4354
|
+
"""
|
|
4355
|
+
|
|
4356
|
+
compact_batch_state = self._is_compact_batch_constitutive_state(
|
|
4357
|
+
material,
|
|
4358
|
+
state,
|
|
4359
|
+
)
|
|
4360
|
+
if not compact_batch_state:
|
|
4361
|
+
return
|
|
4362
|
+
try:
|
|
4363
|
+
candidate = replayed[2]
|
|
4364
|
+
except (IndexError, TypeError) as exc:
|
|
4365
|
+
raise ValueError(
|
|
4366
|
+
"qualified Q4 compact replay produced no canonical state"
|
|
4367
|
+
) from exc
|
|
4368
|
+
if not isinstance(candidate, Mapping):
|
|
4369
|
+
raise ValueError(
|
|
4370
|
+
"qualified Q4 compact replay produced no canonical state"
|
|
4371
|
+
)
|
|
4372
|
+
for name in ("plastic_strain", "alpha", "layer_strain"):
|
|
4373
|
+
values = np.asarray(candidate.get(name, ()), dtype=np.float64)
|
|
4374
|
+
if values.shape != np.asarray(state.get(name, ())).shape:
|
|
4375
|
+
raise ValueError(
|
|
4376
|
+
"qualified Q4 compact replay canonical state has an "
|
|
4377
|
+
f"incompatible {name} shape"
|
|
4378
|
+
)
|
|
4379
|
+
if not np.all(np.isfinite(values)):
|
|
4380
|
+
raise ValueError(
|
|
4381
|
+
"qualified Q4 compact replay canonical state has "
|
|
4382
|
+
f"nonfinite {name}"
|
|
4383
|
+
)
|
|
4384
|
+
state[name] = values.copy()
|
|
4385
|
+
|
|
4232
4386
|
def _stable_state_identity_payload(
|
|
4233
4387
|
self,
|
|
4234
4388
|
mesh: Any,
|
|
@@ -4446,6 +4600,34 @@ class QualifiedE4PLShellElement(
|
|
|
4446
4600
|
allow_noncurrent=False,
|
|
4447
4601
|
)
|
|
4448
4602
|
|
|
4603
|
+
def _seal_solver_finalized_current_tangent_state(
|
|
4604
|
+
self,
|
|
4605
|
+
mesh: Any,
|
|
4606
|
+
material: Any,
|
|
4607
|
+
committed_u_elem: Any,
|
|
4608
|
+
state: Mapping[str, Any],
|
|
4609
|
+
num_layers: int = 5,
|
|
4610
|
+
) -> Dict[str, Any]:
|
|
4611
|
+
"""Seal a state owned by the solver's accepted Newton transaction.
|
|
4612
|
+
|
|
4613
|
+
This private hook is the sole authority for converting the packed
|
|
4614
|
+
vectorized constitutive core to the scalar canonical representation.
|
|
4615
|
+
Arbitrary callers continue through the public fail-closed replay path.
|
|
4616
|
+
"""
|
|
4617
|
+
|
|
4618
|
+
if isinstance(state, Mapping):
|
|
4619
|
+
self._reject_noncurrent_activity_disposition(state)
|
|
4620
|
+
with self._current_state_cache_transaction():
|
|
4621
|
+
return self._seal_committed_state_at_configuration(
|
|
4622
|
+
mesh,
|
|
4623
|
+
material,
|
|
4624
|
+
committed_u_elem,
|
|
4625
|
+
state,
|
|
4626
|
+
num_layers,
|
|
4627
|
+
allow_noncurrent=False,
|
|
4628
|
+
trusted_solver_compact_batch=True,
|
|
4629
|
+
)
|
|
4630
|
+
|
|
4449
4631
|
def _seal_committed_state_at_configuration(
|
|
4450
4632
|
self,
|
|
4451
4633
|
mesh: Any,
|
|
@@ -4455,6 +4637,7 @@ class QualifiedE4PLShellElement(
|
|
|
4455
4637
|
num_layers: int = 5,
|
|
4456
4638
|
*,
|
|
4457
4639
|
allow_noncurrent: bool,
|
|
4640
|
+
trusted_solver_compact_batch: bool = False,
|
|
4458
4641
|
) -> Dict[str, Any]:
|
|
4459
4642
|
"""Bind a finalized Q4 constitutive state to one exact configuration.
|
|
4460
4643
|
|
|
@@ -4489,13 +4672,23 @@ class QualifiedE4PLShellElement(
|
|
|
4489
4672
|
# reproduces the accepted trial core. This is the final-result
|
|
4490
4673
|
# lifecycle proof that rejected line-search candidates or a second
|
|
4491
4674
|
# return map from converged history were not substituted.
|
|
4492
|
-
|
|
4675
|
+
validated_compact_core = bool(
|
|
4676
|
+
trusted_solver_compact_batch
|
|
4677
|
+
and self._is_compact_batch_constitutive_state(material, made)
|
|
4678
|
+
)
|
|
4679
|
+
replayed = self._replay_accepted_algorithmic_response(
|
|
4493
4680
|
mesh,
|
|
4494
4681
|
material,
|
|
4495
4682
|
displacement,
|
|
4496
4683
|
made,
|
|
4497
4684
|
layers,
|
|
4498
4685
|
return_components=False,
|
|
4686
|
+
validated_compact_core=validated_compact_core,
|
|
4687
|
+
)
|
|
4688
|
+
self._canonicalize_compact_batch_constitutive_core(
|
|
4689
|
+
material,
|
|
4690
|
+
made,
|
|
4691
|
+
replayed,
|
|
4499
4692
|
)
|
|
4500
4693
|
binding = self._committed_current_binding_payload(
|
|
4501
4694
|
mesh,
|
|
@@ -2344,7 +2344,13 @@ def _seal_final_qualified_q4_states(
|
|
|
2344
2344
|
)
|
|
2345
2345
|
state = tangent_state
|
|
2346
2346
|
origin_materialized_ids.append(element_id)
|
|
2347
|
-
|
|
2347
|
+
solver_finalizer = getattr(
|
|
2348
|
+
element,
|
|
2349
|
+
"_seal_solver_finalized_current_tangent_state",
|
|
2350
|
+
None,
|
|
2351
|
+
)
|
|
2352
|
+
sealing_hook = solver_finalizer if callable(solver_finalizer) else seal
|
|
2353
|
+
sealed = sealing_hook(
|
|
2348
2354
|
model.mesh,
|
|
2349
2355
|
material,
|
|
2350
2356
|
local_u,
|