PyFemtet 1.8.2__tar.gz → 1.9.0__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 (183) hide show
  1. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/PKG-INFO +1 -1
  2. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/excel_macro_util.py +10 -1
  3. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/femopt.py +9 -144
  4. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_base_interface.py +10 -0
  5. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +28 -12
  6. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -1
  7. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +11 -0
  8. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +1 -1
  9. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/_base_optimizer.py +149 -62
  10. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +1 -1
  11. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyproject.toml +1 -1
  12. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/LICENSE +0 -0
  13. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/LICENSE_THIRD_PARTY.txt +0 -0
  14. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/README.md +0 -0
  15. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/__init__.py +0 -0
  16. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
  17. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/2. build_mo.bat +0 -0
  18. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/__init__.py +0 -0
  19. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/babel.cfg +0 -0
  20. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/i18n.py +0 -0
  21. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  22. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
  23. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/messages.pot +0 -0
  24. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/messages.py +0 -0
  25. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/__init__.py +0 -0
  26. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/closing.py +0 -0
  27. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/dask_util.py +0 -0
  28. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/df_util.py +0 -0
  29. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/excel_parse_util.py +0 -0
  30. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_access_inspection.py +0 -0
  31. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_autosave.py +0 -0
  32. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_exit.py +0 -0
  33. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_version.py +0 -0
  34. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/helper.py +0 -0
  35. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/process_util.py +0 -0
  36. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/sample.xlsx +0 -0
  37. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/solidworks_variable.py +0 -0
  38. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/str_enum.py +0 -0
  39. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/symbol_support_for_param_name.py +0 -0
  40. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/core.py +0 -0
  41. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/dispatch_extensions/__init__.py +0 -0
  42. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/dispatch_extensions/_impl.py +0 -0
  43. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/logger/__init__.py +0 -0
  44. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/logger/_impl.py +0 -0
  45. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/__init__.py +0 -0
  46. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/exceptions.py +0 -0
  47. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/__init__.py +0 -0
  48. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_history.py +0 -0
  49. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_hypervolume.py +0 -0
  50. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_optimality.py +0 -0
  51. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/__init__.py +0 -0
  52. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
  53. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
  54. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
  55. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
  56. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
  57. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +0 -0
  58. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
  59. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
  60. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
  61. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
  62. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +0 -0
  63. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_multiple_fem_interface.py +0 -0
  64. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_reopen_decorator.py +0 -0
  65. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
  66. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +0 -0
  67. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +0 -0
  68. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
  69. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +0 -0
  70. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
  71. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
  72. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +0 -0
  73. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  74. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/__init__.py +0 -0
  75. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/__main__.py +0 -0
  76. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
  77. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
  78. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/__init__.py +0 -0
  79. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
  80. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
  81. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
  82. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +0 -0
  83. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
  84. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
  85. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
  86. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
  87. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
  88. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +0 -0
  89. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/__init__.py +0 -0
  90. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
  91. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
  92. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_helper.py +0 -0
  93. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_model.py +0 -0
  94. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/__init__.py +0 -0
  95. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/problem.py +0 -0
  96. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
  97. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
  98. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
  99. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/__init__.py +0 -0
  100. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
  101. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
  102. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
  103. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
  104. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
  105. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
  106. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
  107. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
  108. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
  109. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
  110. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
  111. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
  112. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
  113. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
  114. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
  115. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
  116. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
  117. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
  118. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
  119. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
  120. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
  121. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
  122. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
  123. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
  124. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
  125. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
  126. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
  127. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
  128. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
  129. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
  130. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
  131. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
  132. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
  133. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
  134. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
  135. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
  136. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
  137. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
  138. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
  139. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
  140. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
  141. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
  142. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
  143. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
  144. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
  145. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
  146. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
  147. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
  148. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
  149. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
  150. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
  151. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
  152. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
  153. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
  154. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
  155. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
  156. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
  157. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
  158. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
  159. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
  160. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
  161. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
  162. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
  163. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
  164. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
  165. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
  166. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
  167. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
  168. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
  169. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
  170. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
  171. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
  172. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
  173. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
  174. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
  175. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
  176. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
  177. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
  178. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
  179. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +0 -0
  180. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
  181. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
  182. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
  183. {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/worker_status.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyfemtet
3
- Version: 1.8.2
3
+ Version: 1.9.0
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -31,7 +31,16 @@ class _ExcelDialogProcessor:
31
31
 
32
32
  def __init__(self, excel_, timeout, restore_book=True):
33
33
  self.excel = excel_
34
- self.excel_pid = _get_pid(excel_.hWnd)
34
+
35
+ if hasattr(excel_, 'hWnd'):
36
+ self.excel_pid = _get_pid(excel_.hWnd)
37
+ elif hasattr(excel_, 'Hwnd'):
38
+ self.excel_pid = _get_pid(excel_.Hwnd)
39
+ elif hasattr(excel_, 'HWnd'):
40
+ self.excel_pid = _get_pid(excel_.HWnd)
41
+ else:
42
+ raise AttributeError('Cannot found excel window handle attribute.')
43
+
35
44
  self.__excel_window_title = f' - Excel' # {basename} - Excel
36
45
  self.__error_dialog_title = 'Microsoft Visual Basic'
37
46
  self.__vbe_window_title = f'Microsoft Visual Basic for Applications - ' # Microsoft Visual Basic for Applications - {basename}
@@ -49,8 +49,8 @@ class FEMOpt:
49
49
 
50
50
  def __init__(
51
51
  self,
52
- fem: AbstractFEMInterface = None,
53
- opt: AbstractOptimizer = None,
52
+ fem: AbstractFEMInterface | None = None,
53
+ opt: AbstractOptimizer | None = None,
54
54
  ):
55
55
  self.opt: AbstractOptimizer = opt or OptunaOptimizer()
56
56
 
@@ -160,7 +160,7 @@ class FEMOpt:
160
160
  names: str | list[str],
161
161
  fun: Callable[..., Sequence[float]],
162
162
  n_return: int,
163
- directions: DIRECTION | Sequence[DIRECTION] = None,
163
+ directions: DIRECTION | Sequence[DIRECTION] | None = None,
164
164
  args: tuple | None = None,
165
165
  kwargs: dict | None = None,
166
166
  ):
