From be66a41775ccb08e84bc35b2f31e2823bf83de2c Mon Sep 17 00:00:00 2001 From: krande Date: Tue, 26 Oct 2021 18:12:45 +0200 Subject: [PATCH] fix formatting and succesfully assigned correct element surfaces for test_surfaces.py. Now it must be understood and implemented --- src/ada/core/tools.py | 12 ++++++++++-- src/ada/fem/formats/code_aster/writer.py | 3 ++- src/ada/fem/sets.py | 2 +- tests/fem/test_surfaces.py | 13 +++++++++---- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/ada/core/tools.py b/src/ada/core/tools.py index a9987fe86..5e599b133 100644 --- a/src/ada/core/tools.py +++ b/src/ada/core/tools.py @@ -7,6 +7,7 @@ IFCCONVERT = Settings.tools_dir / "IfcConvert" / "IfcConvert.exe" CODE_ASTER = Settings.tools_dir / "code_aster" CALCULIX = Settings.tools_dir / "calculix" +PREPROMAX = Settings.tools_dir / "prepromax" def download_tool(url, download_path): @@ -56,6 +57,13 @@ def download_calculix_win(install_path=CALCULIX, calculix_cae_version="v0.8.0/ca download_tool(url, download_path) +def download_prepromax_win(install_path=PREPROMAX): + download_path = install_path / "prepromax.zip" + url = "https://prepomax.fs.um.si/Files/Downloads/PrePoMax%20v1.1.1.zip" + download_tool(url, download_path) + + if __name__ == "__main__": - download_calculix_win() - download_code_aster_win() + # download_calculix_win() + # download_code_aster_win() + download_prepromax_win() diff --git a/src/ada/fem/formats/code_aster/writer.py b/src/ada/fem/formats/code_aster/writer.py index acba0a24b..550b306ad 100644 --- a/src/ada/fem/formats/code_aster/writer.py +++ b/src/ada/fem/formats/code_aster/writer.py @@ -12,11 +12,12 @@ from ada.fem.containers import FemSections from ada.fem.shapes import ElemShapeTypes from ada.fem.utils import is_quad8_shell_elem, is_tri6_shell_elem + +from ..utils import get_fem_model_from_assembly from .common import abaqus_to_med_type from .compatibility import check_compatibility from .templates import el_convert_str, main_comm_str from .write_loads import write_load -from ..utils import get_fem_model_from_assembly def to_fem(assembly: Assembly, name, analysis_dir, metadata=None): diff --git a/src/ada/fem/sets.py b/src/ada/fem/sets.py index 187adb138..d457f6325 100644 --- a/src/ada/fem/sets.py +++ b/src/ada/fem/sets.py @@ -27,7 +27,7 @@ class FemSet(FemBase): TYPES = SetTypes - def __init__(self, name, members, set_type=None, metadata=None, parent=None): + def __init__(self, name, members: Union[None, List[Union[Elem, Node]]], set_type=None, metadata=None, parent=None): super().__init__(name, metadata, parent) if set_type is None: set_type = eval_set_type_from_members(members) diff --git a/tests/fem/test_surfaces.py b/tests/fem/test_surfaces.py index c73e38a57..8a0c6a43b 100644 --- a/tests/fem/test_surfaces.py +++ b/tests/fem/test_surfaces.py @@ -37,16 +37,22 @@ def test_surface_box(): face_seq_indices[el] = i if has_parallel_face is True: - elements.append(el) + if el not in elements: + elements.append(el) # el_sets: List[ada.fem.FemSet] = [] # for el, face_seq_ref in face_seq_indices.items(): # side_name = f"S{face_seq_ref}" # # el_sets.append(fs_elem) - fs_elem = p.fem.add_set(ada.fem.FemSet("FrontElements", elements)) + fs_elem_1 = p.fem.add_set(ada.fem.FemSet("_FrontElements_S1", [elements[0]])) + fs_elem_2 = p.fem.add_set(ada.fem.FemSet("_FrontElements_S2", [elements[1]])) + + surface = p.fem.add_surface( + ada.fem.Surface("FrontSurfaceElem_1", ada.fem.Surface.TYPES.ELEMENT, fs_elem_1, face_id_label="S2") + ) surface = p.fem.add_surface( - ada.fem.Surface("FrontSurfaceElem", ada.fem.Surface.TYPES.ELEMENT, fs_elem, face_id_label="S2") + ada.fem.Surface("FrontSurfaceElem_2", ada.fem.Surface.TYPES.ELEMENT, fs_elem_2, face_id_label="S4") ) step.add_load(ada.fem.LoadPressure("MyPressureLoad", 200, surface)) print(box) @@ -56,4 +62,3 @@ def test_surface_box(): a.to_fem("MyFemBox_ca", "code_aster", overwrite=True) # TODO: Specify surfaces on elements on the East and North side of this box and assign pressure and surface traction - # (or shear if you will)