pyfemtet 0.4.5__tar.gz → 0.4.7__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.
Potentially problematic release.
This version of pyfemtet might be problematic. Click here for more details.
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/PKG-INFO +2 -1
- pyfemtet-0.4.7/pyfemtet/__init__.py +1 -0
- pyfemtet-0.4.7/pyfemtet/_test_util.py +95 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/_femopt.py +7 -1
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/cad_ex01_NX_test_result.reccsv +13 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/cad_ex01_SW_test_result.reccsv +13 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/gal_ex58_parametric.femprj +0 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/gal_ex58_parametric_test_result.reccsv +13 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/gau_ex08_parametric_test_result.reccsv +23 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/her_ex40_parametric_test_result.reccsv +18 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/paswat_ex1_parametric_test_result.reccsv +18 -0
- pyfemtet-0.4.7/pyfemtet/opt/femprj_sample/wat_ex14_parametric_test_result.reccsv +18 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet.py +46 -13
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet_parametric.py +3 -3
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/visualization/_graphs.py +6 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyproject.toml +2 -2
- pyfemtet-0.4.5/pyfemtet/__init__.py +0 -1
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/LICENSE +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/README.md +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.prt +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.SLDPRT +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/_her_ex40_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/gau_ex08_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/gau_ex08_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/her_ex40_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/her_ex40_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/wat_ex14_parallel_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/wat_ex14_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/wat_ex14_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/core.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/dispatch_extensions.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/logger.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/__init__.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/_femopt_core.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_NX.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_NX.prt +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_NX.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_SW.SLDPRT +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_SW.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/cad_ex01_SW.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/gal_ex58_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/gau_ex08_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/gau_ex08_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/her_ex40_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/her_ex40_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/paswat_ex1_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/wat_ex14_parametric.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/wat_ex14_parametric.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/__init__.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_base.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet_with_nx/__init__.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet_with_nx/_interface.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet_with_nx/update_model.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/interface/_femtet_with_sldworks.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/opt/__init__.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/opt/_base.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/opt/_optuna.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/visualization/__init__.py +0 -0
- {pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/visualization/_monitor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyfemtet
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.7
|
|
4
4
|
Summary: Design parameter optimization using Femtet.
|
|
5
5
|
Home-page: https://github.com/pyfemtet/pyfemtet
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -27,6 +27,7 @@ Requires-Dist: optuna-integration (>=3.6.0,<4.0.0)
|
|
|
27
27
|
Requires-Dist: pandas (>=2.1.3,<3.0.0)
|
|
28
28
|
Requires-Dist: plotly (>=5.18.0,<6.0.0)
|
|
29
29
|
Requires-Dist: psutil (>=5.9.6,<6.0.0)
|
|
30
|
+
Requires-Dist: pytest-dashboard (>=0.1.2,<0.2.0)
|
|
30
31
|
Requires-Dist: pywin32 (>=306,<307)
|
|
31
32
|
Requires-Dist: scipy (>=1.11.4,<2.0.0)
|
|
32
33
|
Requires-Dist: tqdm (>=4.66.1,<5.0.0)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.7"
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import csv
|
|
3
|
+
from shutil import copy
|
|
4
|
+
from time import sleep
|
|
5
|
+
from subprocess import run
|
|
6
|
+
from multiprocessing import Process
|
|
7
|
+
from glob import glob
|
|
8
|
+
|
|
9
|
+
import numpy as np
|
|
10
|
+
import pandas as pd
|
|
11
|
+
from tqdm import tqdm
|
|
12
|
+
from win32com.client import Dispatch
|
|
13
|
+
from femtetutils import util
|
|
14
|
+
|
|
15
|
+
from pyfemtet.opt import FEMOpt
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _open_femprj(femprj_path):
|
|
19
|
+
Femtet = Dispatch('FemtetMacro.Femtet')
|
|
20
|
+
for _ in tqdm(range(5), 'wait for dispatch Femtet'):
|
|
21
|
+
sleep(1)
|
|
22
|
+
Femtet.LoadProject(femprj_path, True)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def launch_femtet(femprj_path):
|
|
26
|
+
# launch Femtet externally
|
|
27
|
+
print('Launching Femtet...')
|
|
28
|
+
util.execute_femtet()
|
|
29
|
+
pid = util.get_last_executed_femtet_process_id()
|
|
30
|
+
for _ in tqdm(range(8), 'Wait for launch Femtet.'):
|
|
31
|
+
sleep(1)
|
|
32
|
+
|
|
33
|
+
# open femprj in a different process
|
|
34
|
+
# to release Femtet for sample program
|
|
35
|
+
print('Opening femprj...')
|
|
36
|
+
p = Process(
|
|
37
|
+
target=_open_femprj,
|
|
38
|
+
args=(femprj_path,),
|
|
39
|
+
)
|
|
40
|
+
p.start()
|
|
41
|
+
p.join()
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def taskkill_femtet():
|
|
45
|
+
for _ in tqdm(range(3), 'wait before taskkill Femtet'):
|
|
46
|
+
sleep(1)
|
|
47
|
+
run(['taskkill', '/f', '/im', 'Femtet.exe'])
|
|
48
|
+
for _ in tqdm(range(3), 'wait after taskkill Femtet'):
|
|
49
|
+
sleep(1)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def find_latest_csv(dir_path=None):
|
|
53
|
+
if dir_path is None: dir_path = '.'
|
|
54
|
+
target = os.path.join(dir_path, '*.csv')
|
|
55
|
+
files = [(f, os.path.getmtime(f)) for f in glob(target)]
|
|
56
|
+
out = sorted(files, key=lambda files: files[1])[-1]
|
|
57
|
+
return os.path.abspath(out[0])
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def py_to_reccsv(py_path, suffix=''):
|
|
61
|
+
dst_csv_path = py_path + suffix
|
|
62
|
+
dst_csv_path = dst_csv_path.replace(f'.py{suffix}', f'{suffix}.reccsv')
|
|
63
|
+
return dst_csv_path
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def record_result(src: FEMOpt or str, py_path, suffix=''):
|
|
67
|
+
"""Record the result csv for `is_equal_result`."""
|
|
68
|
+
|
|
69
|
+
if isinstance(src, FEMOpt): # get df directory
|
|
70
|
+
src_csv_path = src.history_path
|
|
71
|
+
else:
|
|
72
|
+
src_csv_path = os.path.abspath(src)
|
|
73
|
+
|
|
74
|
+
dst_csv_path = py_to_reccsv(py_path, suffix)
|
|
75
|
+
copy(src_csv_path, dst_csv_path)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _get_obj_from_csv(csv_path):
|
|
79
|
+
df = pd.read_csv(csv_path, encoding='cp932', header=2)
|
|
80
|
+
columns = df.columns
|
|
81
|
+
with open(csv_path, mode='r', encoding='cp932', newline='\n') as f:
|
|
82
|
+
reader = csv.reader(f, delimiter=',')
|
|
83
|
+
meta = reader.__next__()
|
|
84
|
+
obj_indices = np.where(np.array(meta) == 'obj')[0]
|
|
85
|
+
out = df.iloc[:, obj_indices]
|
|
86
|
+
return out, columns
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def is_equal_result(csv1, csv2):
|
|
90
|
+
"""Check the equality of two result csv files."""
|
|
91
|
+
df1, columns1 = _get_obj_from_csv(csv1)
|
|
92
|
+
df2, columns2 = _get_obj_from_csv(csv2)
|
|
93
|
+
assert len(columns1) == len(columns2), '結果 csv の column 数が異なります。'
|
|
94
|
+
assert len(df1) == len(df2), '結果 csv の row 数が異なります。'
|
|
95
|
+
assert (np.abs(df1.values - df2.values) / np.abs(df2.values)).max() <= 0.01, '前回の結果と 1% を超える相違があります。'
|
|
@@ -383,7 +383,13 @@ class FEMOpt:
|
|
|
383
383
|
# Femtet の parametric 設定を目的関数に用いるかどうか
|
|
384
384
|
if self.fem.parametric_output_indexes_use_as_objective is not None:
|
|
385
385
|
from pyfemtet.opt.interface._femtet_parametric import add_parametric_results_as_objectives
|
|
386
|
-
|
|
386
|
+
indexes = list(self.fem.parametric_output_indexes_use_as_objective.keys())
|
|
387
|
+
directions = list(self.fem.parametric_output_indexes_use_as_objective.values())
|
|
388
|
+
add_parametric_results_as_objectives(
|
|
389
|
+
self,
|
|
390
|
+
indexes,
|
|
391
|
+
directions,
|
|
392
|
+
)
|
|
387
393
|
|
|
388
394
|
# actor の設定
|
|
389
395
|
self.status = OptimizationStatus(self.client)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""ex58_UnLoad""}",prm,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,
|
|
3
|
+
trial,rot,final angle (degree),final angle (degree)_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,90.0,81.62540665669353,90,False,True,-1.0,initial,2024-06-11 12:19:15.494862
|
|
5
|
+
2,87.49080237694724,79.02571752958842,90,False,True,-1.0,,2024-06-11 12:19:19.728891
|
|
6
|
+
3,99.01428612819832,90.96145916607887,90,False,True,-1.0,,2024-06-11 12:19:23.959099
|
|
7
|
+
4,99.99999999999999,91.89033160850725,90,False,True,-1.0,,2024-06-11 12:19:29.210094
|
|
8
|
+
5,96.7613593526426,88.77003517126444,90,False,True,-1.0,,2024-06-11 12:19:33.556167
|
|
9
|
+
6,80.0,71.5309188581146,90,False,True,-1.0,,2024-06-11 12:19:37.894866
|
|
10
|
+
7,97.45535890878755,89.47178515828678,90,False,True,-1.0,,2024-06-11 12:19:42.314653
|
|
11
|
+
8,96.18747750627301,88.19831186499154,90,False,True,-1.0,,2024-06-11 12:19:46.867626
|
|
12
|
+
9,98.14241558949382,90.13165212114446,90,False,True,-1.0,,2024-06-11 12:19:51.352111
|
|
13
|
+
10,98.08002450883177,90.07026771243692,90,True,True,-1.0,,2024-06-11 12:19:55.861780
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""ex58_UnLoad""}",prm,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,
|
|
3
|
+
trial,rot,final angle (degree),final angle (degree)_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,90.0,81.62540665669353,90,False,True,-1.0,initial,2024-06-11 12:19:15.494862
|
|
5
|
+
2,87.49080237694724,79.02571752958842,90,False,True,-1.0,,2024-06-11 12:19:19.728891
|
|
6
|
+
3,99.01428612819832,90.96145916607887,90,False,True,-1.0,,2024-06-11 12:19:23.959099
|
|
7
|
+
4,99.99999999999999,91.89033160850725,90,False,True,-1.0,,2024-06-11 12:19:29.210094
|
|
8
|
+
5,96.7613593526426,88.77003517126444,90,False,True,-1.0,,2024-06-11 12:19:33.556167
|
|
9
|
+
6,80.0,71.5309188581146,90,False,True,-1.0,,2024-06-11 12:19:37.894866
|
|
10
|
+
7,97.45535890878755,89.47178515828678,90,False,True,-1.0,,2024-06-11 12:19:42.314653
|
|
11
|
+
8,96.18747750627301,88.19831186499154,90,False,True,-1.0,,2024-06-11 12:19:46.867626
|
|
12
|
+
9,98.14241558949382,90.13165212114446,90,False,True,-1.0,,2024-06-11 12:19:51.352111
|
|
13
|
+
10,98.08002450883177,90.07026771243692,90,True,True,-1.0,,2024-06-11 12:19:55.861780
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""ex58_UnLoad""}",prm,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,
|
|
3
|
+
trial,rot,final angle (degree),final angle (degree)_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,90.0,81.62540665669353,90,False,True,-1.0,initial,2024-06-11 12:19:15.494862
|
|
5
|
+
2,87.49080237694724,79.02571752958842,90,False,True,-1.0,,2024-06-11 12:19:19.728891
|
|
6
|
+
3,99.01428612819832,90.96145916607887,90,False,True,-1.0,,2024-06-11 12:19:23.959099
|
|
7
|
+
4,99.99999999999999,91.89033160850725,90,False,True,-1.0,,2024-06-11 12:19:29.210094
|
|
8
|
+
5,96.7613593526426,88.77003517126444,90,False,True,-1.0,,2024-06-11 12:19:33.556167
|
|
9
|
+
6,80.0,71.5309188581146,90,False,True,-1.0,,2024-06-11 12:19:37.894866
|
|
10
|
+
7,97.45535890878755,89.47178515828678,90,False,True,-1.0,,2024-06-11 12:19:42.314653
|
|
11
|
+
8,96.18747750627301,88.19831186499154,90,False,True,-1.0,,2024-06-11 12:19:46.867626
|
|
12
|
+
9,98.14241558949382,90.13165212114446,90,False,True,-1.0,,2024-06-11 12:19:51.352111
|
|
13
|
+
10,98.08002450883177,90.07026771243692,90,True,True,-1.0,,2024-06-11 12:19:55.861780
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""ex8""}",prm,prm,prm,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,,,
|
|
3
|
+
trial,helical_pitch,coil_radius,n_turns,self-inductance (F),self-inductance (F)_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,6.0,10.0,5.0,2.2519131001598675e-07,1e-07,False,True,-1.0,initial,2024-06-11 12:02:57.767918
|
|
5
|
+
2,5.623252451619978,9.556428757689245,3.9279757672456204,1.5669600588107823e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:01.879689
|
|
6
|
+
3,4.420717726239158,8.795585311974417,3.404460046972835,1.2486865567061983e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:06.695218
|
|
7
|
+
4,6.890675795624973,1.185260448662222,4.879639408647977,1.1068853339253005e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:09.810784
|
|
8
|
+
5,7.363282035041603,2.9110519961044856,1.7272998688284025,5.928345320407693e-09,1e-07,False,True,-1.0,,2024-06-11 12:03:12.620381
|
|
9
|
+
6,4.506659276939239,8.848248131255941,3.3689827006547204,1.223080407315596e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:21.984837
|
|
10
|
+
7,4.766513095940718,9.009910692888063,3.2031623183171014,1.1395898205496435e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:25.935771
|
|
11
|
+
8,4.952240014062343,9.147228346475954,2.923015991988623,1.0163581024783297e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:29.971566
|
|
12
|
+
9,5.066580537443571,9.328659775516126,2.415616268398396,7.9346679307476e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:33.843674
|
|
13
|
+
10,5.01255047733164,9.185738480635885,2.8492684510814064,9.909738207022439e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:38.301538
|
|
14
|
+
11,5.00852993138919,9.181676469148485,2.8487833409683856,9.932809365733774e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:42.927279
|
|
15
|
+
12,5.015372908010907,9.156507516160001,2.84363953399497,9.865521830979344e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:47.695209
|
|
16
|
+
13,4.936583250613616,9.643690440100311,2.8584657253663925,1.101940126271035e-07,1e-07,False,True,-1.0,,2024-06-11 12:03:52.718947
|
|
17
|
+
14,5.102945083594629,8.690025958818417,2.845587386493274,8.937388292289982e-08,1e-07,False,True,-1.0,,2024-06-11 12:03:58.135407
|
|
18
|
+
15,4.991284994799307,9.188650804778193,2.8530392301069725,9.970815493825604e-08,1e-07,False,True,-1.0,,2024-06-11 12:04:05.138794
|
|
19
|
+
16,4.798136039813497,9.176815614734876,2.8229449492498473,9.890481643260465e-08,1e-07,False,True,-1.0,,2024-06-11 12:04:14.148550
|
|
20
|
+
17,4.930367618092964,9.199092260972836,2.8443627311061546,9.98421974076081e-08,1e-07,True,True,-1.0,,2024-06-11 12:04:28.793111
|
|
21
|
+
18,4.917692804276215,9.210004097072988,2.8402049456555583,1.0026551790777177e-07,1e-07,False,True,-1.0,,2024-06-11 12:04:53.890898
|
|
22
|
+
19,4.916044853968383,9.214647159558751,2.839933299380106,9.881932615643327e-08,1e-07,False,True,-1.0,,2024-06-11 12:05:39.178010
|
|
23
|
+
20,4.924334850336223,9.19023089875423,2.8409787839543563,9.883080340842676e-08,1e-07,False,True,-1.0,,2024-06-11 12:07:03.669665
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""Harm""}",prm,prm,prm,obj,obj_direction,,cns,cns_lb,cns_ub,cns,cns_lb,cns_ub,,,,
|
|
2
|
+
,,,,,,,,,,,,,,,,
|
|
3
|
+
trial,antenna_radius,substrate_w,port_x,first resonant frequency(Hz),first resonant frequency(Hz)_direction,non_domi,antenna and substrate clearance,antenna and substrate clearance_lower_bound,antenna and substrate clearance_upper_bound,antenna and port clearance,antenna and port clearance_lower_bound,antenna and port clearance_upper_bound,feasible,hypervolume,message,time
|
|
4
|
+
1,10.0,50.0,5.0,4289000000.0,3000000000.0,False,15.0,1,,5.0,1,,True,-1.0,initial,2024-06-11 12:08:26.664402
|
|
5
|
+
2,13.979877262955549,43.12037280884873,3.96389588638785,3050000000.0,3000000000.0,False,7.580309099999999,1,,10.01598141,1,,True,-1.0,,2024-06-11 12:08:45.888336
|
|
6
|
+
3,17.48663961200633,44.246782213565524,4.4546743769349115,2460000000.0,3000000000.0,False,4.636751499999999,1,,13.03196522,1,,True,-1.0,,2024-06-11 12:09:08.898036
|
|
7
|
+
4,11.841049763255539,55.70351922786027,4.793801861008835,3581000000.0,3000000000.0,False,16.0107098,1,,7.04724794,1,,True,-1.0,,2024-06-11 12:09:30.818053
|
|
8
|
+
5,12.713516576204174,51.84829137724085,1.8825578416799567,2932000000.0,3000000000.0,False,13.2106291,1,,10.83095876,1,,True,-1.0,,2024-06-11 12:09:46.800326
|
|
9
|
+
6,14.113172778521575,43.41048247374583,2.235980266720311,2991000000.0,3000000000.0,True,7.592068450000001,1,,11.877192529999999,1,,True,-1.0,,2024-06-11 12:10:06.872645
|
|
10
|
+
7,19.233283058799998,59.31264066149119,16.35954961421276,2283000000.0,3000000000.0,False,10.42303725,1,,2.8737335,1,,True,-1.0,,2024-06-11 12:10:40.123116
|
|
11
|
+
8,11.60228740609402,42.44076469689558,10.408361292114133,3758000000.0,3000000000.0,False,9.618094950000001,1,,1.1939261000000005,1,,True,-1.0,,2024-06-11 12:11:03.207759
|
|
12
|
+
9,14.93783426530973,46.23422152178822,10.881292402378406,2932000000.0,3000000000.0,False,8.179276449999998,1,,4.056541900000001,1,,True,-1.0,,2024-06-11 12:11:30.548731
|
|
13
|
+
10,13.968499682166277,58.437484700462335,2.6813575389864703,2991000000.0,3000000000.0,True,15.250242649999999,1,,11.28714216,1,,True,-1.0,,2024-06-11 12:11:50.050599
|
|
14
|
+
11,14.54315734982604,52.537550133941885,1.0,2932000000.0,3000000000.0,False,11.725617749999998,1,,13.5431573,1,,True,-1.0,,2024-06-11 12:12:12.701262
|
|
15
|
+
12,14.586861208706766,59.99999999999999,5.909396621050475,2932000000.0,3000000000.0,False,15.4131388,1,,8.677464579999999,1,,True,-1.0,,2024-06-11 12:12:34.168326
|
|
16
|
+
13,14.706782700305354,40.0,1.0,2814000000.0,3000000000.0,False,5.2932173,1,,13.7067827,1,,True,-1.0,,2024-06-11 12:13:37.839853
|
|
17
|
+
14,14.43570684403354,51.141218169528905,5.404811972123167,2932000000.0,3000000000.0,False,11.134902299999998,1,,9.030894830000001,1,,True,-1.0,,2024-06-11 12:14:39.583756
|
|
18
|
+
15,14.458054466363947,59.99999999999999,1.0,2932000000.0,3000000000.0,False,15.5419455,1,,13.4580545,1,,True,-1.0,,2024-06-11 12:14:58.872749
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""Ex1""}",prm,prm,prm,obj,obj_direction,obj,obj_direction,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,,,,,,,
|
|
3
|
+
trial,substrate_w,substrate_d,rot,max temp. of<br>MAINCHIP (degree),max temp. of<br>MAINCHIP (degree)_direction,max temp. of<br>SUBCHIP (degree),max temp. of<br>SUBCHIP (degree)_direction,substrate size (mm2),substrate size (mm2)_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,40.0,60.0,0.0,33.67695768582703,minimize,33.95371403110336,minimize,2400.0,minimize,True,True,0.0,initial,2024-06-11 12:17:25.110141
|
|
5
|
+
2,36.232524516199774,58.71857196665782,131.75890952605292,36.750613396557995,minimize,35.98760273557258,minimize,2127.522098595014,minimize,False,True,0.0,,2024-06-11 12:17:29.371084
|
|
6
|
+
3,44.74902239948739,38.05648465150335,28.079013660516477,37.661215802334205,minimize,37.688375728423864,minimize,1702.9904863055572,minimize,False,True,0.0,,2024-06-11 12:17:33.564289
|
|
7
|
+
4,24.20717726239158,56.52057979014832,108.20070211377758,38.03360975542378,minimize,37.132207739036424,minimize,1368.2036963173987,minimize,False,True,0.0,,2024-06-11 12:17:37.853520
|
|
8
|
+
5,48.90675795624973,34.53519685169086,174.58377338915898,35.8008561699603,minimize,35.41803365231452,minimize,1689.0045172706505,minimize,True,True,1.8564481859818923e-05,,2024-06-11 12:17:41.999764
|
|
9
|
+
6,53.632820350416026,39.520816877635184,32.72849409727811,36.27586854489045,minimize,36.24746978400414,minimize,2119.612874858985,minimize,False,True,1.8564481859818923e-05,,2024-06-11 12:17:46.239353
|
|
10
|
+
7,28.969371374430487,41.91029831694798,94.45615769380281,37.30507756114715,minimize,37.03664336271842,minimize,1214.1149969374887,minimize,True,True,0.0004588839992990786,,2024-06-11 12:17:50.385009
|
|
11
|
+
8,38.413910708400394,41.57195764514909,110.1335210500283,37.576825749490744,minimize,37.23183262975933,minimize,1596.9414668705863,minimize,False,True,0.0004588839992990786,,2024-06-11 12:17:54.833608
|
|
12
|
+
9,27.30076670477759,41.59576086191567,65.9451317928645,40.3319296385719,minimize,40.398458177958574,minimize,1135.596164039882,minimize,True,True,0.000640516961074097,,2024-06-11 12:17:59.016440
|
|
13
|
+
10,39.33065940024737,54.41457499621835,35.941280788504756,36.33478914713188,minimize,36.42436238628697,minimize,2140.161115720755,minimize,False,True,0.000640516961074097,,2024-06-11 12:18:03.281085
|
|
14
|
+
11,29.88951598161767,48.530123354694155,153.62497867846213,39.42958363258689,minimize,38.57020860420411,minimize,1450.5418998462744,minimize,False,True,0.000640516961074097,,2024-06-11 12:18:07.538199
|
|
15
|
+
12,31.485762571965203,47.06581165954471,80.23637941165202,36.63056881181441,minimize,36.53774341292369,minimize,1481.9029737625024,minimize,True,True,0.0006405332168774407,,2024-06-11 12:18:11.814563
|
|
16
|
+
13,22.592602387021333,51.59088187331228,6.2020220936995525,40.387965035487035,minimize,40.85943258832127,minimize,1165.5722822320565,minimize,False,True,0.0006405332168774407,,2024-06-11 12:18:16.222971
|
|
17
|
+
14,58.76493724495243,44.20401050976337,64.09642020029887,34.858239533999296,minimize,34.725797147945734,minimize,2597.645901020641,minimize,False,True,0.0006405332168774407,,2024-06-11 12:18:20.540597
|
|
18
|
+
15,32.86246372091377,44.383694428619314,102.63175919113127,37.1577717589319,minimize,36.7308460274431,minimize,1458.5575460918933,minimize,True,True,0.0006704802815873576,,2024-06-11 12:18:24.780506
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"{""femprj_path"": null, ""model_name"": ""Ex14""}",prm,prm,obj,obj_direction,obj,obj_direction,obj,obj_direction,,,,,
|
|
2
|
+
,,,,,,,,,,,,,
|
|
3
|
+
trial,substrate_w,substrate_d,max temp. of<br>MAINCHIP (degree),max temp. of<br>MAINCHIP (degree)_direction,max temp. of<br>SUBCHIP (degree),max temp. of<br>SUBCHIP (degree)_direction,substrate size,substrate size_direction,non_domi,feasible,hypervolume,message,time
|
|
4
|
+
1,40.0,60.0,37.52037094703595,minimize,37.219570759517936,minimize,2400.0,minimize,True,True,0.0,initial,2024-06-11 12:15:44.138912
|
|
5
|
+
2,28.741722139252524,58.66928627306774,39.9508830973249,minimize,39.599423416818745,minimize,1686.2563226399373,minimize,True,True,2.970229880317643e-05,,2024-06-11 12:15:48.376064
|
|
6
|
+
3,35.17589095260529,49.163779073319986,39.86737960935721,minimize,39.626434415381006,minimize,1729.3797347696782,minimize,True,True,0.000549159406835399,,2024-06-11 12:15:52.656210
|
|
7
|
+
4,24.808335527963855,37.21185204907747,45.61866728905813,minimize,45.454085110378436,minimize,923.164108992346,minimize,True,True,0.0005566073404974778,,2024-06-11 12:15:56.376449
|
|
8
|
+
5,23.04550501902759,56.38675593592325,42.04691673232563,minimize,41.64255082527148,minimize,1299.4612650272293,minimize,True,True,0.0005567909231334245,,2024-06-11 12:16:00.326849
|
|
9
|
+
6,32.82007021137776,52.11795960049323,39.9187861643026,minimize,39.65372077487905,minimize,1710.515092752764,minimize,True,True,0.0007091441422963771,,2024-06-11 12:16:04.696885
|
|
10
|
+
7,22.370520897324443,59.18756600837385,41.85766092262706,minimize,41.41235961737965,minimize,1324.0566822231292,minimize,True,True,0.0007092394191664859,,2024-06-11 12:16:08.614814
|
|
11
|
+
8,36.98396753440759,38.733155988313456,41.459966487020225,minimize,41.32468375000158,minimize,1432.50578267643,minimize,True,True,0.000726093206891994,,2024-06-11 12:16:12.849722
|
|
12
|
+
9,25.27284940972781,37.951921766042716,45.203996793500714,minimize,45.02945742624087,minimize,959.1532040919769,minimize,True,True,0.000740299173075068,,2024-06-11 12:16:16.595183
|
|
13
|
+
10,27.476360373271678,47.16842365407042,42.20017927506254,minimize,41.94996082930303,minimize,1296.0166090811015,minimize,True,True,0.0007432067663207338,,2024-06-11 12:16:20.601673
|
|
14
|
+
11,30.35761516871566,42.82064718778404,42.23879430266078,minimize,42.04418338920198,minimize,1299.9327303125576,minimize,False,True,0.0007432067663207338,,2024-06-11 12:16:24.664582
|
|
15
|
+
12,39.45166799418159,54.41754192649335,38.28305390496612,minimize,38.021101163274,minimize,2146.862796414889,minimize,True,True,0.0007445437960082572,,2024-06-11 12:16:29.231158
|
|
16
|
+
13,33.521593044416015,57.50694947262799,38.98990028232446,minimize,38.68463558069958,minimize,1927.7245558105535,minimize,True,True,0.0008565127001001895,,2024-06-11 12:16:33.869770
|
|
17
|
+
14,39.51381652632001,59.67156845010898,37.636491167600745,minimize,37.3320157660186,minimize,2357.85140797618,minimize,True,True,0.0009138674403261316,,2024-06-11 12:16:38.728862
|
|
18
|
+
15,27.034698907527144,51.95067544919728,41.46094657033741,minimize,41.16337804204099,minimize,1404.470867090637,minimize,True,True,0.0009230159948292316,,2024-06-11 12:16:42.930323
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.femprj
RENAMED
|
Binary file
|
|
@@ -41,7 +41,7 @@ class FemtetInterface(FEMInterface):
|
|
|
41
41
|
strictly_pid_specify (bool, optional): If True and connect_method=='new', search launched Femtet process strictly based on its process id.
|
|
42
42
|
allow_without_project (bool, optional): Allow to launch Femtet with no project file. Default to False.
|
|
43
43
|
open_result_with_gui (bool, optional): Open analysis result with Femtet GUI. Default to True.
|
|
44
|
-
parametric_output_indexes_use_as_objective (
|
|
44
|
+
parametric_output_indexes_use_as_objective (dict, optional): Parametric output indexes and their directions which will be used as objective functions. Parametric output should be set on Femtet parametric analysis dialog. Note that output 'No.' in dialog is starts with 1, but this 'index' is starts with 0. The key is the 'index', the value is direction ('maximize', 'minimize' or float). Default to None.
|
|
45
45
|
|
|
46
46
|
Warning:
|
|
47
47
|
Even if you specify ``strictly_pid_specify=True`` on the constructor,
|
|
@@ -89,10 +89,7 @@ class FemtetInterface(FEMInterface):
|
|
|
89
89
|
self.parameters = None
|
|
90
90
|
self.max_api_retry = 3
|
|
91
91
|
self.strictly_pid_specify = strictly_pid_specify
|
|
92
|
-
|
|
93
|
-
self.parametric_output_indexes_use_as_objective = []
|
|
94
|
-
else:
|
|
95
|
-
self.parametric_output_indexes_use_as_objective = parametric_output_indexes_use_as_objective
|
|
92
|
+
self.parametric_output_indexes_use_as_objective = parametric_output_indexes_use_as_objective
|
|
96
93
|
|
|
97
94
|
# dask サブプロセスのときは femprj を更新し connect_method を new にする
|
|
98
95
|
try:
|
|
@@ -202,8 +199,12 @@ class FemtetInterface(FEMInterface):
|
|
|
202
199
|
cmd = f'{sys.executable} -m win32com.client.makepy FemtetMacro'
|
|
203
200
|
os.system(cmd)
|
|
204
201
|
message = 'Femtet python マクロ定数の設定が完了してないことを検出しました.'
|
|
205
|
-
message += '
|
|
206
|
-
message += '
|
|
202
|
+
message += '設定は自動で行われました(python -m win32com.client.makepy FemtetMacro).'
|
|
203
|
+
message += 'プログラムを再起動してください.'
|
|
204
|
+
print('================')
|
|
205
|
+
print(message)
|
|
206
|
+
print('================')
|
|
207
|
+
input('終了するには Enter を押してください。')
|
|
207
208
|
raise RuntimeError(message)
|
|
208
209
|
|
|
209
210
|
if self.Femtet is None:
|
|
@@ -273,7 +274,7 @@ class FemtetInterface(FEMInterface):
|
|
|
273
274
|
self.Femtet.Gaudi.Activate,
|
|
274
275
|
False, # None 以外なら何でもいい
|
|
275
276
|
Exception,
|
|
276
|
-
'
|
|
277
|
+
'Gaudi のオープンに失敗しました',
|
|
277
278
|
print_indent=print_indent + 1
|
|
278
279
|
)
|
|
279
280
|
except com_error:
|
|
@@ -433,14 +434,30 @@ class FemtetInterface(FEMInterface):
|
|
|
433
434
|
Otherwise, no check is performed.
|
|
434
435
|
|
|
435
436
|
"""
|
|
436
|
-
|
|
437
|
-
|
|
437
|
+
major, minor, bugfix = 2023, 1, 1
|
|
438
|
+
if self._version() >= _version(major, minor, bugfix):
|
|
439
|
+
try:
|
|
440
|
+
variable_names = self.Femtet.GetVariableNames_py()
|
|
441
|
+
except AttributeError as e:
|
|
442
|
+
message = 'GetVariableNames_py' + 'にアクセスできません。'
|
|
443
|
+
f'Femtet {major}.{minor}.{bugfix} 以降で「マクロの有効化」が行われていない可能性があります。'
|
|
444
|
+
'スタートメニューから、インストールされいてる Femtet と同一バージョンの「マクロ機能を有効化する」コマンドを管理者権限で実行してください。'
|
|
445
|
+
print('================')
|
|
446
|
+
logger.error(message)
|
|
447
|
+
print('================')
|
|
448
|
+
input('終了するには Enter を押してください。')
|
|
449
|
+
raise e
|
|
450
|
+
|
|
438
451
|
if variable_names is not None:
|
|
439
452
|
if param_name in variable_names:
|
|
440
453
|
return self.Femtet.GetVariableValue(param_name)
|
|
441
454
|
message = f'Femtet 解析モデルに変数 {param_name} がありません.'
|
|
442
455
|
message += f'現在のモデルに設定されている変数は {variable_names} です.'
|
|
443
456
|
message += '大文字・小文字の区別に注意してください.'
|
|
457
|
+
print('================')
|
|
458
|
+
logger.error(message)
|
|
459
|
+
print('================')
|
|
460
|
+
input('終了するには Enter を押してください。')
|
|
444
461
|
raise RuntimeError(message)
|
|
445
462
|
else:
|
|
446
463
|
return None
|
|
@@ -458,8 +475,9 @@ class FemtetInterface(FEMInterface):
|
|
|
458
475
|
error_message='解析モデルが開かれていません',
|
|
459
476
|
)
|
|
460
477
|
|
|
461
|
-
|
|
462
|
-
|
|
478
|
+
major, minor, bugfix = 2023, 1, 1
|
|
479
|
+
if self._version() >= _version(major, minor, bugfix):
|
|
480
|
+
# Femtet の設計変数の更新(2023.1.1 以降でマクロだけ古い場合はcheck_param_valueで引っかかっているはずなのでここはAttributeError をチェックしない)
|
|
463
481
|
existing_variable_names = self._call_femtet_api(
|
|
464
482
|
fun=self.Femtet.GetVariableNames_py,
|
|
465
483
|
return_value_if_failed=False, # 意味がない
|
|
@@ -594,7 +612,22 @@ class FemtetInterface(FEMInterface):
|
|
|
594
612
|
|
|
595
613
|
def quit(self, timeout=1, force=True):
|
|
596
614
|
"""Force to terminate connected Femtet."""
|
|
597
|
-
|
|
615
|
+
major, minor, bugfix = 2024, 0, 1
|
|
616
|
+
if self._version() >= _version(major, minor, bugfix):
|
|
617
|
+
# gracefully termination method without save project available from 2024.0.1
|
|
618
|
+
try:
|
|
619
|
+
self.Femtet.Exit(True)
|
|
620
|
+
except AttributeError as e:
|
|
621
|
+
message = 'Femtet.Exit()' + 'にアクセスできません。'
|
|
622
|
+
f'Femtet {major}.{minor}.{bugfix} 以降で「マクロの有効化」が行われていない可能性があります。'
|
|
623
|
+
'スタートメニューから、インストールされいてる Femtet と同一バージョンの「マクロ機能を有効化する」コマンドを管理者権限で実行してください。'
|
|
624
|
+
print('================')
|
|
625
|
+
logger.error(message)
|
|
626
|
+
print('================')
|
|
627
|
+
input('終了するには Enter を押してください。')
|
|
628
|
+
raise e
|
|
629
|
+
else:
|
|
630
|
+
util.close_femtet(self.Femtet.hWnd, timeout, force)
|
|
598
631
|
|
|
599
632
|
def _setup_before_parallel(self, client):
|
|
600
633
|
client.upload_file(
|
|
@@ -55,20 +55,20 @@ def _get_prm_result_names(Femtet):
|
|
|
55
55
|
return out
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
def add_parametric_results_as_objectives(femopt, indexes) -> bool:
|
|
58
|
+
def add_parametric_results_as_objectives(femopt, indexes, directions) -> bool:
|
|
59
59
|
# load dll and set target femtet
|
|
60
60
|
dll = _get_dll_with_set_femtet(femopt.fem.Femtet)
|
|
61
61
|
|
|
62
62
|
# get objective names
|
|
63
63
|
dll.GetPrmnResult.restype = ctypes.c_int
|
|
64
64
|
n = dll.GetPrmnResult()
|
|
65
|
-
for i in indexes:
|
|
65
|
+
for i, direction in zip(indexes, directions):
|
|
66
66
|
# objective name
|
|
67
67
|
dll.GetPrmResultName.restype = ctypes.c_char_p
|
|
68
68
|
result = dll.GetPrmResultName(i)
|
|
69
69
|
name = result.decode('mbcs')
|
|
70
70
|
# objective value function
|
|
71
|
-
femopt.add_objective(_parametric_objective, name, args=(i,))
|
|
71
|
+
femopt.add_objective(_parametric_objective, name, direction=direction, args=(i,))
|
|
72
72
|
return True # ここまで来たら成功
|
|
73
73
|
|
|
74
74
|
|
|
@@ -81,6 +81,9 @@ def update_single_objective_plot(history, df):
|
|
|
81
81
|
df = _ls.localize(df)
|
|
82
82
|
obj_name = history.obj_names[0]
|
|
83
83
|
|
|
84
|
+
df.columns = [c.replace(' / ', '<BR>/ ') for c in df.columns]
|
|
85
|
+
obj_name = obj_name.replace(' / ', '<BR>/ ')
|
|
86
|
+
|
|
84
87
|
fig = px.scatter(
|
|
85
88
|
df,
|
|
86
89
|
x='trial',
|
|
@@ -126,6 +129,9 @@ def update_multi_objective_pairplot(history, df):
|
|
|
126
129
|
|
|
127
130
|
obj_names = history.obj_names
|
|
128
131
|
|
|
132
|
+
df.columns = [c.replace(' / ', '<BR>/ ') for c in df.columns]
|
|
133
|
+
obj_names = [o.replace(' / ', '<BR>/ ') for o in obj_names]
|
|
134
|
+
|
|
129
135
|
common_kwargs = dict(
|
|
130
136
|
color=_ls.non_domi['label'],
|
|
131
137
|
color_discrete_map={
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pyfemtet"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.7" # ignored by versioning plugin
|
|
4
4
|
description = "Design parameter optimization using Femtet."
|
|
5
5
|
authors = ["kazuma.naito <kazuma.naito@murata.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -29,6 +29,7 @@ botorch = [
|
|
|
29
29
|
{version = "^0.9.5", python = "<3.12"},
|
|
30
30
|
{version = ">=0.9.5", python = ">=3.12,<3.13"},
|
|
31
31
|
]
|
|
32
|
+
pytest-dashboard = "^0.1.2"
|
|
32
33
|
|
|
33
34
|
[tool.poetry.group.dev.dependencies]
|
|
34
35
|
pip-licenses = "^4.3.3"
|
|
@@ -39,7 +40,6 @@ sphinx-autobuild = "==2021.3.14"
|
|
|
39
40
|
pytest = "^7.4.3"
|
|
40
41
|
sphinx-design = "^0.5.0"
|
|
41
42
|
bokeh = "^3.3.3"
|
|
42
|
-
pytest-dashboard = "*"
|
|
43
43
|
sphinx-intl = "^2.2.0"
|
|
44
44
|
|
|
45
45
|
[tool.poetry.scripts]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.4.5"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.SLDPRT
RENAMED
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py
RENAMED
|
File without changes
|
{pyfemtet-0.4.5 → pyfemtet-0.4.7}/pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|