pyfemtet 0.8.3__tar.gz → 0.8.5__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.8.3 → pyfemtet-0.8.5}/PKG-INFO +1 -1
- pyfemtet-0.8.5/pyfemtet/__init__.py +1 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_femopt.py +5 -6
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_femopt_core.py +1 -2
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_test_utils/record_history.py +22 -15
- pyfemtet-0.8.5/pyfemtet/opt/interface/__init__.py +37 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_surrogate/_base.py +11 -11
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_surrogate/_singletaskgp.py +4 -3
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/prediction/single_task_gp.py +2 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyproject.toml +1 -1
- pyfemtet-0.8.3/pyfemtet/__init__.py +0 -1
- pyfemtet-0.8.3/pyfemtet/_imports.py +0 -108
- pyfemtet-0.8.3/pyfemtet/opt/interface/__init__.py +0 -30
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/LICENSE +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/README.md +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_femtet_config_util/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_femtet_config_util/autosave.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_femtet_config_util/exit.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/1. make_pot.bat +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/2. make_mo.bat +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/babel.cfg +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/locales/ja/LC_MESSAGES/messages.po +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/locales/messages.pot +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_message/messages.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_util/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_util/dask_util.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_util/excel_macro_util.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_util/excel_parse_util.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_util/sample.xlsx +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/_warning.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/brep/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/brep/_impl.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/core.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/dispatch_extensions/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/dispatch_extensions/_impl.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/logger/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/logger/_impl.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_test_utils/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_test_utils/control_femtet.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/_test_utils/hyper_sphere.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/excel_ui/(ref) original_project.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/excel_ui/femtet-macro.xlsm +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/excel_ui/pyfemtet-core.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/excel_ui/test-pyfemtet-core.cmd +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_base.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_excel_interface.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet_with_nx/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet_with_nx/_interface.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet_with_nx/update_model.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_femtet_with_sldworks.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_surrogate/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/interface/_surrogate/_chaospy.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_base.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_optuna/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_optuna/_botorch_patch/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_optuna/_botorch_patch/enable_nonlinear_constraint.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_optuna/_optuna.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_optuna/_pof_botorch.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_scipy.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/_scipy_scalar.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/optimizer/parameter.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/prediction/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/prediction/_base.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/ParametricIF.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/ParametricIF.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/ParametricIF_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.prt +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.SLDPRT +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/constrained_pipe.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/constrained_pipe.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/constrained_pipe_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_parallel.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_parallel.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/constrained_pipe_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_parallel_jp.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_base.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/alert_region.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/control_femtet.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/main_figure_creator.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/main_graph.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/pm_graph.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/pm_graph_creator.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_process_monitor/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_process_monitor/application.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_process_monitor/pages.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/dbc.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/dcc.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/html.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/str_enum.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/result_viewer/.gitignore +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/result_viewer/__init__.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/result_viewer/application.py +0 -0
- {pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/result_viewer/pages.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.8.5"
|
|
@@ -31,7 +31,6 @@ from pyfemtet.opt._femopt_core import (
|
|
|
31
31
|
from pyfemtet._message import Msg, encoding
|
|
32
32
|
from pyfemtet.opt.optimizer.parameter import Parameter, Expression
|
|
33
33
|
from pyfemtet._warning import experimental_feature
|
|
34
|
-
from pyfemtet._imports import *
|
|
35
34
|
|
|
36
35
|
from dask import config as cfg
|
|
37
36
|
cfg.set({'distributed.scheduler.worker-ttl': None})
|
|
@@ -368,7 +367,7 @@ class FEMOpt:
|
|
|
368
367
|
# 引数の処理
|
|
369
368
|
if fun is None:
|
|
370
369
|
from pyfemtet.opt.interface import SurrogateModelInterfaceBase
|
|
371
|
-
if not
|
|
370
|
+
if not isinstance(self.fem, SurrogateModelInterfaceBase):
|
|
372
371
|
raise ValueError('`fun` argument is not specified.')
|
|
373
372
|
if args is None:
|
|
374
373
|
args = tuple()
|
|
@@ -404,7 +403,7 @@ class FEMOpt:
|
|
|
404
403
|
|
|
405
404
|
if names is not None:
|
|
406
405
|
if isinstance(names, str):
|
|
407
|
-
names = [f'
|
|
406
|
+
names = [f'{names}_{i}' for i in range(n_return)]
|
|
408
407
|
else:
|
|
409
408
|
# names = names
|
|
410
409
|
pass
|
|
@@ -511,13 +510,13 @@ class FEMOpt:
|
|
|
511
510
|
name = candidate
|
|
512
511
|
if using_fem is None:
|
|
513
512
|
# 自動推定機能は Femtet 特有の処理とする
|
|
514
|
-
if
|
|
513
|
+
if isinstance(self.fem, FemtetInterface):
|
|
515
514
|
using_fem = _is_access_femtet(fun)
|
|
516
515
|
else:
|
|
517
516
|
using_fem = False
|
|
518
517
|
|
|
519
518
|
# strict constraint の場合、solve 前に評価したいので Gogh へのアクセスを禁ずる
|
|
520
|
-
if strict and
|
|
519
|
+
if strict and isinstance(self.fem, FemtetInterface):
|
|
521
520
|
if _is_access_gogh(fun):
|
|
522
521
|
message = Msg.ERR_CONTAIN_GOGH_ACCESS_IN_STRICT_CONSTRAINT
|
|
523
522
|
raise Exception(message)
|
|
@@ -681,7 +680,7 @@ class FEMOpt:
|
|
|
681
680
|
|
|
682
681
|
# Femtet 特有の処理
|
|
683
682
|
metadata = None
|
|
684
|
-
if
|
|
683
|
+
if isinstance(self.fem, FemtetInterface):
|
|
685
684
|
|
|
686
685
|
# 結果 csv に記載する femprj に関する情報の作成
|
|
687
686
|
metadata = json.dumps(
|
|
@@ -36,7 +36,6 @@ else:
|
|
|
36
36
|
# pyfemtet relative
|
|
37
37
|
from pyfemtet.opt.interface import FEMInterface, FemtetInterface
|
|
38
38
|
from pyfemtet._message import encoding, Msg
|
|
39
|
-
from pyfemtet._imports import *
|
|
40
39
|
|
|
41
40
|
# logger
|
|
42
41
|
from pyfemtet.logger import get_module_logger
|
|
@@ -324,7 +323,7 @@ class Function:
|
|
|
324
323
|
|
|
325
324
|
args = self.args
|
|
326
325
|
# Femtet 特有の処理
|
|
327
|
-
if
|
|
326
|
+
if isinstance(fem, FemtetInterface):
|
|
328
327
|
args = (fem.Femtet, *args)
|
|
329
328
|
return float(self.fun(*args, **self.kwargs))
|
|
330
329
|
|
|
@@ -59,32 +59,39 @@ def _get_obj_from_csv(csv_path, encoding=ENCODING):
|
|
|
59
59
|
reader = csv.reader(f, delimiter=",")
|
|
60
60
|
meta = reader.__next__()
|
|
61
61
|
obj_indices = np.where(np.array(meta) == "obj")[0]
|
|
62
|
-
out = df.iloc[:, obj_indices]
|
|
62
|
+
out: pd.DataFrame = df.iloc[:, obj_indices]
|
|
63
|
+
out = out.dropna(axis=0)
|
|
63
64
|
return out, columns
|
|
64
65
|
|
|
65
66
|
|
|
66
|
-
def is_equal_result(ref_path, dif_path, log_path):
|
|
67
|
+
def is_equal_result(ref_path, dif_path, log_path=None, threashold=0.05):
|
|
67
68
|
"""Check the equality of two result csv files."""
|
|
68
69
|
ref_df, ref_columns = _get_obj_from_csv(ref_path)
|
|
69
70
|
dif_df, dif_columns = _get_obj_from_csv(dif_path)
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
if log_path is not None:
|
|
73
|
+
with open(log_path, "a", newline="\n", encoding=ENCODING) as f:
|
|
74
|
+
f.write("\n\n===== 結果の分析 =====\n\n")
|
|
75
|
+
f.write(f" \tref\tdif\n")
|
|
76
|
+
f.write(f"---------------------\n")
|
|
77
|
+
f.write(f"len(col)\t{len(ref_columns)}\t{len(dif_columns)}\n")
|
|
78
|
+
f.write(f"len(df) \t{len(ref_df)}\t{len(dif_df)}\n")
|
|
79
|
+
try:
|
|
80
|
+
difference = (
|
|
81
|
+
np.abs(ref_df.values - dif_df.values) / np.abs(dif_df.values)
|
|
82
|
+
).mean()
|
|
83
|
+
f.write(f"diff \t{int(difference*100)}%\n")
|
|
84
|
+
except Exception:
|
|
85
|
+
f.write(f"diff \tcannot calc\n")
|
|
86
|
+
|
|
87
|
+
else:
|
|
88
|
+
difference = (
|
|
79
89
|
np.abs(ref_df.values - dif_df.values) / np.abs(dif_df.values)
|
|
80
|
-
|
|
81
|
-
f.write(f"diff \t{int(difference*100)}%\n")
|
|
82
|
-
except Exception:
|
|
83
|
-
f.write(f"diff \tcannot calc\n")
|
|
90
|
+
).mean()
|
|
84
91
|
|
|
85
92
|
assert len(ref_columns) == len(dif_columns), "結果 csv の column 数が異なります。"
|
|
86
93
|
assert len(ref_df) == len(dif_df), "結果 csv の row 数が異なります。"
|
|
87
|
-
assert difference <=
|
|
94
|
+
assert difference <= threashold*100, f"前回の結果との平均差異が {int(difference)}% で {int(threashold*100)}% を超えています。"
|
|
88
95
|
|
|
89
96
|
|
|
90
97
|
def _get_simplified_df_values(csv_path, exclude_columns=None):
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import platform
|
|
2
|
+
from typing import TYPE_CHECKING
|
|
3
|
+
|
|
4
|
+
from pyfemtet.opt.interface._base import FEMInterface
|
|
5
|
+
from pyfemtet.opt.interface._base import NoFEM
|
|
6
|
+
|
|
7
|
+
if (platform.system() == 'Windows') or TYPE_CHECKING:
|
|
8
|
+
from pyfemtet.opt.interface._femtet import FemtetInterface
|
|
9
|
+
from pyfemtet.opt.interface._femtet_with_sldworks import FemtetWithSolidworksInterface
|
|
10
|
+
from pyfemtet.opt.interface._femtet_with_nx import FemtetWithNXInterface
|
|
11
|
+
from pyfemtet.opt.interface._excel_interface import ExcelInterface
|
|
12
|
+
|
|
13
|
+
else:
|
|
14
|
+
class NotAvailableForWindows:
|
|
15
|
+
def __init__(self, *args, **kwargs):
|
|
16
|
+
raise NotImplementedError
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
FemtetInterface = type('FemtetInterface', (NotAvailableForWindows,), {})
|
|
20
|
+
FemtetWithSolidworksInterface = type('FemtetWithSolidworksInterface', (FemtetInterface,), {})
|
|
21
|
+
FemtetWithNXInterface = type('FemtetWithNXInterface', (FemtetInterface,), {})
|
|
22
|
+
ExcelInterface = type('FemtetInterface', (NotAvailableForWindows,), {})
|
|
23
|
+
|
|
24
|
+
from pyfemtet.opt.interface._surrogate._base import SurrogateModelInterfaceBase
|
|
25
|
+
from pyfemtet.opt.interface._surrogate._singletaskgp import PoFBoTorchInterface
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
__all__ =[
|
|
29
|
+
'FEMInterface',
|
|
30
|
+
'NoFEM',
|
|
31
|
+
'FemtetInterface',
|
|
32
|
+
'FemtetWithSolidworksInterface',
|
|
33
|
+
'FemtetWithNXInterface',
|
|
34
|
+
'ExcelInterface',
|
|
35
|
+
'SurrogateModelInterfaceBase',
|
|
36
|
+
'PoFBoTorchInterface',
|
|
37
|
+
]
|
|
@@ -17,6 +17,7 @@ class SurrogateModelInterfaceBase(FEMInterface, ABC):
|
|
|
17
17
|
self,
|
|
18
18
|
history_path: str = None,
|
|
19
19
|
history: History = None,
|
|
20
|
+
override_objective: bool = True,
|
|
20
21
|
):
|
|
21
22
|
|
|
22
23
|
self.history: History
|
|
@@ -25,6 +26,7 @@ class SurrogateModelInterfaceBase(FEMInterface, ABC):
|
|
|
25
26
|
self.obj: dict[str, float] = dict()
|
|
26
27
|
self.df_prm: pd.DataFrame
|
|
27
28
|
self.df_obj: pd.DataFrame
|
|
29
|
+
self.override_objective: bool = override_objective
|
|
28
30
|
|
|
29
31
|
# history_path が与えられた場合、history をコンストラクトする
|
|
30
32
|
if history_path is not None:
|
|
@@ -57,27 +59,25 @@ class SurrogateModelInterfaceBase(FEMInterface, ABC):
|
|
|
57
59
|
FEMInterface.__init__(
|
|
58
60
|
self,
|
|
59
61
|
history=history, # コンストラクト済み history を渡せば並列計算時も何もしなくてよい
|
|
62
|
+
override_objective=self.override_objective
|
|
60
63
|
)
|
|
61
64
|
|
|
62
65
|
def filter_feasible(self, x: np.ndarray, y: np.ndarray, return_feasibility=False):
|
|
63
66
|
feasible_idx = np.where(~np.isnan(y.sum(axis=1)))
|
|
64
67
|
if return_feasibility:
|
|
65
68
|
# calculated or not
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
infeasible_idx = np.where(~self.history.get_df()['feasible'].values)
|
|
70
|
-
y[infeasible_idx] = .0
|
|
71
|
-
return x, y.reshape((-1, 1))
|
|
69
|
+
feas = np.zeros((len(y), 1), dtype=float)
|
|
70
|
+
feas[feasible_idx] = 1.
|
|
71
|
+
return x, feas
|
|
72
72
|
else:
|
|
73
73
|
return x[feasible_idx], y[feasible_idx]
|
|
74
74
|
|
|
75
75
|
def _setup_after_parallel(self, *args, **kwargs):
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
if self.override_objective:
|
|
77
|
+
opt: AbstractOptimizer = kwargs['opt']
|
|
78
|
+
obj: Objective
|
|
79
|
+
for obj_name, obj in opt.objectives.items():
|
|
80
|
+
obj.fun = lambda obj_name_=obj_name: self.obj[obj_name_]
|
|
81
81
|
|
|
82
82
|
def update_parameter(self, parameters: pd.DataFrame, with_warning=False) -> Optional[List[str]]:
|
|
83
83
|
for i, row in parameters.iterrows():
|
|
@@ -27,8 +27,8 @@ class PoFBoTorchInterface(SurrogateModelInterfaceBase):
|
|
|
27
27
|
def train_f(self):
|
|
28
28
|
# df そのまま用いて training する
|
|
29
29
|
x, y = self.filter_feasible(self.df_prm.values, self.df_obj.values, return_feasibility=True)
|
|
30
|
-
if y.min() == 1:
|
|
31
|
-
self.model_f.predict = lambda *args, **kwargs: (1., 0.001)
|
|
30
|
+
if y.min() == 1: # feasible values only
|
|
31
|
+
self.model_f.predict = lambda *args, **kwargs: (1., 0.001) # mean, std
|
|
32
32
|
self.model_f.fit(x, y)
|
|
33
33
|
|
|
34
34
|
def _setup_after_parallel(self, *args, **kwargs):
|
|
@@ -64,7 +64,8 @@ class PoFBoTorchInterface(SurrogateModelInterfaceBase):
|
|
|
64
64
|
raise SolveError(Msg.INFO_POF_IS_LESS_THAN_THRESHOLD)
|
|
65
65
|
|
|
66
66
|
# 実際の計算(mean は history.obj_names 順)
|
|
67
|
-
|
|
67
|
+
_mean, _std = self.model.predict(np.array([x]))
|
|
68
|
+
mean = _mean[0]
|
|
68
69
|
|
|
69
70
|
# 目的関数の更新
|
|
70
71
|
self.obj = {obj_name: value for obj_name, value in zip(self.history.obj_names, mean)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pyfemtet"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.5" # 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"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.8.3"
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import types
|
|
2
|
-
import importlib
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
from abc import ABCMeta
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
__all__ = [
|
|
8
|
-
'isinstance_wrapper',
|
|
9
|
-
'_LazyImport',
|
|
10
|
-
'_lazy_class_factory',
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class _MetaClass(ABCMeta):
|
|
15
|
-
__original_cls__: type
|
|
16
|
-
|
|
17
|
-
def __repr__(self):
|
|
18
|
-
if hasattr(self, '__original_cls__'):
|
|
19
|
-
return f'<LazyClass of {self.__original_cls__()}>'
|
|
20
|
-
else:
|
|
21
|
-
return f'<LazyClass of <unloaded class>>'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def _lazy_class_factory(module, cls_name):
|
|
25
|
-
class LazyClass(object, metaclass=_MetaClass):
|
|
26
|
-
# 継承を正しくコピーできていないので
|
|
27
|
-
# issubclass を使う際は注意
|
|
28
|
-
def __new__(cls, *args, **kwargs):
|
|
29
|
-
OriginalClass = cls.__original_cls__()
|
|
30
|
-
self = OriginalClass(*args, **kwargs)
|
|
31
|
-
return self
|
|
32
|
-
|
|
33
|
-
@staticmethod
|
|
34
|
-
def __original_cls__():
|
|
35
|
-
return getattr(module, cls_name)
|
|
36
|
-
|
|
37
|
-
return LazyClass
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class _LazyImport(types.ModuleType):
|
|
41
|
-
"""Module wrapper for lazy import.
|
|
42
|
-
|
|
43
|
-
Note:
|
|
44
|
-
This module is totally derived from `optuna._imports._LazyImport`.
|
|
45
|
-
The following author has the copyright of this code.
|
|
46
|
-
|
|
47
|
-
*******************************************
|
|
48
|
-
Copyright (c) 2018 Preferred Networks, Inc.
|
|
49
|
-
*******************************************
|
|
50
|
-
|
|
51
|
-
This class wraps the specified modules and lazily imports them only when accessed.
|
|
52
|
-
Otherwise, `import optuna` is slowed down by importing all submodules and
|
|
53
|
-
dependencies even if not required.
|
|
54
|
-
Within this project's usage, importlib override this module's attribute on the first
|
|
55
|
-
access and the imported submodule is directly accessed from the second access.
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
name: Name of module to apply lazy import.
|
|
59
|
-
"""
|
|
60
|
-
|
|
61
|
-
def __init__(self, name: str) -> None:
|
|
62
|
-
super().__init__(name)
|
|
63
|
-
self._name = name
|
|
64
|
-
|
|
65
|
-
def _load(self) -> types.ModuleType:
|
|
66
|
-
module = importlib.import_module(self._name)
|
|
67
|
-
self.__dict__.update(module.__dict__)
|
|
68
|
-
return module
|
|
69
|
-
|
|
70
|
-
def __getattr__(self, item: str) -> Any:
|
|
71
|
-
return getattr(self._load(), item)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def isinstance_wrapper(obj: object, cls: type) -> bool:
|
|
75
|
-
if isinstance(cls, _MetaClass):
|
|
76
|
-
try:
|
|
77
|
-
cls_ = cls.__original_cls__()
|
|
78
|
-
except ModuleNotFoundError:
|
|
79
|
-
return False
|
|
80
|
-
return isinstance(obj, cls_)
|
|
81
|
-
else:
|
|
82
|
-
return isinstance(obj, cls)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if __name__ == '__main__':
|
|
86
|
-
if TYPE_CHECKING:
|
|
87
|
-
# for type check only
|
|
88
|
-
import numpy
|
|
89
|
-
NDArray = numpy.ndarray
|
|
90
|
-
import no_module
|
|
91
|
-
else:
|
|
92
|
-
# runtime
|
|
93
|
-
numpy = _LazyImport('numpy')
|
|
94
|
-
NDArray = _lazy_class_factory(numpy, 'ndarray')
|
|
95
|
-
NDArray2 = _lazy_class_factory(numpy, 'ndarray')
|
|
96
|
-
no_module = _LazyImport('no_module')
|
|
97
|
-
NoClass = _lazy_class_factory(no_module, 'NoClass')
|
|
98
|
-
|
|
99
|
-
print('numpy is loaded:', numpy.__doc__ is not None)
|
|
100
|
-
a = NDArray(shape=[1])
|
|
101
|
-
print('numpy is loaded:', numpy.__doc__ is not None)
|
|
102
|
-
|
|
103
|
-
print(f"{isinstance(None, NoClass)=}")
|
|
104
|
-
print(f"{isinstance_wrapper(None, NoClass)=}")
|
|
105
|
-
print(f"{isinstance(a, NDArray)=}")
|
|
106
|
-
print(f"{isinstance_wrapper(a, NDArray)=}")
|
|
107
|
-
print(f"{isinstance_wrapper(a, NoClass)=}")
|
|
108
|
-
print(f"{isinstance_wrapper(a, NDArray2)=}")
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING
|
|
2
|
-
from pyfemtet._imports import _LazyImport, _lazy_class_factory
|
|
3
|
-
|
|
4
|
-
from pyfemtet.opt.interface._base import FEMInterface
|
|
5
|
-
from pyfemtet.opt.interface._base import NoFEM
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from pyfemtet.opt.interface._femtet import FemtetInterface
|
|
9
|
-
from pyfemtet.opt.interface._femtet_with_sldworks import FemtetWithSolidworksInterface
|
|
10
|
-
from pyfemtet.opt.interface._femtet_with_nx import FemtetWithNXInterface
|
|
11
|
-
from pyfemtet.opt.interface._surrogate import PoFBoTorchInterface
|
|
12
|
-
from pyfemtet.opt.interface._excel_interface import ExcelInterface
|
|
13
|
-
|
|
14
|
-
else:
|
|
15
|
-
FemtetInterface = _lazy_class_factory(_LazyImport('pyfemtet.opt.interface._femtet'), 'FemtetInterface')
|
|
16
|
-
FemtetWithSolidworksInterface = _lazy_class_factory(_LazyImport('pyfemtet.opt.interface._femtet_with_sldworks'), 'FemtetWithSolidworksInterface')
|
|
17
|
-
FemtetWithNXInterface = _lazy_class_factory(_LazyImport('pyfemtet.opt.interface._femtet_with_nx'), 'FemtetWithNXInterface')
|
|
18
|
-
PoFBoTorchInterface = _lazy_class_factory(_LazyImport('pyfemtet.opt.interface._surrogate'), 'PoFBoTorchInterface')
|
|
19
|
-
ExcelInterface = _lazy_class_factory(_LazyImport('pyfemtet.opt.interface._excel_interface'), 'ExcelInterface')
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
__all__ = [
|
|
24
|
-
'FEMInterface',
|
|
25
|
-
'NoFEM',
|
|
26
|
-
'FemtetInterface',
|
|
27
|
-
'FemtetWithNXInterface',
|
|
28
|
-
'FemtetWithSolidworksInterface',
|
|
29
|
-
'PoFBoTorchInterface',
|
|
30
|
-
]
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/advanced_samples/excel_ui/test-pyfemtet-core.cmd
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
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/ParametricIF_test_result.reccsv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX_test_result.reccsv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW_test_result.reccsv
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/constrained_pipe.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.femprj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.femprj
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_parallel.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.femprj
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/constrained_pipe_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/__init__.py
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/alert_region.py
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/control_femtet.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/main_graph.py
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/pm_graph.py
RENAMED
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_complex_components/pm_graph_creator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_process_monitor/application.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-0.8.3 → pyfemtet-0.8.5}/pyfemtet/opt/visualization/_wrapped_components/str_enum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|