pyfemtet 0.4.12__py3-none-any.whl → 0.4.14__py3-none-any.whl

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.

Potentially problematic release.


This version of pyfemtet might be problematic. Click here for more details.

Files changed (111) hide show
  1. pyfemtet/__init__.py +1 -1
  2. pyfemtet/dispatch_extensions.py +4 -0
  3. pyfemtet/message/1. make_pot.bat +12 -0
  4. pyfemtet/message/2. make_mo.bat +6 -0
  5. pyfemtet/message/__init__.py +5 -0
  6. pyfemtet/message/babel.cfg +2 -0
  7. pyfemtet/message/locales/ja/LC_MESSAGES/messages.po +449 -0
  8. pyfemtet/message/locales/messages.pot +439 -0
  9. pyfemtet/message/messages.py +174 -0
  10. pyfemtet/opt/_femopt.py +9 -9
  11. pyfemtet/opt/_femopt_core.py +22 -17
  12. pyfemtet/opt/femprj_sample/ParametricIF - True.femprj +0 -0
  13. pyfemtet/opt/femprj_sample/ParametricIF.femprj +0 -0
  14. pyfemtet/opt/femprj_sample/ParametricIF.py +31 -0
  15. pyfemtet/opt/femprj_sample/ParametricIF_test_result.reccsv +13 -0
  16. pyfemtet/opt/femprj_sample/cad_ex01_NX_test_result.reccsv +13 -13
  17. pyfemtet/opt/femprj_sample/cad_ex01_SW_test_result.reccsv +13 -13
  18. pyfemtet/opt/femprj_sample/gal_ex58_parametric_test_result.reccsv +13 -13
  19. pyfemtet/opt/femprj_sample/gau_ex08_parametric_test_result.reccsv +23 -23
  20. pyfemtet/opt/femprj_sample/her_ex40_parametric_test_result.reccsv +18 -18
  21. pyfemtet/opt/femprj_sample/paswat_ex1_parametric_test_result.reccsv +18 -18
  22. pyfemtet/opt/femprj_sample/tutorial.femprj +0 -0
  23. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14.pdt +0 -0
  24. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial1.jpg +0 -0
  25. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial1.pdt +0 -0
  26. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial10.jpg +0 -0
  27. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial10.pdt +0 -0
  28. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial11.jpg +0 -0
  29. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial11.pdt +0 -0
  30. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial12.jpg +0 -0
  31. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial12.pdt +0 -0
  32. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial13.jpg +0 -0
  33. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial13.pdt +0 -0
  34. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial14.jpg +0 -0
  35. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial14.pdt +0 -0
  36. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial15.jpg +0 -0
  37. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial15.pdt +0 -0
  38. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial2.jpg +0 -0
  39. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial2.pdt +0 -0
  40. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial3.jpg +0 -0
  41. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial3.pdt +0 -0
  42. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial4.jpg +0 -0
  43. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial4.pdt +0 -0
  44. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial5.jpg +0 -0
  45. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial5.pdt +0 -0
  46. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial6.jpg +0 -0
  47. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial6.pdt +0 -0
  48. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial7.jpg +0 -0
  49. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial7.pdt +0 -0
  50. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial8.jpg +0 -0
  51. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial8.pdt +0 -0
  52. pyfemtet/opt/femprj_sample/wat_ex14_parametric.Results/Ex14_trial9.jpg +0 -0
  53. pyfemtet/opt/{visualization/result_viewer/tutorial → femprj_sample}/wat_ex14_parametric.Results/Ex14_trial9.pdt +0 -0
  54. pyfemtet/opt/femprj_sample/wat_ex14_parametric_test_result.reccsv +18 -18
  55. pyfemtet/opt/femprj_sample_jp/ParametricIF_jp.femprj +0 -0
  56. pyfemtet/opt/femprj_sample_jp/ParametricIF_jp.py +31 -0
  57. pyfemtet/opt/interface/_femtet.py +45 -47
  58. pyfemtet/opt/interface/_femtet_parametric.py +7 -2
  59. pyfemtet/opt/interface/_femtet_with_nx/_interface.py +4 -4
  60. pyfemtet/opt/interface/_femtet_with_nx/update_model.py +6 -6
  61. pyfemtet/opt/interface/_femtet_with_sldworks.py +5 -4
  62. pyfemtet/opt/opt/__init__.py +2 -0
  63. pyfemtet/opt/opt/_base.py +41 -20
  64. pyfemtet/opt/opt/_optuna.py +8 -13
  65. pyfemtet/opt/opt/_scipy.py +4 -8
  66. pyfemtet/opt/opt/_scipy_scalar.py +1 -5
  67. pyfemtet/opt/prediction/__init__.py +0 -0
  68. pyfemtet/opt/prediction/base.py +52 -0
  69. pyfemtet/opt/prediction/single_task_gp.py +82 -0
  70. pyfemtet/opt/visualization/complex_components/control_femtet.py +9 -11
  71. pyfemtet/opt/visualization/complex_components/main_figure_creator.py +24 -11
  72. pyfemtet/opt/visualization/complex_components/main_graph.py +3 -4
  73. pyfemtet/opt/visualization/complex_components/pm_graph.py +715 -0
  74. pyfemtet/opt/visualization/complex_components/pm_graph_creator.py +168 -0
  75. pyfemtet/opt/visualization/process_monitor/application.py +16 -12
  76. pyfemtet/opt/visualization/process_monitor/pages.py +22 -7
  77. pyfemtet/opt/visualization/result_viewer/application.py +8 -3
  78. pyfemtet/opt/visualization/result_viewer/pages.py +59 -47
  79. {pyfemtet-0.4.12.dist-info → pyfemtet-0.4.14.dist-info}/METADATA +2 -1
  80. pyfemtet-0.4.14.dist-info/RECORD +151 -0
  81. pyfemtet/opt/visualization/result_viewer/tutorial/tutorial.csv +0 -18
  82. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14.jpg +0 -0
  83. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14.log +0 -81
  84. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14.pdt +0 -0
  85. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_heatflow.csv +0 -28
  86. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_heatflow_el.csv +0 -22
  87. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial1.jpg +0 -0
  88. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial10.jpg +0 -0
  89. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial11.jpg +0 -0
  90. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial11.pdt +0 -0
  91. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial12.jpg +0 -0
  92. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial12.pdt +0 -0
  93. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial13.jpg +0 -0
  94. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial13.pdt +0 -0
  95. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial14.jpg +0 -0
  96. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial14.pdt +0 -0
  97. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial15.jpg +0 -0
  98. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial15.pdt +0 -0
  99. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial2.jpg +0 -0
  100. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial3.jpg +0 -0
  101. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial4.jpg +0 -0
  102. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial5.jpg +0 -0
  103. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial6.jpg +0 -0
  104. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial7.jpg +0 -0
  105. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial8.jpg +0 -0
  106. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.Results/Ex14_trial9.jpg +0 -0
  107. pyfemtet/opt/visualization/result_viewer/tutorial/wat_ex14_parametric.femprj +0 -0
  108. pyfemtet-0.4.12.dist-info/RECORD +0 -138
  109. {pyfemtet-0.4.12.dist-info → pyfemtet-0.4.14.dist-info}/LICENSE +0 -0
  110. {pyfemtet-0.4.12.dist-info → pyfemtet-0.4.14.dist-info}/WHEEL +0 -0
  111. {pyfemtet-0.4.12.dist-info → pyfemtet-0.4.14.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,439 @@
1
+ # Translations template for PROJECT.
2
+ # Copyright (C) 2024 ORGANIZATION
3
+ # This file is distributed under the same license as the PROJECT project.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PROJECT VERSION\n"
10
+ "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11
+ "POT-Creation-Date: 2024-07-22 22:47+0900\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=utf-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Generated-By: Babel 2.15.0\n"
19
+
20
+ #: pyfemtet/message/messages.py:30
21
+ msgid "hello!"
22
+ msgstr ""
23
+
24
+ #: pyfemtet/message/messages.py:35
25
+ msgid "Press enter to quit..."
26
+ msgstr ""
27
+
28
+ #: pyfemtet/message/messages.py:38
29
+ msgid "The magnitude relationship is incorrect."
30
+ msgstr ""
31
+
32
+ #: pyfemtet/message/messages.py:39
33
+ msgid "The direction of the objective function must be 'minimize', 'maximize' or a number. "
34
+ msgstr ""
35
+
36
+ #: pyfemtet/message/messages.py:40
37
+ msgid "The variable name, object name, or constraint name contains characters that cannot be encoded. Do not use environment-dependent characters."
38
+ msgstr ""
39
+
40
+ #: pyfemtet/message/messages.py:41
41
+ msgid "The running configuration does not match the configuration in the csv file."
42
+ msgstr ""
43
+
44
+ #: pyfemtet/message/messages.py:44
45
+ msgid "Please specify initial_value."
46
+ msgstr ""
47
+
48
+ #: pyfemtet/message/messages.py:45
49
+ msgid "Constraint functions are evaluated before analysis is performed, so do not access Femtet.Gogh. If you want your constraints to include values after analysis is performed, set the `strict` argument to False."
50
+ msgstr ""
51
+
52
+ #: pyfemtet/message/messages.py:49
53
+ msgid "History csv file is in use and cannot be written to. Please free this file before exiting the program, otherwise history data will be lost."
54
+ msgstr ""
55
+
56
+ #: pyfemtet/message/messages.py:52
57
+ msgid "Optimization finished. Results were saved in following:"
58
+ msgstr ""
59
+
60
+ #: pyfemtet/message/messages.py:55
61
+ msgid "\"%UGII_BASE_DIR%\\NXBIN\\run_journal.exe\" is not found. Make sure you have NX installed and the environment variable UGII_BASE_DIR is set."
62
+ msgstr ""
63
+
64
+ #: pyfemtet/message/messages.py:56
65
+ msgid "Model reconstruction failed."
66
+ msgstr ""
67
+
68
+ #: pyfemtet/message/messages.py:57
69
+ msgid "Model update failed."
70
+ msgstr ""
71
+
72
+ #: pyfemtet/message/messages.py:58
73
+ msgid "It was detected that the configuration of Femtet python macro constants has not been completed. The configuration was done automatically (python -m win32com.client.makepy FemtetMacro). Please restart the program."
74
+ msgstr ""
75
+
76
+ #: pyfemtet/message/messages.py:59
77
+ msgid "Failed to connect to Femtet."
78
+ msgstr ""
79
+
80
+ #: pyfemtet/message/messages.py:60
81
+ msgid "The Femtet process crashed and could not be restarted successfully."
82
+ msgstr ""
83
+
84
+ #: pyfemtet/message/messages.py:61
85
+ msgid "An abnormal termination of the Femtet process has been detected. Recovery will be attempted."
86
+ msgstr ""
87
+
88
+ #: pyfemtet/message/messages.py:62
89
+ msgid "Femtet has been restarted and will perform analysis and attempt to recover."
90
+ msgstr ""
91
+
92
+ #: pyfemtet/message/messages.py:63
93
+ msgid "If you specify 'new' as the 'connect_method' argument, set the 'femprj_path' argument to existing femprj file path."
94
+ msgstr ""
95
+
96
+ #: pyfemtet/message/messages.py:64
97
+ msgid "The specified variable is not included in the Femtet analysis model. Note the capitalization of the variable."
98
+ msgstr ""
99
+
100
+ #: pyfemtet/message/messages.py:65
101
+ msgid "The following APIs are not accessible: "
102
+ msgstr ""
103
+
104
+ #: pyfemtet/message/messages.py:66
105
+ msgid "Macros may not be enabled in the installed version of Femtet. Please run the \"Enable Macros\" command from the start menu with administrator privileges in the same version of Femtet that is installed."
106
+ msgstr ""
107
+
108
+ #: pyfemtet/message/messages.py:67
109
+ msgid "No analysis model is open"
110
+ msgstr ""
111
+
112
+ #: pyfemtet/message/messages.py:68
113
+ msgid "The analysis model does not contain any variables."
114
+ msgstr ""
115
+
116
+ #: pyfemtet/message/messages.py:69
117
+ msgid "Failed to update variables:"
118
+ msgstr ""
119
+
120
+ #: pyfemtet/message/messages.py:70
121
+ msgid "The specified variable is not included in the analysis model and will be ignored."
122
+ msgstr ""
123
+
124
+ #: pyfemtet/message/messages.py:71
125
+ msgid "Model history re-execute failed."
126
+ msgstr ""
127
+
128
+ #: pyfemtet/message/messages.py:72
129
+ msgid "Model redraw failed."
130
+ msgstr ""
131
+
132
+ #: pyfemtet/message/messages.py:73
133
+ msgid "Mesh generation failed"
134
+ msgstr ""
135
+
136
+ #: pyfemtet/message/messages.py:74
137
+ msgid "Parametric solve failed"
138
+ msgstr ""
139
+
140
+ #: pyfemtet/message/messages.py:75
141
+ msgid "Solve failed."
142
+ msgstr ""
143
+
144
+ #: pyfemtet/message/messages.py:76
145
+ msgid "Open result failed."
146
+ msgstr ""
147
+
148
+ #: pyfemtet/message/messages.py:77
149
+ msgid "Failed to close Femtet."
150
+ msgstr ""
151
+
152
+ #: pyfemtet/message/messages.py:78
153
+ msgid "Failed to save result (.pdt) file."
154
+ msgstr ""
155
+
156
+ #: pyfemtet/message/messages.py:79
157
+ msgid "Failed to save screenshot (.jpg)."
158
+ msgstr ""
159
+
160
+ #: pyfemtet/message/messages.py:80
161
+ msgid "Screenshot (.jpg) is not found."
162
+ msgstr ""
163
+
164
+ #: pyfemtet/message/messages.py:81
165
+ msgid "Failed to update model in solidworks."
166
+ msgstr ""
167
+
168
+ #: pyfemtet/message/messages.py:84
169
+ msgid "The following features are not supported by the specified optimization method. "
170
+ msgstr ""
171
+
172
+ #: pyfemtet/message/messages.py:85
173
+ msgid "The parameter set does not match the one added with add_init_parameter."
174
+ msgstr ""
175
+
176
+ #: pyfemtet/message/messages.py:86
177
+ msgid "An exception has occurred during FEM update. Current parameters are: "
178
+ msgstr ""
179
+
180
+ #: pyfemtet/message/messages.py:87
181
+ msgid "The constraints were not satisfied for the following sets of variables:"
182
+ msgstr ""
183
+
184
+ #: pyfemtet/message/messages.py:88
185
+ msgid "Current parameter set cannot update FEM and this optimization method cannot skip current parameter set. The optimization process will be terminated."
186
+ msgstr ""
187
+
188
+ #: pyfemtet/message/messages.py:89
189
+ msgid "Optimization has been interrupted. Note that you cannot acquire the OptimizationResult in case of `trust-constr`, `TNC`, `SLSQP` or `COBYLA`."
190
+ msgstr ""
191
+
192
+ #: pyfemtet/message/messages.py:93
193
+ msgid "Connect to Femtet"
194
+ msgstr ""
195
+
196
+ #: pyfemtet/message/messages.py:94
197
+ msgid "Analysis model name described in csv does not exist in project."
198
+ msgstr ""
199
+
200
+ #: pyfemtet/message/messages.py:95
201
+ msgid "History csv is not read yet. Open your project manually."
202
+ msgstr ""
203
+
204
+ #: pyfemtet/message/messages.py:96
205
+ msgid "Cannot read project data from csv. Open your project manually."
206
+ msgstr ""
207
+
208
+ #: pyfemtet/message/messages.py:97
209
+ msgid ".femprj file described in csv is not found. Open your project manually."
210
+ msgstr ""
211
+
212
+ #: pyfemtet/message/messages.py:98
213
+ msgid "Analysis model name is not specified. Open your model in the project manually."
214
+ msgstr ""
215
+
216
+ #: pyfemtet/message/messages.py:100
217
+ msgid "Constraint"
218
+ msgstr ""
219
+
220
+ #: pyfemtet/message/messages.py:101
221
+ msgid "feasible"
222
+ msgstr ""
223
+
224
+ #: pyfemtet/message/messages.py:102
225
+ msgid "infeasible"
226
+ msgstr ""
227
+
228
+ #: pyfemtet/message/messages.py:103
229
+ msgid "Optimality"
230
+ msgstr ""
231
+
232
+ #: pyfemtet/message/messages.py:104
233
+ msgid "non dominated"
234
+ msgstr ""
235
+
236
+ #: pyfemtet/message/messages.py:105
237
+ msgid "dominated"
238
+ msgstr ""
239
+
240
+ #: pyfemtet/message/messages.py:106
241
+ msgid "Hypervolume Plot"
242
+ msgstr ""
243
+
244
+ #: pyfemtet/message/messages.py:107
245
+ msgid "Objective Plot"
246
+ msgstr ""
247
+
248
+ #: pyfemtet/message/messages.py:108
249
+ msgid "Multi Objective Pair Plot"
250
+ msgstr ""
251
+
252
+ #: pyfemtet/message/messages.py:109
253
+ msgid "trial number"
254
+ msgstr ""
255
+
256
+ #: pyfemtet/message/messages.py:111
257
+ msgid "Objectives"
258
+ msgstr ""
259
+
260
+ #: pyfemtet/message/messages.py:113
261
+ msgid "Prediction Model"
262
+ msgstr ""
263
+
264
+ #: pyfemtet/message/messages.py:114
265
+ msgid " Recalculate Model"
266
+ msgstr ""
267
+
268
+ #: pyfemtet/message/messages.py:115
269
+ msgid " Redraw graph"
270
+ msgstr ""
271
+
272
+ #: pyfemtet/message/messages.py:116
273
+ msgid "Parameter"
274
+ msgstr ""
275
+
276
+ #: pyfemtet/message/messages.py:117
277
+ msgid "Parameter2"
278
+ msgstr ""
279
+
280
+ #: pyfemtet/message/messages.py:118
281
+ msgid "Objective"
282
+ msgstr ""
283
+
284
+ #: pyfemtet/message/messages.py:119
285
+ msgid "No history selected."
286
+ msgstr ""
287
+
288
+ #: pyfemtet/message/messages.py:120
289
+ msgid "No FEM result (yet)."
290
+ msgstr ""
291
+
292
+ #: pyfemtet/message/messages.py:121
293
+ msgid "Prediction model is not calculated yet."
294
+ msgstr ""
295
+
296
+ #: pyfemtet/message/messages.py:122
297
+ msgid "Cannot select same parameter"
298
+ msgstr ""
299
+
300
+ #: pyfemtet/message/messages.py:124
301
+ msgid "Prediction Model of Objective"
302
+ msgstr ""
303
+
304
+ #: pyfemtet/message/messages.py:125
305
+ msgid "prediction model"
306
+ msgstr ""
307
+
308
+ #: pyfemtet/message/messages.py:126
309
+ msgid "std. dev. of model"
310
+ msgstr ""
311
+
312
+ #: pyfemtet/message/messages.py:128
313
+ msgid "Progress"
314
+ msgstr ""
315
+
316
+ #: pyfemtet/message/messages.py:129
317
+ msgid "Prediction"
318
+ msgstr ""
319
+
320
+ #: pyfemtet/message/messages.py:130
321
+ msgid "Workers"
322
+ msgstr ""
323
+
324
+ #: pyfemtet/message/messages.py:132
325
+ msgid "Optimization status will be shown here."
326
+ msgstr ""
327
+
328
+ #: pyfemtet/message/messages.py:133
329
+ msgid "Auto-update graph"
330
+ msgstr ""
331
+
332
+ #: pyfemtet/message/messages.py:134
333
+ msgid "Interrupt Optimization"
334
+ msgstr ""
335
+
336
+ #: pyfemtet/message/messages.py:136
337
+ msgid "Result"
338
+ msgstr ""
339
+
340
+ #: pyfemtet/message/messages.py:138
341
+ msgid "Open Result in Femtet"
342
+ msgstr ""
343
+
344
+ #: pyfemtet/message/messages.py:139
345
+ msgid "Reconstruct Model"
346
+ msgstr ""
347
+
348
+ #: pyfemtet/message/messages.py:140
349
+ msgid "Drag and drop or select csv file"
350
+ msgstr ""
351
+
352
+ #: pyfemtet/message/messages.py:141
353
+ msgid "Connection to Femtet is not established. Launch Femtet and Open a project."
354
+ msgstr ""
355
+
356
+ #: pyfemtet/message/messages.py:142
357
+ msgid "No result plot is selected."
358
+ msgstr ""
359
+
360
+ #: pyfemtet/message/messages.py:143
361
+ msgid "The femprj file path in the history csv is not found or valid."
362
+ msgstr ""
363
+
364
+ #: pyfemtet/message/messages.py:144
365
+ msgid "The model name in the history csv is not found."
366
+ msgstr ""
367
+
368
+ #: pyfemtet/message/messages.py:145
369
+ msgid ".pdt file is not found. Please check the .Results folder. Note that .pdt file save mode depends on the `save_pdt` argument of FemtetInterface in optimization script(default to `all`)."
370
+ msgstr ""
371
+
372
+ #: pyfemtet/message/messages.py:150
373
+ msgid "Failed to open "
374
+ msgstr ""
375
+
376
+ #: pyfemtet/message/messages.py:151
377
+ msgid "Specified model is not in current project. Please check opened project. For example, not \"analysis model only\" but your .femprj file."
378
+ msgstr ""
379
+
380
+ #: pyfemtet/message/messages.py:154
381
+ msgid ".femprj file path of the history csv is invalid. Please certify matching between csv and opening .femprj file."
382
+ msgstr ""
383
+
384
+ #: pyfemtet/message/messages.py:155
385
+ msgid "Analysis model name of the history csv is invalid. Please certify matching between csv and opening analysis model."
386
+ msgstr ""
387
+
388
+ #: pyfemtet/message/messages.py:156
389
+ msgid "Analysis model name of the history csv and opened in Femtet is inconsistent. Please certify matching between csv and opening analysis model."
390
+ msgstr ""
391
+
392
+ #: pyfemtet/message/messages.py:157
393
+ msgid "tutorial mode"
394
+ msgstr ""
395
+
396
+ #: pyfemtet/message/messages.py:158
397
+ msgid "Load Sample CSV"
398
+ msgstr ""
399
+
400
+ #: pyfemtet/message/messages.py:159
401
+ msgid "Load CSV"
402
+ msgstr ""
403
+
404
+ #: pyfemtet/message/messages.py:160
405
+ msgid "Open your optimization result. Then connecting to femtet will start automatically. Note that in tutorial mode, this button loads the ready-made sample csv and open sample femprj."
406
+ msgstr ""
407
+
408
+ #: pyfemtet/message/messages.py:162
409
+ msgid "Main Graph"
410
+ msgstr ""
411
+
412
+ #: pyfemtet/message/messages.py:163
413
+ msgid "Here the optimization history is shown. Each plot represents single FEM result. You can pick a result to open the corresponding result in Femtet. "
414
+ msgstr ""
415
+
416
+ #: pyfemtet/message/messages.py:166
417
+ msgid "Open Result"
418
+ msgstr ""
419
+
420
+ #: pyfemtet/message/messages.py:167
421
+ msgid "After pick a point in the main graph, This button shows the corresponding FEM result in Femtet."
422
+ msgstr ""
423
+
424
+ #: pyfemtet/message/messages.py:169
425
+ msgid "Re-connect to Femtet."
426
+ msgstr ""
427
+
428
+ #: pyfemtet/message/messages.py:170
429
+ msgid "Sample csv is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
430
+ msgstr ""
431
+
432
+ #: pyfemtet/message/messages.py:171
433
+ msgid "Sample femprj file is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
434
+ msgstr ""
435
+
436
+ #: pyfemtet/message/messages.py:172
437
+ msgid "Sample femprj result folder is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
438
+ msgstr ""
439
+
@@ -0,0 +1,174 @@
1
+ import os
2
+ import locale
3
+ from dataclasses import dataclass
4
+
5
+ loc, encoding = locale.getlocale()
6
+
7
+ if __name__ == '__main__':
8
+ # set target to create .pot
9
+ from gettext import gettext as _
10
+
11
+ else:
12
+ # get translation
13
+ if 'japanese' in loc.lower():
14
+ from babel.support import Translations
15
+
16
+ translations = Translations.load(
17
+ os.path.join(os.path.dirname(__file__), 'locales'),
18
+ locales='ja'
19
+ )
20
+ _ = translations.gettext
21
+
22
+ else:
23
+ def _(x):
24
+ return x
25
+
26
+
27
+ @dataclass
28
+ class Message:
29
+ # syntax
30
+ HELLO = _('hello!')
31
+ # This is ignored by babel
32
+ def some_string(self, value): return _(f'value is {value}')
33
+
34
+ # ===== common =====
35
+ ENTER_TO_QUIT = _('Press enter to quit...')
36
+
37
+ # ===== pyfemtet.opt femopt core =====
38
+ ERR_CHECK_MINMAX = _('The magnitude relationship is incorrect.')
39
+ ERR_CHECK_DIRECTION = _("The direction of the objective function must be 'minimize', 'maximize' or a number. ")
40
+ ERR_CANNOT_ENCODING = _('The variable name, object name, or constraint name contains characters that cannot be encoded. Do not use environment-dependent characters.')
41
+ ERR_PROBLEM_MISMATCH = _('The running configuration does not match the configuration in the csv file.')
42
+
43
+ # ===== pyfemtet.opt FEMOpt =====
44
+ ERR_NO_INITIAL_VALUE = _('Please specify initial_value.')
45
+ ERR_CONTAIN_GOGH_ACCESS_IN_STRICT_CONSTRAINT = _('Constraint functions are evaluated before analysis is performed, '
46
+ 'so do not access Femtet.Gogh. If you want your '
47
+ 'constraints to include values after analysis is performed, set '
48
+ 'the `strict` argument to False.')
49
+ WARN_HISTORY_CSV_NOT_ACCESSIBLE = _('History csv file is in use and cannot be written to. '
50
+ 'Please free this file before exiting the program, '
51
+ 'otherwise history data will be lost.')
52
+ OPTIMIZATION_FINISHED = _('Optimization finished. Results were saved in following:')
53
+
54
+ # ===== pyfemtet.opt.interface =====
55
+ ERR_RUN_JOURNAL_NOT_FOUND = _(r'"%UGII_BASE_DIR%\NXBIN\run_journal.exe" is not found. Make sure you have NX installed and the environment variable UGII_BASE_DIR is set.')
56
+ ERR_MODEL_RECONSTRUCTION_FAILED = _('Model reconstruction failed.')
57
+ ERR_MODEL_UPDATE_FAILED = _('Model update failed.')
58
+ ERR_NO_MAKEPY = _('It was detected that the configuration of Femtet python macro constants has not been completed. The configuration was done automatically (python -m win32com.client.makepy FemtetMacro). Please restart the program.')
59
+ ERR_FEMTET_CONNECTION_FAILED = _('Failed to connect to Femtet.')
60
+ ERR_FEMTET_CRASHED_AND_RESTART_FAILED = _('The Femtet process crashed and could not be restarted successfully.')
61
+ WARN_FEMTET_CRASHED_AND_TRY_RESTART = _('An abnormal termination of the Femtet process has been detected. Recovery will be attempted.')
62
+ INFO_FEMTET_CRASHED_AND_RESTARTED = _('Femtet has been restarted and will perform analysis and attempt to recover.')
63
+ ERR_NEW_FEMTET_BUT_NO_FEMPRJ = _("If you specify 'new' as the 'connect_method' argument, set the 'femprj_path' argument to existing femprj file path.")
64
+ ERR_NO_SUCH_PARAMETER_IN_FEMTET = _('The specified variable is not included in the Femtet analysis model. Note the capitalization of the variable.')
65
+ ERR_CANNOT_ACCESS_API = _('The following APIs are not accessible: ')
66
+ CERTIFY_MACRO_VERSION = _('Macros may not be enabled in the installed version of Femtet. Please run the "Enable Macros" command from the start menu with administrator privileges in the same version of Femtet that is installed.')
67
+ NO_ANALYSIS_MODEL_IS_OPEN = _('No analysis model is open')
68
+ FEMTET_ANALYSIS_MODEL_WITH_NO_PARAMETER = _('The analysis model does not contain any variables.')
69
+ ERR_FAILED_TO_UPDATE_VARIABLE = _('Failed to update variables:')
70
+ WARN_IGNORE_PARAMETER_NOT_CONTAINED = _('The specified variable is not included in the analysis model and will be ignored.')
71
+ ERR_RE_EXECUTE_MODEL_FAILED = _('Model history re-execute failed.')
72
+ ERR_MODEL_REDRAW_FAILED = _('Model redraw failed.')
73
+ ERR_MODEL_MESH_FAILED = _('Mesh generation failed')
74
+ ERR_PARAMETRIC_SOLVE_FAILED = _('Parametric solve failed')
75
+ ERR_SOLVE_FAILED = _('Solve failed.')
76
+ ERR_OPEN_RESULT_FAILED = _('Open result failed.')
77
+ ERR_CLOSE_FEMTET_FAILED = _('Failed to close Femtet.')
78
+ ERR_FAILED_TO_SAVE_PDT = _('Failed to save result (.pdt) file.')
79
+ ERR_FAILED_TO_SAVE_JPG = _('Failed to save screenshot (.jpg).')
80
+ ERR_JPG_NOT_FOUND = _('Screenshot (.jpg) is not found.')
81
+ ERR_UPDATE_SOLIDWORKS_MODEL_FAILED = _('Failed to update model in solidworks.')
82
+
83
+ # ===== pyfemtet.opt.opt =====
84
+ ERR_NOT_IMPLEMENTED = _('The following features are not supported by the specified optimization method. ')
85
+ ERR_INCONSISTENT_PARAMETER = _('The parameter set does not match the one added with add_init_parameter.')
86
+ INFO_EXCEPTION_DURING_FEM_ANALYSIS = _('An exception has occurred during FEM update. Current parameters are: ')
87
+ INFO_INFEASIBLE = _('The constraints were not satisfied for the following sets of variables:')
88
+ ERR_FEM_FAILED_AND_CANNOT_CONTINUE = _('Current parameter set cannot update FEM and this optimization method cannot skip current parameter set. The optimization process will be terminated.')
89
+ WARN_INTERRUPTED_IN_SCIPY = _('Optimization has been interrupted. Note that you cannot acquire the OptimizationResult in case of `trust-constr`, `TNC`, `SLSQP` or `COBYLA`.')
90
+
91
+ # ===== pyfemtet.opt.visualization =====
92
+ # control_femtet.py
93
+ LABEL_CONNECT_FEMTET_BUTTON = _('Connect to Femtet')
94
+ WARN_CSV_MODEL_NAME_IS_INVALID = _('Analysis model name described in csv does not exist in project.')
95
+ WARN_HISTORY_CSV_NOT_READ = _('History csv is not read yet. Open your project manually.')
96
+ WARN_INVALID_METADATA = _('Cannot read project data from csv. Open your project manually.')
97
+ WARN_FEMPRJ_IN_CSV_NOT_FOUND = _('.femprj file described in csv is not found. Open your project manually.')
98
+ WARN_MODEL_IN_CSV_NOT_FOUND_IN_FEMPRJ = _('Analysis model name is not specified. Open your model in the project manually.')
99
+ # main_figure_creator.py
100
+ LEGEND_LABEL_CONSTRAINT = _('Constraint')
101
+ LEGEND_LABEL_FEASIBLE = _('feasible')
102
+ LEGEND_LABEL_INFEASIBLE = _('infeasible')
103
+ LEGEND_LABEL_OPTIMAL = _('Optimality')
104
+ LEGEND_LABEL_NON_DOMI = _('non dominated')
105
+ LEGEND_LABEL_DOMI = _('dominated')
106
+ GRAPH_TITLE_HYPERVOLUME = _('Hypervolume Plot')
107
+ GRAPH_TITLE_SINGLE_OBJECTIVE = _('Objective Plot')
108
+ GRAPH_TITLE_MULTI_OBJECTIVE = _('Multi Objective Pair Plot')
109
+ GRAPH_AXIS_LABEL_TRIAL = _('trial number')
110
+ # main_graph.py
111
+ TAB_LABEL_OBJECTIVES = _('Objectives')
112
+ # pm_graph.py
113
+ TAB_LABEL_PREDICTION_MODEL = _('Prediction Model')
114
+ LABEL_OF_CREATE_PREDICTION_MODEL_BUTTON = _(' Recalculate Model')
115
+ LABEL_OF_REDRAW_PREDICTION_MODEL_GRAPH_BUTTON = _(' Redraw graph')
116
+ LABEL_OF_AXIS1_SELECTION = _('Parameter')
117
+ LABEL_OF_AXIS2_SELECTION = _('Parameter2')
118
+ LABEL_OF_AXIS3_SELECTION = _('Objective')
119
+ ERR_NO_HISTORY_SELECTED = _('No history selected.')
120
+ ERR_NO_FEM_RESULT = _('No FEM result (yet).')
121
+ ERR_NO_PREDICTION_MODEL = _('Prediction model is not calculated yet.')
122
+ ERR_CANNOT_SELECT_SAME_PARAMETER = _('Cannot select same parameter')
123
+ # pm_graph_creator
124
+ GRAPH_TITLE_PREDICTION_MODEL = _('Prediction Model of Objective')
125
+ LEGEND_LABEL_PREDICTION_MODEL = _('prediction model')
126
+ LEGEND_LABEL_PREDICTION_MODEL_STDDEV = _('std. dev. of model')
127
+ # process_monitor application
128
+ PAGE_TITLE_PROGRESS = _('Progress')
129
+ PAGE_TITLE_PREDICTION_MODEL = _('Prediction')
130
+ PAGE_TITLE_WORKERS = _('Workers')
131
+ # process monitor pages
132
+ DEFAULT_STATUS_ALERT = _('Optimization status will be shown here.')
133
+ LABEL_AUTO_UPDATE = _('Auto-update graph')
134
+ LABEL_INTERRUPT = _('Interrupt Optimization')
135
+ # result viewer application
136
+ PAGE_TITLE_RESULT = _('Result')
137
+ # result viewer pages
138
+ LABEL_OPEN_PDT_BUTTON = _('Open Result in Femtet')
139
+ LABEL_RECONSTRUCT_MODEL_BUTTON = _('Reconstruct Model')
140
+ LABEL_FILE_PICKER = _('Drag and drop or select csv file')
141
+ ERR_NO_CONNECTION_ESTABLISHED = _('Connection to Femtet is not established. Launch Femtet and Open a project.')
142
+ ERR_NO_SOLUTION_SELECTED = _('No result plot is selected.')
143
+ ERR_FEMPRJ_IN_CSV_NOT_FOUND = _('The femprj file path in the history csv is not found or valid.')
144
+ ERR_MODEL_IN_CSV_NOT_FOUND = _('The model name in the history csv is not found.')
145
+ ERR_PDT_NOT_FOUND = _('.pdt file is not found. '
146
+ 'Please check the .Results folder. '
147
+ 'Note that .pdt file save mode depends on '
148
+ 'the `save_pdt` argument of FemtetInterface in optimization script'
149
+ '(default to `all`).')
150
+ ERR_FAILED_TO_OPEN_PREFIX = _('Failed to open ')
151
+ ERR_NO_SUCH_MODEL_IN_FEMPRJ = _('Specified model is not in current project. '
152
+ 'Please check opened project. '
153
+ 'For example, not "analysis model only" but your .femprj file.')
154
+ WARN_INCONSISTENT_FEMPRJ_PATH = _('.femprj file path of the history csv is invalid. Please certify matching between csv and opening .femprj file.')
155
+ WARN_INVALID_MODEL_NAME = _('Analysis model name of the history csv is invalid. Please certify matching between csv and opening analysis model.')
156
+ WARN_INCONSISTENT_MODEL_NAME = _('Analysis model name of the history csv and opened in Femtet is inconsistent. Please certify matching between csv and opening analysis model.')
157
+ LABEL_TUTORIAL_MODE_SWITCH = _('tutorial mode')
158
+ LABEL_LOAD_SAMPLE_CSV = _('Load Sample CSV')
159
+ LOAD_CSV_POPOVER_HEADER = _('Load CSV')
160
+ LOAD_CSV_POPOVER_BODY = _('Open your optimization result. Then connecting to femtet will start automatically. '
161
+ 'Note that in tutorial mode, this button loads the ready-made sample csv and open sample femprj.')
162
+ MAIN_GRAPH_POPOVER_HEADER = _('Main Graph')
163
+ MAIN_GRAPH_POPOVER_BODY = _('Here the optimization history is shown. '
164
+ 'Each plot represents single FEM result. '
165
+ 'You can pick a result to open the corresponding result in Femtet. ')
166
+ OPEN_PDT_POPOVER_HEADER = _('Open Result')
167
+ OPEN_PDT_POPOVER_BODY = _('After pick a point in the main graph, '
168
+ 'This button shows the corresponding FEM result in Femtet.')
169
+ CONNECT_FEMTET_POPOVER_BODY = _('Re-connect to Femtet.')
170
+ ERR_SAMPLE_CSV_NOT_FOUND = _('Sample csv is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`')
171
+ ERR_SAMPLE_FEMPRJ_NOT_FOUND = _('Sample femprj file is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`')
172
+ ERR_FEMPRJ_RESULT_NOT_FOUND = _('Sample femprj result folder is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`')
173
+
174
+
pyfemtet/opt/_femopt.py CHANGED
@@ -23,6 +23,7 @@ from pyfemtet.opt._femopt_core import (
23
23
  OptimizationStatus,
24
24
  logger,
25
25
  )
26
+ from pyfemtet.message import Msg, encoding
26
27
 
27
28
 
28
29
  class FEMOpt:
@@ -117,6 +118,7 @@ class FEMOpt:
117
118
  initial_value (float or None, optional): The initial value of the parameter. Defaults to None. If None, try to get initial value from FEMInterface.
118
119
  lower_bound (float or None, optional): The lower bound of the parameter. Defaults to None. However, this argument is required for some algorithms.
119
120
  upper_bound (float or None, optional): The upper bound of the parameter. Defaults to None. However, this argument is required for some algorithms.
121
+ step (float or None, optional): The step of parameter. Defaults to None.
120
122
  memo (str, optional): Additional information about the parameter. Defaults to ''.
121
123
  Raises:
122
124
  ValueError: If initial_value is not specified and the value for the given name is also not specified.
@@ -243,9 +245,7 @@ class FEMOpt:
243
245
  # strict constraint の場合、solve 前に評価したいので Gogh へのアクセスを禁ずる
244
246
  if strict:
245
247
  if _is_access_gogh(fun):
246
- message = f'関数 {fun.__name__} に Gogh (Femtet 解析結果)へのアクセスがあります.'
247
- message += 'デフォルトでは constraint は解析前に評価され, 条件を満たさない場合解析を行いません.'
248
- message += '拘束に解析結果を含めたい場合は, strict=False を設定してください.'
248
+ message = Msg.ERR_CONTAIN_GOGH_ACCESS_IN_STRICT_CONSTRAINT
249
249
  raise Exception(message)
250
250
 
251
251
  self.opt.constraints[name] = Constraint(fun, name, lower_bound, upper_bound, strict, args, kwargs)
@@ -361,7 +361,7 @@ class FEMOpt:
361
361
 
362
362
  # worker が足りない場合はエラー
363
363
  if n_parallel > len(worker_addresses):
364
- raise RuntimeError(f'n_parallel({n_parallel}) > n_workers({len(worker_addresses)}). Worker 数が不足しています。')
364
+ raise RuntimeError(f'n_parallel({n_parallel}) > n_workers({len(worker_addresses)}). There are insufficient number of workers.')
365
365
 
366
366
  # worker が多い場合は閉じる
367
367
  if n_parallel < len(worker_addresses):
@@ -501,7 +501,7 @@ class FEMOpt:
501
501
  try:
502
502
  self.history.save()
503
503
  except PermissionError:
504
- logger.warning(f'{self.history.path} が使用中のため書き込みできません。プログラム終了までにこのファイルを解放してください。履歴データが失われます。')
504
+ logger.warning(Msg.WARN_HISTORY_CSV_NOT_ACCESSIBLE)
505
505
  if self.status.get() >= OptimizationStatus.TERMINATED:
506
506
  break
507
507
 
@@ -522,8 +522,10 @@ class FEMOpt:
522
522
  # 一応
523
523
  t_save_history.join()
524
524
 
525
- logger.info(f'計算が終了しました. 実行時間は {int(end - start)} 秒でした。ウィンドウを閉じると終了します.')
526
- logger.info(f'結果は{self.history.path}を確認してください.')
525
+ # logger.info(f'計算が終了しました. 実行時間は {int(end - start)} 秒でした。ウィンドウを閉じると終了します.')
526
+ # logger.info(f'結果は{self.history.path}を確認してください.')
527
+ logger.info(Msg.OPTIMIZATION_FINISHED)
528
+ logger.info(self.history.path)
527
529
 
528
530
  # ひとつでも crashed ならばフラグを立てる
529
531
  if any(opt_crashed_list):
@@ -555,8 +557,6 @@ class FEMOpt:
555
557
  logger.info('Terminate actors.')
556
558
  sleep(1)
557
559
 
558
- # これがないと dash app が落ちないとか問題あるの?
559
-
560
560
  # terminate monitor worker
561
561
  n_workers = len(self.client.nthreads())
562
562