pyfemtet 0.4.2__py3-none-any.whl → 0.4.3__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 (43) hide show
  1. pyfemtet/FemtetPJTSample/_her_ex40_parametric.py +148 -0
  2. pyfemtet/__init__.py +1 -1
  3. pyfemtet/opt/femprj_sample/cad_ex01_NX.femprj +0 -0
  4. pyfemtet/opt/femprj_sample/cad_ex01_NX.prt +0 -0
  5. pyfemtet/opt/femprj_sample/cad_ex01_NX.py +132 -0
  6. pyfemtet/opt/femprj_sample/cad_ex01_SW.SLDPRT +0 -0
  7. pyfemtet/opt/femprj_sample/cad_ex01_SW.femprj +0 -0
  8. pyfemtet/opt/femprj_sample/cad_ex01_SW.py +132 -0
  9. pyfemtet/opt/femprj_sample/gal_ex58_parametric.femprj +0 -0
  10. pyfemtet/opt/femprj_sample/gal_ex58_parametric.py +75 -0
  11. pyfemtet/opt/femprj_sample/gau_ex08_parametric.femprj +0 -0
  12. pyfemtet/opt/femprj_sample/gau_ex08_parametric.py +59 -0
  13. pyfemtet/opt/femprj_sample/her_ex40_parametric.femprj +0 -0
  14. pyfemtet/opt/femprj_sample/her_ex40_parametric.py +137 -0
  15. pyfemtet/opt/femprj_sample/paswat_ex1_parametric.femprj +0 -0
  16. pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py +61 -0
  17. pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py +62 -0
  18. pyfemtet/opt/femprj_sample/wat_ex14_parametric.femprj +0 -0
  19. pyfemtet/opt/femprj_sample/wat_ex14_parametric.py +59 -0
  20. pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.femprj +0 -0
  21. pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py +126 -0
  22. pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.femprj +0 -0
  23. pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py +126 -0
  24. pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.femprj +0 -0
  25. pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py +71 -0
  26. pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.femprj +0 -0
  27. pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py +58 -0
  28. pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.femprj +0 -0
  29. pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py +137 -0
  30. pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.femprj +0 -0
  31. pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py +59 -0
  32. pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +60 -0
  33. pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.femprj +0 -0
  34. pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py +57 -0
  35. pyfemtet/opt/interface/_femtet.py +5 -1
  36. pyfemtet/opt/interface/_femtet_with_nx/_interface.py +2 -8
  37. pyfemtet/opt/interface/_femtet_with_sldworks.py +2 -8
  38. {pyfemtet-0.4.2.dist-info → pyfemtet-0.4.3.dist-info}/METADATA +1 -1
  39. pyfemtet-0.4.3.dist-info/RECORD +71 -0
  40. pyfemtet-0.4.2.dist-info/RECORD +0 -38
  41. {pyfemtet-0.4.2.dist-info → pyfemtet-0.4.3.dist-info}/LICENSE +0 -0
  42. {pyfemtet-0.4.2.dist-info → pyfemtet-0.4.3.dist-info}/WHEEL +0 -0
  43. {pyfemtet-0.4.2.dist-info → pyfemtet-0.4.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,58 @@
1
+ """単目的最適化: 有限長ヘリカルコイルの自己インダクタンス
2
+
3
+ Femtet の磁場解析ソルバを利用して、
4
+ 有限長ヘリカルコイルの自己インダクタンスを
5
+ 目標の値にする設計を行います。
6
+
7
+ 対応プロジェクト: gau_ex08_parametric_jp.femprj
8
+ """
9
+ from optuna.integration.botorch import BoTorchSampler
10
+ from pyfemtet.opt import FEMOpt, OptunaOptimizer
11
+
12
+
13
+ def inductance(Femtet):
14
+ """自己インダクタンスを取得します。
15
+
16
+ Note:
17
+ 目的関数または制約関数は、
18
+ 第一引数としてFemtetを受け取り、
19
+ 戻り値としてfloat型を返す必要があります。
20
+
21
+ Params:
22
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
23
+
24
+ Returns:
25
+ float: 自己インダクタンスです。
26
+ """
27
+ Gogh = Femtet.Gogh
28
+
29
+ coil_name = Gogh.Gauss.GetCoilList()[0]
30
+ return Gogh.Gauss.GetL(coil_name, coil_name) # 単位: F
31
+
32
+
33
+ if __name__ == '__main__':
34
+
35
+ # 数値最適化問題の初期化 (最適化手法を決定します)
36
+ opt = OptunaOptimizer(
37
+ sampler_class=BoTorchSampler,
38
+ sampler_kwargs=dict(
39
+ n_startup_trials=5,
40
+ )
41
+ )
42
+
43
+ # FEMOpt オブジェクトの初期化 (最適化問題とFemtetとの接続を行います)。
44
+ femopt = FEMOpt(opt=opt)
45
+
46
+ # 設計変数を最適化問題に追加 (femprj ファイルに登録されている変数を指定してください)。
47
+ femopt.add_parameter("helical_pitch", 6, lower_bound=4.2, upper_bound=8)
48
+ femopt.add_parameter("coil_radius", 10, lower_bound=1, upper_bound=10)
49
+ femopt.add_parameter("n_turns", 5, lower_bound=1, upper_bound=5)
50
+
51
+ # 目的関数を最適化問題に追加
52
+ # 目標の自己インダクタンスは 0.1 μF です。
53
+ femopt.add_objective(inductance, name='自己インダクタンス (F)', direction=1e-7)
54
+
55
+ # 最適化を実行
56
+ femopt.set_random_seed(42)
57
+ femopt.optimize(n_trials=20)
58
+ femopt.terminate_all()
@@ -0,0 +1,137 @@
1
+ """単目的最適化: 円形パッチアンテナの共振周波数
2
+
3
+ Femtet の電磁波解析ソルバを利用して、円形パッチアンテナの
4
+ 電磁波調和解析を行い、共振特性を目標の値にする設計を行います。
5
+
6
+ 対応プロジェクト: her_ex40_parametric_jp.femprj
7
+ """
8
+ from time import sleep
9
+
10
+ import numpy as np
11
+ from scipy.signal import find_peaks
12
+ from tqdm import tqdm
13
+ from optuna.integration.botorch import BoTorchSampler
14
+
15
+ from pyfemtet.core import SolveError
16
+ from pyfemtet.opt import OptunaOptimizer, FEMOpt
17
+
18
+
19
+ class SParameterCalculator:
20
+ """Sパラメータ計算用クラス"""
21
+
22
+ def __init__(self):
23
+ self.freq = []
24
+ self.S = []
25
+ self.interpolated_function = None
26
+ self.resonance_frequency = None
27
+ self.minimum_S = None
28
+
29
+ def _get_freq_and_S_parameter(self, Femtet):
30
+ """周波数とSパラメータの関係を取得します。"""
31
+
32
+ Gogh = Femtet.Gogh
33
+
34
+ freq_list = []
35
+ dB_S_list = []
36
+ for mode in tqdm(range(Gogh.Hertz.nMode), '周波数と S(1, 1) の関係を取得'):
37
+ # 周波数モード設定
38
+ Gogh.Hertz.Mode = mode
39
+ sleep(0.01)
40
+
41
+ # 周波数を取得
42
+ freq = Gogh.Hertz.GetFreq().Real
43
+
44
+ # S(1, 1) を取得
45
+ comp_S = Gogh.Hertz.GetSMatrix(0, 0)
46
+ norm = np.linalg.norm((comp_S.Real, comp_S.Imag))
47
+ dB_S = 20 * np.log10(norm)
48
+
49
+ # 結果を保存
50
+ freq_list.append(freq)
51
+ dB_S_list.append(dB_S)
52
+
53
+ self.freq = freq_list
54
+ self.S = dB_S_list
55
+
56
+ def _calc_resonance_frequency(self):
57
+ """Sパラメータの第一ピークを与える周波数を取得します。"""
58
+ peaks, _ = find_peaks(-np.array(self.S), height=None, threshold=None, distance=None, prominence=0.5, width=None, wlen=None, rel_height=0.5, plateau_size=None)
59
+ if len(peaks) == 0:
60
+ raise SolveError('S(1,1) のピークを取得できませんでした。')
61
+ self.resonance_frequency = self.freq[peaks[0]]
62
+ self.minimum_S = self.S[peaks[0]]
63
+
64
+ def get_resonance_frequency(self, Femtet):
65
+ """パッチアンテナの共振周波数を計算します。
66
+
67
+ Note:
68
+ 目的関数または制約関数は、
69
+ 第一引数としてFemtetを受け取り、
70
+ 戻り値としてfloat型を返す必要があります。
71
+
72
+ Params:
73
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
74
+
75
+ Returns:
76
+ float: パッチアンテナの共振周波数。
77
+ """
78
+ self._get_freq_and_S_parameter(Femtet)
79
+ self._calc_resonance_frequency()
80
+ return self.resonance_frequency # 単位: Hz
81
+
82
+
83
+ def antenna_is_smaller_than_substrate(Femtet):
84
+ """アンテナの大きさと基板の大きさの関係を計算します。
85
+
86
+ この関数は、変数の更新によってモデル形状が破綻しないように
87
+ 変数の組み合わせを拘束するために使われます。
88
+
89
+ Params:
90
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
91
+
92
+ Returns:
93
+ float: 基板エッジとアンテナエッジの間隙。1 mm 以上が必要です。
94
+ """
95
+ r = Femtet.GetVariableValue('antenna_radius')
96
+ w = Femtet.GetVariableValue('substrate_w')
97
+ return w / 2 - r # 単位: mm
98
+
99
+
100
+ def port_is_inside_antenna(Femtet):
101
+ """給電ポートの位置とアンテナの大きさの関係を計算します。"""
102
+ r = Femtet.GetVariableValue('antenna_radius')
103
+ x = Femtet.GetVariableValue('port_x')
104
+ return r - x # 単位: mm。1 mm 以上が必要です。
105
+
106
+
107
+ if __name__ == '__main__':
108
+ # 周波数特性を計算するためのオブジェクトを初期化
109
+ s = SParameterCalculator()
110
+
111
+ # 数値最適化問題の初期化 (最適化手法を決定します)
112
+ opt = OptunaOptimizer(
113
+ sampler_class=BoTorchSampler,
114
+ sampler_kwargs=dict(
115
+ n_startup_trials=10,
116
+ )
117
+ )
118
+
119
+ # FEMOpt オブジェクトの初期化 (最適化問題とFemtetとの接続を行います)
120
+ femopt = FEMOpt(opt=opt)
121
+
122
+ # 設計変数を最適化問題に追加 (femprj ファイルに登録されている変数を指定してください)
123
+ femopt.add_parameter('antenna_radius', 10, 5, 20)
124
+ femopt.add_parameter('substrate_w', 50, 40, 60)
125
+ femopt.add_parameter('port_x', 5, 1, 20)
126
+
127
+ # 拘束関数を最適化問題に追加
128
+ femopt.add_constraint(antenna_is_smaller_than_substrate, 'アンテナと基板エッジの間隙', lower_bound=1)
129
+ femopt.add_constraint(port_is_inside_antenna, 'アンテナエッジと給電ポートの間隙', lower_bound=1)
130
+
131
+ # 目的関数を最適化問題に追加
132
+ # 共振周波数の目標は 3.0 GHz です。
133
+ femopt.add_objective(s.get_resonance_frequency, '第一共振周波数(Hz)', direction=3.0 * 1e9)
134
+
135
+ femopt.set_random_seed(42)
136
+ femopt.optimize(n_trials=15)
137
+ femopt.terminate_all()
@@ -0,0 +1,59 @@
1
+ """多目的の最適化: プリント基板上ICの空冷(強制対流)
2
+
3
+ Femtet の簡易熱流体解析ソルバを利用して、強制対流を受ける
4
+ プリント基板上のICチップについて、チップ温度を低減しつつ
5
+ 基板サイズを小さくする設計を行います。
6
+
7
+ 対応プロジェクト:paswat_ex1_parametric_jp.femprj
8
+ """
9
+ from pyfemtet.opt import FEMOpt
10
+
11
+
12
+ def chip_temp(Femtet, chip_name):
13
+ """チップの最高温度を取得します。
14
+
15
+ Note:
16
+ 目的関数または制約関数は、
17
+ 第一引数としてFemtetを受け取り、
18
+ 戻り値としてfloat型を返す必要があります。
19
+
20
+ Params:
21
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
22
+ chip_name (str): femprj 内で定義されているボディ属性名です。有効な値は 'MAINCHIP' 又は 'SUBCHIP' です。
23
+
24
+ Returns:
25
+ float: 指定されたボディ属性名のボディの最高温度です。
26
+ """
27
+ Gogh = Femtet.Gogh
28
+
29
+ max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
30
+
31
+ return max_temperature # 単位: 度
32
+
33
+
34
+ def substrate_size(Femtet):
35
+ """基板のXY平面上での専有面積を計算します。"""
36
+ substrate_w = Femtet.GetVariableValue('substrate_w')
37
+ substrate_d = Femtet.GetVariableValue('substrate_d')
38
+ return substrate_w * substrate_d # 単位: mm2
39
+
40
+
41
+ if __name__ == '__main__':
42
+
43
+ # FEMOpt オブジェクトの初期化 (最適化問題とFemtetとの接続を行います)
44
+ femopt = FEMOpt()
45
+
46
+ # 設計変数を最適化問題に追加 (femprj ファイルに登録されている変数を指定してください)
47
+ femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=60)
48
+ femopt.add_parameter("substrate_d", 60, lower_bound=34, upper_bound=60)
49
+ femopt.add_parameter("rot", 0, lower_bound=0, upper_bound=180)
50
+
51
+ # 目的関数を最適化問題に追加
52
+ femopt.add_objective(chip_temp, name='MAINCHIP<br>最高温度(度)', direction='minimize', args=('MAINCHIP',))
53
+ femopt.add_objective(chip_temp, name='SUBCHIP<br>最高温度(度)', direction='minimize', args=('SUBCHIP',))
54
+ femopt.add_objective(substrate_size, name='基板サイズ(mm2)', direction='minimize')
55
+
56
+ # 最適化を実行
57
+ femopt.set_random_seed(42)
58
+ femopt.optimize(n_trials=15)
59
+ femopt.terminate_all()
@@ -0,0 +1,60 @@
1
+ """多目的の最適化: プリント基板上ICの空冷(強制対流)
2
+
3
+ Femtet の簡易熱流体解析ソルバを利用して、強制対流を受ける
4
+ プリント基板上のICチップについて、チップ温度を低減しつつ
5
+ 基板サイズを小さくする設計を行います。
6
+
7
+ 対応プロジェクト:paswat_ex1_parametric_jp.femprj
8
+ """
9
+ from pyfemtet.opt import FEMOpt
10
+
11
+
12
+ def chip_temp(Femtet, chip_name):
13
+ """チップの最高温度を取得します。
14
+
15
+ Note:
16
+ 目的関数または制約関数は、
17
+ 第一引数としてFemtetを受け取り、
18
+ 戻り値としてfloat型を返す必要があります。
19
+
20
+ Params:
21
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
22
+ chip_name (str): femprj 内で定義されているボディ属性名です。有効な値は 'MAINCHIP' 又は 'SUBCHIP' です。
23
+
24
+ Returns:
25
+ float: 指定されたボディ属性名のボディの最高温度です。
26
+ """
27
+ Gogh = Femtet.Gogh
28
+
29
+ max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
30
+
31
+ return max_temperature # 単位: 度
32
+
33
+
34
+ def substrate_size(Femtet):
35
+ """基板のXY平面上での専有面積を計算します。"""
36
+ substrate_w = Femtet.GetVariableValue('substrate_w')
37
+ substrate_d = Femtet.GetVariableValue('substrate_d')
38
+ return substrate_w * substrate_d # 単位: mm2
39
+
40
+
41
+ if __name__ == '__main__':
42
+
43
+ # FEMOpt オブジェクトの初期化 (最適化問題とFemtetとの接続を行います)
44
+ femopt = FEMOpt()
45
+
46
+ # 設計変数を最適化問題に追加 (femprj ファイルに登録されている変数を指定してください)
47
+ femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=60)
48
+ femopt.add_parameter("substrate_d", 60, lower_bound=34, upper_bound=60)
49
+ femopt.add_parameter("rot", 0, lower_bound=0, upper_bound=180)
50
+
51
+ # 目的関数を最適化問題に追加
52
+ femopt.add_objective(chip_temp, name='MAINCHIP<br>最高温度(度)', direction='minimize', args=('MAINCHIP',))
53
+ femopt.add_objective(chip_temp, name='SUBCHIP<br>最高温度(度)', direction='minimize', args=('SUBCHIP',))
54
+ femopt.add_objective(substrate_size, name='基板サイズ(mm2)', direction='minimize')
55
+
56
+ # 最適化を実行
57
+ femopt.set_random_seed(42)
58
+ # femopt.optimize(n_trials=15)
59
+ femopt.optimize(n_trials=30, n_parallel=3) # 並列計算しない場合との差はこの行のみです。
60
+ femopt.terminate_all()
@@ -0,0 +1,57 @@
1
+ """多目的最適化: プリント基板上ICの発熱
2
+
3
+ Femtetの熱伝導解析ソルバを使用して、ICチップの発熱を抑えつつ
4
+ 基板サイズを小さくする設計を行います。
5
+
6
+ 対応プロジェクト: wat_ex14_parametric_jp.femprj
7
+ """
8
+ from pyfemtet.opt import FEMOpt
9
+
10
+
11
+ def chip_temp(Femtet, chip_name):
12
+ """チップの最高温度を取得します。
13
+
14
+ Note:
15
+ 目的関数または制約関数は、
16
+ 第一引数としてFemtetを受け取り、
17
+ 戻り値としてfloat型を返す必要があります。
18
+
19
+ Params:
20
+ Femtet: Femtet をマクロで操作するためのインスタンスです。詳細な情報については、「Femtet マクロヘルプ」をご覧ください。
21
+ chip_name (str): femprj 内で定義されているボディ属性名です。有効な値は 'MAINCHIP' 又は 'SUBCHIP' です。
22
+
23
+ Returns:
24
+ float: 指定されたボディ属性名のボディの最高温度です。
25
+ """
26
+ Gogh = Femtet.Gogh
27
+
28
+ max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
29
+
30
+ return max_temperature # 単位: 度
31
+
32
+
33
+ def substrate_size(Femtet):
34
+ """基板のXY平面上での専有面積を計算します。"""
35
+ substrate_w = Femtet.GetVariableValue('substrate_w')
36
+ substrate_d = Femtet.GetVariableValue('substrate_d')
37
+ return substrate_w * substrate_d # 単位: mm2
38
+
39
+
40
+ if __name__ == '__main__':
41
+
42
+ # FEMOpt オブジェクトの初期化 (最適化問題とFemtetとの接続を行います)
43
+ femopt = FEMOpt()
44
+
45
+ # 設計変数を最適化問題に追加 (femprj ファイルに登録されている変数を指定してください)
46
+ femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=60)
47
+ femopt.add_parameter("substrate_d", 60, lower_bound=34, upper_bound=60)
48
+
49
+ # 目的関数を最適化問題に追加
50
+ femopt.add_objective(chip_temp, name='MAINCHIP<br>最高温度(度)', direction='minimize', args=('MAINCHIP',))
51
+ femopt.add_objective(chip_temp, name='SUBCHIP<br>最高温度(度)', direction='minimize', args=('SUBCHIP',))
52
+ femopt.add_objective(substrate_size, name='基板サイズ(mm2)')
53
+
54
+ # 最適化を実行
55
+ femopt.set_random_seed(42)
56
+ femopt.optimize(n_trials=15)
57
+ femopt.terminate_all()
@@ -59,6 +59,7 @@ class FemtetInterface(FEMInterface):
59
59
  connect_method='auto',
