├── .binder ├── Dockerfile └── start ├── .clang-format ├── .gitattributes ├── .github ├── actions │ ├── build_arbrox_geometric_search │ │ └── action.yml │ ├── code_check │ │ └── action.yml │ ├── coverage │ │ ├── action.yml │ │ └── coverage_badge_index.html │ ├── run_tests │ │ └── action.yml │ ├── setup_cubit │ │ └── action.yml │ └── setup_virtual_python_environment │ │ └── action.yml └── workflows │ ├── build_binder.yml │ ├── check_code.yml │ ├── documentation.yml │ ├── testing.yml │ ├── testing_protected.yml │ └── website.yml ├── .gitignore ├── .gitmodules ├── .pre-commit-config.yaml ├── .typos.toml ├── CITATION.cff ├── LICENSE ├── README.md ├── doc ├── assets │ ├── composite_plate.png │ ├── honeycomb.png │ ├── pressure_pipe.png │ └── twisted_plate.png └── badges │ ├── documentation.svg │ ├── pre-commit.svg │ ├── ruff-formatter.svg │ ├── ruff-linter.svg │ ├── testing_linux_ubuntu.svg │ ├── testing_macos.svg │ ├── testing_windows.svg │ └── website.svg ├── examples ├── example_1_finite_rotations.ipynb ├── example_2_core_mesh_generation_functions.ipynb └── utils │ ├── example_1_utils.py │ └── general_utils.py ├── pyproject.toml ├── setup.py ├── src └── beamme │ ├── __init__.py │ ├── abaqus │ ├── __init__.py │ ├── beam.py │ ├── input_file.py │ └── material.py │ ├── core │ ├── __init__.py │ ├── base_mesh_item.py │ ├── boundary_condition.py │ ├── conf.py │ ├── container.py │ ├── coupling.py │ ├── element.py │ ├── element_beam.py │ ├── element_volume.py │ ├── function.py │ ├── geometry_set.py │ ├── material.py │ ├── mesh.py │ ├── mesh_utils.py │ ├── node.py │ ├── nurbs_patch.py │ ├── rotation.py │ └── vtk_writer.py │ ├── cosserat_curve │ ├── __init__.py │ ├── cosserat_curve.py │ └── warping_along_cosserat_curve.py │ ├── four_c │ ├── __init__.py │ ├── beam_interaction_conditions.py │ ├── beam_potential.py │ ├── dbc_monitor.py │ ├── element_beam.py │ ├── element_volume.py │ ├── function_utility.py │ ├── header_functions.py │ ├── input_file.py │ ├── input_file_mappings.py │ ├── locsys_condition.py │ ├── material.py │ ├── model_importer.py │ ├── run_four_c.py │ └── solid_shell_thickness_direction.py │ ├── geometric_search │ ├── __init__.py │ ├── arborx.py │ ├── cython.py │ ├── cython_lib.pyx │ ├── find_close_points.py │ ├── scipy.py │ ├── src │ │ ├── CMakeLists.txt │ │ ├── find_close_points.cpp │ │ ├── find_close_points.h │ │ └── geometric_search.cpp │ └── utils.py │ ├── mesh_creation_functions │ ├── __init__.py │ ├── applications │ │ ├── __init__.py │ │ ├── beam_fibers_in_rectangle.py │ │ ├── beam_honeycomb.py │ │ ├── beam_stent.py │ │ └── beam_wire.py │ ├── beam_arc.py │ ├── beam_generic.py │ ├── beam_helix.py │ ├── beam_line.py │ ├── beam_node_continuation.py │ ├── beam_parametric_curve.py │ ├── beam_splinepy.py │ ├── nurbs_generic.py │ └── nurbs_geometries.py │ ├── space_time │ ├── __init__.py │ └── beam_to_space_time.py │ └── utils │ ├── __init__.py │ ├── environment.py │ └── nodes.py ├── tests ├── __init__.py ├── conftest.py ├── conftest_performance_tests.py ├── conftest_result_comparison.py ├── create_cubit_input.py ├── meshpy │ └── core │ │ └── test_geometry_set.py ├── reference-files │ ├── 4C_input_solid_cuboid.4C.yaml │ ├── test_abaqus_frame_normal.inp │ ├── test_abaqus_frame_normal_and_extra_node.inp │ ├── test_abaqus_helix_normal.inp │ ├── test_abaqus_helix_normal_and_extra_node.inp │ ├── test_beam_to_solid_conditions.4C.yaml │ ├── test_beam_to_solid_conditions_full.4C.yaml │ ├── test_check_double_elements_beam.vtu │ ├── test_check_multiple_node_penalty_coupling.4C.yaml │ ├── test_check_multiple_node_penalty_coupling_reuse.4C.yaml │ ├── test_check_two_couplings.4C.yaml │ ├── test_close_beam.4C.yaml │ ├── test_close_beam_rotation.4C.yaml │ ├── test_cosserat_curve_centerline.txt │ ├── test_cosserat_curve_mesh.4C.yaml │ ├── test_cosserat_curve_mesh_transformation.json │ ├── test_cosserat_curve_mesh_warp.4C.yaml │ ├── test_cosserat_curve_mesh_warp_transform_boundary_conditions.4C.yaml │ ├── test_cosserat_curve_translate_and_rotate_pos_full_ref.txt │ ├── test_cosserat_curve_translate_and_rotate_pos_half_ref.txt │ ├── test_cosserat_curve_translate_and_rotate_q_full_ref.txt │ ├── test_cosserat_curve_translate_and_rotate_q_half_ref.txt │ ├── test_cosserat_curve_vtk_representation.vtu │ ├── test_create_cubit_input_block.4C.yaml │ ├── test_create_cubit_input_solid_shell_blocks.4C.yaml │ ├── test_create_cubit_input_solid_shell_dome.4C.yaml │ ├── test_create_cubit_input_tube.4C.yaml │ ├── test_euler_bernoulli.4C.yaml │ ├── test_fluid_element_section.4C.yaml │ ├── test_fluid_element_section_import.4C.yaml │ ├── test_four_c_beam_to_beam_contact.4C.yaml │ ├── test_four_c_beam_to_solid.4C.yaml │ ├── test_four_c_import_non_consecutive_geometry_sets_dict_import.4C.yaml │ ├── test_four_c_import_non_consecutive_geometry_sets_full_import.4C.yaml │ ├── test_four_c_import_non_consecutive_geometry_sets_input.4C.yaml │ ├── test_four_c_locsys_condition.4C.yaml │ ├── test_four_c_material_numbering.4C.yaml │ ├── test_four_c_simulation_beam_and_solid_tube.4C.yaml │ ├── test_four_c_simulation_beam_potential_helix.4C.yaml │ ├── test_four_c_simulation_beam_to_beam_contact_example.4C.yaml │ ├── test_four_c_simulation_dbc_monitor_to_input_initial.4C.yaml │ ├── test_four_c_simulation_dbc_monitor_to_input_restart.4C.yaml │ ├── test_four_c_simulation_dirichlet_boundary_to_neumann_boundary_with_all_values_dirichlet.4C.yaml │ ├── test_four_c_simulation_dirichlet_boundary_to_neumann_boundary_with_all_values_neumann.4C.yaml │ ├── test_four_c_simulation_honeycomb_sphere.4C.yaml │ ├── test_four_c_simulation_honeycomb_sphere_full_import.4C.yaml │ ├── test_four_c_simulation_honeycomb_sphere_import.4C.yaml │ ├── test_four_c_simulation_honeycomb_variants.4C.yaml │ ├── test_four_c_simulation_rotated_beam_axis.4C.yaml │ ├── test_four_c_solid_shell_direction_detection_blocks.4C.yaml │ ├── test_four_c_solid_shell_direction_detection_dome_constant_direction.4C.yaml │ ├── test_four_c_solid_shell_direction_detection_dome_constant_direction.vtu │ ├── test_four_c_solid_shell_direction_detection_dome_thickness.4C.yaml │ ├── test_geometry_sets.4C.yaml │ ├── test_header_functions_beam_interaction.4C.yaml │ ├── test_header_functions_nox_xml.xml │ ├── test_header_functions_static.4C.yaml │ ├── test_header_functions_static_prestress.4C.yaml │ ├── test_header_functions_static_time_all.4C.yaml │ ├── test_header_functions_static_time_no_n_steps.4C.yaml │ ├── test_header_functions_static_time_no_time_step.4C.yaml │ ├── test_header_functions_static_time_no_total_time.4C.yaml │ ├── test_header_functions_stress_output.4C.yaml │ ├── test_kirchhoff_beam.4C.yaml │ ├── test_mesh_creation_functions_arc_segment_2d.4C.yaml │ ├── test_mesh_creation_functions_arc_segment_start_end_node.4C.yaml │ ├── test_mesh_creation_functions_arc_segment_via_axis.4C.yaml │ ├── test_mesh_creation_functions_arc_segment_via_rotation.4C.yaml │ ├── test_mesh_creation_functions_curve_2d_sin.4C.yaml │ ├── test_mesh_creation_functions_curve_2d_sin_mathematica.csv │ ├── test_mesh_creation_functions_curve_3d_curve_rotation.4C.yaml │ ├── test_mesh_creation_functions_curve_3d_helix.4C.yaml │ ├── test_mesh_creation_functions_curve_3d_helix_mathematica.csv │ ├── test_mesh_creation_functions_curve_3d_line.4C.yaml │ ├── test_mesh_creation_functions_element_length_option.4C.yaml │ ├── test_mesh_creation_functions_fibers_in_rectangle.4C.yaml │ ├── test_mesh_creation_functions_fibers_in_rectangle_reference_point.4C.yaml │ ├── test_mesh_creation_functions_fibers_in_rectangle_return_set.4C.yaml │ ├── test_mesh_creation_functions_helix_helix_angle_right_angle.4C.yaml │ ├── test_mesh_creation_functions_helix_no_rotation.4C.yaml │ ├── test_mesh_creation_functions_helix_radius_zero.4C.yaml │ ├── test_mesh_creation_functions_helix_rotation_offset.4C.yaml │ ├── test_mesh_creation_functions_node_continuation.4C.yaml │ ├── test_mesh_creation_functions_node_positions_of_elements_option.4C.yaml │ ├── test_mesh_creation_functions_splinepy_bezier.4C.yaml │ ├── test_mesh_creation_functions_splinepy_nurbs.4C.yaml │ ├── test_mesh_creation_functions_stent.4C.yaml │ ├── test_mesh_creation_functions_wire.4C.yaml │ ├── test_mesh_transformations_with_solid_full.4C.yaml │ ├── test_mesh_transformations_with_solid_yaml.4C.yaml │ ├── test_nurbs_brick.4C.yaml │ ├── test_nurbs_couple_nurbs_meshes.4C.yaml │ ├── test_nurbs_cylindrical_shell_sector.4C.yaml │ ├── test_nurbs_flat_plate_2d.4C.yaml │ ├── test_nurbs_hemisphere_surface.4C.yaml │ ├── test_nurbs_hollow_cylinder_segment_2d.4C.yaml │ ├── test_nurbs_import.4C.yaml │ ├── test_nurbs_import_solid_mesh.4C.yaml │ ├── test_nurbs_rotation_nurbs_surface.4C.yaml │ ├── test_nurbs_sphere_surface.4C.yaml │ ├── test_nurbs_string_types.4C.yaml │ ├── test_nurbs_torus_surface.4C.yaml │ ├── test_nurbs_translate_nurbs_surface.4C.yaml │ ├── test_point_couplings_exact.4C.yaml │ ├── test_point_couplings_penalty.4C.yaml │ ├── test_reissner_beam.4C.yaml │ ├── test_space_time_curved_linear.json │ ├── test_space_time_curved_quadratic.json │ ├── test_space_time_elbow_linear.json │ ├── test_space_time_elbow_linear_coupling.json │ ├── test_space_time_elbow_quadratic.json │ ├── test_space_time_elbow_quadratic_coupling.json │ ├── test_space_time_straight_linear.json │ ├── test_space_time_straight_quadratic.json │ ├── test_space_time_varying_material_length_linear.json │ ├── test_space_time_varying_material_length_linear_arc_length.json │ ├── test_space_time_varying_material_length_linear_coupling.json │ ├── test_space_time_varying_material_length_linear_coupling_arc_length.json │ ├── test_space_time_varying_material_length_quadratic.json │ ├── test_space_time_varying_material_length_quadratic_arc_length.json │ ├── test_space_time_varying_material_length_quadratic_coupling.json │ ├── test_space_time_varying_material_length_quadratic_coupling_arc_length.json │ ├── test_stvenantkirchhoff_solid.4C.yaml │ ├── test_surface_to_surface_contact_import.4C.yaml │ ├── test_surface_to_surface_contact_import_solid_mesh.4C.yaml │ ├── test_tutorial.4C.yaml │ ├── test_unique_ordering_of_get_all_nodes_for_line_condition.4C.yaml │ ├── test_userdefined_boundary_condition.4C.yaml │ ├── test_vtk_curve_cell_data_beam.vtu │ ├── test_vtk_writer.vtu │ ├── test_vtk_writer_beam.vtu │ ├── test_vtk_writer_beam_no_coupling_beam.vtu │ ├── test_vtk_writer_beam_smooth_centerline_beam.vtu │ ├── test_vtk_writer_solid.vtu │ ├── test_vtk_writer_solid_elements_import.4C.yaml │ ├── test_vtk_writer_solid_elements_solid.vtu │ └── test_wrap_cylinder_not_on_same_plane.4C.yaml ├── test_abaqus.py ├── test_beamme.py ├── test_cosserat_curve.py ├── test_create_cubit_input.py ├── test_examples.py ├── test_four_c.py ├── test_four_c_simulation.py ├── test_function_utilities.py ├── test_geometric_search.py ├── test_geometric_search_utils.py ├── test_header_functions.py ├── test_input_file_utils.py ├── test_mesh_creation_functions.py ├── test_nurbs.py ├── test_performance.py ├── test_rotations.py ├── test_space_time.py ├── test_utils_environment.py └── test_utils_nodes.py ├── tutorial ├── 4C_input_solid_tutorial.4C.yaml └── tutorial.py ├── utils ├── arclength.nb ├── check_python_imports.py ├── curvature.nb └── rotation.wls └── website ├── README.md ├── docs ├── prepare_docs.py └── source │ ├── conf.py │ ├── index.rst │ └── static │ └── js │ └── custom.js └── requirements.txt /.binder/Dockerfile: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | ARG BASE_IMAGE_TAG=latest 23 | FROM ghcr.io/pyvista/pyvista:$BASE_IMAGE_TAG 24 | 25 | USER root 26 | RUN apt-get upgrade 27 | RUN apt-get update 28 | RUN apt-get install -y git 29 | RUN apt-get install -y build-essential 30 | RUN apt-get install -y ffmpeg libsm6 libxext6 31 | RUN apt-get install -y libgl1-mesa-glx xvfb 32 | 33 | COPY . ${HOME} 34 | USER root 35 | RUN chown -R 1000 ${HOME} 36 | RUN chown -R 1000 ${HOME}/.* 37 | USER jovyan 38 | WORKDIR ${HOME} 39 | RUN pip install -e . 40 | -------------------------------------------------------------------------------- /.binder/start: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # The MIT License (MIT) 3 | # 4 | # Copyright (c) 2018-2025 BeamMe Authors 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | 24 | # Copied from https://mybinder.org/v2/gh/pyvista/pyvista-examples/master 25 | export PYVISTA_TRAME_SERVER_PROXY_PREFIX="$JUPYTERHUB_SERVICE_PREFIX/proxy/" 26 | exec "$@" 27 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | ## Define the base style 2 | BasedOnStyle: Google 3 | 4 | ## Deviations from the base style 5 | AlignAfterOpenBracket: DontAlign 6 | AlignOperands: false 7 | BreakBeforeBraces: Allman 8 | ColumnLimit: 100 9 | MaxEmptyLinesToKeep: 3 10 | NamespaceIndentation: All 11 | SortIncludes: false 12 | SpacesInContainerLiterals: false 13 | Standard: Cpp11 14 | TabWidth: 4 15 | IndentWidth: 4 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | #* text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.py text eol=lf 7 | *.git* text eol=lf 8 | 9 | # Declare files that will always have CRLF line endings on checkout. 10 | #*.sln text eol=crlf 11 | 12 | # Denote all files that are truly binary and should not be modified. 13 | #*.png binary 14 | #*.jpg binary 15 | 16 | # Mathematica Notebooks are binary for now 17 | *.nb 18 | -------------------------------------------------------------------------------- /.github/actions/build_arbrox_geometric_search/action.yml: -------------------------------------------------------------------------------- 1 | name: build_arborx_geometric_search 2 | description: Build the geometric search functionality with ArborX 3 | runs: 4 | using: composite 5 | steps: 6 | - name: Build ArborX 7 | shell: bash 8 | env: 9 | kokkos_dir: /opt/4C-dependencies/lib/cmake/Kokkos 10 | run: | 11 | cd ${GITHUB_WORKSPACE} 12 | mkdir -p src/build/arborx 13 | cd src/build/arborx 14 | cmake -DKokkos_DIR=${{ env.kokkos_dir }} ../../beamme/geometric_search/src -G Ninja 15 | ninja 16 | -------------------------------------------------------------------------------- /.github/actions/code_check/action.yml: -------------------------------------------------------------------------------- 1 | name: code_check 2 | description: Perform Code checks 3 | runs: 4 | using: composite 5 | steps: 6 | - name: Code Checks 7 | shell: bash 8 | run: | 9 | cd ${GITHUB_WORKSPACE} 10 | source python-workflow-venv/bin/activate 11 | pip install -e .[dev] 12 | pre-commit install --install-hooks 13 | if [ "${GITHUB_REF}" = "refs/heads/main" ]; then 14 | SKIP=no-commit-to-branch pre-commit run --all-files 15 | else 16 | pre-commit run --all-files 17 | fi 18 | -------------------------------------------------------------------------------- /.github/actions/coverage/action.yml: -------------------------------------------------------------------------------- 1 | name: coverage 2 | description: Coverage badge and report 3 | runs: 4 | using: composite 5 | steps: 6 | - name: Upload coverage report 7 | uses: actions/upload-artifact@v4 8 | with: 9 | name: coverage-report 10 | path: htmlcov/ 11 | - name: Create coverage badge 12 | shell: bash 13 | run: | 14 | cd ${GITHUB_WORKSPACE} 15 | source python-workflow-venv/bin/activate 16 | mkdir -p coverage-badge 17 | coverage-badge -o coverage-badge/coverage_badge.svg 18 | cp .github/actions/coverage/coverage_badge_index.html coverage-badge/index.html 19 | - name: Upload coverage badge 20 | uses: actions/upload-artifact@v4 21 | with: 22 | name: coverage-badge 23 | path: coverage-badge/ 24 | -------------------------------------------------------------------------------- /.github/actions/coverage/coverage_badge_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Coverage Badge 7 | 8 | 9 | 10 | Coverage Badge 11 | 12 | 13 | -------------------------------------------------------------------------------- /.github/actions/run_tests/action.yml: -------------------------------------------------------------------------------- 1 | name: run_tests 2 | description: Perform Test suite 3 | inputs: 4 | install-command: 5 | description: Command to install BeamMe with pip 6 | required: false 7 | default: ".[dev,fourc]" 8 | source-command: 9 | description: Command to source the virtual environment 10 | required: false 11 | default: "" 12 | additional-pytest-flags: 13 | description: Additional flags to pass to pytest, i.e., markers 14 | required: false 15 | default: "" 16 | cubit-root: 17 | description: Path to the cubit installation 18 | required: false 19 | default: "" 20 | runs: 21 | using: composite 22 | steps: 23 | - name: Testing 24 | shell: bash 25 | env: 26 | BEAMME_FOUR_C_EXE: /home/user/4C/build/4C 27 | OMPI_MCA_rmaps_base_oversubscribe: 1 28 | run: | 29 | export CUBIT_ROOT=${{ inputs.cubit-root }} 30 | cd ${GITHUB_WORKSPACE} 31 | ${{ inputs.source-command }} 32 | pip install ${{ inputs.install-command }} 33 | python --version 34 | pip list 35 | TEMP_DIR="${RUNNER_TEMP}/beamme_pytest" 36 | mkdir -p "$TEMP_DIR" 37 | echo "PYTEST_TMPDIR=$TEMP_DIR" >> $GITHUB_ENV 38 | pytest --basetemp="$TEMP_DIR" ${{ inputs.additional-pytest-flags}} --color=yes 39 | -------------------------------------------------------------------------------- /.github/actions/setup_cubit/action.yml: -------------------------------------------------------------------------------- 1 | name: setup_cubit 2 | description: Setup a Cubit installation for testing 3 | inputs: 4 | cubit_download_url: 5 | description: URL where Cubit can be downloaded from 6 | required: true 7 | cubit_email: 8 | description: Email to activate cubit 9 | required: true 10 | cubit_password: 11 | description: Password to activate cubit 12 | required: true 13 | outputs: 14 | cubit_root: 15 | description: "Path to the Cubit installation" 16 | value: ${{ steps.setup-cubit.outputs.cubit_root }} 17 | runs: 18 | using: composite 19 | steps: 20 | - name: Download and unpack Cubit 21 | id: setup-cubit 22 | shell: bash 23 | run: | 24 | # Check if secrets are available 25 | if [[ -z "${{ inputs.cubit_email }}" || -z "${{ inputs.cubit_password }}" ]]; then 26 | echo "cubit_email or cubit_password is empty or not injected. Cannot activate Cubit." 27 | exit 1 28 | fi 29 | # We need these packages for cubit to work 30 | sudo apt update 31 | sudo apt install -y libglu1-mesa 32 | # Download cubit and extract it 33 | cd ${GITHUB_WORKSPACE} 34 | wget -q ${{ inputs.cubit_download_url }} 35 | tar -xzf *.tar.gz 36 | # Save cubit root path for following steps 37 | CUBIT_FOLDER=$(find . -maxdepth 1 -type d -name "Coreform-Cubit-*" | head -n 1 | sed 's|^\./||') 38 | CUBIT_ROOT="$(pwd)/$CUBIT_FOLDER" 39 | echo "cubit_root=$CUBIT_ROOT" >> "$GITHUB_OUTPUT" 40 | # Activate cubit 41 | $CUBIT_ROOT/bin/rlm_activate --login ${{ inputs.cubit_email }} ${{ inputs.cubit_password }} 42 | -------------------------------------------------------------------------------- /.github/actions/setup_virtual_python_environment/action.yml: -------------------------------------------------------------------------------- 1 | name: setup_virtual_python_environment 2 | description: Configure the python virtual environment 3 | runs: 4 | using: composite 5 | steps: 6 | - name: Setup virtual environment 7 | shell: bash 8 | run: | 9 | cd ${GITHUB_WORKSPACE} 10 | python -m venv python-workflow-venv 11 | source python-workflow-venv/bin/activate 12 | pip install --upgrade pip 13 | -------------------------------------------------------------------------------- /.github/workflows/build_binder.yml: -------------------------------------------------------------------------------- 1 | name: Trigger Binder build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | # Allow only one concurrent build, skipping runs queued between the run in-progress and latest queued. 8 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 9 | concurrency: 10 | group: "build_binder" 11 | cancel-in-progress: false 12 | 13 | jobs: 14 | trigger-binder-build: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: s-weigand/trigger-mybinder-build@v1 18 | with: 19 | target-repo: beamme-py/beamme/HEAD 20 | service-name: gh 21 | debug: true 22 | -------------------------------------------------------------------------------- /.github/workflows/check_code.yml: -------------------------------------------------------------------------------- 1 | name: Code quality 2 | 3 | on: 4 | schedule: 5 | - cron: '0 04 * * *' 6 | push: 7 | branches: 8 | - main 9 | pull_request: 10 | types: 11 | - opened 12 | - reopened 13 | - synchronize 14 | workflow_dispatch: 15 | type: choice 16 | 17 | jobs: 18 | code-check: 19 | name: Code check 20 | runs-on: ubuntu-latest 21 | defaults: 22 | run: 23 | shell: bash 24 | steps: 25 | - name: Checkout repository 26 | uses: actions/checkout@v4 27 | - name: Setup virtual python environment 28 | uses: ./.github/actions/setup_virtual_python_environment 29 | - name: Code quality checks 30 | uses: ./.github/actions/code_check 31 | -------------------------------------------------------------------------------- /.github/workflows/documentation.yml: -------------------------------------------------------------------------------- 1 | name: Build documentation 2 | 3 | on: 4 | # Only build the documentation once the test suite has completed on the main branch 5 | workflow_run: 6 | workflows: [Protected test suite (can access cubit secrets)] 7 | types: [completed] 8 | branches: [main] 9 | 10 | jobs: 11 | build_documentation: 12 | name: Build documentation 13 | # Only run if a push to main occurred, do not run after nightly cron job 14 | if: ${{ github.event.workflow_run.event == 'push' }} 15 | runs-on: ubuntu-latest 16 | defaults: 17 | run: 18 | shell: bash 19 | steps: 20 | - name: Checkout repository 21 | uses: actions/checkout@v4 22 | - name: Setup virtual python environment 23 | uses: ./.github/actions/setup_virtual_python_environment 24 | - name: Install dependencies 25 | run: | 26 | cd ${GITHUB_WORKSPACE} 27 | source python-workflow-venv/bin/activate 28 | pip install -e .[dev,fourc] 29 | - name: Build API documentation 30 | run: | 31 | source python-workflow-venv/bin/activate 32 | pdoc --math --docformat google --output-dir api-documentation src/beamme/ 33 | - name: Upload API documentation artifact 34 | uses: actions/upload-artifact@v4 35 | with: 36 | name: api-documentation 37 | path: api-documentation/ 38 | -------------------------------------------------------------------------------- /.github/workflows/testing.yml: -------------------------------------------------------------------------------- 1 | name: Test suite 2 | 3 | on: 4 | schedule: 5 | - cron: '0 04 * * *' 6 | push: 7 | branches: 8 | - main 9 | pull_request: 10 | types: 11 | - opened 12 | - reopened 13 | - synchronize 14 | workflow_dispatch: 15 | 16 | jobs: 17 | beamme-testing: 18 | name: ${{ matrix.os-version }} python${{ matrix.python-version }} 19 | strategy: 20 | fail-fast: false 21 | matrix: 22 | os-version: [ubuntu-latest, macos-latest, windows-latest] 23 | python-version: ["3.10", "3.13"] 24 | runs-on: ${{ matrix.os-version }} 25 | steps: 26 | - name: Checkout PR code 27 | uses: actions/checkout@v4 28 | - name: Set up Python ${{ matrix.python-version }} 29 | uses: actions/setup-python@v5 30 | with: 31 | python-version: ${{ matrix.python-version }} 32 | - name: Run the test suite 33 | uses: ./.github/actions/run_tests 34 | with: 35 | # Test coverage and editable install with Python 3.10, otherwise we use a 36 | # non-editable installation and turn of coverage, because the coverage 37 | # only works in editable mode. 38 | install-command: >- 39 | ${{ matrix.python-version == '3.10' && '-e .[dev,fourc]' || '.[dev,fourc]'}} 40 | # The single space in the empty string is required, otherwise GitHub 41 | # evaluates the if clause wrong. 42 | additional-pytest-flags: >- 43 | ${{ matrix.python-version == '3.10' && ' ' || '--no-cov' }} 44 | - name: Upload test results on failure 45 | if: failure() 46 | uses: actions/upload-artifact@v4 47 | with: 48 | name: ${{ github.job }}-${{ matrix.os-version }}-python${{ matrix.python-version }}-${{ github.run_number }} 49 | path: ${{ env.PYTEST_TMPDIR }} 50 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "pybind11"] 2 | path = src/pybind11 3 | url = https://github.com/pybind/pybind11.git 4 | branch = stable 5 | -------------------------------------------------------------------------------- /.typos.toml: -------------------------------------------------------------------------------- 1 | # exlude the following words from the typos pre-commit hook 2 | 3 | [default.extend-identifiers] 4 | _NDArray = "_NDArray" 5 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "Whenever you use or mention MeshPy in some sort of scientific document/publication/presentation, please cite MeshPy as follows." 3 | authors: 4 | - family-names: Steinbrecher 5 | given-names: I. 6 | - family-names: Popp 7 | given-names: A. 8 | title: "MeshPy - A general purpose 3D beam finite element input generator" 9 | date-released: "2021" 10 | url: "https://imcs-compsim.github.io/meshpy" 11 | identifier: "MeshPyWebsite" 12 | license: "" 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018-2025 BeamMe Authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /doc/assets/composite_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imcs-compsim/meshpy/a47c3d290bed31992262567eea2105b0a2a8a82a/doc/assets/composite_plate.png -------------------------------------------------------------------------------- /doc/assets/honeycomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imcs-compsim/meshpy/a47c3d290bed31992262567eea2105b0a2a8a82a/doc/assets/honeycomb.png -------------------------------------------------------------------------------- /doc/assets/pressure_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imcs-compsim/meshpy/a47c3d290bed31992262567eea2105b0a2a8a82a/doc/assets/pressure_pipe.png -------------------------------------------------------------------------------- /doc/assets/twisted_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imcs-compsim/meshpy/a47c3d290bed31992262567eea2105b0a2a8a82a/doc/assets/twisted_plate.png -------------------------------------------------------------------------------- /doc/badges/documentation.svg: -------------------------------------------------------------------------------- 1 | 2 | documentation: BeamMe 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | documentation 18 | 19 | BeamMe 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/badges/pre-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | pre-commit: enabled 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | pre-commit 19 | 20 | enabled 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/badges/ruff-formatter.svg: -------------------------------------------------------------------------------- 1 | 2 | code-formatter: ruff 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | code-formatter 19 | 20 | ruff 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/badges/ruff-linter.svg: -------------------------------------------------------------------------------- 1 | 2 | code-linter: ruff 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | code-linter 19 | 20 | ruff 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/badges/testing_linux_ubuntu.svg: -------------------------------------------------------------------------------- 1 | 2 | Tested on: Linux/Ubuntu 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Tested on 18 | 19 | Linux/Ubuntu 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/badges/testing_macos.svg: -------------------------------------------------------------------------------- 1 | 2 | Tested on: macOS 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Tested on 18 | 19 | macOS 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/badges/testing_windows.svg: -------------------------------------------------------------------------------- 1 | 2 | Tested on: Windows 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Tested on 18 | 19 | Windows 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/badges/website.svg: -------------------------------------------------------------------------------- 1 | 2 | website: BeamMe 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | website 18 | 19 | BeamMe 20 | 21 | 22 | -------------------------------------------------------------------------------- /examples/utils/general_utils.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file contains utility functions for the examples.""" 23 | 24 | import sys 25 | 26 | import pyvista as pv 27 | 28 | from beamme.utils.environment import is_mybinder 29 | 30 | # Store the default system out, so we can reset it after pyvista changes it 31 | stdout = sys.stdout 32 | 33 | # If we are on mybinder, set to server side rendering 34 | if is_mybinder(): 35 | pv.start_xvfb() 36 | 37 | 38 | def reset_print_out(): 39 | """PyVista changes the printout, this resets it to the default.""" 40 | sys.stdout = stdout 41 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools", "wheel", "cython", "numpy"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [project] 6 | name = "BeamMe" 7 | description = "BeamMe: A general purpose 3D beam finite element input generator" 8 | authors = [{name = "BeamMe Authors"}] 9 | maintainers = [ 10 | {name = "Ivo Steinbrecher", email = "ivo.steinbrecher@unibw.de"}, 11 | {name = "David Rudlstorfer", email = "david.rudlstorfer@tum.de"}, 12 | ] 13 | readme = "README.md" 14 | license = {file = "LICENSE"} 15 | dependencies = [ 16 | "autograd", 17 | "geomdl", 18 | "ipykernel", 19 | "notebook", 20 | "numpy", 21 | "numpy-quaternion", 22 | "pyvista", 23 | "scipy", 24 | "splinepy", 25 | "vedo==2024.5.2", # Needed as a fix for the splinepy visualization tool gustaf 26 | "vtk" 27 | ] 28 | 29 | dynamic = ["version"] 30 | 31 | [project.optional-dependencies] 32 | cubitpy = ["cubitpy@git+https://github.com/imcs-compsim/cubitpy.git@main"] 33 | fourc = ["fourcipp@git+https://github.com/4C-multiphysics/fourcipp.git@main"] 34 | dev = [ 35 | "coverage-badge", 36 | "coverage", 37 | "pdoc", 38 | "pre-commit", 39 | "pytest", 40 | "pytest-cov", 41 | "testbook", 42 | "vistools", 43 | "xmltodict" 44 | ] 45 | 46 | [project.urls] 47 | Homepage = "https://beamme-py.github.io/beamme/" 48 | Documentation = "https://beamme-py.github.io/beamme/api-documentation/" 49 | Repository = "https://github.com/beamme-py/beamme/" 50 | Issues = "https://github.com/beamme-py/beamme/issues/" 51 | 52 | # Tools 53 | 54 | [tool.pytest.ini_options] 55 | testpaths = ["tests"] 56 | addopts = "-p pytest_cov --cov-report=term --cov-report=html --cov-fail-under=90 --cov=src/beamme/" 57 | markers = [ 58 | "fourc: tests in combination with 4C", 59 | "arborx: tests in combination with ArborX", 60 | "cubitpy: tests in combination with CubitPy", 61 | "performance: performance tests" 62 | ] 63 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """ 23 | This script can be used to compile the cython code: 24 | > python setup.py build_ext --inplace 25 | """ 26 | 27 | import numpy as np 28 | from Cython.Build import cythonize 29 | from setuptools import Extension, setup 30 | 31 | extensions = [ 32 | Extension( 33 | "beamme.geometric_search.cython_lib", 34 | ["src/beamme/geometric_search/cython_lib.pyx"], 35 | include_dirs=[np.get_include()], 36 | ) 37 | ] 38 | 39 | setup( 40 | ext_modules=cythonize( 41 | extensions, 42 | build_dir="src/build/cython_generated_code", 43 | annotate=True, 44 | ), 45 | ) 46 | -------------------------------------------------------------------------------- /src/beamme/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """BeamMe - A general purpose 3D beam finite element input generator.""" 23 | -------------------------------------------------------------------------------- /src/beamme/abaqus/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module defines classes and functions to create an Abaqus beam input 23 | file.""" 24 | -------------------------------------------------------------------------------- /src/beamme/abaqus/beam.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file provides functions to create Abaqus beam element classes.""" 23 | 24 | import numpy as _np 25 | 26 | from beamme.core.element_beam import Beam as _Beam 27 | 28 | 29 | def generate_abaqus_beam(beam_type: str): 30 | """Return a class representing a beam in Abaqus. This class can be used in 31 | the standard mesh generation functions. 32 | 33 | Args 34 | ---- 35 | beam_type: str: 36 | Abaqus identifier for this beam element. For more details, have a look 37 | at the Abaqus manual on "Choosing a beam element" 38 | """ 39 | 40 | if not beam_type[0].lower() == "b": 41 | raise TypeError("Could not identify the given Abaqus beam element") 42 | 43 | n_dim = int(beam_type[1]) 44 | element_type = int(beam_type[2]) 45 | 46 | if not n_dim == 3: 47 | raise ValueError("Currently only 3D beams in Abaqus are supported") 48 | if element_type == 1: 49 | n_nodes = 2 50 | elif element_type == 2: 51 | n_nodes = 3 52 | elif element_type == 3: 53 | n_nodes = 2 54 | else: 55 | raise ValueError(f"Got unexpected element_type {element_type}") 56 | 57 | # Define the class variable responsible for creating the nodes. 58 | nodes_create = _np.linspace(-1, 1, num=n_nodes) 59 | 60 | # Create the Abaqus beam class. 61 | return type( 62 | "BeamAbaqus" + beam_type, 63 | (_Beam,), 64 | { 65 | "beam_type": beam_type, 66 | "nodes_create": nodes_create, 67 | "n_dim": n_dim, 68 | }, 69 | ) 70 | -------------------------------------------------------------------------------- /src/beamme/abaqus/material.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file provides functions to create Abaqus beam element classes.""" 23 | 24 | from beamme.core.material import MaterialBeamBase as _MaterialBeamBase 25 | 26 | 27 | class AbaqusBeamMaterial(_MaterialBeamBase): 28 | """A class representing an Abaqus beam material.""" 29 | 30 | def __init__(self, name: str): 31 | """Initialize the material. For now it is only supported to state the 32 | name of the resulting element set here. The material and cross-section 33 | lines in the input file have to be defined manually. 34 | 35 | Args 36 | ---- 37 | name: str 38 | Name of the material, this will be the name of the resulting element set 39 | """ 40 | super().__init__(data=name) 41 | 42 | def dump_to_list(self): 43 | """Return a list with the (single) item representing this material.""" 44 | return [self.data] 45 | -------------------------------------------------------------------------------- /src/beamme/core/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module defines classes and functions to create and edit a 4C input 23 | file.""" 24 | -------------------------------------------------------------------------------- /src/beamme/core/base_mesh_item.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module implements the class that will be used as the base for all items 23 | that are in a mesh.""" 24 | 25 | from typing import Any as _Any 26 | from typing import Optional as _Optional 27 | 28 | 29 | class BaseMeshItem: 30 | """Base class for all objects that are related to a mesh.""" 31 | 32 | def __init__(self, data: _Optional[_Any] = None): 33 | """Create the base object. 34 | 35 | Args: 36 | data: General data to be stored for this item. 37 | """ 38 | 39 | self.data = data 40 | 41 | # Global index of this item in a mesh. 42 | self.i_global = None 43 | -------------------------------------------------------------------------------- /src/beamme/core/container.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module implements containers to manage boundary conditions and geometry 23 | sets in one object.""" 24 | 25 | 26 | class ContainerBase(dict): 27 | """A base class for containers.""" 28 | 29 | def append(self, key, item): 30 | """Append item to this container and check if the item is already in 31 | the list corresponding to key.""" 32 | 33 | type_ok = False 34 | for item_type in self.item_types: 35 | if isinstance(item, item_type): 36 | type_ok = True 37 | break 38 | if not type_ok: 39 | raise TypeError( 40 | f"You tried to add an item of type {type(item)}, but only types derived " 41 | + f"from {self.item_types} can be added" 42 | ) 43 | if key not in self.keys(): 44 | self[key] = [] 45 | else: 46 | if item in self[key]: 47 | raise ValueError("The item is already in this container!") 48 | self[key].append(item) 49 | 50 | def extend(self, container): 51 | """Add all items of another container to this container.""" 52 | 53 | if not isinstance(container, self.__class__): 54 | raise TypeError( 55 | f"Only containers of type {self.__class__} can be merged here, you tried " 56 | + f"add {type(container)}" 57 | ) 58 | for key, items in container.items(): 59 | for item in items: 60 | self.append(key, item) 61 | -------------------------------------------------------------------------------- /src/beamme/core/element.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module implements the class that represents one element in the Mesh.""" 23 | 24 | from beamme.core.base_mesh_item import BaseMeshItem as _BaseMeshItem 25 | 26 | 27 | class Element(_BaseMeshItem): 28 | """A base class for an FEM element in the mesh.""" 29 | 30 | def __init__(self, nodes=None, material=None, **kwargs): 31 | super().__init__(**kwargs) 32 | 33 | # List of nodes that are connected to the element. 34 | if nodes is None: 35 | self.nodes = [] 36 | else: 37 | self.nodes = nodes 38 | 39 | # Material of this element. 40 | self.material = material 41 | 42 | # VTK cell data for this element. 43 | self.vtk_cell_data = {} 44 | 45 | def flip(self): 46 | """Reverse the nodes of this element. 47 | 48 | This is usually used when reflected. 49 | """ 50 | raise NotImplementedError( 51 | f"The flip method is not implemented for {self.__class__}" 52 | ) 53 | 54 | def replace_node(self, old_node, new_node): 55 | """Replace old_node with new_node.""" 56 | 57 | # Look for old_node and replace it. If it is not found, throw error. 58 | for i, node in enumerate(self.nodes): 59 | if node == old_node: 60 | self.nodes[i] = new_node 61 | break 62 | else: 63 | raise ValueError( 64 | "The node that should be replaced is not in the current element" 65 | ) 66 | 67 | def dump_element_specific_section(self, yaml_dict): 68 | """Add information of this element to specific section (e.g. STRUCTURE 69 | KNOTVECTORS for NURBS elements).""" 70 | 71 | def get_vtk(self, vtk_writer_beam, vtk_writer_solid, **kwargs): 72 | """Add representation of this element to the vtk_writers for solid and 73 | beam.""" 74 | raise NotImplementedError("VTK output has to be implemented in the class!") 75 | -------------------------------------------------------------------------------- /src/beamme/core/function.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module implements a basic class to manage functions in a mesh.""" 23 | 24 | from beamme.core.base_mesh_item import BaseMeshItem as _BaseMeshItem 25 | 26 | 27 | class Function(_BaseMeshItem): 28 | """Holds information for a function.""" 29 | 30 | def __init__(self, function_data): 31 | super().__init__(data=function_data) 32 | 33 | def __deepcopy__(self, memo): 34 | """When deepcopy is called on a mesh, we do not want the same functions 35 | to be copied, as this will result in multiple equal functions in the 36 | input file.""" 37 | 38 | # Add this object to the memo dictionary. 39 | memo[id(self)] = self 40 | 41 | # Return this object again, as no copy should be created. 42 | return self 43 | -------------------------------------------------------------------------------- /src/beamme/core/material.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file implements basic classes to manage materials.""" 23 | 24 | import numpy as _np 25 | 26 | from beamme.core.base_mesh_item import BaseMeshItem as _BaseMeshItem 27 | 28 | 29 | class Material(_BaseMeshItem): 30 | """Base class for all materials.""" 31 | 32 | def __init__(self, **kwargs): 33 | super().__init__(**kwargs) 34 | 35 | def __deepcopy__(self, memo): 36 | """When deepcopy is called on a mesh, we do not want the materials to 37 | be copied, as this will result in multiple equal materials in the input 38 | file.""" 39 | 40 | # Add this object to the memo dictionary. 41 | memo[id(self)] = self 42 | 43 | # Return this object again, as no copy should be created. 44 | return self 45 | 46 | 47 | class MaterialBeamBase(Material): 48 | """Base class for all beam materials.""" 49 | 50 | def __init__( 51 | self, 52 | radius=-1.0, 53 | material_string=None, 54 | youngs_modulus=-1.0, 55 | nu=0.0, 56 | density=0.0, 57 | interaction_radius=None, 58 | **kwargs, 59 | ): 60 | """Set the material values that all beams have.""" 61 | super().__init__(**kwargs) 62 | 63 | self.radius = radius 64 | self.material_string = material_string 65 | self.youngs_modulus = youngs_modulus 66 | self.nu = nu 67 | self.density = density 68 | self.radius = radius 69 | self.interaction_radius = interaction_radius 70 | self.area = None 71 | self.mom2 = None 72 | self.mom3 = None 73 | self.polar = None 74 | 75 | def calc_area_stiffness(self): 76 | """Calculate the relevant stiffness terms and the area for the given 77 | beam.""" 78 | area = 4 * self.radius**2 * _np.pi * 0.25 79 | mom2 = self.radius**4 * _np.pi * 0.25 80 | mom3 = mom2 81 | polar = mom2 + mom3 82 | return area, mom2, mom3, polar 83 | 84 | 85 | class MaterialSolidBase(Material): 86 | """Base class for all solid materials.""" 87 | 88 | pass 89 | -------------------------------------------------------------------------------- /src/beamme/cosserat_curve/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module contains functionality to convert a curve in 3D to a Cosserat 23 | curve. 24 | 25 | Furthermore, additional utility functions are included, such as warping 26 | a mesh along the curve and the creation of non-homogeneous DBC to 27 | achieve such a warping. 28 | """ 29 | -------------------------------------------------------------------------------- /src/beamme/four_c/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module defines classes and functions for the interaction with 4C.""" 23 | -------------------------------------------------------------------------------- /src/beamme/four_c/element_volume.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file implements volume elements for 4C.""" 23 | 24 | from beamme.core.element_volume import VolumeElement as _VolumeElement 25 | 26 | 27 | class SolidRigidSphere(_VolumeElement): 28 | """A rigid sphere solid element.""" 29 | 30 | def __init__(self, **kwargs): 31 | """Initialize solid sphere object.""" 32 | _VolumeElement.__init__(self, **kwargs) 33 | 34 | self.radius = float(self.data["RADIUS"]) 35 | 36 | # TODO this method should be removed! 37 | # This method should use the super method of _VolumeElement 38 | # but currently this results in a circular import if we use the 39 | # element to 4C mappings. Think about a better solution. 40 | def dump_to_list(self): 41 | """Return a dict with the items representing this object.""" 42 | 43 | return { 44 | "id": self.i_global, 45 | "cell": { 46 | "type": "POINT1", 47 | "connectivity": self.nodes, 48 | }, 49 | "data": self.data, 50 | } 51 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | r"""This module defines geometric search functionality. 23 | 24 | This module contains functionality to find points close to each other in 25 | a point cloud. Currently, three different implementations for the actual 26 | search algorithm are available (depending on your installation/setup): 27 | 28 | - `brute_force_cython`: A brute force algorithm implemented in Cython, 29 | scales with $\mathcal{O}(n^2)$, but for a small number of points 30 | ($n<200$) this is the fastest algorithm since compared to the others 31 | it does not have any setup costs. 32 | 33 | - `kd_tree_scipy`: Uses a 34 | [bounding volume hierarchy (BVH)](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) 35 | implementation provided by 36 | [scipy](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html). 37 | This scales with $\mathcal{O}(n\ \log{n})$. 38 | 39 | - `boundary_volume_hierarchy_arborx` : Uses a 40 | [bounding volume hierarchy (BVH)](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) 41 | implementation provided by [ArborX](https://github.com/arborx/ArborX). 42 | This also scales with $\mathcal{O}(n\ \log{n})$ 43 | but due to a more optimised implementation is a few times faster 44 | than the scipy implementation. 45 | 46 | The `find_close_points` function automatically chooses the fastest 47 | (available) implementation for the given point array. 48 | 49 | Consult the `README.md` regarding install and testing options for 50 | different implementations. 51 | """ 52 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/arborx.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file defines the interface to the ArborX geometric search 23 | functionality.""" 24 | 25 | from beamme.geometric_search.utils import arborx_is_available as _arborx_is_available 26 | 27 | if _arborx_is_available(): 28 | from beamme.geometric_search.arborx_lib import ( 29 | find_close_points as _find_close_points, 30 | ) 31 | from beamme.geometric_search.arborx_lib import ( 32 | kokkos_finalize as _kokkos_finalize, 33 | ) 34 | from beamme.geometric_search.arborx_lib import ( 35 | kokkos_initialize as _kokkos_initialize, 36 | ) 37 | 38 | 39 | class KokkosScopeGuardWrapper: 40 | """Wrap the initialize and finalize calls to Kokkos.""" 41 | 42 | def __init__(self): 43 | """Call initialize when this object is created.""" 44 | _kokkos_initialize() 45 | 46 | def __del__(self): 47 | """Finalize Kokkos after this object goes out of scope, i.e., at the 48 | end of this modules lifetime.""" 49 | _kokkos_finalize() 50 | 51 | 52 | if _arborx_is_available(): 53 | # Create the scope guard 54 | kokkos_scope_guard_wrapper = KokkosScopeGuardWrapper() 55 | 56 | 57 | def find_close_points_arborx(point_coordinates, tol): 58 | """Call the ArborX implementation of find close_points.""" 59 | if _arborx_is_available(): 60 | return _find_close_points(point_coordinates, tol) 61 | else: 62 | raise ModuleNotFoundError("ArborX functionality is not available") 63 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/cython.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file defines the interface to the Cython geometric search 23 | functionality.""" 24 | 25 | import warnings as _warnings 26 | 27 | from beamme.geometric_search.utils import cython_is_available as _cython_is_available 28 | 29 | if _cython_is_available(): 30 | from beamme.geometric_search.cython_lib import ( 31 | find_close_points as _find_close_points, 32 | ) 33 | 34 | 35 | def find_close_points_brute_force_cython( 36 | point_coordinates, tol, *, n_points_performance_warning=5000 37 | ): 38 | """Call the Cython brute force implementation of find close_points.""" 39 | if _cython_is_available(): 40 | n_points = len(point_coordinates) 41 | if n_points > n_points_performance_warning: 42 | _warnings.warn( 43 | "The function find_close_points is called with the brute force algorithm " 44 | + f"with {n_points} points, for performance reasons other algorithms should be used!" 45 | ) 46 | return _find_close_points(point_coordinates, tol) 47 | else: 48 | raise ModuleNotFoundError( 49 | "Cython geometric search functionality is not available" 50 | ) 51 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/scipy.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This file defines the interface to the Scipy spatial geometric search 23 | functionality.""" 24 | 25 | from scipy.spatial import KDTree as _KDTree 26 | 27 | 28 | def pairs_to_partner_list(pairs, n_points): 29 | """Convert the pairs to a partner list.""" 30 | 31 | # Sort the pairs by the first column 32 | pairs = pairs[pairs[:, 0].argsort()] 33 | 34 | n_partners = 0 35 | partner_index_list = [-1 for i in range(n_points)] 36 | for pair in pairs: 37 | pair_partners = [partner_index_list[pair[i]] for i in range(2)] 38 | if pair_partners[0] == -1 and pair_partners[1] == -1: 39 | # We have a new partner index 40 | for i in range(2): 41 | partner_index_list[pair[i]] = n_partners 42 | n_partners += 1 43 | elif pair_partners[0] == -1: 44 | partner_index_list[pair[0]] = pair_partners[1] 45 | elif pair_partners[1] == -1: 46 | partner_index_list[pair[1]] = pair_partners[0] 47 | else: 48 | # Both points already have a partner index. Since we order 49 | # the pairs this one has to be equal to each other or we 50 | # have multiple clusters. 51 | if not pair_partners[0] == pair_partners[1]: 52 | raise ValueError( 53 | "Two points are connected to different partner indices." 54 | ) 55 | return partner_index_list, n_partners 56 | 57 | 58 | def find_close_points_scipy(point_coordinates, tol): 59 | """Call the Scipy implementation of find close_points.""" 60 | 61 | kd_tree = _KDTree(point_coordinates) 62 | pairs = kd_tree.query_pairs(r=tol, output_type="ndarray") 63 | return pairs_to_partner_list(pairs, len(point_coordinates)) 64 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | 23 | cmake_minimum_required(VERSION 3.0) 24 | 25 | # Project name 26 | project(arborxpy) 27 | 28 | # Find python packages 29 | find_package(Python COMPONENTS Interpreter Development) 30 | find_package(PythonLibs REQUIRED) 31 | include_directories(${PYTHON_INCLUDE_DIRS}) 32 | 33 | # Add the local pybind11 directory 34 | add_subdirectory(../../../pybind11 build) 35 | find_package(pybind11 CONFIG) 36 | include_directories(../../../pybind11/include) 37 | 38 | # Get ArborX from github 39 | include(FetchContent) 40 | fetchcontent_declare( 41 | arborx 42 | GIT_REPOSITORY https://github.com/arborx/ArborX.git 43 | GIT_TAG 4c015c70f3927b55e730515ce8db235e68c13480 44 | ) 45 | fetchcontent_makeavailable(arborx) 46 | 47 | # Compiler flags 48 | set(CMAKE_CXX_STANDARD 17) 49 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O3 -fvisibility=hidden") 50 | 51 | # Setup arborxpy 52 | set(module_name "arborx_lib") 53 | set(target_name "${module_name}") 54 | add_definitions("-DPYTHON_MODULE_NAME") 55 | set(PYTHON_MODULE_NAME "${target_name}") 56 | add_library( 57 | ${target_name} 58 | MODULE 59 | geometric_search.cpp 60 | find_close_points.cpp 61 | ) 62 | set_target_properties( 63 | ${target_name} 64 | PROPERTIES 65 | PREFIX "${PYTHON_MODULE_PREFIX}" 66 | SUFFIX "${PYTHON_MODULE_EXTENSION}" 67 | ) 68 | target_link_libraries( 69 | ${target_name} 70 | PUBLIC 71 | ArborX::ArborX 72 | ) 73 | add_custom_command( 74 | TARGET ${target_name} 75 | POST_BUILD 76 | COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_SOURCE_DIR}/../ 77 | ) 78 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/src/find_close_points.h: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright (c) 2018-2025 BeamMe Authors 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #ifndef FIND_CLOSE_POINTS_ 24 | #define FIND_CLOSE_POINTS_ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | 31 | namespace GeometricSearch 32 | { 33 | std::tuple, int> find_close_points( 34 | const pybind11::array_t& coordinates, double tol); 35 | } // namespace GeometricSearch 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/src/geometric_search.cpp: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright (c) 2018-2025 BeamMe Authors 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #include 24 | #include 25 | 26 | #include "find_close_points.h" 27 | 28 | 29 | namespace GeometricSearch 30 | { 31 | /** 32 | * @brief Initialize Kokkos 33 | * 34 | */ 35 | void kokkos_initialize() { Kokkos::initialize(); }; 36 | 37 | /** 38 | * @brief Finalize Kokkos 39 | * 40 | */ 41 | void kokkos_finalize() { Kokkos::finalize(); }; 42 | } // namespace GeometricSearch 43 | 44 | 45 | /** 46 | * @brief Construct the arborx_lib pybind11 module object 47 | * 48 | */ 49 | PYBIND11_MODULE(arborx_lib, py_module) 50 | { 51 | py_module.doc() = "Python wrapper for ArborX"; 52 | py_module.def("kokkos_initialize", &GeometricSearch::kokkos_initialize, "Initialize Kokkos"); 53 | py_module.def("kokkos_finalize", &GeometricSearch::kokkos_finalize, "Finalize Kokkos"); 54 | py_module.def("find_close_points", &GeometricSearch::find_close_points, 55 | "Find sets of points that are within the spatial radius tol of each other.\n" 56 | "\n" 57 | "Args\n" 58 | "----\n" 59 | "points: np.array\n" 60 | " Two-dimensional array with point coordinates.\n" 61 | "tol: double\n" 62 | " Tolerance for closest point search.\n" 63 | "\n" 64 | "Return\n" 65 | "----\n" 66 | "has_partner: numpy array\n" 67 | " An array with integers, marking the set a node is part of. -1 means the\n" 68 | " node does not have a partner.\n" 69 | "partner: int\n" 70 | " Number of clusters found.\n"); 71 | } 72 | -------------------------------------------------------------------------------- /src/beamme/geometric_search/utils.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """Helper functions for the geometric search module.""" 23 | 24 | from importlib.util import find_spec as _find_spec 25 | 26 | 27 | def arborx_is_available() -> bool: 28 | """Check if ArborX is available. 29 | 30 | Returns: 31 | True if ArborX is installed, False otherwise 32 | """ 33 | 34 | if _find_spec("beamme.geometric_search.arborx_lib") is None: 35 | return False 36 | return True 37 | 38 | 39 | def cython_is_available() -> bool: 40 | """Check if Cython is available. 41 | 42 | Returns: 43 | True if Cython is installed, False otherwise 44 | """ 45 | 46 | if _find_spec("beamme.geometric_search.cython_lib") is None: 47 | return False 48 | return True 49 | -------------------------------------------------------------------------------- /src/beamme/mesh_creation_functions/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module stores all functions to create beam meshes. 23 | 24 | From simple lines to complex stent craft structures. 25 | """ 26 | -------------------------------------------------------------------------------- /src/beamme/mesh_creation_functions/applications/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module contains application-oriented beam mesh generation functions.""" 23 | -------------------------------------------------------------------------------- /src/beamme/space_time/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module contains functionality to create space time meshes.""" 23 | -------------------------------------------------------------------------------- /src/beamme/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """BeamMe utilities.""" 23 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This module tests BeamMe.""" 23 | -------------------------------------------------------------------------------- /tests/reference-files/4C_input_solid_cuboid.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_Struct_StVenantKirchhoff: 4 | DENS: 7.8e-06 5 | NUE: 0 6 | YOUNG: 1e+09 7 | NODE COORDS: 8 | - NODE 1 COORD -0.5 -1 1.5 9 | - NODE 2 COORD -0.5 -1 -1.5 10 | - NODE 3 COORD -0.5 1 -1.5 11 | - NODE 4 COORD -0.5 1 1.5 12 | - NODE 5 COORD 0.5 -1 1.5 13 | - NODE 6 COORD 0.5 -1 -1.5 14 | - NODE 7 COORD 0.5 1 -1.5 15 | - NODE 8 COORD 0.5 1 1.5 16 | STRUCTURE ELEMENTS: 17 | - 1 SOLID HEX8 1 2 3 4 5 6 7 8 MAT 1 KINEM nonlinear TECH shell_eas_ans 18 | -------------------------------------------------------------------------------- /tests/reference-files/test_abaqus_frame_normal.inp: -------------------------------------------------------------------------------- 1 | ** ---------------------------------------- 2 | ** This input file was created with BeamMe. 3 | ** Copyright (c) 2018-2025 BeamMe Authors 4 | ** https://beamme-py.github.io/beamme/ 5 | ** ---------------------------------------- 6 | *Node 7 | 1, 0.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 8 | 2, 2.50000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 9 | 3, 5.00000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 10 | 4, 7.50000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 11 | 5, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 12 | 6, 1.00000000000000e+00, 2.50000000000000e-01, 0.00000000000000e+00 13 | 7, 1.00000000000000e+00, 5.00000000000000e-01, 0.00000000000000e+00 14 | 8, 1.00000000000000e+00, 7.50000000000000e-01, 0.00000000000000e+00 15 | 9, 1.00000000000000e+00, 1.00000000000000e+00, 0.00000000000000e+00 16 | 10, 1.00000000000000e+00, 1.00000000000000e+00, 5.00000000000000e-01 17 | 11, 1.00000000000000e+00, 1.00000000000000e+00, 1.00000000000000e+00 18 | 12, 5.00000000000000e-01, 1.00000000000000e+00, 1.00000000000000e+00 19 | 13, 0.00000000000000e+00, 1.00000000000000e+00, 1.00000000000000e+00 20 | *Element, type=B32H 21 | 1, 1, 2, 3 22 | 2, 3, 4, 5 23 | 3, 5, 6, 7 24 | 4, 7, 8, 9 25 | *Element, type=B33H 26 | 5, 9, 10 27 | 6, 10, 11 28 | 7, 11, 12 29 | 8, 12, 13 30 | *Normal, type=element 31 | 1, 1, 0.00000000000000e+00, -1.00000000000000e+00, 2.22044604925031e-16 32 | 2, 3, 0.00000000000000e+00, -1.00000000000000e+00, 2.22044604925031e-16 33 | 3, 5, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 34 | 4, 7, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 35 | 5, 9, -1.00000000000000e+00, 0.00000000000000e+00, 2.22044604925031e-16 36 | 6, 10, -1.00000000000000e+00, 0.00000000000000e+00, 2.22044604925031e-16 37 | 7, 11, 0.00000000000000e+00, 0.00000000000000e+00, -1.00000000000000e+00 38 | 8, 12, 0.00000000000000e+00, 0.00000000000000e+00, -1.00000000000000e+00 39 | *Elset, elset=beam_material_1 40 | 1, 2, 5, 6 41 | *Elset, elset=beam_material_2 42 | 3, 4, 7, 8 43 | *Nset, nset=fix_node 44 | 1 45 | *Nset, nset=load_node 46 | 13 47 | -------------------------------------------------------------------------------- /tests/reference-files/test_abaqus_frame_normal_and_extra_node.inp: -------------------------------------------------------------------------------- 1 | ** ---------------------------------------- 2 | ** This input file was created with BeamMe. 3 | ** Copyright (c) 2018-2025 BeamMe Authors 4 | ** https://beamme-py.github.io/beamme/ 5 | ** ---------------------------------------- 6 | *Node 7 | 1, 0.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 8 | 2, 2.50000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 9 | 3, 5.00000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 10 | 4, 7.50000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 11 | 5, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 12 | 6, 1.00000000000000e+00, 2.50000000000000e-01, 0.00000000000000e+00 13 | 7, 1.00000000000000e+00, 5.00000000000000e-01, 0.00000000000000e+00 14 | 8, 1.00000000000000e+00, 7.50000000000000e-01, 0.00000000000000e+00 15 | 9, 1.00000000000000e+00, 1.00000000000000e+00, 0.00000000000000e+00 16 | 10, 1.00000000000000e+00, 1.00000000000000e+00, 5.00000000000000e-01 17 | 11, 1.00000000000000e+00, 1.00000000000000e+00, 1.00000000000000e+00 18 | 12, 5.00000000000000e-01, 1.00000000000000e+00, 1.00000000000000e+00 19 | 13, 0.00000000000000e+00, 1.00000000000000e+00, 1.00000000000000e+00 20 | 14, 0.00000000000000e+00, 2.22044604925031e-16, 1.00000000000000e+00 21 | 15, 5.00000000000000e-01, 2.22044604925031e-16, 1.00000000000000e+00 22 | 16, 1.00000000000000e+00, 0.00000000000000e+00, 1.00000000000000e+00 23 | 17, 1.00000000000000e+00, 5.00000000000000e-01, 1.00000000000000e+00 24 | 18, 1.00000000000000e+00, 2.00000000000000e+00, 0.00000000000000e+00 25 | 19, 1.00000000000000e+00, 2.00000000000000e+00, 5.00000000000000e-01 26 | 20, 1.00000000000000e+00, 2.00000000000000e+00, 1.00000000000000e+00 27 | 21, 5.00000000000000e-01, 2.00000000000000e+00, 1.00000000000000e+00 28 | *Element, type=B32H 29 | 1, 1, 2, 3, 14 30 | 2, 3, 4, 5, 15 31 | 3, 5, 6, 7, 16 32 | 4, 7, 8, 9, 17 33 | *Element, type=B33H 34 | 5, 9, 10, 18 35 | 6, 10, 11, 19 36 | 7, 11, 12, 20 37 | 8, 12, 13, 21 38 | *Normal, type=element 39 | 1, 1, 0.00000000000000e+00, -1.00000000000000e+00, 2.22044604925031e-16 40 | 2, 3, 0.00000000000000e+00, -1.00000000000000e+00, 2.22044604925031e-16 41 | 3, 5, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 42 | 4, 7, 1.00000000000000e+00, 0.00000000000000e+00, 0.00000000000000e+00 43 | 5, 9, -1.00000000000000e+00, 0.00000000000000e+00, 2.22044604925031e-16 44 | 6, 10, -1.00000000000000e+00, 0.00000000000000e+00, 2.22044604925031e-16 45 | 7, 11, 0.00000000000000e+00, 0.00000000000000e+00, -1.00000000000000e+00 46 | 8, 12, 0.00000000000000e+00, 0.00000000000000e+00, -1.00000000000000e+00 47 | *Elset, elset=beam_material_1 48 | 1, 2, 5, 6 49 | *Elset, elset=beam_material_2 50 | 3, 4, 7, 8 51 | *Nset, nset=fix_node 52 | 1 53 | *Nset, nset=load_node 54 | 13 55 | -------------------------------------------------------------------------------- /tests/reference-files/test_abaqus_helix_normal.inp: -------------------------------------------------------------------------------- 1 | ** ---------------------------------------- 2 | ** This input file was created with BeamMe. 3 | ** Copyright (c) 2018-2025 BeamMe Authors 4 | ** https://beamme-py.github.io/beamme/ 5 | ** ---------------------------------------- 6 | *Node 7 | 1, 5.00000000000000e-01, 0.00000000000000e+00, 0.00000000000000e+00 8 | 2, 4.45503262094184e-01, 2.26995249869773e-01, 5.00000000000000e-02 9 | 3, 2.93892626146237e-01, 4.04508497187474e-01, 1.00000000000000e-01 10 | 4, 7.82172325201155e-02, 4.93844170297569e-01, 1.50000000000000e-01 11 | 5, -1.54508497187474e-01, 4.75528258147577e-01, 2.00000000000000e-01 12 | 6, -3.53553390593274e-01, 3.53553390593274e-01, 2.50000000000000e-01 13 | 7, -4.75528258147577e-01, 1.54508497187474e-01, 3.00000000000000e-01 14 | 8, -4.93844170297569e-01, -7.82172325201154e-02, 3.50000000000000e-01 15 | 9, -4.04508497187474e-01, -2.93892626146237e-01, 4.00000000000000e-01 16 | 10, -2.26995249869773e-01, -4.45503262094184e-01, 4.50000000000000e-01 17 | 11, -9.18485099360515e-17, -5.00000000000000e-01, 5.00000000000000e-01 18 | 12, 2.26995249869773e-01, -4.45503262094184e-01, 5.50000000000000e-01 19 | 13, 4.04508497187474e-01, -2.93892626146237e-01, 6.00000000000000e-01 20 | 14, 4.93844170297569e-01, -7.82172325201156e-02, 6.50000000000000e-01 21 | 15, 4.75528258147577e-01, 1.54508497187474e-01, 7.00000000000000e-01 22 | 16, 3.53553390593274e-01, 3.53553390593274e-01, 7.50000000000000e-01 23 | 17, 1.54508497187474e-01, 4.75528258147577e-01, 8.00000000000000e-01 24 | 18, -7.82172325201148e-02, 4.93844170297569e-01, 8.50000000000000e-01 25 | 19, -2.93892626146236e-01, 4.04508497187474e-01, 9.00000000000000e-01 26 | 20, -4.45503262094184e-01, 2.26995249869773e-01, 9.50000000000000e-01 27 | 21, -5.00000000000000e-01, 1.83697019872103e-16, 1.00000000000000e+00 28 | *Element, type=B32H 29 | 1, 1, 2, 3 30 | 2, 3, 4, 5 31 | 3, 5, 6, 7 32 | 4, 7, 8, 9 33 | 5, 9, 10, 11 34 | 6, 11, 12, 13 35 | 7, 13, 14, 15 36 | 8, 15, 16, 17 37 | 9, 17, 18, 19 38 | 10, 19, 20, 21 39 | *Normal, type=element 40 | 1, 1, 9.73597891557941e-01, 2.23115877220253e-01, 4.82332964472666e-02 41 | 2, 3, 3.91761945934746e-01, 9.18801462140354e-01, 4.82332964472666e-02 42 | 3, 5, -5.13054103098252e-01, 8.57000021241469e-01, 4.82332964472665e-02 43 | 4, 7, -9.94893216793334e-01, 8.86624852597904e-02, 4.82332964472663e-02 44 | 5, 9, -6.56513017775629e-01, -7.52771018706862e-01, 4.82332964472665e-02 45 | 6, 11, 2.23115877220252e-01, -9.73597891557941e-01, 4.82332964472667e-02 46 | 7, 13, 9.18801462140354e-01, -3.91761945934746e-01, 4.82332964472663e-02 47 | 8, 15, 8.57000021241470e-01, 5.13054103098251e-01, 4.82332964472664e-02 48 | 9, 17, 8.86624852597907e-02, 9.94893216793334e-01, 4.82332964472663e-02 49 | 10, 19, -7.52771018706863e-01, 6.56513017775628e-01, 4.82332964472664e-02 50 | *Elset, elset=beam_material 51 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 52 | *Nset, nset=fix_node 53 | 1 54 | *Nset, nset=load_node 55 | 21 56 | *Elset, elset=beam_elements 57 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 58 | -------------------------------------------------------------------------------- /tests/reference-files/test_check_multiple_node_penalty_coupling.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN POINT PENALTY COUPLING CONDITIONS: 2 | - E: 1 3 | POSITIONAL_PENALTY_PARAMETER: 10000 4 | ROTATIONAL_PENALTY_PARAMETER: 0 5 | - E: 2 6 | POSITIONAL_PENALTY_PARAMETER: 10000 7 | ROTATIONAL_PENALTY_PARAMETER: 0 8 | DNODE-NODE TOPOLOGY: 9 | - NODE 3 DNODE 1 10 | - NODE 4 DNODE 1 11 | - NODE 3 DNODE 2 12 | - NODE 7 DNODE 2 13 | MATERIALS: 14 | - MAT: 1 15 | MAT_BeamReissnerElastHyper: 16 | CROSSAREA: 3.141592653589793 17 | DENS: 0.0 18 | MOMIN2: 0.7853981633974483 19 | MOMIN3: 0.7853981633974483 20 | MOMINPOL: 1.5707963267948966 21 | POISSONRATIO: 0.0 22 | SHEARCORR: 1 23 | YOUNG: -1.0 24 | NODE COORDS: 25 | - NODE 1 COORD 0.0 0.0 0.0 26 | - NODE 2 COORD 0.5 0.0 0.0 27 | - NODE 3 COORD 1.0 0.0 0.0 28 | - NODE 4 COORD 1.0 0.0 0.0 29 | - NODE 5 COORD 1.5 0.0 0.0 30 | - NODE 6 COORD 2.0 0.0 0.0 31 | - NODE 7 COORD 1.0 0.0 0.0 32 | - NODE 8 COORD 1.5 -0.5 0.0 33 | - NODE 9 COORD 2.0 -1.0 0.0 34 | STRUCTURE ELEMENTS: 35 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 36 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 37 | - 3 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 1.4821898202742558 -0.613943125568937 -0.613943125568937 1.4821898202742558 -0.613943125568937 -0.613943125568937 1.4821898202742558 -0.613943125568937 -0.613943125568937 HERMITE_CENTERLINE true 38 | -------------------------------------------------------------------------------- /tests/reference-files/test_check_multiple_node_penalty_coupling_reuse.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN POINT PENALTY COUPLING CONDITIONS: 2 | - E: 1 3 | POSITIONAL_PENALTY_PARAMETER: 10000 4 | ROTATIONAL_PENALTY_PARAMETER: 0 5 | DNODE-NODE TOPOLOGY: 6 | - NODE 3 DNODE 1 7 | - NODE 6 DNODE 1 8 | MATERIALS: 9 | - MAT: 1 10 | MAT_BeamReissnerElastHyper: 11 | CROSSAREA: 3.141592653589793 12 | DENS: 0.0 13 | MOMIN2: 0.7853981633974483 14 | MOMIN3: 0.7853981633974483 15 | MOMINPOL: 1.5707963267948966 16 | POISSONRATIO: 0.0 17 | SHEARCORR: 1 18 | YOUNG: -1.0 19 | NODE COORDS: 20 | - NODE 1 COORD 0.0 0.0 0.0 21 | - NODE 2 COORD 0.5 0.0 0.0 22 | - NODE 3 COORD 1.0 0.0 0.0 23 | - NODE 4 COORD 1.5 0.0 0.0 24 | - NODE 5 COORD 2.0 0.0 0.0 25 | - NODE 6 COORD 1.0 0.0 0.0 26 | - NODE 7 COORD 1.5 -0.5 0.0 27 | - NODE 8 COORD 2.0 -1.0 0.0 28 | STRUCTURE ELEMENTS: 29 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 30 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 31 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS 1.4821898202742558 -0.613943125568937 -0.613943125568937 1.4821898202742558 -0.613943125568937 -0.613943125568937 1.4821898202742558 -0.613943125568937 -0.613943125568937 HERMITE_CENTERLINE true 32 | -------------------------------------------------------------------------------- /tests/reference-files/test_check_two_couplings.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN POINT COUPLING CONDITIONS: 2 | - E: 1 3 | NUMDOF: 9 4 | ONOFF: 5 | - 1 6 | - 1 7 | - 1 8 | - 1 9 | - 1 10 | - 1 11 | - 0 12 | - 0 13 | - 0 14 | - E: 2 15 | NUMDOF: 9 16 | ONOFF: 17 | - 1 18 | - 1 19 | - 1 20 | - 1 21 | - 1 22 | - 1 23 | - 0 24 | - 0 25 | - 0 26 | DNODE-NODE TOPOLOGY: 27 | - NODE 3 DNODE 1 28 | - NODE 4 DNODE 1 29 | - NODE 3 DNODE 2 30 | - NODE 4 DNODE 2 31 | MATERIALS: 32 | - MAT: 1 33 | MAT_BeamReissnerElastHyper: 34 | CROSSAREA: 3.141592653589793 35 | DENS: 0.0 36 | MOMIN2: 0.7853981633974483 37 | MOMIN3: 0.7853981633974483 38 | MOMINPOL: 1.5707963267948966 39 | POISSONRATIO: 0.0 40 | SHEARCORR: 1 41 | YOUNG: -1.0 42 | NODE COORDS: 43 | - NODE 1 COORD 0.0 0.0 0.0 44 | - NODE 2 COORD 0.5 0.0 0.0 45 | - NODE 3 COORD 1.0 0.0 0.0 46 | - NODE 4 COORD 1.0 0.0 0.0 47 | - NODE 5 COORD 1.0 0.5 0.0 48 | - NODE 6 COORD 1.0 1.0 0.0 49 | STRUCTURE ELEMENTS: 50 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 51 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 1.2091995761561452 HERMITE_CENTERLINE true 52 | -------------------------------------------------------------------------------- /tests/reference-files/test_close_beam.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | - NODE 12 DLINE 1 14 | DNODE-NODE TOPOLOGY: 15 | - NODE 1 DNODE 1 16 | - NODE 1 DNODE 2 17 | MATERIALS: 18 | - MAT: 1 19 | MAT_BeamReissnerElastHyper: 20 | CROSSAREA: 0.031415926535897934 21 | DENS: 0.0 22 | MOMIN2: 7.853981633974484e-05 23 | MOMIN3: 7.853981633974484e-05 24 | MOMINPOL: 0.00015707963267948968 25 | POISSONRATIO: 0.0 26 | SHEARCORR: 1 27 | YOUNG: -1.0 28 | NODE COORDS: 29 | - NODE 1 COORD 1.235 0.0 0.0 30 | - NODE 2 COORD 1.069541373673782 0.6174999999999999 0.0 31 | - NODE 3 COORD 0.6175000000000002 1.0695413736737818 0.0 32 | - NODE 4 COORD 3.4984702692976277e-16 1.235 0.0 33 | - NODE 5 COORD -0.6174999999999998 1.069541373673782 0.0 34 | - NODE 6 COORD -1.0695413736737815 0.6175000000000005 0.0 35 | - NODE 7 COORD -1.235 6.996940538595255e-16 0.0 36 | - NODE 8 COORD -1.069541373673782 -0.6174999999999998 0.0 37 | - NODE 9 COORD -0.6175000000000006 -1.0695413736737815 0.0 38 | - NODE 10 COORD -2.268658195420472e-16 -1.235 0.0 39 | - NODE 11 COORD 0.6175000000000002 -1.0695413736737818 0.0 40 | - NODE 12 COORD 1.069541373673782 -0.6174999999999996 0.0 41 | STRUCTURE ELEMENTS: 42 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 1.5707963267948963 0.0 0.0 2.6179938779914944 0.0 0.0 2.0943951023931953 HERMITE_CENTERLINE true 43 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 2.6179938779914944 -0.0 -0.0 -2.6179938779914944 0.0 0.0 3.141592653589793 HERMITE_CENTERLINE true 44 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS -0.0 -0.0 -2.6179938779914944 -0.0 -0.0 -1.5707963267948972 -0.0 -0.0 -2.0943951023931957 HERMITE_CENTERLINE true 45 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS -0.0 -0.0 -1.5707963267948972 -0.0 -0.0 -0.5235987755982994 -0.0 -0.0 -1.047197551196598 HERMITE_CENTERLINE true 46 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS -0.0 -0.0 -0.5235987755982994 0.0 0.0 0.5235987755982989 -0.0 -0.0 -1.83697019872103e-16 HERMITE_CENTERLINE true 47 | - 6 BEAM3R LINE3 11 1 12 MAT 1 TRIADS 0.0 0.0 0.5235987755982989 0.0 0.0 1.5707963267948963 0.0 0.0 1.047197551196598 HERMITE_CENTERLINE true 48 | -------------------------------------------------------------------------------- /tests/reference-files/test_close_beam_rotation.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | - NODE 12 DLINE 1 14 | DNODE-NODE TOPOLOGY: 15 | - NODE 1 DNODE 1 16 | - NODE 1 DNODE 2 17 | MATERIALS: 18 | - MAT: 1 19 | MAT_BeamReissnerElastHyper: 20 | CROSSAREA: 0.031415926535897934 21 | DENS: 0.0 22 | MOMIN2: 7.853981633974484e-05 23 | MOMIN3: 7.853981633974484e-05 24 | MOMINPOL: 0.00015707963267948968 25 | POISSONRATIO: 0.0 26 | SHEARCORR: 1 27 | YOUNG: -1.0 28 | NODE COORDS: 29 | - NODE 1 COORD 1.235 0.0 0.0 30 | - NODE 2 COORD 1.069541373673782 0.6174999999999999 0.0 31 | - NODE 3 COORD 0.6175000000000002 1.0695413736737818 0.0 32 | - NODE 4 COORD 3.4984702692976277e-16 1.235 0.0 33 | - NODE 5 COORD -0.6174999999999998 1.069541373673782 0.0 34 | - NODE 6 COORD -1.0695413736737815 0.6175000000000005 0.0 35 | - NODE 7 COORD -1.235 6.996940538595255e-16 0.0 36 | - NODE 8 COORD -1.069541373673782 -0.6174999999999998 0.0 37 | - NODE 9 COORD -0.6175000000000006 -1.0695413736737815 0.0 38 | - NODE 10 COORD -2.268658195420472e-16 -1.235 0.0 39 | - NODE 11 COORD 0.6175000000000002 -1.0695413736737818 0.0 40 | - NODE 12 COORD 1.069541373673782 -0.6174999999999996 0.0 41 | STRUCTURE ELEMENTS: 42 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.3919565493438197 0.39195654934381974 1.5350262403819042 0.17427192265899527 0.6503916696960848 2.5471401898518433 0.3012049834849143 0.5217023348888162 2.043151913301402 HERMITE_CENTERLINE true 43 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.17427192265899527 0.6503916696960848 2.5471401898518433 0.1742719226589955 -0.6503916696960848 -2.5471401898518433 -8.320269408245713e-17 0.7772424608630378 3.0439281460180574 HERMITE_CENTERLINE true 44 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.1742719226589955 -0.6503916696960848 -2.5471401898518433 0.3919565493438197 -0.39195654934381985 -1.535026240381905 0.3012049834849144 -0.5217023348888162 -2.043151913301403 HERMITE_CENTERLINE true 45 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 0.3919565493438197 -0.39195654934381985 -1.535026240381905 0.488429555755019 -0.13087430502404954 -0.512545313351655 0.45308756821808716 -0.26159022947718563 -1.0244703581232186 HERMITE_CENTERLINE true 46 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS 0.488429555755019 -0.13087430502404954 -0.512545313351655 0.48842955575501906 0.13087430502404937 0.5125453133516534 0.5000000000000001 -7.39710733165093e-17 -7.407903241593777e-16 HERMITE_CENTERLINE true 47 | - 6 BEAM3R LINE3 11 1 12 MAT 1 TRIADS 0.48842955575501906 0.13087430502404937 0.5125453133516534 0.3919565493438197 0.39195654934381974 1.5350262403819042 0.45308756821808704 0.2615902294771855 1.0244703581232175 HERMITE_CENTERLINE true 48 | -------------------------------------------------------------------------------- /tests/reference-files/test_cosserat_curve_centerline.txt: -------------------------------------------------------------------------------- 1 | -7.125056969077852465e+00,-2.100498338589324305e+02,-1.315032467171957364e+02 2 | -8.578164819865914836e+00,-2.103983440417262045e+02,-1.318355861462153484e+02 3 | -1.002660147770902199e+01,-2.107622027327942078e+02,-1.321036387467290467e+02 4 | -1.420180257868918972e+01,-2.113479519751842020e+02,-1.338546926361781573e+02 5 | -1.548947274987304468e+01,-2.116635004519980043e+02,-1.345820241652732534e+02 6 | -1.669974530466243579e+01,-2.123023513258445121e+02,-1.352675684905443063e+02 7 | -1.780121899999767265e+01,-2.129407667828043600e+02,-1.359887265187280150e+02 8 | -1.875413870553265383e+01,-2.134432395695041862e+02,-1.368500440588985612e+02 9 | -1.951866843854408629e+01,-2.140215405181983783e+02,-1.379530359796511050e+02 10 | -2.005497221630869475e+01,-2.147109481986180981e+02,-1.392914797992089859e+02 11 | -2.032321405610320397e+01,-2.152536910592761785e+02,-1.407299275809807853e+02 12 | -------------------------------------------------------------------------------- /tests/reference-files/test_cosserat_curve_translate_and_rotate_pos_full_ref.txt: -------------------------------------------------------------------------------- 1 | 1.291463386904588972e+01 7.403379504371607744e+00 1.532398997522114836e+00 2 | 8.583537748586778093e+00 4.980255357661549809e+00 9.240604692546008359e-01 3 | 4.252441628127666462e+00 2.557131210951491873e+00 3.157219409870868354e-01 4 | 4.916871410088713231e-15 1.510612765359513223e-14 3.040195452824578327e-14 5 | -4.191720510719856740e+00 -2.270357380093788624e+00 -1.425509083343292849e+00 6 | -7.313874190036320222e+00 -5.151943095841574838e+00 -3.932366947038755445e+00 7 | -8.790383647103221065e+00 -6.755848078933092360e+00 -8.376270807056888756e+00 8 | -1.003429438488758763e+01 -7.777902286946676291e+00 -1.310998935301063817e+01 9 | -------------------------------------------------------------------------------- /tests/reference-files/test_cosserat_curve_translate_and_rotate_pos_half_ref.txt: -------------------------------------------------------------------------------- 1 | 1.291463386904588972e+01 7.403379504371607744e+00 1.532398997522114836e+00 2 | 8.583537748586778093e+00 4.980255357661549809e+00 9.240604692546008359e-01 3 | 4.252441628127666462e+00 2.557131210951491873e+00 3.157219409870868354e-01 4 | -4.593625008562698259e-02 6.317045769862024429e-02 -1.469350730298719376e-01 5 | -4.324957988665973474e+00 -2.292426008125255432e+00 -1.169829950819927245e+00 6 | -8.165131840399068253e+00 -5.021742190982890541e+00 -2.788327332482271714e+00 7 | -1.146144122540963295e+01 -7.374183840622406727e+00 -5.696877200611591974e+00 8 | -1.469699501892136517e+01 -9.500461494710480181e+00 -8.860756937108787312e+00 9 | -------------------------------------------------------------------------------- /tests/reference-files/test_cosserat_curve_translate_and_rotate_q_full_ref.txt: -------------------------------------------------------------------------------- 1 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 2 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 3 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 4 | 5.815966966656960918e-02 -2.528121471979448143e-01 9.618300158685344492e-01 8.710046858527870084e-02 5 | 1.491633074539531756e-01 -3.548788933347764019e-01 9.185439037234272019e-01 8.993539741063756587e-02 6 | 3.770075941982808931e-01 -3.657859970271776784e-01 8.355197144710896362e-01 1.611604325689377226e-01 7 | 5.292629555301416877e-01 -3.090139966491203816e-01 7.511032691021528596e-01 2.454281013300957381e-01 8 | 5.292629555301416877e-01 -3.090139966491203816e-01 7.511032691021528596e-01 2.454281013300957381e-01 9 | -------------------------------------------------------------------------------- /tests/reference-files/test_cosserat_curve_translate_and_rotate_q_half_ref.txt: -------------------------------------------------------------------------------- 1 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 2 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 3 | 4.119105594347984012e-02 -2.553305404066461004e-01 9.624039027014832381e-01 8.299602466904767994e-02 4 | 4.964037442865391891e-02 -2.540680955367965455e-01 9.621506154722118120e-01 8.515532398700682848e-02 5 | 9.487844141499560124e-02 -3.062293499588917833e-01 9.429369500956676919e-01 8.995318072584250479e-02 6 | 2.137973278337330918e-01 -3.161100964970714466e-01 9.160535539273447769e-01 1.233328660205730981e-01 7 | 3.023622326142874073e-01 -2.915848091676424003e-01 8.935540222521209941e-01 1.584821399029856526e-01 8 | 3.023622326142874073e-01 -2.915848091676424003e-01 8.935540222521209941e-01 1.584821399029856526e-01 9 | -------------------------------------------------------------------------------- /tests/reference-files/test_euler_bernoulli.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN POINT DIRICH CONDITIONS: 2 | - E: 1 3 | FUNCT: 4 | - 0 5 | - 0 6 | - 0 7 | - 0 8 | - 0 9 | - 0 10 | NUMDOF: 6 11 | ONOFF: 12 | - 1 13 | - 1 14 | - 1 15 | - 0 16 | - 1 17 | - 1 18 | VAL: 19 | - 0.0 20 | - 0.0 21 | - 0.0 22 | - 0.0 23 | - 0.0 24 | - 0.0 25 | DESIGN POINT MOMENT EB CONDITIONS: 26 | - E: 2 27 | FUNCT: 28 | - 0 29 | - 0 30 | - 0 31 | - 0 32 | - 0 33 | - 1 34 | NUMDOF: 6 35 | ONOFF: 36 | - 0 37 | - 0 38 | - 0 39 | - 0 40 | - 0 41 | - 1 42 | VAL: 43 | - 0.0 44 | - 0.0 45 | - 0.0 46 | - 0.0 47 | - 0.0 48 | - 7.8539816339744e-05 49 | DNODE-NODE TOPOLOGY: 50 | - NODE 1 DNODE 1 51 | - NODE 17 DNODE 2 52 | FUNCT1: 53 | - COMPONENT: 0 54 | SYMBOLIC_FUNCTION_OF_SPACE_TIME: t 55 | MATERIALS: 56 | - MAT: 1 57 | MAT_BeamKirchhoffTorsionFreeElastHyper: 58 | CROSSAREA: 1 59 | DENS: 1300000000.0 60 | MOMIN: 0.0001 61 | YOUNG: 1.0 62 | NODE COORDS: 63 | - NODE 1 COORD -1.0 0.0 0.0 64 | - NODE 2 COORD -0.875 0.0 0.0 65 | - NODE 3 COORD -0.75 0.0 0.0 66 | - NODE 4 COORD -0.625 0.0 0.0 67 | - NODE 5 COORD -0.5 0.0 0.0 68 | - NODE 6 COORD -0.375 0.0 0.0 69 | - NODE 7 COORD -0.25 0.0 0.0 70 | - NODE 8 COORD -0.125 0.0 0.0 71 | - NODE 9 COORD 0.0 0.0 0.0 72 | - NODE 10 COORD 0.125 0.0 0.0 73 | - NODE 11 COORD 0.25 0.0 0.0 74 | - NODE 12 COORD 0.375 0.0 0.0 75 | - NODE 13 COORD 0.5 0.0 0.0 76 | - NODE 14 COORD 0.625 0.0 0.0 77 | - NODE 15 COORD 0.75 0.0 0.0 78 | - NODE 16 COORD 0.875 0.0 0.0 79 | - NODE 17 COORD 1.0 0.0 0.0 80 | STRUCTURE ELEMENTS: 81 | - 1 BEAM3EB LINE2 1 2 MAT 1 82 | - 2 BEAM3EB LINE2 2 3 MAT 1 83 | - 3 BEAM3EB LINE2 3 4 MAT 1 84 | - 4 BEAM3EB LINE2 4 5 MAT 1 85 | - 5 BEAM3EB LINE2 5 6 MAT 1 86 | - 6 BEAM3EB LINE2 6 7 MAT 1 87 | - 7 BEAM3EB LINE2 7 8 MAT 1 88 | - 8 BEAM3EB LINE2 8 9 MAT 1 89 | - 9 BEAM3EB LINE2 9 10 MAT 1 90 | - 10 BEAM3EB LINE2 10 11 MAT 1 91 | - 11 BEAM3EB LINE2 11 12 MAT 1 92 | - 12 BEAM3EB LINE2 12 13 MAT 1 93 | - 13 BEAM3EB LINE2 13 14 MAT 1 94 | - 14 BEAM3EB LINE2 14 15 MAT 1 95 | - 15 BEAM3EB LINE2 15 16 MAT 1 96 | - 16 BEAM3EB LINE2 16 17 MAT 1 97 | -------------------------------------------------------------------------------- /tests/reference-files/test_fluid_element_section.4C.yaml: -------------------------------------------------------------------------------- 1 | FLUID ELEMENTS: 2 | - 1 FLUID HEX8 1 2 3 4 5 6 7 8 MAT 1 NA Euler 3 | - 2 FLUID HEX8 2 9 10 3 6 11 12 7 MAT 1 NA Euler 4 | MATERIALS: 5 | - MAT: 1 6 | MAT_BeamKirchhoffTorsionFreeElastHyper: 7 | CROSSAREA: 3.141592653589793e-06 8 | DENS: 10 9 | MOMIN: 7.853981633974485e-13 10 | YOUNG: 100000000.0 11 | NODE COORDS: 12 | - NODE 1 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 5.0000000000000000e-01 13 | - NODE 2 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 2.5000000000000000e-01 14 | - NODE 3 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 2.5000000000000000e-01 15 | - NODE 4 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 5.0000000000000000e-01 16 | - NODE 5 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 5.0000000000000000e-01 17 | - NODE 6 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 2.4999999999999997e-01 18 | - NODE 7 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 2.5000000000000000e-01 19 | - NODE 8 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 5.0000000000000000e-01 20 | - NODE 9 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 0.0000000000000000e+00 21 | - NODE 10 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 0.0000000000000000e+00 22 | - NODE 11 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 -1.0408340855860843e-17 23 | - NODE 12 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 0.0000000000000000e+00 24 | - NODE 13 COORD 0.0 -0.5 0.0 25 | - NODE 14 COORD 0.0 -0.36 0.0 26 | - NODE 15 COORD 0.0 -0.22000000000000003 0.0 27 | - NODE 16 COORD 0.0 -0.08000000000000002 0.0 28 | - NODE 17 COORD 0.0 0.05999999999999994 0.0 29 | - NODE 18 COORD 0.0 0.19999999999999996 0.0 30 | STRUCTURE ELEMENTS: 31 | - 3 BEAM3EB LINE2 13 14 MAT 1 32 | - 4 BEAM3EB LINE2 14 15 MAT 1 33 | - 5 BEAM3EB LINE2 15 16 MAT 1 34 | - 6 BEAM3EB LINE2 16 17 MAT 1 35 | - 7 BEAM3EB LINE2 17 18 MAT 1 36 | -------------------------------------------------------------------------------- /tests/reference-files/test_fluid_element_section_import.4C.yaml: -------------------------------------------------------------------------------- 1 | FLUID ELEMENTS: 2 | - 1 FLUID HEX8 1 2 3 4 5 6 7 8 MAT 1 NA Euler 3 | - 2 FLUID HEX8 2 9 10 3 6 11 12 7 MAT 1 NA Euler 4 | NODE COORDS: 5 | - NODE 1 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 5.0000000000000000e-01 6 | - NODE 2 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 2.5000000000000000e-01 7 | - NODE 3 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 2.5000000000000000e-01 8 | - NODE 4 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 5.0000000000000000e-01 9 | - NODE 5 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 5.0000000000000000e-01 10 | - NODE 6 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 2.4999999999999997e-01 11 | - NODE 7 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 2.5000000000000000e-01 12 | - NODE 8 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 5.0000000000000000e-01 13 | - NODE 9 COORD -1.5000000000000000e+00 -5.0000000000000000e-01 0.0000000000000000e+00 14 | - NODE 10 COORD -1.5000000000000000e+00 -2.5000000000000000e-01 0.0000000000000000e+00 15 | - NODE 11 COORD -1.2500000000000000e+00 -5.0000000000000000e-01 -1.0408340855860843e-17 16 | - NODE 12 COORD -1.2500000000000000e+00 -2.5000000000000000e-01 0.0000000000000000e+00 17 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_beam_to_beam_contact.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM INTERACTION/BEAM TO BEAM CONTACT CONDITIONS: 2 | - COUPLING_ID: 0 3 | E: 1 4 | - COUPLING_ID: 0 5 | E: 2 6 | DLINE-NODE TOPOLOGY: 7 | - NODE 1 DLINE 1 8 | - NODE 2 DLINE 1 9 | - NODE 3 DLINE 1 10 | - NODE 4 DLINE 1 11 | - NODE 5 DLINE 1 12 | - NODE 6 DLINE 2 13 | - NODE 7 DLINE 2 14 | - NODE 8 DLINE 2 15 | - NODE 9 DLINE 2 16 | - NODE 10 DLINE 2 17 | MATERIALS: 18 | - MAT: 1 19 | MAT_BeamReissnerElastHyper: 20 | CROSSAREA: 3.141592653589793 21 | DENS: 0.0 22 | MOMIN2: 0.7853981633974483 23 | MOMIN3: 0.7853981633974483 24 | MOMINPOL: 1.5707963267948966 25 | POISSONRATIO: 0.0 26 | SHEARCORR: 1 27 | YOUNG: -1.0 28 | NODE COORDS: 29 | - NODE 1 COORD 0.0 0.0 0.0 30 | - NODE 2 COORD 0.25 0.0 0.0 31 | - NODE 3 COORD 0.5 0.0 0.0 32 | - NODE 4 COORD 0.75 0.0 0.0 33 | - NODE 5 COORD 1.0 0.0 0.0 34 | - NODE 6 COORD 0.0 0.0 0.5 35 | - NODE 7 COORD 0.25 0.0 0.5 36 | - NODE 8 COORD 0.5 0.0 0.5 37 | - NODE 9 COORD 0.75 0.0 0.5 38 | - NODE 10 COORD 1.0 0.0 0.5 39 | STRUCTURE ELEMENTS: 40 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 41 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 42 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 43 | - 4 BEAM3R LINE3 8 10 9 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 44 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_import_non_consecutive_geometry_sets_dict_import.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 2 3 | - NODE 2 DLINE 2 4 | - NODE 3 DLINE 2 5 | - NODE 4 DLINE 2 6 | - NODE 5 DLINE 2 7 | - NODE 6 DLINE 4 8 | - NODE 7 DLINE 4 9 | - NODE 8 DLINE 4 10 | - NODE 9 DLINE 4 11 | - NODE 10 DLINE 4 12 | - NODE 11 DLINE 7 13 | - NODE 12 DLINE 7 14 | - NODE 13 DLINE 7 15 | - NODE 14 DLINE 7 16 | - NODE 15 DLINE 7 17 | - NODE 16 DLINE 8 18 | - NODE 17 DLINE 8 19 | - NODE 18 DLINE 8 20 | - NODE 19 DLINE 8 21 | - NODE 20 DLINE 8 22 | - NODE 21 DLINE 9 23 | - NODE 22 DLINE 9 24 | - NODE 23 DLINE 9 25 | - NODE 24 DLINE 9 26 | - NODE 25 DLINE 9 27 | - NODE 26 DLINE 10 28 | - NODE 27 DLINE 10 29 | - NODE 28 DLINE 10 30 | - NODE 29 DLINE 10 31 | - NODE 30 DLINE 10 32 | DNODE-NODE TOPOLOGY: 33 | - NODE 5 DNODE 2 34 | - NODE 1 DNODE 4 35 | - NODE 10 DNODE 7 36 | - NODE 6 DNODE 11 37 | - NODE 15 DNODE 13 38 | - NODE 11 DNODE 17 39 | - NODE 20 DNODE 18 40 | - NODE 16 DNODE 19 41 | - NODE 25 DNODE 20 42 | - NODE 21 DNODE 21 43 | - NODE 30 DNODE 22 44 | - NODE 26 DNODE 23 45 | MATERIALS: 46 | - MAT: 1 47 | MAT_BeamReissnerElastHyper: 48 | CROSSAREA: 3.141592653589793 49 | DENS: 0.0 50 | MOMIN2: 0.7853981633974483 51 | MOMIN3: 0.7853981633974483 52 | MOMINPOL: 1.5707963267948966 53 | POISSONRATIO: 0.0 54 | SHEARCORR: 1 55 | YOUNG: -1.0 56 | NODE COORDS: 57 | - NODE 1 COORD 0 0 0 58 | - NODE 2 COORD 0 0 1 59 | - NODE 3 COORD 0 0 2 60 | - NODE 4 COORD 0 0 3 61 | - NODE 5 COORD 0 0 4 62 | - NODE 6 COORD 1 0 0 63 | - NODE 7 COORD 1 0 1 64 | - NODE 8 COORD 1 0 2 65 | - NODE 9 COORD 1 0 3 66 | - NODE 10 COORD 1 0 4 67 | - NODE 11 COORD 2 0 0 68 | - NODE 12 COORD 2 0 1 69 | - NODE 13 COORD 2 0 2 70 | - NODE 14 COORD 2 0 3 71 | - NODE 15 COORD 2 0 4 72 | - NODE 16 COORD 3.0 0.0 0.0 73 | - NODE 17 COORD 3.0 0.0 1.0 74 | - NODE 18 COORD 3.0 0.0 2.0 75 | - NODE 19 COORD 3.0 0.0 3.0 76 | - NODE 20 COORD 3.0 0.0 4.0 77 | - NODE 21 COORD 4.0 0.0 0.0 78 | - NODE 22 COORD 4.0 0.0 1.0 79 | - NODE 23 COORD 4.0 0.0 2.0 80 | - NODE 24 COORD 4.0 0.0 3.0 81 | - NODE 25 COORD 4.0 0.0 4.0 82 | - NODE 26 COORD 5.0 0.0 0.0 83 | - NODE 27 COORD 5.0 0.0 1.0 84 | - NODE 28 COORD 5.0 0.0 2.0 85 | - NODE 29 COORD 5.0 0.0 3.0 86 | - NODE 30 COORD 5.0 0.0 4.0 87 | STRUCTURE ELEMENTS: 88 | - 1 BEAM3R LINE3 16 18 17 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 89 | - 2 BEAM3R LINE3 18 20 19 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 90 | - 3 BEAM3R LINE3 21 23 22 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 91 | - 4 BEAM3R LINE3 23 25 24 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 92 | - 5 BEAM3R LINE3 26 28 27 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 93 | - 6 BEAM3R LINE3 28 30 29 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 94 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_import_non_consecutive_geometry_sets_full_import.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 2 8 | - NODE 7 DLINE 2 9 | - NODE 8 DLINE 2 10 | - NODE 9 DLINE 2 11 | - NODE 10 DLINE 2 12 | - NODE 11 DLINE 3 13 | - NODE 12 DLINE 3 14 | - NODE 13 DLINE 3 15 | - NODE 14 DLINE 3 16 | - NODE 15 DLINE 3 17 | - NODE 16 DLINE 4 18 | - NODE 17 DLINE 4 19 | - NODE 18 DLINE 4 20 | - NODE 19 DLINE 4 21 | - NODE 20 DLINE 4 22 | - NODE 21 DLINE 5 23 | - NODE 22 DLINE 5 24 | - NODE 23 DLINE 5 25 | - NODE 24 DLINE 5 26 | - NODE 25 DLINE 5 27 | - NODE 26 DLINE 6 28 | - NODE 27 DLINE 6 29 | - NODE 28 DLINE 6 30 | - NODE 29 DLINE 6 31 | - NODE 30 DLINE 6 32 | DNODE-NODE TOPOLOGY: 33 | - NODE 5 DNODE 1 34 | - NODE 1 DNODE 2 35 | - NODE 10 DNODE 3 36 | - NODE 6 DNODE 4 37 | - NODE 15 DNODE 5 38 | - NODE 11 DNODE 6 39 | - NODE 20 DNODE 7 40 | - NODE 16 DNODE 8 41 | - NODE 25 DNODE 9 42 | - NODE 21 DNODE 10 43 | - NODE 30 DNODE 11 44 | - NODE 26 DNODE 12 45 | MATERIALS: 46 | - MAT: 1 47 | MAT_BeamReissnerElastHyper: 48 | CROSSAREA: 3.141592653589793 49 | DENS: 0.0 50 | MOMIN2: 0.7853981633974483 51 | MOMIN3: 0.7853981633974483 52 | MOMINPOL: 1.5707963267948966 53 | POISSONRATIO: 0.0 54 | SHEARCORR: 1 55 | YOUNG: -1.0 56 | NODE COORDS: 57 | - NODE 1 COORD 0.0 0.0 0.0 58 | - NODE 2 COORD 0.0 0.0 1.0 59 | - NODE 3 COORD 0.0 0.0 2.0 60 | - NODE 4 COORD 0.0 0.0 3.0 61 | - NODE 5 COORD 0.0 0.0 4.0 62 | - NODE 6 COORD 1.0 0.0 0.0 63 | - NODE 7 COORD 1.0 0.0 1.0 64 | - NODE 8 COORD 1.0 0.0 2.0 65 | - NODE 9 COORD 1.0 0.0 3.0 66 | - NODE 10 COORD 1.0 0.0 4.0 67 | - NODE 11 COORD 2.0 0.0 0.0 68 | - NODE 12 COORD 2.0 0.0 1.0 69 | - NODE 13 COORD 2.0 0.0 2.0 70 | - NODE 14 COORD 2.0 0.0 3.0 71 | - NODE 15 COORD 2.0 0.0 4.0 72 | - NODE 16 COORD 3.0 0.0 0.0 73 | - NODE 17 COORD 3.0 0.0 1.0 74 | - NODE 18 COORD 3.0 0.0 2.0 75 | - NODE 19 COORD 3.0 0.0 3.0 76 | - NODE 20 COORD 3.0 0.0 4.0 77 | - NODE 21 COORD 4.0 0.0 0.0 78 | - NODE 22 COORD 4.0 0.0 1.0 79 | - NODE 23 COORD 4.0 0.0 2.0 80 | - NODE 24 COORD 4.0 0.0 3.0 81 | - NODE 25 COORD 4.0 0.0 4.0 82 | - NODE 26 COORD 5.0 0.0 0.0 83 | - NODE 27 COORD 5.0 0.0 1.0 84 | - NODE 28 COORD 5.0 0.0 2.0 85 | - NODE 29 COORD 5.0 0.0 3.0 86 | - NODE 30 COORD 5.0 0.0 4.0 87 | STRUCTURE ELEMENTS: 88 | - 1 BEAM3R LINE3 16 18 17 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 89 | - 2 BEAM3R LINE3 18 20 19 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 90 | - 3 BEAM3R LINE3 21 23 22 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 91 | - 4 BEAM3R LINE3 23 25 24 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 92 | - 5 BEAM3R LINE3 26 28 27 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 93 | - 6 BEAM3R LINE3 28 30 29 MAT 1 TRIADS -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 -0.0 -1.5707963267948968 -0.0 HERMITE_CENTERLINE true 94 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_import_non_consecutive_geometry_sets_input.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 2 3 | - NODE 2 DLINE 2 4 | - NODE 3 DLINE 2 5 | - NODE 4 DLINE 2 6 | - NODE 5 DLINE 2 7 | - NODE 6 DLINE 4 8 | - NODE 7 DLINE 4 9 | - NODE 8 DLINE 4 10 | - NODE 9 DLINE 4 11 | - NODE 10 DLINE 4 12 | - NODE 11 DLINE 7 13 | - NODE 12 DLINE 7 14 | - NODE 13 DLINE 7 15 | - NODE 14 DLINE 7 16 | - NODE 15 DLINE 7 17 | DNODE-NODE TOPOLOGY: 18 | - NODE 5 DNODE 2 19 | - NODE 1 DNODE 4 20 | - NODE 10 DNODE 7 21 | - NODE 6 DNODE 11 22 | - NODE 15 DNODE 13 23 | - NODE 11 DNODE 17 24 | NODE COORDS: 25 | - NODE 1 COORD 0 0 0 26 | - NODE 2 COORD 0 0 1 27 | - NODE 3 COORD 0 0 2 28 | - NODE 4 COORD 0 0 3 29 | - NODE 5 COORD 0 0 4 30 | - NODE 6 COORD 1 0 0 31 | - NODE 7 COORD 1 0 1 32 | - NODE 8 COORD 1 0 2 33 | - NODE 9 COORD 1 0 3 34 | - NODE 10 COORD 1 0 4 35 | - NODE 11 COORD 2 0 0 36 | - NODE 12 COORD 2 0 1 37 | - NODE 13 COORD 2 0 2 38 | - NODE 14 COORD 2 0 3 39 | - NODE 15 COORD 2 0 4 40 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_locsys_condition.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN LINE LOCSYS CONDITIONS: 2 | - E: 1 3 | FUNCT: 4 | - 2 5 | - 2 6 | - 2 7 | ROTANGLE: 8 | - 0.0 9 | - 0.0 10 | - 0.1 11 | USECONSISTENTNODENORMAL: 1 12 | USEUPDATEDNODEPOS: 1 13 | DESIGN POINT DIRICH CONDITIONS: 14 | - E: 1 15 | FUNCT: 16 | - 0 17 | - 0 18 | - 0 19 | - 0 20 | - 0 21 | - 0 22 | - 0 23 | - 0 24 | - 0 25 | NUMDOF: 9 26 | ONOFF: 27 | - 1 28 | - 1 29 | - 1 30 | - 1 31 | - 1 32 | - 1 33 | - 0 34 | - 0 35 | - 0 36 | VAL: 37 | - 0 38 | - 0 39 | - 0 40 | - 0 41 | - 0 42 | - 0 43 | - 0 44 | - 0 45 | - 0 46 | - E: 2 47 | FUNCT: 48 | - 1 49 | - 0 50 | - 0 51 | - 0 52 | - 0 53 | - 0 54 | - 0 55 | - 0 56 | - 0 57 | NUMDOF: 9 58 | ONOFF: 59 | - 1 60 | - 0 61 | - 0 62 | - 0 63 | - 0 64 | - 0 65 | - 0 66 | - 0 67 | - 0 68 | VAL: 69 | - 1.0 70 | - 0 71 | - 0 72 | - 0 73 | - 0 74 | - 0 75 | - 0 76 | - 0 77 | - 0 78 | DESIGN POINT LOCSYS CONDITIONS: 79 | - E: 2 80 | FUNCT: 81 | - 0 82 | - 0 83 | - 0 84 | ROTANGLE: 85 | - 0.0 86 | - 0.0 87 | - 0.1 88 | USEUPDATEDNODEPOS: 0 89 | - E: 3 90 | FUNCT: 91 | - 1 92 | - 2 93 | - 2 94 | ROTANGLE: 95 | - 0.0 96 | - 0.0 97 | - 0.1 98 | USEUPDATEDNODEPOS: 1 99 | DLINE-NODE TOPOLOGY: 100 | - NODE 1 DLINE 1 101 | - NODE 2 DLINE 1 102 | - NODE 3 DLINE 1 103 | DNODE-NODE TOPOLOGY: 104 | - NODE 1 DNODE 1 105 | - NODE 3 DNODE 2 106 | - NODE 1 DNODE 3 107 | FUNCT1: 108 | - SYMBOLIC_FUNCTION_OF_SPACE_TIME: t 109 | FUNCT2: 110 | - SYMBOLIC_FUNCTION_OF_SPACE_TIME: 2.0*t 111 | MATERIALS: 112 | - MAT: 1 113 | MAT_BeamReissnerElastHyper: 114 | CROSSAREA: 3.141592653589793 115 | DENS: 0.0 116 | MOMIN2: 0.7853981633974483 117 | MOMIN3: 0.7853981633974483 118 | MOMINPOL: 1.5707963267948966 119 | POISSONRATIO: 0.0 120 | SHEARCORR: 1 121 | YOUNG: -1.0 122 | NODE COORDS: 123 | - NODE 1 COORD 2.5 2.5 2.5 124 | - NODE 2 COORD 3.5 2.5 2.5 125 | - NODE 3 COORD 4.5 2.5 2.5 126 | STRUCTURE ELEMENTS: 127 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 128 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_material_numbering.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_ViscoElastHyper: 4 | DENS: 1.3e-06 5 | MATIDS: 6 | - 10 7 | - 11 8 | - 12 9 | - 13 10 | NUMMAT: 4 11 | - ELAST_CoupNeoHooke: 12 | NUE: 0.45 13 | YOUNG: 0.16 14 | MAT: 10 15 | - MAT: 11 16 | VISCO_GenMax: 17 | BETA: 0.4 18 | SOLVE: OST 19 | TAU: 0.1 20 | - ELAST_CoupAnisoExpo: 21 | GAMMA: 0 22 | INIT: 3 23 | K1: 0.0024 24 | K1COMP: 0 25 | K2: 0.14 26 | K2COMP: 1 27 | STR_TENS_ID: 100 28 | MAT: 12 29 | - ELAST_CoupAnisoExpo: 30 | FIBER_ID: 2 31 | GAMMA: 0 32 | INIT: 3 33 | K1: 0.0054 34 | K1COMP: 0 35 | K2: 1.24 36 | K2COMP: 1 37 | STR_TENS_ID: 100 38 | MAT: 13 39 | - ELAST_StructuralTensor: 40 | STRATEGY: Standard 41 | MAT: 100 42 | - MAT: 2 43 | MAT_ElastHyper: 44 | DENS: 1.3e-06 45 | MATIDS: 46 | - 20 47 | - 21 48 | - 22 49 | NUMMAT: 3 50 | - ELAST_CoupNeoHooke: 51 | NUE: 0.45 52 | YOUNG: 1.23 53 | MAT: 20 54 | - ELAST_CoupAnisoExpo: 55 | GAMMA: 0 56 | INIT: 3 57 | K1: 0.0004 58 | K1COMP: 0 59 | K2: 12 60 | K2COMP: 1 61 | STR_TENS_ID: 200 62 | MAT: 21 63 | - ELAST_CoupAnisoExpo: 64 | FIBER_ID: 2 65 | GAMMA: 0 66 | INIT: 3 67 | K1: 0.0502 68 | K1COMP: 0 69 | K2: 10 70 | K2COMP: 1 71 | STR_TENS_ID: 200 72 | MAT: 22 73 | - ELAST_StructuralTensor: 74 | STRATEGY: Standard 75 | MAT: 200 76 | - MAT: 201 77 | MAT_BeamReissnerElastHyper: 78 | CROSSAREA: 12.566370614359172 79 | DENS: 0.0 80 | MOMIN2: 12.566370614359172 81 | MOMIN3: 12.566370614359172 82 | MOMINPOL: 25.132741228718345 83 | POISSONRATIO: 0.0 84 | SHEARCORR: 1 85 | YOUNG: 1.0 86 | -------------------------------------------------------------------------------- /tests/reference-files/test_four_c_simulation_honeycomb_sphere_import.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM CONTACT: 2 | BEAMS_BTBLINEPENALTYPARAM: 0 3 | BEAMS_EXTVAL: '0.01' 4 | BEAMS_MAXDELTADISSCALEFAC: -1 5 | BEAMS_NUMINTEGRATIONINTERVAL: 20 6 | BEAMS_PARSHIFTANGLE1: 10 7 | BEAMS_PARSHIFTANGLE2: 15 8 | BEAMS_PERPSHIFTANGLE1: 10 9 | BEAMS_PERPSHIFTANGLE2: 15 10 | BEAMS_SEGANGLE: 1 11 | BEAMS_SEGCON: true 12 | BEAMS_STRATEGY: Penalty 13 | MODELEVALUATOR: Standard 14 | BEAM INTERACTION: 15 | REPARTITIONSTRATEGY: Everydt 16 | BEAM INTERACTION/BEAM TO SPHERE CONTACT: 17 | PENALTY_PARAMETER: 10 18 | STRATEGY: Penalty 19 | BINNING STRATEGY: 20 | BIN_SIZE_LOWER_BOUND: 20 21 | DOMAINBOUNDINGBOX: -100 -100 -100 100 100 100 22 | DESIGN POINT DIRICH CONDITIONS: 23 | - E: 1 24 | FUNCT: 25 | - 0 26 | - 1 27 | - 0 28 | NUMDOF: 3 29 | ONOFF: 30 | - 1 31 | - 1 32 | - 1 33 | VAL: 34 | - 0 35 | - -10 36 | - 0 37 | DISCRETISATION: 38 | NUMALEDIS: 0 39 | NUMFLUIDDIS: 0 40 | NUMTHERMDIS: 0 41 | DNODE-NODE TOPOLOGY: 42 | - NODE 1 DNODE 1 43 | FUNCT1: 44 | - COMPONENT: 0 45 | SYMBOLIC_FUNCTION_OF_SPACE_TIME: a 46 | - NAME: a 47 | NUMPOINTS: 3 48 | TIMES: 49 | - 0 50 | - 0.2 51 | - 1 52 | TYPE: linearinterpolation 53 | VALUES: 54 | - 0 55 | - 0 56 | - 1 57 | VARIABLE: 0 58 | IO: 59 | VERBOSITY: Standard 60 | IO/RUNTIME VTK OUTPUT: 61 | INTERVAL_STEPS: 1 62 | IO/RUNTIME VTK OUTPUT/BEAMS: 63 | DISPLACEMENT: true 64 | MATERIAL_FORCES_GAUSSPOINT: true 65 | OUTPUT_BEAMS: true 66 | STRAINS_GAUSSPOINT: true 67 | TRIAD_VISUALIZATIONPOINT: true 68 | IO/RUNTIME VTK OUTPUT/STRUCTURE: 69 | DISPLACEMENT: true 70 | OUTPUT_STRUCTURE: true 71 | NODE COORDS: 72 | - NODE 1 COORD 0.0 37.0 35.0 73 | PROBLEM TYPE: 74 | PROBLEMTYPE: Structure 75 | RESULT DESCRIPTION: 76 | - STRUCTURE: 77 | DIS: structure 78 | NODE: 268 79 | QUANTITY: dispx 80 | TOLERANCE: 1e-10 81 | VALUE: 1 82 | - STRUCTURE: 83 | DIS: structure 84 | NODE: 268 85 | QUANTITY: dispy 86 | TOLERANCE: 1e-10 87 | VALUE: 1 88 | - STRUCTURE: 89 | DIS: structure 90 | NODE: 268 91 | QUANTITY: dispz 92 | TOLERANCE: 1e-10 93 | VALUE: 1 94 | SOLVER 1: 95 | NAME: Structure_Solver 96 | SOLVER: UMFPACK 97 | STRUCT NOX/Printing: 98 | Inner Iteration: false 99 | Outer Iteration StatusTest: false 100 | STRUCTURAL DYNAMIC: 101 | DYNAMICTYPE: Statics 102 | INT_STRATEGY: Standard 103 | LINEAR_SOLVER: 1 104 | MAXITER: 15 105 | MAXTIME: 1 106 | NUMSTEP: 8 107 | PREDICT: TangDis 108 | RESTARTEVERY: 20 109 | TIMESTEP: 0.025 110 | TOLRES: 1e-07 111 | STRUCTURE ELEMENTS: 112 | - 1 RIGIDSPHERE POINT1 1 RADIUS 10.0 DENSITY 1.0 113 | -------------------------------------------------------------------------------- /tests/reference-files/test_geometry_sets.4C.yaml: -------------------------------------------------------------------------------- 1 | DNODE-NODE TOPOLOGY: 2 | - NODE 1 DNODE 1 3 | - NODE 2 DNODE 1 4 | - NODE 3 DNODE 1 5 | - NODE 3 DNODE 2 6 | - NODE 4 DNODE 2 7 | - NODE 5 DNODE 2 8 | - NODE 1 DNODE 3 9 | - NODE 2 DNODE 3 10 | - NODE 3 DNODE 3 11 | - NODE 4 DNODE 3 12 | - NODE 5 DNODE 3 13 | - NODE 1 DNODE 4 14 | - NODE 2 DNODE 4 15 | - NODE 3 DNODE 4 16 | NODE COORDS: 17 | - NODE 1 COORD 0 0 0 18 | - NODE 2 COORD 1 2 3 19 | - NODE 3 COORD 2 4 6 20 | - NODE 4 COORD 3 6 9 21 | - NODE 5 COORD 4 8 12 22 | - NODE 6 COORD 5 10 15 23 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_beam_interaction.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM CONTACT: 2 | BEAMS_BTBLINEPENALTYPARAM: 0 3 | BEAMS_BTBPENALTYPARAM: 0 4 | BEAMS_MAXDELTADISSCALEFAC: -1.0 5 | BEAMS_NUMINTEGRATIONINTERVAL: 5 6 | BEAMS_PARSHIFTANGLE1: 70 7 | BEAMS_PARSHIFTANGLE2: 80 8 | BEAMS_PENALTYLAW: LinPosQuadPen 9 | BEAMS_PENREGPARAM_C0: 0 10 | BEAMS_PENREGPARAM_F0: 0 11 | BEAMS_PENREGPARAM_G0: 0 12 | BEAMS_PERPSHIFTANGLE1: 70 13 | BEAMS_PERPSHIFTANGLE2: 80 14 | BEAMS_SEGANGLE: 12 15 | BEAMS_SEGCON: true 16 | BEAMS_STRATEGY: penalty 17 | MODELEVALUATOR: standard 18 | BEAM CONTACT/RUNTIME VTK OUTPUT: 19 | CONTACT_FORCES: true 20 | EVERY_ITERATION: false 21 | GAPS: true 22 | INTERVAL_STEPS: 1 23 | VTK_OUTPUT_BEAM_CONTACT: true 24 | BEAM INTERACTION: 25 | REPARTITIONSTRATEGY: adaptive 26 | SEARCH_STRATEGY: bounding_volume_hierarchy 27 | BEAM INTERACTION/BEAM TO BEAM CONTACT: 28 | STRATEGY: penalty 29 | BINNING STRATEGY: 30 | BIN_SIZE_LOWER_BOUND: 5 31 | DOMAINBOUNDINGBOX: -1 -2 -3 1 2 3 32 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_nox_xml.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM CONTACT: 2 | MODELEVALUATOR: Standard 3 | BEAM INTERACTION: 4 | REPARTITIONSTRATEGY: everydt 5 | BEAM INTERACTION/BEAM TO SOLID SURFACE MESHTYING: 6 | CONSTRAINT_STRATEGY: penalty 7 | CONTACT_DISCRETIZATION: gauss_point_to_segment 8 | COUPLING_TYPE: consistent_fad 9 | GAUSS_POINTS: 6 10 | GEOMETRY_PAIR_SEGMENTATION_SEARCH_POINTS: 2 11 | GEOMETRY_PAIR_STRATEGY: gauss_point_projection_without_boundary_segmentation 12 | BEAM INTERACTION/BEAM TO SOLID SURFACE/RUNTIME VTK OUTPUT: 13 | AVERAGED_NORMALS: true 14 | INTEGRATION_POINTS: true 15 | MORTAR_LAMBDA_CONTINUOUS: true 16 | MORTAR_LAMBDA_CONTINUOUS_SEGMENTS: 5 17 | MORTAR_LAMBDA_DISCRET: true 18 | NODAL_FORCES: true 19 | SEGMENTATION: true 20 | WRITE_OUTPUT: true 21 | BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING: 22 | CONSTRAINT_STRATEGY: penalty 23 | CONTACT_DISCRETIZATION: mortar 24 | COUPLE_RESTART_STATE: false 25 | GAUSS_POINTS: 6 26 | GEOMETRY_PAIR_SEGMENTATION_SEARCH_POINTS: 2 27 | GEOMETRY_PAIR_STRATEGY: segmentation 28 | MORTAR_SHAPE_FUNCTION: none 29 | BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING/RUNTIME VTK OUTPUT: 30 | INTEGRATION_POINTS: true 31 | MORTAR_LAMBDA_CONTINUOUS: true 32 | MORTAR_LAMBDA_CONTINUOUS_SEGMENTS: 5 33 | MORTAR_LAMBDA_DISCRET: true 34 | NODAL_FORCES: true 35 | SEGMENTATION: true 36 | WRITE_OUTPUT: true 37 | BINNING STRATEGY: 38 | BIN_SIZE_LOWER_BOUND: 0.69 39 | DOMAINBOUNDINGBOX: 1 2 3 4 5 6 40 | IO: 41 | OUTPUT_BIN: false 42 | STRUCT_DISP: false 43 | STRUCT_STRAIN: 'no' 44 | STRUCT_STRESS: 'no' 45 | VERBOSITY: Standard 46 | IO/RUNTIME VTK OUTPUT: 47 | EVERY_ITERATION: false 48 | INTERVAL_STEPS: 1 49 | OUTPUT_DATA_FORMAT: binary 50 | IO/RUNTIME VTK OUTPUT/BEAMS: 51 | DISPLACEMENT: true 52 | ELEMENT_GID: true 53 | OUTPUT_BEAMS: true 54 | STRAINS_GAUSSPOINT: true 55 | TRIAD_VISUALIZATIONPOINT: false 56 | USE_ABSOLUTE_POSITIONS: true 57 | IO/RUNTIME VTK OUTPUT/STRUCTURE: 58 | DISPLACEMENT: true 59 | ELEMENT_GID: true 60 | ELEMENT_MAT_ID: true 61 | ELEMENT_OWNER: true 62 | OUTPUT_STRUCTURE: true 63 | STRESS_STRAIN: false 64 | PROBLEM TYPE: 65 | PROBLEMTYPE: Structure 66 | SOLVER 1: 67 | NAME: Structure_Solver 68 | SOLVER: Superlu 69 | STRUCT NOX/Printing: 70 | Details: true 71 | Error: true 72 | Inner Iteration: false 73 | Linear Solver Details: true 74 | Test Details: true 75 | STRUCTURAL DYNAMIC: 76 | DYNAMICTYPE: Statics 77 | INT_STRATEGY: Standard 78 | LINEAR_SOLVER: 1 79 | LOADLIN: true 80 | MAXTIME: 1.7000000000000002 81 | NUMSTEP: 17 82 | PREDICT: TangDis 83 | PRESTRESS: None 84 | PRESTRESSTIME: 0 85 | TIMESTEP: 0.1 86 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static_prestress.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM CONTACT: 2 | MODELEVALUATOR: Standard 3 | BEAM INTERACTION: 4 | REPARTITIONSTRATEGY: everydt 5 | BEAM INTERACTION/BEAM TO SOLID SURFACE MESHTYING: 6 | CONSTRAINT_STRATEGY: penalty 7 | CONTACT_DISCRETIZATION: gauss_point_to_segment 8 | GAUSS_POINTS: 6 9 | GEOMETRY_PAIR_SEGMENTATION_SEARCH_POINTS: 2 10 | GEOMETRY_PAIR_STRATEGY: gauss_point_projection_without_boundary_segmentation 11 | BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING: 12 | CONSTRAINT_STRATEGY: penalty 13 | CONTACT_DISCRETIZATION: mortar 14 | COUPLE_RESTART_STATE: true 15 | GAUSS_POINTS: 6 16 | GEOMETRY_PAIR_SEGMENTATION_SEARCH_POINTS: 2 17 | GEOMETRY_PAIR_STRATEGY: segmentation 18 | MORTAR_SHAPE_FUNCTION: none 19 | BINNING STRATEGY: 20 | BIN_SIZE_LOWER_BOUND: 0.69 21 | DOMAINBOUNDINGBOX: 1 2 3 4 5 6 22 | IO: 23 | OUTPUT_BIN: false 24 | STRUCT_DISP: false 25 | STRUCT_STRAIN: 'no' 26 | STRUCT_STRESS: 'no' 27 | VERBOSITY: Standard 28 | PROBLEM TYPE: 29 | PROBLEMTYPE: Structure 30 | SOLVER 1: 31 | NAME: Structure_Solver 32 | SOLVER: Superlu 33 | STRUCT NOX/Printing: 34 | Details: true 35 | Error: true 36 | Inner Iteration: false 37 | Linear Solver Details: true 38 | Test Details: true 39 | STRUCTURAL DYNAMIC: 40 | DYNAMICTYPE: Statics 41 | INT_STRATEGY: Standard 42 | LINEAR_SOLVER: 1 43 | LOADLIN: true 44 | MAXTIME: 1.7000000000000002 45 | NUMSTEP: 17 46 | PREDICT: TangDis 47 | PRESTRESS: mulf 48 | PRESTRESSTIME: 1 49 | TIMESTEP: 0.1 50 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static_time_all.4C.yaml: -------------------------------------------------------------------------------- 1 | IO: 2 | OUTPUT_BIN: false 3 | STRUCT_DISP: false 4 | STRUCT_STRAIN: 'no' 5 | STRUCT_STRESS: 'no' 6 | VERBOSITY: Standard 7 | PROBLEM TYPE: 8 | PROBLEMTYPE: Structure 9 | SOLVER 1: 10 | NAME: Structure_Solver 11 | SOLVER: Superlu 12 | STRUCT NOX/Printing: 13 | Details: true 14 | Error: true 15 | Inner Iteration: false 16 | Linear Solver Details: true 17 | Test Details: true 18 | STRUCTURAL DYNAMIC: 19 | DYNAMICTYPE: Statics 20 | INT_STRATEGY: Standard 21 | LINEAR_SOLVER: 1 22 | LOADLIN: false 23 | MAXTIME: 2.1 24 | NUMSTEP: 17 25 | PREDICT: TangDis 26 | PRESTRESS: None 27 | PRESTRESSTIME: 0 28 | TIMESTEP: 0.01 29 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static_time_no_n_steps.4C.yaml: -------------------------------------------------------------------------------- 1 | IO: 2 | OUTPUT_BIN: false 3 | STRUCT_DISP: false 4 | STRUCT_STRAIN: 'no' 5 | STRUCT_STRESS: 'no' 6 | VERBOSITY: Standard 7 | PROBLEM TYPE: 8 | PROBLEMTYPE: Structure 9 | SOLVER 1: 10 | NAME: Structure_Solver 11 | SOLVER: Superlu 12 | STRUCT NOX/Printing: 13 | Details: true 14 | Error: true 15 | Inner Iteration: false 16 | Linear Solver Details: true 17 | Test Details: true 18 | STRUCTURAL DYNAMIC: 19 | DYNAMICTYPE: Statics 20 | INT_STRATEGY: Standard 21 | LINEAR_SOLVER: 1 22 | LOADLIN: false 23 | MAXTIME: 2.1 24 | NUMSTEP: 210 25 | PREDICT: TangDis 26 | PRESTRESS: None 27 | PRESTRESSTIME: 0 28 | TIMESTEP: 0.01 29 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static_time_no_time_step.4C.yaml: -------------------------------------------------------------------------------- 1 | IO: 2 | OUTPUT_BIN: false 3 | STRUCT_DISP: false 4 | STRUCT_STRAIN: 'no' 5 | STRUCT_STRESS: 'no' 6 | VERBOSITY: Standard 7 | PROBLEM TYPE: 8 | PROBLEMTYPE: Structure 9 | SOLVER 1: 10 | NAME: Structure_Solver 11 | SOLVER: Superlu 12 | STRUCT NOX/Printing: 13 | Details: true 14 | Error: true 15 | Inner Iteration: false 16 | Linear Solver Details: true 17 | Test Details: true 18 | STRUCTURAL DYNAMIC: 19 | DYNAMICTYPE: Statics 20 | INT_STRATEGY: Standard 21 | LINEAR_SOLVER: 1 22 | LOADLIN: false 23 | MAXTIME: 2.1 24 | NUMSTEP: 17 25 | PREDICT: TangDis 26 | PRESTRESS: None 27 | PRESTRESSTIME: 0 28 | TIMESTEP: 0.12352941176470589 29 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_static_time_no_total_time.4C.yaml: -------------------------------------------------------------------------------- 1 | IO: 2 | OUTPUT_BIN: false 3 | STRUCT_DISP: false 4 | STRUCT_STRAIN: 'no' 5 | STRUCT_STRESS: 'no' 6 | VERBOSITY: Standard 7 | PROBLEM TYPE: 8 | PROBLEMTYPE: Structure 9 | SOLVER 1: 10 | NAME: Structure_Solver 11 | SOLVER: Superlu 12 | STRUCT NOX/Printing: 13 | Details: true 14 | Error: true 15 | Inner Iteration: false 16 | Linear Solver Details: true 17 | Test Details: true 18 | STRUCTURAL DYNAMIC: 19 | DYNAMICTYPE: Statics 20 | INT_STRATEGY: Standard 21 | LINEAR_SOLVER: 1 22 | LOADLIN: false 23 | MAXTIME: 0.17 24 | NUMSTEP: 17 25 | PREDICT: TangDis 26 | PRESTRESS: None 27 | PRESTRESSTIME: 0 28 | TIMESTEP: 0.01 29 | -------------------------------------------------------------------------------- /tests/reference-files/test_header_functions_stress_output.4C.yaml: -------------------------------------------------------------------------------- 1 | BEAM INTERACTION/BEAM TO SOLID SURFACE/RUNTIME VTK OUTPUT: 2 | AVERAGED_NORMALS: true 3 | INTEGRATION_POINTS: true 4 | MORTAR_LAMBDA_CONTINUOUS: true 5 | MORTAR_LAMBDA_CONTINUOUS_SEGMENTS: 5 6 | MORTAR_LAMBDA_DISCRET: true 7 | NODAL_FORCES: true 8 | SEGMENTATION: true 9 | WRITE_OUTPUT: true 10 | BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING/RUNTIME VTK OUTPUT: 11 | INTEGRATION_POINTS: true 12 | MORTAR_LAMBDA_CONTINUOUS: true 13 | MORTAR_LAMBDA_CONTINUOUS_SEGMENTS: 5 14 | MORTAR_LAMBDA_DISCRET: true 15 | NODAL_FORCES: true 16 | SEGMENTATION: true 17 | WRITE_OUTPUT: true 18 | IO: 19 | OUTPUT_BIN: false 20 | STRUCT_DISP: false 21 | STRUCT_STRAIN: gl 22 | STRUCT_STRESS: cauchy 23 | VERBOSITY: Standard 24 | IO/RUNTIME VTK OUTPUT: 25 | EVERY_ITERATION: false 26 | INTERVAL_STEPS: 1 27 | OUTPUT_DATA_FORMAT: binary 28 | IO/RUNTIME VTK OUTPUT/BEAMS: 29 | DISPLACEMENT: true 30 | ELEMENT_GID: true 31 | OUTPUT_BEAMS: true 32 | STRAINS_GAUSSPOINT: true 33 | TRIAD_VISUALIZATIONPOINT: true 34 | USE_ABSOLUTE_POSITIONS: true 35 | IO/RUNTIME VTK OUTPUT/STRUCTURE: 36 | DISPLACEMENT: true 37 | ELEMENT_GID: true 38 | ELEMENT_MAT_ID: true 39 | ELEMENT_OWNER: true 40 | OUTPUT_STRUCTURE: true 41 | STRESS_STRAIN: true 42 | PROBLEM TYPE: 43 | PROBLEMTYPE: Structure 44 | SOLVER 1: 45 | NAME: Structure_Solver 46 | SOLVER: Superlu 47 | STRUCT NOX/Printing: 48 | Details: true 49 | Error: true 50 | Inner Iteration: false 51 | Linear Solver Details: true 52 | Test Details: true 53 | STRUCTURAL DYNAMIC: 54 | DYNAMICTYPE: Statics 55 | INT_STRATEGY: Standard 56 | LINEAR_SOLVER: 1 57 | LOADLIN: true 58 | MAXTIME: 1.7000000000000002 59 | NUMSTEP: 17 60 | PREDICT: TangDis 61 | PRESTRESS: None 62 | PRESTRESSTIME: 0 63 | TIMESTEP: 0.1 64 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_arc_segment_2d.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | - NODE 11 DLINE 2 14 | - NODE 12 DLINE 2 15 | - NODE 13 DLINE 2 16 | - NODE 14 DLINE 2 17 | - NODE 15 DLINE 2 18 | - NODE 16 DLINE 2 19 | - NODE 17 DLINE 2 20 | DNODE-NODE TOPOLOGY: 21 | - NODE 11 DNODE 1 22 | - NODE 1 DNODE 2 23 | - NODE 17 DNODE 3 24 | - NODE 11 DNODE 4 25 | MATERIALS: 26 | - MAT: 1 27 | MAT_BeamReissnerElastHyper: 28 | CROSSAREA: 0.031415926535897934 29 | DENS: 0.0 30 | MOMIN2: 7.853981633974484e-05 31 | MOMIN3: 7.853981633974484e-05 32 | MOMINPOL: 0.00015707963267948968 33 | POISSONRATIO: 0.0 34 | SHEARCORR: 1 35 | YOUNG: -1.0 36 | NODE COORDS: 37 | - NODE 1 COORD 2.060660171779821 3.0606601717798214 0.0 38 | - NODE 2 COORD 1.6457666452124424 3.353877926524791 0.0 39 | - NODE 3 COORD 1.15679269490148 3.49178284305241 0.0 40 | - NODE 4 COORD 0.6498319542161416 3.4585548805965147 0.0 41 | - NODE 5 COORD 0.18304144747745932 3.258005851918136 0.0 42 | - NODE 6 COORD -0.19003001043685264 2.9131421435130807 0.0 43 | - NODE 7 COORD -0.42658477444273 2.4635254915624216 0.0 44 | - NODE 8 COORD -0.4994859874633357 1.9607345775381906 0.0 45 | - NODE 9 COORD -0.40037063974580245 1.4624480756820497 0.0 46 | - NODE 10 COORD -0.14060894840004656 1.025827927504725 0.0 47 | - NODE 11 COORD 0.24999999999999956 0.700961894323342 0.0 48 | - NODE 12 COORD 0.4698463103929542 0.43895926409395714 0.0 49 | - NODE 13 COORD 0.4698463103929542 0.09693912076828842 0.0 50 | - NODE 14 COORD 0.2500000000000003 -0.16506350946109638 0.0 51 | - NODE 15 COORD -0.08682408883346501 -0.22445468407498126 0.0 52 | - NODE 16 COORD -0.38302222155948895 -0.05344461241214704 0.0 53 | - NODE 17 COORD -0.49999999999999994 0.26794919243112275 0.0 54 | STRUCTURE ELEMENTS: 55 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 2.3561944901923453 0.0 0.0 3.0368728984701336 0.0 0.0 2.6965336943312397 HERMITE_CENTERLINE true 56 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 3.0368728984701336 -0.0 -0.0 -2.5656340004316647 -0.0 -0.0 -2.905973204570559 HERMITE_CENTERLINE true 57 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS -0.0 -0.0 -2.5656340004316647 -0.0 -0.0 -1.884955592153877 -0.0 -0.0 -2.2252947962927703 HERMITE_CENTERLINE true 58 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS -0.0 -0.0 -1.884955592153877 -0.0 -0.0 -1.2042771838760873 -0.0 -0.0 -1.544616388014982 HERMITE_CENTERLINE true 59 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS -0.0 -0.0 -1.2042771838760873 -0.0 -0.0 -0.5235987755982993 -0.0 -0.0 -0.8639379797371934 HERMITE_CENTERLINE true 60 | - 6 BEAM3R LINE3 11 13 12 MAT 1 TRIADS -0.0 -0.0 -0.5235987755982993 0.0 -0.0 -1.919862177193763 0.0 -0.0 -1.221730476396031 HERMITE_CENTERLINE true 61 | - 7 BEAM3R LINE3 13 15 14 MAT 1 TRIADS 0.0 -0.0 -1.919862177193763 -0.0 -0.0 2.9670597283903604 0.0 -0.0 -2.617993877991494 HERMITE_CENTERLINE true 62 | - 8 BEAM3R LINE3 15 17 16 MAT 1 TRIADS -0.0 -0.0 2.9670597283903604 -0.0 -0.0 1.5707963267948963 -0.0 -0.0 2.268928027592629 HERMITE_CENTERLINE true 63 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_arc_segment_start_end_node.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_BeamReissnerElastHyper: 4 | CROSSAREA: 3.141592653589793 5 | DENS: 0.0 6 | MOMIN2: 0.7853981633974483 7 | MOMIN3: 0.7853981633974483 8 | MOMINPOL: 1.5707963267948966 9 | POISSONRATIO: 0.0 10 | SHEARCORR: 1 11 | YOUNG: -1.0 12 | NODE COORDS: 13 | - NODE 1 COORD 0 0 0 14 | - NODE 2 COORD 1.682941969615793 0.9193953882637205 0.0 15 | - NODE 3 COORD 0.33179226538683004 0.027713536874149902 0.0 16 | - NODE 4 COORD 0.6543893935923044 0.11008610737052482 0.0 17 | - NODE 5 COORD 0.958851077208406 0.2448348762192547 0.0 18 | - NODE 6 COORD 1.236739606139474 0.4282254784461039 0.0 19 | - NODE 7 COORD 1.480353706392074 0.6551755118338862 0.0 20 | STRUCTURE ELEMENTS: 21 | - 1 BEAM3R LINE3 1 4 3 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.33333333333333326 0.0 0.0 0.16666666666666666 HERMITE_CENTERLINE true 22 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS 0.0 0.0 0.33333333333333326 0.0 0.0 0.6666666666666666 0.0 0.0 0.5000000000000001 HERMITE_CENTERLINE true 23 | - 3 BEAM3R LINE3 6 2 7 MAT 1 TRIADS 0.0 0.0 0.6666666666666666 0.0 0.0 1.0 0.0 0.0 0.8333333333333331 HERMITE_CENTERLINE true 24 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_arc_segment_via_axis.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | DNODE-NODE TOPOLOGY: 10 | - NODE 7 DNODE 1 11 | - NODE 1 DNODE 2 12 | MATERIALS: 13 | - MAT: 1 14 | MAT_BeamReissnerElastHyper: 15 | CROSSAREA: 3.141592653589793 16 | DENS: 0.0 17 | MOMIN2: 0.7853981633974483 18 | MOMIN3: 0.7853981633974483 19 | MOMINPOL: 1.5707963267948966 20 | POISSONRATIO: 0.0 21 | SHEARCORR: 1 22 | YOUNG: -1.0 23 | NODE COORDS: 24 | - NODE 1 COORD 0.0 0.0 0.0 25 | - NODE 2 COORD 0.33179226538683004 0.027713536874149902 0.0 26 | - NODE 3 COORD 0.6543893935923044 0.11008610737052482 0.0 27 | - NODE 4 COORD 0.958851077208406 0.2448348762192547 0.0 28 | - NODE 5 COORD 1.236739606139474 0.4282254784461039 0.0 29 | - NODE 6 COORD 1.480353706392074 0.6551755118338862 0.0 30 | - NODE 7 COORD 1.682941969615793 0.9193953882637205 0.0 31 | STRUCTURE ELEMENTS: 32 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.33333333333333326 0.0 0.0 0.16666666666666666 HERMITE_CENTERLINE true 33 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.33333333333333326 0.0 0.0 0.6666666666666666 0.0 0.0 0.5000000000000001 HERMITE_CENTERLINE true 34 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.0 0.0 0.6666666666666666 0.0 0.0 1.0 0.0 0.0 0.8333333333333331 HERMITE_CENTERLINE true 35 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_arc_segment_via_rotation.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | DNODE-NODE TOPOLOGY: 14 | - NODE 11 DNODE 1 15 | - NODE 1 DNODE 2 16 | MATERIALS: 17 | - MAT: 1 18 | MAT_BeamReissnerElastHyper: 19 | CROSSAREA: 0.031415926535897934 20 | DENS: 0.0 21 | MOMIN2: 7.853981633974484e-05 22 | MOMIN3: 7.853981633974484e-05 23 | MOMINPOL: 0.00015707963267948968 24 | POISSONRATIO: 0.0 25 | SHEARCORR: 1.1 26 | YOUNG: 207.0 27 | NODE COORDS: 28 | - NODE 1 COORD 7.162636044161906 -2.6430897236979263 6.37697658671569 29 | - NODE 2 COORD 8.256590787469001 -1.8989748747875668 6.04176485666904 30 | - NODE 3 COORD 9.252625190257273 -1.0077170693943307 5.765385071732272 31 | - NODE 4 COORD 10.132185016172235 0.014081245891835792 5.552985664368124 32 | - NODE 5 COORD 10.878885729848193 1.147385901773812 5.408523233660676 33 | - NODE 6 COORD 11.478817709801373 2.371085576807264 5.334688841360594 34 | - NODE 7 COORD 11.920805358360147 3.6623850613750304 5.332857882496393 35 | - NODE 8 COORD 12.196615281904602 4.99722988931206 5.4030644643674055 36 | - NODE 9 COORD 12.301109663411534 6.350754427097294 5.544000771189328 37 | - NODE 10 COORD 12.23234197026442 7.697745073558568 5.753041426227802 38 | - NODE 11 COORD 11.991593214473125 9.013109941556486 6.02629239759957 39 | STRUCTURE ELEMENTS: 40 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.21733418528579393 0.3380753993334572 0.4829648561906531 0.26508092960963275 0.3096981879904054 0.7523860326317682 0.2414180756762219 0.32449822319851607 0.6176914840158138 HERMITE_CENTERLINE true 41 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.26508092960963275 0.3096981879904054 0.7523860326317682 0.3111041912456913 0.27633359284648557 1.0216467755507477 0.2883133842096355 0.29365261001098 0.887040613431983 HERMITE_CENTERLINE true 42 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.3111041912456913 0.27633359284648557 1.0216467755507477 0.3553054416351028 0.23773516142983786 1.290676392394534 0.33344005607897564 0.25770763741580405 1.1561953697889618 HERMITE_CENTERLINE true 43 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 0.3553054416351028 0.23773516142983786 1.290676392394534 0.3975499456194059 0.19355827177975687 1.559390312363286 0.37668233160812736 0.21636991452763238 1.425078803326371 HERMITE_CENTERLINE true 44 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS 0.3975499456194059 0.19355827177975687 1.559390312363286 0.43765828313918487 0.14333915639220143 1.8276836358858968 0.4178843972019514 0.16923838382720616 1.6935971247514463 HERMITE_CENTERLINE true 45 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_2d_sin.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | - NODE 12 DLINE 1 14 | - NODE 13 DLINE 1 15 | - NODE 14 DLINE 1 16 | - NODE 15 DLINE 1 17 | - NODE 16 DLINE 1 18 | - NODE 17 DLINE 1 19 | DNODE-NODE TOPOLOGY: 20 | - NODE 17 DNODE 1 21 | - NODE 1 DNODE 2 22 | MATERIALS: 23 | - MAT: 1 24 | MAT_BeamReissnerElastHyper: 25 | CROSSAREA: 3.141592653589793 26 | DENS: 0.0 27 | MOMIN2: 0.7853981633974483 28 | MOMIN3: 0.7853981633974483 29 | MOMINPOL: 1.5707963267948966 30 | POISSONRATIO: 0.0 31 | SHEARCORR: 1 32 | YOUNG: -1.0 33 | NODE COORDS: 34 | - NODE 1 COORD 0.0 0.0 0.0 35 | - NODE 2 COORD 0.34091469552012377 0.33434928598073926 0.0 36 | - NODE 3 COORD 0.7023966671334764 0.6460489074187755 0.0 37 | - NODE 4 COORD 1.108594176248008 0.8950726850615089 0.0 38 | - NODE 5 COORD 1.5707963267948963 1.0 0.0 39 | - NODE 6 COORD 2.032998477341785 0.8950726850615092 0.0 40 | - NODE 7 COORD 2.439195986456317 0.6460489074187755 0.0 41 | - NODE 8 COORD 2.8006779580696692 0.3343492859807395 0.0 42 | - NODE 9 COORD 3.141592653589793 1.2246467991473532e-16 0.0 43 | - NODE 10 COORD 3.482507349109917 -0.33434928598073926 0.0 44 | - NODE 11 COORD 3.84398932072327 -0.6460489074187756 0.0 45 | - NODE 12 COORD 4.250186829837801 -0.895072685061509 0.0 46 | - NODE 13 COORD 4.712388980384691 -1.0 0.0 47 | - NODE 14 COORD 5.174591130931579 -0.8950726850615087 0.0 48 | - NODE 15 COORD 5.58078864004611 -0.6460489074187753 0.0 49 | - NODE 16 COORD 5.942270611659463 -0.33434928598073876 0.0 50 | - NODE 17 COORD 6.283185307179587 6.432490598706546e-16 0.0 51 | STRUCTURE ELEMENTS: 52 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.7853981633974484 0.0 0.0 0.6519563943651672 0.0 0.0 0.7557788888027736 HERMITE_CENTERLINE true 53 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.6519563943651672 0.0 0.0 2.83276944882399e-16 0.0 0.0 0.41945604590056756 HERMITE_CENTERLINE true 54 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.0 0.0 2.83276944882399e-16 -0.0 -0.0 -0.6519563943651672 -0.0 -0.0 -0.41945604590056723 HERMITE_CENTERLINE true 55 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS -0.0 -0.0 -0.6519563943651672 -0.0 -0.0 -0.7853981633974484 -0.0 -0.0 -0.7557788888027736 HERMITE_CENTERLINE true 56 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS -0.0 -0.0 -0.7853981633974484 -0.0 -0.0 -0.6519563943651672 -0.0 -0.0 -0.7557788888027736 HERMITE_CENTERLINE true 57 | - 6 BEAM3R LINE3 11 13 12 MAT 1 TRIADS -0.0 -0.0 -0.6519563943651672 0.0 0.0 7.044813998280222e-16 -0.0 -0.0 -0.4194560459005675 HERMITE_CENTERLINE true 58 | - 7 BEAM3R LINE3 13 15 14 MAT 1 TRIADS 0.0 0.0 7.044813998280222e-16 0.0 0.0 0.6519563943651674 0.0 0.0 0.4194560459005679 HERMITE_CENTERLINE true 59 | - 8 BEAM3R LINE3 15 17 16 MAT 1 TRIADS 0.0 0.0 0.6519563943651674 0.0 0.0 0.7853981633974484 0.0 0.0 0.7557788888027737 HERMITE_CENTERLINE true 60 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_2d_sin_mathematica.csv: -------------------------------------------------------------------------------- 1 | 0.,0.,0. 2 | 0.34091469552012366,0.33434928598073915,0. 3 | 0.7023966671334764,0.6460489074187755,0. 4 | 1.1085941762480083,0.895072685061509,0. 5 | 1.5707963267948961,1.,0. 6 | 2.032998477341785,0.8950726850615092,0. 7 | 2.439195986456317,0.6460489074187755,0. 8 | 2.8006779580696692,0.3343492859807395,0. 9 | 3.141592653589793,1.2246467991473532e-16,0. 10 | 3.482507349109917,-0.33434928598073926,0. 11 | 3.843989320723269,-0.646048907418775,0. 12 | 4.250186829837801,-0.895072685061509,0. 13 | 4.71238898038469,-1.,0. 14 | 5.174591130931578,-0.8950726850615092,0. 15 | 5.5807886400461095,-0.646048907418776,0. 16 | 5.942270611659463,-0.33434928598073876,0. 17 | 6.283185307179586,-2.4492935982947064e-16,0. 18 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_3d_curve_rotation.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | DNODE-NODE TOPOLOGY: 12 | - NODE 9 DNODE 1 13 | - NODE 1 DNODE 2 14 | MATERIALS: 15 | - MAT: 1 16 | MAT_BeamReissnerElastHyper: 17 | CROSSAREA: 3.141592653589793 18 | DENS: 0.0 19 | MOMIN2: 0.7853981633974483 20 | MOMIN3: 0.7853981633974483 21 | MOMINPOL: 1.5707963267948966 22 | POISSONRATIO: 0.0 23 | SHEARCORR: 1 24 | YOUNG: -1.0 25 | NODE COORDS: 26 | - NODE 1 COORD 0.0 0.0 0.0 27 | - NODE 2 COORD 0.208084332890912 0.04329908959465587 0.0 28 | - NODE 3 COORD 0.39105574508826235 0.15292459576653603 0.0 29 | - NODE 4 COORD 0.5469196157820797 0.2991210661272178 0.0 30 | - NODE 5 COORD 0.6818949304805945 0.4649806962151348 0.0 31 | - NODE 6 COORD 0.801458946742216 0.6423364433131421 0.0 32 | - NODE 7 COORD 0.9094060944951184 0.8270194447048643 0.0 33 | - NODE 8 COORD 1.0083188967271186 1.0167069974969938 0.0 34 | - NODE 9 COORD 1.1 1.2100000000000002 0.0 35 | - NODE 10 COORD 1.1 1.2100000000000002 0.0 36 | - NODE 11 COORD 1.8991825551988166 3.6068943779715066 0.0 37 | - NODE 12 COORD 2.464152463209104 6.072047361939496 0.0 38 | - NODE 13 COORD 2.6108521570551297 6.8165489859994235 0.0 39 | - NODE 14 COORD 2.7499999999999996 7.562499999999998 0.0 40 | STRUCTURE ELEMENTS: 41 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 1.5707963267948968 0.0 0.0 -2.364015930102319 -0.8146737874746974 0.2803705952819155 2.7113042034212564 0.5416625037192365 0.10479645413850155 HERMITE_CENTERLINE true 42 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS -2.364015930102319 -0.8146737874746974 0.2803705952819155 -0.7552657550885088 -0.3827475969489562 0.8837498297173239 -1.4880106219624025 -0.6557650839998964 0.6443271536650724 HERMITE_CENTERLINE true 43 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS -0.7552657550885088 -0.3827475969489562 0.8837498297173239 0.43505816548931464 0.25728034318457066 1.0465190733491763 -0.12275889945449443 -0.06810452220880496 1.0114345929107798 HERMITE_CENTERLINE true 44 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 0.43505816548931464 0.25728034318457066 1.0465190733491763 1.3813429411167701 0.8894650506573111 0.8894650506573114 0.9334222807767336 0.5790208860017014 1.0029890941139965 HERMITE_CENTERLINE true 45 | - 5 BEAM3R LINE3 10 12 11 MAT 1 TRIADS 1.3813429411167701 0.8894650506573111 0.8894650506573114 2.3947087115420573 1.9576000710912946 0.06066682497085691 -0.1256215544408244 -0.0968296125985659 1.3108400343887796 HERMITE_CENTERLINE true 46 | - 6 BEAM3R LINE3 12 14 13 MAT 1 TRIADS 2.3947087115420573 1.9576000710912946 0.06066682497085691 -1.2889035538210152 -1.0756884278438377 1.0756884278438332 -1.9018170737580962 -1.572164182643977 0.6425601028988697 HERMITE_CENTERLINE true 47 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_3d_helix.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 1 10 | - NODE 9 DLINE 1 11 | - NODE 10 DLINE 1 12 | - NODE 11 DLINE 1 13 | DNODE-NODE TOPOLOGY: 14 | - NODE 11 DNODE 1 15 | - NODE 1 DNODE 2 16 | MATERIALS: 17 | - MAT: 1 18 | MAT_BeamReissnerElastHyper: 19 | CROSSAREA: 3.141592653589793 20 | DENS: 0.0 21 | MOMIN2: 0.7853981633974483 22 | MOMIN3: 0.7853981633974483 23 | MOMINPOL: 1.5707963267948966 24 | POISSONRATIO: 0.0 25 | SHEARCORR: 1 26 | YOUNG: -1.0 27 | NODE COORDS: 28 | - NODE 1 COORD 2.0 0.0 0.0 29 | - NODE 2 COORD 1.618033988749895 1.175570504584946 0.3999999999999999 30 | - NODE 3 COORD 0.6180339887498949 1.902113032590307 0.8 31 | - NODE 4 COORD -0.6180339887498947 1.9021130325903073 1.2 32 | - NODE 5 COORD -1.6180339887498942 1.1755705045849472 1.5999999999999996 33 | - NODE 6 COORD -2.0 2.021286199229721e-15 1.9999999999999993 34 | - NODE 7 COORD -1.618033988749896 -1.1755705045849445 2.3999999999999995 35 | - NODE 8 COORD -0.6180339887498986 -1.902113032590306 2.799999999999999 36 | - NODE 9 COORD 0.6180339887498911 -1.9021130325903084 3.199999999999999 37 | - NODE 10 COORD 1.6180339887498925 -1.1755705045849494 3.5999999999999988 38 | - NODE 11 COORD 2.0 -5.818929237859693e-15 3.9999999999999982 39 | STRUCTURE ELEMENTS: 40 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 1.432490763274102 1.0473349985879405 1.432490763274102 0.6475875090235677 1.5956830203958237 2.5208215452042295 1.0571455248846056 1.366902020129022 1.9632968858767095 HERMITE_CENTERLINE true 41 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.6475875090235677 1.5956830203958237 2.5208215452042295 0.11098155773526094 -0.9843463265410145 -1.9309838928657332 -0.1694070852535525 -1.3392477829012481 -2.364828704746996 HERMITE_CENTERLINE true 42 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.11098155773526094 -0.9843463265410145 -1.9309838928657332 0.21510060716245816 -0.4620568747280538 -0.862398499625149 0.2199941890693173 -0.6826728478343331 -1.4193793335825813 HERMITE_CENTERLINE true 43 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 0.21510060716245816 -0.4620568747280538 -0.862398499625149 0.047447696269011894 -0.30577278242312844 0.3115108558866103 0.14397667862935395 -0.33484081329987464 -0.2805655528970511 HERMITE_CENTERLINE true 44 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS 0.047447696269011894 -0.30577278242312844 0.3115108558866103 -0.06734185225903327 -0.5402964058178148 1.4753713069899312 -0.036310909174023236 -0.3753481948214962 0.9013229918591362 HERMITE_CENTERLINE true 45 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_3d_helix_mathematica.csv: -------------------------------------------------------------------------------- 1 | 2.,0.,0. 2 | 1.618033988749895,1.1755705045849463,0.4 3 | 0.6180339887498949,1.902113032590307,0.8 4 | -0.6180339887498951,1.902113032590307,1.2000000000000002 5 | -1.6180339887498947,1.1755705045849465,1.6 6 | -2.,2.021286199229721e-15,1.9999999999999996 7 | -1.618033988749896,-1.1755705045849445,2.3999999999999995 8 | -0.6180339887498986,-1.902113032590306,2.799999999999999 9 | 0.6180339887498979,-1.9021130325903062,3.200000000000001 10 | 1.6180339887498936,-1.175570504584948,3.5999999999999996 11 | 2.,-4.898587196589413e-16,4. 12 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_curve_3d_line.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 1 DLINE 1 3 | - NODE 2 DLINE 1 4 | - NODE 3 DLINE 1 5 | - NODE 4 DLINE 1 6 | - NODE 5 DLINE 1 7 | - NODE 6 DLINE 1 8 | - NODE 7 DLINE 1 9 | - NODE 8 DLINE 2 10 | - NODE 9 DLINE 2 11 | - NODE 10 DLINE 2 12 | - NODE 11 DLINE 2 13 | - NODE 12 DLINE 2 14 | - NODE 13 DLINE 2 15 | - NODE 14 DLINE 2 16 | DNODE-NODE TOPOLOGY: 17 | - NODE 7 DNODE 1 18 | - NODE 1 DNODE 2 19 | - NODE 14 DNODE 3 20 | - NODE 8 DNODE 4 21 | MATERIALS: 22 | - MAT: 1 23 | MAT_BeamReissnerElastHyper: 24 | CROSSAREA: 0.031415926535897934 25 | DENS: 0.0 26 | MOMIN2: 7.853981633974484e-05 27 | MOMIN3: 7.853981633974484e-05 28 | MOMINPOL: 0.00015707963267948968 29 | POISSONRATIO: 0.0 30 | SHEARCORR: 1.1 31 | YOUNG: 207.0 32 | NODE COORDS: 33 | - NODE 1 COORD 0.0 1.0 0.0 34 | - NODE 2 COORD 0.5538994394911917 1.0 0.0 35 | - NODE 3 COORD 1.1077988789823834 1.0 0.0 36 | - NODE 4 COORD 1.6616983184735754 1.0 0.0 37 | - NODE 5 COORD 2.2155977579647668 1.0 0.0 38 | - NODE 6 COORD 2.769497197455959 1.0 0.0 39 | - NODE 7 COORD 3.323396636947152 1.0 0.0 40 | - NODE 8 COORD 3.3233966369471513 0.0 0.0 41 | - NODE 9 COORD 2.769497197455959 0.0 0.0 42 | - NODE 10 COORD 2.2155977579647668 0.0 0.0 43 | - NODE 11 COORD 1.6616983184735754 0.0 0.0 44 | - NODE 12 COORD 1.1077988789823838 0.0 0.0 45 | - NODE 13 COORD 0.5538994394911921 0.0 0.0 46 | - NODE 14 COORD -3.757736115097131e-17 0.0 0.0 47 | STRUCTURE ELEMENTS: 48 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 49 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 50 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 51 | - 4 BEAM3R LINE3 8 10 9 MAT 1 TRIADS 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 HERMITE_CENTERLINE true 52 | - 5 BEAM3R LINE3 10 12 11 MAT 1 TRIADS 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 HERMITE_CENTERLINE true 53 | - 6 BEAM3R LINE3 12 14 13 MAT 1 TRIADS 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 0.0 3.141592653589793 0.0 HERMITE_CENTERLINE true 54 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_helix_helix_angle_right_angle.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 4 DLINE 1 3 | - NODE 5 DLINE 1 4 | - NODE 6 DLINE 1 5 | - NODE 7 DLINE 1 6 | - NODE 8 DLINE 1 7 | DNODE-NODE TOPOLOGY: 8 | - NODE 8 DNODE 1 9 | - NODE 4 DNODE 2 10 | MATERIALS: 11 | - MAT: 1 12 | MAT_BeamReissnerElastHyper: 13 | CROSSAREA: 0.7853981633974483 14 | DENS: 0.0 15 | MOMIN2: 0.04908738521234052 16 | MOMIN3: 0.04908738521234052 17 | MOMINPOL: 0.09817477042468103 18 | POISSONRATIO: 0.0 19 | SHEARCORR: 1.0 20 | YOUNG: 100000.0 21 | NODE COORDS: 22 | - NODE 1 COORD 0.0 0.0 0.0 23 | - NODE 2 COORD -0.5 -0.5 -0.5 24 | - NODE 3 COORD -1.0 -1.0 -1.0 25 | - NODE 4 COORD 2.0 2.0 1.0 26 | - NODE 5 COORD 3.4433756729740645 3.4433756729740645 2.4433756729740645 27 | - NODE 6 COORD 4.886751345948129 4.886751345948129 3.886751345948129 28 | - NODE 7 COORD 6.330127018922194 6.330127018922194 5.330127018922194 29 | - NODE 8 COORD 7.773502691896258 7.773502691896258 6.773502691896258 30 | STRUCTURE ELEMENTS: 31 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 HERMITE_CENTERLINE true 32 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 33 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 34 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_helix_no_rotation.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 4 DLINE 1 3 | - NODE 5 DLINE 1 4 | - NODE 6 DLINE 1 5 | - NODE 7 DLINE 1 6 | - NODE 8 DLINE 1 7 | - NODE 9 DLINE 1 8 | - NODE 10 DLINE 1 9 | DNODE-NODE TOPOLOGY: 10 | - NODE 10 DNODE 1 11 | - NODE 4 DNODE 2 12 | MATERIALS: 13 | - MAT: 1 14 | MAT_BeamReissnerElastHyper: 15 | CROSSAREA: 0.7853981633974483 16 | DENS: 0.0 17 | MOMIN2: 0.04908738521234052 18 | MOMIN3: 0.04908738521234052 19 | MOMINPOL: 0.09817477042468103 20 | POISSONRATIO: 0.0 21 | SHEARCORR: 1.0 22 | YOUNG: 100000.0 23 | NODE COORDS: 24 | - NODE 1 COORD 0.0 0.0 0.0 25 | - NODE 2 COORD -0.5 -0.5 -0.5 26 | - NODE 3 COORD -1.0 -1.0 -1.0 27 | - NODE 4 COORD 2.0 0.0 0.0 28 | - NODE 5 COORD 1.3448244881661136 1.4803537063920733 1.6666666666666672 29 | - NODE 6 COORD -0.19144709602875087 1.9908159155035283 3.333333333333334 30 | - NODE 7 COORD -1.6022872310938674 1.1969442882079107 5.000000000000001 31 | - NODE 8 COORD -1.9633480094221583 -0.3811359257509728 6.666666666666666 32 | - NODE 9 COORD -1.038071250769245 -1.7095052144776828 8.333333333333332 33 | - NODE 10 COORD 0.5673243709264525 -1.9178485493262813 10.0 34 | STRUCTURE ELEMENTS: 35 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 HERMITE_CENTERLINE true 36 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS -0.6139431255689364 -1.4821898202742554 0.6139431255689365 0.8258450013769127 -1.7513205913909173 1.8223312668867806 0.04120030906466041 -1.7186721028420264 1.244417716482343 HERMITE_CENTERLINE true 37 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS 0.8258450013769127 -1.7513205913909173 1.8223312668867806 -1.7669336271167504 0.5404430316868216 -1.6315616821915642 -1.6273452234479586 1.408670359051302 -2.1467872061732525 HERMITE_CENTERLINE true 38 | - 4 BEAM3R LINE3 8 10 9 MAT 1 TRIADS -1.7669336271167504 0.5404430316868216 -1.6315616821915642 -1.361584614588893 -0.8097182683755328 -0.39022843571611004 -1.6574070681011424 -0.19957652093529182 -1.0308418657218679 HERMITE_CENTERLINE true 39 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_helix_radius_zero.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 4 DLINE 1 3 | - NODE 5 DLINE 1 4 | - NODE 6 DLINE 1 5 | - NODE 7 DLINE 1 6 | - NODE 8 DLINE 1 7 | - NODE 9 DLINE 1 8 | - NODE 10 DLINE 1 9 | - NODE 11 DLINE 1 10 | - NODE 12 DLINE 1 11 | DNODE-NODE TOPOLOGY: 12 | - NODE 12 DNODE 1 13 | - NODE 4 DNODE 2 14 | MATERIALS: 15 | - MAT: 1 16 | MAT_BeamReissnerElastHyper: 17 | CROSSAREA: 0.7853981633974483 18 | DENS: 0.0 19 | MOMIN2: 0.04908738521234052 20 | MOMIN3: 0.04908738521234052 21 | MOMINPOL: 0.09817477042468103 22 | POISSONRATIO: 0.0 23 | SHEARCORR: 1.0 24 | YOUNG: 100000.0 25 | NODE COORDS: 26 | - NODE 1 COORD 0.0 0.0 0.0 27 | - NODE 2 COORD -0.5 -0.5 -0.5 28 | - NODE 3 COORD -1.0 -1.0 -1.0 29 | - NODE 4 COORD 1.0 1.0 1.0 30 | - NODE 5 COORD 6.773502691896258 6.773502691896258 6.773502691896258 31 | - NODE 6 COORD 12.547005383792516 12.547005383792516 12.547005383792516 32 | - NODE 7 COORD 18.320508075688775 18.320508075688775 18.320508075688775 33 | - NODE 8 COORD 24.094010767585033 24.094010767585033 24.094010767585033 34 | - NODE 9 COORD 29.86751345948129 29.86751345948129 29.86751345948129 35 | - NODE 10 COORD 35.64101615137755 35.64101615137755 35.64101615137755 36 | - NODE 11 COORD 41.41451884327381 41.41451884327381 41.41451884327381 37 | - NODE 12 COORD 47.188021535170066 47.188021535170066 47.188021535170066 38 | STRUCTURE ELEMENTS: 39 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 HERMITE_CENTERLINE true 40 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 41 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 42 | - 4 BEAM3R LINE3 8 10 9 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 43 | - 5 BEAM3R LINE3 10 12 11 MAT 1 TRIADS -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 -0.2415358268333237 -0.7599355660301604 0.5831190689400094 HERMITE_CENTERLINE true 44 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_helix_rotation_offset.4C.yaml: -------------------------------------------------------------------------------- 1 | DLINE-NODE TOPOLOGY: 2 | - NODE 4 DLINE 1 3 | - NODE 5 DLINE 1 4 | - NODE 6 DLINE 1 5 | - NODE 7 DLINE 1 6 | - NODE 8 DLINE 1 7 | - NODE 9 DLINE 1 8 | - NODE 10 DLINE 1 9 | - NODE 11 DLINE 1 10 | - NODE 12 DLINE 1 11 | DNODE-NODE TOPOLOGY: 12 | - NODE 12 DNODE 1 13 | - NODE 4 DNODE 2 14 | MATERIALS: 15 | - MAT: 1 16 | MAT_BeamReissnerElastHyper: 17 | CROSSAREA: 0.7853981633974483 18 | DENS: 0.0 19 | MOMIN2: 0.04908738521234052 20 | MOMIN3: 0.04908738521234052 21 | MOMINPOL: 0.09817477042468103 22 | POISSONRATIO: 0.0 23 | SHEARCORR: 1.0 24 | YOUNG: 100000.0 25 | NODE COORDS: 26 | - NODE 1 COORD 0.0 0.0 0.0 27 | - NODE 2 COORD -0.5 -0.5 -0.5 28 | - NODE 3 COORD -1.0 -1.0 -1.0 29 | - NODE 4 COORD 3.0 0.0 0.0 30 | - NODE 5 COORD 2.9899942381967968 2.426769175784295 -0.251699904519993 31 | - NODE 6 COORD 2.0519768015920334 4.337634849330876 0.940515367999287 32 | - NODE 7 COORD 1.4003434135555275 4.862483210034642 3.2323639047931243 33 | - NODE 8 COORD 2.03994442246726 4.145340442217015 5.474969173160117 34 | - NODE 9 COORD 4.030842234568033 3.2389896880717854 6.555485624665669 35 | - NODE 10 COORD 6.444364035815164 3.334656362134039 6.211360658817379 36 | - NODE 11 COORD 8.042605744823701 4.8903961413441985 5.222442680059781 37 | - NODE 12 COORD 8.184198504513143 7.295938558570218 4.840371012605419 38 | STRUCTURE ELEMENTS: 39 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 -0.7198030355060098 2.2646906439886343 -0.29815217954391177 HERMITE_CENTERLINE true 40 | - 2 BEAM3R LINE3 4 6 5 MAT 1 TRIADS 1.5013071810798473 1.3566167240155182 0.47717133862706385 -1.218631059787769 -2.054693958506075 -0.8640813750822302 1.7504726361516754 2.1624243029311563 0.8466932868507685 HERMITE_CENTERLINE true 41 | - 3 BEAM3R LINE3 6 8 7 MAT 1 TRIADS -1.218631059787769 -2.054693958506075 -0.8640813750822302 0.08633662570010421 -0.868861065577915 -0.44599744735574365 -0.5233109655498717 -1.4940624065656631 -0.6769208279781128 HERMITE_CENTERLINE true 42 | - 4 BEAM3R LINE3 8 10 9 MAT 1 TRIADS 0.08633662570010421 -0.868861065577915 -0.44599744735574365 1.086514894040757 0.5176714638431001 0.11327033771024575 0.6227839078290244 -0.19608889310541774 -0.18148166913365246 HERMITE_CENTERLINE true 43 | - 5 BEAM3R LINE3 10 12 11 MAT 1 TRIADS 1.086514894040757 0.5176714638431001 0.11327033771024575 1.7310756605368884 2.0723180472859215 0.8042388610039453 1.4661583329729413 1.272069286157936 0.43960667243083745 HERMITE_CENTERLINE true 44 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_node_continuation.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_BeamReissnerElastHyper: 4 | CROSSAREA: 0.031415926535897934 5 | DENS: 0.0 6 | MOMIN2: 7.853981633974484e-05 7 | MOMIN3: 7.853981633974484e-05 8 | MOMINPOL: 0.00015707963267948968 9 | POISSONRATIO: 0.0 10 | SHEARCORR: 1 11 | YOUNG: -1.0 12 | NODE COORDS: 13 | - NODE 1 COORD 1 2 3 14 | - NODE 2 COORD 1.6 2.0 3.0 15 | - NODE 3 COORD 2.2 2.0 3.0 16 | - NODE 4 COORD 2.9071067811865476 2.0 2.7071067811865475 17 | - NODE 5 COORD 3.2 2.0 2.0 18 | - NODE 6 COORD 3.276120467488713 2.0 1.6173165676349104 19 | - NODE 7 COORD 3.4928932188134527 2.0 1.2928932188134525 20 | - NODE 8 COORD 3.8173165676349106 2.0 1.0761204674887135 21 | - NODE 9 COORD 4.2 2.0 1.0 22 | - NODE 10 COORD 5.123879532511287 1.3826834323650898 1.0 23 | - NODE 11 COORD 4.907106781186548 0.29289321881345254 1.0 24 | - NODE 12 COORD 4.636049181731705 0.02183561935860928 1.0 25 | - NODE 13 COORD 4.364991582276862 -0.24922198009623397 1.0 26 | - NODE 14 COORD 4.093933982822019 -0.5202795795510773 1.0 27 | - NODE 15 COORD 3.8228763833671757 -0.7913371790059205 1.0 28 | - NODE 16 COORD 3.5518187839123323 -1.0623947784607637 1.0 29 | - NODE 17 COORD 3.2807611844574893 -1.3334523779156071 1.0 30 | STRUCTURE ELEMENTS: 31 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 HERMITE_CENTERLINE true 32 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 0.0 -0.0 1.5707963267948963 -0.0 -0.0 0.7853981633974485 -0.0 HERMITE_CENTERLINE true 33 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS -0.0 1.5707963267948963 -0.0 0.0 0.7853981633974482 0.0 0.0 1.1780972450961724 0.0 HERMITE_CENTERLINE true 34 | - 4 BEAM3R LINE3 7 9 8 MAT 1 TRIADS 0.0 0.7853981633974482 0.0 0.0 0.0 0.0 0.0 0.39269908169872403 0.0 HERMITE_CENTERLINE true 35 | - 5 BEAM3R LINE3 9 11 10 MAT 1 TRIADS 0.0 0.0 0.0 -0.0 -0.0 -2.356194490192345 -0.0 -0.0 -1.1780972450961724 HERMITE_CENTERLINE true 36 | - 6 BEAM3R LINE3 11 13 12 MAT 1 TRIADS -0.0 -0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 HERMITE_CENTERLINE true 37 | - 7 BEAM3R LINE3 13 15 14 MAT 1 TRIADS 2.1700298920642378e-17 0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 HERMITE_CENTERLINE true 38 | - 8 BEAM3R LINE3 15 17 16 MAT 1 TRIADS 2.1700298920642378e-17 0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 2.1700298920642378e-17 0.0 -2.356194490192345 HERMITE_CENTERLINE true 39 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_splinepy_bezier.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_BeamReissnerElastHyper: 4 | YOUNG: -1.0 5 | POISSONRATIO: 0.0 6 | DENS: 0.0 7 | CROSSAREA: 0.007853981633974483 8 | SHEARCORR: 1 9 | MOMINPOL: 9.817477042468105e-06 10 | MOMIN2: 4.9087385212340526e-06 11 | MOMIN3: 4.9087385212340526e-06 12 | NODE COORDS: 13 | - NODE 1 COORD 0.0 0.0 0.0 14 | - NODE 2 COORD 0.3761462637840961 0.6579685197290357 0.3702329932617894 15 | - NODE 3 COORD 0.8505170707959794 1.2187812831150433 0.7821563560335171 16 | - NODE 4 COORD 1.5401030804370843 1.4989278286263044 1.134214475349859 17 | - NODE 5 COORD 2.245919353495434 1.1290695453873025 0.9871679632649236 18 | - NODE 6 COORD 2.6826770534863744 0.5675166581045256 0.5375023150803098 19 | - NODE 7 COORD 2.9999999999999996 6.661338147750939e-16 6.661338147750938e-16 20 | STRUCTURE ELEMENTS: 21 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 1.6028352674999478 0.5729531319236282 1.1773870157650494 1.8164601221267633 0.2543837576810875 0.9665096387124474 1.6876134122663244 0.44968632098179906 1.1311977052775886 HERMITE_CENTERLINE true 22 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 1.8164601221267633 0.2543837576810875 0.9665096387124474 1.9720526171152393 -0.4758406379981104 -0.9445591958710231 2.029875836083274 -0.18284256721033681 0.17706850333880483 HERMITE_CENTERLINE true 23 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 1.9720526171152393 -0.4758406379981104 -0.9445591958710231 1.8895150142454875 -0.48088627476240375 -1.4086287394830836 1.913571765504806 -0.49240779857931083 -1.2685524900275824 HERMITE_CENTERLINE true 24 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_creation_functions_splinepy_nurbs.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_BeamReissnerElastHyper: 4 | CROSSAREA: 0.007853981633974483 5 | DENS: 0.0 6 | MOMIN2: 4.9087385212340526e-06 7 | MOMIN3: 4.9087385212340526e-06 8 | MOMINPOL: 9.817477042468105e-06 9 | POISSONRATIO: 0.0 10 | SHEARCORR: 1 11 | YOUNG: -1.0 12 | NODE COORDS: 13 | - NODE 1 COORD 0.0 0.0 0.0 14 | - NODE 2 COORD 0.2366356373181153 0.41727484978728 -0.20863742489364 15 | - NODE 3 COORD 0.545702092804943 0.7936134115181913 -0.39680670575909566 16 | - NODE 4 COORD 0.9999999999999998 0.9999999999999999 -0.49999999999999994 17 | - NODE 5 COORD 1.4542979071950568 0.7936134115181915 -0.39680670575909577 18 | - NODE 6 COORD 1.7633643626818845 0.41727484978728036 -0.20863742489364018 19 | - NODE 7 COORD 2.0 0.0 0.0 20 | STRUCTURE ELEMENTS: 21 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 1.1528472286050657 1.1041856526791145 0.5373310724991723 1.2351356117546288 0.7643401375190538 0.37195167755601344 1.1814462697290409 1.00047047480106 0.48686004199045335 HERMITE_CENTERLINE true 22 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 1.2351356117546288 0.7643401375190538 0.37195167755601344 1.2351356117546286 -0.7643401375190535 -0.37195167755601327 1.3085066385844215 1.790354705039538e-16 5.96784901679846e-17 HERMITE_CENTERLINE true 23 | - 3 BEAM3R LINE3 5 7 6 MAT 1 TRIADS 1.2351356117546286 -0.7643401375190535 -0.37195167755601327 1.1528472286050657 -1.1041856526791145 -0.5373310724991726 1.1814462697290409 -1.0004704748010598 -0.4868600419904533 HERMITE_CENTERLINE true 24 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_transformations_with_solid_full.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_Struct_StVenantKirchhoff: 4 | DENS: 7.8e-06 5 | NUE: 0 6 | YOUNG: 1e+09 7 | - MAT: 2 8 | MAT_BeamReissnerElastHyper: 9 | CROSSAREA: 0.007853981633974483 10 | DENS: 0.0 11 | MOMIN2: 4.9087385212340526e-06 12 | MOMIN3: 4.9087385212340526e-06 13 | MOMINPOL: 9.817477042468105e-06 14 | POISSONRATIO: 0.0 15 | SHEARCORR: 1 16 | YOUNG: -1.0 17 | NODE COORDS: 18 | - NODE 1 COORD 2.4843449459002898 2.395327549001866 3.3747481962337416 19 | - NODE 2 COORD 0.11444363389080814 1.3365785810151047 1.87054794556141 20 | - NODE 3 COORD -0.4002788822418346 1.3392637292346845 2.679614868567997 21 | - NODE 4 COORD 1.969622429767647 2.398012697221446 4.183815119240329 22 | - NODE 5 COORD 1.8855563661091919 2.6634214189848953 4.129452054438589 23 | - NODE 6 COORD -0.48434494590028976 1.604672450998134 2.6252518037662576 24 | - NODE 7 COORD 0.030377570232353213 1.6019873027785545 1.8161848807596708 25 | - NODE 8 COORD 2.400278882241835 2.660736270765316 3.3203851314320025 26 | - NODE 9 COORD 0.9407280434498708 2.1871301395566927 2.961670559145581 27 | - NODE 10 COORD 1.589980181362617 2.3283576150485814 3.168964809008814 28 | - NODE 11 COORD 2.175896873914853 2.3765050239333916 3.541560972234862 29 | - NODE 12 COORD 2.63920616455645 2.5187025057678154 4.041129607969307 30 | - NODE 13 COORD 3.043243498647916 2.8480301271589314 4.502368802849332 31 | - NODE 14 COORD 3.510616278099895 3.270437815157127 4.7983060843665415 32 | - NODE 15 COORD 4.100596459462513 3.5987954302057075 4.967270893375357 33 | STRUCTURE ELEMENTS: 34 | - 1 SOLID HEX8 1 2 3 4 5 6 7 8 MAT 1 KINEM nonlinear TECH shell_eas_ans 35 | - 2 BEAM3R LINE3 9 11 10 MAT 2 TRIADS -1.1167761650094756 -1.477052982828591 -0.882004429360807 1.8724554849509711 1.300522959656778 0.32804786944883635 -2.1056564993365523 -1.9720878703814606 -0.8675694019075277 HERMITE_CENTERLINE true 36 | - 3 BEAM3R LINE3 11 13 12 MAT 2 TRIADS 1.8724554849509711 1.300522959656778 0.32804786944883635 0.568247756660091 -0.2050133331391 -0.48727672554519913 1.2771281603261673 0.5208193322959781 -0.13461393109288194 HERMITE_CENTERLINE true 37 | - 4 BEAM3R LINE3 13 15 14 MAT 2 TRIADS 0.568247756660091 -0.2050133331391 -0.48727672554519913 -1.116776165009476 -1.4770529828285912 -0.8820044293608069 -0.23055971974043676 -0.8754206188833785 -0.7403378794547507 HERMITE_CENTERLINE true 38 | -------------------------------------------------------------------------------- /tests/reference-files/test_mesh_transformations_with_solid_yaml.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_Struct_StVenantKirchhoff: 4 | DENS: 7.8e-06 5 | NUE: 0 6 | YOUNG: 1e+09 7 | - MAT: 2 8 | MAT_BeamReissnerElastHyper: 9 | CROSSAREA: 0.007853981633974483 10 | DENS: 0.0 11 | MOMIN2: 4.9087385212340526e-06 12 | MOMIN3: 4.9087385212340526e-06 13 | MOMINPOL: 9.817477042468105e-06 14 | POISSONRATIO: 0.0 15 | SHEARCORR: 1 16 | YOUNG: -1.0 17 | NODE COORDS: 18 | - NODE 1 COORD -0.5 -1 1.5 19 | - NODE 2 COORD -0.5 -1 -1.5 20 | - NODE 3 COORD -0.5 1 -1.5 21 | - NODE 4 COORD -0.5 1 1.5 22 | - NODE 5 COORD 0.5 -1 1.5 23 | - NODE 6 COORD 0.5 -1 -1.5 24 | - NODE 7 COORD 0.5 1 -1.5 25 | - NODE 8 COORD 0.5 1 1.5 26 | - NODE 9 COORD 0.9933634492631569 1.1344220232909705 3.4880246172784424 27 | - NODE 10 COORD 1.6430241894644966 1.267477453010987 3.6994048900276115 28 | - NODE 11 COORD 2.215571899393513 1.5830045143601894 3.938311227021463 29 | - NODE 12 COORD 2.6684418846007882 1.9339881048810457 4.333486808412691 30 | - NODE 13 COORD 3.0787471753586444 2.1379565929443687 4.857405569956613 31 | - NODE 14 COORD 3.566165496388826 2.1594534493785056 5.353798267255852 32 | - NODE 15 COORD 4.173261542140748 2.1454937766409916 5.693921720157714 33 | STRUCTURE ELEMENTS: 34 | - 1 SOLID HEX8 1 2 3 4 5 6 7 8 MAT 1 KINEM nonlinear TECH shell_eas_ans 35 | - 2 BEAM3R LINE3 9 11 10 MAT 2 TRIADS -1.8194545781249198 -1.7410783066024478 -1.0141939177547852 0.07892457570583175 -0.6874053861927905 -0.7733349746046884 -0.8182614418819422 -1.2663007623612976 -0.9738593032463574 HERMITE_CENTERLINE true 36 | - 3 BEAM3R LINE3 11 13 12 MAT 2 TRIADS 0.07892457570583175 -0.6874053861927905 -0.7733349746046884 1.569542506889896 0.6758628049774555 -0.010080646987980385 0.8787141313494699 -0.036333125275997476 -0.4499313952394221 HERMITE_CENTERLINE true 37 | - 4 BEAM3R LINE3 13 15 14 MAT 2 TRIADS 1.569542506889896 0.6758628049774555 -0.010080646987980385 -1.8194545781249176 -1.741078306602447 -1.0141939177547845 2.1110375832676302 1.4490221459935757 0.5649291426157232 HERMITE_CENTERLINE true 38 | -------------------------------------------------------------------------------- /tests/reference-files/test_reissner_beam.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_BeamReissnerElastHyper: 4 | CROSSAREA: 0.031415926535897934 5 | DENS: 0.0 6 | INTERACTIONRADIUS: 2.0 7 | MOMIN2: 7.853981633974484e-05 8 | MOMIN3: 7.853981633974484e-05 9 | MOMINPOL: 0.00015707963267948968 10 | POISSONRATIO: 0.0 11 | SHEARCORR: 1 12 | YOUNG: 1000 13 | NODE COORDS: 14 | - NODE 1 COORD 2.0 -4.440892098500626e-16 0.0 15 | - NODE 2 COORD 1.8477590650225737 0.765366864730179 0.0 16 | - NODE 3 COORD 1.4142135623730951 1.414213562373095 0.0 17 | - NODE 4 COORD 0.7653668647301801 1.847759065022573 0.0 18 | - NODE 5 COORD 8.881784197001252e-16 2.0 0.0 19 | - NODE 6 COORD 2.0 -4.440892098500626e-16 1.0 20 | - NODE 7 COORD 1.4142135623730951 1.414213562373095 1.0 21 | - NODE 8 COORD 8.881784197001252e-16 2.0 1.0 22 | STRUCTURE ELEMENTS: 23 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS 0.0 0.0 1.5707963267948963 0.0 0.0 2.356194490192345 0.0 0.0 1.9634954084936207 HERMITE_CENTERLINE true 24 | - 2 BEAM3R LINE3 3 5 4 MAT 1 TRIADS 0.0 0.0 2.356194490192345 0.0 0.0 3.1415926535897927 0.0 0.0 2.748893571891069 HERMITE_CENTERLINE true 25 | - 3 BEAM3R LINE2 6 7 MAT 1 TRIADS 0.0 0.0 1.5707963267948963 0.0 0.0 2.356194490192345 26 | - 4 BEAM3R LINE2 7 8 MAT 1 TRIADS 0.0 0.0 2.356194490192345 0.0 0.0 3.1415926535897927 27 | -------------------------------------------------------------------------------- /tests/reference-files/test_stvenantkirchhoff_solid.4C.yaml: -------------------------------------------------------------------------------- 1 | MATERIALS: 2 | - MAT: 1 3 | MAT_Struct_StVenantKirchhoff: 4 | DENS: 6.1e-07 5 | NUE: 0.17 6 | YOUNG: 157 7 | - MAT: 2 8 | MAT_Struct_StVenantKirchhoff: 9 | DENS: 5.2e-07 10 | NUE: 0.2 11 | YOUNG: 370 12 | -------------------------------------------------------------------------------- /tests/reference-files/test_surface_to_surface_contact_import.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN SURF MORTAR CONTACT CONDITIONS 3D: 2 | - E: 1 3 | FrCoeffOrBound: 0.5 4 | InterfaceID: 1 5 | Side: Master 6 | - E: 2 7 | FrCoeffOrBound: 0.5 8 | InterfaceID: 1 9 | Side: Master 10 | DSURF-NODE TOPOLOGY: 11 | - NODE 1 DSURFACE 1 12 | - NODE 4 DSURFACE 1 13 | - NODE 5 DSURFACE 1 14 | - NODE 8 DSURFACE 1 15 | - NODE 9 DSURFACE 2 16 | - NODE 12 DSURFACE 2 17 | - NODE 13 DSURFACE 2 18 | - NODE 16 DSURFACE 2 19 | MATERIALS: 20 | - MAT: 1 21 | MAT_Struct_StVenantKirchhoff: 22 | DENS: 0 23 | NUE: 0 24 | YOUNG: 8 25 | - MAT: 2 26 | MAT_Struct_StVenantKirchhoff: 27 | DENS: 0 28 | NUE: 0.45 29 | YOUNG: 1 30 | NODE COORDS: 31 | - NODE 1 COORD 1.5 -0.5 0.5 32 | - NODE 2 COORD 1.5 -0.5 -0.5 33 | - NODE 3 COORD 1.5 0.5 -0.5 34 | - NODE 4 COORD 1.5 0.5 0.5 35 | - NODE 5 COORD 2.5 -0.5 0.5 36 | - NODE 6 COORD 2.5 -0.5 -0.5 37 | - NODE 7 COORD 2.5 0.5 -0.5 38 | - NODE 8 COORD 2.5 0.5 0.5 39 | - NODE 9 COORD -0.5 -0.5 0.5 40 | - NODE 10 COORD -0.5 -0.5 -0.5 41 | - NODE 11 COORD -0.5 0.5 -0.5 42 | - NODE 12 COORD -0.5 0.5 0.5 43 | - NODE 13 COORD 0.5 -0.5 0.5 44 | - NODE 14 COORD 0.5 -0.5 -0.5 45 | - NODE 15 COORD 0.5 0.5 -0.5 46 | - NODE 16 COORD 0.5 0.5 0.5 47 | STRUCTURE ELEMENTS: 48 | - 1 SOLID HEX8 1 2 3 4 5 6 7 8 MAT 1 KINEM nonlinear 49 | - 2 SOLID HEX8 9 10 11 12 13 14 15 16 MAT 2 KINEM nonlinear 50 | -------------------------------------------------------------------------------- /tests/reference-files/test_surface_to_surface_contact_import_solid_mesh.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN SURF MORTAR CONTACT CONDITIONS 3D: 2 | - E: 1 3 | FrCoeffOrBound: 0.5 4 | InterfaceID: 1 5 | Side: Master 6 | - E: 2 7 | FrCoeffOrBound: 0.5 8 | InterfaceID: 1 9 | Side: Master 10 | DSURF-NODE TOPOLOGY: 11 | - NODE 1 DSURFACE 1 12 | - NODE 4 DSURFACE 1 13 | - NODE 5 DSURFACE 1 14 | - NODE 8 DSURFACE 1 15 | - NODE 9 DSURFACE 2 16 | - NODE 12 DSURFACE 2 17 | - NODE 13 DSURFACE 2 18 | - NODE 16 DSURFACE 2 19 | MATERIALS: 20 | - MAT: 1 21 | MAT_Struct_StVenantKirchhoff: 22 | DENS: 0 23 | NUE: 0 24 | YOUNG: 8 25 | - MAT: 2 26 | MAT_Struct_StVenantKirchhoff: 27 | DENS: 0 28 | NUE: 0.45 29 | YOUNG: 1 30 | NODE COORDS: 31 | - NODE 1 COORD 1.5 -0.5 0.5 32 | - NODE 2 COORD 1.5 -0.5 -0.5 33 | - NODE 3 COORD 1.5 0.5 -0.5 34 | - NODE 4 COORD 1.5 0.5 0.5 35 | - NODE 5 COORD 2.5 -0.5 0.5 36 | - NODE 6 COORD 2.5 -0.5 -0.5 37 | - NODE 7 COORD 2.5 0.5 -0.5 38 | - NODE 8 COORD 2.5 0.5 0.5 39 | - NODE 9 COORD -0.5 -0.5 0.5 40 | - NODE 10 COORD -0.5 -0.5 -0.5 41 | - NODE 11 COORD -0.5 0.5 -0.5 42 | - NODE 12 COORD -0.5 0.5 0.5 43 | - NODE 13 COORD 0.5 -0.5 0.5 44 | - NODE 14 COORD 0.5 -0.5 -0.5 45 | - NODE 15 COORD 0.5 0.5 -0.5 46 | - NODE 16 COORD 0.5 0.5 0.5 47 | STRUCTURE ELEMENTS: 48 | - 1 SOLID HEX8 1 2 3 4 5 6 7 8 MAT 1 KINEM nonlinear 49 | - 2 SOLID HEX8 9 10 11 12 13 14 15 16 MAT 2 KINEM nonlinear 50 | -------------------------------------------------------------------------------- /tests/reference-files/test_userdefined_boundary_condition.4C.yaml: -------------------------------------------------------------------------------- 1 | DESIGN VOL ALE DIRICH CONDITIONS: 2 | - E: 1 3 | FUNCT: 4 | - 0 5 | - 0 6 | - 0 7 | NUMDOF: 3 8 | ONOFF: 9 | - 1 10 | - 1 11 | - 1 12 | VAL: 13 | - 0 14 | - 0 15 | - 0 16 | DLINE-NODE TOPOLOGY: 17 | - NODE 1 DLINE 1 18 | - NODE 2 DLINE 1 19 | - NODE 3 DLINE 1 20 | MATERIALS: 21 | - MAT: 1 22 | MAT_BeamReissnerElastHyper: 23 | CROSSAREA: 3.141592653589793 24 | DENS: 0.0 25 | MOMIN2: 0.7853981633974483 26 | MOMIN3: 0.7853981633974483 27 | MOMINPOL: 1.5707963267948966 28 | POISSONRATIO: 0.0 29 | SHEARCORR: 1 30 | YOUNG: -1.0 31 | NODE COORDS: 32 | - NODE 1 COORD 0.0 0.0 0.0 33 | - NODE 2 COORD 0.5 1.0 1.5 34 | - NODE 3 COORD 1.0 2.0 3.0 35 | STRUCTURE ELEMENTS: 36 | - 1 BEAM3R LINE3 1 3 2 MAT 1 TRIADS -0.3516761033122818 -1.213974487414885 0.4879245294772592 -0.3516761033122818 -1.213974487414885 0.4879245294772592 -0.3516761033122818 -1.213974487414885 0.4879245294772592 HERMITE_CENTERLINE true 37 | -------------------------------------------------------------------------------- /tests/reference-files/test_vtk_writer.vtu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 0 0 1 2 3 8 | 4 5 -2 -3 0 1 9 | 2 3 4 10 | 11 | 12 | 0 0 0 0 0 0 13 | 0 0 0 0.25 0 -0.25 14 | 1 0.25 0 2 0 0 15 | 2.25 1.25 0.5 2 2.25 0 16 | 1 2 0.5 0 2.25 0 17 | 0 1 0.5 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 20 | 21 | 22 | 0 23 | 24 | 25 | 3.0103986447 26 | 27 | 28 | 29 | 30 | 31 | 32 | 0 3 0 33 | 34 | 35 | 0 0 0 66 0 1 36 | 5 0 10 37 | 38 | 39 | 0 40 | 41 | 42 | 66.007575323 43 | 44 | 45 | 46 | 47 | 48 | 49 | 0 0 -2 1 1 -2 50 | 2 2 -1 0.25 0 -0.25 51 | 1 0.25 0 2 0 0 52 | 2.25 1.25 0.5 2 2.25 0 53 | 1 2 0.5 0 2.25 0 54 | 0 1 0.5 3 3 3 55 | 4 4 3 4 3 3 56 | 4 4 4 57 | 58 | 59 | 0.35355339059 60 | 61 | 62 | 6.9282032303 63 | 64 | 65 | 66 | 67 | 68 | 69 | 0 1 2 3 5 7 70 | 9 4 6 8 10 11 71 | 13 12 14 72 | 73 | 74 | 3 11 15 75 | 76 | 77 | 4 23 10 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /tests/test_examples.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This script is used to test the examples.""" 23 | 24 | import pytest 25 | from testbook import testbook 26 | 27 | 28 | @pytest.mark.parametrize( 29 | "notebook_path", 30 | [ 31 | "examples/example_1_finite_rotations.ipynb", 32 | "examples/example_2_core_mesh_generation_functions.ipynb", 33 | ], 34 | ) 35 | def test_notebooks(notebook_path): 36 | """Parameterized test case for multiple Jupyter notebooks. 37 | 38 | The notebook is run and it is checked that it runs through without 39 | any errors/assertions. 40 | """ 41 | 42 | with testbook(notebook_path) as tb: 43 | # we do not define the examples as modules, therefore we need to add the 44 | # examples folder to the current sys path so examples/utils can be imported 45 | # within the notebooks correctly 46 | tb.inject( 47 | """ 48 | import sys 49 | import os 50 | sys.path.insert(0, os.path.abspath(os.path.join(os.getcwd(), "examples"))) 51 | """ 52 | ) 53 | 54 | # execute the notebook 55 | tb.execute() 56 | -------------------------------------------------------------------------------- /tests/test_function_utilities.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This script is used to test the functionality of the function_utility 23 | module.""" 24 | 25 | from beamme.four_c.function_utility import ( 26 | create_linear_interpolation_dict, 27 | create_linear_interpolation_function, 28 | ) 29 | 30 | 31 | def test_linear_interpolation_function(assert_results_equal): 32 | """Test that linear interpolation functions are created correctly.""" 33 | 34 | t = [1.5, 2.5, 3.5, 10.0] 35 | values = [1.0, -1.0, 3.5, -10.3] 36 | 37 | fun = create_linear_interpolation_function(t, values) 38 | assert_results_equal( 39 | [ 40 | {"SYMBOLIC_FUNCTION_OF_SPACE_TIME": "var"}, 41 | { 42 | "VARIABLE": 0, 43 | "NAME": "var", 44 | "TYPE": "linearinterpolation", 45 | "NUMPOINTS": 6, 46 | "TIMES": [-1000.0, 1.5, 2.5, 3.5, 10.0, 1010.0], 47 | "VALUES": [1.0, 1.0, -1.0, 3.5, -10.3, -10.3], 48 | }, 49 | ], 50 | fun.data, 51 | ) 52 | 53 | fun = create_linear_interpolation_function(t, values, function_type="My type") 54 | assert_results_equal( 55 | [ 56 | {"My type": "var"}, 57 | { 58 | "VARIABLE": 0, 59 | "NAME": "var", 60 | "TYPE": "linearinterpolation", 61 | "NUMPOINTS": 6, 62 | "TIMES": [-1000.0, 1.5, 2.5, 3.5, 10.0, 1010.0], 63 | "VALUES": [1.0, 1.0, -1.0, 3.5, -10.3, -10.3], 64 | }, 65 | ], 66 | fun.data, 67 | ) 68 | 69 | function_definition = create_linear_interpolation_dict( 70 | t, values, variable_name="test", variable_index=12 71 | ) 72 | assert_results_equal( 73 | { 74 | "VARIABLE": 12, 75 | "NAME": "test", 76 | "TYPE": "linearinterpolation", 77 | "NUMPOINTS": 6, 78 | "TIMES": [-1000.0, 1.5, 2.5, 3.5, 10.0, 1010.0], 79 | "VALUES": [1.0, 1.0, -1.0, 3.5, -10.3, -10.3], 80 | }, 81 | function_definition, 82 | ) 83 | -------------------------------------------------------------------------------- /tests/test_geometric_search_utils.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """Test environment utils.""" 23 | 24 | from unittest.mock import patch 25 | 26 | from beamme.geometric_search.utils import ( 27 | arborx_is_available, 28 | cython_is_available, 29 | ) 30 | 31 | 32 | def test_is_arborx_available() -> None: 33 | """Test is_arborx_available function.""" 34 | 35 | with patch("beamme.geometric_search.utils._find_spec", return_value=True): 36 | assert arborx_is_available() is True 37 | 38 | with patch("beamme.geometric_search.utils._find_spec", return_value=None): 39 | assert arborx_is_available() is False 40 | 41 | 42 | def test_is_cython_available() -> None: 43 | """Test is_cython_available function.""" 44 | 45 | with patch("beamme.geometric_search.utils._find_spec", return_value=True): 46 | assert cython_is_available() is True 47 | 48 | with patch("beamme.geometric_search.utils._find_spec", return_value=None): 49 | assert cython_is_available() is False 50 | -------------------------------------------------------------------------------- /tests/test_input_file_utils.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """This script is used to test the functionality of the input file utils.""" 23 | 24 | from beamme.core.mesh import Mesh 25 | from beamme.core.mesh_utils import get_coupled_nodes_to_master_map 26 | from beamme.four_c.element_beam import Beam3rLine2Line2 27 | from beamme.four_c.material import MaterialReissner 28 | from beamme.mesh_creation_functions.beam_line import create_beam_mesh_line 29 | 30 | 31 | def test_input_file_utils_get_coupled_nodes_to_master_map(): 32 | """Test the get_coupled_nodes_to_master_map function.""" 33 | 34 | beam_class = Beam3rLine2Line2 35 | mat = MaterialReissner(radius=0.1) 36 | mesh = Mesh() 37 | create_beam_mesh_line(mesh, beam_class, mat, [0, 0, 0], [1, 0, 0]) 38 | create_beam_mesh_line(mesh, beam_class, mat, [1, 0, 0], [1, 1, 0]) 39 | create_beam_mesh_line(mesh, beam_class, mat, [1, 1, 0], [2, 0, 0]) 40 | create_beam_mesh_line(mesh, beam_class, mat, [1, 0, 0], [2, 0, 0]) 41 | 42 | mesh.couple_nodes() 43 | 44 | replaced_node_to_master_map, unique_nodes = get_coupled_nodes_to_master_map( 45 | mesh, assign_i_global=True 46 | ) 47 | 48 | assert len(unique_nodes) == 4 49 | assert unique_nodes == [mesh.nodes[i_node] for i_node in [0, 1, 3, 5]] 50 | 51 | assert len(replaced_node_to_master_map) == 4 52 | assert replaced_node_to_master_map[mesh.nodes[2]] == mesh.nodes[1] 53 | assert replaced_node_to_master_map[mesh.nodes[4]] == mesh.nodes[3] 54 | assert replaced_node_to_master_map[mesh.nodes[7]] == mesh.nodes[5] 55 | assert replaced_node_to_master_map[mesh.nodes[6]] == mesh.nodes[1] 56 | 57 | expected_i_global = [0, 1, 1, 2, 2, 3, 1, 3] 58 | for i_node, expected_index in enumerate(expected_i_global): 59 | assert mesh.nodes[i_node].i_global == expected_index 60 | -------------------------------------------------------------------------------- /tests/test_utils_nodes.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """Test node utils.""" 23 | 24 | from beamme.core.node import Node 25 | from beamme.utils.nodes import is_node_on_plane 26 | 27 | 28 | def test_is_node_on_plane(): 29 | """Test if node on plane function works properly.""" 30 | 31 | # node on plane with origin_distance 32 | node = Node([1.0, 1.0, 1.0]) 33 | assert is_node_on_plane(node, normal=[0.0, 0.0, 1.0], origin_distance=1.0) 34 | 35 | # node on plane with point_on_plane 36 | node = Node([1.0, 1.0, 1.0]) 37 | assert is_node_on_plane( 38 | node, normal=[0.0, 0.0, 5.0], point_on_plane=[5.0, 5.0, 1.0] 39 | ) 40 | 41 | # node not on plane with origin_distance 42 | node = Node([13.5, 14.5, 15.5]) 43 | assert not is_node_on_plane(node, normal=[0.0, 0.0, 1.0], origin_distance=5.0) 44 | 45 | # node not on plane with point_on_plane 46 | node = Node([13.5, 14.5, 15.5]) 47 | assert not is_node_on_plane( 48 | node, normal=[0.0, 0.0, 5.0], point_on_plane=[5.0, 5.0, 1.0] 49 | ) 50 | -------------------------------------------------------------------------------- /website/README.md: -------------------------------------------------------------------------------- 1 | # The BeamMe website 2 | 3 | The BeamMe website is based on the Sphinx PyData Theme (https://pydata-sphinx-theme.readthedocs.io) 4 | 5 | ## Setup 6 | 7 | Ensure that the necessary packages for building the website are present. You can simply install them with 8 | 9 | ``` 10 | pip install -r website/requirements.txt 11 | ``` 12 | 13 | ## Building the website locally 14 | 15 | In the source directory of BeamMe simply execute 16 | 17 | ```bash 18 | python website/docs/prepare_docs.py 19 | ``` 20 | 21 | to prepare the documents for the website build (currently only the readme gets copied into the website build directory). 22 | 23 | Then build the website with 24 | 25 | ```bash 26 | sphinx-build -b html website/docs/source website/docs/build 27 | ``` 28 | 29 | Afterwards you can open `website/docs/build/index.html` to view the local build of the website. 30 | 31 | ## Important information 32 | 33 | The contents of the main landing page reflect the contents of the `README.md` at the top level. 34 | 35 | Therefore, to change any contents on the main landing page **do not** touch anything within the website directory! 36 | -------------------------------------------------------------------------------- /website/docs/prepare_docs.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | """Prepare documentation for the website.""" 23 | 24 | import os 25 | import shutil 26 | from pathlib import Path 27 | 28 | 29 | def prepare_docs(): 30 | """Prepare documentation for the website. 31 | 32 | Currently, this only copies the README.md file to the documentation 33 | directory. 34 | """ 35 | 36 | markdown_dir = Path("website/docs/source/md") 37 | 38 | # create directory which contains all the markdown files 39 | os.makedirs(markdown_dir, exist_ok=True) 40 | 41 | # copy readme 42 | shutil.copy("README.md", os.path.join(markdown_dir, "README.md")) 43 | 44 | 45 | if __name__ == "__main__": 46 | """Prepare documentation for the website.""" 47 | prepare_docs() 48 | -------------------------------------------------------------------------------- /website/docs/source/conf.py: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | # 3 | # Copyright (c) 2018-2025 BeamMe Authors 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | 23 | # general configuration 24 | project = "BeamMe" 25 | copyright = "2025, BeamMe Authors" 26 | author = "BeamMe Authors" 27 | 28 | # html theme configuration 29 | html_theme = "pydata_sphinx_theme" 30 | html_title = "BeamMe" 31 | html_theme_options = { 32 | "github_url": "https://github.com/beamme-py/beamme", 33 | } 34 | html_show_sourcelink = False # Hide "View Source" link on the right side of the page 35 | 36 | # extensions 37 | extensions = [ 38 | "myst_parser", # to enable Markdown support 39 | "sphinxcontrib.jquery", # to enable custom JavaScript (open links in new empty tab) 40 | ] 41 | 42 | # markdown configuration 43 | myst_enable_extensions = [ 44 | "colon_fence", # For ::: fenced code blocks 45 | "linkify", # Auto-detects URLs and makes them hyperlinks 46 | ] 47 | myst_heading_anchors = 3 # automatic heading anchors for Markdown files 48 | 49 | # JavaScript configuration (to open links in new tabs) 50 | html_js_files = ["js/custom.js"] 51 | html_static_path = ["static"] 52 | -------------------------------------------------------------------------------- /website/docs/source/index.rst: -------------------------------------------------------------------------------- 1 | .. include:: md/README.md 2 | :parser: myst_parser.sphinx_ 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | :hidden: 7 | 8 | API Documentation 9 | Coverage Report 10 | Github 11 | Launch Online 12 | -------------------------------------------------------------------------------- /website/docs/source/static/js/custom.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This script modifies external links in the Sphinx-generated HTML. 3 | * All external links (http/https) that are NOT marked as internal 4 | * will be opened in a new browser tab. 5 | * 6 | * We use jQuery's $(document).ready() to wait until the DOM is fully loaded. 7 | */ 8 | $(document).ready(function () { 9 | $('a[href^="http://"], a[href^="https://"]') 10 | .not('a[class*=internal]') 11 | .attr('target', '_blank'); 12 | }); 13 | -------------------------------------------------------------------------------- /website/requirements.txt: -------------------------------------------------------------------------------- 1 | linkify-it-py 2 | myst-parser 3 | pydata-sphinx-theme 4 | sphinx 5 | sphinxcontrib-jquery 6 | --------------------------------------------------------------------------------