From a9fe148ef1b152215a798f683608aca1f095c940 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Sep 2023 09:57:02 +0200 Subject: [PATCH 01/24] Switch from panel to trame (#30) No longer use the pyvista panel backend as it has been removed from pyvista. Signed-off-by: Johannes Mueller --- binder/environment.yml | 4 ++-- demos/hotspot_beam.ipynb | 11 ++++------- demos/lifetime_calc.ipynb | 18 ++++++++--------- demos/local_stress_with_FE.ipynb | 6 +----- demos/stress_gradient.ipynb | 34 +++++++++++++++----------------- demos/stress_strength.ipynb | 3 ++- setup.cfg | 6 +++--- 7 files changed, 37 insertions(+), 45 deletions(-) diff --git a/binder/environment.yml b/binder/environment.yml index 384f1f73..d8eb7577 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -4,8 +4,8 @@ dependencies: - pip - pip: - pylife[all] - - pyvista - - panel + - pyvista[all,jupyter] + - trame<3 - plotly - xvfbwrapper - ipyvtklink diff --git a/demos/hotspot_beam.ipynb b/demos/hotspot_beam.ipynb index ca106cae..6ee4bb25 100644 --- a/demos/hotspot_beam.ipynb +++ b/demos/hotspot_beam.ipynb @@ -32,10 +32,7 @@ "import pylife.mesh.hotspot\n", "import pylife.vmap\n", "\n", - "import pyvista as pv\n", - "\n", - "pv.set_plot_theme('document')\n", - "pv.set_jupyter_backend('panel')" + "import pyvista as pv" ] }, { @@ -102,7 +99,7 @@ "outputs": [], "source": [ "grid = pv.UnstructuredGrid(*mesh.mesh.vtk_data())\n", - "plotter = pv.Plotter(window_size=[1920, 1080])\n", + "plotter = pv.Plotter()\n", "plotter.add_mesh(grid, scalars=mesh.groupby('element_id')['hotspot'].first().to_numpy(), show_edges=True)\n", "plotter.add_scalar_bar()\n", "plotter.show()" @@ -169,9 +166,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.11.0" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/demos/lifetime_calc.ipynb b/demos/lifetime_calc.ipynb index a74839c0..50b00792 100644 --- a/demos/lifetime_calc.ipynb +++ b/demos/lifetime_calc.ipynb @@ -61,10 +61,7 @@ "# mpl.style.use('seaborn')\n", "# mpl.style.use('seaborn-notebook')\n", "mpl.style.use('bmh')\n", - "%matplotlib inline\n", - "\n", - "pv.set_plot_theme('document')\n", - "pv.set_jupyter_backend('panel')" + "%matplotlib inline" ] }, { @@ -255,7 +252,10 @@ { "cell_type": "markdown", "metadata": { - "collapsed": true + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } }, "source": [ "#### Plot the damage vs collectives" @@ -433,9 +433,8 @@ "outputs": [], "source": [ "grid = pv.UnstructuredGrid(*pyLife_mesh.mesh.vtk_data())\n", - "plotter = pv.Plotter(window_size=[1920, 1400])\n", - "plotter.add_mesh(grid, scalars=damage.to_numpy(), log_scale=True,\n", - " show_edges=True, cmap='jet')\n", + "plotter = pv.Plotter()\n", + "plotter.add_mesh(grid, scalars=damage.to_numpy(), log_scale=True, show_edges=True, cmap='jet')\n", "plotter.add_scalar_bar()\n", "plotter.show()" ] @@ -516,7 +515,8 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" + "pygments_lexer": "ipython3", + "version": "3.11.0" } }, "nbformat": 4, diff --git a/demos/local_stress_with_FE.ipynb b/demos/local_stress_with_FE.ipynb index 23ae55fd..8bc6ecde 100644 --- a/demos/local_stress_with_FE.ipynb +++ b/demos/local_stress_with_FE.ipynb @@ -32,11 +32,7 @@ "import pylife.stress\n", "import pylife.strength.fatigue\n", "import pylife.utils.histogram as psh\n", - "import pyvista as pv\n", - "\n", - "# from ansys.dpf import post\n", - "pv.set_plot_theme('document')\n", - "pv.set_jupyter_backend('panel')" + "import pyvista as pv\n" ] }, { diff --git a/demos/stress_gradient.ipynb b/demos/stress_gradient.ipynb index 46844b32..e32cc75a 100644 --- a/demos/stress_gradient.ipynb +++ b/demos/stress_gradient.ipynb @@ -24,10 +24,7 @@ "import pylife.mesh.gradient\n", "import pylife.vmap\n", "\n", - "import pyvista as pv\n", - "\n", - "pv.set_plot_theme('document')\n", - "pv.set_jupyter_backend('panel')" + "import pyvista as pv" ] }, { @@ -44,7 +41,7 @@ "outputs": [], "source": [ "vm_mesh = pylife.vmap.VMAPImport(\"plate_with_hole.vmap\")\n", - "pyLife_mesh = (vm_mesh.make_mesh('1', 'STATE-2')\n", + "mesh = (vm_mesh.make_mesh('1', 'STATE-2')\n", " .join_coordinates()\n", " .join_variable('STRESS_CAUCHY')\n", " .to_frame())" @@ -63,7 +60,7 @@ "metadata": {}, "outputs": [], "source": [ - "pyLife_mesh['mises'] = pyLife_mesh.equistress.mises()" + "mesh['mises'] = mesh.equistress.mises()" ] }, { @@ -79,7 +76,10 @@ "metadata": {}, "outputs": [], "source": [ - "grad = pyLife_mesh.gradient.gradient_of('mises')" + "grad = mesh.gradient.gradient_of('mises')\n", + "grad[\"abs_grad\"] = np.linalg.norm(grad, axis = 1)\n", + "mesh = mesh.join(grad)\n", + "display(mesh)\n" ] }, { @@ -88,9 +88,11 @@ "metadata": {}, "outputs": [], "source": [ - "grad[\"abs_grad\"] = np.linalg.norm(grad, axis = 1)\n", - "pyLife_mesh = pyLife_mesh.join(grad)\n", - "display(pyLife_mesh)\n" + "grid = pv.UnstructuredGrid(*mesh.mesh.vtk_data())\n", + "plotter = pv.Plotter()\n", + "plotter.add_mesh(grid, scalars=mesh.groupby('element_id')[\"abs_grad\"].mean().to_numpy(), show_edges=True, cmap='jet')\n", + "plotter.add_scalar_bar()\n", + "plotter.show()" ] }, { @@ -99,12 +101,7 @@ "metadata": {}, "outputs": [], "source": [ - "grid = pv.UnstructuredGrid(*pyLife_mesh.mesh.vtk_data())\n", - "plotter = pv.Plotter(window_size=[1920, 1080])\n", - "plotter.add_mesh(grid, scalars=pyLife_mesh.groupby('element_id')[\"abs_grad\"].mean().to_numpy(),\n", - " show_edges=True, cmap='jet')\n", - "plotter.add_scalar_bar()\n", - "plotter.show()" + "\"That's it\"" ] } ], @@ -123,10 +120,11 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" + "pygments_lexer": "ipython3", + "version": "3.11.0" }, "name": "stress_gradient.ipynb" }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/demos/stress_strength.ipynb b/demos/stress_strength.ipynb index e0697a28..48e16043 100644 --- a/demos/stress_strength.ipynb +++ b/demos/stress_strength.ipynb @@ -338,7 +338,8 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" + "pygments_lexer": "ipython3", + "version": "3.11.0" } }, "nbformat": 4, diff --git a/setup.cfg b/setup.cfg index c70dcd50..3afe567c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -70,7 +70,6 @@ testing = pytest-cov hypothesis pyvista - panel xvfbwrapper testbook ipykernel @@ -84,8 +83,9 @@ docs = plotly jupyter_sphinx myst_parser - panel - pyvista + pyvista[all,jupyter] + trame<3 + ipywidgets xvfbwrapper From 543bbc99d46830905a58068151cbcc566e16a6f8 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 14:52:37 +0200 Subject: [PATCH 02/24] Make wc_data and wc_int_overflow test data object a fixture ... an fix hereby detected broken test Signed-off-by: Johannes Mueller --- tests/materiallaws/test_woehlercurve.py | 112 +++++++++++++----------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/tests/materiallaws/test_woehlercurve.py b/tests/materiallaws/test_woehlercurve.py index f8617a00..0022a3d9 100644 --- a/tests/materiallaws/test_woehlercurve.py +++ b/tests/materiallaws/test_woehlercurve.py @@ -26,7 +26,9 @@ from pylife.materiallaws import WoehlerCurve -wc_data = pd.Series({ +@pytest.fixture +def wc_data(): + return pd.Series({ 'k_1': 7., 'TN': 1.75, 'ND': 1e6, @@ -34,7 +36,7 @@ }) -def test_woehler_accessor(): +def test_woehler_accessor(wc_data): wc = wc_data.drop('TN') for key in wc.index: @@ -129,7 +131,7 @@ def test_woehler_transform_probability_SD_0(): pd.testing.assert_series_equal(transformed_back, wc_50) -def test_woehler_basquin_cycles_50_single_load_single_wc(): +def test_woehler_basquin_cycles_50_single_load_single_wc(wc_data): load = 500. cycles = wc_data.woehler.basquin_cycles(load) @@ -138,7 +140,7 @@ def test_woehler_basquin_cycles_50_single_load_single_wc(): np.testing.assert_allclose(cycles, expected_cycles, rtol=1e-4) -def test_woehler_basquin_cycles_50_multiple_load_single_wc(): +def test_woehler_basquin_cycles_50_multiple_load_single_wc(wc_data): load = [200., 300., 400., 500.] cycles = wc_data.woehler.basquin_cycles(load) @@ -150,13 +152,13 @@ def test_woehler_basquin_cycles_50_multiple_load_single_wc(): def test_woehler_basquin_cycles_50_single_load_multiple_wc(): load = 400. - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6] }) - cycles = wc_data.woehler.basquin_cycles(load) + cycles = wc.woehler.basquin_cycles(load) expected_cycles = [7.5e5, 1e6, np.inf] np.testing.assert_allclose(cycles, expected_cycles, rtol=1e-4) @@ -165,13 +167,13 @@ def test_woehler_basquin_cycles_50_single_load_multiple_wc(): def test_woehler_basquin_cycles_50_multiple_load_multiple_wc(): load = [3000., 400., 500.] - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6] }) - cycles = wc_data.woehler.basquin_cycles(load) + cycles = wc.woehler.basquin_cycles(load) expected_cycles = [1e5, 1e6, 1e6] np.testing.assert_allclose(cycles, expected_cycles, rtol=1e-4) @@ -181,13 +183,13 @@ def test_woehler_basquin_cycles_50_multiple_load_multiple_wc_aligned_index(): index = pd.Index([1, 2, 3], name='element_id') load = pd.Series([3000., 400., 500.], index=index) - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6] }, index=index) - cycles = wc_data.woehler.basquin_cycles(load) + cycles = wc.woehler.basquin_cycles(load) expected_cycles = pd.Series([1e5, 1e6, 1e6], index=index) pd.testing.assert_series_equal(cycles, expected_cycles, rtol=1e-4) @@ -196,13 +198,13 @@ def test_woehler_basquin_cycles_50_multiple_load_multiple_wc_aligned_index(): def test_woehler_basquin_cycles_50_multiple_load_multiple_wc_cross_index(): load = pd.Series([3000., 400., 500.], index=pd.Index([1, 2, 3], name='scenario')) - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6] }, pd.Index([1, 2, 3], name='element_id')) - cycles = wc_data.woehler.basquin_cycles(load) + cycles = wc.woehler.basquin_cycles(load) expected_index = pd.MultiIndex.from_tuples([ (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), @@ -212,7 +214,7 @@ def test_woehler_basquin_cycles_50_multiple_load_multiple_wc_cross_index(): pd.testing.assert_index_equal(cycles.index, expected_index) -def test_woehler_basquin_cycles_50_same_k(): +def test_woehler_basquin_cycles_50_same_k(wc_data): load = [200., 300., 400., 500.] wc = wc_data.copy() @@ -223,7 +225,7 @@ def test_woehler_basquin_cycles_50_same_k(): np.testing.assert_approx_equal(calculated_k, wc.k_1) -def test_woehler_basquin_cycles_10_90(): +def test_woehler_basquin_cycles_10_90(wc_data): load = [200., 300., 400., 500.] cycles_10 = wc_data.woehler.basquin_cycles(load, 0.1)[1:] @@ -233,7 +235,7 @@ def test_woehler_basquin_cycles_10_90(): np.testing.assert_allclose(cycles_90/cycles_10, expected) -def test_woehler_basquin_load_50_single_cycles_single_wc(): +def test_woehler_basquin_load_50_single_cycles_single_wc(wc_data): cycles = 27994 load = wc_data.woehler.basquin_load(cycles) @@ -242,7 +244,7 @@ def test_woehler_basquin_load_50_single_cycles_single_wc(): np.testing.assert_allclose(load, expected_load, rtol=1e-4) -def test_woehler_basquin_load_50_multiple_cycles_single_wc(): +def test_woehler_basquin_load_50_multiple_cycles_single_wc(wc_data): cycles = [np.inf, 1e6, 133484, 27994] load = wc_data.woehler.basquin_load(cycles) @@ -253,26 +255,26 @@ def test_woehler_basquin_load_50_multiple_cycles_single_wc(): def test_woehler_basquin_load_single_cycles_multiple_wc(): cycles = 1e6 - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e5, 1e6, 1e6] }) - load = wc_data.woehler.basquin_load(cycles) + load = wc.woehler.basquin_load(cycles) expected_load = [300., 400., 500.] np.testing.assert_allclose(load, expected_load) def test_woehler_basquin_load_multiple_cycles_multiple_wc(): cycles = [1e5, 1e6, 1e7] - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6] }) - load = wc_data.woehler.basquin_load(cycles) + load = wc.woehler.basquin_load(cycles) expected_load = [3000., 400., 500.] np.testing.assert_allclose(load, expected_load) @@ -281,14 +283,14 @@ def test_woehler_basquin_load_multiple_cycles_multiple_wc_aligned_index(): index = pd.Index([1, 2, 3], name='element_id') cycles = pd.Series([1e5, 1e6, 1e7], index=index) - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6], }, index=index) expected_load = pd.Series([3000., 400., 500.], index=cycles.index) - load = wc_data.woehler.basquin_load(cycles) + load = wc.woehler.basquin_load(cycles) pd.testing.assert_series_equal(load, expected_load) @@ -296,7 +298,7 @@ def test_woehler_basquin_load_multiple_cycles_multiple_wc_aligned_index(): def test_woehler_basquin_load_multiple_cycles_multiple_wc_cross_index(): cycles = pd.Series([1e5, 1e6, 1e7], index=pd.Index([1, 2, 3], name='scenario')) - wc_data = pd.DataFrame({ + wc = pd.DataFrame({ 'k_1': [1., 2., 2.], 'SD': [300., 400., 500.], 'ND': [1e6, 1e6, 1e6], @@ -308,12 +310,12 @@ def test_woehler_basquin_load_multiple_cycles_multiple_wc_cross_index(): (3, 1), (3, 2), (3, 3), ], names=['element_id', 'scenario']) - load = wc_data.woehler.basquin_load(cycles) + load = wc.woehler.basquin_load(cycles) pd.testing.assert_index_equal(load.index, expected_index) -def test_woehler_basquin_load_50_same_k(): +def test_woehler_basquin_load_50_same_k(wc_data): cycles = [1e7, 1e6, 1e5, 1e4] wc = wc_data.copy() @@ -324,7 +326,7 @@ def test_woehler_basquin_load_50_same_k(): np.testing.assert_approx_equal(calculated_k, wc.k_1) -def test_woehler_basquin_load_10_90(): +def test_woehler_basquin_load_10_90(wc_data): cycles = [1e2, 1e7] load_10 = wc_data.woehler.basquin_load(cycles, 0.1) @@ -335,45 +337,47 @@ def test_woehler_basquin_load_10_90(): np.testing.assert_allclose(load_90/load_10, expected, rtol=1e-4) -def test_woehler_basquin_load_integer_cycles(): +def test_woehler_basquin_load_integer_cycles(wc_data): wc_data.woehler.basquin_load(1000) -def test_woehler_basquin_cycles_integer_load(): +def test_woehler_basquin_cycles_integer_load(wc_data): wc_data.woehler.basquin_cycles(200) -wc_int_overflow = pd.Series({ - 'k_1': 4., - 'SD': 100., - 'ND': 1e6 -}) +@pytest.fixture +def wc_int_overflow(): + return pd.Series({ + 'k_1': 4., + 'SD': 100., + 'ND': 1e6 + }) -def test_woehler_integer_overflow_scalar(): +def test_woehler_integer_overflow_scalar(wc_int_overflow): assert wc_int_overflow.woehler.basquin_cycles(50) > 0.0 -def test_woehler_integer_overflow_list(): +def test_woehler_integer_overflow_list(wc_int_overflow): assert (wc_int_overflow.woehler.basquin_cycles([50, 50]) > 0.0).all() -def test_woehler_integer_overflow_series(): +def test_woehler_integer_overflow_series(wc_int_overflow): load = pd.Series([50, 50], index=pd.Index(['foo', 'bar'])) cycles = wc_int_overflow.woehler.basquin_cycles(load) assert (cycles > 0.0).all() pd.testing.assert_index_equal(cycles.index, load.index) -def test_woehler_ND(): +def test_woehler_ND(wc_data): assert wc_data.woehler.ND == 1e6 -def test_woehler_SD(): +def test_woehler_SD(wc_data): assert wc_data.woehler.SD == 300 -def test_woehler_k_1(): +def test_woehler_k_1(wc_data): assert wc_data.woehler.k_1 == 7. @@ -387,7 +391,7 @@ def test_woehler_TS_and_TN_guessed(): assert wc.woehler.TS == 1.0 -def test_woehler_TS_guessed(): +def test_woehler_TS_guessed(wc_data): wc = wc_data.copy() wc['k_1'] = 0.5 wc['TN'] = 1.5 @@ -406,43 +410,43 @@ def test_woehler_TN_guessed(): assert wc.woehler.TN == 1.5 -def test_woehler_TS_given(): +def test_woehler_TS_given(wc_data): wc_full = wc_data.copy() wc_full['TS'] = 1.25 assert wc_full.woehler.TS == 1.25 -def test_woehler_TN_given(): +def test_woehler_TN_given(wc_data): wc_full = wc_data.copy() wc_full['TN'] = 1.75 assert wc_full.woehler.TN == 1.75 -def test_woehler_pf_guessed(): +def test_woehler_pf_guessed(wc_data): assert wc_data.woehler.failure_probability == 0.5 -def test_woehler_pf_given(): +def test_woehler_pf_given(wc_data): wc = wc_data.copy() wc['failure_probability'] = 0.1 assert wc.woehler.failure_probability == 0.1 -def test_woehler_miner_original(): +def test_woehler_miner_original(wc_data): assert wc_data.woehler.k_2 == np.inf -def test_woehler_miner(): +def test_woehler_miner(wc_data): assert wc_data.woehler.miner_elementary().k_2 == wc_data.k_1 assert wc_data.woehler.miner_elementary().to_pandas().k_2 == wc_data.k_1 -def test_woehler_miner_haibach(): +def test_woehler_miner_haibach(wc_data): assert wc_data.woehler.miner_haibach().k_2 == 13.0 assert wc_data.woehler.miner_haibach().to_pandas().k_2 == 13.0 -def test_woehler_to_pandas(): +def test_woehler_to_pandas(wc_data): expected = pd.Series({ 'k_1': 0.5, 'k_2': np.inf, @@ -470,13 +474,19 @@ def test_woehler_to_pandas(): @pytest.mark.parametrize('pf', [0.1, 0.5, 0.9]) def test_woehler_miner_original_homogenious_load(pf): cycles = np.logspace(3., 7., 50) - load = wc_data.woehler.basquin_load(cycles, failure_probability=pf) - assert (np.diff(load) < 0.).all() + wc = pd.Series({ + 'k_1': 7., + 'TN': 1.75, + 'ND': 1e6, + 'SD': 300.0 + }) + load = wc.woehler.basquin_load(cycles, failure_probability=pf) + assert (np.diff(load) <= 0.).all() assert (np.diff(np.diff(load)) >= 0.).all() @pytest.mark.parametrize('pf', [0.1, 0.5, 0.9]) -def test_woehler_miner_original_homogenious_cycles(pf): +def test_woehler_miner_original_homogenious_cycles(pf, wc_data): load = np.logspace(3., 2., 50) cycles = wc_data.woehler.basquin_cycles(load, failure_probability=pf) assert (np.diff(cycles[np.isfinite(cycles)]) > 0.).all() From fe87bf6253b9bede49890da38fd26d6246256763 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 15:25:45 +0200 Subject: [PATCH 03/24] Make miner modifiers of WoehlerCurve non destructive The methods .miner_elementary() and .miner_haibach() now return modified copies of the original WoehlerCurve object, rather than modifying the original. This avoids side effects but is is technically a breaking change Signed-off-by: Johannes Mueller --- CHANGELOG.md | 11 +++++++++++ src/pylife/materiallaws/woehlercurve.py | 14 ++++++++------ tests/materiallaws/test_woehlercurve.py | 12 +++++++++++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 164a8a0e..3f226bc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ In this file noteworthy changes of new releases of pyLife are documented since 2.0.0. +## since pylife-2.0.4 + +### Breaking changes + +* Non-destructive miner modifiers of `WoehlerCurve` + + The methods `WoehlerCurve.miner_elementary()` and + `WoehlerCurve.miner_haibach()` now return modified copies of the original + WoehlerCurve object, rather than modifying the original. + + ## pylife-2.0.4 Minor bugfix release diff --git a/src/pylife/materiallaws/woehlercurve.py b/src/pylife/materiallaws/woehlercurve.py index dee366b1..8451bb2d 100644 --- a/src/pylife/materiallaws/woehlercurve.py +++ b/src/pylife/materiallaws/woehlercurve.py @@ -134,20 +134,22 @@ def miner_elementary(self): Returns ------- - self + modified copy of self """ - self._obj['k_2'] = self._obj.k_1 - return self + new = self._obj.copy() + new['k_2'] = self._obj.k_1 + return self.__class__(new) def miner_haibach(self): """Set k_2 to value according Miner Haibach method (k_2 = 2 * k_1 - 1). Returns ------- - self + modified copy of self """ - self._obj['k_2'] = 2. * self._obj.k_1 - 1. - return self + new = self._obj.copy() + new['k_2'] = 2. * self._obj.k_1 - 1. + return self.__class__(new) def cycles(self, load, failure_probability=0.5): """Calculate the cycles numbers from loads. diff --git a/tests/materiallaws/test_woehlercurve.py b/tests/materiallaws/test_woehlercurve.py index 0022a3d9..ebeced8d 100644 --- a/tests/materiallaws/test_woehlercurve.py +++ b/tests/materiallaws/test_woehlercurve.py @@ -436,16 +436,26 @@ def test_woehler_miner_original(wc_data): assert wc_data.woehler.k_2 == np.inf -def test_woehler_miner(wc_data): +def test_woehler_miner_elementary(wc_data): assert wc_data.woehler.miner_elementary().k_2 == wc_data.k_1 assert wc_data.woehler.miner_elementary().to_pandas().k_2 == wc_data.k_1 +def test_woehler_miner_elementary_new_object(wc_data): + orig = wc_data.woehler + assert orig.miner_elementary() is not orig + + def test_woehler_miner_haibach(wc_data): assert wc_data.woehler.miner_haibach().k_2 == 13.0 assert wc_data.woehler.miner_haibach().to_pandas().k_2 == 13.0 +def test_woehler_miner_haibach_new_object(wc_data): + orig = wc_data.woehler + assert orig.miner_haibach() is not orig + + def test_woehler_to_pandas(wc_data): expected = pd.Series({ 'k_1': 0.5, From a7ef6fdafcb9e0962c821788bc4c4422adcb6dd1 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 15:30:47 +0200 Subject: [PATCH 04/24] Introduce WoehlerCurve.miner_original() Signed-off-by: Johannes Mueller --- CHANGELOG.md | 4 ++++ src/pylife/materiallaws/woehlercurve.py | 11 +++++++++++ tests/materiallaws/test_woehlercurve.py | 12 +++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f226bc6..912215a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ In this file noteworthy changes of new releases of pyLife are documented since ## since pylife-2.0.4 +### New features + +* Introduce `WoehlerCurve.miner_original()` + ### Breaking changes * Non-destructive miner modifiers of `WoehlerCurve` diff --git a/src/pylife/materiallaws/woehlercurve.py b/src/pylife/materiallaws/woehlercurve.py index 8451bb2d..b849137b 100644 --- a/src/pylife/materiallaws/woehlercurve.py +++ b/src/pylife/materiallaws/woehlercurve.py @@ -129,6 +129,17 @@ def transform_to_failure_probability(self, failure_probability): return WoehlerCurve(transformed) + def miner_original(self): + """Set k_2 to inf according Miner Original method (k_2 = inf). + + Returns + ------- + modified copy of self + """ + new = self._obj.copy() + new['k_2'] = np.inf + return self.__class__(new) + def miner_elementary(self): """Set k_2 to k_1 according Miner Elementary method (k_2 = k_1). diff --git a/tests/materiallaws/test_woehlercurve.py b/tests/materiallaws/test_woehlercurve.py index ebeced8d..34916894 100644 --- a/tests/materiallaws/test_woehlercurve.py +++ b/tests/materiallaws/test_woehlercurve.py @@ -432,10 +432,20 @@ def test_woehler_pf_given(wc_data): assert wc.woehler.failure_probability == 0.1 -def test_woehler_miner_original(wc_data): +def test_woehler_miner_original_as_default(wc_data): assert wc_data.woehler.k_2 == np.inf +def test_woehler_miner_original_as_request(wc_data): + wc_data['k_2'] = wc_data.k_1 + assert wc_data.woehler.miner_original().k_2 == np.inf + + +def test_woehler_miner_original_new_object(wc_data): + orig = wc_data.woehler + assert orig.miner_original() is not orig + + def test_woehler_miner_elementary(wc_data): assert wc_data.woehler.miner_elementary().k_2 == wc_data.k_1 assert wc_data.woehler.miner_elementary().to_pandas().k_2 == wc_data.k_1 From 7498c32ee6f346b85776c28131fb0b60e167bda6 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 15:55:09 +0200 Subject: [PATCH 05/24] Make some archaic looking code more readable Signed-off-by: Johannes Mueller --- src/pylife/materiallaws/woehlercurve.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pylife/materiallaws/woehlercurve.py b/src/pylife/materiallaws/woehlercurve.py index b849137b..e734f1b4 100644 --- a/src/pylife/materiallaws/woehlercurve.py +++ b/src/pylife/materiallaws/woehlercurve.py @@ -227,16 +227,14 @@ def basquin_cycles(self, load, failure_probability=0.5): cycles : numpy.ndarray The cycle numbers at which the component fails for the given `load` values """ - transformed = self.transform_to_failure_probability(failure_probability) + def ensure_float_to_prevent_int_overflow(load): + if isinstance(load, pd.Series): + return pd.Series(load, dtype=np.float64) + return np.asarray(load, dtype=np.float64) - if hasattr(load, '__iter__'): - if hasattr(load, 'astype'): - load = load.astype('float64') - else: - load = np.array(load).astype('float64') - else: - load = float(load) + transformed = self.transform_to_failure_probability(failure_probability) + load = ensure_float_to_prevent_int_overflow(load) ld, wc = transformed.broadcast(load) cycles = np.full_like(ld, np.inf) From d9fc917f88fc854e5b873470e36c7f56024d45a4 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 16:58:28 +0200 Subject: [PATCH 06/24] Uplift pandas dependency as pandas-2.1.1 contains fix (#34) Signed-off-by: Johannes Mueller --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 3afe567c..d59f79ad 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,7 +49,7 @@ python_requires = >=3.8 install_requires = numpy==1.23.5 scipy - pandas>=1.4.0,<2.1 + pandas>=1.4.0,!=2.1 h5py!=3.7.0 matplotlib cython From dd5c759a7cee9850bede5ab0164bfc26e31798c9 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 17:06:16 +0200 Subject: [PATCH 07/24] Fix readme testsuite badge Signed-off-by: Johannes Mueller --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31f3cdb7..f7297f02 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Documentation Status](https://readthedocs.org/projects/pylife/badge/?version=latest)](https://pylife.readthedocs.io/en/latest/?badge=latest) [![PyPI](https://img.shields.io/pypi/v/pylife)](https://pypi.org/project/pylife/) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pylife) -[![testsuite](https://github.com/boschresearch/pylife/workflows/testsuite/badge.svg)](https://github.com/boschresearch/pylife/actions?query=workflow%3Atestsuite) +[![Testsuite](https://github.com/boschresearch/pylife/actions/workflows/pytest.yml/badge.svg)](https://github.com/boschresearch/pylife/actions/workflows/pytest.yml) pyLife is an Open Source Python library for state of the art algorithms used in lifetime assessment of mechanical components subject to fatigue load. From a953e1a7ff9abe37abbe6950507880b0ebb34d61 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 17:08:17 +0200 Subject: [PATCH 08/24] Untabify CODINGSTYLE.md Signed-off-by: Johannes Mueller --- CODINGSTYLE.md | 130 ++++++++++++++++++++++++------------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md index 48392002..62cf593c 100644 --- a/CODINGSTYLE.md +++ b/CODINGSTYLE.md @@ -101,31 +101,31 @@ To access the data items of a class we used to use getter and setter functions. A better and more modern way is python's `@property` decorator. ```python class ExampleClass: - def __init__(self): - self._foo = 23 - self._bar = 42 - self._sum = None + def __init__(self): + self._foo = 23 + self._bar = 42 + self._sum = None @property def foo(self): - ''' getter functions have the name of the accessed data item - ''' - return self._foo + ''' getter functions have the name of the accessed data item + ''' + return self._foo @foo.setter - def foo(self, v): - ''' setter functions have the name of the accessed data item prefixed - with `set_` - ''' - if v < 0: # sanity check - raise Exception("Value for foo must be >= 0") - self._foo = v - - def calc_sum_of_foo_and_bar(self): - ''' class methods whose name does not imply that they return data - should not return anything. - ''' - self._sum = self._foo + self._bar + def foo(self, v): + ''' setter functions have the name of the accessed data item prefixed + with `set_` + ''' + if v < 0: # sanity check + raise Exception("Value for foo must be >= 0") + self._foo = v + + def calc_sum_of_foo_and_bar(self): + ''' class methods whose name does not imply that they return data + should not return anything. + ''' + self._sum = self._foo + self._bar ``` The old style getter and setter function like `set_foo(self, new_foo)`are still @@ -147,14 +147,14 @@ like: ```python class Foo: - def __init__(self): - self.public_variable = 'bar' - self._private_variable = 'baz' + def __init__(self): + self.public_variable = 'bar' + self._private_variable = 'baz' - def public_method(self): - ... + def public_method(self): + ... - def _private_method(self): + def _private_method(self): ``` ### Object orientation @@ -197,60 +197,60 @@ the code more readable, because the new function has a name. ```python def some_function(data, parameters): - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - if parameters['use_method_1']: + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + if parameters['use_method_1']: + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + else: ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - else: - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing + ... # over several lines + ... # hard to figure out + ... # what it is doing + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing ``` *Good* example ```python def prepare(data, parameters): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name def cleanup(data, parameters): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name def method_1(data): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name def other_method(data): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name def some_function(data, parameters): - prepare(data, parameters) - if parameters['use_method_1']: - method_1(data) - else: - other_method(data) - cleanup(data, parameters) + prepare(data, parameters) + if parameters['use_method_1']: + method_1(data) + else: + other_method(data) + cleanup(data, parameters) ``` From b0969d9261f50cee4d0e40f4713833af048dab4c Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 17:10:01 +0200 Subject: [PATCH 09/24] Use double quotes for docstings in CODINGSTYLE.md Signed-off-by: Johannes Mueller --- CODINGSTYLE.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md index 62cf593c..7c8ed787 100644 --- a/CODINGSTYLE.md +++ b/CODINGSTYLE.md @@ -108,23 +108,23 @@ class ExampleClass: @property def foo(self): - ''' getter functions have the name of the accessed data item - ''' + """ getter functions have the name of the accessed data item + """ return self._foo @foo.setter def foo(self, v): - ''' setter functions have the name of the accessed data item prefixed + """ setter functions have the name of the accessed data item prefixed with `set_` - ''' + """ if v < 0: # sanity check raise Exception("Value for foo must be >= 0") self._foo = v def calc_sum_of_foo_and_bar(self): - ''' class methods whose name does not imply that they return data + """ class methods whose name does not imply that they return data should not return anything. - ''' + """ self._sum = self._foo + self._bar ``` @@ -286,10 +286,10 @@ some value `c`. But what is it that you are doing? Now the *good* example: ```python def hypot(triangle): - ''' Calculates the hypotenuse of a triangle using the law of cosines + """Calculate the hypotenuse of a triangle using the law of cosines https://en.wikipedia.org/wiki/Law_of_cosines - ''' + """ a = triangle.a b = triangle.b gamma = triangle.gamma From 3488b0fa6bb925757568de8d6ccd26ddc98564a9 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 18:16:50 +0200 Subject: [PATCH 10/24] Make the codingstyle document and rst file and move it to docs Signed-off-by: Johannes Mueller --- CODINGSTYLE.md | 301 --------------------------------------- CONTRIBUTING.md | 7 +- docs/CODINGSTYLE.md | 2 - docs/CODINGSTYLE.rst | 328 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 332 insertions(+), 306 deletions(-) delete mode 100644 CODINGSTYLE.md delete mode 100644 docs/CODINGSTYLE.md create mode 100644 docs/CODINGSTYLE.rst diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md deleted file mode 100644 index 7c8ed787..00000000 --- a/CODINGSTYLE.md +++ /dev/null @@ -1,301 +0,0 @@ -# pyLife coding style guidelines - -## Introduction - -One crucial quality criteria of program code is maintainability. In order to -maintain code, the code has to be written clearly so that it is easily readable -to someone who has not written it. Therefore it is helpful to have a consistent -coding style with consistent naming conventions. However, the coding style -rules are not supposed to be strict rules. They can be disobeyed if there are -good reasons to do so. - -As we are programming in Python we vastly stick to the [PEP8 coding style -guide][1]. That document is generally recommendable to python programmers. This -document therefore covers only things that go beyond the PEP8. So please read -PEP8 for the general recommendations on python programming. - -### Clean code - -The notion of code quality that keeps software maintainable, makes it easier to -find and fix bugs and so on is nowadays referred to by the expression *Clean -Code*. - -The iconic figure behind that notion is [Robert C. Martin][] aka Uncle Bob. For -the full story about clean code you can read his books *Clean Code* and *Clean -Coders*. Some of his lectures about Clean Code are available on Youtube. - - -## Use a linter and let your editor help you - -A linter is a tool that scans your code and shows you where you are not -following the coding style guidelines. The anaconda environment of -`environment.yml` comes with flake8 and pep8-naming, which warns about a lot of -things. Best is to configure your editor in a way that it shows you the linter -warnings as you type. - -Many editors have some other useful helpers. For example whitespace cleanup, -i.e. delete any trailing whitespace as soon as you save the file. - - -## Line lengths - -Lines should not often exceed the 90 characters. Exceeding it sometimes by a -bit is ok, though. Please do *never* exceed 125 characters because that's the -width of the GitHub code viewer. - - -## Naming conventions - -By naming conventions the programmer can give some indications to the reader of -the program, what an identifier is supposed to be or what it is referring -to. Therefore some consistency guidelines. - - -### Mandatory names throughout the pyLife code base - -For variables representing physical quantities, we have a dedicated document in -the documentation. Please follow the points discussed there. - -### Module names - -For module names, try to find one word names like `rainflow`, `gradient`. If -you by all means need word separation in a module name, use -`snake_case`. *Never* use dashes (`-`) and capital letters in module -names. They lead to all kinds of problems. - -### Class names - -Class names are usually short and a single or compound noun. For these short -names we use the so called `CamelCase` style: -```python -class DataObjectReader: - ... -``` - -### Function names - -Function and variable names can be longer than class names. Especially function -names tend to be actual sentences like: -```python -def calc_all_data_from_scratch(): - ... -``` -These are way more readable in the so called `lowercase_with_underscores` -style. - -### Variable names - -Variable names can be shorter as long as they are local. For example when you -store the result of a function in a variable that the function is finally to -return, don't call it `result_to_be_returned` but only `res`. A rule of thumb -is that the name of a variable needs to be descriptive, if the code part in -which the variable is used, exceeds the area that you can capture with one eye -glimpse. - -### Class method names - -There are a couple of conventions that make it easier to understand an API of a -class. - -To access the data items of a class we used to use getter and setter -functions. A better and more modern way is python's `@property` decorator. -```python -class ExampleClass: - def __init__(self): - self._foo = 23 - self._bar = 42 - self._sum = None - - @property - def foo(self): - """ getter functions have the name of the accessed data item - """ - return self._foo - - @foo.setter - def foo(self, v): - """ setter functions have the name of the accessed data item prefixed - with `set_` - """ - if v < 0: # sanity check - raise Exception("Value for foo must be >= 0") - self._foo = v - - def calc_sum_of_foo_and_bar(self): - """ class methods whose name does not imply that they return data - should not return anything. - """ - self._sum = self._foo + self._bar -``` - -The old style getter and setter function like `set_foo(self, new_foo)`are still -tolerable but should be avoided in new code. Before major releases we might dig -to the code and replace them with `@property` where feasible. - - -## Structuring of the code - -### Data encapsulation - -One big advantage for object oriented programming is the so called data -encapsulation. That means that items of a class that is intended only for -internal use can be made inaccessible from outside of the class. Python does -not strictly enforce that concept, but in order to make it clear to the reader -of the code, we mark every class method and every class member variable that is -not meant to be accessed from outside the class with a leading underscore `_` -like: -```python -class Foo: - - def __init__(self): - self.public_variable = 'bar' - self._private_variable = 'baz' - - def public_method(self): - ... - - def _private_method(self): -``` - -### Object orientation - -Usually it makes sense to compound data structures and the functions using -these data structures into classes. The data structures then become class -members and the functions become class methods. This object oriented way of -doing things is recommendable but not always necessary. Sets of simple utility -routines can also be autonomous functions. - -As a rule of thumb: If the user of some functionality needs to keep around a -data structure for a longer time and make several different function calls that -deal with the same data structure, it is probably a good idea to put everything -into a class. - -Do not just put functions into a class because they belong semantically -together. That is what python modules are there for. - -### Functions and methods - -Functions are not only there for sharing code but also to divide code into -easily manageable pieces. Therefore functions should be short and sweet and do -just one thing. If a function does not fit into your editor window, you should -consider to split it into smaller pieces. Even more so, if you need to scroll -in order to find out, where a loop or an if statement begins and ends. Ideally -a function should be as short, that it is no longer *possible* to extract a -piece of it. - -### Commenting - -Programmers are taught in the basic programming lessons that comments are -important. However, a more modern point of view is, that comments are only the -last resort, if the code is so obscure that the reader needs the comment to -understand it. Generally it would be better to write the code in a way that it -speaks for itself. That's why keeping functions short is so -important. Extracting a code block of a function into another function makes -the code more readable, because the new function has a name. - -*Bad* example: - -```python -def some_function(data, parameters): - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - if parameters['use_method_1']: - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - else: - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing - ... # a bunch of code - ... # over several lines - ... # hard to figure out - ... # what it is doing -``` - -*Good* example - -```python -def prepare(data, parameters): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name - -def cleanup(data, parameters): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name - -def method_1(data): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name - -def other_method(data): - ... # a bunch of code - ... # over several lines - ... # easily understandable - ... # by the function's name - -def some_function(data, parameters): - prepare(data, parameters) - if parameters['use_method_1']: - method_1(data) - else: - other_method(data) - cleanup(data, parameters) -``` - - -Ideally the only comments that you need are docstrings that document the public -interface of your functions and classes. - -Compare the following functions: - -*Bad* example: -```python -def hypot(triangle): - - # reading in a - a = triangle.get_a() - - # reading in b - b = triangle.get_b() - - # reading in gamma - gamma = triangle.get_gamma() - - # calculate c - c = np.sqrt(a*a + b*b - 2*a*b*np.cos(gamma)) - - # return result - return c -``` - -Everyone sees that you read in some parameter `a`. Everyone sees that you read -in some parameter `b` and `gamma`. Everyone sees that you calculate and return -some value `c`. But what is it that you are doing? - -Now the *good* example: -```python -def hypot(triangle): - """Calculate the hypotenuse of a triangle using the law of cosines - - https://en.wikipedia.org/wiki/Law_of_cosines - """ - a = triangle.a - b = triangle.b - gamma = triangle.gamma - - return np.sqrt(a*a + b*b - 2*a*b*np.cos(gamma)) -``` - -[pep8]: https://www.python.org/dev/peps/pep-0008/ -[Robert C. Martin]: https://en.wikipedia.org/wiki/Robert_C._Martin diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0d760520..9909ba2b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,9 +34,10 @@ the test coverage. ## Coding style -Please do consult the [CODINGSTYLE](CODINGSTYLE.md) file for codingstyle guide -lines. In order to have your contribution merged to main line following guide -lines should be met. +Please do consult the +[codingstyle](https://pylife.readthedocs.io/en/stable/CODINGSTYLE.html) file +for codingstyle guide lines. In order to have your contribution merged to main +line following guide lines should be met. ### Docstrings diff --git a/docs/CODINGSTYLE.md b/docs/CODINGSTYLE.md deleted file mode 100644 index 4a2989a6..00000000 --- a/docs/CODINGSTYLE.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} ../CODINGSTYLE.md -``` diff --git a/docs/CODINGSTYLE.rst b/docs/CODINGSTYLE.rst new file mode 100644 index 00000000..100396f6 --- /dev/null +++ b/docs/CODINGSTYLE.rst @@ -0,0 +1,328 @@ + +pyLife coding style guidelines +============================== + +Introduction +------------ + +One crucial quality criteria of program code is maintainability. In order to +maintain code, the code has to be written clearly so that it is easily readable +to someone who has not written it. Therefore it is helpful to have a consistent +coding style with consistent naming conventions. However, the coding style +rules are not supposed to be strict rules. They can be disobeyed if there are +good reasons to do so. + +As we are programming in Python we vastly stick to the [PEP8 coding style +guide][1]. That document is generally recommendable to python programmers. This +document therefore covers only things that go beyond the PEP8. So please read +PEP8 for the general recommendations on python programming. + +Clean code +^^^^^^^^^^ + +The notion of code quality that keeps software maintainable, makes it easier to +find and fix bugs and so on is nowadays referred to by the expression *Clean +Code*. + +The iconic figure behind that notion is `Robert C. Martin `_ aka Uncle Bob. For +the full story about clean code you can read his books *Clean Code* and *Clean +Coders*. Some of his lectures about Clean Code are available on Youtube. + +Use a linter and let your editor help you +----------------------------------------- + +A linter is a tool that scans your code and shows you where you are not +following the coding style guidelines. The anaconda environment of +``environment.yml`` comes with flake8 and pep8-naming, which warns about a lot of +things. Best is to configure your editor in a way that it shows you the linter +warnings as you type. + +Many editors have some other useful helpers. For example whitespace cleanup, +i.e. delete any trailing whitespace as soon as you save the file. + +Line lengths +------------ + +Lines should not often exceed the 90 characters. Exceeding it sometimes by a +bit is ok, though. Please do *never* exceed 125 characters because that's the +width of the GitHub code viewer. + +Naming conventions +------------------ + +By naming conventions the programmer can give some indications to the reader of +the program, what an identifier is supposed to be or what it is referring +to. Therefore some consistency guidelines. + +Mandatory names throughout the pyLife code base +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For variables representing physical quantities, we have a dedicated document in +the documentation. Please follow the points discussed there. + +Module names +^^^^^^^^^^^^ + +For module names, try to find one word names like ``rainflow``\ , ``gradient``. If +you by all means need word separation in a module name, use +``snake_case``. *Never* use dashes (\ ``-``\ ) and capital letters in module +names. They lead to all kinds of problems. + +Class names +^^^^^^^^^^^ + +Class names are usually short and a single or compound noun. For these short +names we use the so called ``CamelCase`` style: + +.. code-block:: python + + class DataObjectReader: + ... + +Function names +^^^^^^^^^^^^^^ + +Function and variable names can be longer than class names. Especially function +names tend to be actual sentences like: + +.. code-block:: python + + def calc_all_data_from_scratch(): + ... + +These are way more readable in the so called ``lowercase_with_underscores`` +style. + +Variable names +^^^^^^^^^^^^^^ + +Variable names can be shorter as long as they are local. For example when you +store the result of a function in a variable that the function is finally to +return, don't call it ``result_to_be_returned`` but only ``res``. A rule of thumb +is that the name of a variable needs to be descriptive, if the code part in +which the variable is used, exceeds the area that you can capture with one eye +glimpse. + +Class method names +^^^^^^^^^^^^^^^^^^ + +There are a couple of conventions that make it easier to understand an API of a +class. + +To access the data items of a class we used to use getter and setter +functions. A better and more modern way is python's ``@property`` decorator. + +.. tip:: + + Think twice before you implement setters. Oftentimes you simply don't need + them as you would usually simply create an object, use it and then throw it + away without ever changing it. So don't implement setters unless you + *really* need them. Even if you really need them it is often better to + create a modified copy of a data structure rather than modifying the + original. Modifying objects can have side effects which can lead to subtle + bugs. + + +.. code-block:: python + + class ExampleClass: + def __init__(self): + self._foo = 23 + self._bar = 42 + self._sum = None + + @property + def foo(self): + """ getter functions have the name of the accessed data item + """ + return self._foo + + @foo.setter + def foo(self, v): + """ setter functions have the name of the accessed data item prefixed + with `set_` + """ + if v < 0: # sanity check + raise Exception("Value for foo must be >= 0") + self._foo = v + + def calc_sum_of_foo_and_bar(self): + """ class methods whose name does not imply that they return data + should not return anything. + """ + self._sum = self._foo + self._bar + +The old style getter and setter function like ``set_foo(self, new_foo)``\ are still +tolerable but should be avoided in new code. Before major releases we might dig +to the code and replace them with ``@property`` where feasible. + +Structuring of the code +----------------------- + +Data encapsulation +^^^^^^^^^^^^^^^^^^ + +One big advantage for object oriented programming is the so called data +encapsulation. That means that items of a class that is intended only for +internal use can be made inaccessible from outside of the class. Python does +not strictly enforce that concept, but in order to make it clear to the reader +of the code, we mark every class method and every class member variable that is +not meant to be accessed from outside the class with a leading underscore ``_`` +like: + +.. code-block:: python + + class Foo: + + def __init__(self): + self.public_variable = 'bar' + self._private_variable = 'baz' + + def public_method(self): + ... + + def _private_method(self): + +Object orientation +^^^^^^^^^^^^^^^^^^ + +Usually it makes sense to compound data structures and the functions using +these data structures into classes. The data structures then become class +members and the functions become class methods. This object oriented way of +doing things is recommendable but not always necessary. Sets of simple utility +routines can also be autonomous functions. + +As a rule of thumb: If the user of some functionality needs to keep around a +data structure for a longer time and make several different function calls that +deal with the same data structure, it is probably a good idea to put everything +into a class. + +Do not just put functions into a class because they belong semantically +together. That is what python modules are there for. + +Functions and methods +^^^^^^^^^^^^^^^^^^^^^ + +Functions are not only there for sharing code but also to divide code into +easily manageable pieces. Therefore functions should be short and sweet and do +just one thing. If a function does not fit into your editor window, you should +consider to split it into smaller pieces. Even more so, if you need to scroll +in order to find out, where a loop or an if statement begins and ends. Ideally +a function should be as short, that it is no longer *possible* to extract a +piece of it. + +Commenting +^^^^^^^^^^ + +Programmers are taught in the basic programming lessons that comments are +important. However, a more modern point of view is, that comments are only the +last resort, if the code is so obscure that the reader needs the comment to +understand it. Generally it would be better to write the code in a way that it +speaks for itself. That's why keeping functions short is so +important. Extracting a code block of a function into another function makes +the code more readable, because the new function has a name. + +*Bad* example: + +.. code-block:: python + + def some_function(data, parameters): + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + if parameters['use_method_1']: + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + else: + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + ... # a bunch of code + ... # over several lines + ... # hard to figure out + ... # what it is doing + +*Good* example + +.. code-block:: python + + def prepare(data, parameters): + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name + + def cleanup(data, parameters): + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name + + def method_1(data): + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name + + def other_method(data): + ... # a bunch of code + ... # over several lines + ... # easily understandable + ... # by the function's name + + def some_function(data, parameters): + prepare(data, parameters) + if parameters['use_method_1']: + method_1(data) + else: + other_method(data) + cleanup(data, parameters) + +Ideally the only comments that you need are docstrings that document the public +interface of your functions and classes. + +Compare the following functions: + +*Bad* example: + +.. code-block:: python + + def hypot(triangle): + + # reading in a + a = triangle.get_a() + + # reading in b + b = triangle.get_b() + + # reading in gamma + gamma = triangle.get_gamma() + + # calculate c + c = np.sqrt(a*a + b*b - 2*a*b*np.cos(gamma)) + + # return result + return c + +Everyone sees that you read in some parameter ``a``. Everyone sees that you read +in some parameter ``b`` and ``gamma``. Everyone sees that you calculate and return +some value ``c``. But what is it that you are doing? + +Now the *good* example: + +.. code-block:: python + + def hypot(triangle): + """Calculate the hypotenuse of a triangle using the law of cosines + + https://en.wikipedia.org/wiki/Law_of_cosines + """ + a = triangle.a + b = triangle.b + gamma = triangle.gamma + + return np.sqrt(a*a + b*b - 2*a*b*np.cos(gamma)) From 8a489fdaccafc1d9216c27818eeb79497237a8b5 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 29 Sep 2023 18:17:16 +0200 Subject: [PATCH 11/24] Put the toc depth to 1 Signed-off-by: Johannes Mueller --- docs/reference.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/reference.rst b/docs/reference.rst index f35fc2b7..eafa380e 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -4,14 +4,14 @@ pyLife Reference General ------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 general/signal Stress ------ .. toctree:: - :maxdepth: 2 + :maxdepth: 1 stress/index stress/equistress @@ -25,7 +25,7 @@ Stress Strength -------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 strength/fatigue strength/meanstress @@ -35,7 +35,7 @@ Strength Materiallaws ------------ .. toctree:: - :maxdepth: 2 + :maxdepth: 1 materiallaws/hookeslaw materiallaws/rambgood @@ -45,7 +45,7 @@ Materiallaws Materialdata ------------ .. toctree:: - :maxdepth: 2 + :maxdepth: 1 materialdata/woehler @@ -53,7 +53,7 @@ Materialdata Mesh utilities -------------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 mesh/meshsignal mesh/hotspot @@ -63,7 +63,7 @@ Mesh utilities VMAP Interface -------------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 vmap/vmap.rst vmap/vmap_import.rst @@ -72,7 +72,7 @@ VMAP Interface Utils ----- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 utils/functions utils/histogram From d554979ea3c90cb2c6e65f7b09b39d86a67f8b0a Mon Sep 17 00:00:00 2001 From: Mate Mark Date: Tue, 31 Oct 2023 08:45:15 +0100 Subject: [PATCH 12/24] Introduce history output for odbclient Signed-off-by: Johannes Mueller --- tools/odbclient/src/odbclient/odbclient.py | 85 ++++++++- tools/odbclient/tests/history_output_test.odb | Bin 0 -> 715992 bytes tools/odbclient/tests/test_odbclient.py | 19 ++ tools/odbserver/odbserver/__main__.py | 31 +++- tools/odbserver/odbserver/interface.py | 167 ++++++++++++++++++ 5 files changed, 300 insertions(+), 2 deletions(-) create mode 100644 tools/odbclient/tests/history_output_test.odb diff --git a/tools/odbclient/src/odbclient/odbclient.py b/tools/odbclient/src/odbclient/odbclient.py index 42dce924..9a680bc6 100644 --- a/tools/odbclient/src/odbclient/odbclient.py +++ b/tools/odbclient/src/odbclient/odbclient.py @@ -374,6 +374,89 @@ def variable(self, variable_name, instance_name, step_name, frame_id, nset_name= column_names = _ascii(_decode, labels) return pd.DataFrame(values, index=index, columns=column_names) + def history_regions(self, step_name): + """Query the history Regions of a given step. + + Parameters + ---------- + step_name : string + The name of the step + + Returns + ------- + historyRegions : list of strings + The name of history regions, which are in the required step. + """ + return self._query('get_history_regions', step_name) + + def history_outputs(self, step_name, history_region_name): + """Query the history Outputs of a given step in a given history region. + + Parameters + ---------- + step_name : string + The name of the step + + history_region_name: string + The name of the history region + + Returns + ------- + historyOutputs : list of strings + The name of the history outputs, which are in the required step and under the required history region + """ + hisoutputs = self._query("get_history_outputs", (step_name, history_region_name)) + + return hisoutputs + + + def history_output_values(self, step_name, history_region_name, historyoutput_name): + """Query the history Regions of a given step. + + Parameters + ---------- + step_name : string + The name of the step + + Returns + ------- + historyRegions : list of strings + The name of the step the history regions are in. + """ + hisoutput_valuesx, hisoutput_valuesy = self._query("get_history_output_values", (step_name, history_region_name, historyoutput_name)) + history_region_description = self._query("get_history_region_description", (step_name, history_region_name)) + historyoutput_data = pd.Series(hisoutput_valuesy, index = hisoutput_valuesx, name = history_region_description + ": " + historyoutput_name) + + return historyoutput_data + + def history_region_description(self, step_name, history_region_name): + """Query the description of a history Regions of a given step. + + Parameters + ---------- + step_name : string + The name of the step + history_region_name: string + The name of the history region + + Returns + ------- + historyRegion_description : list of strings + The description of the history region. + """ + history_region_description = self._query("get_history_region_description", (step_name, history_region_name)) + return history_region_description + + def history_info(self): + """Query all the information about the history outputs in a given odb. + Returns + ------- + dictionary : ldictionary which contains history information + """ + dictionary = {} + dictionary = self._query("get_history_info") + return dictionary + def _query(self, command, args=None): args = _ascii(_encode, args) self._send_command(command, args) @@ -455,7 +538,7 @@ def _guess_abaqus_bin_windows(): for guess in guesses: if os.path.exists(guess): return guess - return None + raise OSError("Could not guess abaqus binary path! Please submit as abaqus_bin parameter!") def _guess_pythonpath(python_env_path): diff --git a/tools/odbclient/tests/history_output_test.odb b/tools/odbclient/tests/history_output_test.odb new file mode 100644 index 0000000000000000000000000000000000000000..1b498c39c96efeecb02fc417fd351d919cc13050 GIT binary patch literal 715992 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 z,|&QbVt3c{Z=+3-9}1wX?P_;c#QFA)iUQDx#UV&N}>U*a?TMPBe14THZZ5Bx=a z*vqpt@Jr;D{6z!cFWL-$QE7I4+t2W0Y=*z+1N=pq@E7^v96z#~TzbNf5f6XSDEJMo z!k?1}e@<7!(>YG?8?1#try~405%A|6gFk1H(67N?@Ef#(Kj#qq4DT7Q@{i%qxxfql z)!=8C3V)6c{+#Xb=Xeo+jxcL{J>qA8KW75`5;Nd0ngoAQe>Ua%D)=QD!(Y@7{-T@k z7j1;UXaQR;PcGt@fWK%l{1|uOFM0)kkr%t9)*|>Z2Et!-1^%Kf@E47Rzi2XZsbWv~ zF~Z<4(#rV^zu74GbL{v`{ATdyXytk#el~*xy}-{Foka8^<1_qnKJXXW@!0@A!(U{O z>ji#17XBhTy}*w*9R8wB;B$NMSp~mY3GmqkezO$GpEKIZ2&JDj=imKO= zG0@8}=*1U$Sw!?g{A}>&Jb+$iKrdC{XZr%Z+=HLZ9sZnu!RJEYb1d=85kA8&Hxm9L zJ3hlN*8%>bDssILKc3_-It;yBfL_9hUWgwL{-QQEeD)`NhTlvJe@;y~pW!z<0)I|j zNiVmcmsIG5ho5aU{5di3v;CkK_}NatpHmzDBEsh#;Ij|-`~`lw)$kX6l=B&Wxp?@C zMnNwvp_gjV%YNu(AMxYCU*rS5OkxJScniIBCwhS&FE{ZQNqqhYJ}(2GtHW=mhd-x1 z_`CyrE)G7wCwwM;Gx&4hcll8-@UyLjKgUil@UyjoKj#qmd>4HFPgSi3mis|d-Fk~5e#Z{Q?=7?Q@4{WH z(tk=+z90SfMagzga^MX0t=?BwJXv>GzF+D6F}YVJwpzV2q49d#W90kUVtV{Rf93nx ze!i6Lf3BsUH6>q%HMAWxcWz$V4xT;i9Bu!!7mCFk00N7fAWhr1%sc48sf|34hkA|@UP$}*AA?lySzp4u!}c>U(SkJ z(QHFWI&PrNxPdm~2HK2kv>A6N8TU|^F2TkFU3YGK@18RHa9Hr>of$i4Z@igUqW z?UUig`^^gnHST>NcIp-Vf*Y$k1#dJh4J_c3nsRV?^WdFBr^V0EWTuQ7vn)7q z(uMds-GY-3&)*Qde%t$%uODv>YP57$@VebISI$1XF}P7m!Qf3o`xPm_=cVHY+Kd}$ zGp^cZT%*mnJIT1KyIl$%IOzJ$B+m~i^$lNwf6F?ybH=c}$*XI(3vS#o)Oc!pQjpK3 zlfex)1*@laZWmncOM~FZ9Cnd+MZX0yFk+^c)`<8((GuH=QHMd&vXj#{w zCrND36Jynq`x~96<7R(mY2573ER9P(GaZ+FW;$;6XD)rcT2S1R7vM&rquB7y7rEDtJwMoqX8w4(p=peAEBfg5QlWqUUXiceUwvg5^4$rL6|LT`S!#v<}?hni!;Br&}?n`oN%-JpzMT*AbR$#_%c9xZs9$ z+-z=0=EU+m?gN%|@coVd+1^g~B(*AMfouJ@i6uPm#xT7o(tdKyG;1L^!B?|dECNN z?mXC4%ZWwN*!`SXZyI}$6YEc74|8IJXzWo=Y&eZQ&WVkpu_rmP zaWwWcCpMYJvT|ZGY3!NQ__dK;0h{+V;Q;w1-?iuDAWptR&rzIw_nxCT`A$7Yaq_)z zj^gAy`y9o|cl|kvlkf0z6er&$=qOIk%~70$opQc6Gy8iBvtz&h^FQYbbyHASTSEqD?-}pyt~}8L|ke{)R!=6tMl$^2{^gbaeyUA$3@U_=vL?5EkeR{ z5kvLaO}f>2cONQYbt4v9T6C-P?j=R?^o_6_=0vwT@8J^WBG4G!>b(D?$MvUu(XGyV zGR5NP{&cJJUQDq85e=o!B5ifvE9rRk>HhRy>Ad43EPLY~(a$N}N1gWud#tWyZ=Lsc zd#nn@k`=IB3fKV!>_iU6I%WSvNL!uv`5a6yVb;%bUW(xSx=Wa})p=i&Fqf8;Lv*Y2 zz7b{F+ohHDy2My^2PPedJ{w#1qFbH!y&UXNc1qzCA#HWu_aiKO<2X51Zhp>j^(}i* zp6Yx;GpxtiVVbC)W73Vp4zw@2)%kD<*5j6CWH%$EtrODIq#DYWj#)BX+`v~Y;`_~QI-}sVRx+sB`o9T#~FPUFuekH z>*v_c2rDLk2l(tvuwuTJmQ}Yt$+s*KmtheLB~04td{Qg{CztJ3Y_=t&^EoJCj}7qH`?}{~dI_^0=bmAS;QXX#INj=ei%OWw49W$%)%kh|mg8Jz zT0bX!miv0-^x4?5m-SihTOtROKd*gD`daqJXR*TuL|C!9mX`Hd?)%KwipifZzOR(9 zoO7^0POs2s&NZ_??$*zbdtF2Ui%`IZDqsl;*qNVWZz$wID{oi|TDeP~<-Q+sFuQaA zqJ%|R`?No9p#qknfW7!R_SM&l{bp%dpOL;_BdwUUSB`GKN`1O)v)98n=`fca4lt=t zmn1q4-RgY5C0Gu0G0$lh*5mY+Rs?-_ly8_}iJ(vE%F?Z_eA66E{(dOm%-4FH9cGgc z*0=0M`K>GeI?8&SJ(lx1?J%3?i#--;?Q>a1cGLQtFaIXtr8mX-52 z=q-CiP|o{RVXenejJ`YkYUE&c*Nj!dqO5(|AGc5e%TT~x{2WvJS~2;%!%rP)#iYHg zy7g1%^tsTo7kxJC`~s!J^7NtFqFbF`7{!Xw7~KMs#>-QjzE9{DSc2uiJf8G@Lbp1< zaOq0rDPg@wqb+;u{Ax*04x9ToE+QM$`RQ^n`Lo=wfrRB5WbIQLMd#NbA-exxID72H&#@Tk(>XdWW~jn(3gg8njMrCTyuJ$K^;HBGaAcgS;DU3H*VZ6Z#;|*3AZ?M96LlnjvqA=bNh4F?cj5kzayrBx?4OJL# zsKR)|6vi8-Fy1hQ@rEgkH(X)7;R@poR~T=&!gwPT#v7q9-Ux;9MktK;hr)P&D2(@q z!gzluj5ktYypamyjZ_$Kq{4Wk6vi8+Fy1JI@kS|(H(Fu5(F)^@Rv2%z!g#R?6vi8)Fy0u2@x~~O_ou>me=3akr^0xDDvUQ)VZ5;lo#__X841fxb7#8M`Hk-@VJ;C}EiJm$`Av+qM3A3J zBh#(UPv6mk<@s*Sg~w%Nhkz*@H&w#&+^2oftnLGaG)A|;VkPVujnOTzI0<`BV{{8l zl&}{xMz_E&OV~>qqg!AfBP7~KLBCF}!@(Jipc684eC=oZ)q3HwB2bgT25;U!_8X^d`xaT4~0#^@GU zM+y5%V{{8F)`Efaah6uZVj;T$Oo{;0OW5!X30q>1#Zqi}4z^H!Tzn4ZD`C=B=eI$^ z@(i|)H$@OcIp<)H zJ^Xo}tvLm3rUG`^iY?2?Zqj;~u0orfbFjm@<@9NX_09R5cGw?{e?H#C#Ghkx@>wyx zr4=#4($G~{*4K(jSHZfDUSXvYmUFG`k2|W+=ZBwT@l_PCjtbaJ1x!@H9{wC#<)wf% zR={EvutWvy^3So=`K*}U(z4b7E3D@1ur8K}uEM$;Olsxa+f7PXUu&QC$HggNM-{LS zR!m;!tFXC>74x;UtaZK$o25SUET_*Ey46+KeA%*ho%`;LOMOR_F z0>`&cO~_;`Q_6*5rInyW_TA{`qmK+|RL$I4h>Nw5;y{ z{}UgqnAC&yIpKd=0Xvg(t?iCG)A8qh+HlbRI8ouahd;;8dMRLy6|h(ZEKvcw{B!JF zJ_U?Z!1^j+aaK%kX<6R^{^yR`Ve}o~e=!G>M$WmnSCz02);{fyyH-U3>!^Uuv|{wx zLw&#g*F-DkYiU`ZJ^t5o`lQdZq5ABdbpF@-TK0xEMDBWVA48{bv>tIXy~(z6w~Z0ya|t zi&MZ76);f&JF0+PR=^%AU>|;tmCdJsc`0C36fjN!Ypj5ERKWTwV6h6=Oa&}X0ZUZC zL)zWq&+PUhOSCF5THvN7_+xdq${%rt+E=$L)$=)~j_wUl*3DS0*v|TT4 zH`w$^o9M^p$MSjBIu-u@z0R;Lu750z{v2^@f!<~hr-)lqe)zlQhr67~r{o0eL(ZjW z#F?VmyYHR)=j}#@;^XiK86#K3m8aS9+HIZwi?qy@$o|eW9&u~Bp6pPkf8XjwYsOa~ zpP{y{&~L2@ZHut~4D-mY)}NZ|x8HpDxN~;|T=8q|b5H2Klkbd+b@F)a3H3Z85X8?9 z`&&Q5U(3(#njLuw|F3Z~>{AWDZV~5}k^RX}VJTi6?feenHONj5;sFRdJBX_g&*dP_ zAfDSnoDj&xL0pY^9tUw^B6M{S4?;YzgLp9F`5eSU5O;JPLJ@a#9W;nLx(?(yAG4lNLO zbRAkE?C3hQLfp}Hh(z4cb!d&aqwCNHaYxsIJcS%x2U5|Y*P$xfxuJJ*ZOC(gwu$y> zo9LakiN{@wL~FE7^hMi5Q?#9} zBk3~`?a(;U3vCmP&^FNpZ4)ifc7#ovaGu5q&uN=*o3;s`X*-+4(q|yNrE$Vl+9v#@ zZF1ddoA8jf3HNB5@Qte_!+9uq{jbD0y$QbngkT$(P zq)qP+Y18{d+VuXAHoZTjP45qB)B8i(^!|`Gy+5Q)?+6B^4S#Ry+$%vFjJ z-q0BN_fbfHgg-QvPl^#9(U_YQBYdJUdTxYQG)B*j@QcRixkcE-=(!QT(f#PT5#G@l zJvYKX8l&e%ct~UP+z20OjGi0eC5_Q@Bj-$G^xOzfX^fs5;VX^Nb0fT^F?w!ulzqikXYrC3j!n7b6~WfLnT#eTPm(QDP)CPuGSRm8~kAlHn(|4Ey^|4F-s z%|7(~PvR<@IDP+Z!LsaRZs|vJDT(FRyn!gxZGd}+2+FU zub=+`SHQvj&x6y>{XgK;f1M((fP?#A6k%8Vl4k*F=f&@@pZ`s-fOP-K*^%e|ub=;6 zSK!zE{~vb4WvBb={>v`N|FA!Q-T(h#H(YkQHtWjHfSiBvL3V-u=lx0MeuNAEtDkJX z{I7Nb{(q(~r-)mt^`tL}e>lea?`W4Mar}_{l+@(PVN3eVXY)6ySGY-k7sr;IgRjls zGZ!+icxA~ilRng{eGFBy9Zo99tB4+E!c z?O8{UfAm}^qb@zA!Ew?(`J4X8_YYUO_tcIT#A;?&9vSYrt&{fb z?1y2_VTDC;>UVQ^OvBJ!L)V5^-CbJy*Vb#=)ki95OTJiW>izziiF=05 zO{?7(DK@^gH|^ku*J0w8X4)Q826FDtc=1*7SLV_)!nodvjl<^u+g!W)c?IokA=+Fo ze_t`JMlz?#9TjH0+C)3~t|!-WTrP3`(^IDW!)u#H4jmmfJMz4C$I`*t`Srh;^NsGD zHqD(eUCdP=Y|9xhZFl!bZT0Ovx%mZ4n8O>r){HFX5;l4HF)cs*vUXe3^t9Sz@{2cj z_-pD{t{S$EzpEWH&0nhvsm5J?qZKQz9g#L=#_6!}1M6r-qd_Yyp2G#)-E2CbE0T7v zhhA&=?J4IJSw%Gc9bk?UDvCjiJ8{}Q22G)tSGX_xnrKTcm~HM7Iz}`9!%Ob>_WiZn z@+{Jv8|Eyoe4SjUrnRpJ2Xb$idtuLTdkY(ThpH53pJZ3HPnnq{8t-q-WgiC zlhJf+&TGy5n>S1mqi&_$FTYT8yKMvRgUefOzMcIv!L6NkR(@&<44e=GPb~qxw$=^*|fbFH(e!gH@uX0`FeAa-^8V7vVfX^DjXPI8K z(2L1|UbN6l8qtf4&m8z1>VVH2_#6s8%k`p#UeX-sMGL*8LN9VYYrtoX13rg>&luiG?p@Emr1dmwe}_}AQ~E{DaV4cl=Q3LFWU+4O6;_n=&6mrq;G zMGjv!d(LDvty}$LYL}Q5o?pmk8eFJ2S8Uf?@p!`{nxLz9OwU4u@UpEn<`NT+ir4ac zaYfA0-0`)&HJik7;cnM!h-EIG;FeA)%x(5?;gWlP4mFh(!hIKN%vH0Vn9I4|<4TWN z$W3oL%hdb%`*8P7;bP~rewrs^u5$+0UffW_Bh%x4&BAtndM^glt!^&ddZ;+5Z3)gf zek<4R-EU#DZ|>n%#$D0od)-6a*K3nTAH9$Bj(!?;AYzo*Ib*6h)cYTCa#%M_p+90w zdpphzn~&$)%AP~Gs~1FZ|EbEMb4KkEy=wAdyQ5W_(%%}G>uiYER`XfPEg8_7n|`cP z*sLB!xwoJDai=Ec(dI9ClB=|BI`><_)?xcMiK#-B^X5Lwc`bLxoojsA!?a12Cv5Ji z_1wE&d%5N1)@Z#}RM9-o{45qM`%SyE%xP2E3B%0JE?>l5aBxoO^3eT(h6;whwkn=*z8_5gL~Jfhh~j$8rMBJ+4L??Y3@wwPHo{c z)41Dt|1~-Nev6ysnoGNltlfB>M_eaU)y9x8KHNB5*D}HR%SA1CObXvEbAH`gQnxxMz`I-Bt$sTTd@yF)EYdWRH z|5m^>|J>B{h}0*cS*#lf^=J`6@?9$qcJMrI8(@^zt)B8Iv>2tqL(YlN@avQIm=a$}?XEN5hZJMbX zAm_6QeAYPNvk83G5I)QFB0?`F2YL~qmsFw`8J|V)S>u4uBKWKUpXGWHp%;?_y@=3D z8uTLPvk83GIN);{_{?SV`A5Bo(2M9mFDB?kBzlqYSp=Uo4)|;WpE>YZt``w{5gq77 zgkD7GMb76`@R@VK=MeB&L-;JyOB(bdI?zif^db_y$oOmmpE(D74h5ez;ImvWCg??U zpcf7FB0?{6K8J$OoC7|Gg3lVlXPI6!&`X*Fy=b5p6VZ!|&l>Pq$t@V_NK{O*}L zX2;9WYTgsV%S}BYs@E+sU257`JXHHx+N>^XOiTL~33t1^gG<`jLR(`^Iq^PIC9OVl z()2p9Te#1}l485FsiJG%8{E0p^-WXm71N9#)H6K)h4hdVRFAYQ%fntH&0zgWCn^)Pes-lFjK zlDX93AnwSRhiU&j=*!hV-5_lCwbPn}!4J5LPg-*qr+cKFs(g}jKTtC)ZE~16DW!n9 z?1huup3mu~%3-Od!`p|4&HQ|ts}MJoI}vu8%ZxmlCY~B5mhQPb`iz>|;!*dw2dg|nTQxh!bsqghdo1C(7_>+uz8qhidwFkZTEMN` zV)3QLG&AnqY*OVFUo?h2ug*dxBZw@+?N4%1@Fyv14d!gz> zFVp93oX;)k@h|7rI=^_~&D>Dci5i*_$?ekX_$7#je1Dk(7L63IAKw?euVM|;w<*!- zb3RSvx}4d=mHSpg{O5Ia$aK$e)5`y1({)Pxj911>b9Pl{=eC7zBWqL`4UPK3aNrPTQq8AyT zHQ=+x0iQ#`XAXRp>m?L=5gq6y7u4uso=AQ@L8spROltmfnL&} z7ZcHojL&J{Gv|QMY2dR4e3t7a4SGp+pqDi0#RR>C`~0y)6_S9uu zh|_ZJ`@GADp9xuzdmvY?NJNHhcWyJRn-NYO1=7p^C?97$lGBI?&zc&}sbCtH}%3|5^mdCeo zkq<^`5A;4MuIXP}yjMO$ygrM?{=bPukJZ(L`lV?;UJuolj(&tV6VmedU#3GIOQrtH zlK#0H?PjLt^j{VI$CLgMpOxD3_)>ZQ-1S-2v41bA|J~?6i1eQw$LAsar`JAzR2=WG zF{>Jt67PKM72*@zH?-B_L+Nvu|G{mDEX!3n8;p3*5ZA?SnxO^N>9u;y5#!bK%oUHe z6Ym_0$Nue1pJ(4opYzWIZhF6`T+`YI5nmbNx+u%EdUQppe=X^syYun)RG;9E=>LG! ze;Lw0;=NN{7hSgLe?IA-yK`(6_8(x={}a+b;;XU$8`8g=&){2_#sQzfPbWEFud5b)Wif2&@w|8Vqgrx)x$i1aV#Gx+u! z=YY@P=UK8JwMHvL=q486Ru>EEgs?B5an+vx@S zUnc!a`9=!K&&6}CBav@-AU}^ne*S^x=c2i70P>B&$j^V1@|ket=Yzznf4@UMlY#vF zx|E-{Ci%H&KADbuW+}+<@A;80{UgmU zGBLkciupwo?ojRjNIr)7MN!-N1$Un*hkWcfnO{ix#zm5!i$})1M!pe){Jf!*pFcu= z-bTDQy-e__DjvwsYuV;A;-1fkkk6#pDpqI#( zPTI^bj+6NXce(O0^-=zG!KJs&p zDJ{CuAH_{5d8W#@AvKd1SUfcb?hcO`96>YeI$Fu!<( z`NaavFK%Lf;l^EfvjF*0kTkzohxx@a%r8c9*N-1SJ~qH+ez6Pli{jiruVavpwIuTk zIiE4#%s_r_$7d7xY?Gf`^@91V2l8_}yE5GQW`X8S~8)oBZ6$XUsQ;*yQI{yFr&HTcu7tF^ekokp_pIiBy20lyq`44=?e6x|1pZ}m2 z%x5#C{QL*KU_P5k@^fi^VdXRC%iA!&u;Vl4%PRT&g6IYF@nh2b;s?E8KHh=MFXVj2 zd~+r8b2~nVg3rj$>3r6z7tCj$BR{v(3+A&;k)N}eU;Myl%$En)%rC5b#(cS@&HTcu zmk{U$^9wt@U_Ks1<`+`E@d&BUi$%hqPQ`uqS=pEu_(c?R{yX{gV)K|Rxi`g}Q3pEq-NilUxb)TTba zpVa5gUMs4jp81i~=cV<9YFJ+w!cA)Hj(TY#))(5@tS>}y`+BWGy)*;s3t3Vak>f0rkdasLuzH`n>qAPc-U{$*9k#pgvy(^?3v8^V7xK zdGDd#_!RZ|+)_PrFsaX*3k+_9dgd&tKK~T;`TMBPZ!kL_Y8aYO{{`yv-K2WyOsp?_ z<#vsWMZI*bw7&2b>kC(~zA&3RbM*u2rG=&Sg#uV#2*morId0dr!KlYBlhzmRV|`%@ zSzq8z2h1S#ShBu=dgD{n=bxfJ-%8xOKNsqa8K}=sLw!C5_4$dY&tDK{k1mUP<3ZHt zKcSxaFwOJTO4R2|im1<{p1B6~`8=r4Pepw`8TI*#;?g^_P|v)F`usrDO9QaJPzCD? z$GAsaXVgo3Vtt{jw7zf(>kD(Wg>`FDFKvPKg%zmB4#WCFE37Z{;U3mHgL>>IoAreZ ztS@9~3$N*ldTb%Gz98o_S#Lsp-j2^$Z+eLOd{enzu%7ih>hpGb!Ftvw)aOldK4ZP? zJk}TN_>A?k|7_M5ta`zE+*WCQ;Rn57J??NS^djdo)|-mj)aR{y#(L97oBF&}FIdlt zM19^)FC6rO`g|KXpRr!nN4CC@&1bS+X0yIv)eF|+60yEurx&cpWng_FOU`GkH_ejj z^FQ!84SYs@zMEVxSkFpEecnzlSkHQj`h0GzFZ{q~td}j5))#)@Gg&XQSzoZ~1?zEZ zrS*j$^n&%c!eo6x&S$JQtwDX>j?Y+cx`+DwK)GJ9o|S?6yq#XKo^=rQ`A>2_W4-K? z&H93s&sZ-jB&{#}pckyi^~CyuonEjW*8=McE8sV%34cx%_;W6p|6X#7_zmFCNrOM9 z3;a3Xh(E{decc0ogH7<~m?b|$HTZK5nUA5wL;MWz=bVE-Cj$N)JdYR86$9>Wf}f!< z{5dG*Z)pyH(IEJXlDSvKU&AkJ_Gg}>+@_=|=Re~~ud=q~VM1j1ib(Bd~J`56A3X`07%Uc+w?4S&vd_;YH&pVJ!t zoY$H?!&k#^5D9yh_!(}%pR)-5oL2DXyo5g|#x$I%2R}n5 z{5h53m&k&@s5JaVj5bQB1iwTF_=|Y>i=M(?RG0XRv|U2S!7uS1{-Oc!V=UI38+sr9 zqUT!wcFFK#gh>7(5BQ6g!e8{awsN7B@MCO)zi5NxH#iG_P9M{d(Hr46@Pt37h2+oa z4S!B^@oDAr@Ed%CKj(<#XBbcXIbvYzRq!)-O8%Vk@aOyue@<6(0k#MH429v(=`8sr zHo#xhMXT}p1i!>C_=~E-U$hDSq6zR9jo{XPECIj7IQWY=_%ZbG7qub&BCTiPnebzD zfWN4bhujvb%jH`@b$&O5nYh@TDq96PXUTrcpmMZ=$Crx*CyBH_=uE$1`*av_qx=m$Q-FSiZ;q78Drz>n7f z{vtcQz>oJH{-ObLKErS3Dfx4L;4}PYh2hWXEY}PCY@YDv*y)9XUf|C;BIh&wavk6= zvg0%Sa#i6kN|EaYe!N}q7uo3re!Ow;7jbewXkhaRXN-||_84_-f~vR@YXcjMuVJkHdljSRWCHtck($>Yz08;J)C88B z@UHDC3ED?*48GR}1iH>zBTQcP zOz0iiLtR4LCis2)&#?Afs`_frn!@OHwgy^?h-y7T*zu?)>JQBaz=1lHBo5n zvCCLaH&j@1CW|dT(O-SK!!x00&&Njh_(ej@ivYu|?X&nsl`5+jsBZEpm6r=ON8A%` z{PEh*;qgd5X;XLgUUxTPVb&tSeCh?;XUarl$+zp6hF3ePCvTq3ubcTNf53T)q4Zo{ zNJ%Ql_*5CHPAywi7}@AwA+en&E4XO|*IpM5?S_w4$EFnIo4IY|SJrZ2-MviwnnA}5 z>E0gf-7`!1s0jxI{kpHl&{ls7MN{grCDQc#u5Map-{}z6-Q`cC`sP5UZ|*BBH_DT} zan7Be{KZY^_i(i_PlpCca}q?}z-jp97ZaHUZG3T#JB@kg?h4p@aRlFPxSBm1ujg+R zuOavkiRJecy(R?rJj0Zqxt(9A4`(vB8<@MThVd(BL@_f;doT@By0C}WoaayfyH)Tk z(w>RAGKVi)t*IeBy#qhy?l30Z=QeYvMMtLo&vwgCY{u>lZ#hl279(LMpin-HtKmprSDftczLg^ zs^gGEK7M(Iar653?BO9QcJ1`V0-Ih$_4nu2e09|vW6;W}%-WH2RXe=KGId*=VjDc1 z7jUk2RpYWTUhK*WYuGu}HnDqG?`KyO4pB`E$Y%`DIWuFPrKsBN`@j|v@-up^z<%rJ{!Pi75EIjOom?kp_f01URdabx9BAZdP##`#t^;m&y zHh|9z;j>IH0`y{Vpcesp;fY>keCEMtl>MSxxm&`V%_F5IY( z+-r=Ta7%bLYYtng<8kJ9*LQ)H7L+r#3H`&!HW(qS*Kc86nk@EotP!7V>~JN;Sofcq!baZ_Ows41`F)M22R6|p8D|VxY@ARh z7xVbq3U*`Pj?DDYZ3C;ySli{Qu%^gdRj)P;`1b|P>et2q;YFhaW0SKT)%o4FvqQo;wsZOg zb;4a&VQI&%!p3f0*jru)*u3Gh*cydus=r>GE_~GS#!hRU)g@fovVQL#@Y7v0)tg86 z5|*ll29_}Q&oYU196!T!zu7da<={-cskSQ&h-bEkamQK1_%k)G}a|(4iyYQJwjO%>&rC1Ecu`yHkbukbdlutR0NL#YZ+cStaCd+neF97H3Pob7Iq$ zJu#f=bcgNU^$)dcffW8;>{(&eus-a6^_MdZ3Qy#354ypBy48c3v@nCMsu{qZTi)I< zIlqaYU#6w8^Sg2E%GH~g8~y$f{to}nyKQNqDwZZ1cSdwq=dS&hy*b|~JRFnBHybmZ z=^b0e*zH^A2P=Fj!5j`wW#gC6<`yAe_m0iFlFANSeS}|drV-!uTY{X=JowBw z;4=?CGlb7Fy$H|???5jC^pZsMBIC0FJ~IyZEP&4p_$=3p0KM=I^ddkn2IvKR-UL4X z4L<({K1UhAXC_|v9(*neK0ATWmkFN@;4?$`Y|+bP=;bic3lF^rIeM7^y$D1vJoLg7 zy;%6X9emCOKDQCTXJ)$VssDq$^NwnwYui176~%%gf?X6uNoFP_WCrX7d+)vX-n(M& z*Z~n#6s(Y$p=E*vEB4;S-g|i-v6pjgoZv8IowCj!-#OnaYxz2Rv$-cEzboG5dY{NV zj{wgJgl8T+Q{Y+F%SPy>6VZzRy$HYck`H?63cYk8dJ&)(f#^lWa~yc4Z1AiB&lKTV zr56+QBG}N27J3ngUQ|5u;F+?)vlcv4;90E~9(oaM=tT>?2+)g~XDxW9Z1AiF&lKTV zr56f%G1<@y1-+MvJSR6*v&1o7)f$r6JSj!2uxOvK&uLLy(-0S}W4^DtM#~n9lTS?+$HdnYHW!>_ z>iKjyKl;i6ou^%pSU=cDtdKfXNIBZiRGyl}A5AQ(Yf>p$oIa_TIKEd;de^oDzGHza zREww?I!hqs8g#`6l)|`5NU5 z>8ey5CR6!xsoty%BWiuOG5iitVq zEnNJXEChdeFYx{PXd7M1OMMw?VqU#yE*8vaC;B!{6ZZD26!*Tf8y}(X$ZWZqAsl*g zOjy&{Nf1|^jN91pI{&W6ROX-FfuifxPNJ?|5*>B(m?<{(16^LY&us5GM7S2=Evyu# z(x#$AW48wysV7cNm^XSqv2dN%qVK9mI{f1fKA*6VkMga_M7NtPq{Vj-){R_5#~ima zt@}5e|GMxHQ|Q7`!L#iRVX5agA!?Mbw)NQ%I?t%;{K7hiv|&}}(q47f2?;BvYHqPT z=<4exGKKF13pHM@6Xt%<3EOrajcZV_9sl}N4Bz%(`?xy|VrgCDM8Q%_8=LF#Sw3o3 zKBi#jFrna@yu!M*!Sq?D{hH^KFVY30qWQ4V2PvPxK-%?8L3+>YDcY*O8k(t(_tdV5 zLdB~+h2TkL=p%v6Oim@<^6$%><0qUhqFp+(9$jhY6k5FVNYm&+0Y2vXSh4G;;`GAj zWhklBNkQ25LL;>c(H5;0D<<99MSt5jjZQyXN{9>ZsCBw@lxn#5lh{#rj2K&R*HN2d-+({6KpO0~H1S#1AkCOv$7B6W6VHCpoAqIK(5 zmcLT!vKT-01^s;GclzG25PJXILE7;LC4SV?l`_v`!E+PvJX72AX)kK@l?LE>7I{=%oYEOWb;&=7Q&m7tl*J=p_+)c}w(Sf?jx{m)|_M1kW46^L7e6Q&GP4)jVs# zGevm*t(T6_OES@mHa7L6P+oYX){77H!V|ryc-DYt$_CFq;F%&ktMp=mUIZI@iGyAQ zq8AmD5BjWWb>`7R1^yS2NcOG=b6uU6+ZXPMaQd_@fB7Svce6qiLdqi)u*Hu z+r5IRR68HBK?mBq?{_Bpyt{BpGeKBnWXZl}aET|hU7d~0>wmn(0{`OQ3x|RNuU&}q zjrj2124+i;gRpn)1Y!A#8)P5n)A(1>-w?kc;=d;GX;Z1Dv0{S&#Q!13ACLGP_M68I zE^%LuU(Fhy=Cw0%zA57SA-=sF|0ecl;rt!M|I9cJn;__Wy$}{psv;zWme9;-8cjP? zo59c8XV@LMXc=88Xl~}d*U3S&_v{Kxp;9-6rfoV2vv1TA;@{WB`9=JzwP*Mq{=-eu zkv%k>b`tybG+rnD`AtuQ5P!TiKAjL+IBrJMM8uzo_{{FWxv_{pAN$4PyiU$m$EWfC zF~IqKh<^g{MqO-$?)1 z>y0jeUV-WwL z96t^5_1F)_`D%!7R`N!825;pk8$5%zmXwNTq8IQi@iz2=^G!@Dy<~C=o)JF>&(*;* z;y+RA1$rEb_&M}~^Su%OlFaj9@LUAkE&y*8sPNvk)jWf@H0n3cL@$KrRH6%* zvk!Pie6y@ahUk?M*-KG6%&BMZGWBYMGkSHx%Je8Ua-MrUEywp8RBSCOB;mh+A3 z$j?KCkX|j3Z}dcdep1e7`XZk}o;-ak@|ms3&zH;jOl{=n{|X_8_9LIUjr_czc=j*U7r*3uX)mcS=zUHzHBHz3M1Ao?QD4-jHy0d_e2ml=`{nwABKa7d za`BGEV7cb>}iPRTwX}(`qQ=^MNQC|p( zeC#N_x1SsGu@Z{<;y9@*Wky3FZ!XrSVJeQn23C7o?KrnM|}~B`hupn?L2^d%m?+w zCe#i#&3^QJ3WB!rmSX@{KRZ&*#Yb`5@%yeTCE^N04v4 zMt=T9&S#R4pEH8wxf%Hkjr{z)oS%O|ejYCDpW7e#%vI#)gXQ`nGhd>GZLg6ptwwzz zD)S{eF1!o!rBkRcGUWP#g95%FM6V0{(yS4FR zpuWh#b1Zm9eUV447u4gcP+#QG3+nNCq`m;pvrun};Mtq-jCzwseolCPiF)%Bcn%{x zqu#uV{2V-2bwNE_8+r*KdO@>*dabXVlBLP+wSi&a9US z�HrpuU&{y_Asa@f4yL)Z?pBUs&}r1@(AIq8HTTr%+#Hpx1WVy z?1KKhi`<_-Nc!`_g48SMH|9cr-X!-kSD`;Yk^gE6K|ixA`tv8{{`|k_&-WLW>pjrV zG@?I09R1Q7@_gYw{bunj(l5n)Azhv?OeFIKdP`6w`lYKiJv4T5KXwo13&ZGtc05Ku zHkH@(Y#`4U5-?v_Oh;E3O8T*wFU*wtjZvgOFFF?B(QouafBur(pYKNcjl#WBC(v(P zi2i&4`kC|5pN~a9(?KkmyCeFUPtcz~Blk1Mpr0uSpSGMsKl3sA^Tp6Ft%do*d@^64 z+uZ(ze(6Qb7fvbW3kh_@^EK#~KEr$=U7jzbq95ClZr7m|`mx6`U-&G~7xJPXdyU>$ zbRqh&wJ~2fj(%ewxj#QlIQE)Hzwsmb^E&kBN1;D&N4sYH5|TsSl71ul^Apg|OhAAB zGWzp_ga-{G(9fKK{`@`k=lh{Qe;EDwk;28$?&xP;Lw~*-`lVMeUnoQ73v^h8n&_80 z$@7J|m@iP6FVvxTPW**_={U?6?#lhxdYCV8bl8Yy=*RAo=L>HzU#N`vLLGXCdocR3 zF_f-WKR;aV&#!=93J|@Jc^3NfUTVEyo|Oyzd6UfZ zLGU~PJU_*}>^!CE{zJ_(nU`U{FjLmcUd-d3LN7DPJPz}PnQFaY9=AFUdQtO?dD9d0 z=X3CkdDCO`=ZndD*<{rV=2?E|&tF#S1@o+h=+6hJdB(i#IOYpEc*eY}Hs%Y*<@v%q zSuZ~^kGqKZ!Wp$*FpqnN`9ivyXUv;spg*63XUv>(xACURIsDwEdTwXUxlfV7@RCdYPfr3+8d{ zF<(ef>jm?;RhTb$%YK8S@aNPO;m;v{1MTRh2KaLd!=JMP{+#?G{5kL&xM;T8%~1Fm zx`|OUW)eRG{5fM}f6jOKbDD@Hr8xK*?!liU!7p(E{-Oi$7p)gA46IE267U!8lKn*t z{6(MWb&?(Y5(VKeS_eOd2L7T7@E7e6KCUvrk8zhTS>hJ_ML*y#@*w^qy8e^%@MC<3 zzv#2Uz892qOJ6i;d|ki2!_9ill?_g;4eyJ z%GDhOzr-te6?E`pyoJB$od|ysJ?NblevBpX7kM%(w0GezN`}8EoxVN(Bm5YB;4f+} z`wfin8;qm&7rO_)!D;w&w!)vIgWn*E_zkG=g@fTYaECu~VBweWCjKIZ zxib=ei3ji(xypWwBJg8uWq$iH&ca{h4}Z}H_%TWoKL(R;**^F&Cc$6i3%|hv_;c35 zpVOYN*J3C925aEY@q<6d4gQ>M@aJq4QX}`nZ(xK!hliiR9{!vi@aH56MTK1OGyH-- zXD<9X-tgy0@aLQr?%yj8KSLh)bMC+|(d)OrXx}xa#L5`>B?`k|v>*PWH}DrVBK{(J z_L;iyOZdQF)K2ze+|dRN{!G7r>;XSU9Q;KG;V=3Oe~}OI7twS|1^6-A!(TK{%`@?v z!Jm_ZXZX$T!Ji|^dN~EX)P!DQiJuMroH?>yqJ)K-uh2_V_}PlbZOuDQ%`^ORcPSe@ z!!P$8{-V!ny@pqH`G%YFFSPQ#xQt=0?tZ0_*qOjGj=zuZ~)iwMtK!EgOIe^Cy-z>oI;{vub|pL5*GGyG;h;m=vF<{5soJn-k-fnMgzdKnMB z?0}zb4g5J?YQ4bEW`sY7SMv_H=6+YA7x?iC z!(X&dtrz(5eBdu?r}l#;^)Vkb%$M@H{d$(PZ`l0umT(w>*FK;G1;U->Fda2CD)0)er&g1 z`#yP6*m|vhI40eCZT(sDyIFshTw8yZTw8yZTw8xO^Su1LY**ZuTw8yZTw8yZTw8xO z^L(8zdPA!+u?gNn>%ylo=V8SW=~?h>3I#cEfwQC7<>C3W1AW3cJRNo!dNKztyJ^b7Rz1{hY9#`rRWR>xK^SOv)A5O@Acs!|?ijizP-a zxv3ZLUkp9Ie@vp?ZAbl%w};$5dROqB8?r{ft=16tZgn~RoNZqEIKP?h#aDf{-q%-g zU!CHmiO#eL&(-^2q?H|vM3&zJd_N4LDCZ}4LpdCUp>w(InC>qnW7xsfheuUSwt z^D)(vJ!lAFesTCywsCRp0b|+x4~jmrB@QH$cxh`IcId&iMvz z{Gj*UHQQ~Q-y(h8(82n;;jwP@)}654H}f&e_a%?ndf&{)EZ;ZtG0XSOe9SY4B=~;w zpPI==nO=*0!bW1y#D9H% z#r6uHv2k5uxj7EL`vwUpS)_uW7)_n;ZiS}Q8eS=H^M1u)y?N{s8cE3V282`$t zAfu~MnrKirV`Ncg<**OXV6^Y}fWx{AeYQe_p$Y#CtLVF6?3hw5j|L{pjSSHpx&C3j z{lPQw=jXlB)#+gu8soZ4*JpJDokr{w(*1Tx-+}GE>0Y_L35$3?%z9sHNqwAguZkOy}*sBoQ9x$0ku z3hLhbhTW|C-|bw}SK2w`r|fd~y*{UW;PPA*S0n_jGPj&F@6-jm9t}GN9s9g(wpi(F zP^>9BXlRQCxi+Ow4|<#TYmiU9LAl0854LMLtc0Dm)M@K|?G*R5Q{2~1ao-@teS>gc z_4_s63jconeFpwM1Am`^|Mt&7%~c1t@16d5V2zQ_mesWUJQz^@fqRXkA731X6|5*e6E+g*W0>BKA%nA>u=p7 zpV21o4Ylr(&uNqQMp*aq{n;C9-OK-HZ=!WC^Yh_;KfdYKJ@UD2a=ba#y@G%C7FqWS z$rpeBQauBTf3L}B@{vE}wN(B)ZrvxZiLHI|n%deYuZ^vJ!jG+e!hx-Q!jY|g!h@}S z!mO=*@_X3YC)?J~EyPvk=N4w}{r#W+oM+(A`(W1RR&JAj`!e{Od~PLK6Nbtv)`T_k zd6w4i6Sm7M))<)HuRjoPI+F!K}P_3IQ*3f+JHi|Vgp1ZAT-A=J4 z&wqQ>x`S$MO~|aTPbby)N$y6ztl#hQdzrPiCU4g7cT;?yyk0$2>z=B0FV(uYYTZY* z?yFk&Q?2`})&o@QfvWW&)!Ld+lHZ3s{$Z-`4_B?N$)@%ENY(d8sn(-a>-mZ`d3~2C z*5vhFs#-5otZ~oW%T?=O)p~_$y;8MarCP66t=Fj5YZYtq{DdghUYAr{mr`7pR$O~2u6-5Pdc}1^#dV0#vEsUk;<~Bgx|!m- zh2pxk;<~%yda&Yph~j#t;(C_iI!JLnTX8){aXnXYJx_7HKykfTalKA)9i_P5qPR{_ zTqi27lN8s^`zV*F?Tw8TbuKOwCSoKWy zty&`2isvwom2t9f<(piGE8=WWTt_IbBNf*h71x^-*P9jBQHpED^OVn14O9izD3 z{^vSx9>sNG`TGC&zhS6esZc@^iDT zYgX9sqe``kBrhSqOP)ICf4`lj21{*T&M!yUC-<eR$dd9$@e*VO|(PS{_ffW3G{r>}Bbj7dy_w`pi8UKNoe_#Lqz!zQdD=X$unSG7FJSd)=|IAC0 z2ND+kS6`XD{I3q-`~N$!(4YI=T9x_3&t%Qf-Q|0bx|Gbx$-JDzbX2TK53iuSCNl>I z{2{$Pa-OWo@8qpmlUUUhYtm24>~+cKNlzxT*Cnq>J(St&lGmgr%ItN?Yw}n~uj}vE z|K&5Fct0YqVJ_YIcVB7;+1ZtLZ&%U%;Q>Dqo~*53>hl3hO1I`tw4KF0J(SEfPt#g< zMin-u*V-H~Vy?m8v%w7i7R66noQJHitWD@>ERm8Hu)x%Udp&0~_qFd2ZcO>|<|Na2 z^XemW0tVGS>~Ex+`*-k5lTz0-H?QpPBNe-NH(=_?#{OkXIQUoe`r==5_*cs*%Pqeb z-$w^@SlGzF|L9l#Bd@t|Q|Dc@`E=7jGxlizuJRO{yq_#{L8)?D9^6fyhRZS!|*UxID6dA6n4$zPWE#y_Rt>66$seMcMnUJv6M2OGI@V!S2p z-6`XPM_z1VKdpb>XQ8a;*H2Q$)7F+b0|q4LUrI~Wdg+bd`!(dKJHxnX_M0s8f_wS} ztbb%azh{KM-P`NQ#dlSfx;qt>xVwRpFd)Mi`Kc#cXlXFl;`Sb{%kayRYgv)aU9PV2 zV8?jwQ^g8?^G+0(%D?Jne2@}n4l{Q*`-Mlbx|9952B+(Bo!^8S4^*%0_pf$9@?G=G zlr2-fSb9flEjO1|u&inv$8L3QV61&9KIPtrS>}uF7g_SHHAz42B(pz={3T?X~#a?`DV-GHl_G__zSjwqAJuR-(DT{vcY%ZYh0L~@urr(z(i&B<1OSK$M zyKYH8b&Op;37Y_8d(L{iGJc8@HYI)yBCqYHA~A3C!6J043;7`8^uvk^QSZSZUa z&n)3tr56r*G274!2fdhyUQ|4@;Mvax&n$R05}s9h;h>jf8+zfOmt>+B70*WSY_!3% zA9!X7&nmre(2Hb4FC6qD5xuB*X2G+c4W3!>Yy{70y>QTr*@j*?=*0}ZsCo7S&#Voe zlfko*@T}4c3%y7-^kRlyBTyHu&V9KR`E$#BN zmH`LLSw^(5H*RwYH}70@DWJP+H}l>{mD!3FYa$PzkTHMA?FrGT}kezZIpZEBBofNl*vaFmvSUS5a*x0w& zQOWhPkN^GK4Ey2d8BPu?)rns0rXGtWhhmQY zcgK(B>IaQu-(L94jjblKwE{0mJ-aUUcWT$zJh{s-OY_v#mJ&xaM)wUh*tKttN`+%a zb0z#naD%5lwN#NFCI8c*4V$ukpMR-p^`#ykZ(CY>^s=}VS?E_Pc&9XYnX~y*f$i+C zqP@7uy?Xt zlsWC2m+|iK@hKtoLZt@XcUl@=oMvGgwM^!Bu9aGT>ztDAS(vLjR>S2>eP-$RB0Txy ztSjaR+bgDoJs)7K(V~-O#N+~8DX&{nq39jPhJ)*++={G?=e-$waM?ySeP3azP3x0v zf$!H-!iS7V9+C0J(&k%vuHrFo^Zt+>QUkGT%H0DaxV8qCvp;u?0_Cxd4;ljrPuk)RjJhF;9ji^w{0nYF>Q1fE&&tk#PJy+}6nB0(<_ z^rGfD89cK#c=iL&Ea6$D7c=xC+0ct0^db?xsCYJmXVwPKe&Cq}&uYDxp%=-9UX0L- z1ih$v_5;tX4W9kLvyt$u(u)y#Nw%REBlKb>dQtIg1kbDuo>}m01kY-{u+WRyhF)0c zMS@-eX1p9CU2C~Q^7-7}Ql;P%bKc3TjnY#op!<6bd+PlRZgJmB7WQ6TQd*e}eha>> z4VbnfLt6GvGpX98AC@w6qLXiYt7v{X_fSCBgP~l3V{f@dpB`KMVn!x!*gaFK+p%fD zjI!0FojYl%eZm;d^ZqUKg;w##6D3aubZ@tU{k7{2H@nXuuDDZ4^HQy-Pjh@8Fm=AS zRH5x{sZV?;r&(3jd}OuGZ2sgM(Bw)FEll<9e1! z#|l_jf5+tE4r`@S2etm!-h5|QZr{dLnRv>giAhg(zqUylR(N`Vb9yUFp`rOK z$~7{XtG=zrMpVo1f2;dtD#QN)Z}Z@ z;H5sS)Aw+8^MsMy9KM=G|1~{vrqdRw?CUT7dQ8s2YWX|bq0*CgnWU;oyZSbU6x zvC*OCTrQ7Y+_1@gIAhu;zv$^2Hm*ykfBEk(q~K|*Ewv*}T;U-gs@) zEB1VqwcJG4A)MxYO~c_yzobgqQz`3z7L(Eq6D`5fyv650H9vjbsea3gc&6Mt_J)0a zZzkL2MJJ2*k&Avy#0=xXoyehKpVJJNkMA~ToLZBzKJ2D+chgYIit>dxR`2h3>s^#zsTV_1?sc)SPx6jt+g-cL z1yHMvm4-hso@nZq5}N0or6}FTve>^rr+1m=x9)Q(sdfL{DYqweX1AP}%FfIa%K5i! z;`g@87xRk^<<&g>VEa6$Dmt^QgvZ0q`=tUxWQSs~to>?0_CxK@c zJgfDR482G;^pXs{NYIO#=OpmV+Tb|}JR384&aRha=q1^PUXq~~bEaOh^PCKxSsOej zgJ&anR_i4hdP%mS7c=x?hF$_@6q;r!IIfE{-FKM9`$~(%3X}F2knyKe0R zZtjGc*l(`)csAZIA^m&6^nrt=SNVHLYYn`mn#VhwA8h{FH-A9awL$E`?rz-lHlwls z7Uv_SdcKwA_+1fyDCd2proO_&w~F}pNPO(qO7wVM9`V1)@q3Z@Ts4n-`U;b3DB`=4 z_}IUn=<)1ZW_;)HZPKALpDdl+QZ3c$I2trvE3q*#t^Ct34rW(uD$X@cJCFSWh6f*x zvQw|+3MjUFmbC1~X-mI~LoL-?yWxC6spO}D{x??iXOBxCxH@g^uwM%2MQPBm+yTGi zemMT5dR+%ANx)?e+=;* z{M`lyN$01Pu{22PXrVSqhEMUE*`Nl`jP3eU>Fn%2@P| zW*DY#+v*pcI3eY3nR{HWb(h)s|GvQfbVG;WoyPr>zomrKpCo;3;%u3_bh<^qe=W{W zks5`5NV)xV8hfQxVRrLWFYK?u`6=cvj~wOrsU$w9e>5v;`nC{7{7WQ0_Jfi-1TRp; zcOmgP{r(V~KOo1Siui>{eC&tfyqUyT^9o0@0vR*<#9Gk6o(KRjpY1?MYCHuQq? zN2Nb{$>P}np5^%2cs77%#CK5Z1?Tg~@w4d#=i^CyHP4xR+Ta)6*tx?n$(@|es=Gc3ikS|5Z^~Fcj7cEGA!Iha4f_%(Ft}nvm`r--a z7t;s%*o@5jLXn?a$~D@9e4`=q^8#{yz8CrVR!cRu1M&?4`S~Vger|DHvI_Z359H@} zl=-=(Qn^&*GiOMCj{4#?>Wf{ZzTk}GJ0V}Huc$BHllp?IK6fATC4bZxOXYm5A*nAo zmivi(Y^9>U*h=aPP7`w;`Pdp#UJAj!`yO@dA$-#8`b=cSRK??!&!*J4cjfqbK~ zB0pb6@^ee=cbk#VG?Vl5E6C47ke?5=Xx`ULIy|`=$x;Ii zFN~zV;Ha?r$d?8v>WfpTFOs-Q-zFm;v&i*DDC&#hq`u(vU$5$C7CM3Y;w$ovbmZrQ zNq%l&^&IkzNaW{3k)Nj^KOc+y{JJH83P!$h7x}pn`T2X~=dDS8Zqd6;MLttm&d<9b zKc9~Le7(iLWnl8#t`5l0%gOb{WKv&nJ_me|FAYb1;f4C*E$WNuq`u(1k6cB*^a}OG zFF7BZi~8aRM=>GD$DS$b3!2myT-DDfk&hiC^@W;eQg0$Z&%rb5%{1ia;5oCN&C(0% z*#t#?o~0L3&muoRh58~J�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 Az5oCK literal 0 HcmV?d00001 diff --git a/tools/odbclient/tests/test_odbclient.py b/tools/odbclient/tests/test_odbclient.py index 0eda5392..3f71915a 100644 --- a/tools/odbclient/tests/test_odbclient.py +++ b/tools/odbclient/tests/test_odbclient.py @@ -158,3 +158,22 @@ def test_variable_stress_integration_point(client): result = client.variable('S', 'PART-1-1', 'Load', 1, position='INTEGRATION POINTS') result.to_csv('tests/stress_integration_point.csv') pd.testing.assert_frame_equal(result, expected) + +@pytest.fixture +def client_history(): + return odbclient.OdbClient('tests/history_output_test.odb') + +def test_history_region_empty(client): + assert client.history_regions("Load") == ['Assembly ASSEMBLY'] + +def test_history_region_non_empty(client_history): + assert client_history.history_regions("Step-1") == ['Assembly ASSEMBLY', 'Element ASSEMBLY.1', 'Node ASSEMBLY.1', 'Node ASSEMBLY.2'] + +def test_history_outputs(client_history): + assert client_history.history_outputs("Step-1", 'Element ASSEMBLY.1') == ['CTF1', 'CTF2', 'CTF3', 'CTM1', 'CTM2', 'CTM3', 'CU1', 'CU2', 'CU3', 'CUR1', 'CUR2', 'CUR3'] + +def test_history_output_values(client_history): + assert client_history.history_output_values("Step-1", 'Element ASSEMBLY.1', 'CTF1').array[1] == pytest.approx(0.09999854117631912) + +def test_history_region_description(client_history): + assert client_history.history_region_description("Step-1", 'Element ASSEMBLY.1') == "Output at assembly ASSEMBLY instance ASSEMBLY element 1" diff --git a/tools/odbserver/odbserver/__main__.py b/tools/odbserver/odbserver/__main__.py index dd42d109..0798f83a 100644 --- a/tools/odbserver/odbserver/__main__.py +++ b/tools/odbserver/odbserver/__main__.py @@ -41,7 +41,12 @@ def __init__(self, odbfile): "get_node_set": self.node_set, "get_element_set": self.element_set, "get_variable_names": self.variable_names, - "get_variable": self.variable + "get_variable": self.variable, + "get_history_regions": self.history_regions, + "get_history_outputs": self.history_outputs, + "get_history_output_values": self.history_output_values, + "get_history_region_description": self.history_region_description, + "get_history_info": self.history_info } def instances(self, _args): @@ -102,6 +107,30 @@ def variable(self, args): else: _send_response(variable) + def history_regions(self, step_name): + _send_response(self._odb.history_regions(str(step_name))) + + def history_outputs(self, args): + step_name, historyregion_name = args + step_name = str(step_name) + historyregion_name = str(historyregion_name) + _send_response(self._odb.history_outputs(step_name, historyregion_name)) + + def history_output_values(self, args): + step_name, historyregion_name, historyoutput_name = args + step_name = str(step_name) + historyregion_name = str(historyregion_name) + historyoutput_name = str(historyoutput_name) + _send_response(self._odb.history_output_values(step_name, historyregion_name, historyoutput_name)) + + def history_region_description(self, args): + step_name, historyregion_name = args + step_name = str(step_name) + historyregion_name = str(historyregion_name) + _send_response(self._odb.history_region_description(step_name, historyregion_name)) + + def history_info(self, args): + _send_response(self._odb.history_info()) def _send_response(pickle_data, numpy_arrays=None): numpy_arrays = numpy_arrays or [] diff --git a/tools/odbserver/odbserver/interface.py b/tools/odbserver/odbserver/interface.py index 8b59b2e3..b165a1f9 100644 --- a/tools/odbserver/odbserver/interface.py +++ b/tools/odbserver/odbserver/interface.py @@ -20,6 +20,7 @@ import sys import numpy as np import odbAccess as ODB +import json class OdbInterface: @@ -245,6 +246,172 @@ def _instance_or_rootasm(self, instance_name): except Exception as e: return e + def history_regions(self, step_name): + """Get history regions, which belongs to the given step. + + Parameters + ---------- + step_name : Abaqus steps + It is always required. + + Returns + ------- + histRegions : history regions, which belong to the given step. In case of error it gives an error message. + It is a list of hist regions + """ + try: + + required_step = self._odb.steps[step_name] + histRegions = required_step.historyRegions.keys() + + return histRegions + + except Exception as e: + return e + + + def history_outputs(self, step_name, historyregion_name): + """Get history outputs, which belongs to the given step and history region. + + Parameters + ---------- + step_name : Abaqus steps + It is always required. + historyregion_name: Abaqus history region + It is always required. + + Returns + ------- + history_data : history data, which belong to the given step and history region. In case of error it gives an error message. + It is a list of history outputs. + + """ + try: + required_step = self._odb.steps[step_name] + + history_data = required_step.historyRegions[historyregion_name].historyOutputs.keys() + + return history_data + + except Exception as e: + return e + + + def history_output_values(self, step_name, historyregion_name, historyoutput_name): + """Get history output values, which belongs to the given step, history region and history output. + + Parameters + ---------- + step_name : Abaqus steps + It is always required. + historyregion_name: Abaqus history region + It is always required. + historyoutput_name: Abaqus history output + It is always required. + + Returns + ------- + x : time values of a history output. In case of error it gives an error message. + It is a list of data. + y : values of a history output. In case of error it gives an error message. + It is a list of data. + + """ + try: + required_step = self._odb.steps[step_name] + + history_data = required_step.historyRegions[historyregion_name].historyOutputs[historyoutput_name].data + + step_time = required_step.totalTime + + xdata = [] + ydata = [] + for ith in history_data: + xdata.append(ith[0]+step_time) + ydata.append(ith[1]) + + x = np.array(xdata) + y = np.array(ydata) + return x,y + + except Exception as e: + return e + + def history_region_description(self, step_name, historyregion_name): + """Get history region description, which belongs to the given step and history region. + + Parameters + ---------- + step_name : Abaqus steps + It is always required. + historyregion_name: Abaqus history region + It is always required. + + Returns + ------- + history_description : description for history region, which is visible in Abaqus. In case of error it gives an error message. + It is string. + + """ + try: + required_step = self._odb.steps[step_name] + + history_description = required_step.historyRegions[historyregion_name].description + + return history_description + + except Exception as e: + return e + + + def history_info(self): + """Get steps, history regions, history outputs and write into a dictionary. + + + Returns + ------- + A dictionary which contains information about the history of a given odb file. + In case of error it gives an error message. + + """ + dict1 = {} + try: + steps = self._odb.steps.keys() + + for istep in steps: + regions = self.history_regions(step_name=istep) + + for iregion in regions: + + idescription = self.history_region_description(step_name= istep, historyregion_name= iregion) + + outputs = self.history_outputs(step_name= istep, historyregion_name= iregion) + + for ioutputs in outputs: + if "Repeated: key" in ioutputs: + outputs.remove(ioutputs) + + steplist = [] + for istep2 in steps: + try: + self._odb.steps[istep2].historyRegions[iregion].description + steplist.append(istep2) + except Exception as e: + continue + + dict5 = { + "History Region" : iregion, + "History Outputs" : outputs, + "Steps " : steplist + } + + dict1[idescription] = dict(dict5) + + return dict1 + except Exception as e: + return e + + def _set_position(field, user_request=None): """Translate string to symbolic constant and define default behavior. From 032128b20069cee5c79c0acff43d65e6f10ffef6 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Tue, 31 Oct 2023 08:46:54 +0100 Subject: [PATCH 13/24] Put odbclient history output to CHANGELOG.md Signed-off-by: Johannes Mueller --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 912215a1..d1f43d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,10 @@ In this file noteworthy changes of new releases of pyLife are documented since ### New features -* Introduce `WoehlerCurve.miner_original()` +* History output for `odbclient` + +* `WoehlerCurve.miner_original()` + ### Breaking changes From 24f32b2e3289fc9e9c31d4f50b4c138ecf16481d Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Tue, 31 Oct 2023 08:55:44 +0100 Subject: [PATCH 14/24] Update abaqus odb files to abaqus 2022 Signed-off-by: Johannes Mueller --- tools/odbclient/tests/beam_3d_hex_quad.odb | Bin 238316 -> 166860 bytes tools/odbclient/tests/history_output_test.odb | Bin 715992 -> 715992 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/odbclient/tests/beam_3d_hex_quad.odb b/tools/odbclient/tests/beam_3d_hex_quad.odb index 33751ccd9de9a355b2c36e6c1d2db61ee4413c65..2a2ff16e18ed9aaddecd878f2a76e8eedba6136e 100644 GIT binary patch literal 166860 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 XL!>7eALroz`jctJ|B5^eef|FeJc-&p literal 238316 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 diff --git a/tools/odbclient/tests/history_output_test.odb b/tools/odbclient/tests/history_output_test.odb index 1b498c39c96efeecb02fc417fd351d919cc13050..36f306a7ebc69a46d3f8436d0ec348df31f61a47 100644 GIT binary patch delta 1602 zcmca{Q~SnE?G4OKtR|@(D!tnUwOBcrngv+43$QTmKUFWmz`(!^#Ek!cy?YI$#p%m8 zBHhC64d)s8nd<56P;__JqYKcPUr+a_LiHffepCTE^Xms7u_Al8ejsuS!T}81JFhUZ zaWIN+pKynfpIuQF82oHN49mu1==|*m9y9hwEApd>^P=;&7uYi`wie|EnFYeoVgbyb zKH)x-^mO~REF9attC==qUVEAeTaP=GQaO*+Mk?fSGB)8~_Y?ruLc%EI`Z(#B4y!4#XTl%(=a0 I0#{5700#4yt^fc4 delta 1602 zcmca{Q~SnE?G4OKtQx5tD!tnUwOBcrngv+43$QTmKUFWnz`(!^#Ek!cy?YI$h3U&T zBHhC64d)s8nd<56P;__JqYKcPUr+a_LiHffepCTE^Xms7u_Al8ejsuS!T}81JFhUZ zaWD#RpKynfpIuQB82oHN49mts==|*m9y9hwD{`ZWbE5ON7uYi`wiaavnFYeoVgbyb zKH)x-^mO~REF9attC==ji-ZAeTaP=GQaO*+Mk?fSGB)8~_Y?ruLc%EI`Z(#B4y!4#XTl%(=a0 I0#{570OHw}761SM From 3547a22f695c2022125d33ce47e31c9a10fcf711 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Tue, 31 Oct 2023 12:01:18 +0100 Subject: [PATCH 15/24] Make odbclient.history_info() decode ascii strings Signed-off-by: Johannes Mueller --- tools/odbclient/src/odbclient/odbclient.py | 12 ++++++++---- tools/odbclient/tests/test_odbclient.py | 8 ++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/odbclient/src/odbclient/odbclient.py b/tools/odbclient/src/odbclient/odbclient.py index 9a680bc6..8f37e65e 100644 --- a/tools/odbclient/src/odbclient/odbclient.py +++ b/tools/odbclient/src/odbclient/odbclient.py @@ -453,8 +453,7 @@ def history_info(self): ------- dictionary : ldictionary which contains history information """ - dictionary = {} - dictionary = self._query("get_history_info") + dictionary = _decode(self._query("get_history_info")) return dictionary def _query(self, command, args=None): @@ -519,8 +518,13 @@ def _encode(arg): def _decode(arg): - return arg.decode('ascii') if isinstance(arg, bytes) else arg - + if isinstance(arg, bytes): + return arg.decode('ascii') + if isinstance(arg, dict): + return {_decode(key): _decode(value) for key, value in arg.items()} + if isinstance(arg, list): + return [_decode(element) for element in arg] + return arg def _guess_abaqus_bin(): if sys.platform == 'win32': diff --git a/tools/odbclient/tests/test_odbclient.py b/tools/odbclient/tests/test_odbclient.py index 3f71915a..ab6524aa 100644 --- a/tools/odbclient/tests/test_odbclient.py +++ b/tools/odbclient/tests/test_odbclient.py @@ -22,6 +22,7 @@ import os import pytest +import json import numpy as np import pandas as pd @@ -177,3 +178,10 @@ def test_history_output_values(client_history): def test_history_region_description(client_history): assert client_history.history_region_description("Step-1", 'Element ASSEMBLY.1') == "Output at assembly ASSEMBLY instance ASSEMBLY element 1" + + +def test_history_info(client_history): + expected = json.loads(""" +{"Output at assembly ASSEMBLY instance ASSEMBLY node 1 region RP-1": {"History Outputs": ["RF1", "RF2", "RF3", "RM1", "RM2", "RM3", "U1", "U2", "U3", "UR1", "UR2", "UR3"], "History Region": "Node ASSEMBLY.1", "Steps ": ["Step-1", "Step-2"]}, "Output at assembly ASSEMBLY instance ASSEMBLY element 1": {"History Outputs": ["CTF1", "CTF2", "CTF3", "CTM1", "CTM2", "CTM3", "CU1", "CU2", "CU3", "CUR1", "CUR2", "CUR3"], "History Region": "Element ASSEMBLY.1", "Steps ": ["Step-1", "Step-2"]}, "Output at assembly ASSEMBLY instance ASSEMBLY node 2 region SET-5": {"History Outputs": ["RF1", "RF2", "RF3", "RM1", "RM2", "RM3", "U1", "U2", "U3", "UR1", "UR2", "UR3"], "History Region": "Node ASSEMBLY.2", "Steps ": ["Step-1", "Step-2"]}, "Output at assembly ASSEMBLY": {"History Outputs": ["ALLAE", "ALLCCDW", "ALLCCE", "ALLCCEN", "ALLCCET", "ALLCCSD", "ALLCCSDN", "ALLCCSDT", "ALLCD", "ALLDMD", "ALLDTI", "ALLEE", "ALLFD", "ALLIE", "ALLJD", "ALLKE", "ALLKL", "ALLPD", "ALLQB", "ALLSD", "ALLSE", "ALLVD", "ALLWK", "ETOTAL"], "History Region": "Assembly ASSEMBLY", "Steps ": ["Step-1", "Step-2"]}} + """) + assert client_history.history_info() == expected From b02e056c8e3e9eebf228e9a42bd26f6f072300d0 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 2 Nov 2023 17:23:29 +0100 Subject: [PATCH 16/24] Uplift numpy version restriction Signed-off-by: Johannes Mueller --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index d59f79ad..dd8e7993 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ python_requires = >=3.8 # new major versions. This works if the required packages follow Semantic Versioning. # For more information, check out https://semver.org/. install_requires = - numpy==1.23.5 + numpy>=1.23.5 scipy pandas>=1.4.0,!=2.1 h5py!=3.7.0 From 664b4de09026ca8f1e620aad9e9e1119fcfc456d Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Wed, 22 Nov 2023 09:03:04 +0100 Subject: [PATCH 17/24] Pin ipython version for testing https://github.com/ipython/ipython/issues/14235 Signed-off-by: Johannes Mueller --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index dd8e7993..18d97111 100644 --- a/setup.cfg +++ b/setup.cfg @@ -74,6 +74,7 @@ testing = testbook ipykernel ipywidgets + ipython<8.17.0 # https://github.com/ipython/ipython/issues/14235 docs = sphinx From 56150ff8e0c77253ef3ca0dbe4e8fdcabc57150d Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Wed, 22 Nov 2023 09:11:08 +0100 Subject: [PATCH 18/24] Remove PYTENSOR_FLAGS in test suite Signed-off-by: Johannes Mueller --- .github/workflows/pytest.yml | 1 - docs/conf.py | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 61c6be9c..0eeb5ac5 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -12,7 +12,6 @@ jobs: runs-on: ${{ matrix.os }} env: MPLBACKEND: svg - PYTENSOR_FLAGS: cxx="",exception_verbosity=high strategy: fail-fast: false matrix: diff --git a/docs/conf.py b/docs/conf.py index b68191a0..fa63ceed 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,7 +49,6 @@ # Don't try to use C-code for the pytensor stuff when building the docs. # Otherwise the demo notebooks fail on readthedocs -os.environ['PYTENSOR_FLAGS'] = 'cxx=""' os.environ['PYTHONWARNINGS'] = 'ignore' import asyncio From f9eb3f15d70945dde834884d8bac1ed68258dd94 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Wed, 22 Nov 2023 10:35:24 +0100 Subject: [PATCH 19/24] Add github action to build docs for testing purposes (#41) Signed-off-by: Johannes Mueller --- .github/workflows/docs.yml | 32 ++++++++++++++++++++++++++++++++ setup.cfg | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..03be2c8f --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,32 @@ +name: Documentation + +on: + pull_request: + push: + branches: + - master + - develop + +jobs: + build: + runs-on: ubuntu-latest + env: + MPLBACKEND: svg + PYDEVD_DISABLE_FILE_VALIDATION: 1 + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -U setuptools setuptools_scm wheel + pip install -e .[all,docs] + sudo apt-get install pandoc + - name: Build docs + run: sphinx-build -b html docs _build/html diff --git a/setup.cfg b/setup.cfg index 18d97111..61b98f61 100644 --- a/setup.cfg +++ b/setup.cfg @@ -87,6 +87,8 @@ docs = pyvista[all,jupyter] trame<3 ipywidgets + ipython<8.17.0 # https://github.com/ipython/ipython/issues/14235 + ipykernel xvfbwrapper From 42f123eb5802538827e42d17d611e9a7df7e3a21 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Dec 2023 09:41:54 +0100 Subject: [PATCH 20/24] Update installation instructions Signed-off-by: Johannes Mueller --- INSTALLATION.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/INSTALLATION.md b/INSTALLATION.md index bbdcc21f..6352fc3c 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -15,16 +15,17 @@ You need a python installation e.g. a virtual environment with `pip` a recent (brand new ones might not work) python versions installed. There are several ways to achieve that. -#### Using anaconda +#### Using miniconda or anaconda -Install anaconda or miniconda [http://anaconda.com] on your computer and create -a virtual environment with the package `pip` installed. See the [conda +Install [miniconda](https://conda.io/miniconda.html) or +[anaconda](http://anaconda.com) on your computer and create a virtual +environment with python installed. See the [conda documentation](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) on how to do that. The newly created environment must be activated. The following command lines should do it ``` -conda create -n pylife-env python=3.9 pip --yes +conda create -n pylife-env python=3.11 --yes conda activate pylife-env ``` @@ -50,7 +51,6 @@ That installs pyLife with all the dependencies to use pyLife in python programs. You might want to install some further packages like `jupyter` in order to work with jupyter notebooks. - There is no conda package as of now, unfortunately. @@ -75,7 +75,7 @@ Create an environment – usually a good idea to use a prefixed environment in your pyLife working directory and activate it. ``` -conda create -p .venv python=3.9 pip --yes +conda create -p .venv python=3.11 pip --yes conda activate ./.venv ``` From 468f30c80fb8a30aeb8076214b6ceb415cfc5bc4 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Dec 2023 12:19:09 +0100 Subject: [PATCH 21/24] Uplift numpy version pin for odbclient Signed-off-by: Johannes Mueller --- tools/odbclient/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/odbclient/setup.cfg b/tools/odbclient/setup.cfg index 3e41bd05..728ac6f1 100644 --- a/tools/odbclient/setup.cfg +++ b/tools/odbclient/setup.cfg @@ -42,7 +42,7 @@ package_dir = install_requires = importlib-metadata; python_version<"3.8" pandas - numpy==1.23.5 + numpy [options.packages.find] where = src From 89ca1fcff69f73e9eef34b7d2918ec41858046a8 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Dec 2023 12:19:23 +0100 Subject: [PATCH 22/24] Restrict pymc option to numpy<1.26 https://github.com/pymc-devs/pymc/issues/7043#issuecomment-1837141888 Signed-off-by: Johannes Mueller --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 61b98f61..4c376fb2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -98,11 +98,11 @@ analysis = tsfresh = tsfresh - numpy>=1.23 pymc = pymc bambi + numpy<1.26 # https://github.com/pymc-devs/pymc/issues/7043#issuecomment-1837141888 all = %(tsfresh)s %(pymc)s From 99de6b6351197a05afe41d1ab88515aa2cfe1baf Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Dec 2023 15:06:29 +0100 Subject: [PATCH 23/24] Fix some docs build details Signed-off-by: Johannes Mueller --- docs/3rd-party-licenses.md | 5 ----- docs/3rd-party-licenses.txt | 5 +++++ docs/conf.py | 8 +++++++- 3 files changed, 12 insertions(+), 6 deletions(-) delete mode 100644 docs/3rd-party-licenses.md create mode 100644 docs/3rd-party-licenses.txt diff --git a/docs/3rd-party-licenses.md b/docs/3rd-party-licenses.md deleted file mode 100644 index 5a39b9ae..00000000 --- a/docs/3rd-party-licenses.md +++ /dev/null @@ -1,5 +0,0 @@ -# 3rd Party Licenses - -```{literalinclude} ../3rd-party-licenses.txt -:language: text -``` diff --git a/docs/3rd-party-licenses.txt b/docs/3rd-party-licenses.txt new file mode 100644 index 00000000..2cb0ad01 --- /dev/null +++ b/docs/3rd-party-licenses.txt @@ -0,0 +1,5 @@ +3rd Party Licenses +================== + +.. literalinclude:: ../3rd-party-licenses.txt + :language: text diff --git a/docs/conf.py b/docs/conf.py index fa63ceed..686f15b1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,6 +28,8 @@ vdisplay = Xvfb() vdisplay.start() +os.environ['PYDEVD_DISABLE_FILE_VALIDATION'] = "1" + ipython_dir = os.path.join(__projectdir__, "_build", "ipythondir") os.environ['IPYTHONDIR'] = ipython_dir @@ -128,7 +130,11 @@ templates_path = ["_templates"] # The suffix of source filenames. -source_suffix = [".rst", ".md", ".txt", ".ipynb"] +source_suffix = { + '.rst': 'restructuredtext', + '.txt': 'restructuredtext', + '.md': 'markdown', +} # The encoding of source files. # source_encoding = 'utf-8-sig' From 7a7305a3aceb3f3c6f3a167af3809be178d8cde6 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Thu, 7 Dec 2023 15:15:13 +0100 Subject: [PATCH 24/24] Inject code to set pyvista backend into notebooks during docs build https://github.com/pyvista/pyvista/discussions/4809 Signed-off-by: Johannes Mueller --- docs/conf.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 686f15b1..ce3306e7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,6 +49,29 @@ ep.preprocess(nb, {'metadata': {'path': os.path.dirname(fn)}}) +# Inject code to set pyvista jupyter backend into relevant notebooks +# +import nbsphinx +original_from_notebook_node = nbsphinx.Exporter.from_notebook_node + +from nbconvert.preprocessors import Preprocessor + +def from_notebook_node(self, nb, resources, **kwargs): + + class InjectPyvistaBackendPreprocessor(Preprocessor): + def preprocess(self, nb, resources): + for index, cell in enumerate(nb.cells): + if cell['cell_type'] == 'code' and 'import pyvista as pv' in cell['source'] : + cell['source'] += "\npv.set_jupyter_backend('html')\n" + break + return nb, resources + + nb, resources = InjectPyvistaBackendPreprocessor().preprocess(nb, resources=resources) + return original_from_notebook_node(self, nb, resources, **kwargs) + +nbsphinx.Exporter.from_notebook_node = from_notebook_node + + # Don't try to use C-code for the pytensor stuff when building the docs. # Otherwise the demo notebooks fail on readthedocs os.environ['PYTHONWARNINGS'] = 'ignore'