60
60
  strictly_pid_specify=True,
61
61
  allow_without_project=False,
62
+ open_result_with_gui=True,
62
63
  **kwargs # 継承されたクラスからの引数
63
64
  ):
64
65
 
@@ -74,6 +75,7 @@ class FemtetInterface(FEMInterface):
74
75
  self.connect_method = connect_method
75
76
  self.allow_without_project = allow_without_project
76
77
  self.original_femprj_path = self.femprj_path
78
+ self.open_result_with_gui = open_result_with_gui
77
79
 
78
80
  # その他のメンバーの宣言や初期化
79
81
  self.Femtet = None
@@ -108,6 +110,7 @@ class FemtetInterface(FEMInterface):
108
110
  super().__init__(
109
111
  femprj_path=self.femprj_path,
110
112
  model_name=self.model_name,
113
+ open_result_with_gui=self.open_result_with_gui,
111
114
  **kwargs
112
115
  )
113
116
 
@@ -559,13 +562,14 @@ class FemtetInterface(FEMInterface):
559
562
  SolveError, # 生きてるのに開けない場合
560
563
  error_message='解析結果のオープンに失敗しました',
561
564
  is_Gaudi_method=True,
562
- args=(True,),
565
+ args=(self.open_result_with_gui,),
563
566
  )
