PyFemtet 1.4.0__tar.gz → 1.5.1__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.
Files changed (181) hide show
  1. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/PKG-INFO +1 -1
  2. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/exceptions.py +14 -4
  3. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/femopt.py +7 -0
  4. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/history/__init__.py +1 -0
  5. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/history/_history.py +28 -21
  6. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +3 -2
  7. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/_base_optimizer.py +11 -1
  8. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +1 -0
  9. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyproject.toml +3 -1
  10. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/LICENSE +0 -0
  11. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/LICENSE_THIRD_PARTY.txt +0 -0
  12. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/README.md +0 -0
  13. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/__init__.py +0 -0
  14. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
  15. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/2. build_mo.bat +0 -0
  16. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/__init__.py +0 -0
  17. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/babel.cfg +0 -0
  18. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/i18n.py +0 -0
  19. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  20. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
  21. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/locales/messages.pot +0 -0
  22. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_i18n/messages.py +0 -0
  23. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/__init__.py +0 -0
  24. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/closing.py +0 -0
  25. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/dask_util.py +0 -0
  26. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/df_util.py +0 -0
  27. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/excel_macro_util.py +0 -0
  28. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/excel_parse_util.py +0 -0
  29. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/femtet_access_inspection.py +0 -0
  30. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/femtet_autosave.py +0 -0
  31. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/femtet_exit.py +0 -0
  32. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/femtet_version.py +0 -0
  33. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/helper.py +0 -0
  34. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/process_util.py +0 -0
  35. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/sample.xlsx +0 -0
  36. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/solidworks_variable.py +0 -0
  37. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/str_enum.py +0 -0
  38. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/_util/symbol_support_for_param_name.py +0 -0
  39. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/core.py +0 -0
  40. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/dispatch_extensions/__init__.py +0 -0
  41. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/dispatch_extensions/_impl.py +0 -0
  42. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/logger/__init__.py +0 -0
  43. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/logger/_impl.py +0 -0
  44. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/__init__.py +0 -0
  45. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/history/_hypervolume.py +0 -0
  46. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/history/_optimality.py +0 -0
  47. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/__init__.py +0 -0
  48. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_base_interface.py +0 -0
  49. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
  50. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
  51. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
  52. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +0 -0
  53. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
  54. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -0
  55. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
  56. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +0 -0
  57. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
  58. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
  59. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
  60. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
  61. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +0 -0
  62. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
  63. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +0 -0
  64. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +0 -0
  65. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
  66. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +0 -0
  67. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +0 -0
  68. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
  69. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
  70. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +0 -0
  71. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  72. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/__init__.py +0 -0
  73. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/__main__.py +0 -0
  74. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
  75. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
  76. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/__init__.py +0 -0
  77. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
  78. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
  79. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
  80. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
  81. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
  82. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
  83. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +0 -0
  84. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
  85. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
  86. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +0 -0
  87. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/prediction/__init__.py +0 -0
  88. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
  89. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
  90. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/prediction/_helper.py +0 -0
  91. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/prediction/_model.py +0 -0
  92. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/problem/__init__.py +0 -0
  93. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/problem/problem.py +0 -0
  94. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
  95. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
  96. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
  97. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/__init__.py +0 -0
  98. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
  99. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
  100. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
  101. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
  102. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
  103. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
  104. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
  105. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
  106. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
  107. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
  108. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
  109. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
  110. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
  111. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
  112. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
  113. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
  114. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
  115. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
  116. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
  117. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
  118. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
  119. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
  120. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
  121. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
  122. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
  123. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
  124. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
  125. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
  126. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
  127. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
  128. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
  129. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
  130. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
  131. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
  132. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
  133. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
  134. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
  135. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
  136. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
  137. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
  138. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
  139. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
  140. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
  141. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
  142. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
  143. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
  144. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
  145. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
  146. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
  147. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
  148. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
  149. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
  150. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
  151. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
  152. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
  153. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
  154. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
  155. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
  156. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
  157. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
  158. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
  159. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
  160. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
  161. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
  162. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
  163. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
  164. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
  165. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
  166. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
  167. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
  168. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
  169. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
  170. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
  171. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
  172. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
  173. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
  174. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
  175. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
  176. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
  177. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +0 -0
  178. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
  179. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
  180. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
  181. {pyfemtet-1.4.0 → pyfemtet-1.5.1}/pyfemtet/opt/worker_status.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyfemtet
3
- Version: 1.4.0
3
+ Version: 1.5.1
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -39,7 +39,17 @@ class InterruptOptimization(ExceptionDuringOptimization): ...
39
39
  class SkipSolve(ExceptionDuringOptimization): ...
40
40
 
41
41
 
