pyfemtet 0.4.8__py3-none-any.whl → 0.4.10__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 (29) hide show
  1. pyfemtet/__init__.py +1 -1
  2. pyfemtet/opt/_femopt.py +1 -4
  3. pyfemtet/opt/_femopt_core.py +1 -1
  4. pyfemtet/opt/femprj_sample/cad_ex01_NX.py +7 -0
  5. pyfemtet/opt/femprj_sample/cad_ex01_SW.py +7 -0
  6. pyfemtet/opt/femprj_sample/gal_ex58_parametric.py +7 -0
  7. pyfemtet/opt/femprj_sample/gau_ex08_parametric.py +7 -0
  8. pyfemtet/opt/femprj_sample/her_ex40_parametric.py +7 -0
  9. pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py +7 -0
  10. pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py +7 -0
  11. pyfemtet/opt/femprj_sample/wat_ex14_parametric.py +7 -0
  12. pyfemtet/opt/femprj_sample/wat_ex14_parametric_parallel.py +66 -0
  13. pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py +7 -0
  14. pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py +7 -0
  15. pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py +7 -0
  16. pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py +7 -0
  17. pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py +7 -0
  18. pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py +7 -0
  19. pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +7 -0
  20. pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py +7 -0
  21. pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_parallel_jp.py +64 -0
  22. pyfemtet/opt/visualization/_monitor.py +1 -1
  23. pyfemtet/opt/visualization/result_viewer.py +13 -0
  24. {pyfemtet-0.4.8.dist-info → pyfemtet-0.4.10.dist-info}/METADATA +1 -1
  25. {pyfemtet-0.4.8.dist-info → pyfemtet-0.4.10.dist-info}/RECORD +28 -25
  26. pyfemtet-0.4.10.dist-info/entry_points.txt +3 -0
  27. pyfemtet-0.4.8.dist-info/entry_points.txt +0 -3
  28. {pyfemtet-0.4.8.dist-info → pyfemtet-0.4.10.dist-info}/LICENSE +0 -0
  29. {pyfemtet-0.4.8.dist-info → pyfemtet-0.4.10.dist-info}/WHEEL +0 -0
pyfemtet/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.4.8"
1
+ __version__ = "0.4.10"
pyfemtet/opt/_femopt.py CHANGED
@@ -513,10 +513,7 @@ class FEMOpt:
513
513
  sleep(1)
514
514
 
515
515
  # terminate monitor process
516
- if self._is_error_exit:
517
- self.status.set(OptimizationStatus.CRASHED)
518
- else:
519
- self.status.set(OptimizationStatus.TERMINATE_ALL)
516
+ self.status.set(OptimizationStatus.TERMINATE_ALL)
520
517
  logger.info(self.monitor_process_future.result())
521
518
  sleep(1)
522
519
 
@@ -713,8 +713,8 @@ class OptimizationStatus:
713
713
  RUNNING = 30
714
714
  INTERRUPTING = 40
715
715
  TERMINATED = 50
716
- CRASHED = 55
717
716
  TERMINATE_ALL = 60
717
+ CRASHED = 70
718
718
 
719
719
  def __init__(self, client, name='entire'):
720
720
  self._future = client.submit(_OptimizationStatusActor, actor=True)
@@ -133,4 +133,11 @@ if __name__ == '__main__':
133
133
  # Run optimization.
134
134
  femopt.set_random_seed(42)
135
135
  femopt.optimize(n_trials=20)
136
+
137
+ # Stop script to keep process alive
138
+ # while you check the result in process monitor.
139
+ print('================================')
140
+ print('Finished. Press Enter to quit...')
141
+ print('================================')
142
+ input()
136
143
  femopt.terminate_all()
@@ -129,4 +129,11 @@ if __name__ == '__main__':
129
129
  # Run optimization.
130
130
  femopt.set_random_seed(42)
131
131
  femopt.optimize(n_trials=20)
132
+
133
+ # Stop script to keep process alive
134
+ # while you check the result in process monitor.
135
+ print('================================')
136
+ print('Finished. Press Enter to quit...')
137
+ print('================================')
138
+ input()
132
139
  femopt.terminate_all()