564
567
 
565
568
  def update(self, parameters: 'pd.DataFrame') -> None:
566
569
  """See :func:`FEMInterface.update`"""
567
570
  self.parameters = parameters.copy()
568
571
  self.update_model(parameters)
572
+ # TODO: CAD 連携における座標を基にした境界条件の割当直しなどの処理をここに挟めるようにする
569
573
  self.solve()
570
574
 
571
575
  def quit(self, timeout=1, force=True):
@@ -27,10 +27,7 @@ class FemtetWithNXInterface(FemtetInterface):
27
27
  def __init__(
28
28
  self,
29
29
  prt_path,
30
- femprj_path=None,
31
- model_name=None,
32
- connect_method='auto',
33
- strictly_pid_specify=True,
30
+ **kwargs
34
31
  ):
35
32
 
36
33
  # check NX installation
@@ -51,11 +48,8 @@ class FemtetWithNXInterface(FemtetInterface):
51
48
  # FemtetInterface の設定 (femprj_path, model_name の更新など)
52
49
  # + restore 情報の上書き
53
50
  super().__init__(
54
- femprj_path=femprj_path,
55
- model_name=model_name,
56
- connect_method=connect_method,
57
- strictly_pid_specify=strictly_pid_specify,
58
51
  prt_path=self.prt_path,
52
+ **kwargs
59
53
  )