42
- def show_experimental_warning(feature_name):
43
- warnings.warn(f'{feature_name} は実験的機能です。将来 API 等が'
44
- f'大きく変更されるか、機能自体が削除される'
45
- f'可能性があります。')
42
+ _shown = set()
43
+
44
+
45
+ def show_experimental_warning(feature_name, logger=None):
46
+ global _shown
47
+ if feature_name not in _shown:
48
+ _shown.add(feature_name)
49
+ msg = (f'{feature_name} は実験的機能です。将来 API 等が'
50
+ '大きく変更されるか、機能自体が削除される'
51
+ '可能性があります。')
52
+ if logger is not None:
53
+ logger.warning(msg)
54
+ else:
55
+ warnings.warn(msg)
@@ -20,6 +20,7 @@ from pyfemtet.opt.problem.variable_manager import *
20
20
  from pyfemtet.opt.interface import *
21
21
  from pyfemtet.opt.optimizer import *
22
22
  from pyfemtet.opt.optimizer._base_optimizer import DIRECTION
23
+ from pyfemtet.opt.history import History
23
24
  from pyfemtet.logger import get_module_logger
24
25
  from pyfemtet.opt.visualization.history_viewer._process_monitor._application import (
25
26
  process_monitor_main,
@@ -182,6 +183,12 @@ class FEMOpt:
182
183
  ):
183
184
  self.opt.add_sub_fidelity_model(name, sub_fidelity_model, fidelity)
184
185
 
186
+ def set_termination_condition(
187
+ self,
188
+ func: Callable[[History], bool] | None,
189
+ ):
190
+ self.opt.set_termination_condition(func)
191
+
185
192
  def set_monitor_host(self, host: str = None, port: int = None):
