├── .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 |
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 |
22 |
--------------------------------------------------------------------------------
/doc/badges/pre-commit.svg:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/doc/badges/ruff-formatter.svg:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/doc/badges/ruff-linter.svg:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/doc/badges/testing_linux_ubuntu.svg:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/doc/badges/testing_macos.svg:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/doc/badges/testing_windows.svg:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/doc/badges/website.svg:
--------------------------------------------------------------------------------
1 |
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 |
--------------------------------------------------------------------------------