@@ -72,4 +72,11 @@ if __name__ == '__main__':
72
72
  # Run optimization.
73
73
  femopt.set_random_seed(42)
74
74
  femopt.optimize(n_trials=10)
75
+
76
+ # Stop script to keep process alive
77
+ # while you check the result in process monitor.
78
+ print('================================')
79
+ print('Finished. Press Enter to quit...')
80
+ print('================================')
81
+ input()
75
82
  femopt.terminate_all()
@@ -56,4 +56,11 @@ if __name__ == '__main__':
56
56
  # Run optimization.
57
57
  femopt.set_random_seed(42)
58
58
  femopt.optimize(n_trials=20)
59
+
60
+ # Stop script to keep process alive
61
+ # while you check the result in process monitor.
62
+ print('================================')
63
+ print('Finished. Press Enter to quit...')
64
+ print('================================')
65
+ input()
59
66
  femopt.terminate_all()
@@ -134,4 +134,11 @@ if __name__ == '__main__':
134
134
 
135
135
  femopt.set_random_seed(42)
136
136
  femopt.optimize(n_trials=15)
137
+
138
+ # Stop script to keep process alive
139
+ # while you check the result in process monitor.
140
+ print('================================')
141
+ print('Finished. Press Enter to quit...')
142
+ print('================================')
143
+ input()
137
144
  femopt.terminate_all()
@@ -58,4 +58,11 @@ if __name__ == '__main__':
58
58
  # Run optimization.
59
59
  femopt.set_random_seed(42)
60
60
  femopt.optimize(n_trials=15)
61
+
62
+ # Stop script to keep process alive
63
+ # while you check the result in process monitor.
64
+ print('================================')
65
+ print('Finished. Press Enter to quit...')
66
+ print('================================')
67
+ input()
61
68
  femopt.terminate_all()
@@ -59,4 +59,11 @@ if __name__ == '__main__':
59
59
  femopt.set_random_seed(42)
60
60
  # femopt.optimize(n_trials=15)
61
61
  femopt.optimize(n_trials=30, n_parallel=3) # This line is the only difference with no parallel pattern.
62
+
63
+ # Stop script to keep process alive
64
+ # while you check the result in process monitor.
65
+ print('================================')
66
+ print('Finished. Press Enter to quit...')
67
+ print('================================')
68
+ input()
62
69
  femopt.terminate_all()
@@ -56,4 +56,11 @@ if __name__ == '__main__':
56
56
  # Run optimization.
57
57
  femopt.set_random_seed(42)
58
58
  femopt.optimize(n_trials=15)
59
+
60
+ # Stop script to keep process alive
61
+ # while you check the result in process monitor.
62
+ print('================================')
63
+ print('Finished. Press Enter to quit...')
64
+ print('================================')
65
+ input()
59
66
  femopt.terminate_all()