60
54
 
61
55
  def check_param_value(self, name):
@@ -26,10 +26,7 @@ class FemtetWithSolidworksInterface(FemtetInterface):
26
26
  def __init__(
27
27
  self,
28
28
  sldprt_path,
29
- femprj_path=None,
30
- model_name=None,
31
- connect_method='auto',
32
- strictly_pid_specify=True,
29
+ **kwargs
33
30
  ):
34
31
  # 引数の処理
35
32
  # dask サブプロセスのときは space 直下の sldprt_path を参照する
@@ -43,11 +40,8 @@ class FemtetWithSolidworksInterface(FemtetInterface):
43
40
  # FemtetInterface の設定 (femprj_path, model_name の更新など)
44
41
  # + restore 情報の上書き
45
42
  super().__init__(
46
- femprj_path=femprj_path,
47
- model_name=model_name,
48
- connect_method=connect_method,
49
- strictly_pid_specify=strictly_pid_specify,
50
43
  sldprt_path=self.sldprt_path,
44
+ **kwargs
51
45
  )
52
46
 
53
47
  def initialize_sldworks_connection(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyfemtet
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  Home-page: https://github.com/pyfemtet/pyfemtet
6
6
  License: BSD-3-Clause
@@ -0,0 +1,71 @@
1
+ pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.femprj,sha256=JfzRl_C72doQFJO0hJq8BTX6TSFB_Skh2C4l-kiWoXY,170268
2
+ pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.prt,sha256=3okHLeMdslrRA_wkhppZtxIe-2-ZPMfNqWCdQwUV31o,226626
3
+ pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.py,sha256=YJ3nszFLYfd7m4CaQ6ZG9DS_aHdgQIdSHCopmGakBWE,3980
4
+ pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.SLDPRT,sha256=U0Yh559Fygd5sp013NwwhZ5vRA8D_E6kmiUXDP5isJQ,83094
5
+ pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.femprj,sha256=omF3QvS8gzi_fSr2yobbVVaspR2YzDiUcMYvei-8ZmQ,155307
6
+ pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.py,sha256=Irv3nNXkQpCGZgy41IcWwGKVddW6oOziwe6EyantUn4,4182
7
+ pyfemtet/FemtetPJTSample/_her_ex40_parametric.py,sha256=B5PQoh71Q3KN2CyLU1gP_Yh9g3o6poi0HFasWzHQ_vk,5144
8
+ pyfemtet/FemtetPJTSample/gau_ex08_parametric.femprj,sha256=EguPWZHcwZMMX8cX1rZhLc2Pr__P4PR8RF4_n4uxDaI,268761
9
+ pyfemtet/FemtetPJTSample/gau_ex08_parametric.py,sha256=B-ibQDodTLcJ-wc8sNVb1Dxae2ksL6Fns3uNBRU7s5g,1799
10
+ pyfemtet/FemtetPJTSample/her_ex40_parametric.femprj,sha256=ZFQ1Rl31dmLhYW__yahRYLejKw5DdccPGdpg67CWlS0,126336
11
+ pyfemtet/FemtetPJTSample/her_ex40_parametric.py,sha256=B5PQoh71Q3KN2CyLU1gP_Yh9g3o6poi0HFasWzHQ_vk,5144
12
+ pyfemtet/FemtetPJTSample/wat_ex14_parallel_parametric.py,sha256=UfhJffuXyhzdIWNpOrpV6xLTK1fuVvgyhlyg4Rp-628,2148
13
+ pyfemtet/FemtetPJTSample/wat_ex14_parametric.femprj,sha256=pxacKe0NPNUPAcxqo2cATFApsMKiVt2g2e_FOk4fpjA,172895
14
+ pyfemtet/FemtetPJTSample/wat_ex14_parametric.py,sha256=LGbWxCek0Ad2YrDCKykiQkE3aIypM4g8P3mLd_2anEE,2052
15
+ pyfemtet/__init__.py,sha256=-0DFAS3GW84dLmJEuzbtUA7qvIf_cBb4LhqSg0oFfeI,21
16
+ pyfemtet/core.py,sha256=3lqfBGJ5IuKz2Nqj5pRo7YQqKwx_0ZDL72u95Ur_1p0,1386
17
+ pyfemtet/dispatch_extensions.py,sha256=MhWiUXVt2Cq8vDeajMK4SrajjiAmb4m2fK8gXwHLrWA,16177
18
+ pyfemtet/logger.py,sha256=JYD0FvzijMS2NvZN7VT7vZA5hqtHEkvS93AHlIMDePw,2507
19
+ pyfemtet/opt/__init__.py,sha256=_P8unESvqCRD5pmuo6-5yo7BbrPi7c0aE6UZpqUD-_I,596
20
+ pyfemtet/opt/_femopt.py,sha256=mkawFpY0UXENeJYuH2mkLpNgUncIWY3QYMHUj-lL-4o,20602
21
+ pyfemtet/opt/_femopt_core.py,sha256=bCSb1XvqeEfX6T2Z24eLI8nIa82omy8_Pnf5HXEmEsQ,24361
22
+ pyfemtet/opt/femprj_sample/cad_ex01_NX.femprj,sha256=KC8JlHqHzqgyKriK911QSnQByQpRlw-SX5OSQ_GNe5M,149193
23
+ pyfemtet/opt/femprj_sample/cad_ex01_NX.prt,sha256=3okHLeMdslrRA_wkhppZtxIe-2-ZPMfNqWCdQwUV31o,226626
24
+ pyfemtet/opt/femprj_sample/cad_ex01_NX.py,sha256=qpfbU41qsJSMWnROzTOU1mpmHngGoa0cjnLHqNkt0EY,4519
25
+ pyfemtet/opt/femprj_sample/cad_ex01_SW.SLDPRT,sha256=jjBi4aRRwZPK-4-YRKDC4eO_Ch2jwd7M7chvJlnBbZU,97158
26
+ pyfemtet/opt/femprj_sample/cad_ex01_SW.femprj,sha256=knN0bBTHm5CqExLdmxdJvPldJ6ahnQesKt974qRjWh4,126837
27
+ pyfemtet/opt/femprj_sample/cad_ex01_SW.py,sha256=HOpxWC_jxnKmabO4u5JrHNHPR8b7WFm-PauJSoTxRrQ,4586
28
+ pyfemtet/opt/femprj_sample/gal_ex58_parametric.femprj,sha256=-HDpYkp0bi2ZGKerQGVm-TIHq67D5dkIFcgl_QmZXy4,72896
29
+ pyfemtet/opt/femprj_sample/gal_ex58_parametric.py,sha256=yNAgkHknRY6CPnYR6ETl6ZNOElepvQNwwnofUGpFhVw,2485
30
+ pyfemtet/opt/femprj_sample/gau_ex08_parametric.femprj,sha256=Yb9ILeTEKx5xfJGk8IZH_DVlgkpGB33Vy9-LGIEQboY,279251
31
+ pyfemtet/opt/femprj_sample/gau_ex08_parametric.py,sha256=7SLe6Qbi2AGm1Li7kotyy2qSYynX2YitoW255XRxOOI,1956
32
+ pyfemtet/opt/femprj_sample/her_ex40_parametric.femprj,sha256=LLAUDlUo1dIpRzlKPs1lvACzJQxjnWW3xAGAodYEqRM,117221
33
+ pyfemtet/opt/femprj_sample/her_ex40_parametric.py,sha256=9ubwnEavFpjbTAbH5RmYwYoGxATl-ehW_oH_kDLTlXs,4839
34
+ pyfemtet/opt/femprj_sample/paswat_ex1_parametric.femprj,sha256=z2NHFJWiuiLv_zhxjFpLpmRbYVvQ43bAMj_NLioQGsk,262283
35
+ pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py,sha256=nFBQPr2gaCoLVxZDsKVUU_aZ3I9ZwbQCwz1_qJTSgOU,2388
36
+ pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py,sha256=2IPq3SMrd2TCQMKL0_NA7ELBAj9yqwNe2RiMWpopw_M,2499
37
+ pyfemtet/opt/femprj_sample/wat_ex14_parametric.femprj,sha256=F-yu2dGrsbrIA1Lhizu2aHTjQFTohyBmOuJv-Iyl8jk,179596
38
+ pyfemtet/opt/femprj_sample/wat_ex14_parametric.py,sha256=sGj0khYO7_yGyXGHbdWJ883XvzO1HUbrgBLjiS2d7TM,2240
39
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.femprj,sha256=0RBhOGhtiFAp0QSCTBYEaDY9EZymn9hJYchAOJ6PaBA,143533
40
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py,sha256=2LE-3d0XEChqCSwgUi45V8eAsF_YUGUgO9jLx5u5bjQ,4797
41
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.femprj,sha256=ZZhT9XjB9Xu9YwHWv4gbvKBiUWlOFKEoHjAcGWb3vvQ,128026
42
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py,sha256=o8P6o7Q0d0Jj02Qeij8kxbduyyKf_fNHSlXU_1H65S8,4864
43
+ pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.femprj,sha256=zmKyHbVI2vYaQU3KYrAfsiA1d87HVfDYw27VAcd1Yno,75668
44
+ pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py,sha256=gnCPiaxCPITAP-972DylFQ0BNpDJLeal9HPf5cfbhRI,2488
45
+ pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.femprj,sha256=TTXw_8YT8pzHQlu4ufGzTq1IFYSwcWWt4GA6sIY1YPM,295600
46
+ pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py,sha256=GxfAb5_0F9tK_i9almLdQh7OjzdNFo_leoyIPtPCqvM,2114
47
+ pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.femprj,sha256=OJ7f8iw0z1BZqanuNn71uEaoM2Kgb93ptUU8iYwYON0,129783
48
+ pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py,sha256=FFXO4GblaCHXrU7yUapBcescscESrVv-dutVYs4Fp4s,5272
49
+ pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.femprj,sha256=y7eURFBdqh6PmD4zbelGuB458HmfihVht0K4wVI-mik,265368
50
+ pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py,sha256=cm_P-qXX0p4GBzst6IUuarkSczrDhitCNodzlcbyRPM,2516
51
+ pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py,sha256=zpkGyKBhPJhEoc_pfYX6m27FgGcEV8D8HIBUg6EL_ps,2632
52
+ pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.femprj,sha256=dMwQMt6yok_PbZLyxPYdmg5wJQwgQDZ4RhS76zdGLGk,177944
53
+ pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py,sha256=vnfI4WuCvyjQN1MhnzyB-jcAPtTwz3yNiwtTm2yQZHU,2311
54
+ pyfemtet/opt/interface/__init__.py,sha256=qz5BszPuU3jZIoDnPjkPDAgvgHLlx1sYhuqh5ID798k,480
55
+ pyfemtet/opt/interface/_base.py,sha256=lDjdvKYmBMxSc7SfoWSu91qVijGaQ2Ng-0C7z_f4eFM,2079
56
+ pyfemtet/opt/interface/_femtet.py,sha256=4FoDG5OBMPh3mIy-_EPIgQ9v37XOa3jKLTIqpjf3vAA,24754
57
+ pyfemtet/opt/interface/_femtet_with_nx/__init__.py,sha256=-6W2g2FDEcKzGHmI5KAKQe-4U5jDpMj0CXuma-GZca0,83
58
+ pyfemtet/opt/interface/_femtet_with_nx/_interface.py,sha256=kTEmfAyLMEZvYTYjGXgYnoyhi-wDzhKK7opyVp7rOcY,3931
59
+ pyfemtet/opt/interface/_femtet_with_nx/update_model.py,sha256=t0AB7mKY7rmrI_9stP1-5qhzmugEQ19DnZ4CCrCdTSw,2856
60
+ pyfemtet/opt/interface/_femtet_with_sldworks.py,sha256=400FidHp7mBAVLyxzLlLtGYNzK_TtK61ycd4vFjHES0,6254
61
+ pyfemtet/opt/opt/__init__.py,sha256=eQh-7PJN2YEUbHZnjinbeIyb0bk1wSh76TaEAa2l8SU,191
62
+ pyfemtet/opt/opt/_base.py,sha256=aO71a8lIHHb5xIEoIu7oO_maynrNIEHfwt4uFFOUY58,7101
63
+ pyfemtet/opt/opt/_optuna.py,sha256=TWtp9auU6GBWtEJVOuo8aWSvLcCHCUNUyOQRnqyln4I,9996
64
+ pyfemtet/opt/visualization/__init__.py,sha256=PUCHoZnuZrHjTd0QQQBgzWkCpKY2noBPTvi-lyvxQyw,193
65
+ pyfemtet/opt/visualization/_graphs.py,sha256=G6HaoGD3GpuwXih1nuTeFQMD0zv4jrhogedP9hxaG1c,5306
66
+ pyfemtet/opt/visualization/_monitor.py,sha256=WcbuMjnp5LiybwCYBnJ78ju2h7sBJJtqUf1CbUacfXI,42104
67
+ pyfemtet-0.4.3.dist-info/LICENSE,sha256=sVQBhyoglGJUu65-BP3iR6ujORI6YgEU2Qm-V4fGlOA,1485
68
+ pyfemtet-0.4.3.dist-info/METADATA,sha256=8OEDM6wEqTEZc_6SJN8sBd55ie3OHYQZRguABCT_ulA,1848
69
+ pyfemtet-0.4.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
70
+ pyfemtet-0.4.3.dist-info/entry_points.txt,sha256=E_NUq8BEuKLM3z6Ou0sh6HyvaKE5O6NBDlmO-wgEGaQ,67
71
+ pyfemtet-0.4.3.dist-info/RECORD,,
@@ -1,38 +0,0 @@
1
- pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.femprj,sha256=JfzRl_C72doQFJO0hJq8BTX6TSFB_Skh2C4l-kiWoXY,170268
2
- pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.prt,sha256=3okHLeMdslrRA_wkhppZtxIe-2-ZPMfNqWCdQwUV31o,226626
3
- pyfemtet/FemtetPJTSample/NX_ex01/NX_ex01.py,sha256=YJ3nszFLYfd7m4CaQ6ZG9DS_aHdgQIdSHCopmGakBWE,3980
4
- pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.SLDPRT,sha256=U0Yh559Fygd5sp013NwwhZ5vRA8D_E6kmiUXDP5isJQ,83094
5
- pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.femprj,sha256=omF3QvS8gzi_fSr2yobbVVaspR2YzDiUcMYvei-8ZmQ,155307
6
- pyfemtet/FemtetPJTSample/Sldworks_ex01/Sldworks_ex01.py,sha256=Irv3nNXkQpCGZgy41IcWwGKVddW6oOziwe6EyantUn4,4182
7
- pyfemtet/FemtetPJTSample/gau_ex08_parametric.femprj,sha256=EguPWZHcwZMMX8cX1rZhLc2Pr__P4PR8RF4_n4uxDaI,268761
8
- pyfemtet/FemtetPJTSample/gau_ex08_parametric.py,sha256=B-ibQDodTLcJ-wc8sNVb1Dxae2ksL6Fns3uNBRU7s5g,1799
9
- pyfemtet/FemtetPJTSample/her_ex40_parametric.femprj,sha256=ZFQ1Rl31dmLhYW__yahRYLejKw5DdccPGdpg67CWlS0,126336
10
- pyfemtet/FemtetPJTSample/her_ex40_parametric.py,sha256=B5PQoh71Q3KN2CyLU1gP_Yh9g3o6poi0HFasWzHQ_vk,5144
11
- pyfemtet/FemtetPJTSample/wat_ex14_parallel_parametric.py,sha256=UfhJffuXyhzdIWNpOrpV6xLTK1fuVvgyhlyg4Rp-628,2148
12
- pyfemtet/FemtetPJTSample/wat_ex14_parametric.femprj,sha256=pxacKe0NPNUPAcxqo2cATFApsMKiVt2g2e_FOk4fpjA,172895
13
- pyfemtet/FemtetPJTSample/wat_ex14_parametric.py,sha256=LGbWxCek0Ad2YrDCKykiQkE3aIypM4g8P3mLd_2anEE,2052
14
- pyfemtet/__init__.py,sha256=Y-I6FXKes4hB39WcBm3HZ1OCtCWiErPB6YZ-YSgexuE,21
15
- pyfemtet/core.py,sha256=3lqfBGJ5IuKz2Nqj5pRo7YQqKwx_0ZDL72u95Ur_1p0,1386
16
- pyfemtet/dispatch_extensions.py,sha256=MhWiUXVt2Cq8vDeajMK4SrajjiAmb4m2fK8gXwHLrWA,16177
17
- pyfemtet/logger.py,sha256=JYD0FvzijMS2NvZN7VT7vZA5hqtHEkvS93AHlIMDePw,2507
18
- pyfemtet/opt/__init__.py,sha256=_P8unESvqCRD5pmuo6-5yo7BbrPi7c0aE6UZpqUD-_I,596
19
- pyfemtet/opt/_femopt.py,sha256=mkawFpY0UXENeJYuH2mkLpNgUncIWY3QYMHUj-lL-4o,20602
20
- pyfemtet/opt/_femopt_core.py,sha256=bCSb1XvqeEfX6T2Z24eLI8nIa82omy8_Pnf5HXEmEsQ,24361
21
- pyfemtet/opt/interface/__init__.py,sha256=qz5BszPuU3jZIoDnPjkPDAgvgHLlx1sYhuqh5ID798k,480
22
- pyfemtet/opt/interface/_base.py,sha256=lDjdvKYmBMxSc7SfoWSu91qVijGaQ2Ng-0C7z_f4eFM,2079
23
- pyfemtet/opt/interface/_femtet.py,sha256=VzwJ4srviYIb9X4HNDx1_W2w2xUpNYBxa928qBZpdAc,24439
24
- pyfemtet/opt/interface/_femtet_with_nx/__init__.py,sha256=-6W2g2FDEcKzGHmI5KAKQe-4U5jDpMj0CXuma-GZca0,83
25
- pyfemtet/opt/interface/_femtet_with_nx/_interface.py,sha256=OU0nYmePEVKsjplokisfyuaepB-PkL6E-cwCiIhXNS0,4192
26
- pyfemtet/opt/interface/_femtet_with_nx/update_model.py,sha256=t0AB7mKY7rmrI_9stP1-5qhzmugEQ19DnZ4CCrCdTSw,2856
27
- pyfemtet/opt/interface/_femtet_with_sldworks.py,sha256=t3CZ-ni2kXBpbCdr9C5xEc2GHgW8LscJNMV97wJRnTk,6515
28
- pyfemtet/opt/opt/__init__.py,sha256=eQh-7PJN2YEUbHZnjinbeIyb0bk1wSh76TaEAa2l8SU,191
29
- pyfemtet/opt/opt/_base.py,sha256=aO71a8lIHHb5xIEoIu7oO_maynrNIEHfwt4uFFOUY58,7101
30
- pyfemtet/opt/opt/_optuna.py,sha256=TWtp9auU6GBWtEJVOuo8aWSvLcCHCUNUyOQRnqyln4I,9996
31
- pyfemtet/opt/visualization/__init__.py,sha256=PUCHoZnuZrHjTd0QQQBgzWkCpKY2noBPTvi-lyvxQyw,193
32
- pyfemtet/opt/visualization/_graphs.py,sha256=G6HaoGD3GpuwXih1nuTeFQMD0zv4jrhogedP9hxaG1c,5306
33
- pyfemtet/opt/visualization/_monitor.py,sha256=WcbuMjnp5LiybwCYBnJ78ju2h7sBJJtqUf1CbUacfXI,42104
34
- pyfemtet-0.4.2.dist-info/LICENSE,sha256=sVQBhyoglGJUu65-BP3iR6ujORI6YgEU2Qm-V4fGlOA,1485
35
- pyfemtet-0.4.2.dist-info/METADATA,sha256=Dl3D0ipVFiUvEwcDOMbp5c8N3gPvLzjvg7Wuc7ahrCA,1848
36
- pyfemtet-0.4.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
37
- pyfemtet-0.4.2.dist-info/entry_points.txt,sha256=E_NUq8BEuKLM3z6Ou0sh6HyvaKE5O6NBDlmO-wgEGaQ,67
38
- pyfemtet-0.4.2.dist-info/RECORD,,