diff --git a/examples/010_harmonic_example.py b/examples/010_harmonic_example.py index 43f351756..7cc86b09e 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -50,7 +50,7 @@ import matplotlib.pyplot as plt from ansys.dpf.composites.composite_model import CompositeModel -from ansys.dpf.composites.constants import FailureOutput +from ansys.dpf.composites.constants import FAILURE_LABEL, FailureOutput from ansys.dpf.composites.example_helper import get_continuous_fiber_example_files from ansys.dpf.composites.failure_criteria import ( CombinedFailureCriterion, @@ -119,7 +119,6 @@ # This is a bit confusing, but DPF uses the same label for Frequency and Time FREQ_LABEL = "time" PHASE_LABEL = "phase" -FAILURE_LABEL = "failure_label" all_phases_and_freqs_failure_value_fc = dpf.FieldsContainer() all_phases_and_freqs_failure_value_fc.labels = [FREQ_LABEL, PHASE_LABEL] diff --git a/src/ansys/dpf/composites/layup_info/_layup_info.py b/src/ansys/dpf/composites/layup_info/_layup_info.py index de7399449..44bf6b5b3 100644 --- a/src/ansys/dpf/composites/layup_info/_layup_info.py +++ b/src/ansys/dpf/composites/layup_info/_layup_info.py @@ -324,14 +324,30 @@ def get_analysis_ply_index_to_name_map( ---------- mesh DPF Meshed region enriched with lay-up information + + .. note:: + + Analysis plies of ACP's imported solid model that are linked only + to homogeneous elements are currently skipped. """ analysis_ply_name_to_index_map = {} with mesh.property_field("layer_to_analysis_ply").as_local_field() as local_field: + element_ids = local_field.scoping.ids for analysis_ply_name in get_all_analysis_ply_names(mesh): analysis_ply_property_field = _get_analysis_ply( mesh, analysis_ply_name, skip_check=True ) first_element_id = analysis_ply_property_field.scoping.id(0) + # analysis plies which represent a filler ply are ignored because + # they are linked to homogeneous elements only. So, they are not + # part of layer_to_analysis_ply. This filler plies can occur in + # imported solid models. + # The analysis ply indices can be retrieved from + # analysis_ply_property_field as soon as the + # properties of PropertyField are available in Python. + if first_element_id not in element_ids: + continue + analysis_ply_indices: list[int] = local_field.get_entity_data_by_id(first_element_id) layer_index = analysis_ply_property_field.get_entity_data(0)[0] diff --git a/src/ansys/dpf/composites/server_helpers/_versions.py b/src/ansys/dpf/composites/server_helpers/_versions.py index 2350535b1..c8f325756 100644 --- a/src/ansys/dpf/composites/server_helpers/_versions.py +++ b/src/ansys/dpf/composites/server_helpers/_versions.py @@ -53,7 +53,7 @@ class _DpfVersionInfo: "9.0": _DpfVersionInfo( "9.0", "2025 R1 pre 0", - "DPF Composites: exposure of ply type.", + "DPF Composites: exposure of ply type and support of imported solid models.", ), } diff --git a/tests/composite_model_scoping_test.py b/tests/composite_model_scoping_test.py index b1a5ff6d2..8e4f3bbf9 100644 --- a/tests/composite_model_scoping_test.py +++ b/tests/composite_model_scoping_test.py @@ -26,7 +26,7 @@ import pytest from ansys.dpf.composites.composite_model import CompositeModel, CompositeScope -from ansys.dpf.composites.constants import FailureOutput +from ansys.dpf.composites.constants import FAILURE_LABEL, FailureOutput from ansys.dpf.composites.data_sources import get_composite_files_from_workbench_result_folder from ansys.dpf.composites.failure_criteria import ( CombinedFailureCriterion, @@ -35,7 +35,7 @@ MaxStressCriterion, ) from ansys.dpf.composites.layup_info import get_all_analysis_ply_names -from ansys.dpf.composites.server_helpers._versions import version_older_than +from ansys.dpf.composites.server_helpers._versions import version_equal_or_later, version_older_than from .helper import get_basic_shell_files @@ -49,13 +49,13 @@ def test_composite_model_element_scope(dpf_server, data_files): composite_scope = CompositeScope(elements=[1, 3]) failure_container = composite_model.evaluate_failure_criteria(cfc, composite_scope) - irfs = failure_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) + irfs = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) min_id = irfs.scoping.ids[np.argmin(irfs.data)] max_id = irfs.scoping.ids[np.argmax(irfs.data)] composite_scope = CompositeScope(elements=[min_id, max_id]) max_container = composite_model.evaluate_failure_criteria(cfc, composite_scope) - max_irfs = max_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) + max_irfs = max_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) assert len(max_irfs.data) == 2 assert max_irfs.get_entity_data_by_id(min_id)[0] == pytest.approx(min(irfs.data), 1e-8) assert max_irfs.get_entity_data_by_id(max_id)[0] == pytest.approx(max(irfs.data), 1e-8) @@ -78,7 +78,7 @@ def test_composite_model_named_selection_scope(dpf_server, data_files, distribut scope = CompositeScope(named_selections=[ns_name]) failure_container = composite_model.evaluate_failure_criteria(cfc, scope) - irfs = failure_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) + irfs = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) assert len(irfs.data) == 2 assert irfs.get_entity_data_by_id(2) == pytest.approx(1.4792790331384016, 1e-8) assert irfs.get_entity_data_by_id(3) == pytest.approx(1.3673715033617213, 1e-8) @@ -118,8 +118,8 @@ def test_composite_model_ply_scope(dpf_server): scope = CompositeScope(plies=ply_ids) failure_container = composite_model.evaluate_failure_criteria(cfc, scope) - irfs = failure_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) - modes = failure_container.get_field({"failure_label": FailureOutput.FAILURE_MODE}) + irfs = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) + modes = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_MODE}) if version_older_than(dpf_server, "7.0"): # the old implementation did not allow to distinguish between plies of the different parts. @@ -194,8 +194,8 @@ def test_composite_model_named_selection_and_ply_scope(dpf_server, data_files, d scope = CompositeScope(named_selections=[ns_name], plies=ply_ids) failure_container = composite_model.evaluate_failure_criteria(cfc, scope) - irfs = failure_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) - modes = failure_container.get_field({"failure_label": FailureOutput.FAILURE_MODE}) + irfs = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) + modes = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_MODE}) assert len(irfs.data) == 2 assert len(modes.data) == 2 expected_irfs_by_id = {2: 0.49282684, 3: 0.32568454} @@ -230,6 +230,53 @@ def test_composite_model_time_scope(dpf_server): for time, expected_max_irf in time_id_and_expected_max_irf.items(): scope = CompositeScope(time=time) failure_container = composite_model.evaluate_failure_criteria(cfc, scope) - irfs = failure_container.get_field({"failure_label": FailureOutput.FAILURE_VALUE}) + irfs = failure_container.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) assert len(irfs.data) == 4 assert max(irfs.data) == pytest.approx(expected_max_irf, abs=1e-6) + + +def test_ply_wise_scoping_in_assembly_with_imported_solid_model(dpf_server): + """Ensure that the ply-wise scoping works in combination with the reference surface plot.""" + if version_older_than(dpf_server, "8.0"): + pytest.xfail("Not supported because of limitations in the handling of assemblies.") + + result_folder = pathlib.Path(__file__).parent / "data" / "assembly_imported_solid_model" + composite_files = get_composite_files_from_workbench_result_folder(result_folder) + + # Create a composite model + composite_model = CompositeModel(composite_files, dpf_server) + + plies = [ + "Setup 2_shell::P1L1__ModelingPly.2", + "Setup_solid::P1L1__ModelingPly.2", + "Setup 3_solid::P1L1__ModelingPly.1", + ] + + # Evaluate combined failure criterion + combined_failure_criterion = CombinedFailureCriterion(failure_criteria=[MaxStressCriterion()]) + failure_result = composite_model.evaluate_failure_criteria( + combined_criterion=combined_failure_criterion, composite_scope=CompositeScope(plies=plies) + ) + + # check the on reference surface data + for failure_output in [ + FailureOutput.FAILURE_VALUE_REF_SURFACE, + FailureOutput.FAILURE_MODE_REF_SURFACE, + FailureOutput.MAX_GLOBAL_LAYER_IN_STACK, + FailureOutput.MAX_LOCAL_LAYER_IN_ELEMENT, + FailureOutput.MAX_SOLID_ELEMENT_ID, + ]: + field = failure_result.get_field({FAILURE_LABEL: failure_output}) + + if version_equal_or_later(dpf_server, "9.0"): + assert field.size == 21 + elif version_equal_or_later(dpf_server, "8.0"): + # Servers of the 2024 R2 series do not extract the reference surface + # of imported solid models. So the reference surface mesh + # contains only the shell elements and reference surface of the + # standard solid model. + assert field.size == 12 + else: + # Servers before 8.0 are not tested because of several limitations: + # handling of assemblies, reference surface not supported + assert False diff --git a/tests/composite_model_test.py b/tests/composite_model_test.py index fe759f21d..1a858c1ad 100644 --- a/tests/composite_model_test.py +++ b/tests/composite_model_test.py @@ -40,6 +40,7 @@ from ansys.dpf.composites.layup_info import ( LayerProperty, LayupModelContextType, + get_all_analysis_ply_names, get_analysis_ply_index_to_name_map, ) from ansys.dpf.composites.layup_info.material_properties import MaterialMetadata, MaterialProperty @@ -539,3 +540,72 @@ def test_failure_criteria_evaluation_default_unit_system(dpf_server): cfc = CombinedFailureCriterion("max stress", failure_criteria=[MaxStressCriterion()]) failure_container = composite_model.evaluate_failure_criteria(cfc) + + +def test_composite_model_with_imported_solid_model_assembly(dpf_server): + """ + Tests the show on reference surface option for imported solid models. + + Imported solid models are slightly different if compared with shell parts + and standard solid models. For instance, they have analysis plies which are + not linked to a layered elements. These are called filler plies. + + In addition, the `show on reference surface` option uses the skin of the + imported solid mesh instead of a predefined reference surface. + This general test ensures that the composite model can handle these. + + The model has one shell part, one standard solid model and + an imported solid model. + """ + result_folder = pathlib.Path(__file__).parent / "data" / "assembly_imported_solid_model" + composite_files = get_composite_files_from_workbench_result_folder(result_folder) + + # Create a composite model + composite_model = CompositeModel(composite_files, dpf_server) + + # ensure that all analysis plies are available, also the filler plies + # The initial version of DPF Composites had limitations in the handling + # of assemblies and so the test is skipped for old versions of the server. + if version_equal_or_later(dpf_server, "7.0"): + analysis_plies = get_all_analysis_ply_names(composite_model.get_mesh()) + ref_plies = [ + "Setup 2_shell::P1L1__ModelingPly.2", + "Setup_solid::P1L1__ModelingPly.2", + "Setup 3_solid::P1L1__ModelingPly.1", + "Setup 3_solid::P1L1__ModelingPly.3", + "Setup 3_solid::filler_Epoxy Carbon Woven (230 GPa) Prepreg", + "Setup 3_solid::P1L1__ModelingPly.2", + "Setup 2_shell::P1L1__ModelingPly.1", + "Setup_solid::P1L1__ModelingPly.1", + ] + assert set(analysis_plies) == set(ref_plies) + + # Evaluate combined failure criterion + combined_failure_criterion = CombinedFailureCriterion(failure_criteria=[MaxStressCriterion()]) + failure_result = composite_model.evaluate_failure_criteria(combined_failure_criterion) + + irf_field = failure_result.get_field({FAILURE_LABEL: FailureOutput.FAILURE_VALUE}) + assert irf_field.size == 84 + + # check the on reference surface data + for failure_output in [ + FailureOutput.FAILURE_VALUE_REF_SURFACE, + FailureOutput.FAILURE_MODE_REF_SURFACE, + FailureOutput.MAX_GLOBAL_LAYER_IN_STACK, + FailureOutput.MAX_LOCAL_LAYER_IN_ELEMENT, + FailureOutput.MAX_SOLID_ELEMENT_ID, + ]: + field = failure_result.get_field({FAILURE_LABEL: failure_output}) + if version_equal_or_later(dpf_server, "9.0"): + assert field.size == 60 + elif version_equal_or_later(dpf_server, "8.0"): + # Servers of the 2024 R2 series do not extract the reference surface + # of imported solid models. So the reference surface mesh + # contains only the shell elements and reference surface of the + # standard solid model. + assert field.size == 18 + else: + # Server of 2024 R1 and before do not support results on the reference + # surface at all. It is tested that the operator update + # completes without error nevertheless. + pass diff --git a/tests/data/assembly_imported_solid_model/MatML.xml b/tests/data/assembly_imported_solid_model/MatML.xml new file mode 100644 index 000000000..b647a723c --- /dev/null +++ b/tests/data/assembly_imported_solid_model/MatML.xml @@ -0,0 +1,2307 @@ + + + + + + + + + Epoxy Carbon UD (230 GPa) Prepreg 2 + Typical uni-directional carbon prepreg with 230 GPa fibers (Vf=~0.52) + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 1490 + Dependent + Density + + + + - + ACP + Regular + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 121000000000 + Dependent + Young's Modulus X direction + + + 8600000000 + Dependent + Young's Modulus Y direction + + + 8600000000 + Dependent + Young's Modulus Z direction + + + 0.27 + Dependent + Poisson's Ratio XY + + + 0.4 + Dependent + Poisson's Ratio YZ + + + 0.27 + Dependent + Poisson's Ratio XZ + + + 4700000000 + Dependent + Shear Modulus XY + + + 3100000000 + Dependent + Shear Modulus YZ + + + 4700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.0167 + Dependent + Tensile X direction + + + 0.0032 + Dependent + Tensile Y direction + + + 0.0032 + Dependent + Tensile Z direction + + + -0.0108 + Dependent + Compressive X direction + + + -0.0192 + Dependent + Compressive Y direction + + + -0.0192 + Dependent + Compressive Z direction + + + 0.012 + Dependent + Shear XY + + + 0.011 + Dependent + Shear YZ + + + 0.012 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 2231000000 + Dependent + Tensile X direction + + + 29000000 + Dependent + Tensile Y direction + + + 29000000 + Dependent + Tensile Z direction + + + -1082000000 + Dependent + Compressive X direction + + + -100000000 + Dependent + Compressive Y direction + + + -100000000 + Dependent + Compressive Z direction + + + 60000000 + Dependent + Shear XY + + + 32000000 + Dependent + Shear YZ + + + 60000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + -4.7e-07 + Dependent + Coefficient of Thermal Expansion X direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Y direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Carbon + Temperature + Puck Constants + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.3 + Dependent + Compressive Inclination XZ + + + 0.25 + Dependent + Compressive Inclination YZ + + + 0.35 + Dependent + Tensile Inclination XZ + + + 0.25 + Dependent + Tensile Inclination YZ + + + + - + Additional Puck Constants + + 0.8 + Dependent + Interface Weakening Factor + + + 0.5 + Dependent + Degradation Parameter s + + + 0.5 + Dependent + Degradation Parameter M + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + 1e13d252-a12f-4e8a-b365-1006cc1735f6 + Material Unique Id + False + + + - + Color + + 222 + Dependent + Red + + + 222 + Dependent + Green + + + 222 + Dependent + Blue + + + Appearance + + + + + + + Epoxy Carbon Woven (230 GPa) Prepreg + Typical woven carbon prepreg with 230 GPa fibers (Vf=~0.47) + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 1420 + Dependent + Density + + + + - + ACP + Woven + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 61340000000 + Dependent + Young's Modulus X direction + + + 61340000000 + Dependent + Young's Modulus Y direction + + + 6900000000 + Dependent + Young's Modulus Z direction + + + 0.04 + Dependent + Poisson's Ratio XY + + + 0.3 + Dependent + Poisson's Ratio YZ + + + 0.3 + Dependent + Poisson's Ratio XZ + + + 3300000000 + Dependent + Shear Modulus XY + + + 2700000000 + Dependent + Shear Modulus YZ + + + 2700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.0126 + Dependent + Tensile X direction + + + 0.0126 + Dependent + Tensile Y direction + + + 0.008 + Dependent + Tensile Z direction + + + -0.0102 + Dependent + Compressive X direction + + + -0.0102 + Dependent + Compressive Y direction + + + -0.012 + Dependent + Compressive Z direction + + + 0.022 + Dependent + Shear XY + + + 0.019 + Dependent + Shear YZ + + + 0.019 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 805000000 + Dependent + Tensile X direction + + + 805000000 + Dependent + Tensile Y direction + + + 50000000 + Dependent + Tensile Z direction + + + -509000000 + Dependent + Compressive X direction + + + -509000000 + Dependent + Compressive Y direction + + + -170000000 + Dependent + Compressive Z direction + + + 125000000 + Dependent + Shear XY + + + 65000000 + Dependent + Shear YZ + + + 65000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 2.2e-06 + Dependent + Coefficient of Thermal Expansion X direction + + + 2.2e-06 + Dependent + Coefficient of Thermal Expansion Y direction + + + 1e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + 40e45e24-f3f3-423e-a09b-63b99e1e9dde + Material Unique Id + False + + + - + Color + + 235 + Dependent + Red + + + 209 + Dependent + Green + + + 184 + Dependent + Blue + + + Appearance + + + + + + + Epoxy Carbon UD (230 GPa) Prepreg 3 + Typical uni-directional carbon prepreg with 230 GPa fibers (Vf=~0.52) + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 1490 + Dependent + Density + + + + - + ACP + Regular + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 121000000000 + Dependent + Young's Modulus X direction + + + 8600000000 + Dependent + Young's Modulus Y direction + + + 8600000000 + Dependent + Young's Modulus Z direction + + + 0.27 + Dependent + Poisson's Ratio XY + + + 0.4 + Dependent + Poisson's Ratio YZ + + + 0.27 + Dependent + Poisson's Ratio XZ + + + 4700000000 + Dependent + Shear Modulus XY + + + 3100000000 + Dependent + Shear Modulus YZ + + + 4700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.0167 + Dependent + Tensile X direction + + + 0.0032 + Dependent + Tensile Y direction + + + 0.0032 + Dependent + Tensile Z direction + + + -0.0108 + Dependent + Compressive X direction + + + -0.0192 + Dependent + Compressive Y direction + + + -0.0192 + Dependent + Compressive Z direction + + + 0.012 + Dependent + Shear XY + + + 0.011 + Dependent + Shear YZ + + + 0.012 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 2231000000 + Dependent + Tensile X direction + + + 29000000 + Dependent + Tensile Y direction + + + 29000000 + Dependent + Tensile Z direction + + + -1082000000 + Dependent + Compressive X direction + + + -100000000 + Dependent + Compressive Y direction + + + -100000000 + Dependent + Compressive Z direction + + + 60000000 + Dependent + Shear XY + + + 32000000 + Dependent + Shear YZ + + + 60000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + -4.7e-07 + Dependent + Coefficient of Thermal Expansion X direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Y direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Carbon + Temperature + Puck Constants + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.3 + Dependent + Compressive Inclination XZ + + + 0.25 + Dependent + Compressive Inclination YZ + + + 0.35 + Dependent + Tensile Inclination XZ + + + 0.25 + Dependent + Tensile Inclination YZ + + + + - + Additional Puck Constants + + 0.8 + Dependent + Interface Weakening Factor + + + 0.5 + Dependent + Degradation Parameter s + + + 0.5 + Dependent + Degradation Parameter M + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + 4a844d39-859c-4eb6-8f7b-1bf52716384e + Material Unique Id + False + + + - + Color + + 222 + Dependent + Red + + + 222 + Dependent + Green + + + 222 + Dependent + Blue + + + Appearance + + + + + + + Structural Steel + Fatigue Data at zero mean stress comes from 1998 ASME BPV Code, Section 8, Div 2, Table 5-110.1 + + Alloy + + + - + Color + + 132 + Dependent + Red + + + 139 + Dependent + Green + + + 179 + Dependent + Blue + + + Appearance + + + + - + Compressive Ultimate Strength + + 0 + Dependent + Compressive Ultimate Strength + + + + - + Compressive Yield Strength + + 250000000 + Dependent + Compressive Yield Strength + + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 7850 + Dependent + Density + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + 31.5 + 10.5 + C + + + + - + Tensile Yield Strength + + 250000000 + Dependent + Tensile Yield Strength + + + + - + Tensile Ultimate Strength + + 460000000 + Dependent + Tensile Ultimate Strength + + + + - + Secant + Isotropic + Temperature + Isotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 1.2e-05 + Dependent + Coefficient of Thermal Expansion + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + 31.5 + 10.5 + C + + + + - + Secant + Isotropic + Isotropic Zero-Thermal-Strain Reference Temperature Secant + + 22 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Constant Pressure + Temperature + Cᵨ + Specific Heat Constant Pressure + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 434 + Dependent + Specific Heat + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + 31.5 + 10.5 + C + + + + - + Isotropic + Temperature + Isotropic Thermal Conductivity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 60.5 + Dependent + Thermal Conductivity + + + 21 + Independent + Temperature + Temperature + 22 + 31.5 + 10.5 + C + + + + - + Log-Log + Mean Stress + S-N Curve + + 3999000000,2827000000,1896000000,1413000000,1069000000,441000000,262000000,214000000,138000000,114000000,86200000 + Dependent,Dependent,Dependent,Dependent,Dependent,Dependent,Dependent,Dependent,Dependent,Dependent,Dependent + Alternating Stress + + + 10,20,50,100,200,2000,10000,20000,100000,200000,1000000 + Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent + Cycles + + + 0,0,0,0,0,0,0,0,0,0,0 + Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent,Independent + Mean Stress + Mean Stress + 0 + 0.5 + -0.5 + Pa + + + + - + Strain-Life + Strain-Life Parameters + + 920000000 + Dependent + Strength Coefficient + + + -0.106 + Dependent + Strength Exponent + + + 0.213 + Dependent + Ductility Coefficient + + + -0.47 + Dependent + Ductility Exponent + + + 1000000000 + Dependent + Cyclic Strength Coefficient + + + 0.2 + Dependent + Cyclic Strain Hardening Exponent + + + + - + Isotropic + Isotropic Resistivity + + 1.7e-07 + Dependent + Resistivity + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + Isotropic + Young's Modulus and Poisson's Ratio + Temperature + Isotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 200000000000 + Dependent + Young's Modulus + + + 0.3 + Dependent + Poisson's Ratio + + + 166666666666.667 + Dependent + Bulk Modulus + + + 76923076923.0769 + Dependent + Shear Modulus + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + 31.5 + 10.5 + C + + + + - + Isotropic + Isotropic Relative Permeability + + 10000 + Dependent + Relative Permeability + + + + - + 59002a79-71c2-428e-906b-55d7dbee100e + Material Unique Id + False + + + - + Temperature:TEMP + Mean Stress: + Field Variable + + + + + + Epoxy Carbon UD (230 GPa) Prepreg + Typical uni-directional carbon prepreg with 230 GPa fibers (Vf=~0.52) + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 1490 + Dependent + Density + + + + - + ACP + Regular + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 121000000000 + Dependent + Young's Modulus X direction + + + 8600000000 + Dependent + Young's Modulus Y direction + + + 8600000000 + Dependent + Young's Modulus Z direction + + + 0.27 + Dependent + Poisson's Ratio XY + + + 0.4 + Dependent + Poisson's Ratio YZ + + + 0.27 + Dependent + Poisson's Ratio XZ + + + 4700000000 + Dependent + Shear Modulus XY + + + 3100000000 + Dependent + Shear Modulus YZ + + + 4700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.0167 + Dependent + Tensile X direction + + + 0.0032 + Dependent + Tensile Y direction + + + 0.0032 + Dependent + Tensile Z direction + + + -0.0108 + Dependent + Compressive X direction + + + -0.0192 + Dependent + Compressive Y direction + + + -0.0192 + Dependent + Compressive Z direction + + + 0.012 + Dependent + Shear XY + + + 0.011 + Dependent + Shear YZ + + + 0.012 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 2231000000 + Dependent + Tensile X direction + + + 29000000 + Dependent + Tensile Y direction + + + 29000000 + Dependent + Tensile Z direction + + + -1082000000 + Dependent + Compressive X direction + + + -100000000 + Dependent + Compressive Y direction + + + -100000000 + Dependent + Compressive Z direction + + + 60000000 + Dependent + Shear XY + + + 32000000 + Dependent + Shear YZ + + + 60000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + -4.7e-07 + Dependent + Coefficient of Thermal Expansion X direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Y direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Carbon + Temperature + Puck Constants + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + Interpolation Options + + + 0.3 + Dependent + Compressive Inclination XZ + + + 0.25 + Dependent + Compressive Inclination YZ + + + 0.35 + Dependent + Tensile Inclination XZ + + + 0.25 + Dependent + Tensile Inclination YZ + + + + - + Additional Puck Constants + + 0.8 + Dependent + Interface Weakening Factor + + + 0.5 + Dependent + Degradation Parameter s + + + 0.5 + Dependent + Degradation Parameter M + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + e236c55c-e4b2-423c-8262-2cbd5ec4377b + Material Unique Id + False + + + - + Color + + 222 + Dependent + Red + + + 222 + Dependent + Green + + + 222 + Dependent + Blue + + + Appearance + + + + + + + Options Variable + + + + Density + + + kg + + + m + + + + + Young's Modulus X direction + + + Pa + + + + + Young's Modulus Y direction + + + Pa + + + + + Young's Modulus Z direction + + + Pa + + + + + Poisson's Ratio XY + + + + Poisson's Ratio YZ + + + + Poisson's Ratio XZ + + + + Shear Modulus XY + + + Pa + + + + + Shear Modulus YZ + + + Pa + + + + + Shear Modulus XZ + + + Pa + + + + + Tensile X direction + + + + Tensile Y direction + + + + Tensile Z direction + + + + Compressive X direction + + + + Compressive Y direction + + + + Compressive Z direction + + + + Shear XY + + + + Shear YZ + + + + Shear XZ + + + + Tensile X direction + + + Pa + + + + + Tensile Y direction + + + Pa + + + + + Tensile Z direction + + + Pa + + + + + Compressive X direction + + + Pa + + + + + Compressive Y direction + + + Pa + + + + + Compressive Z direction + + + Pa + + + + + Shear XY + + + Pa + + + + + Shear YZ + + + Pa + + + + + Shear XZ + + + Pa + + + + + Coefficient of Thermal Expansion X direction + + + C + + + + + Coefficient of Thermal Expansion Z direction + + + C + + + + + Zero-Thermal-Strain Reference Temperature + + + C + + + + + Compressive Inclination XZ + + + + Compressive Inclination YZ + + + + Tensile Inclination XZ + + + + Tensile Inclination YZ + + + + Interface Weakening Factor + + + + Degradation Parameter s + + + + Degradation Parameter M + + + + Coupling Coefficient XY + + + + Coupling Coefficient YZ + + + + Coupling Coefficient XZ + + + + Coefficient of Thermal Expansion Y direction + + + C + + + + + Red + + + + Green + + + + Blue + + + + Material Property + + + + Compressive Ultimate Strength + + + Pa + + + + + Compressive Yield Strength + + + Pa + + + + + Temperature + + + C + + + + + Tensile Yield Strength + + + Pa + + + + + Tensile Ultimate Strength + + + Pa + + + + + Coefficient of Thermal Expansion + + + C + + + + + Specific Heat + + + J + + + kg + + + C + + + + + Thermal Conductivity + + + W + + + m + + + C + + + + + Alternating Stress + + + Pa + + + + + Cycles + + + + Mean Stress + + + Pa + + + + + Strength Coefficient + + + Pa + + + + + Strength Exponent + + + + Ductility Coefficient + + + + Ductility Exponent + + + + Cyclic Strength Coefficient + + + Pa + + + + + Cyclic Strain Hardening Exponent + + + + Resistivity + + + kg + + + m + + + A + + + s + + + + + Young's Modulus + + + Pa + + + + + Poisson's Ratio + + + + Bulk Modulus + + + Pa + + + + + Shear Modulus + + + Pa + + + + + Relative Permeability + + + + + Density + + + + Ply Type + + + + Elasticity + + + + Strain Limits + + + + Stress Limits + + + + Color + + + + Coefficient of Thermal Expansion + + + + Compressive Ultimate Strength + + + + Compressive Yield Strength + + + + Zero-Thermal-Strain Reference Temperature + + + + Puck Constants + + + + Tensile Yield Strength + + + + Additional Puck Constants + + + + Tensile Ultimate Strength + + + + Tsai-Wu Constants + + + + Material Unique Id + + + + Specific Heat + + + + Thermal Conductivity + + + + S-N Curve + + + + Strain-Life Parameters + + + + Resistivity + + + + Relative Permeability + + + + Field Variable + + + + + + + + Epoxy Carbon UD (230 GPa) Prepreg 2 + 599575a6-1328-41ff-b738-58fec3ae3942 + d98859fe-d885-4691-8033-35551fe727d5,, + + + Epoxy Carbon Woven (230 GPa) Prepreg + 83414de9-d769-430d-a9d5-70ebf24b6188 + + + + + Epoxy Carbon UD (230 GPa) Prepreg 3 + de3db3b0-1be6-4fbb-87b9-6e0927b687c8 + d98859fe-d885-4691-8033-35551fe727d5,,599575a6-1328-41ff-b738-58fec3ae3942,, + + + Structural Steel + 84eb1c59-bb92-4906-b2fb-2a2e6e6a848d + + + + + Epoxy Carbon UD (230 GPa) Prepreg + d98859fe-d885-4691-8033-35551fe727d5 + + + + + + \ No newline at end of file diff --git a/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.h5 b/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.h5 new file mode 100644 index 000000000..8473b0366 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.h5 differ diff --git a/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.mapping b/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.mapping new file mode 100644 index 000000000..058d4a2e1 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup 2/ACPCompositeDefinitions.mapping differ diff --git a/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.h5 b/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.h5 new file mode 100644 index 000000000..e10c9fa31 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.h5 differ diff --git a/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.mapping b/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.mapping new file mode 100644 index 000000000..c55bb7eb2 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup 3/ACPSolidModel_ImportedSolidModel 1.mapping differ diff --git a/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.h5 b/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.h5 new file mode 100644 index 000000000..2ccf6f752 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.h5 differ diff --git a/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.mapping b/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.mapping new file mode 100644 index 000000000..80eeabe43 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/Setup/ACPSolidModel_SolidModel.1.mapping differ diff --git a/tests/data/assembly_imported_solid_model/file.rst b/tests/data/assembly_imported_solid_model/file.rst new file mode 100644 index 000000000..db3a1d33e Binary files /dev/null and b/tests/data/assembly_imported_solid_model/file.rst differ diff --git a/tests/data/assembly_imported_solid_model/solid_on_ref_surface_plot_assembly.wbpz b/tests/data/assembly_imported_solid_model/solid_on_ref_surface_plot_assembly.wbpz new file mode 100644 index 000000000..93949b7a8 Binary files /dev/null and b/tests/data/assembly_imported_solid_model/solid_on_ref_surface_plot_assembly.wbpz differ