@@ -0,0 +1,66 @@
1
+ """Multi-objective optimization: heating element on substrate.
2
+
3
+ Using Femtet's heat conduction analysis solver, we will design
4
+ to reduce the chip temperature and shrink the board size.
5
+
6
+ Corresponding project: wat_ex14_parametric.femprj
7
+ """
8
+ from pyfemtet.opt import FEMOpt
9
+
10
+
11
+ def chip_temp(Femtet, chip_name):
12
+ """Obtain the maximum temperature of the chip.
13
+
14
+ Note:
15
+ The objective or constraint function should take Femtet
16
+ as its first argument and return a float as the output.
17
+
18
+ Params:
19
+ Femtet: An instance for manipulating Femtet with macros. For detailed information, please refer to "Femtet Macro Help".
20
+ chip_name (str): The body attribute name defined in femprj. Valid values are 'MAINCHIP' or 'SUBCHIP'.
21
+
22
+ Returns:
23
+ float: The maximum temperature of the body with the specified body attribute name.
24
+ """
25
+ Gogh = Femtet.Gogh
26
+
27
+ max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
28
+
29
+ return max_temperature # unit: degree
30
+
31
+
32
+ def substrate_size(Femtet):
33
+ """Calculate the occupied area on the XY plane of the substrate."""
34
+ substrate_w = Femtet.GetVariableValue('substrate_w')
35
+ substrate_d = Femtet.GetVariableValue('substrate_d')
36
+ return substrate_w * substrate_d # unit: mm2
37
+
38
+
39
+ if __name__ == '__main__':
40
+
41
+ # Initialize the FEMOpt object.
42
+ # (establish connection between the optimization problem and Femtet)
43
+ femopt = FEMOpt()
44
+
45
+ # Add design variables to the optimization problem.
46
+ # (Specify the variables registered in the femprj file.)
47
+ femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=40)
48
+ femopt.add_parameter("substrate_d", 60, lower_bound=33, upper_bound=60)
49
+
50
+ # Add the objective function to the optimization problem.
51
+ # The target bending angle is 90 degrees.
52
+ femopt.add_objective(chip_temp, name='max temp. of<br>MAINCHIP (degree)', direction='minimize', args=('MAINCHIP',))
53
+ femopt.add_objective(chip_temp, name='max temp. of<br>SUBCHIP (degree)', direction='minimize', args=('SUBCHIP',))
54
+ femopt.add_objective(substrate_size, name='substrate size')
55
+
56
+ # Run optimization.
57
+ femopt.set_random_seed(42)
58
+ femopt.optimize(n_trials=15, n_parallel=3) # This line is the only difference with no parallel pattern.
59
+
60
+ # Stop script to keep process alive
61
+ # while you check the result in process monitor.
62
+ print('================================')
63
+ print('Finished. Press Enter to quit...')
64
+ print('================================')
65
+ input()
66
+ femopt.terminate_all()
@@ -127,4 +127,11 @@ if __name__ == '__main__':
127
127
  # 最適化を実行
128
128
  femopt.set_random_seed(42)
129
129
  femopt.optimize(n_trials=20)
130
+
131
+ # プロセスモニタで結果を確認するために
132
+ # Enter キーが押されるまで処理を停止します。
133
+ print('================================')
134
+ print('Finished. Press Enter to quit...')
135
+ print('================================')
136
+ input()
130
137
  femopt.terminate_all()
@@ -123,4 +123,11 @@ if __name__ == '__main__':
123
123
  # 最適化を実行
124
124
  femopt.set_random_seed(42)
125
125
  femopt.optimize(n_trials=20)
126
+
127
+ # プロセスモニタで結果を確認するために
128
+ # Enter キーが押されるまで処理を停止します。
129
+ print('================================')
130
+ print('Finished. Press Enter to quit...')
131
+ print('================================')
132
+ input()
126
133
  femopt.terminate_all()
@@ -68,4 +68,11 @@ if __name__ == '__main__':
68
68
  # 最適化を実行
69
69
  femopt.set_random_seed(42)
70
70
  femopt.optimize(n_trials=10)
71
+
72
+ # プロセスモニタで結果を確認するために
73
+ # Enter キーが押されるまで処理を停止します。
74
+ print('================================')
75
+ print('Finished. Press Enter to quit...')
76
+ print('================================')
77
+ input()
71
78
  femopt.terminate_all()
@@ -55,4 +55,11 @@ if __name__ == '__main__':
55
55
  # 最適化を実行
56
56
  femopt.set_random_seed(42)
57
57
  femopt.optimize(n_trials=20)
58
+
59
+ # プロセスモニタで結果を確認するために
60
+ # Enter キーが押されるまで処理を停止します。
61
+ print('================================')
62
+ print('Finished. Press Enter to quit...')
63
+ print('================================')
64
+ input()
58
65
  femopt.terminate_all()
@@ -134,4 +134,11 @@ if __name__ == '__main__':
134
134
 
135
135
  femopt.set_random_seed(42)
136
136
  femopt.optimize(n_trials=15)
137
+
138
+ # プロセスモニタで結果を確認するために
139
+ # Enter キーが押されるまで処理を停止します。
140
+ print('================================')
141
+ print('Finished. Press Enter to quit...')
142
+ print('================================')
143
+ input()
137
144
  femopt.terminate_all()