186
193
  """Sets the host IP address and the port of the process monitor.
187
194
 
@@ -8,4 +8,5 @@ __all__ = [
8
8
  'create_err_msg_from_exception',
9
9
  'CorrespondingColumnNameRuler',
10
10
  'MAIN_FILTER',
11
+ 'get_trial_name',
11
12
  ]
@@ -41,6 +41,7 @@ __all__ = [
41
41
  'create_err_msg_from_exception',
42
42
  'CorrespondingColumnNameRuler',
43
43
  'MAIN_FILTER',
44
+ 'get_trial_name'
44
45
  ]
45
46
 
46
47
  MAIN_FILTER: dict = {
@@ -50,7 +51,32 @@ MAIN_FILTER: dict = {
50
51
 
51
52
 
52
53
  logger = get_module_logger('opt.history', False)
53
- logger_dask = get_module_logger('opt.dask', False)
54
+ logger_dask = get_module_logger("opt.dask", False)
55
+
56
+
57
+ def get_trial_name(trial=None, fidelity=None, sub_sampling=None, row: pd.Series = None):
58
+ if row is not None:
59
+ assert not math.isnan(row["trial"])
60
+ trial = row["trial"]
61
+ fidelity = row["fidelity"] if not math.isnan(row["fidelity"]) else None
62
+ sub_sampling = (
63
+ row["sub_sampling"] if not math.isnan(row["sub_sampling"]) else None
64
+ )
65
+
66
+ name_parts = ["trial"]
67
+ if fidelity is not None:
68
+ fid = str(fidelity)
69
+ if fid != MAIN_FIDELITY_NAME:
70
+ name_parts.append(fid)
71
+
72
+ name_parts.append(str(trial))
73
+
74
+ if sub_sampling is not None:
75
+ name_parts.append(str(sub_sampling))
76
+
77
+ trial_name = '_'.join(name_parts)
78
+
79
+ return trial_name
54
80
 
55
81
 
56
82
  def _assert_locked_with_timeout(lock, assertion_message=None, timeout=10.):
@@ -1315,26 +1341,7 @@ class History:
1315
1341
 
1316
1342
  @staticmethod
1317
1343
  def get_trial_name(trial=None, fidelity=None, sub_sampling=None, row: pd.Series = None):
1318
- if row is not None:
1319
- assert not math.isnan(row['trial'])
1320
- trial = row['trial']
1321
- fidelity = row['fidelity'] if not math.isnan(row['fidelity']) else None
1322
- sub_sampling = row['sub_sampling'] if not math.isnan(row['sub_sampling']) else None
1323
-
1324
- name_parts = ['trial']
1325
- if fidelity is not None:
1326
- fid = str(fidelity)
1327
- if fid != MAIN_FIDELITY_NAME:
1328
- name_parts.append(fid)
1329
-
1330
- name_parts.append(str(trial))
1331
-
1332
- if sub_sampling is not None:
1333
- name_parts.append(str(sub_sampling))
1334
-
1335
- trial_name = '_'.join(name_parts)
1336
-
1337
- return trial_name
1344
+ return get_trial_name(trial, fidelity, sub_sampling, row)
1338
1345
 
1339
1346
  def recording(self, fem: AbstractFEMInterface):
1340
1347
  """:meta private:"""
@@ -34,6 +34,7 @@ from pyfemtet.dispatch_extensions import *
34
34
  from pyfemtet.opt.interface._base_interface import COMInterface
35
35
  from pyfemtet.opt.exceptions import *
36
36
  from pyfemtet.opt.problem.problem import *
37
+ from pyfemtet.opt.history import get_trial_name
37
38
 
38
39
  from ._femtet_parametric import *
39
40
 
@@ -1111,9 +1112,9 @@ class FemtetInterface(COMInterface):
1111
1112
  if save_results.lower() == 'optimal':
1112
1113
  for i, row in df.iterrows():
1113
1114
  if not bool(row['optimality']):
1114
- trial_to_remove = int(row['trial'])
1115
+ trial_name_to_remove = get_trial_name(row=row)
1115
1116
  pdt_path_to_remove = FemtetInterface._create_path(
1116
- original_femprj_path, model_name, trial_to_remove, ext='pdt')
1117
+ original_femprj_path, model_name, trial_name_to_remove, ext='pdt')
1117
1118
  if os.path.isfile(pdt_path_to_remove):
1118
1119
  os.remove(pdt_path_to_remove)
1119
1120
 
@@ -17,6 +17,7 @@ from pyfemtet.opt.problem.problem import *
17
17
  from pyfemtet.opt.problem.variable_manager import *
18
18
  from pyfemtet.opt.optimizer._trial_queue import *
19
19
  from pyfemtet.logger import get_module_logger
20
+ from pyfemtet.opt.exceptions import show_experimental_warning
20
21
 
21
22
  __all__ = [
22
23
  'AbstractOptimizer',
@@ -114,6 +115,7 @@ class AbstractOptimizer:
114
115
  self.fem: AbstractFEMInterface | None = None
115
116
  self.history: History = History()
116
117
  self.solve_condition: Callable[[History], bool] = lambda _: True
118
+ self.termination_condition: Callable[[History], bool] = lambda _: False
117
119
  self.entire_status: WorkerStatus = WorkerStatus(ENTIRE_PROCESS_STATUS_KEY)
118
120
  self.worker_status: WorkerStatus = WorkerStatus('worker-status')
119
121
  self.worker_status_list: list[WorkerStatus] = [self.worker_status]
@@ -397,6 +399,13 @@ class AbstractOptimizer:
397
399
  def set_solve_condition(self, fun: Callable[[History], bool]):
398
400
  self.solve_condition = fun
399
401
 
402
+ def set_termination_condition(self, fun: Callable[[History], bool] | None):
403
+ if fun is None:
404
+ self.termination_condition = lambda _: False
405
+ else:
406
+ self.termination_condition = fun
407
+ show_experimental_warning('set_termination_condition', logger)
408
+
400
409
  # ===== private =====
401
410
 
402
411
  def _setup_enqueued_trials(self):
@@ -505,7 +514,8 @@ class AbstractOptimizer:
505
514
  pass
506
515
 
507
516
  def _postprocess(self):
508
- pass
517
+ if self.opt.termination_condition(self.opt.history):
518
+ self.opt.entire_status.value = WorkerStatus.interrupting
509
519
 
510
520
  def _solve_or_raise(
511
521
  self,
@@ -267,6 +267,7 @@ class OptunaOptimizer(AbstractOptimizer):
267
267
  def _postprocess(self):
268
268
  # update trial attribute
269
269
  self.optuna_attr.set_user_attr_to_trial(self.opt.current_trial)
270
+ super()._postprocess()
270
271
 
271
272
  def _create_infeasible_constraints(self, opt_: AbstractOptimizer = None) -> tuple:
272
273
  opt_ = opt_ if opt_ is not None else self
@@ -33,7 +33,7 @@ dependencies = [
33
33
 
34
34
  #[project.optional-dependencies]
35
35
  #brep = ["brepmatching>=0.1.8,<0.2"]
36
- version = "1.4.0"
36
+ version = "1.5.1"
37
37
 
38
38
  [project.urls]
39
39
  Repository = "https://github.com/pyfemtet/pyfemtet"
@@ -57,6 +57,8 @@ dev = [
57
57
  "pytest-cov>=6.1.1",
58
58
  "pytest-reporter-html-dots>=0.11.0",
59
59
  "esbonio>=0.12.0",
60
+ "pandas-stubs>=2.3.2.250926",
61
+ "scipy-stubs>=1.15.3.0",
60
62
  ]
61
63
 
62
64
  [tool.uv-dynamic-versioning]
File without changes
File without changes
File without changes
File without changes