@@ -208,7 +208,7 @@ class FEMOpt:
208
208
  ):
209
209
  self.opt.set_termination_condition(func)
210
210
 
211
- def set_monitor_host(self, host: str = None, port: int = None):
211
+ def set_monitor_host(self, host: str | None = None, port: int | None = None):
212
212
  """Sets the host IP address and the port of the process monitor.
213
213
 
214
214
  Args:
@@ -240,14 +240,14 @@ class FEMOpt:
240
240
 
241
241
  def optimize(
242
242
  self,
243
- n_trials: int = None,
243
+ n_trials: int | None = None,
244
244
  n_parallel: int = 1,
245
- timeout: float = None,
245
+ timeout: float | None = None,
246
246
  wait_setup: bool = True,
247
247
  confirm_before_exit: bool = True,
248
- history_path: str = None,
248
+ history_path: str | None = None,
249
249
  with_monitor: bool = True,
250
- scheduler_address: str = None,
250
+ scheduler_address: str | None = None,
251
251
  seed: int | None = None,
252
252
  ):
253
253
 
@@ -258,7 +258,7 @@ class FEMOpt:
258
258
  ver=pyfemtet.__version__,
259
259
  )
260
260
  )
261
- client: Client
261
+ client: Client | DummyClient
262
262
 
263
263
  # set arguments
264
264
  self.opt.n_trials = n_trials or self.opt.n_trials
@@ -274,7 +274,6 @@ class FEMOpt:
274
274
  worker_name_base = 'Sub'
275
275
  if n_parallel == 1:
276
276
  cluster = nullcontext()
277
- # noinspection PyTypeChecker
278
277
  client = DummyClient()
279
278
 
280
279
  else:
@@ -534,137 +533,3 @@ class FEMOpt:
534
533
  logger.info(_('All processes are terminated.'))
535
534
 
536
535
  return df
537
-
538
-
539
- def debug_1():
540
- # noinspection PyUnresolvedReferences
541
- from time import sleep
542
- # from pyfemtet.opt.optimizer import InterruptOptimization
543
- import optuna
544
- from pyfemtet.opt.interface import AbstractFEMInterface, NoFEM
545
-
546
- def _parabola(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
547
- x = _opt.get_variables('values')
548
- # print(os.getpid())
549
- # raise RuntimeError
550
- # raise Interrupt
551
- # if get_worker() is None:
552
- # raise RuntimeError
553
- return (x ** 2).sum()
554
-
555
- def _cns(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
556
- x = _opt.get_variables('values')
557
- return x[0]
558
-
559
- _opt = OptunaOptimizer()
560
- _opt.sampler = optuna.samplers.TPESampler(seed=42)
561
- _opt.n_trials = 10
562
-
563
- _fem = NoFEM()
564
- _opt.fem = _fem
565
-
566
- _args = (_opt,)
567
-
568
- _opt.add_parameter('x1', 1, -1, 1, step=0.2)
569
- _opt.add_parameter('x2', 1, -1, 1, step=0.2)
570
-
571
- _opt.add_constraint('cns', _cns, lower_bound=-0.5, args=_args)
572
-
573
- _opt.add_objective('obj', _parabola, args=_args)
574
-
575
- _femopt = FEMOpt(fem=_fem, opt=_opt)
576
- _femopt.opt = _opt
577
- # _femopt.opt.history.path = 'v1test/femopt-restart-test.csv'
578
- _femopt.optimize(n_parallel=2)
579
-
580
- print(os.path.abspath(_femopt.opt.history.path))
581
-
582
-
583
- def substrate_size(Femtet):
584
- """基板のXY平面上での専有面積を計算します。"""
585
- substrate_w = Femtet.GetVariableValue('substrate_w')
586
- substrate_d = Femtet.GetVariableValue('substrate_d')
587
-
588
- # assert get_worker() is not None
589
-
590
- return substrate_w * substrate_d # 単位: mm2
591
-
592
-
593
- def debug_2():
594
- from pyfemtet.opt.interface import FemtetInterface
595
- from pyfemtet.opt.optimizer import OptunaOptimizer
596
-
597
- fem = FemtetInterface(
598
- femprj_path=os.path.join(os.path.dirname(__file__), 'wat_ex14_parametric_jp.femprj'),
599
- )
600
-
601
- opt = OptunaOptimizer()
602
-
603
- opt.fem = fem
604
-
605
- opt.add_parameter(name="substrate_w", initial_value=40, lower_bound=22, upper_bound=60)
606
- opt.add_parameter(name="substrate_d", initial_value=60, lower_bound=34, upper_bound=60)
607
- opt.add_objective(name='基板サイズ(mm2)', fun=substrate_size)
608
- opt.add_objective(name='obj2', fun=substrate_size)
609
- opt.add_objective(name='obj3', fun=substrate_size)
610
-
611
- opt.n_trials = 10
612
- # opt.history.path = os.path.join(os.path.dirname(__file__), 'femtet-test.csv')
613
-
614
- femopt = FEMOpt()
615
-
616
- femopt.opt = opt
617
-
618
- femopt.optimize(n_parallel=1)
619
-
620
-
621
- def debug_3():
622
- # noinspection PyUnresolvedReferences
623
- from time import sleep
624
- # from pyfemtet.opt.optimizer import InterruptOptimization
625
- import optuna
626
- from pyfemtet.opt.interface import AbstractFEMInterface, NoFEM
627
-
628
- def _parabola(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
629
- x = _opt.get_variables('values')
630
- # print(os.getpid())
631
- # raise RuntimeError
632
- # raise Interrupt
633
- # if get_worker() is None:
634
- # raise RuntimeError
635
- return (x ** 2).sum()
636
-
637
- def _cns(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
638
- x = _opt.get_variables('values')
639
- return x[0]
640
-
641
- _opt = OptunaOptimizer()
642
- _opt.sampler = optuna.samplers.TPESampler(seed=42)
643
-
644
- _fem = NoFEM()
645
- _opt.fem = _fem
646
-
647
- _args = (_opt,)
648
-
649
- _opt.add_parameter('x1', 1, -1, 1, step=0.2)
650
- _opt.add_parameter('x2', 1, -1, 1, step=0.2)
651
-
652
- _opt.add_constraint('cns', _cns, lower_bound=-0.5, args=_args)
653
-
654
- _opt.add_objective('obj', _parabola, args=_args)
655
-
656
- _femopt = FEMOpt(fem=_fem, opt=_opt)
657
- _femopt.optimize(
658
- scheduler_address='<dask scheduler で起動したスケジューラの tcp をここに入力>',
659
- n_trials=80,
660
- n_parallel=6,
661
- with_monitor=True,
662
- confirm_before_exit=False,
663
- )
664
-
665
-
666
- if __name__ == '__main__':
667
- # for i in range(1):
668
- debug_1()
669
- # debug_2()
670
- # debug_3()
@@ -244,6 +244,16 @@ class AbstractFEMInterface:
244
244
  def _get_additional_data(self) -> dict:
245
245
  return dict()
246
246
 
247
+ # name
248
+ @property
249
+ def name(self) -> str:
250
+ if hasattr(self, '_name'):
251
+ return self._name
252
+ return self.__class__.__name__
253
+
254
+ @name.setter
255
+ def name(self, value: str):
256
+ self._name = value
247
257
 
248
258
  class COMInterface(AbstractFEMInterface):
249
259
 
@@ -470,11 +470,19 @@ class ExcelInterface(COMInterface):
470
470
  sleep(0.5)
471
471
 
472
472
  # 起動した excel の pid を記憶する
473
- self._excel_hwnd = self.excel.hWnd
473
+ if hasattr(self.excel, "hWnd"):
474
+ self._excel_hwnd = self.excel.hWnd
475
+ elif hasattr(self.excel, "Hwnd"):
476
+ self._excel_hwnd = self.excel.Hwnd
477
+ elif hasattr(self.excel, "HWnd"):
478
+ self._excel_hwnd = self.excel.HWnd
479
+ else:
480
+ raise RuntimeError('Failed to get Excel window handle. Cannot determine Excel process ID.')
481
+
474
482
  self._excel_pid = 0
475
483
  while self._excel_pid == 0:
476
484
  sleep(0.5)
477
- self._excel_pid = _get_pid(self.excel.hWnd)
485
+ self._excel_pid = _get_pid(self._excel_hwnd)
478
486
 
479
487
  # 可視性の設定
480
488
  self.excel.Visible = self.visible
@@ -583,7 +591,13 @@ class ExcelInterface(COMInterface):
583
591
  self.remove_femtet_addin_reference(wb)
584
592
  femtet_addin_path = self.get_femtet_addin_path()
585
593
  if femtet_addin_path is not None:
586
- wb.VBProject.References.AddFromFile(femtet_addin_path)
594
+ try:
595
+ wb.VBProject.References.AddFromFile(femtet_addin_path)
596
+ except com_error:
597
+ logger.warning(_(
598
+ jp_message="Femtet のアドインファイルの参照の追加に失敗しました。すでに追加されている可能性があります。",
599
+ en_message="Failed to add reference of Femtet add-in file. It may have already been added.",
600
+ ))
587
601
 
588
602
  # ===== load =====
589
603
  def load_variables(self, opt: OptimizationDataPerFEM, raise_if_no_keyword=True) -> None:
@@ -648,7 +662,6 @@ class ExcelInterface(COMInterface):
648
662
  upper_bound=ub,
649
663
  step=step,
650
664
  fix=not use,
651
- supress_duplicated_name_check=True,
652
665
  )
653
666
 
654
667
  elif kind == 'Categorical':
@@ -661,7 +674,6 @@ class ExcelInterface(COMInterface):
661
674
  initial_value=value,
662
675
  choices=choices,
663
676
  fix=not use,
664
- supress_duplicated_name_check=True,
665
677
  )
666
678
 
667
679
  else:
@@ -708,7 +720,6 @@ class ExcelInterface(COMInterface):
708
720
  direction=direction,
709
721
  fun=_ScapeGoatObjective(),
710
722
  kwargs=dict(name=name),
711
- supress_duplicated_name_check=True,
712
723
  )
713
724
 
714
725
  def load_constraints(self, opt: OptimizationDataPerFEM, raise_if_no_keyword=False):
@@ -770,19 +781,18 @@ class ExcelInterface(COMInterface):
770
781
  fun=_ScapeGoatObjective(),
771
782
  kwargs=dict(name=name),
772
783
  using_fem=not calc_before_solve,
773
- supress_duplicated_name_check=True,
774
784
  )
775
785
 
776
786
  def objective_from_excel(self, _, name: str):
777
787
  r = 1 + search_r(self.output_xlsm_path, self.output_sheet_name, name)
778
788
  c = 1 + search_c(self.output_xlsm_path, self.output_sheet_name, ParseAsObjective.value)
779
- v = self.sh_output.Cells(r, c).value
789
+ v = self.sh_output.Cells(r, c).Value
780
790
  return float(v)
781
791
 
782
792
  def constraint_from_excel(self, _, name: str):
783
793
  r = 1 + search_r(self.constraint_xlsm_path, self.constraint_sheet_name, name)
784
794
  c = 1 + search_c(self.constraint_xlsm_path, self.constraint_sheet_name, ParseAsConstraint.value)
785
- v = self.sh_constraint.Cells(r, c).value
795
+ v = self.sh_constraint.Cells(r, c).Value
786
796
  return float(v)
787
797
 
788
798
  # ===== Workbook and WorkSheet =====
@@ -797,7 +807,13 @@ class ExcelInterface(COMInterface):
797
807
 
798
808
  @staticmethod
799
809
  def _get_sh(wb: CDispatch, name) -> CDispatch:
800
- for sh in wb.WorkSheets:
810
+ if hasattr(wb, 'WorkSheets'):
811
+ sheets = wb.WorkSheets
812
+ elif hasattr(wb, 'Worksheets'):
813
+ sheets = wb.Worksheets
814
+ else:
815
+ raise RuntimeError('Failed to get Worksheets. Cannot determine sheet collection.')
816
+ for sh in sheets:
801
817
  if sh.Name == name:
802
818
  return sh
803
819
  else:
@@ -857,7 +873,7 @@ class ExcelInterface(COMInterface):
857
873
  if self.use_named_range:
858
874
  for key, variable in self.current_prm_values.items():
859
875
  try:
860
- self.sh_input.Range(key).value = variable.value
876
+ self.sh_input.Range(key).Value = variable.value
861
877
  except com_error:
862
878
  logger.warning(
863
879
  _(
@@ -874,7 +890,7 @@ class ExcelInterface(COMInterface):
874
890
  for name, variable in self.current_prm_values.items():
875
891
  r = 1 + search_r(self.input_xlsm_path, self.input_sheet_name, name)
876
892
  c = 1 + search_c(self.input_xlsm_path, self.input_sheet_name, ParseAsParameter.value)
877
- self.sh_input.Cells(r, c).value = variable.value
893
+ self.sh_input.Cells(r, c).Value = variable.value
878
894
 
879
895
  # 再計算
880
896
  self.excel.CalculateFull()
@@ -223,7 +223,6 @@ def add_parametric_results_as_objectives(opt, Femtet, indexes, directions) -> bo
223
223
  # objective value function
224
224
  opt.add_objective(
225
225
  name=name, fun=_parametric_objective, direction=direction, args=(i,),
226
- supress_duplicated_name_check=True,
227
226
  )
228
227
  return True # ここまで来たら成功
229
228
 
@@ -185,6 +185,17 @@ class FemtetInterface(COMInterface):
185
185
 
186
186
  # ===== system =====
187
187
 
188
+ @property
189
+ def name(self) -> str:
190
+ name = ""
191
+ if self.femprj_path is not None:
192
+ name += os.path.basename(self.femprj_path)
193
+ if self.model_name is not None:
194
+ name += f' - {self.model_name}'
195
+ if name == "":
196
+ name = super().name
197
+ return name
198
+
188
199
  @property
189
200
  def object_pass_to_fun(self):
190
201
  """The object pass to the first argument of user-defined objective functions.
@@ -122,7 +122,7 @@ class AbstractSurrogateModelInterfaceBase(AbstractFEMInterface):
122
122
  def dummy(*args, **kwargs):
123
123
  assert False
124
124
 
125
- ctx.add_objective(obj_name, dummy, direction, supress_duplicated_name_check=True)
125
+ ctx.add_objective(obj_name, dummy, direction)
126
126
 
127
127
  # ctx の目的関数のうち train に含まれるものを差し替え
128
128
  # directions の目的変数名を validation しているので漏れはないはず