@@ -56,4 +56,11 @@ if __name__ == '__main__':
56
56
  # 最適化を実行
57
57
  femopt.set_random_seed(42)
58
58
  femopt.optimize(n_trials=15)
59
+
60
+ # プロセスモニタで結果を確認するために
61
+ # Enter キーが押されるまで処理を停止します。
62
+ print('================================')
63
+ print('Finished. Press Enter to quit...')
64
+ print('================================')
65
+ input()
59
66
  femopt.terminate_all()
@@ -57,4 +57,11 @@ if __name__ == '__main__':
57
57
  femopt.set_random_seed(42)
58
58
  # femopt.optimize(n_trials=15)
59
59
  femopt.optimize(n_trials=30, n_parallel=3) # 並列計算しない場合との差はこの行のみです。
60
+
61
+ # プロセスモニタで結果を確認するために
62
+ # Enter キーが押されるまで処理を停止します。
63
+ print('================================')
64
+ print('Finished. Press Enter to quit...')
65
+ print('================================')
66
+ input()
60
67
  femopt.terminate_all()
@@ -54,4 +54,11 @@ if __name__ == '__main__':
54
54
  # 最適化を実行
55
55
  femopt.set_random_seed(42)
56
56
  femopt.optimize(n_trials=15)
57
+
58
+ # プロセスモニタで結果を確認するために
59
+ # Enter キーが押されるまで処理を停止します。
60
+ print('================================')
61
+ print('Finished. Press Enter to quit...')
62
+ print('================================')
63
+ input()
57
64
  femopt.terminate_all()
@@ -0,0 +1,64 @@
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, n_parallel=3) # この部分のみ変更します
57
+
58
+ # プロセスモニタで結果を確認するために
59
+ # Enter キーが押されるまで処理を停止します。
60
+ print('================================')
61
+ print('Finished. Press Enter to quit...')
62
+ print('================================')
63
+ input()
64
+ femopt.terminate_all()
@@ -1220,7 +1220,7 @@ class ProcessMonitorApp(AppBase):
1220
1220
  self.local_worker_status_int_list = [s.get() for s in self.worker_status_list]
1221
1221
 
1222
1222
  # terminate_all 指令があれば monitor server をホストするプロセスごと終了する
1223
- if self.status.get() == OptimizationStatus.TERMINATE_ALL:
1223
+ if self.status.get() >= OptimizationStatus.TERMINATE_ALL:
1224
1224
  return 0 # take server down with me
1225
1225
 
1226
1226
  # interval
@@ -0,0 +1,13 @@
1
+ import argparse
2
+ from pyfemtet.opt.visualization._graphs import show_static_monitor
3
+
4
+
5
+ def main():
6
+ parser = argparse.ArgumentParser()
7
+
8
+ parser.add_argument('csv_path', help='pyfemtet を実行した結果の csv ファイルのパスを指定してください。', type=str)
9
+
10
+ args = parser.parse_args()
11
+
12
+ if args.csv_path:
13
+ show_static_monitor(args.csv_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyfemtet
3
- Version: 0.4.8
3
+ Version: 0.4.10
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  Home-page: https://github.com/pyfemtet/pyfemtet
6
6
  License: BSD-3-Clause
@@ -12,53 +12,55 @@ pyfemtet/FemtetPJTSample/her_ex40_parametric.py,sha256=B5PQoh71Q3KN2CyLU1gP_Yh9g
12
12
  pyfemtet/FemtetPJTSample/wat_ex14_parallel_parametric.py,sha256=UfhJffuXyhzdIWNpOrpV6xLTK1fuVvgyhlyg4Rp-628,2148
13
13
  pyfemtet/FemtetPJTSample/wat_ex14_parametric.femprj,sha256=pxacKe0NPNUPAcxqo2cATFApsMKiVt2g2e_FOk4fpjA,172895
14
14
  pyfemtet/FemtetPJTSample/wat_ex14_parametric.py,sha256=LGbWxCek0Ad2YrDCKykiQkE3aIypM4g8P3mLd_2anEE,2052
15
- pyfemtet/__init__.py,sha256=hllK95qvjUJQSsYx58i-DzgOBo2oIokt_oxkpukFlL0,21
15
+ pyfemtet/__init__.py,sha256=Gdbi_VjQzRTBSuTZ9qvNXnaj23vcJGy84tsQvXY5yYU,22
16
16
  pyfemtet/_test_util.py,sha256=cxSPWvYbvAMAEoY_H3XpWlhhdS0MijwZEQgZ7aa4Fy8,3727
17
17
  pyfemtet/core.py,sha256=3lqfBGJ5IuKz2Nqj5pRo7YQqKwx_0ZDL72u95Ur_1p0,1386
18
18
  pyfemtet/dispatch_extensions.py,sha256=MhWiUXVt2Cq8vDeajMK4SrajjiAmb4m2fK8gXwHLrWA,16177
19
19
  pyfemtet/logger.py,sha256=JYD0FvzijMS2NvZN7VT7vZA5hqtHEkvS93AHlIMDePw,2507
20
20
  pyfemtet/opt/__init__.py,sha256=_P8unESvqCRD5pmuo6-5yo7BbrPi7c0aE6UZpqUD-_I,596
21
- pyfemtet/opt/_femopt.py,sha256=o2TLbmWwiOVdDsVHSh6j3k7fWktHJQxpTpeDmDkg5XE,22601
22
- pyfemtet/opt/_femopt_core.py,sha256=fn14koJby6wP9Hh0lSanN-h5rTBhaKTov9r82VaFaiM,25490
21
+ pyfemtet/opt/_femopt.py,sha256=nP9ApYS3dSi7ytSqMApmDFp1KKlqPX-KvVqBnXauQzA,22495
22
+ pyfemtet/opt/_femopt_core.py,sha256=zB12rNBnWN-CuqGijgKL8RuBEdoyzfbNWQBTcBiTvcU,25490
23
23
  pyfemtet/opt/femprj_sample/cad_ex01_NX.femprj,sha256=KC8JlHqHzqgyKriK911QSnQByQpRlw-SX5OSQ_GNe5M,149193
24
24
  pyfemtet/opt/femprj_sample/cad_ex01_NX.prt,sha256=3okHLeMdslrRA_wkhppZtxIe-2-ZPMfNqWCdQwUV31o,226626
25
- pyfemtet/opt/femprj_sample/cad_ex01_NX.py,sha256=avqLWkSjkLG17pVFa6RTxqWcn6G1CiXe2CIk2uGhiv4,4648
25
+ pyfemtet/opt/femprj_sample/cad_ex01_NX.py,sha256=TmM8wQ5CuesS8-QWlQNwykoAJWaPxUfNjqjx7xhDqz8,4892
26
26
  pyfemtet/opt/femprj_sample/cad_ex01_NX_test_result.reccsv,sha256=hcOiI1Ct5o7k_tN8nB82kpVJpAtGvdLBjLwqEAFz49c,1029
27
27
  pyfemtet/opt/femprj_sample/cad_ex01_SW.SLDPRT,sha256=jjBi4aRRwZPK-4-YRKDC4eO_Ch2jwd7M7chvJlnBbZU,97158
28
28
  pyfemtet/opt/femprj_sample/cad_ex01_SW.femprj,sha256=knN0bBTHm5CqExLdmxdJvPldJ6ahnQesKt974qRjWh4,126837
29
- pyfemtet/opt/femprj_sample/cad_ex01_SW.py,sha256=HOpxWC_jxnKmabO4u5JrHNHPR8b7WFm-PauJSoTxRrQ,4586
29
+ pyfemtet/opt/femprj_sample/cad_ex01_SW.py,sha256=AtKGRMMweXjIriYe5kxEecrNK5KPdf2XMNm54nVK-1o,4830
30
30
  pyfemtet/opt/femprj_sample/cad_ex01_SW_test_result.reccsv,sha256=hcOiI1Ct5o7k_tN8nB82kpVJpAtGvdLBjLwqEAFz49c,1029
31
31
  pyfemtet/opt/femprj_sample/gal_ex58_parametric.femprj,sha256=dbanN3W2eX_ciZ0wZGqK60mc4edSVh5G2OqbbMKyFng,74898
32
- pyfemtet/opt/femprj_sample/gal_ex58_parametric.py,sha256=yNAgkHknRY6CPnYR6ETl6ZNOElepvQNwwnofUGpFhVw,2485
32
+ pyfemtet/opt/femprj_sample/gal_ex58_parametric.py,sha256=imD84lKenIbkxY9La37SWbPvJlhXJRnV_IFtE0tQ5ac,2729
33
33
  pyfemtet/opt/femprj_sample/gal_ex58_parametric_test_result.reccsv,sha256=hcOiI1Ct5o7k_tN8nB82kpVJpAtGvdLBjLwqEAFz49c,1029
34
34
  pyfemtet/opt/femprj_sample/gau_ex08_parametric.femprj,sha256=Yb9ILeTEKx5xfJGk8IZH_DVlgkpGB33Vy9-LGIEQboY,279251
35
- pyfemtet/opt/femprj_sample/gau_ex08_parametric.py,sha256=7SLe6Qbi2AGm1Li7kotyy2qSYynX2YitoW255XRxOOI,1956
35
+ pyfemtet/opt/femprj_sample/gau_ex08_parametric.py,sha256=SzHKPrK05Muv5edvrMr91YYN6Zm51qHbWWLCWd94Ww8,2200
36
36
  pyfemtet/opt/femprj_sample/gau_ex08_parametric_test_result.reccsv,sha256=usCllUrcaDihii8rSyCcZDhXp1wJI01P-yzm-BHfhb4,2779
37
37
  pyfemtet/opt/femprj_sample/her_ex40_parametric.femprj,sha256=LLAUDlUo1dIpRzlKPs1lvACzJQxjnWW3xAGAodYEqRM,117221
38
- pyfemtet/opt/femprj_sample/her_ex40_parametric.py,sha256=9ubwnEavFpjbTAbH5RmYwYoGxATl-ehW_oH_kDLTlXs,4839
38
+ pyfemtet/opt/femprj_sample/her_ex40_parametric.py,sha256=iEIkQLozBwQOBzv04nVH0JRUByPvfwPX50c1P9IRHfY,5083
39
39
  pyfemtet/opt/femprj_sample/her_ex40_parametric_test_result.reccsv,sha256=_vTN2GdxPcHZByNw14izdYB190Vn6WROp7-qOHW7QU8,2845
40
40
  pyfemtet/opt/femprj_sample/paswat_ex1_parametric.femprj,sha256=z2NHFJWiuiLv_zhxjFpLpmRbYVvQ43bAMj_NLioQGsk,262283
41
- pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py,sha256=nFBQPr2gaCoLVxZDsKVUU_aZ3I9ZwbQCwz1_qJTSgOU,2388
42
- pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py,sha256=2IPq3SMrd2TCQMKL0_NA7ELBAj9yqwNe2RiMWpopw_M,2499
41
+ pyfemtet/opt/femprj_sample/paswat_ex1_parametric.py,sha256=HXbkWYUtGB5p1IyCfrg-CQ6Q5HXTEtgAtKwa75iGXBo,2632
42
+ pyfemtet/opt/femprj_sample/paswat_ex1_parametric_parallel.py,sha256=Px8fS_WrQ0N3xaD5eHyYvx2-kcx8Mf84CIC2STS1kKw,2743
43
43
  pyfemtet/opt/femprj_sample/paswat_ex1_parametric_test_result.reccsv,sha256=RjENlloyx71dkZJ_fIY6FVWKnSBCT_RmV1dO98eJxyY,3303
44
44
  pyfemtet/opt/femprj_sample/wat_ex14_parametric.femprj,sha256=F-yu2dGrsbrIA1Lhizu2aHTjQFTohyBmOuJv-Iyl8jk,179596
45
- pyfemtet/opt/femprj_sample/wat_ex14_parametric.py,sha256=sGj0khYO7_yGyXGHbdWJ883XvzO1HUbrgBLjiS2d7TM,2240
45
+ pyfemtet/opt/femprj_sample/wat_ex14_parametric.py,sha256=o_LeUpo779a8vCBjxqS6NNF5zS7ID4mBfFjHsYvI1vs,2484
46
+ pyfemtet/opt/femprj_sample/wat_ex14_parametric_parallel.py,sha256=_kZVa4zSxY9UAa_CA1V_tFeTpjf4F8BHAJpYLZzF-r4,2560
46
47
  pyfemtet/opt/femprj_sample/wat_ex14_parametric_test_result.reccsv,sha256=92IkN7HdHBatyacO6aU3MVhOG6rkXlodlw34oF91BSM,3056
47
48
  pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.femprj,sha256=0RBhOGhtiFAp0QSCTBYEaDY9EZymn9hJYchAOJ6PaBA,143533
48
- pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py,sha256=eH7u_Mq-THlEV4R1mlrSK6uVz5-_KiO3p4Rl57A_Cik,4926
49
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_NX_jp.py,sha256=sqhOskvRn84e1xET5rTfvbu5WG0kXvLoNfdAJ3e_XqA,5205
49
50
  pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.femprj,sha256=ZZhT9XjB9Xu9YwHWv4gbvKBiUWlOFKEoHjAcGWb3vvQ,128026
50
- pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py,sha256=o8P6o7Q0d0Jj02Qeij8kxbduyyKf_fNHSlXU_1H65S8,4864
51
+ pyfemtet/opt/femprj_sample_jp/cad_ex01_SW_jp.py,sha256=qI_mU_0ype_6706CQphaLD_IF2ILawgNqPUCWsfbLsc,5143
51
52
  pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.femprj,sha256=PzqtNVde6VnMHFpedRBsOq9JVhCY0ymQPVs54EKsNLw,75668
52
- pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py,sha256=gnCPiaxCPITAP-972DylFQ0BNpDJLeal9HPf5cfbhRI,2488
53
+ pyfemtet/opt/femprj_sample_jp/gal_ex58_parametric_jp.py,sha256=MLLlWxpDo1JWWiglNc7XNoms3_IXPCj65aEPy_83tLs,2767
53
54
  pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.femprj,sha256=TTXw_8YT8pzHQlu4ufGzTq1IFYSwcWWt4GA6sIY1YPM,295600
54
- pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py,sha256=GxfAb5_0F9tK_i9almLdQh7OjzdNFo_leoyIPtPCqvM,2114
55
+ pyfemtet/opt/femprj_sample_jp/gau_ex08_parametric_jp.py,sha256=g8VYoibnKwnNpK7KPZ321jrlSL28xJ3dKzP3FacovNw,2393
55
56
  pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.femprj,sha256=OJ7f8iw0z1BZqanuNn71uEaoM2Kgb93ptUU8iYwYON0,129783
56
- pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py,sha256=FFXO4GblaCHXrU7yUapBcescscESrVv-dutVYs4Fp4s,5272
57
+ pyfemtet/opt/femprj_sample_jp/her_ex40_parametric_jp.py,sha256=eMrUZhyqIQ2jDl9kdHrTnpvmiw-6GkPJQBf7kaBilaI,5551
57
58
  pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.femprj,sha256=y7eURFBdqh6PmD4zbelGuB458HmfihVht0K4wVI-mik,265368
58
- pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py,sha256=cm_P-qXX0p4GBzst6IUuarkSczrDhitCNodzlcbyRPM,2516
59
- pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py,sha256=zpkGyKBhPJhEoc_pfYX6m27FgGcEV8D8HIBUg6EL_ps,2632
59
+ pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_jp.py,sha256=HwLhd1xIq_wdQchjttKmcT4EU1lpNkcaAZDcK-L8C_w,2795
60
+ pyfemtet/opt/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py,sha256=utOjKYFSXqvrgPtphHMeYUQpDT20K7Iw2GBLG80ga5M,2911
60
61
  pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.femprj,sha256=dMwQMt6yok_PbZLyxPYdmg5wJQwgQDZ4RhS76zdGLGk,177944
61
- pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py,sha256=vnfI4WuCvyjQN1MhnzyB-jcAPtTwz3yNiwtTm2yQZHU,2311
62
+ pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_jp.py,sha256=W30jobW1eEYuAsJJR14-EifQ1fxeXlS-gRSFqgCP4BM,2590
63
+ pyfemtet/opt/femprj_sample_jp/wat_ex14_parametric_parallel_jp.py,sha256=ul2JUwlM5jfjNRELHkT7ZDuyMOq5RAHO32vAweEhCwg,2641
62
64
  pyfemtet/opt/interface/__init__.py,sha256=qz5BszPuU3jZIoDnPjkPDAgvgHLlx1sYhuqh5ID798k,480
63
65
  pyfemtet/opt/interface/_base.py,sha256=Ti2wCicyeofAZ0DzQLYoj9PBj1lyM5_lbLa0LBoypLM,2228
64
66
  pyfemtet/opt/interface/_femtet.py,sha256=PSy1AldNK7Yg7tmxzqEmwCb5oYXouh_Y6p2vrxtwnDY,33151
@@ -72,9 +74,10 @@ pyfemtet/opt/opt/_base.py,sha256=PIEoahy7VdnrfR4jknGiB0ZzJTPzM7gEpErb6Zsm2l4,769
72
74
  pyfemtet/opt/opt/_optuna.py,sha256=TWtp9auU6GBWtEJVOuo8aWSvLcCHCUNUyOQRnqyln4I,9996
73
75
  pyfemtet/opt/visualization/__init__.py,sha256=PUCHoZnuZrHjTd0QQQBgzWkCpKY2noBPTvi-lyvxQyw,193
74
76
  pyfemtet/opt/visualization/_graphs.py,sha256=eovw8ShTGGWaDNr-nZuQZd3aa_gcYr-zziB0ZSI8JPg,5436
75
- pyfemtet/opt/visualization/_monitor.py,sha256=kMPvptwC3hQXbmrXt6HIyF1qApgUxiSH8zrE7MevgdY,45431
76
- pyfemtet-0.4.8.dist-info/LICENSE,sha256=sVQBhyoglGJUu65-BP3iR6ujORI6YgEU2Qm-V4fGlOA,1485
77
- pyfemtet-0.4.8.dist-info/METADATA,sha256=TTFX4zlFXMSiozRcC_jdlEXNpaeddgUf0URfqHARN18,3381
78
- pyfemtet-0.4.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
79
- pyfemtet-0.4.8.dist-info/entry_points.txt,sha256=E_NUq8BEuKLM3z6Ou0sh6HyvaKE5O6NBDlmO-wgEGaQ,67
80
- pyfemtet-0.4.8.dist-info/RECORD,,
77
+ pyfemtet/opt/visualization/_monitor.py,sha256=VxR1RutF_bfV37IETsUSIqjPdOPnm4OwrGVJi4eA9ag,45431
78
+ pyfemtet/opt/visualization/result_viewer.py,sha256=n3yToETPO4eDrqBtbmkB1rg0BjRQjCLbdgR84PVLAjk,379
79
+ pyfemtet-0.4.10.dist-info/LICENSE,sha256=sVQBhyoglGJUu65-BP3iR6ujORI6YgEU2Qm-V4fGlOA,1485
80
+ pyfemtet-0.4.10.dist-info/METADATA,sha256=-jkT7ZoiDefmGX-FIEZZkEYLYVZgrqNfWk72emhtcjA,3382
81
+ pyfemtet-0.4.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
82
+ pyfemtet-0.4.10.dist-info/entry_points.txt,sha256=gnfw44Hr_FcEOXVCJDSlvFzmJtmmV59gnPYChcKXem0,92
83
+ pyfemtet-0.4.10.dist-info/RECORD,,
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ pyfemtet-opt-result-viewer=pyfemtet.opt.visualization.result_viewer:main
3
+
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- opt-show=pyfemtet.opt.visualization:entry_point
3
-