diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 000000000..05fd0a0a9 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,4 @@ +[codespell] +skip = *.pyc,*.xml,*.txt,*.gif,*.png,*.jpg,*.js,*.html,*.doctree,*.ttf,*.woff,*.woff2,*.eot,*.mp4,*.inv,*.pickle,*.ipynb,flycheck*,./.git/*,./.hypothesis/*,*.yml,./doc/build/*,./doc/images/*,./dist/*,*~,.hypothesis*,./doc/source/examples/*,*cover,*.dat,*.mac +quiet-level = 3 +ignore-words-list = pres,nax,tickness,struc,parm \ No newline at end of file diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..06c585954 --- /dev/null +++ b/.flake8 @@ -0,0 +1,7 @@ +[flake8] +exclude = venv, __init__.py, doc/_build, .venv, doc/source/technology_showcase_examples +select = W191, W291, W293, W391, E115, E117, E122, E124, E125, E225, E231, E301, E303, E501, F401, F403 +count = True +max-complexity = 10 +max-line-length = 100 +statistics = True \ No newline at end of file diff --git a/.github/labeler.yml b/.github/labeler.yml index f5d904279..dbd640e48 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -4,5 +4,6 @@ maintenance: - .github/**/* - .flake8 - pyproject.toml +- .codespellrc dependencies: - requirements/* diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 9d9673c78..d93416dff 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -37,27 +37,27 @@ jobs: - name: Test with tox run: tox -e style - docs-style: - name: Documentation Style Check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + # docs-style: + # name: Documentation Style Check + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v3 - - name: Running Vale - uses: errata-ai/vale-action@reviewdog - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - with: - files: doc - reporter: github-pr-check - level: error - filter_mode: nofilter - fail_on_error: true - vale_flags: "--config=doc/.vale.ini" + # - name: Running Vale + # uses: errata-ai/vale-action@reviewdog + # env: + # GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + # with: + # files: doc + # reporter: github-pr-check + # level: error + # filter_mode: nofilter + # fail_on_error: true + # vale_flags: "--config=doc/.vale.ini" docs: name: Documentation - needs: [style, docs-style] + needs: [style] #docs-style runs-on: ubuntu-latest env: PYMAPDL_PORT: 21000 # default won't work on GitHub runners @@ -197,7 +197,7 @@ jobs: release: if: github.event_name == 'push' && contains(github.ref, 'refs/tags') - needs: [style, docs-style, docs] + needs: [style, docs] #docs-style runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c21a5ea1a..fe1f79b9a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,7 +25,6 @@ repos: rev: v2.2.2 hooks: - id: codespell - args: [--ignore-words=ignore_words.txt, -S \*.pyc\,\*.xml\,\*.txt\,\*.gif\,\*.png\,\*.jpg\,\*.js\,\*.html\,\*.doctree\,\*.ttf\,\*.woff\,\*.woff2\,\*.eot\,\*.mp4\,\*.inv\,\*.pickle\,\*.ipynb\,flycheck\*\,./.git/\*\,./.hypothesis/\*\,\*.yml\,./doc/build/\*\,./doc/images/\*\,./dist/\*\,\*~\,.hypothesis\*\,./doc/source/examples/\*\,\*cover\,\*.dat\,\*.mac] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.3.0 diff --git a/doc/source/conf.py b/doc/source/conf.py index c8f929e8a..3ab781224 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -12,7 +12,7 @@ # Select desired logo, theme, and declare the html title html_logo = logo html_theme = "ansys_sphinx_theme" -html_short_title = html_title = "pymapdl-techdemos" +html_short_title = html_title = "PyMAPDL Techdemos" # specify the location of your github repo html_theme_options = { @@ -21,11 +21,13 @@ "show_breadcrumbs": True, "additional_breadcrumbs": [ ("PyAnsys", "https://docs.pyansys.com/"), + ("PyMAPDL", "https://mapdl.docs.pyansys.com/"), ], } # Sphinx extensions extensions = [ + "jupyter_sphinx", "sphinx.ext.autodoc", "sphinx.ext.autosummary", "numpydoc", @@ -79,3 +81,19 @@ # The master toctree document. master_doc = "index" + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [ + "_build", + "Thumbs.db", + ".DS_Store", + "links.rst", +] + +# make rst_epilog a variable, so you can add other epilog parts to it +rst_epilog = "" +# Read link all targets from file +with open("links.rst") as f: + rst_epilog += f.read() diff --git a/doc/source/index.rst b/doc/source/index.rst index d2824a5f6..eb340848a 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,6 +1,38 @@ -.. - Just reuse the root readme to avoid duplicating the documentation. - Provide any documentation specific to your online documentation - here. +PyMAPDL Techdemos +================= -.. include:: ../../README.rst +The technology showcase examples for `PyMAPDL `_ are contained +in this repository. + +Introduction and Purpose +------------------------ + +This documentation demonstrates the broad simulation capabilities of Ansys Mechanical +APDL. The problems demonstrate how to use PyMAPDL to effectively and accurately +solve interdisciplinary problems from a variety of industries and engineering +fields. + +The exposed files are more complex examples than the ones presented in the `APDL +Verification Manual `_. They are complete and concrete case studies +which necesitate more resources. + +Summary of the exposed Technology Showcase Manual Examples +---------------------------------------------------------- + ++----------------------------+---------------------------------------------------------------------------------------------------------+ +| Name | Description | ++----------------------------+---------------------------------------------------------------------------------------------------------+ +| :ref:`tech_demo_01` | Technology showcase demonstration example 01: Brake Squeal Analysis. | ++----------------------------+---------------------------------------------------------------------------------------------------------+ +| :ref:`tech_demo_20` | Technology showcase demonstration example 20: Dynamic simulation of a printed circuit board assembly | ++----------------------------+---------------------------------------------------------------------------------------------------------+ +| :ref:`tech_demo_28` | Technology showcase demonstration example 28: Friction Stir Welding (FSW) Simulation | ++----------------------------+---------------------------------------------------------------------------------------------------------+ + +.. === TECHNOLOGY SHOWCASE EXAMPLES === + +.. toctree:: + :hidden: + :maxdepth: 3 + + technology_showcase_examples/index diff --git a/doc/source/links.rst b/doc/source/links.rst new file mode 100644 index 000000000..a38afb482 --- /dev/null +++ b/doc/source/links.rst @@ -0,0 +1,17 @@ +.. #MAPDL related +.. _mapdl_tech_show: https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v222/en/wb_wbtec/wb_wbtec.html +.. _mapdl_vm: https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v222/en/ai_rn/ansys_rn_verif.html + +.. #Other projects +.. _dpf_post_docs: https://post.docs.pyansys.com/ + +.. #Pyansys +.. _pyansys: https://docs.pyansys.com + +.. #PyMAPDL related +.. _pymapdl_docs: https://mapdl.docs.pyansys.com +.. _pymapdl_github: https://github.com/pyansys/pymapdl +.. _pymapdl_examples: https://mapdl.docs.pyansys.com/examples/index.html + +.. # techdemos +.. _tech_demo_intro: https://ansyshelp.ansys.com/Views/Secured/corp/v212/en/ans_tec/tecintro.html diff --git a/doc/source/technology_showcase_examples/index.rst b/doc/source/technology_showcase_examples/index.rst new file mode 100644 index 000000000..0b0bf7a77 --- /dev/null +++ b/doc/source/technology_showcase_examples/index.rst @@ -0,0 +1,19 @@ +.. _ref_technology_showcase_examples: + + +Technology Showcase Manual Examples +==================================== + +The following examples initially come from the `APDL Technology Showcase Manual +`_. They initially were MAPDL files. They have been reproduced +in Python files using PyMAPDL with the ``ansys-mapdl-core`` library. + +These examples are a work-in-progress and will be extended during the life of +this project. + +.. toctree:: + :maxdepth: 3 + + techdemo-1/ex_0-tecbrakesqueal + techdemo-20/ex_20-tecPCB + techdemo-28/ex_28-tecfricstir diff --git a/doc/source/technology_showcase_examples/techdemo-1/ex_0-tecbrakesqueal.rst b/doc/source/technology_showcase_examples/techdemo-1/ex_0-tecbrakesqueal.rst new file mode 100644 index 000000000..3ad225cf8 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-1/ex_0-tecbrakesqueal.rst @@ -0,0 +1,962 @@ +.. _tech_demo_01: + +Brake Squeal Analysis +--------------------- + +This example analysis shows how to solve a brake-squeal problem. +`1.6. Analysis and Solution Controls`_ are highlighted: linear non-prestressed +modal, partial nonlinear perturbed modal, and full nonlinear perturbed +modal. The problem demonstrates sliding frictional contact and uses complex +eigensolvers to predict unstable modes. + +The following topics are available: + +* `1.1. Introduction`_ +* `1.2. Problem Description`_ +* `1.3. Modeling`_ +* `1.4. Material Properties`_ +* `1.5. Boundary Conditions and Loading`_ +* `1.6. Analysis and Solution Controls`_ +* `1.7. Results and Discussion`_ +* `1.8. Recommendations`_ +* `1.9. References`_ +* `1.10. Input Files`_ + +You can also perform this example analysis entirely in the Ansys +Mechanical Application. For more information, see Brake-Squeal Analysis in the +Workbench Technology Showcase: Example Problems. + +1.1. Introduction +----------------- + +Eliminating brake noise is a classic challenge in the automotive industry. Brake discs +develop large and sustained friction-induced oscillations, simple referred to as brake +squeal. + +Two common theories describe brake-squeal phenomena: + +* *Stick-Slip Theory* -- The self-excited + vibration of a brake system occurs when the static coefficient of friction is + greater than the sliding coefficient of friction. Variable friction forces + introduce energy into the system which is not properly dissipated during the + squealing event, resulting in large vibrations. +* *Mode-Coupling Theory* -- When two similar + characteristic modes couple with each other, instability is introduced to the + braking system. This instability is caused primarily by improperly selected + geometric parameters. + Both theories attribute brake squeal to variable friction forces at the disc-pad + interface. + +Brake noise is generally categorized as follows: + +* Low-frequency noise -- An example of a low-frequency noise is the + "groaning" noise which occurs in the frequency range between 100 and + 1000 Hz. Any noise having a frequency above 1000 Hz is considered a + squeal. +* Low-frequency squeal -- A result of mode coupling occurring between the + out-of-plane modes of the rotor and the bending modes of the brake pad. +* High-frequency squeal -- A result of mode coupling occurring between the + in-plane modes of the rotor. + Low- and high-frequency squealing can be determined via complex eigensolvers. The + presence of unstable modes suggests that the geometry parameters and material properties + of the braking system should be modified. + +For more information, see Brake-Squeal (Prestressed Modal) Analysis in the *Structural Analysis Guide*. + +1.2. Problem Description +------------------------ + +The following model is a simple brake disc-pad assembly. The disc has a thickness of +10 mm and the brake pads have a thickness of 15 mm. The inner diameter of the disc is +250 mm and outer diameter is of 350 mm. A pre-stressed modal analysis is performed on +this model using various methods to determine the unstable modes. A parametric study is +then performed to examine the effect of the friction coefficient on the dynamic +stability of the model. + +.. figure:: images/gtecbrakesqueal_fig1.gif + :align: center + :alt: Brake Disc-Pad Assembly + :figclass: align-center + + **Figure 1.1: Brake Disc-Pad Assembly** + + + +1.3. Modeling +------------- + +The following modeling topics are available: + +* `1.3.1. Understanding the Advantages of Contact Element Technology`_ +* `1.3.2. Modeling Contact Pairs`_ +* `1.3.3. Generating Internal Sliding Motion`_ +* `1.3.4. Meshing the Brake Disc-Pad Model`_ + +1.3.1. Understanding the Advantages of Contact Element Technology +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Brake-squeal problems typically require manual calculations of the unsymmetric +terms arising from sources such as frictional sliding, and then inputting the +unsymmetric terms using special elements (such as +``MATRIX27``). It is a tedious process requiring a matched mesh +at the disc-pad interface along with assumptions related to the amount of area in +contact and sliding. + +3-D contact elements (``CONTA17x``) offer a more efficient alternative by modeling +surface-to-surface contact at the pad-disc interface. With contact +surface-to-surface contact elements, a matched mesh is unnecessary at the +contact-target surface, and there is no need to calculate the unsymmetric +terms. + +Contact surface-to-surface elements offer many controls for defining contact +pairs, such as the type of contact surface, algorithm, contact stiffness, and +gap/initial penetration effect. + +1.3.2. Modeling Contact Pairs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Frictional surface-to-surface contact pairs with a 0.3 coefficient of friction are +used to define contact between the brake pads and disc to simulate frictional +sliding contact occurring at the pad-disc interface. Bonded surface-to-surface +contact pairs are used to define the contact for other components which will be +always in contact throughout the braking operation. + +The augmented Lagrange algorithm is used for the frictional contact pairs, as the +pressure and frictional stresses are augmented during equilibrium iterations in such +a way that the penetration is reduced gradually. The augmented Lagrange algorithm +also requires fewer computational resources than the standard Lagrange multiplier +algorithm, which normally requires additional iterations to ensure that the contact +compatibility is satisfied exactly. The augmented Lagrange is well suited for +modeling general frictional contact, such as the contact between the brake pad and +disc defined in this example. + +An internal multipoint constraint (MPC) contact algorithm is used for bonded +contact because it ties contact and target surface together efficiently for +solid-solid assembly. The MPC algorithm builds equations internally based on the +contact kinematics and does not require the degrees of freedom of the contact +surface nodes, reducing the wave front size of the equation solver. A contact +detection point is made on the Gauss point for frictional contact pairs, and on the +nodal point (normal-to-target surface) for MPC bonded contact pairs. + + + +1.3.3. Generating Internal Sliding Motion +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The :meth:`Mapdl.cmrotate() ` +command defines constant rotational velocities on +the contact/target nodes to generate internal sliding motion. The specified +rotational velocity is used only to determine the sliding direction and has no +effect on the final solution. The element component used should include only the +contact or the target elements that are on the brake disc/rotor. In this example, +the target elements are defined on the disc surface and the contact elements are +defined on the pad surface. The target elements attached to the disc surface are +grouped to form a component named E\_ROTOR which is then later specified on the +:meth:`Mapdl.cmrotate() ` +command to generate a sliding frictional force. + +1.3.4. Meshing the Brake Disc-Pad Model +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The sweep method is used to generate a hexahedral dominant mesh of the brake +system assembly. Brake discs, pads and all other associated components are meshed +with 20-node structural solid ``SOLID186`` elements with +uniform reduced-integration element technology. The edge sizing tool is used to +obtains a refined mesh at the pad-disc interface to improve the solution accuracy. +For problems with a large unsymmetric coefficient, a finer mesh should be used at +the pad-disc interface to accurately predict the unstable modes. +``CONTA174`` (3-D 8 node surface to surface contact) +elements are used to define the contact surface and +``TARGE170`` (3-D target segment) elements are used to +define the target surface. The brake disc-pad assembly is meshed with total of 60351 +nodes and 11473 elements. + + +Start this example by launching MAPDL and loading the model. + +.. code:: python + + import pyvista + pyvista.set_plot_theme('document') + + from ansys.mapdl.core import launch_mapdl, Mapdl + from ansys.mapdl.core.examples import download_tech_demo_data, ansys_colormap + + cdb_path = download_tech_demo_data("td-1", "disc_pad_model.cdb") + + def start(mapdl, case): + """Initialize MAPDL with a fresh disc pad model""" + mapdl.finish() + mapdl.verify(case) + mapdl.prep7() + mapdl.shpp("OFF", value2="NOWARN") # disable element shape checking + mapdl.cdread("COMB", cdb_path) # Read disc_pad_model.cdb file + mapdl.allsel() + + + mapdl = launch_mapdl(nproc=8) + mapdl.clear() + + + # mapdl = Mapdl() + start(mapdl, 'linear_non_prestressed') + mapdl.title("linear_non_prestressed, Solving brake squeal problem using linear non pre-stressed modal solve") + + mapdl.eplot( + vtk=True, cpos="xy", show_edges=True, show_axes=False, line_width=2, background="w" + ) + + +.. jupyter-execute:: + :hide-code: + + # jupyterlab boilerplate setup + import numpy as np + import plotly.graph_objects as go + import pandas as pd + import pyvista + + pyvista.set_jupyter_backend('pythreejs') + pyvista.global_theme.background = 'white' + pyvista.global_theme.window_size = [600, 400] + pyvista.global_theme.axes.show = True + pyvista.global_theme.show_scalar_bar = True + + from ansys.mapdl.core import examples + from ansys.mapdl.core.examples import download_vtk_rotor, download_tech_demo_data + + rotor = pyvista.read(download_vtk_rotor()) + rotor.plot(color='w', show_edges=True) + + +1.4. Material Properties +------------------------ + +Linear elastic isotropic materials are assigned to all the components of the braking +system. + + +**Table 1.1: Material Properties** + ++------------------------+----------------------+ +| | Material Properties | ++========================+======================+ +| Young's Modulus (Nm-2) | 2.0 E+11 Pa | ++------------------------+----------------------+ +| Density | 7800 Kg/m3 | ++------------------------+----------------------+ +| Poisson's Ratio | 0.3 | ++------------------------+----------------------+ + + +1.5. Boundary Conditions and Loading +------------------------------------ + +The inner diameter of the cylinder hub and bolt holes is constrained in all +directions. Small pressure loading is applied on both ends of the pad to establish +contact with the brake disc and to include prestress effects. The displacement on the +brake pad surfaces where the pressure loading is applied is constrained in all +directions except axial (along the Z-axis). + +.. figure:: images/gtecbrakesqueal_fig5.gif + :align: center + :alt: Boundary Conditions (Displacement Constraints and Pressure Loading) + :figclass: align-center + + **Figure 1.2: Boundary Conditions (Displacement Constraints and Pressure Loading)** + + +1.6. Analysis and Solution Controls +----------------------------------- + +The analysis settings and solution controls differ depending upon the method used +to solve a brake-squeal problem. This section describes three possible +methods: + +* `1.6.1. Linear Non-prestressed Modal Analysis`_ +* `1.6.2. Partial Nonlinear Perturbed Modal Analysis`_ +* `1.6.3. Full Nonlinear Perturbed Modal Analysis`_ + +1.6.1. Linear Non-prestressed Modal Analysis +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A linear +non-prestressed modal analysis is effective when the stress-stiffening +effects are not critical. This method requires less run time than the other two +methods, as Newton-Raphson iterations are not required. The contact-stiffness matrix +is based on the initial contact status. + +Following is the process for solving a brake-squeal problem using this method: + +1. Perform a linear partial-element analysis with no prestress effects. +2. Generate the unsymmetric stiffness matrix + (:meth:`Mapdl.nropt("UNSYM") `). +3. Generate sliding frictional force (:meth:`Mapdl.cmrotate() `). +4. Perform a complex modal analysis using the QRDAMP or UNSYM eigensolver. + + When using the QRDAMP solver, you can reuse the symmetric + eigensolution from the previous load steps + (:meth:`Mapdl.qrdopt() `), effective when performing a friction- + sensitive/parametric analysis, as it saves time by not recalculating the + real symmetric modes after the first solve operation. + +5. Expand the modes and postprocess the results from + **Jobname.RST**. + + For this analysis, the UNSYM solver is selected to solve the problem. + (Guidelines for selecting the eigensolver for brake-squeal problems appear + in `1.8. Recommendations`_.) + + +The frequencies obtained from the modal solution have real and imaginary parts due +the presence of an unsymmetric stiffness matrix. The imaginary frequency reflects +the damped frequency, and the real frequency indicates whether the mode is stable or +not. A real eigenfrequency with a positive value indicates an unstable mode. + +The following input shows the solution steps involved in this method: + +**Modal Solution** + +.. code:: python + + mapdl.run("/SOLU") + mapdl.nropt("UNSYM") # To generate non symmetric + mapdl.cmsel("S", "C1_R") # Select the target elements of the disc + mapdl.cmsel("A", "C2_R") + mapdl.cm("E_ROTOR", "ELEM") # Form a component named E_ROTOR with the selected target elements + mapdl.allsel("ALL") + mapdl.cmrotate("E_ROTOR", "", "", 2) # Rotate the selected element along global Z using CMROTATE command + + # Perform modal solve, use UNSYM to extract 30 modes, and expand those + # modes. + mapdl.modal_analysis("UNSYM", 30, mxpand=True) + mapdl.finish() + + mapdl.post1() + modes = [] + modes.append(mapdl.set("list")) + mapdl.set(1, 21) + + # Plot the mode shape for mode 21 + mapdl.post_processing.plot_nodal_displacement( + "NORM", + cmap=ansys_colormap(), + line_width=5, + cpos="xy", + scalar_bar_args={"title": "Displacement", "vertical": False}, + ) + + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data('td-1', 'rotor_linear_step21_unorm.vtk' )) + rotor1.plot(scalars='values', cmap='jet', show_edges=True) + + +**Figure 1.3: Mode Shape for Unstable Mode (Mode 21).** +Obtained from the `1.6.1. Linear Non-prestressed Modal Analysis`_ . + + + +1.6.2. Partial Nonlinear Perturbed Modal Analysis +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use a partial nonlinear perturbed modal analysis when stress-stiffening affects +the final modal solution. The initial contact conditions are established, and a +prestressed matrix is generated at the end of the first static solution. + +Following is the process for solving a brake-squeal problem using this method: + +1. Perform a nonlinear, large-deflection static analysis + (:meth:`Mapdl.nlgeom("ON") `). + + Use the unsymmetric Newton-Raphson method + (:meth:`Mapdl.nropt("UNSYM") `). Specify the restart control points needed + for the linear perturbation analysis (:meth:`Mapdl.rescontrol() `) + + Create components for use in the next step. + + The static solution with external loading establishes the initial contact + condition and generates a prestressed matrix. + +2. Restart the previous static solution from the desired load step and + substep, and perform the first phase of the perturbation analysis while + preserving the **.ldhi**, **.rnnn** and **.rst** files (:meth:`Mapdl.antype("STATIC", "RESTART", "", "", "PERTURB") `). + + Initiate a modal linear perturbation analysis + (:meth:`Mapdl.perturb("MODAL") `). + + Generate forced frictional sliding contact (:meth:`Mapdl.cmrotate() `), + specifying the component names created in the previous step. + + The contact stiffness matrix is based only on the contact status at the + restart point. + + Regenerate the element stiffness matrix at the end of the first phase of + the linear perturbation solution (:meth:`Mapdl.solve("ELFORM") `). + +3. Obtain the linear perturbation modal solution using the QRDAMP or UNSYM + eigensolver (:meth:`Mapdl.modopt() `). + + When using the QRDAMP solver, you can reuse the symmetric + eigensolution from the previous load steps + (:meth:`Mapdl.qrdopt() `), effective when performing a + friction-sensitive/parametric analysis, as it saves time by not + recalculating the real symmetric modes after the first solve + operation. + +4. Expand the modes and postprocess the results (from the + **Jobname.RSTP** file). + +The following inputs show the solution steps involved with this method: + +**Static Solution** + +.. code:: python + + start(mapdl, "partial_prestressed") + mapdl.title("partial_prestressed, Solving brake squeal problem using partial pre-stressed modal solve") + + mapdl.run("/SOLU") + mapdl.antype("STATIC") # Perform static solve + mapdl.outres("ALL", "ALL") # Write all element and nodal solution results for each sub steps + mapdl.nropt("UNSYM") # Specify unsymmetric Newton-Raphson option to solve the problem + mapdl.rescontrol("DEFINE", "ALL", 1) # Control restart files + mapdl.nlgeom("ON") # Activate large deflection + mapdl.autots("ON") # Auto time stepping turned on + mapdl.time(1.0) # End time = 1.0 sec + mapdl.esel("S", "TYPE", "", 124) # Select element type 124 + mapdl.nsle("S", "ALL") # Select nodes attached to the element + mapdl.sf("ALL", "PRES", "%_LOADVARI4059%") # Apply surface pressure on the selected nodes + mapdl.esel("S", "TYPE", "", 125) # Select element type 125 + mapdl.nsle("S", "ALL") # Select nodes attached to the element + mapdl.sf("ALL", "PRES", "%_LOADVARI4061%") # Apply surface pressure on the selected nodes + mapdl.nsel("ALL") + mapdl.allsel("ALL") + mapdl.cmsel("S", "C1_R") # Select target elements of the disc + mapdl.cmsel("A", "C2_R") + mapdl.cm("E_ROTOR", "ELEM") # Form a component named E_ROTOR + mapdl.allsel("ALL") + mapdl.solve() # Solve with prestress + mapdl.finish() + +**Post processing to show partial results.** + +.. code:: python + + # select contact elements attached to the brake pad + mapdl.post1() + mapdl.set("last") + mapdl.esel("s", "type", "", 30, 32, 2) + mapdl.post_processing.plot_element_values( + "CONT", "STAT", scalar_bar_args={"title": "Contact status"} + ) + + mapdl.post_processing.plot_element_values( + "CONT", "SLIDE", scalar_bar_args={"title": "Contact sliding distance"} + ) + + mapdl.allsel("all") + mapdl.finish() + +.. figure:: images/cont_slide.png + :align: center + :alt: Contact Sliding Distance + :figclass: align-center + + **Figure 1.4: Contact Sliding Distance** + + +**Perturbed Modal Solution** + +.. code:: python + + # Restart from last load step and sub step of previous + mapdl.run("/SOLU") + mapdl.antype("static", "restart", "", "", "perturb") + + # static solution to perform perturbation analysis + mapdl.perturb("modal", "", "", "") # Perform perturbation modal solve + mapdl.cmrotate("E_ROTOR", rotatz=2) + mapdl.solve("elform") # Regenerate the element matrices + mapdl.outres("all", "all") + mapdl.modopt("unsym", 30) # Use UNSYM eigen solver and extract 30 modes + mapdl.mxpand(30, "", "", "") # Expand 30 modes + mapdl.solve() + mapdl.finish() + +**Post processing to show results.** + +.. code:: python + + mapdl.post1() + mapdl.file("", "rstp") + print(mapdl.post_processing) + + mapdl.set(1, 21) + mapdl.post_processing.plot_nodal_displacement( + scalar_bar_args={"title": "Total displacement\n Substep 21"} + ) + + mapdl.set(1, 22) + mapdl.post_processing.plot_nodal_displacement( + scalar_bar_args={"title": "Total displacement\n Substep 22"} + ) + + +.. jupyter-execute:: + :hide-code: + + rotor2_21 = pyvista.read(download_tech_demo_data('td-1', 'rotor_partial_step21_unorm.vtk' )) + rotor2_21.plot(scalars='values', cmap='jet', show_edges=True) + + +**Figure 1.5: Mode Shape for Unstable Mode (Mode 21).** +Obtained from the `1.6.1. Linear Non-prestressed Modal Analysis`_ . + + + +.. jupyter-execute:: + :hide-code: + + rotor2_22 = pyvista.read(download_tech_demo_data('td-1', 'rotor_partial_step22_unorm.vtk' )) + rotor2_22.plot(scalars='values', cmap='jet', show_edges=True) + + +**Figure 1.6: Mode Shape for Unstable Mode (Mode 21).** +Obtained from the `1.6.1. Linear Non-prestressed Modal Analysis`_ . + + + +1.6.3. Full Nonlinear Perturbed Modal Analysis +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A full nonlinear perturbed modal analysis is the most accurate method for modeling +the brake-squeal problem. This method uses Newton-Raphson iterations for *both* of the static solutions. + +Following is the process for solving a brake-squeal problem using this method: + +1. Perform a nonlinear, large-deflection static analysis + (:meth:`Mapdl.nlgeom("ON") `). + Use the unsymmetric Newton-Raphson method (:meth:`Mapdl.nropt("UNSYM") `). + Specify the restart control points needed for the linear perturbation analysis + (:meth:`Mapdl.rescontrol() `). + +2. Perform a full second static analysis. Generate sliding contact + (:meth:`Mapdl.cmrotate() `) to form an unsymmetric stiffness matrix. + +3. After obtaining the second static solution, postprocess the contact results. + Determine the status (that is, whether the elements are sliding, and the sliding distance, if any). + +4. Restart the previous static solution from the desired load step and substep, and perform the first + phase of the perturbation analysis while preserving the **.ldhi**, **.rnnn** and + **.rst** files (:meth:`Mapdl.antype("STATIC", "RESTART",,, "PERTURB") `). + + Initiate a modal linear perturbation analysis + (:meth:`Mapdl.perturb("MODAL") `). + + Regenerate the element stiffness matrix at the end of the first phase of + the linear perturbation solution (:meth:`Mapdl.solve("ELFORM") `). + +5. Obtain the linear perturbation modal solution using the QRDAMP or UNSYM eigensolver + (:meth:`Mapdl.modopt() `). + +6. Expand the modes and postprocess the results (from the **Jobname.RSTP** file). + The following inputs show the solution steps involved with this method: + +**First Static Solution** + +.. code:: python + + start(mapdl, 'full_non_linear') + + mapdl.run("/SOLU") + mapdl.antype("STATIC") # Perform static solve + mapdl.outres("ALL", "ALL") # Write all element and nodal solution results for each substep + mapdl.nropt("UNSYM") # Specify unsymmetric Newton-Raphson option to solve the problem + mapdl.rescontrol("DEFINE", "ALL", 1) # Control restart files + mapdl.nlgeom("ON") # Activate large deflection + mapdl.autots("ON") # Auto time stepping turned on + mapdl.time(1.0) # End time = 1.0 sec + mapdl.esel("S", "TYPE", "", 124) # Select element type 124 + mapdl.nsle("S", "ALL") # Select nodes attached to the element + mapdl.sf("ALL", "PRES", "%_LOADVARI4059%") # Apply surface pressure on the selected nodes + mapdl.esel("S", "TYPE", "", 125) # Select element type 125 + mapdl.nsle("S", "ALL") # Select nodes attached to the element + mapdl.sf("ALL", "PRES", "%_LOADVARI4061%") # Apply surface pressure on the selected nodes + mapdl.nsel("ALL") + mapdl.allsel("ALL") + mapdl.cmsel("S", "C1_R") # Select the target elements of the disc + mapdl.cmsel("A", "C2_R") + mapdl.cm("E_ROTOR", "ELEM") # Form a component named E_ROTOR with the selected target ELEMENTS + mapdl.allsel("ALL") + mapdl.solve() # Solve with prestress loading + + +**Second Static Solution** + +.. code:: python + + mapdl.cmrotate("E_ROTOR", rotatz=2) + mapdl.time(2.0) # End time = 2.0sec + mapdl.solve() # Perform full solve + mapdl.finish() + +**Plotting partial results** + +.. code:: python + + mapdl.post1() + mapdl.set("last") + + # select contact elements attached to the brake pad + mapdl.esel("s", "type", "", 30, 32, 2) + + mapdl.post_processing.plot_element_values( + "CONT", "STAT", scalar_bar_args={"title": "Contact status"} + ) + + mapdl.post_processing.plot_element_values( + "CONT", "SLIDE", scalar_bar_args={"title": "Contact sliding distance"} + ) + + mapdl.allsel("all") + mapdl.finish() + + +**Perturbed Modal Solution** + +.. code:: python + + mapdl.run("/SOLU") + mapdl.antype("STATIC", "RESTART", action="PERTURB") # Restart from last load step and sub step + mapdl.perturb("MODAL") # Perform linear perturbation modal solve + mapdl.solve("ELFORM") # Regenerate the element stiffness matrix + mapdl.outres("ALL", "ALL") + mapdl.modopt("UNSYM", 30) # Use UNSYM eigensolver and extract 30 modes + mapdl.mxpand(30) # Expand 30 modes + mapdl.solve() # Solve linear perturbation modal solve + +**Plotting results** + +.. code:: python + + + mapdl.post1() + mapdl.file("", "RSTP") + print(mapdl.post_processing) + + + mapdl.set(1, 21) + mapdl.post_processing.plot_nodal_displacement( + scalar_bar_args={"title": "Total displacement\n Substep 21"} + ) + + mapdl.set(1, 22) + mapdl.post_processing.plot_nodal_displacement( + scalar_bar_args={"title": "Total displacement\n Substep 22"} + ) + + mapdl.finish() + mapdl.exit() + + + +.. jupyter-execute:: + :hide-code: + + rotor3_21 = pyvista.read(download_tech_demo_data('td-1', 'rotor_non_linear_step21_unorm.vtk' )) + rotor3_21.plot(scalars='values', cmap='jet', show_edges=True) + + + +**Figure 1.7: Mode Shape for Unstable Mode (Mode 21).** + + + +.. jupyter-execute:: + :hide-code: + + rotor3_22 = pyvista.read(download_tech_demo_data('td-1', 'rotor_non_linear_step22_unorm.vtk' )) + rotor3_22.plot(scalars='values', cmap='jet', show_edges=True) + + + +**Figure 1.8: Mode Shape for Unstable Mode (Mode 21).** + + + +1.7. Results and Discussion +--------------------------- + +The unstable mode predictions for the brake disc-pad assembly using all three methods +were very close due to the relatively small prestress load. +The `1.6.1. Linear Non-prestressed Modal Analysis`_ predicted +unstable modes at 6474 Hz, while the other two solution methods predicted unstable modes +at 6470 Hz. + +The mode shape plots for the unstable modes suggest that the bending mode of the pads +and disc have similar characteristics. These bending modes couple due to friction, and +produce a squealing noise. + +.. jupyter-execute:: + :hide-code: + + rotor3_21 = pyvista.read(download_tech_demo_data('td-1', 'rotor_linear_step21_unorm.vtk' )) + rotor3_21.plot(scalars='values', cmap='jet', show_edges=True) + + +**Figure 1.9: Mode Shape for Unstable Mode (Mode 21).** +Obtained from the `1.6.1. Linear Non-prestressed Modal Analysis`_ . + + + +.. jupyter-execute:: + :hide-code: + + rotor3_22 = pyvista.read(download_tech_demo_data('td-1', 'rotor_linear_step22_unorm.vtk' )) + rotor3_22['values'] = rotor3_22['values']*100 + rotor3_22.plot(scalars='values', cmap='jet', show_edges=True) + + +**Figure 1.10: Mode Shape for Unstable Mode (Mode 22).** +Obtained from the `1.6.1. Linear Non-prestressed Modal Analysis`_ . + + +**Table 1.2: Solution Output** + ++----------+-----------------------------------+-------------------------------------------+-----------------------------------+ +| | Linear non-prestressed modal | Partial nonlinear perturbed modal | Full nonlinear perturbed modal | ++==========+========================+==========+==========================+================+==================+================+ +| **Mode** | **Imaginary** | **Real** | **Imaginary** | **Real** | **Imaginary** | **Real** | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 1.00 | 775.91 | 0.00 | 775.73 | 0.00 | 775.73 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 2.00 | 863.54 | 0.00 | 863.45 | 0.00 | 863.45 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 3.00 | 1097.18 | 0.00 | 1097.03 | 0.00 | 1097.03 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 4.00 | 1311.54 | 0.00 | 1311.06 | 0.00 | 1311.06 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 5.00 | 1328.73 | 0.00 | 1328.07 | 0.00 | 1328.07 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 6.00 | 1600.95 | 0.00 | 1600.66 | 0.00 | 1600.66 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 7.00 | 1616.15 | 0.00 | 1615.87 | 0.00 | 1615.87 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 8.00 | 1910.50 | 0.00 | 1910.50 | 0.00 | 1910.50 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 9.00 | 2070.73 | 0.00 | 2070.44 | 0.00 | 2070.44 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 10.00 | 2081.26 | 0.00 | 2080.98 | 0.00 | 2080.98 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 11.00 | 2676.71 | 0.00 | 2675.23 | 0.00 | 2675.23 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 12.00 | 2724.05 | 0.00 | 2722.61 | 0.00 | 2722.61 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 13.00 | 3373.96 | 0.00 | 3373.32 | 0.00 | 3373.32 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 14.00 | 4141.64 | 0.00 | 4141.45 | 0.00 | 4141.45 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 15.00 | 4145.16 | 0.00 | 4145.04 | 0.00 | 4145.04 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 16.00 | 4433.91 | 0.00 | 4431.08 | 0.00 | 4431.08 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 17.00 | 4486.50 | 0.00 | 4484.00 | 0.00 | 4484.00 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 18.00 | 4668.51 | 0.00 | 4667.62 | 0.00 | 4667.62 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 19.00 | 4767.54 | 0.00 | 4766.95 | 0.00 | 4766.95 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 20.00 | 5241.61 | 0.00 | 5241.38 | 0.00 | 5241.38 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 21.00 | 6474.25 | 21.61 | 6470.24 | 21.90 | 6470.24 | 21.90 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 22.00 | 6474.25 | -21.61 | 6470.24 | -21.90 | 6470.24 | -21.90 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 23.00 | 6763.36 | 0.00 | 6763.19 | 0.00 | 6763.19 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 24.00 | 6765.62 | 0.00 | 6765.51 | 0.00 | 6765.51 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 25.00 | 6920.64 | 0.00 | 6919.64 | 0.00 | 6919.64 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 26.00 | 6929.25 | 0.00 | 6929.19 | 0.00 | 6929.19 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 27.00 | 7069.69 | 0.00 | 7066.72 | 0.00 | 7066.72 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 28.00 | 7243.80 | 0.00 | 7242.71 | 0.00 | 7242.71 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 29.00 | 8498.41 | 0.00 | 8493.08 | 0.00 | 8493.08 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ +| 30.00 | 8623.76 | 0.00 | 8616.68 | 0.00 | 8616.68 | 0.00 | ++----------+------------------------+----------+--------------------------+----------------+------------------+----------------+ + +1.7.1. Determining the Modal Behavior of Individual Components +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is important to determine the modal behavior of individual components (disc and +pads) when predicting brake-squeal noise. A modal analysis performed on the free pad +and free disc model gives insight into potential coupling modes. The natural +frequency and mode shapes of brake pads and disc can also be used to define the type +of squeal noise that may occur in a braking system. Bending modes of pads and disc +are more significant than twisting modes because they eventually couple to produce +squeal noise. + +An examination of the results obtained from the modal analysis of a free disc and +pad shows that the second bending mode of the pad and ninth bending mode of the disc +can couple to create dynamic instability in the system. These pad and disc bending +modes can couple to produce an intermediate lock, resulting in a squeal noise at a +frequency close to 6470 Hz. + +1.7.2. Parametric Study with Increasing Friction Coefficient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A parametric study was performed on the brake disc model using a linear +non-prestressed modal solution with an increasing coefficient of friction. QRDAMP +eigensolver is used to perform the parametric studies by reusing the symmetric real +modes (:meth:`Mapdl.qrdopt("ON") `) obtained in the first load +step. + +The following plot suggests that modes with similar characteristics approach each +other and couple as the coefficient of friction increases: + + +.. _Table-1: + +.. jupyter-execute:: + :hide-code: + + columns_names = ['x', 'mode 21', 'mode 22'] + values = np.array( + [[0.0 , 860.933 , 6320.512], + [0.05 , 1774.363 , 5438.580], + [0.10 , 3653.717 , 3653.717], + [0.15 , 3632.719 , 3632.719], + [0.20 , 3685.215 , 3685.215], + [0.25 , 3779.708 , 3779.708], + [0.30 , 3842.703 , 3842.703]]) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['x'], y=df['mode 21'], name='Mode 21', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=True + ), + go.Scatter(x=df['x'], y=df['mode 22'], name='Mode 22', + mode='markers+lines', + marker=dict(color='red', size=10), + line=dict(color='red', width=3), + showlegend=True + ) + ] + ) + + fig.update_layout( + template='simple_white', + xaxis_title='Friction coefficient', + yaxis_title='Imaginary Eigenvalue (Hz)', + title='Effect of friction coefficient on Mode coupling', + title_x=0.5, + legend_title='Modes', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + +**Figure 1.11: Effect of Friction Coefficient on Unstable Modes** + +1.8. Recommendations +-------------------- + +The following table provides guidelines for selecting the optimal analysis method to +use for a brake-squeal problem: + + +**Table 1.3: Analysis comparison** + ++-----------------------------------+----------------------------------------------------------+----------------------------------------------+ +| Analysis Method | Benefits | Costs | ++===================================+==========================================================+==============================================+ +| Linear non-prestressed modal | * Fast run time. | * Accuracy. | +| | * No convergence issues. | * Does not include prestress effects | +| | * Good method for performing parametric studies | | ++-----------------------------------+----------------------------------------------------------+----------------------------------------------+ +| Partial nonlinear perturbed modal | * No convergence issues. | * Accuracy | +| | * Includes prestress effects | | ++-----------------------------------+----------------------------------------------------------+----------------------------------------------+ +| Full nonlinear perturbed modal | * Accurate. | * Longer run time. | +| | * Includes prestress effects | * Convergence issues | ++-----------------------------------+----------------------------------------------------------+----------------------------------------------+ + +The following table provides guidelines for selecting the optimal eigensolver +(:meth:`Mapdl.modopt() `) for obtaining the brake-squeal solution: + + + +**Table 1.4: Solver comparison** + ++---------------+-----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Eigensolver | Benefits | Costs | ++===============+===================================================================================+==============================================================================================================================================================+ +| QRDAMP | * Fast run time. | * Accuracy, as it approximates the unsymmetric stiffness matrix. | +| | * An excellent solver for performing parametric studies | * Not recommended when the number of elements contributing to unsymmetric stiffness matrix exceeds 10 percent of the total number of elements in the model. | ++---------------+-----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| UNSYM | * Accuracy, as it uses the full unsymmetric stiffness matrix to solve the problem | * Long run time when many modes are extracted | ++---------------+-----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +For further information, see Brake-Squeal (Prestressed Modal) Analysis in the *Structural Analysis Guide*. + +1.9. References +--------------- + +The following works were consulted when creating this example problem: + +1. Triches, M. Jr., Gerges, S. N. Y., & Jordon, R. (2004). Reduction of + squeal noise from disc brake systems using constrained layer damping. + *Journal of the Brazilian Society of Mechanical Sciences and + Engineering.* 26, 340-343. +2. Allgaier, R., Gaul, L., Keiper, W., & Willner, K. (1999). Mode lock-in and + friction modeling. *Computational Methods in Contact + Mechanics*. 4, 35-47. +3. Schroth, R., Hoffmann, N., Swift, R. (2004, January). Mechanism of brake + squeal from theory to experimentally measured mode coupling. In + *Proceedings of the 22nd International Modal Analysis Conference (IMAC XXII).* + +1.10. Input Files +----------------- + +The following input files were used for this problem: + +* **linear\_non\_prestressed.html** -- Linear non-prestressed modal solve input file. + :download:`Download source code: linear_non_prestressed.py `. +* **partial\_prestressed.html** -- Partial prestressed modal solve input file. + :download:`Download source code: partial_prestressed.py `. +* **full\_non\_linear.html** -- Full nonlinear prestressed modal solve input file. + :download:`Download source code: full_non_linear.py `. +* **linear\_non\_prestressed\_par.html** -- Parametric studies with increasing coefficient of friction. + :download:`Download source code: linear_non_prestressed_par.py `. +* **disc\_pad\_model.cdb** -- Common database file used for the linear non-prestressed modal analysis, the partial prestressed modal analysis, + and the full nonlinear prestressed modal analysis (called by the **linear\_non\_prestressed.dat**, **partial\_prestressed.dat**, + **full\_non\_linear.html** and **linear\_non\_prestressed\_par.html** files, respectively). + :download:`Download file: disc_pad_model.cdb `. + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +| `Download the zipped td-1 file set for this problem. `_ | ++-------------------------------------------------------------------------------------------------------------------------------------------+ +| `Download all td-nn file sets in a single zip file. `_ | ++-------------------------------------------------------------------------------------------------------------------------------------------+ + +For more information, see `Obtaining the Input Files. `_ + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ + diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/cont_slide.png b/doc/source/technology_showcase_examples/techdemo-1/images/cont_slide.png new file mode 100644 index 000000000..6e513f215 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/cont_slide.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig1.gif b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig1.gif new file mode 100644 index 000000000..72144f381 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig1.gif differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig10.gif b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig10.gif new file mode 100644 index 000000000..e406387a5 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig10.gif differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig5.gif b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig5.gif new file mode 100644 index 000000000..60f5468c3 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig5.gif differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig6.png b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig6.png new file mode 100644 index 000000000..9e9ce3e7b Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig6.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig7.png b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig7.png new file mode 100644 index 000000000..23b4684a9 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/gtecbrakesqueal_fig7.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21.png b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21.png new file mode 100644 index 000000000..000a0a6a0 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21_linear.png b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21_linear.png new file mode 100644 index 000000000..cb26cad04 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_21_linear.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_22.png b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_22.png new file mode 100644 index 000000000..000a0a6a0 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-1/images/ndisp_22.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.ipynb b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.ipynb new file mode 100644 index 000000000..10d887201 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.ipynb @@ -0,0 +1,266 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dynamic simulation of a printed circuit board assembly {#ref_dynamic_simulation_printed_circuit_board}\r\n\r\nThis examples shows how to use PyMAPDL to import an existing FE model\r\nand to run a modal and PSD analysis. PyDPF modules are also used for\r\npost-processing.\r\n\r\nThis example is inspired from the model and analysis defined in Chapter\r\n20 of the Mechanical APDL Technology Showcase Manual.\r\n\r\n## Additional Packages Used\r\n\r\n- [Matplotlib](https://matplotlib.org) is used for plotting purposes.\r\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Setting up model\r\n\r\nThe original FE model is given in the Ansys Mechanical APDL Technology\r\nShowcase Manual. The .cdb contains a FE model of a single circuit board.\r\nThe model is meshed with SOLID186, SHELL181 and BEAM188 elements. All\r\ncomponents of the PCB model is assigned with linear elastic isotropic\r\nmaterials. Bonded and flexible surface-to-surface contact pairs are used\r\nto define the contact between the IC packages and the circuit board.\r\n\r\n## Starting MAPDL as a service and importing an external model\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n\nfrom ansys.mapdl.core import launch_mapdl\nfrom ansys.mapdl.core.examples import download_tech_demo_data\n\n# start MAPDL as a service\nmapdl = launch_mapdl()\nprint(mapdl)\n\n# read model of single circuit board\n# download the cdb file\npcb_mesh_file = download_tech_demo_data(\"td-20\", \"pcb_mesh_file.cdb\")\n\n# enter preprocessor and read in cdb\nmapdl.prep7()\nmapdl.cdread(\"COMB\", pcb_mesh_file)\nmapdl.allsel()\nmapdl.eplot(background=\"w\")\nmapdl.cmsel(\"all\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating the complete layered model\r\n\r\nThe original model will be duplicated to create a layered PCB of three\r\nlayers that are binded together.\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# duplicate single PCB to get three layers\n# get the maximum node number for the single layers PCB in the input file\nmax_nodenum = mapdl.get(\"max_nodenum\", \"node\", \"\", \"num\", \"max\")\n\n# generate additional PCBs offset by 20 mm in the -y direction\nmapdl.egen(3, max_nodenum, \"all\", dy=-20)\n\n\n# bind the three layers together\n# select components of interest\nmapdl.cmsel(\"s\", \"N_JOINT_BOARD\")\nmapdl.cmsel(\"a\", \"N_JOINT_LEGS\")\nmapdl.cmsel(\"a\", \"N_BASE\")\n\n# get number of currently selected nodes\nnb_selected_nodes = mapdl.mesh.n_node\ncurrent_node = 0\nqueries = mapdl.queries\n\n# also select similar nodes for copies of the single PCB\n# and couple all dofs at the interface\nfor node_id in range(1, nb_selected_nodes + 1):\n current_node = queries.ndnext(current_node)\n mapdl.nsel(\"a\", \"node\", \"\", current_node + max_nodenum)\n mapdl.nsel(\"a\", \"node\", \"\", current_node + 2 * max_nodenum)\nmapdl.cpintf(\"all\")\n\n# define fixed support boundary condition\n# get max coupled set number\ncp_max = mapdl.get(\"cp_max\", \"cp\", 0, \"max\")\n\n# unselect nodes scoped in CP equations\nmapdl.nsel(\"u\", \"cp\", \"\", 1, \"cp_max\")\n\n# create named selection for base excitation\nmapdl.cm(\"n_base_excite\", \"node\")\n\n# fix displacement for base excitation nodes\nmapdl.d(\"all\", \"all\")\n\n# select all and plot the model using MAPDL's plotter and VTK's\nmapdl.allsel(\"all\")\nmapdl.cmsel(\"all\")\nmapdl.graphics(\"power\")\nmapdl.rgb(\"index\", 100, 100, 100, 0)\nmapdl.rgb(\"index\", 80, 80, 80, 13)\nmapdl.rgb(\"index\", 60, 60, 60, 14)\nmapdl.rgb(\"index\", 0, 0, 0, 15)\nmapdl.triad(\"rbot\")\nmapdl.pnum(\"type\", 1)\nmapdl.number(1)\nmapdl.hbc(1, \"on\")\nmapdl.pbc(\"all\", \"\", 1)\nmapdl.view(1, 1, 1, 1)\n# mapdl.eplot(vtk=False)\nmapdl.eplot(vtk=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modal Analysis\r\n\r\n## Run modal analysis\r\n\r\nA modal analysis is run using Block Lanzos. Only 10 modes are extracted\r\nfor the sake of run times, but using a higher number of nodes is\r\nrecommended (suggestion: 300 modes).\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# enter solution processor and define analysis settings\nmapdl.slashsolu()\nmapdl.antype(\"modal\")\n# set number of modes to extract\n# using a higher number of modes is recommended\nnb_modes = 10\n# use Block Lanzos to extract specified number of modes\nmapdl.modopt(\"lanb\", nb_modes)\nmapdl.mxpand(nb_modes)\noutput = mapdl.solve()\nprint(output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Post-processing the modal results\r\n\r\nThis sections illustrates different methods to post-process the results\r\nof the modal analysis : PyMAPDL method, PyMAPDL result reader,\r\nPyDPF-Post and PyDPF-Core. All methods lead to the same result and are\r\njust given as an example of how each module can be used.\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# using MAPDL methods\nmapdl.post1()\nmapdl.set(1, 1)\nmapdl.plnsol(\"u\", \"sum\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using PyMAPDL result reader\r\n\r\n*Not recommended* - PyMAPDL reader library is in process to being\r\ndeprecated. It is recommended to use [DPF\r\nPost](https://postdocs.pyansys.com/).\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mapdl_result = mapdl.result\nmapdl_result.plot_nodal_displacement(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using DPF-Post\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from ansys.dpf import post\n\nsolution_path = mapdl.result_file\nsolution = post.load_solution(solution_path)\nprint(solution)\ndisplacement = solution.displacement(time_scoping=1)\ntotal_deformation = displacement.norm\ntotal_deformation.plot_contour(show_edges=True, background=\"w\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using DPF-Core\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from ansys.dpf import core\n\nmodel = core.Model(solution_path)\nresults = model.results\nprint(results)\ndisplacements = results.displacement()\ntotal_def = core.operators.math.norm_fc(displacements)\ntotal_def_container = total_def.outputs.fields_container()\nmesh = model.metadata.meshed_region\nmesh.plot(total_def_container.get_field_by_time_id(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Run PSD analysis\r\n\r\nThe response spectrum analysis is defined, solved and post-processed.\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# define PSD analysis with input spectrum\nmapdl.slashsolu()\nmapdl.antype(\"spectr\")\n\n# power spectral density\nmapdl.spopt(\"psd\")\n\n# use input table 1 with acceleration spectrum in terms of acceleration due to gravity\nmapdl.psdunit(1, \"accg\", 9.81 * 1000)\n\n# define the frequency points in the input table 1\nmapdl.psdfrq(1, \"\", 1, 40, 50, 70.71678, 100, 700, 900)\n\n# define the PSD values in the input table 1\nmapdl.psdval(1, 0.01, 0.01, 0.1, 1, 10, 10, 1)\n\n# set the damping ratio as 5%\nmapdl.dmprat(0.05)\n\n# apply base excitation on the set of nodes N_BASE_EXCITE in the y-direction from table 1\nmapdl.d(\"N_BASE_EXCITE\", \"uy\", 1)\n\n# calculate the participation factor for PSD with base excitation from input table 1\nmapdl.pfact(1, \"base\")\n\n# write the displacent solution relative to the base excitation to the results file from the PSD analysis\nmapdl.psdres(\"disp\", \"rel\")\n\n# write the absolute velocity solution to the results file from the PSD analysis\nmapdl.psdres(\"velo\", \"abs\")\n\n# write the absolute acceleration solution to the results file from the PSD analysis\nmapdl.psdres(\"acel\", \"abs\")\n\n# combine only those modes whose significance level exceeds 0.0001\nmapdl.psdcom()\noutput = mapdl.solve()\nprint(output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Post-process PSD analysis\r\n\r\nThe response spectrum analysis is post-processed. First, the standard\r\nMAPDL POST1 postprocessor is used. Then, the MAPDL time-history POST26\r\npostprocessor is used to generate the response power spectral density.\r\n\r\n::: note\r\n::: title\r\nNote\r\n:::\r\n\r\nThe graph generated through POST26 is exported as a picture in the\r\nworking directory. Finally, the results from POST26 are saved to Python\r\nvariables to be plotted in the Python environment with the use of\r\nMatplotlib library.\r\n:::\r\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Post-process PSD analysis in POST1\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mapdl.post1()\nmapdl.set(1, 1)\nmapdl.plnsol(\"u\", \"sum\")\nmapdl.set(\"last\")\nmapdl.plnsol(\"u\", \"sum\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Post-process PSD analysis in POST26 (time-history post-processing)\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mapdl.post26()\n\n# allow storage for 200 variables\nmapdl.numvar(200)\nmapdl.cmsel(\"s\", \"MY_MONITOR\")\nmonitored_node = mapdl.queries.ndnext(0)\nmapdl.store(\"psd\")\n\n# store the psd analysis u_y data for the node MYMONITOR as the reference no 2\nmapdl.nsol(2, monitored_node, \"u\", \"y\")\n\n# compute the response power spectral density for displacement associated with variable 2\nmapdl.rpsd(3, 2)\nmapdl.show(\"png\")\n\n# plot the variable 3\nmapdl.plvar(3)\n\n# print the variable 3\nmapdl.prvar(3)\n\n# x-axis is set for Log X scale\nmapdl.gropt(\"logx\", 1)\n\n# y-axis is set for Log X scale\nmapdl.gropt(\"logy\", 1)\n\n# plot the variable 3\nmapdl.plvar(3)\nmapdl.show(\"close\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Post-process PSD analysis using Matplotlib\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# store MAPDL results to python variables\nmapdl.dim(\"frequencies\", \"array\", 4000, 1)\nmapdl.dim(\"response\", \"array\", 4000, 1)\nmapdl.vget(\"frequencies(1)\", 1)\nmapdl.vget(\"response(1)\", 3)\nfrequencies = mapdl.parameters[\"frequencies\"]\nresponse = mapdl.parameters[\"response\"]\n\n# use Matplotlib to create graph\nfig = plt.figure()\nax = fig.add_subplot(111)\nplt.xscale(\"log\")\nplt.yscale(\"log\")\nax.plot(frequencies, response)\nax.set_xlabel(\"Frequencies\")\nax.set_ylabel(\"Response power spectral density\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exit MAPDL\r\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mapdl.exit()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.md5 b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.md5 new file mode 100644 index 000000000..d201fe089 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.md5 @@ -0,0 +1 @@ +8cc58747b317b8edca30aa7fe86c4a7c \ No newline at end of file diff --git a/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.py b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.py new file mode 100644 index 000000000..15cc7f383 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.py @@ -0,0 +1,324 @@ +""".. _ref_dynamic_simulation_printed_circuit_board: + +Dynamic simulation of a printed circuit board assembly +====================================================== + +This examples shows how to use PyMAPDL to import an existing FE model and to +run a modal and PSD analysis. PyDPF modules are also used for post-processing. + +This example is inspired from the model and analysis defined in Chapter 20 of +the Mechanical APDL Technology Showcase Manual. + +Additional Packages Used +------------------------ + +* `Matplotlib `_ is used for plotting purposes. + +""" + +############################################################################### +# Setting up model +# ---------------- +# +# The original FE model is given in the Ansys Mechanical APDL Technology +# Showcase Manual. The .cdb contains a FE model of a single circuit board. The +# model is meshed with SOLID186, SHELL181 and BEAM188 elements. All components +# of the PCB model is assigned with linear elastic isotropic materials. Bonded +# and flexible surface-to-surface contact pairs are used to define the contact +# between the IC packages and the circuit board. +# +# Starting MAPDL as a service and importing an external model +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# + +from ansys.mapdl.core import launch_mapdl +from ansys.mapdl.core.examples import download_tech_demo_data +import matplotlib.pyplot as plt + +# start MAPDL as a service +mapdl = launch_mapdl() +print(mapdl) + +# read model of single circuit board +# download the cdb file +pcb_mesh_file = download_tech_demo_data("td-20", "pcb_mesh_file.cdb") + +# enter preprocessor and read in cdb +mapdl.prep7() +mapdl.cdread("COMB", pcb_mesh_file) +mapdl.allsel() +mapdl.eplot(background="w") +mapdl.cmsel("all") + +############################################################################### +# Creating the complete layered model +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# The original model will be duplicated to create a layered PCB of three layers +# that are binded together. + +# duplicate single PCB to get three layers +# get the maximum node number for the single layers PCB in the input file +max_nodenum = mapdl.get("max_nodenum", "node", "", "num", "max") + +# generate additional PCBs offset by 20 mm in the -y direction +mapdl.egen(3, max_nodenum, "all", dy=-20) + + +# bind the three layers together +# select components of interest +mapdl.cmsel("s", "N_JOINT_BOARD") +mapdl.cmsel("a", "N_JOINT_LEGS") +mapdl.cmsel("a", "N_BASE") + +# get number of currently selected nodes +nb_selected_nodes = mapdl.mesh.n_node +current_node = 0 +queries = mapdl.queries + +# also select similar nodes for copies of the single PCB +# and couple all dofs at the interface +for node_id in range(1, nb_selected_nodes + 1): + current_node = queries.ndnext(current_node) + mapdl.nsel("a", "node", "", current_node + max_nodenum) + mapdl.nsel("a", "node", "", current_node + 2 * max_nodenum) +mapdl.cpintf("all") + +# define fixed support boundary condition +# get max coupled set number +cp_max = mapdl.get("cp_max", "cp", 0, "max") + +# unselect nodes scoped in CP equations +mapdl.nsel("u", "cp", "", 1, "cp_max") + +# create named selection for base excitation +mapdl.cm("n_base_excite", "node") + +# fix displacement for base excitation nodes +mapdl.d("all", "all") + +# select all and plot the model using MAPDL's plotter and VTK's +mapdl.allsel("all") +mapdl.cmsel("all") +mapdl.graphics("power") +mapdl.rgb("index", 100, 100, 100, 0) +mapdl.rgb("index", 80, 80, 80, 13) +mapdl.rgb("index", 60, 60, 60, 14) +mapdl.rgb("index", 0, 0, 0, 15) +mapdl.triad("rbot") +mapdl.pnum("type", 1) +mapdl.number(1) +mapdl.hbc(1, "on") +mapdl.pbc("all", "", 1) +mapdl.view(1, 1, 1, 1) +# mapdl.eplot(vtk=False) +mapdl.eplot(vtk=True) + +############################################################################### +# Modal Analysis +# -------------- +# +# Run modal analysis +# ~~~~~~~~~~~~~~~~~~ +# +# A modal analysis is run using Block Lanzos. +# Only 10 modes are extracted for the sake of run times, but using a higher +# number of nodes is recommended (suggestion: 300 modes). +# + +# enter solution processor and define analysis settings +mapdl.slashsolu() +mapdl.antype("modal") +# set number of modes to extract +# using a higher number of modes is recommended +nb_modes = 10 +# use Block Lanzos to extract specified number of modes +mapdl.modopt("lanb", nb_modes) +mapdl.mxpand(nb_modes) +output = mapdl.solve() +print(output) + + +############################################################################### +# Post-processing the modal results +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# This sections illustrates different methods to post-process the results of the +# modal analysis : PyMAPDL method, PyMAPDL result reader, PyDPF-Post +# and PyDPF-Core. All methods lead to the same result and are just given as an +# example of how each module can be used. + +# using MAPDL methods +mapdl.post1() +mapdl.set(1, 1) +mapdl.plnsol("u", "sum") + + +############################################################################### +# Using PyMAPDL result reader +# *************************** +# +# *Not recommended* - PyMAPDL reader library is in process to being deprecated. +# It is recommended to use `DPF Post `_. +# + +mapdl_result = mapdl.result +mapdl_result.plot_nodal_displacement(0) + +############################################################################### +# Using DPF-Post +# ************** +# + +from ansys.dpf import post + +solution_path = mapdl.result_file +solution = post.load_solution(solution_path) +print(solution) +displacement = solution.displacement(time_scoping=1) +total_deformation = displacement.norm +total_deformation.plot_contour(show_edges=True, background="w") + +############################################################################### +# Using DPF-Core +# ************** +# + +from ansys.dpf import core + +model = core.Model(solution_path) +results = model.results +print(results) +displacements = results.displacement() +total_def = core.operators.math.norm_fc(displacements) +total_def_container = total_def.outputs.fields_container() +mesh = model.metadata.meshed_region +mesh.plot(total_def_container.get_field_by_time_id(1)) + +############################################################################### +# Run PSD analysis +# ---------------- +# The response spectrum analysis is defined, solved and post-processed. + +# define PSD analysis with input spectrum +mapdl.slashsolu() +mapdl.antype("spectr") + +# power spectral density +mapdl.spopt("psd") + +# use input table 1 with acceleration spectrum in terms of acceleration due to gravity +mapdl.psdunit(1, "accg", 9.81 * 1000) + +# define the frequency points in the input table 1 +mapdl.psdfrq(1, "", 1, 40, 50, 70.71678, 100, 700, 900) + +# define the PSD values in the input table 1 +mapdl.psdval(1, 0.01, 0.01, 0.1, 1, 10, 10, 1) + +# set the damping ratio as 5% +mapdl.dmprat(0.05) + +# apply base excitation on the set of nodes N_BASE_EXCITE in the y-direction from table 1 +mapdl.d("N_BASE_EXCITE", "uy", 1) + +# calculate the participation factor for PSD with base excitation from input table 1 +mapdl.pfact(1, "base") + +# write the displacent solution relative to the base excitation to the results file from the +# PSD analysis +mapdl.psdres("disp", "rel") + +# write the absolute velocity solution to the results file from the PSD analysis +mapdl.psdres("velo", "abs") + +# write the absolute acceleration solution to the results file from the PSD analysis +mapdl.psdres("acel", "abs") + +# combine only those modes whose significance level exceeds 0.0001 +mapdl.psdcom() +output = mapdl.solve() +print(output) + +############################################################################### +# Post-process PSD analysis +# ~~~~~~~~~~~~~~~~~~~~~~~~~ +# The response spectrum analysis is post-processed. First, the standard +# MAPDL POST1 postprocessor is used. Then, the MAPDL time-history +# POST26 postprocessor is used to generate the response power spectral +# density. +# +# .. note:: +# The graph generated through POST26 is exported as a picture in the working +# directory. Finally, the results from POST26 are saved to Python variables +# to be plotted in the Python environment with the use of Matplotlib +# library. + + +############################################################################### +# Post-process PSD analysis in POST1 +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +mapdl.post1() +mapdl.set(1, 1) +mapdl.plnsol("u", "sum") +mapdl.set("last") +mapdl.plnsol("u", "sum") + +############################################################################### +# Post-process PSD analysis in POST26 (time-history post-processing) +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +mapdl.post26() + +# allow storage for 200 variables +mapdl.numvar(200) +mapdl.cmsel("s", "MY_MONITOR") +monitored_node = mapdl.queries.ndnext(0) +mapdl.store("psd") + +# store the psd analysis u_y data for the node MYMONITOR as the reference no 2 +mapdl.nsol(2, monitored_node, "u", "y") + +# compute the response power spectral density for displacement associated with variable 2 +mapdl.rpsd(3, 2) +mapdl.show("png") + +# plot the variable 3 +mapdl.plvar(3) + +# print the variable 3 +mapdl.prvar(3) + +# x-axis is set for Log X scale +mapdl.gropt("logx", 1) + +# y-axis is set for Log X scale +mapdl.gropt("logy", 1) + +# plot the variable 3 +mapdl.plvar(3) +mapdl.show("close") + +############################################################################### +# Post-process PSD analysis using Matplotlib +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# store MAPDL results to python variables +mapdl.dim("frequencies", "array", 4000, 1) +mapdl.dim("response", "array", 4000, 1) +mapdl.vget("frequencies", 1) +mapdl.vget("response", 3) +frequencies = mapdl.parameters["frequencies"] +response = mapdl.parameters["response"] + +# use Matplotlib to create graph +fig = plt.figure() +ax = fig.add_subplot(111) +plt.xscale("log") +plt.yscale("log") +ax.plot(frequencies, response) +ax.set_xlabel("Frequencies") +ax.set_ylabel("Response power spectral density") + +############################################################################### +# Exit MAPDL +mapdl.exit() diff --git a/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.rst b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.rst new file mode 100644 index 000000000..347284b36 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB.rst @@ -0,0 +1,2633 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples\examples\technology_showcase_examples-techdemo\20-example-technology-showcase-dynamic-simulation-PCB.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + Click :ref:`here ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_download_examples_examples_technology_showcase_examples-techdemo_20-example-technology-showcase-dynamic-simulation-PCB.py: + +.. _ref_dynamic_simulation_printed_circuit_board: +.. _tech_demo_20: + +Dynamic simulation of a printed circuit board assembly +====================================================== + +This examples shows how to use PyMAPDL to import an existing FE model and to +run a modal and PSD analysis. PyDPF modules are also used for post-processing. + +This example is inspired from the model and analysis defined in Chapter 20 of +the Mechanical APDL Technology Showcase Manual. + +Additional Packages Used +------------------------ + +* `Matplotlib `_ is used for plotting purposes. + +.. GENERATED FROM PYTHON SOURCE LINES 20-33 + +Setting up model +---------------- + +The original FE model is given in the Ansys Mechanical APDL Technology +Showcase Manual. The .cdb contains a FE model of a single circuit board. The +model is meshed with SOLID186, SHELL181 and BEAM188 elements. All components +of the PCB model is assigned with linear elastic isotropic materials. Bonded +and flexible surface-to-surface contact pairs are used to define the contact +between the IC packages and the circuit board. + +Starting MAPDL as a service and importing an external model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +.. GENERATED FROM PYTHON SOURCE LINES 33-54 + +.. code-block:: default + + + import _.pyplot as plt + + from ansys.mapdl.core import launch_mapdl + from ansys.mapdl.core.examples import download_tech_demo_data + + # start MAPDL as a service + mapdl = launch_mapdl() + print(mapdl) + + # read model of single circuit board + # download the cdb file + pcb_mesh_file = download_tech_demo_data("td-20", "pcb_mesh_file.cdb") + + # enter preprocessor and read in cdb + mapdl.prep7() + mapdl.cdread("COMB", pcb_mesh_file) + mapdl.allsel() + mapdl.eplot(background="w") + mapdl.cmsel("all") + + + + +.. figure:: images/ex_20-tecPCB_001.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + +.. rst-class:: sphx-glr-script-out + + Out: + + .. code-block:: none + + Product: Ansys Mechanical Enterprise + MAPDL Version: 21.2 + ansys.mapdl Version: 0.63.0 + + + ALSO SELECT ALL COMPONENTS + + + +.. GENERATED FROM PYTHON SOURCE LINES 55-59 + +Creating the complete layered model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The original model will be duplicated to create a layered PCB of three layers +that are binded together. + +.. GENERATED FROM PYTHON SOURCE LINES 59-117 + +.. code-block:: default + + + # duplicate single PCB to get three layers + # get the maximum node number for the single layers PCB in the input file + max_nodenum = mapdl.get("max_nodenum", "node", "", "num", "max") + + # generate additional PCBs offset by 20 mm in the -y direction + mapdl.egen(3, max_nodenum, "all", dy=-20) + + + # bind the three layers together + # select components of interest + mapdl.cmsel("s", "N_JOINT_BOARD") + mapdl.cmsel("a", "N_JOINT_LEGS") + mapdl.cmsel("a", "N_BASE") + + # get number of currently selected nodes + nb_selected_nodes = mapdl.mesh.n_node + current_node = 0 + queries = mapdl.queries + + # also select similar nodes for copies of the single PCB + # and couple all dofs at the interface + for node_id in range(1, nb_selected_nodes + 1): + current_node = queries.ndnext(current_node) + mapdl.nsel("a", "node", "", current_node + max_nodenum) + mapdl.nsel("a", "node", "", current_node + 2 * max_nodenum) + mapdl.cpintf("all") + + # define fixed support boundary condition + # get max coupled set number + cp_max = mapdl.get("cp_max", "cp", 0, "max") + + # unselect nodes scoped in CP equations + mapdl.nsel("u", "cp", "", 1, "cp_max") + + # create named selection for base excitation + mapdl.cm("n_base_excite", "node") + + # fix displacement for base excitation nodes + mapdl.d("all", "all") + + # select all and plot the model using MAPDL's plotter and VTK's + mapdl.allsel("all") + mapdl.cmsel("all") + mapdl.graphics("power") + mapdl.rgb("index", 100, 100, 100, 0) + mapdl.rgb("index", 80, 80, 80, 13) + mapdl.rgb("index", 60, 60, 60, 14) + mapdl.rgb("index", 0, 0, 0, 15) + mapdl.triad("rbot") + mapdl.pnum("type", 1) + mapdl.number(1) + mapdl.hbc(1, "on") + mapdl.pbc("all", "", 1) + mapdl.view(1, 1, 1, 1) + # mapdl.eplot(vtk=False) + mapdl.eplot(vtk=True) + + +.. figure:: images/ex_20-tecPCB_002.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + +.. rst-class:: sphx-glr-script-out + + +.. GENERATED FROM PYTHON SOURCE LINES 118-128 + +Modal Analysis +-------------- + +Run modal analysis +~~~~~~~~~~~~~~~~~~ + +A modal analysis is run using Block Lanzos. +Only 10 modes are extracted for the sake of run times, but using a higher +number of nodes is recommended (suggestion: 300 modes). + + +.. GENERATED FROM PYTHON SOURCE LINES 128-142 + +.. code-block:: default + + + # enter solution processor and define analysis settings + mapdl.slashsolu() + mapdl.antype("modal") + # set number of modes to extract + # using a higher number of modes is recommended + nb_modes = 10 + # use Block Lanzos to extract specified number of modes + mapdl.modopt("lanb", nb_modes) + mapdl.mxpand(nb_modes) + output = mapdl.solve() + print(output) + + + + + + +.. rst-class:: sphx-glr-script-out + + Out: + + .. code-block:: none + + *** NOTE *** CP = 0.781 TIME= 06:52:51 + The automatic domain decomposition logic has selected the MESH domain + decomposition method with 2 processes per solution. + + ***** ANSYS SOLVE COMMAND ***** + + *** NOTE *** CP = 0.812 TIME= 06:52:51 + There is no title defined for this analysis. + + *** NOTE *** CP = 0.828 TIME= 06:52:51 + To view 3-D mode shapes of beam or pipe elements, expand the modes with + element results calculation active via the MXPAND command's + Elcalc=YES. + + *** WARNING *** CP = 0.844 TIME= 06:52:51 + Previous testing revealed that 3 of the 26046 selected elements violate + shape warning limits. To review warning messages, please see the + output or error file, or issue the CHECK command. + + *** NOTE *** CP = 0.844 TIME= 06:52:51 + The model data was checked and warning messages were found. + Please review output or errors file ( + C:\Users\gayuso\AppData\Local\Temp\ansys_pasiuwhdkb\file0.err ) for + these warning messages. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + ---GIVE SUGGESTIONS ONLY--- + + ELEMENT TYPE 1 IS BEAM188 . KEYOPT(3) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 1 IS BEAM188 . KEYOPT(15) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 2 IS BEAM188 . KEYOPT(3) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 2 IS BEAM188 . KEYOPT(15) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 3 IS BEAM188 . KEYOPT(3) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 3 IS BEAM188 . KEYOPT(15) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 4 IS BEAM188 . KEYOPT(3) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 4 IS BEAM188 . KEYOPT(15) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 5 IS BEAM188 . KEYOPT(3) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 5 IS BEAM188 . KEYOPT(15) IS ALREADY SET AS SUGGESTED. + + ELEMENT TYPE 6 IS SHELL181. IT IS ASSOCIATED WITH ELASTOPLASTIC + MATERIALS ONLY. KEYOPT(8)=2 IS SUGGESTED AND KEYOPT(3)=2 IS SUGGESTED FOR + HIGHER ACCURACY OF MEMBRANE STRESSES; OTHERWISE, KEYOPT(3)=0 IS SUGGESTED. + + ELEMENT TYPE 6 HAS KEYOPT(3)=2. FOR THE SPECIFIED ANALYSIS TYPE, LUMPED MASS + MATRIX OPTION (LUMPM, ON) IS SUGGESTED. + + ELEMENT TYPE 7 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 8 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 9 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 10 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 11 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 12 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 13 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 14 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 15 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 16 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 17 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 18 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 19 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 20 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + ELEMENT TYPE 21 IS SOLID186. KEYOPT(2)=0 IS SUGGESTED. + + + + *** ANSYS - ENGINEERING ANALYSIS SYSTEM RELEASE 2021 R2 21.2 *** + DISTRIBUTED Ansys Mechanical Enterprise + + 00000000 VERSION=WINDOWS x64 06:52:51 JUL 25, 2022 CP= 0.844 + + + + + + S O L U T I O N O P T I O N S + + PROBLEM DIMENSIONALITY. . . . . . . . . . . . .3-D + DEGREES OF FREEDOM. . . . . . UX UY UZ ROTX ROTY ROTZ + ANALYSIS TYPE . . . . . . . . . . . . . . . . .MODAL + EXTRACTION METHOD. . . . . . . . . . . . . .BLOCK LANCZOS + NUMBER OF MODES TO EXTRACT. . . . . . . . . . . 10 + GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC + NUMBER OF MODES TO EXPAND . . . . . . . . . . . 10 + ELEMENT RESULTS CALCULATION . . . . . . . . . .OFF + + *** NOTE *** CP = 0.844 TIME= 06:52:51 + SHELL181 and SHELL281 will not support real constant input at a future + release. Please move to section input. + + *** NOTE *** CP = 0.891 TIME= 06:52:51 + The conditions for direct assembly have been met. No .emat or .erot + files will be produced. + + *** NOTE *** CP = 0.922 TIME= 06:52:51 + Internal nodes from 43998 to 44297 are created. + 300 internal nodes are used for quadratic and/or cubic options of + BEAM188, PIPE288, and/or SHELL208. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 22 and contact element type 22 has been set up. The + companion pair has real constant set ID 23. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.0609 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23362 and target element 23450. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 23 and contact element type 22 has been set up. The + companion pair has real constant set ID 22. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6035 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23389 and target element 23348. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 24 and contact element type 24 has been set up. The + companion pair has real constant set ID 25. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.7893 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 23534 and target element 23703. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 25 and contact element type 24 has been set up. The + companion pair has real constant set ID 24. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6670 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23619 and target element 23500. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 26 and contact element type 26 has been set up. The + companion pair has real constant set ID 27. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.4344 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23799 and target element 23840. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 27 and contact element type 26 has been set up. The + companion pair has real constant set ID 26. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.2769 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 8.437694987E-15 was detected between contact + element 23816 and target element 23774. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 28 and contact element type 28 has been set up. The + companion pair has real constant set ID 29. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2044 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 23925 and target element 24048. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 29 and contact element type 28 has been set up. The + companion pair has real constant set ID 28. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.8833 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.993605777E-15 was detected between contact + element 24004 and target element 23917. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 30 and contact element type 30 has been set up. The + companion pair has real constant set ID 31. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.6992 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.33226763E-14 was detected between contact + element 24136 and target element 24168. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 31 and contact element type 30 has been set up. The + companion pair has real constant set ID 30. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7212 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 24143 and target element 24111. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 32 and contact element type 32 has been set up. The + companion pair has real constant set ID 33. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.1818 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 2.131628207E-14 was detected between contact + element 24242 and target element 24365. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 33 and contact element type 32 has been set up. The + companion pair has real constant set ID 32. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7511 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 24279 and target element 24217. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 34 and contact element type 34 has been set up. The + companion pair has real constant set ID 35. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2093 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 24457 and target element 24613. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 35 and contact element type 34 has been set up. The + companion pair has real constant set ID 34. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7849 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 24514 and target element 24456. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 36 and contact element type 36 has been set up. The + companion pair has real constant set ID 37. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.8622 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 24670 and target element 24765. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 37 and contact element type 36 has been set up. The + companion pair has real constant set ID 36. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7993 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 24705 and target element 24663. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 38 and contact element type 38 has been set up. The + companion pair has real constant set ID 39. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2658 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 9.769962617E-15 was detected between contact + element 24836 and target element 24926. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 39 and contact element type 38 has been set up. The + companion pair has real constant set ID 38. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.8514 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 8.881784197E-15 was detected between contact + element 24879 and target element 24787. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 40 and contact element type 40 has been set up. The + companion pair has real constant set ID 41. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.8593 + Average contact pair depth 4.0000 + Pinball region factor PINB 1.0000 + The resulting pinball region 4.0000 + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + One of the contact searching regions contains at least 63 target + elements. You may reduce the pinball radius. + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 24979 and target element 25077. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 41 and contact element type 40 has been set up. The + companion pair has real constant set ID 40. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 1.8845 + Average contact pair depth 2.5000 + Pinball region factor PINB 1.0000 + The resulting pinball region 2.5000 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 25011 and target element 24931. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 42 and contact element type 42 has been set up. The + companion pair has real constant set ID 43. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.2391 + Average contact pair depth 4.0000 + Pinball region factor PINB 1.0000 + The resulting pinball region 4.0000 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 8.881784197E-15 was detected between contact + element 25172 and target element 25232. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 43 and contact element type 42 has been set up. The + companion pair has real constant set ID 42. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.4761 + Average contact pair depth 2.5000 + Pinball region factor PINB 1.0000 + The resulting pinball region 2.5000 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 25184 and target element 25127. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 44 and contact element type 44 has been set up. The + companion pair has real constant set ID 45. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.3552 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25356 and target element 25570. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 45 and contact element type 44 has been set up. The + companion pair has real constant set ID 44. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7967 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 25446 and target element 25239. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 46 and contact element type 46 has been set up. The + companion pair has real constant set ID 47. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.1237 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25628 and target element 25709. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 47 and contact element type 46 has been set up. The + companion pair has real constant set ID 46. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.5685 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 25639 and target element 25608. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 48 and contact element type 48 has been set up. The + companion pair has real constant set ID 49. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.0637 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25779 and target element 25820. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 49 and contact element type 48 has been set up. The + companion pair has real constant set ID 48. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.8027 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25787 and target element 25736. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 50 and contact element type 50 has been set up. The + companion pair has real constant set ID 51. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2471 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 1.33226763E-14 was detected between contact + element 25924 and target element 26035. + **************************************** + + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Symmetric Deformable- deformable contact pair identified by real + constant set 51 and contact element type 50 has been set up. The + companion pair has real constant set ID 50. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6964 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 1.953 TIME= 06:52:52 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 25939 and target element 25890. + **************************************** + + + + + *** NOTE *** CP = 2.016 TIME= 06:52:52 + Internal nodes from 43998 to 44297 are created. + 300 internal nodes are used for quadratic and/or cubic options of + BEAM188, PIPE288, and/or SHELL208. + + + + D I S T R I B U T E D D O M A I N D E C O M P O S E R + + ...Number of elements: 26046 + ...Number of nodes: 44197 + ...Decompose to 2 CPU domains + ...Element load balance ratio = 1.001 + + + L O A D S T E P O P T I O N S + + LOAD STEP NUMBER. . . . . . . . . . . . . . . . 1 + THERMAL STRAINS INCLUDED IN THE LOAD VECTOR . . YES + PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT + DATABASE OUTPUT CONTROLS. . . . . . . . . . . .ALL DATA WRITTEN + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 22 and contact element type 22 has been set up. The + companion pair has real constant set ID 23. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.0609 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23362 and target element 23450. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 23 and contact element type 22 has been set up. The + companion pair has real constant set ID 22. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6035 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23389 and target element 23348. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 24 and contact element type 24 has been set up. The + companion pair has real constant set ID 25. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.7893 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 23534 and target element 23703. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 25 and contact element type 24 has been set up. The + companion pair has real constant set ID 24. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6670 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 23619 and target element 23500. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 32 and contact element type 32 has been set up. The + companion pair has real constant set ID 33. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.1818 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 2.131628207E-14 was detected between contact + element 24242 and target element 24365. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 33 and contact element type 32 has been set up. The + companion pair has real constant set ID 32. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.7511 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 24279 and target element 24217. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 38 and contact element type 38 has been set up. The + companion pair has real constant set ID 39. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2658 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 9.769962617E-15 was detected between contact + element 24836 and target element 24926. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 39 and contact element type 38 has been set up. The + companion pair has real constant set ID 38. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.8514 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 8.881784197E-15 was detected between contact + element 24879 and target element 24787. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 40 and contact element type 40 has been set up. The + companion pair has real constant set ID 41. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 2.8593 + Average contact pair depth 4.0000 + Pinball region factor PINB 1.0000 + The resulting pinball region 4.0000 + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + One of the contact searching regions contains at least 63 target + elements. You may reduce the pinball radius. + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 24979 and target element 25077. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 41 and contact element type 40 has been set up. The + companion pair has real constant set ID 40. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 1.8845 + Average contact pair depth 2.5000 + Pinball region factor PINB 1.0000 + The resulting pinball region 2.5000 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.065814104E-14 was detected between contact + element 25011 and target element 24931. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 48 and contact element type 48 has been set up. The + companion pair has real constant set ID 49. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.0637 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25779 and target element 25820. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 49 and contact element type 48 has been set up. The + companion pair has real constant set ID 48. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.8027 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.421085472E-14 was detected between contact + element 25787 and target element 25736. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 50 and contact element type 50 has been set up. The + companion pair has real constant set ID 51. Both pairs should have + the same behavior. + ANSYS will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Shell edge - solid surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Default influence distance FTOLN will be used. + Average contact surface length 3.2471 + Average contact pair depth 4.0000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 1.33226763E-14 was detected between contact + element 25924 and target element 26035. + **************************************** + + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Symmetric Deformable- deformable contact pair identified by real + constant set 51 and contact element type 50 has been set up. The + companion pair has real constant set ID 50. Both pairs should have + the same behavior. + ANSYS will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Contact related postprocess items (ETABLE, pressure ...) are not + available. + Contact detection at: nodal point (normal to target surface) + MPC will be built internally to handle bonded contact. + Average contact surface length 2.6964 + Average contact pair depth 2.5000 + User defined pinball region PINB 0.86250 + Default target edge extension factor TOLS 10.000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 2.891 TIME= 06:52:53 + Max. Initial penetration 7.105427358E-15 was detected between contact + element 25939 and target element 25890. + **************************************** + + + + *********** PRECISE MASS SUMMARY *********** + + TOTAL RIGID BODY MASS MATRIX ABOUT ORIGIN + Translational mass | Coupled translational/rotational mass + 0.25166E-03 0.0000 0.0000 | 0.0000 0.34581E-01 0.50068E-02 + 0.0000 0.25166E-03 0.0000 | -0.34581E-01 0.0000 0.25711E-01 + 0.0000 0.0000 0.25166E-03 | -0.50068E-02 -0.25711E-01 0.0000 + ------------------------------------------ | ------------------------------------------ + | Rotational mass (inertia) + | 6.4515 0.51185 -3.5215 + | 0.51185 9.6801 0.68875 + | -3.5215 0.68875 3.5678 + + TOTAL MASS = 0.25166E-03 + The mass principal axes coincide with the global Cartesian axes + + CENTER OF MASS (X,Y,Z)= 102.17 -19.895 137.41 + + TOTAL INERTIA ABOUT CENTER OF MASS + 1.5999 0.32438E-03 0.11573E-01 + 0.32438E-03 2.3014 0.74412E-03 + 0.11573E-01 0.74412E-03 0.84133 + + PRINCIPAL INERTIAS = 1.6001 2.3014 0.84115 + ORIENTATION VECTORS OF THE INERTIA PRINCIPAL AXES IN GLOBAL CARTESIAN + ( 1.000,-0.000, 0.015) ( 0.000, 1.000, 0.001) (-0.015,-0.001, 1.000) + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.326079E-05 + 2 0.326079E-05 + 3 0.326079E-05 + 4 0.326079E-05 + 5 0.326079E-05 + 6 0.159600E-03 + 7 0.429027E-05 + 8 0.777647E-05 + 9 0.197978E-05 + 10 0.735761E-05 + 11 0.186775E-05 + 12 0.704400E-05 + 13 0.696150E-05 + 14 0.368481E-05 + 15 0.459882E-05 + 16 0.330798E-05 + 17 0.197978E-05 + 18 0.111823E-04 + 19 0.391721E-05 + 20 0.411780E-05 + 21 0.568872E-05 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 11792803.9 at element 17387. + Minimum = 528.07874 at element 3660. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 60 BEAM188 0.000 0.000000 + 2 60 BEAM188 0.000 0.000000 + 3 60 BEAM188 0.000 0.000000 + 4 60 BEAM188 0.000 0.000000 + 5 60 BEAM188 0.000 0.000000 + 6 13038 SHELL181 1.125 0.000086 + 7 252 SOLID186 0.062 0.000248 + 8 432 SOLID186 0.078 0.000181 + 9 168 SOLID186 0.031 0.000186 + 10 396 SOLID186 0.000 0.000000 + 11 108 SOLID186 0.000 0.000000 + 12 384 SOLID186 0.062 0.000163 + 13 384 SOLID186 0.016 0.000041 + 14 210 SOLID186 0.016 0.000074 + 15 270 SOLID186 0.078 0.000289 + 16 408 SOLID186 0.047 0.000115 + 17 150 SOLID186 0.000 0.000000 + 18 588 SOLID186 0.094 0.000159 + 19 240 SOLID186 0.078 0.000326 + 20 216 SOLID186 0.062 0.000289 + 21 324 SOLID186 0.016 0.000048 + 22 228 CONTA174 0.016 0.000069 + 23 228 TARGE170 0.000 0.000000 + 24 435 CONTA174 0.031 0.000072 + 25 435 TARGE170 0.000 0.000000 + 26 156 CONTA174 0.000 0.000000 + 27 156 TARGE170 0.000 0.000000 + 28 354 CONTA174 0.000 0.000000 + 29 354 TARGE170 0.000 0.000000 + 30 108 CONTA174 0.000 0.000000 + 31 108 TARGE170 0.000 0.000000 + 32 348 CONTA174 0.016 0.000045 + 33 348 TARGE170 0.000 0.000000 + 34 342 CONTA174 0.000 0.000000 + 35 342 TARGE170 0.000 0.000000 + 36 204 CONTA174 0.016 0.000077 + 37 204 TARGE170 0.000 0.000000 + 38 234 CONTA174 0.000 0.000000 + 39 234 TARGE170 0.000 0.000000 + 40 300 CONTA174 0.047 0.000156 + 41 300 TARGE170 0.000 0.000000 + 42 159 CONTA174 0.047 0.000295 + 43 159 TARGE170 0.000 0.000000 + 44 519 CONTA174 0.016 0.000030 + 45 519 TARGE170 0.000 0.000000 + 46 210 CONTA174 0.000 0.000000 + 47 210 TARGE170 0.000 0.000000 + 48 204 CONTA174 0.000 0.000000 + 49 204 TARGE170 0.000 0.000000 + 50 288 CONTA174 0.000 0.000000 + 51 288 TARGE170 0.000 0.000000 + Time at end of element matrix formulation CP = 4.40625. + + BLOCK LANCZOS CALCULATION OF UP TO 10 EIGENVECTORS. + NUMBER OF EQUATIONS = 159678 + MAXIMUM WAVEFRONT = 708 + MAXIMUM MODES STORED = 10 + MINIMUM EIGENVALUE = 0.00000E+00 + MAXIMUM EIGENVALUE = 0.10000E+31 + + + *** NOTE *** CP = 7.078 TIME= 06:52:58 + The initial memory allocation (-m) has been exceeded. + Supplemental memory allocations are being used. + + Local memory allocated for solver = 470.292 MB + Local memory required for in-core solution = 448.291 MB + Local memory required for out-of-core solution = 208.135 MB + + Total memory allocated for solver = 851.493 MB + Total memory required for in-core solution = 811.685 MB + Total memory required for out-of-core solution = 378.173 MB + + *** NOTE *** CP = 8.641 TIME= 06:53:00 + The Distributed Sparse Matrix Solver used by the Block Lanczos + eigensolver is currently running in the in-core memory mode. This + memory mode uses the most amount of memory in order to avoid using the + hard drive as much as possible, which most often results in the + fastest solution time. This mode is recommended if enough physical + memory is present to accommodate all of the solver data. + + *** ANSYS - ENGINEERING ANALYSIS SYSTEM RELEASE 2021 R2 21.2 *** + DISTRIBUTED Ansys Mechanical Enterprise + + 00000000 VERSION=WINDOWS x64 06:53:02 JUL 25, 2022 CP= 10.781 + + + + + + *** FREQUENCIES FROM BLOCK LANCZOS ITERATION *** + + MODE FREQUENCY (HERTZ) + + + 1 21.68428280230 + 2 21.69024198077 + 3 21.69131650666 + 4 33.82973502589 + 5 33.83798485758 + 6 33.83938717337 + 7 37.06064330146 + 8 37.07091158772 + 9 37.07187102168 + 10 43.83753554036 + + *** ANSYS - ENGINEERING ANALYSIS SYSTEM RELEASE 2021 R2 21.2 *** + DISTRIBUTED Ansys Mechanical Enterprise + + 00000000 VERSION=WINDOWS x64 06:53:03 JUL 25, 2022 CP= 10.875 + + + + + + + + ***** PARTICIPATION FACTOR CALCULATION ***** X DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 0.13337E-03 1.000000 0.177881E-07 0.312579 0.706832E-04 + 2 21.6902 0.46104E-01 0.58730E-04 0.440351 0.344927E-08 0.373191 0.137061E-04 + 3 21.6913 0.46101E-01 0.87053E-04 0.652706 0.757817E-08 0.506358 0.301129E-04 + 4 33.8297 0.29560E-01 -0.85976E-04 0.644632 0.739184E-08 0.636250 0.293725E-04 + 5 33.8380 0.29553E-01 -0.38997E-04 0.292392 0.152076E-08 0.662973 0.604293E-05 + 6 33.8394 0.29551E-01 -0.57555E-04 0.431539 0.331259E-08 0.721184 0.131630E-04 + 7 37.0606 0.26983E-01 0.25886E-04 0.194086 0.670065E-09 0.732958 0.266259E-05 + 8 37.0709 0.26975E-01 0.14838E-04 0.111256 0.220178E-09 0.736827 0.874909E-06 + 9 37.0719 0.26975E-01 0.18637E-04 0.139738 0.347343E-09 0.742931 0.138021E-05 + 10 43.8375 0.22812E-01 -0.12095E-03 0.906870 0.146291E-07 1.00000 0.581308E-04 + ----------------------------------------------------------------------------------------------------------------- + sum 0.569074E-07 0.226129E-03 + ----------------------------------------------------------------------------------------------------------------- + + + + ***** PARTICIPATION FACTOR CALCULATION ***** Y DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 0.73666E-02 1.000000 0.542664E-04 0.343547 0.215635 + 2 21.6902 0.46104E-01 0.33431E-02 0.453826 0.111766E-04 0.414303 0.444117E-01 + 3 21.6913 0.46101E-01 0.50476E-02 0.685209 0.254787E-04 0.575602 0.101243 + 4 33.8297 0.29560E-01 0.18755E-02 0.254589 0.351732E-05 0.597869 0.139765E-01 + 5 33.8380 0.29553E-01 0.89959E-03 0.122118 0.809258E-06 0.602992 0.321569E-02 + 6 33.8394 0.29551E-01 0.13665E-02 0.185497 0.186726E-05 0.614814 0.741981E-02 + 7 37.0606 0.26983E-01 0.31196E-02 0.423480 0.973187E-05 0.676423 0.386709E-01 + 8 37.0709 0.26975E-01 0.19657E-02 0.266836 0.386383E-05 0.700884 0.153535E-01 + 9 37.0719 0.26975E-01 0.28496E-02 0.386823 0.811999E-05 0.752290 0.322659E-01 + 10 43.8375 0.22812E-01 0.62552E-02 0.849139 0.391281E-04 1.00000 0.155481 + ----------------------------------------------------------------------------------------------------------------- + sum 0.157959E-03 0.627673 + ----------------------------------------------------------------------------------------------------------------- + + + + ***** PARTICIPATION FACTOR CALCULATION ***** Z DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 -0.19752E-05 0.023957 0.390136E-11 0.276278E-03 0.155026E-07 + 2 21.6902 0.46104E-01 -0.13045E-05 0.015822 0.170176E-11 0.396790E-03 0.676218E-08 + 3 21.6913 0.46101E-01 -0.25987E-05 0.031519 0.675314E-11 0.875019E-03 0.268345E-07 + 4 33.8297 0.29560E-01 -0.60916E-04 0.738845 0.371071E-08 0.263652 0.147450E-04 + 5 33.8380 0.29553E-01 -0.30181E-04 0.366070 0.910916E-09 0.328160 0.361965E-05 + 6 33.8394 0.29551E-01 -0.49330E-04 0.598325 0.243346E-08 0.500487 0.966969E-05 + 7 37.0606 0.26983E-01 0.12143E-04 0.147286 0.147459E-09 0.510930 0.585948E-06 + 8 37.0709 0.26975E-01 0.67274E-05 0.081597 0.452579E-10 0.514135 0.179838E-06 + 9 37.0719 0.26975E-01 0.79651E-05 0.096609 0.634435E-10 0.518628 0.252101E-06 + 10 43.8375 0.22812E-01 0.82447E-04 1.000000 0.679752E-08 1.00000 0.270109E-04 + ----------------------------------------------------------------------------------------------------------------- + sum 0.141211E-07 0.561122E-04 + ----------------------------------------------------------------------------------------------------------------- + + + + ***** PARTICIPATION FACTOR CALCULATION *****ROTX DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 -1.0941 1.000000 1.19712 0.282791 0.185559 + 2 21.6902 0.46104E-01 -0.49643 0.453718 0.246440 0.341006 0.381991E-01 + 3 21.6913 0.46101E-01 -0.74956 0.685070 0.561836 0.473726 0.870866E-01 + 4 33.8297 0.29560E-01 -0.91221 0.833733 0.832132 0.670296 0.128984 + 5 33.8380 0.29553E-01 -0.43610 0.398583 0.190185 0.715223 0.294794E-01 + 6 33.8394 0.29551E-01 -0.66259 0.605584 0.439023 0.818931 0.680502E-01 + 7 37.0606 0.26983E-01 -0.43459 0.397204 0.188871 0.863547 0.292757E-01 + 8 37.0709 0.26975E-01 -0.27377 0.250213 0.749480E-01 0.881252 0.116172E-01 + 9 37.0719 0.26975E-01 -0.39680 0.362658 0.157447 0.918445 0.244048E-01 + 10 43.8375 0.22812E-01 -0.58757 0.537023 0.345243 1.00000 0.535139E-01 + ----------------------------------------------------------------------------------------------------------------- + sum 4.23325 0.656169 + ----------------------------------------------------------------------------------------------------------------- + + + + ***** PARTICIPATION FACTOR CALCULATION *****ROTY DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 0.18704E-01 0.627437 0.349826E-03 0.233000 0.361386E-04 + 2 21.6902 0.46104E-01 0.82795E-02 0.277746 0.685502E-04 0.278658 0.708153E-05 + 3 21.6913 0.46101E-01 0.12340E-01 0.413962 0.152277E-03 0.380081 0.157308E-04 + 4 33.8297 0.29560E-01 -0.52401E-02 0.175786 0.274589E-04 0.398370 0.283663E-05 + 5 33.8380 0.29553E-01 -0.21221E-02 0.071189 0.450333E-05 0.401370 0.465213E-06 + 6 33.8394 0.29551E-01 -0.26739E-02 0.089698 0.714953E-05 0.406132 0.738577E-06 + 7 37.0606 0.26983E-01 0.12926E-02 0.043363 0.167090E-05 0.407244 0.172611E-06 + 8 37.0709 0.26975E-01 0.73521E-03 0.024663 0.540527E-06 0.407604 0.558388E-07 + 9 37.0719 0.26975E-01 0.89887E-03 0.030154 0.807971E-06 0.408143 0.834668E-07 + 10 43.8375 0.22812E-01 -0.29810E-01 1.000000 0.888614E-03 1.00000 0.917976E-04 + ----------------------------------------------------------------------------------------------------------------- + sum 0.150140E-02 0.155101E-03 + ----------------------------------------------------------------------------------------------------------------- + + + + ***** PARTICIPATION FACTOR CALCULATION *****ROTZ DIRECTION + CUMULATIVE RATIO EFF.MASS + MODE FREQUENCY PERIOD PARTIC.FACTOR RATIO EFFECTIVE MASS MASS FRACTION TO TOTAL MASS + 1 21.6843 0.46116E-01 0.38768 0.418447 0.150298 0.941155E-01 0.421268E-01 + 2 21.6902 0.46104E-01 0.17775 0.191858 0.315959E-01 0.113901 0.885597E-02 + 3 21.6913 0.46101E-01 0.26826 0.289550 0.719650E-01 0.158965 0.201709E-01 + 4 33.8297 0.29560E-01 0.36987 0.399221 0.136804 0.244630 0.383445E-01 + 5 33.8380 0.29553E-01 0.17635 0.190342 0.310986E-01 0.264104 0.871658E-02 + 6 33.8394 0.29551E-01 0.26789 0.289152 0.717670E-01 0.309044 0.201154E-01 + 7 37.0606 0.26983E-01 0.33130 0.357593 0.109762 0.377775 0.307648E-01 + 8 37.0709 0.26975E-01 0.20886 0.225431 0.436217E-01 0.405091 0.122266E-01 + 9 37.0719 0.26975E-01 0.30278 0.326807 0.916758E-01 0.462498 0.256957E-01 + 10 43.8375 0.22812E-01 0.92648 1.000000 0.858367 1.00000 0.240590 + ----------------------------------------------------------------------------------------------------------------- + sum 1.59695 0.447608 + ----------------------------------------------------------------------------------------------------------------- + + + + + + *** NOTE *** CP = 10.875 TIME= 06:53:03 + The modes requested are mass normalized (Nrmkey on MODOPT). However, + the modal masses and kinetic energies below are calculated with unit + normalized modes. + + ***** MODAL MASSES, KINETIC ENERGIES, AND TRANSLATIONAL EFFECTIVE MASSES SUMMARY ***** + + EFFECTIVE MASS + MODE FREQUENCY MODAL MASS KENE | X-DIR RATIO% Y-DIR RATIO% Z-DIR RATIO% + 1 21.68 0.9470E-05 0.8789E-01 | 0.1779E-07 0.01 0.5427E-04 21.56 0.3901E-11 0.00 + 2 21.69 0.9779E-05 0.9081E-01 | 0.3449E-08 0.00 0.1118E-04 4.44 0.1702E-11 0.00 + 3 21.69 0.7728E-05 0.7178E-01 | 0.7578E-08 0.00 0.2548E-04 10.12 0.6753E-11 0.00 + 4 33.83 0.2795E-04 0.6314 | 0.7392E-08 0.00 0.3517E-05 1.40 0.3711E-08 0.00 + 5 33.84 0.2850E-04 0.6441 | 0.1521E-08 0.00 0.8093E-06 0.32 0.9109E-09 0.00 + 6 33.84 0.2333E-04 0.5274 | 0.3313E-08 0.00 0.1867E-05 0.74 0.2433E-08 0.00 + 7 37.06 0.1111E-04 0.3012 | 0.6701E-09 0.00 0.9732E-05 3.87 0.1475E-09 0.00 + 8 37.07 0.1103E-04 0.2991 | 0.2202E-09 0.00 0.3864E-05 1.54 0.4526E-10 0.00 + 9 37.07 0.1007E-04 0.2732 | 0.3473E-09 0.00 0.8120E-05 3.23 0.6344E-10 0.00 + 10 43.84 0.5791E-05 0.2197 | 0.1463E-07 0.01 0.3913E-04 15.55 0.6798E-08 0.00 + -------------------------------------------------------------------------------------------------------------- + sum | 0.5691E-07 0.02 0.1580E-03 62.77 0.1412E-07 0.01 + -------------------------------------------------------------------------------------------------------------- + + + *** ANSYS BINARY FILE STATISTICS + BUFFER SIZE USED= 16384 + 38.000 MB WRITTEN ON ELEMENT SAVED DATA FILE: file0.esav + 83.375 MB WRITTEN ON ASSEMBLED MATRIX FILE: file0.full + 12.438 MB WRITTEN ON MODAL MATRIX FILE: file0.mode + 14.375 MB WRITTEN ON RESULTS FILE: file0.rst + + + + +.. GENERATED FROM PYTHON SOURCE LINES 143-149 + +Post-processing the modal results +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This sections illustrates different methods to post-process the results of the +modal analysis : PyMAPDL method, PyMAPDL result reader, PyDPF-Post +and PyDPF-Core. All methods lead to the same result and are just given as an +example of how each module can be used. + +.. GENERATED FROM PYTHON SOURCE LINES 149-156 + +.. code-block:: default + + + # using MAPDL methods + mapdl.post1() + mapdl.set(1, 1) + mapdl.plnsol("u", "sum") + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 157-163 + +Using PyMAPDL result reader +*************************** + +*Not recommended* - PyMAPDL reader library is in process to being deprecated. +It is recommended to use `DPF Post `_. + + +.. GENERATED FROM PYTHON SOURCE LINES 163-167 + +.. code-block:: default + + + mapdl_result = mapdl.result + mapdl_result.plot_nodal_displacement(0) + + +.. figure:: images/ex_20-tecPCB_003.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + + + +.. GENERATED FROM PYTHON SOURCE LINES 168-171 + +Using DPF-Post +************** + + +.. GENERATED FROM PYTHON SOURCE LINES 171-181 + +.. code-block:: default + + + from ansys.dpf import post + + solution_path = mapdl.result_file + solution = post.load_solution(solution_path) + print(solution) + displacement = solution.displacement(time_scoping=1) + total_deformation = displacement.norm + total_deformation.plot_contour(show_edges=True, background="w") + + + + + +.. figure:: images/ex_20-tecPCB_004.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + +.. rst-class:: sphx-glr-script-out + + Out: + + .. code-block:: none + + Modal Analysis Solution object. + + + Data Sources + ------------------------------ + DPF DataSources: + Result files: + result key: rst and path: C:/Users/gayuso/AppData/Local/Temp/ansys_pasiuwhdkb\file.rst + Secondary files: + + + DPF Model + ------------------------------ + Modal analysis + Unit system: NMM: mm, ton, N, s, mA, degC + Physics Type: Mecanic + Available results: + - displacement: Nodal Displacement + ------------------------------ + DPF Meshed Region: + 44097 nodes + 26046 elements + Unit: mm + With solid (3D) elements, shell (2D) elements, shell (3D) elements, beam (1D) elements + ------------------------------ + DPF Time/Freq Support: + Number of sets: 10 + Cumulative Frequency (Hz) LoadStep Substep + 1 21.684283 1 1 + 2 21.690242 1 2 + 3 21.691317 1 3 + 4 33.829735 1 4 + 5 33.837985 1 5 + 6 33.839387 1 6 + 7 37.060643 1 7 + 8 37.070912 1 8 + 9 37.071871 1 9 + 10 43.837536 1 10 + + This may contain complex results. + + + + +.. GENERATED FROM PYTHON SOURCE LINES 182-185 + +Using DPF-Core +************** + + +.. GENERATED FROM PYTHON SOURCE LINES 185-197 + +.. code-block:: default + + + from ansys.dpf import core + + model = core.Model(solution_path) + results = model.results + print(results) + displacements = results.displacement() + total_def = core.operators.math.norm_fc(displacements) + total_def_container = total_def.outputs.fields_container() + mesh = model.metadata.meshed_region + mesh.plot(total_def_container.get_field_by_time_id(1)) + + + +.. figure:: images/ex_20-tecPCB_005.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + +.. rst-class:: sphx-glr-script-out + + Out: + + .. code-block:: none + + Modal analysis + Unit system: NMM: mm, ton, N, s, mA, degC + Physics Type: Mecanic + Available results: + - displacement: Nodal Displacement + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 198-201 + +Run PSD analysis +---------------- +The response spectrum analysis is defined, solved and post-processed. + +.. GENERATED FROM PYTHON SOURCE LINES 201-241 + +.. code-block:: default + + + # define PSD analysis with input spectrum + mapdl.slashsolu() + mapdl.antype("spectr") + + # power spectral density + mapdl.spopt("psd") + + # use input table 1 with acceleration spectrum in terms of acceleration due to gravity + mapdl.psdunit(1, "accg", 9.81 * 1000) + + # define the frequency points in the input table 1 + mapdl.psdfrq(1, "", 1, 40, 50, 70.71678, 100, 700, 900) + + # define the PSD values in the input table 1 + mapdl.psdval(1, 0.01, 0.01, 0.1, 1, 10, 10, 1) + + # set the damping ratio as 5% + mapdl.dmprat(0.05) + + # apply base excitation on the set of nodes N_BASE_EXCITE in the y-direction from table 1 + mapdl.d("N_BASE_EXCITE", "uy", 1) + + # calculate the participation factor for PSD with base excitation from input table 1 + mapdl.pfact(1, "base") + + # write the displacent solution relative to the base excitation to the results file from the PSD analysis + mapdl.psdres("disp", "rel") + + # write the absolute velocity solution to the results file from the PSD analysis + mapdl.psdres("velo", "abs") + + # write the absolute acceleration solution to the results file from the PSD analysis + mapdl.psdres("acel", "abs") + + # combine only those modes whose significance level exceeds 0.0001 + mapdl.psdcom() + output = mapdl.solve() + print(output) + + + + + +.. rst-class:: sphx-glr-script-out + + Out: + + .. code-block:: none + + *** NOTE *** CP = 16.328 TIME= 06:53:12 + The automatic domain decomposition logic has selected the MESH domain + decomposition method with 2 processes per solution. + + ***** ANSYS SOLVE COMMAND ***** + + Time at start of random vibration closed-form solution CP= 16.328125. + + + FREQUENCIES USED FOR RANDOM VIBRATION SOLUTION + + MODE FREQUENCY + + 1 21.6843 + 2 21.6902 + 3 21.6913 + 4 33.8297 + 5 33.8380 + 6 33.8394 + 7 37.0606 + 8 37.0709 + 9 37.0719 + 10 43.8375 + + PERFORM INTEGRATION FOR DISPLACEMENT-TYPE QUANTITIES + + PERFORM INTEGRATION FOR VELOCITY-TYPE QUANTITIES + + PERFORM INTEGRATION FOR ACCELERATION-TYPE QUANTITIES + + Modal covariance matrix computed CP= 16.328125. + + Quasi-static modal covariance matrix computed CP= 16.328125. + + Covariant-modal covariance matrix computed CP= 16.328125. + + Psd file file0.psd created. CP= 16.328125. + + Time at start of random vibration mode combinations CP= 16.328125. + + BASE EXCITATION PROBLEM + + + ***** SUMMARY OF TERMS INCLUDED IN MODE COMBINATIONS ***** + (MODAL COVARIANCE MATRIX TERMS ONLY) + + *** DISPLACEMENT-TYPE QUANTITY *** + + MAXIMUM TERM = 0.73456E-04 + + MODE MODE COVARIANCE COVARIANCE + I J TERM RATIO + + 1 1 0.73456E-04 1.0000 + 2 1 0.33327E-04 0.45370 + 2 2 0.15120E-04 0.20584 + 3 1 0.50316E-04 0.68498 + 3 2 0.22828E-04 0.31078 + 3 3 0.34466E-04 0.46920 + 4 1 0.64485E-05 0.87787E-01 + 4 2 0.29267E-05 0.39843E-01 + 4 3 0.44189E-05 0.60158E-01 + 4 4 0.26183E-05 0.35644E-01 + 5 1 0.30932E-05 0.42109E-01 + 5 2 0.14039E-05 0.19112E-01 + 5 3 0.21196E-05 0.28856E-01 + 5 4 0.12558E-05 0.17096E-01 + 5 5 0.60234E-06 0.82001E-02 + 6 1 0.46985E-05 0.63964E-01 + 6 2 0.21325E-05 0.29031E-01 + 6 3 0.32198E-05 0.43833E-01 + 6 4 0.19076E-05 0.25969E-01 + 6 5 0.91495E-06 0.12456E-01 + 6 6 0.13898E-05 0.18920E-01 + 7 1 0.10933E-04 0.14884 + 7 2 0.49619E-05 0.67549E-01 + 7 3 0.74918E-05 0.10199 + 7 4 0.37206E-05 0.50651E-01 + 7 5 0.17855E-05 0.24307E-01 + 7 6 0.27124E-05 0.36925E-01 + 7 7 0.71392E-05 0.97190E-01 + 8 1 0.68895E-05 0.93791E-01 + 8 2 0.31268E-05 0.42567E-01 + 8 3 0.47210E-05 0.64270E-01 + 8 4 0.23433E-05 0.31900E-01 + 8 5 0.11245E-05 0.15309E-01 + 8 6 0.17083E-05 0.23256E-01 + 8 7 0.44986E-05 0.61241E-01 + 8 8 0.28346E-05 0.38590E-01 + 9 1 0.99875E-05 0.13597 + 9 2 0.45329E-05 0.61708E-01 + 9 3 0.68440E-05 0.93171E-01 + 9 4 0.33968E-05 0.46243E-01 + 9 5 0.16301E-05 0.22192E-01 + 9 6 0.24763E-05 0.33712E-01 + 9 7 0.65214E-05 0.88780E-01 + 9 8 0.41093E-05 0.55942E-01 + 9 9 0.59571E-05 0.81098E-01 + 10 1 0.23871E-04 0.32496 + 10 2 0.10834E-04 0.14748 + 10 3 0.16357E-04 0.22268 + 10 4 0.70587E-05 0.96095E-01 + 10 5 0.33864E-05 0.46101E-01 + 10 6 0.51441E-05 0.70030E-01 + 10 7 0.12750E-04 0.17358 + 10 8 0.80366E-05 0.10941 + 10 9 0.11651E-04 0.15861 + 10 10 0.36571E-04 0.49786 + + *** VELOCITY-TYPE QUANTITY *** + + MAXIMUM TERM = 15.547 + + MODE MODE COVARIANCE COVARIANCE + I J TERM RATIO + + 1 1 15.547 1.0000 + 2 1 7.0557 0.45383 + 2 2 3.2021 0.20596 + 3 1 10.653 0.68521 + 3 2 4.8347 0.31097 + 3 3 7.2996 0.46952 + 4 1 3.8958 0.25058 + 4 2 1.7681 0.11372 + 4 3 2.6695 0.17171 + 4 4 1.0786 0.69377E-01 + 5 1 1.8688 0.12020 + 5 2 0.84811 0.54551E-01 + 5 3 1.2805 0.82365E-01 + 5 4 0.51739 0.33279E-01 + 5 5 0.24818 0.15963E-01 + 6 1 2.8387 0.18259 + 6 2 1.2883 0.82864E-01 + 6 3 1.9451 0.12511 + 6 4 0.78592 0.50551E-01 + 6 5 0.37699 0.24249E-01 + 6 6 0.57266 0.36834E-01 + 7 1 6.5885 0.42378 + 7 2 2.9901 0.19233 + 7 3 4.5146 0.29039 + 7 4 1.7955 0.11549 + 7 5 0.86132 0.55401E-01 + 7 6 1.3084 0.84155E-01 + 7 7 3.0886 0.19866 + 8 1 4.1517 0.26704 + 8 2 1.8842 0.12119 + 8 3 2.8448 0.18298 + 8 4 1.1314 0.72770E-01 + 8 5 0.54272 0.34908E-01 + 8 6 0.82441 0.53027E-01 + 8 7 1.9463 0.12519 + 8 8 1.2264 0.78885E-01 + 9 1 6.0186 0.38712 + 9 2 2.7315 0.17569 + 9 3 4.1241 0.26527 + 9 4 1.6401 0.10549 + 9 5 0.78677 0.50606E-01 + 9 6 1.1951 0.76872E-01 + 9 7 2.8215 0.18148 + 9 8 1.7779 0.11436 + 9 9 2.5774 0.16578 + 10 1 13.822 0.88902 + 10 2 6.2727 0.40347 + 10 3 9.4709 0.60918 + 10 4 3.7285 0.23982 + 10 5 1.7885 0.11504 + 10 6 2.7168 0.17475 + 10 7 6.3657 0.40945 + 10 8 4.0114 0.25802 + 10 9 5.8153 0.37404 + 10 10 14.121 0.90826 + + *** ACCELERATION-TYPE QUANTITY *** + + MAXIMUM TERM = 0.36471E+08 + + MODE MODE COVARIANCE COVARIANCE + I J TERM RATIO + + 1 1 0.36471E+08 1.0000 + 2 1 0.16552E+08 0.45383 + 2 2 0.75116E+07 0.20596 + 3 1 0.24990E+08 0.68521 + 3 2 0.11341E+08 0.31097 + 3 3 0.17124E+08 0.46952 + 4 1 0.93868E+07 0.25738 + 4 2 0.42600E+07 0.11680 + 4 3 0.64320E+07 0.17636 + 4 4 0.24200E+07 0.66353E-01 + 5 1 0.45026E+07 0.12346 + 5 2 0.20434E+07 0.56028E-01 + 5 3 0.30852E+07 0.84593E-01 + 5 4 0.11608E+07 0.31827E-01 + 5 5 0.55679E+06 0.15267E-01 + 6 1 0.68394E+07 0.18753 + 6 2 0.31039E+07 0.85106E-01 + 6 3 0.46865E+07 0.12850 + 6 4 0.17632E+07 0.48346E-01 + 6 5 0.84577E+06 0.23190E-01 + 6 6 0.12847E+07 0.35226E-01 + 7 1 0.15678E+08 0.42987 + 7 2 0.71150E+07 0.19509 + 7 3 0.10743E+08 0.29455 + 7 4 0.40413E+07 0.11081 + 7 5 0.19385E+07 0.53152E-01 + 7 6 0.29446E+07 0.80738E-01 + 7 7 0.67544E+07 0.18520 + 8 1 0.98787E+07 0.27086 + 8 2 0.44832E+07 0.12293 + 8 3 0.67690E+07 0.18560 + 8 4 0.25465E+07 0.69822E-01 + 8 5 0.12215E+07 0.33491E-01 + 8 6 0.18554E+07 0.50874E-01 + 8 7 0.42560E+07 0.11670 + 8 8 0.26818E+07 0.73531E-01 + 9 1 0.14321E+08 0.39266 + 9 2 0.64992E+07 0.17820 + 9 3 0.98129E+07 0.26906 + 9 4 0.36916E+07 0.10122 + 9 5 0.17707E+07 0.48552E-01 + 9 6 0.26898E+07 0.73750E-01 + 9 7 0.61698E+07 0.16917 + 9 8 0.38877E+07 0.10660 + 9 9 0.56359E+07 0.15453 + 10 1 0.31765E+08 0.87095 + 10 2 0.14416E+08 0.39526 + 10 3 0.21766E+08 0.59679 + 10 4 0.81902E+07 0.22457 + 10 5 0.39286E+07 0.10772 + 10 6 0.59676E+07 0.16362 + 10 7 0.13688E+08 0.37532 + 10 8 0.86252E+07 0.23649 + 10 9 0.12504E+08 0.34284 + 10 10 0.27823E+08 0.76287 + + + ***** SUMMARY OF OUTPUT QUANTITIES COMPUTED ***** + AND WRITTEN ON RESULTS FILE + + DISPLACEMENT-TYPE QUANTITIES COMPUTED + AND WRITTEN ON RESULTS FILE AS LOAD STEP 3 + VALUES ARE RELATIVE TO BASE + + THESE ARE STATISTICAL QUANTITIES WHICH + CANNOT BE COMBINED OR TRANSFORMED IN ANY + VECTORIAL SENSE + + + VELOCITY-TYPE QUANTITIES COMPUTED + AND WRITTEN ON RESULTS FILE AS LOAD STEP 4 + VALUES ARE ABSOLUTE + + THESE ARE STATISTICAL QUANTITIES WHICH + CANNOT BE COMBINED OR TRANSFORMED IN ANY + VECTORIAL SENSE + + + ACCELERATION-TYPE QUANTITIES COMPUTED + AND WRITTEN ON RESULTS FILE AS LOAD STEP 5 + VALUES ARE ABSOLUTE + + THESE ARE STATISTICAL QUANTITIES WHICH + CANNOT BE COMBINED OR TRANSFORMED IN ANY + VECTORIAL SENSE + + + + +.. GENERATED FROM PYTHON SOURCE LINES 242-254 + +Post-process PSD analysis +~~~~~~~~~~~~~~~~~~~~~~~~~ +The response spectrum analysis is post-processed. First, the standard +MAPDL POST1 postprocessor is used. Then, the MAPDL time-history +POST26 postprocessor is used to generate the response power spectral +density. + +.. note:: + The graph generated through POST26 is exported as a picture in the working + directory. Finally, the results from POST26 are saved to Python variables + to be plotted in the Python environment with the use of Matplotlib + library. + +.. GENERATED FROM PYTHON SOURCE LINES 257-259 + +Post-process PSD analysis in POST1 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 259-266 + +.. code-block:: default + + + mapdl.post1() + mapdl.set(1, 1) + mapdl.plnsol("u", "sum") + mapdl.set("last") + mapdl.plnsol("u", "sum") + + +.. figure:: images/ex_20-tecPCB_006.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + + + +.. GENERATED FROM PYTHON SOURCE LINES 267-269 + +Post-process PSD analysis in POST26 (time-history post-processing) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 269-301 + +.. code-block:: default + + + mapdl.post26() + + # allow storage for 200 variables + mapdl.numvar(200) + mapdl.cmsel("s", "MY_MONITOR") + monitored_node = mapdl.queries.ndnext(0) + mapdl.store("psd") + + # store the psd analysis u_y data for the node MYMONITOR as the reference no 2 + mapdl.nsol(2, monitored_node, "u", "y") + + # compute the response power spectral density for displacement associated with variable 2 + mapdl.rpsd(3, 2) + mapdl.show("png") + + # plot the variable 3 + mapdl.plvar(3) + + # print the variable 3 + mapdl.prvar(3) + + # x-axis is set for Log X scale + mapdl.gropt("logx", 1) + + # y-axis is set for Log X scale + mapdl.gropt("logy", 1) + + # plot the variable 3 + mapdl.plvar(3) + mapdl.show("close") + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 302-304 + +Post-process PSD analysis using Matplotlib +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 304-322 + +.. code-block:: default + + + # store MAPDL results to python variables + mapdl.dim("frequencies", "array", 4000, 1) + mapdl.dim("response", "array", 4000, 1) + mapdl.vget("frequencies(1)", 1) + mapdl.vget("response(1)", 3) + frequencies = mapdl.parameters["frequencies"] + response = mapdl.parameters["response"] + + # use Matplotlib to create graph + fig = plt.figure() + ax = fig.add_subplot(111) + plt.xscale("log") + plt.yscale("log") + ax.plot(frequencies, response) + ax.set_xlabel("Frequencies") + ax.set_ylabel("Response power spectral density") + + +.. figure:: images/ex_20-tecPCB_007.png + :align: center + :alt: 20 example technology showcase dynamic simulation PCB + :figclass: sphx-glr-single-img + +.. GENERATED FROM PYTHON SOURCE LINES 323-324 + +Exit MAPDL + +.. GENERATED FROM PYTHON SOURCE LINES 324-325 + +.. code-block:: default + + mapdl.exit() + + + + + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** ( 0 minutes 44.344 seconds) + + +.. _sphx_glr_download_examples_gallery_examples_06-verif-manual_20-example-technology-showcase-dynamic-simulation-PCB.py: + + +.. only :: html + + .. container:: sphx-glr-footer + :class: sphx-glr-footer-example + + + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: ex_20-tecPCB.py ` + + + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: ex_20-tecPCB.ipynb ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ + diff --git a/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB_codeobj.pickle b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB_codeobj.pickle new file mode 100644 index 000000000..a48c2f20c Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/ex_20-tecPCB_codeobj.pickle differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_001.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_001.png new file mode 100644 index 000000000..4f90ce8cd Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_001.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_002.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_002.png new file mode 100644 index 000000000..ccf041880 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_002.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_003.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_003.png new file mode 100644 index 000000000..b9e2bcdb9 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_003.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_004.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_004.png new file mode 100644 index 000000000..804d1a99b Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_004.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_005.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_005.png new file mode 100644 index 000000000..943f7b3f2 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_005.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_006.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_006.png new file mode 100644 index 000000000..960916cdb Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_006.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_007.png b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_007.png new file mode 100644 index 000000000..8581a5c41 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/ex_20-tecPCB_007.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-20/images/thumb/sphx_glr_20-example-technology-showcase-dynamic-simulation-PCB_thumb.png b/doc/source/technology_showcase_examples/techdemo-20/images/thumb/sphx_glr_20-example-technology-showcase-dynamic-simulation-PCB_thumb.png new file mode 100644 index 000000000..a1591ca5c Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-20/images/thumb/sphx_glr_20-example-technology-showcase-dynamic-simulation-PCB_thumb.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-28/ex_28-tecfricstir.rst b/doc/source/technology_showcase_examples/techdemo-28/ex_28-tecfricstir.rst new file mode 100644 index 000000000..69f3da8f9 --- /dev/null +++ b/doc/source/technology_showcase_examples/techdemo-28/ex_28-tecfricstir.rst @@ -0,0 +1,1736 @@ +.. _tech_demo_28: + +.. role:: red-text + +.. role:: blue-text + +.. role:: green-text + +.. role:: yellow-text + +Friction Stir Welding (FSW) Simulation +*************************************** + +This example problem shows how to simulate the friction stir welding (FSW) +process. Several characteristics of FSW are presented, including +tool-workpiece surface interaction, heat generation due to friction, and +plastic deformation. A nonlinear direct coupled-field analysis is performed, as +thermal and mechanical behaviors are mutually dependent and coupled together +during the FSW process. + +Because it is often difficult to find a full set of engineering data to +simulate the FSW process, the problem emphasizes the simulation rather than the +numerical results. A simplified version of the model created by Zhu and Chao +illustrates the FSW simulation method. + +The following features and capabilities are highlighted: + +* Direct Structural-thermal analysis using coupled-field solid elements +* Plastic heat generation in coupled-field elements +* Frictional heat generation using contact elements +* Surface-projection-based contact method +* Contact elements with bonding capability + +The following topics are available: + +* `28.1. Introduction`_ +* `28.2. Problem Description`_ +* `28.3. Modeling`_ +* `28.4. Material Properties`_ +* `28.5. Boundary Conditions and Loading`_ +* `28.6. Analysis and Solution Controls`_ +* `28.7. Results and Discussion`_ +* `28.8. Recommendations`_ +* `28.9. References`_ +* `28.10. Input Files`_ + +You can also perform this example analysis entirely in the Ansys Mechanical +Application. For more information, see Friction Stir Welding (FSW) Simulation +in the Workbench Technology Showcase: Example Problems. + +28.1. Introduction +------------------ + +Friction stir welding (FSW) is a solid-state welding technique that involves +the joining of metals without filler materials. A cylindrical rotating tool +plunges into a rigidly clamped workpiece and moves along the joint to be +welded. As the tool translates along the joint, heat is generated by friction +between the tool shoulder and the workpiece. Additional heat is generated by +plastic deformation of the workpiece material. The generated heat results in +thermal softening of the workpiece material. The translation of the tool causes +the softened workpiece material to flow from the front to the back of the tool +where it consolidates. As cooling occurs, a solid continuous joint between the +two plates is formed. No melting occurs during the process, and the resulting +temperature remains below the solidus temperature of the metals being joined. +FSW offers many advantages over conventional welding techniques, and has been +successfully applied in the aerospace, automobile, and shipbuilding industries. + +Thermal and mechanical behaviors are mutually dependent during the FSW process. +Because the temperature field affects stress distribution, this example uses a +fully thermomechanically coupled model. The model consists of a coupled-field +solid element with structural and thermal degrees of freedom. The model has two +rectangular steel plates and a cylindrical tool. All necessary mechanical and +thermal `28.5. Boundary Conditions and Loading`_ are applied on the model. The +simulation occurs over three load steps, representing the `28.5.3. Loading`_ of +the process. + +The temperature rises at the contact interface due to frictional contact +between the tool and workpiece. FSW generally occurs when the temperature at +the weld line region reaches 70 to 90 percent of the melting temperature of the +workpiece material. The temperature obtained around the weld line region in +this example falls within the range reported by Zhu and Chao [Zhu2004]_ and +Prasanna and Rao [Prasanna2010]_, while the maximum resulting temperature is +well below the melting temperature of the workpiece. + +The calculated frictional heat generation and plastic heat generation show that +the friction between the tool shoulder and workpiece is responsible for +generating most of the heat. A bonding temperature is specified at the contact +interface of the plates to model the welding behind the tool. When the +temperature at the contact surface exceeds this bonding temperature, the +contact is changed to bonded. + +28.2. Problem Description +------------------------- + +**The Zhu and Chao Thermomechanical Model** + +The model used in this example is a simplified version of the thermomechanical +model developed by Zhu and Chao for FSW with 304L stainless steel [Zhu2004]_. +Zhu and Chao presented nonlinear thermal and thermomechanical simulations using +the finite element analysis code `WELDSIM`. They initially formulated a +heat-transfer problem using a moving heat source, and later used the transient +temperature outputs from the thermal analysis to determine residual stresses in +the welded plates via a 3-D elastoplastic thermomechanical simulation. + +A direct coupled-field analysis is performed on a reduced-scale version of the +Zhu and Chao model [Zhu2004]_. Also, rather than using a moving heat source as +in the reference model, a rotating and moving tool is used for a more realistic +simulation. + +The tool pin is ignored. The heat generated at the pin represents approximately +two percent of the total heat and is therefore negligible. + +The simulation welds two 304L stainless steel plates (workpiece) with a +cylindrical shape tool, as shown in the following figure: + + +.. jupyter-execute:: + :hide-code: + + # jupyterlab boilerplate setup + import numpy as np + import plotly.graph_objects as go + import pandas as pd + import pyvista + import os + + pyvista.set_jupyter_backend('pythreejs') + pyvista.global_theme.background = 'white' + pyvista.global_theme.window_size = [600, 400] + pyvista.global_theme.axes.show = True + pyvista.global_theme.show_scalar_bar = True + mytheme = pyvista.global_theme + + from ansys.mapdl.core import examples + from ansys.mapdl.core.examples import download_vtk_rotor, download_tech_demo_data + + cdbfile = download_tech_demo_data("td-28", "fsw.cdb") + # Generating geometry, just for plotting purposes. + # The elements and nodes are going to be taken from the cdb file. + + from ansys.mapdl.core import launch_mapdl + mapdl = launch_mapdl() + mapdl.clear() + mapdl.prep7() + mapdl.cdread('db', cdbfile) + # ***** Problem parameters ******** + l = 76.2e-03 # Length of each plate,m + w = 31.75e-03 # Width of each plate,m + t = 3.18e-03 # Tickness of each plate,m + r1 = 7.62e-03 # Shoulder radius of tool,m + h = 15.24e-03 # Height of tool, m + l1 = r1 # Starting location of tool on weldline + l2 = l-l1 + tcc1 = 2e06 # Thermal contact conductance b/w plates,W/m^2'C + tcc2 = 10 # Thermal contact conductance b/w tool & + # workpiece,W/m^2'C + fwgt = 0.95 # weight factor for distribution of heat b/w tool + # & workpiece + fplw = 0.8 # Fraction of plastic work converted to heat + uz1 = t/4000 # Depth of penetration,m + nr1 = 3.141593*11 # No. of rotations in second load step + nr2 = 3.141593*45 # No. of rotations in third load step + uy1 = 60.96e-03 # Travelling distance along weld line + tsz = 0.01 # Time step size + # ========================================================== + # * Geometry + # ========================================================== + # * Node for pilot node + mapdl.n(1, 0, 0, h) + # * Workpiece geometry (two rectangular plates) + mapdl.block(0, w, -l1, l2, 0, -t) + mapdl.block(0, -w, -l1, l2, 0, -t) + # * Tool geometry + mapdl.cyl4(0, 0, r1, 0, r1, 90, h) + mapdl.cyl4(0, 0, r1, 90, r1, 180, h) + mapdl.cyl4(0, 0, r1, 180, r1, 270, h) + mapdl.cyl4(0, 0, r1, 270, r1, 360, h) + mapdl.vglue(3, 4, 5, 6); + +.. jupyter-execute:: + :hide-code: + + # Plotting geometry + p = pyvista.Plotter() + p.background_color='white' + for each in mapdl.geometry.areas(): + p.add_mesh(each, show_edges=False, show_scalar_bar=False, style='surface', color='grey') + p.show() + + +**Figure 28.1: 3-D Model of Workpiece and Tool** + +The FSW process generally requires a tool made of a harder material than the +workpiece material being welded. In the past, FSW was used for soft workpiece +materials such as aluminium. With the development of tools made from +super-abrasive materials such as polycrystalline cubic boron nitride (PCBN), +FSW has become possible with high-temperature materials such as stainless +steel. A cylindrical PCBN tool is modeled in this case. + +The workpiece sides parallel to the weld line are constrained in all the +directions to simulate the clamping ends. The bottom side of the workpiece is +constrained in the perpendicular (z) direction to simulate support at the +bottom. Heat losses are considered on all the surfaces of the model. All +`28.5. Boundary Conditions and Loading`_ are symmetric across the weld +centerline. + +The simulation is performed in three load steps, each representing a respective +phase ( `28.5.3. Loading`_) of the FSW process. + +28.3. Modeling +-------------- + +Modeling is a two-part task, as described in these topics: + +* `28.3.1. Workpiece and Tool Modeling`_ +* `28.3.2. Contact Modeling`_ + +28.3.1. Workpiece and Tool Modeling +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Two rectangular shaped plates (similar to those used in the reference model) +are used as the workpiece. Dimensions have been reduced to decrease the +simulation time. + +The plate size is 3 x 1.25 x 0.125 in (76.2 x 31.75 x 3.18 mm). The tool +shoulder diameter is 0.6 in (15.24 mm). + +Plate thickness remains the same as that of the reference model, but the plate +length and width are reduced. The plate width is reduced because the regions +away from the weld line are not significantly affected by the welding process, +and this example focuses primarily on the heat generation and temperature rise +in the region nearest the weld line. + +The height of the tool is equal to the shoulder diameter. Both the workpiece +(steel plates) and the tool are modeled using coupled-field element +``SOLID226`` with the structural-thermal option (``KEYOPT(1)= 11``). + + +.. code:: python + + import numpy as np + import pyvista + + from ansys.mapdl.core import launch_mapdl + mapdl = launch_mapdl() + mapdl.prep7() + + # ***** Problem parameters ******** + l = 76.2e-03 # Length of each plate,m + w = 31.75e-03 # Width of each plate,m + t = 3.18e-03 # Tickness of each plate,m + r1 = 7.62e-03 # Shoulder radius of tool,m + h = 15.24e-03 # Height of tool, m + l1 = r1 # Starting location of tool on weldline + l2 = l-l1 + tcc1 = 2e06 # Thermal contact conductance b/w plates,W/m^2'C + tcc2 = 10 # Thermal contact conductance b/w tool & + # workpiece,W/m^2'C + fwgt = 0.95 # weight factor for distribution of heat b/w tool + # & workpiece + fplw = 0.8 # Fraction of plastic work converted to heat + uz1 = t/4000 # Depth of penetration,m + nr1 = 3.141593*11 # No. of rotations in second load step + nr2 = 3.141593*45 # No. of rotations in third load step + uy1 = 60.96e-03 # Travelling distance along weld line + tsz = 0.01 # Time step size + + # ========================================================== + # * Geometry + # ========================================================== + # * Node for pilot node + mapdl.n(1, 0, 0, h) + # * Workpiece geometry (two rectangular plates) + mapdl.block(0, w, -l1, l2, 0, -t) + mapdl.block(0, -w, -l1, l2, 0, -t) + # * Tool geometry + mapdl.cyl4(0, 0, r1, 0, r1, 90, h) + mapdl.cyl4(0, 0, r1, 90, r1, 180, h) + mapdl.cyl4(0, 0, r1, 180, r1, 270, h) + mapdl.cyl4(0, 0, r1, 270, r1, 360, h) + mapdl.vglue(3, 4, 5, 6) + + +A hexahedral mesh with dropped midside nodes is used because the presence of +midside nodes (or quadratic interpolation functions) can lead to oscillations +in the thermal solution, leading to nonphysical temperature distribution. A +hexahedral mesh is used instead of a tetrahedral mesh to avoid mesh-orientation +dependency. For more accurate results, a finer mesh is used in the weld-line +region. The following figure shows the 3-D meshed model: + + +.. code:: python + + # ========================================================== + # * Meshing + # ========================================================== + mapdl.et(1, "SOLID226", 11) # Coupled-field solid element,KEYOPT(1) is + # set to 11 for a structural-thermal analysis + mapdl.allsel() + mapdl.lsel("s", "", "", 4, 5) + mapdl.lsel("a", "", "", 14, 19, 5) + mapdl.lesize("all", "", "", 22, 5) + mapdl.lsel("s", "", "", 16, 17) + mapdl.lsel("a", "", "", 2, 7, 5) + mapdl.lesize("all", "", "", 22, "1/5") + mapdl.lsel("s", "", "", 1) + mapdl.lsel("a", "", "", 3) + mapdl.lsel("a", "", "", 6) + mapdl.lsel("a", "", "", 8) + mapdl.lsel("a", "", "", 13) + mapdl.lsel("a", "", "", 15) + mapdl.lsel("a", "", "", 18) + mapdl.lsel("a", "", "", 20) + mapdl.lesize("all", "", "", 44) + mapdl.lsel("s", "", "", 9, "") + mapdl.lsel("a", "", "", 22) + mapdl.lesize("all", "", "", 2) + mapdl.allsel("all") + mapdl.mshmid(2) # midside nodes dropped + mapdl.vsweep(1) + mapdl.vsweep(2) + mapdl.vsel("u", "volume", "", 1, 2) + mapdl.mat(2) + mapdl.esize(0.0015) + mapdl.vsweep("all") + mapdl.allsel("all") + + mapdl.eplot(vtk=True, background='white') + + +.. jupyter-execute:: + :hide-code: + + # Plotting mesh + mapdl.allsel() + pl = pyvista.Plotter() + pl.background_color = "white" + pl.add_mesh(mapdl.mesh.grid, show_edges=True, color='gray') + pl.show() + + +**Figure 28.2: 3-D Meshed Model of Workpiece and Tool** + + +28.3.2. Contact Modeling +^^^^^^^^^^^^^^^^^^^^^^^^ + +Contact is modeled as follows for the FSW simulation: + +* Contact Pair Between the Plates +* Contact Pair Between Tool and Workpiece +* Rigid Surface Constraint + + +28.3.2.1. Contact Pair Between the Plates +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +During the simulation, the surfaces to be joined come into contact. A standard +surface-to-surface contact pair using ``TARGE170`` and ``CONTA174``, as shown +in the following figure: + +.. figure:: images/gtecfricstir_fig3.png + :align: center + :alt: Contact Pair Between Plates + :figclass: align-center + + **Figure 28.3: Contact Pair Between Plates** + +The surface-projection-based contact method (``KEYOPT(4) = 3`` for contact +elements) is defined at the contact interface. The surface-projection-based +contact method is well suited to highly nonlinear problems that include +geometrical, material, and contact nonlinearities. + +The problem simulates welding using the bonding capability of contact +elements. To achieve continuous bonding and simulate a perfect thermal contact +between the plates, a high thermal contact conductance (TCC) of 2 ⋅ 10E6 W/m2 +°C is specified. (A small TCC value yields an imperfect contact and a +temperature discontinuity across the interface.) The conductance is specified +as a real constant for ``CONTA174`` elements. + +The maximum temperature ranges from 70 to 90 percent of the melting temperature +of the workpiece material. Welding occurs after the temperature of the material +around the contacting surfaces exceeds the bonding temperature (approximately +70 percent of the workpiece melting temperature). In this case, 1000 °C is +considered to be the bonding temperature based on the reference results. The +bonding temperature is specified using the real constant ``TBND`` for +``CONTA174``. When the temperature at the contact surface for closed contact +exceeds the bonding temperature, the contact type changes to bonded. The +contact status remains bonded for the remainder of the simulation, even though +the temperature subsequently decreases below the bonding value. + +.. **Example 28.1: Defining the Contact Settings of the Contact Pair** + +.. code:: python + + # * Define contact pair between two plates + mapdl.et(6, "TARGE170") + mapdl.et(7, "CONTA174") + mapdl.keyopt(7, 1, 1) # Displacement & Temp dof + mapdl.keyopt(7, 4, 3) # To include Surface projection based method + mapdl.mat(1) + mapdl.asel("s", "", "", 5) + mapdl.nsla("", 1) + #mapdl.nplot() + mapdl.cm("tn.cnt", "node") # Creating component on weld side of plate1 + + mapdl.asel("s", "", "", 12) + mapdl.nsla("", 1) + #mapdl.nplot() + mapdl.cm("tn.tgt", "node") # Creating component on weld side of plate2 + + mapdl.allsel("all") + mapdl.type(6) + mapdl.r(6) + mapdl.rmodif(6, 14, tcc1) # A real constant TCC,Thermal contact + # conductance coeffi. b/w the plates, W/m^2'C + mapdl.rmodif(6, 35, 1000) # A real constant TBND,Bonding temperature + # for welding, 'C + mapdl.real(6) + mapdl.cmsel("s", "tn.cnt") + mapdl.nplot(title='Example of Contact Nodes', background='white') + mapdl.esurf() + mapdl.type(7) + mapdl.real(6) + mapdl.cmsel("s", "tn.tgt") + mapdl.esurf() + mapdl.allsel("all") + + +28.3.2.2. Contact Pair Between Tool and Workpiece +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The tool plunges into the work piece, rotates, and moves along the weld line. +Because the frictional contact between the tool and workpiece is primarily +responsible for heat generation, a standard surface-to-surface contact pair is +defined between the tool and workpiece. The ``CONTA174`` element is used to +model the contact surface on the top surface of the workpiece, and the +``TARGE170`` element is used for the tool, as shown in this figure: + +.. jupyter-execute:: + :hide-code: + + mapdl.allsel("all") + + # Plotting geometry + p = pyvista.Plotter() + p.background_color='white' + for elem, color in zip((170, 174),('red', 'blue')): + mapdl.esel("s", "ename","", elem) + esurf = mapdl.mesh._grid.linear_copy().extract_surface().clean() + p.add_mesh(esurf, + show_edges=True, + show_scalar_bar=False, + style='surface', + color=color) + + p.show() + +**Figure 28.4: Contact Pair Between Tool and Workpiece.** +``CONTA174`` in :blue-text:`blue`, and ``TARGE170`` in :red-text:`red`. + + +Two real constants are specified to model friction-induced heat generation. +The fraction of frictional dissipated energy converted into heat is modeled +first; the ``FHTG`` real constant is set to 1 to convert all frictional +dissipated energy into heat. The factor for the distribution of heat between +contact and target surfaces is defined next; the ``FWGT`` real constant is set +to 0.95, so that 95 percent of the heat generated from the friction flows into +the workpiece and only five percent flows into the tool. + +A low TCC value (10 W/m2 °C) is specified for this contact pair because most of +the heat generated transfers to the workpiece. Some additional heat is also +generated by plastic deformation of the workpiece material. Because the +workpiece material softens and the value of friction coefficient drops as the +temperature increases, a variable coefficient of friction (0.4 to 0.2) is +defined (:meth:`Mapdl.tb("FRIC") ` with +:meth:`mapdl.tbtemp() ` and +:meth:`Mapdl.tbdata() `). + + +.. **Example 28.2: Specifying the Settings for the Contact Pair** + +.. code:: python + + # * Define contact pair between tool & workpiece + mapdl.et(4, "TARGE170") + mapdl.et(5, "CONTA174") + mapdl.keyopt(5, 1, 1) # Displacement & Temp dof + mapdl.keyopt(5, 5, 3) # Close gap/reduce penetration with auto cnof + mapdl.keyopt(5, 9, 1) # Exclude both initial penetration or gap + mapdl.keyopt(5, 10, 0) # Contact stiffness update each iteration + # based + + # Bottom & lateral(all except top) surfaces of tool for target + mapdl.vsel("u", "volume", "", 1, 2) + mapdl.allsel("below", "volume") + mapdl.nsel("r", "loc", "z", 0, h) + mapdl.nsel("u", "loc", "z", h) + mapdl.type(4) + mapdl.r(5) + mapdl.tb("fric", 5, 6) # Definition of friction co efficient at + # different temp + mapdl.tbtemp(25) + mapdl.tbdata(1, 0.4) # friction co-efficient at temp 25 + mapdl.tbtemp(200) + mapdl.tbdata(1, 0.4) # friction co-efficient at temp 200 + mapdl.tbtemp(400) + mapdl.tbdata(1, 0.4) # friction co-efficient at temp 400 + mapdl.tbtemp(600) + mapdl.tbdata(1, 0.3) # friction co-efficient at temp 600 + mapdl.tbtemp(800) + mapdl.tbdata(1, 0.3) # friction co-efficient at temp 800 + mapdl.tbtemp(1000) + mapdl.tbdata(1, 0.2) # friction co-efficient at temp 1000 + mapdl.rmodif(5, 9, 500e6) # Max.friction stress + mapdl.rmodif(5, 14, tcc2) # Thermal contact conductance b/w tool and + # workpiece, 10 W/m^2'C + mapdl.rmodif(5, 15, 1) # A real constant FHTG,the fraction of + # frictional dissipated energy converted + # into heat + mapdl.rmodif(5, 18, fwgt) # A real constant FWGT, weight factor for + # the distribution of heat between the + # contact and target surfaces, 0.95 + mapdl.real(5) + mapdl.mat(5) + mapdl.esln() + mapdl.esurf() + mapdl.allsel("all") + + + +28.3.2.3. Rigid Surface Constraint +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The workpiece remains fixed in all stages of the simulation. The tool rotates +and moves along the weld line. A pilot node is created at the center of the top +surface of the tool in order to apply the rotation and translation on the tool. +The motion of the pilot node controls the motion of the entire tool. A rigid +surface constraint is defined between the pilot node (``TARGE170``) and the +nodes of the top surface of the tool (``CONTA174``). A multipoint constraint +(MPC) algorithm with contact surface behavior defined as bonded always is used +to constrain the contact nodes to the rigid body motion defined by the pilot +node. + +The following contact settings are used for the ``CONTA174`` elements: + +* To include MPC contact algorithm: ``KEYOPT(2) = 2`` +* For a rigid surface constraint: ``KEYOPT(4) = 2`` +* To set the behavior of contact surface as bonded (always): ``KEYOPT(12) = 5`` + + +.. jupyter-execute:: + :hide-code: + + ## figure 28.5 + mapdl.allsel("all") + mapdl.esel('s', 'mat', '', 2) + mapdl.nsle('s') + + pl = mapdl.eplot(plot_bc=True, + bc_glyph_size=0.002, + return_plotter=True, + show_axes=False, + theme=mytheme, + notebook='pythreejs') + pl.background_color = 'white' + + for elem, color in zip((170, 174), ('red', 'blue')): + + mapdl.esel('s', 'mat', '', 2) + mapdl.esel("r", "ename", "", elem) + esurf = mapdl.mesh._grid.linear_copy().extract_surface().clean() + if mapdl.mesh.n_elem != 1: + pl.add_mesh(esurf, show_edges=True, show_scalar_bar=False, + style='surface', color=color) + pl.show() + +**Figure 28.5: Rigid Surface Constrained.** +Pilot node or master with applied boundary conditions and the constrained +top surface of the tool (:blue-text:`blue`).** + + +.. code:: python + + # * Define Rigid Surface Constraint on tool top surface + mapdl.et(2, "TARGE170") + mapdl.keyopt(2, 2, 1) # User defined boundary condition on rigid + # target nodes + + mapdl.et(3, "CONTA174") + mapdl.keyopt(3, 1, 1) # To include Temp DOF + mapdl.keyopt(3, 2, 2) # To include MPC contact algorithm + mapdl.keyopt(3, 4, 2) # For a rigid surface constraint + mapdl.keyopt(3, 12, 5) # To set the behavior of contact surface as a + # bonded (always) + + mapdl.vsel("u", "volume", "", 1, 2) # Selecting Tool volume + mapdl.allsel("below", "volume") + mapdl.nsel("r", "loc", "z", h) # Selecting nodes on the tool top surface + mapdl.type(3) + mapdl.r(3) + mapdl.real(3) + mapdl.esln() + mapdl.esurf() # Create contact elements + mapdl.allsel("all") + + # * Define pilot node at the top of the tool + mapdl.nsel("s", "node", "", 1) + mapdl.tshap("pilo") + mapdl.type(2) + mapdl.real(3) + mapdl.e(1) # Create target element on pilot node + mapdl.allsel() + + # Top surfaces of plates nodes for contact + mapdl.vsel("s", "volume", "", 1, 2) + mapdl.allsel("below", "volume") + mapdl.nsel("r", "loc", "z", 0) + mapdl.type(5) + mapdl.real(5) + mapdl.esln() + mapdl.esurf() + mapdl.allsel("all") + + +28.4. Material Properties +------------------------- + +Accurate temperature calculation is critical to the FSW process because the +stresses and strains developed in the weld are temperature-dependent. Thermal +properties of the 304L steel plates such as thermal conductivity, specific +heat, and density are temperature-dependent. Mechanical properties of the +plates such as Young's modulus and the coefficient of thermal expansion are +considered to be constant due to the limitations of data available in the +literature. + +It is assumed that the plastic deformation of the material uses the von Misses +yield criterion, as well as the associated flow rule and the work-hardening +rule. Therefore, a bilinear isotropic hardening model (``TB,PLASTIC,,,,BISO``) +is selected. + +The following table shows the material properties of the workpiece: + +**Table 28.1: Workpiece Material Properties** + ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| **Property** | **Value** | ++==============================================================================================+=========================================+ +| Linear Properties | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Young's modulus | 193 GPa | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Poisson's ratio | 0.3 | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Coefficient of thermal expansion | 18.7 µm/m °C | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| **Bilinear Isotropic Hardening Constants (``TB,PLASTIC,,,,BISO``)** | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Yield stress | 290 MPa | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Tangent modulus | 2.8 GPa | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| **Temperature-Dependent Material Properties** | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Temperature (°C) | 0 | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Thermal Conductivity (W/m °C) | 16 | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Specific Heat (J/Kg °C) | 500 | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ +| Density (Kg/m3) | 7894 | ++----------------------------------------------------------------------------------------------+-----------------------------------------+ + +:meth:`Mapdl.tbdata() ` defines the yield stress and tangent modulus. + +The fraction of the plastic work dissipated as heat during FSW is about 80 +percent. Therefore, the fraction of plastic work converted to heat +(Taylor-Quinney coefficient) is set to 0.8 (:meth:`Mapdl.mp("QRATE") +`) for the calculation of plastic heat generation in +the workpiece material. + +To weld a high-temperature material such as 304L stainless steel, a tool +composed of hard material is required. Tools made from super-abrasive materials +such as PCBN are suitable for such processes, and so a cylindrical PCBN tool is +used here. The material properties of the PCBN tool are obtained from the +references: [Ozel2008]_ and [Mishra2007]_. + + +The following table shows the material properties of the PCBN tool: + +**Table 28.2: Material Properties of the PCBN Tool** + ++----------------------+-------------+ +| Property | Value | ++======================+=============+ +| Young modulus | 680 GPa | ++----------------------+-------------+ +| Poisson's ratio | 0.22 | ++----------------------+-------------+ +| Thermal Conductivity | 100 W/m °C | ++----------------------+-------------+ +| Specific Heat | 750 J/Kg °C | ++----------------------+-------------+ +| Density | 4280 Kg/m3 | ++----------------------+-------------+ + +The following code setup the material properties: + + +.. code:: python + + # ========================================================== + # * Material properties + # ========================================================== + # * Material properties for 304l stainless steel Plates + mapdl.mp("ex", 1, 193e9) # Elastic modulus (N/m^2) + mapdl.mp("nuxy", 1, 0.3) # Poisson's ratio + mapdl.mp("alpx", 1, 1.875e-5) # Coefficient of thermal expansion, µm/m'c + # Fraction of plastic work converted to heat, 80% + mapdl.mp("qrate", 1, fplw) + + # *BISO material model + EX = 193e9 + ET = 2.8e9 + EP = EX*ET/(EX-ET) + mapdl.tb("plas", 1, 1, "", "biso") # Bilinear isotropic material + mapdl.tbdata(1, 290e6, EP) # Yield stress & plastic tangent modulus + mapdl.mptemp(1, 0, 200, 400, 600, 800, 1000) + mapdl.mpdata("kxx", 1, 1, 16, 19, 21, 24, 29, 30) # therm cond.(W/m'C) + mapdl.mpdata("c", 1, 1, 500, 540, 560, 590, 600, 610) # spec heat(J/kg'C) + mapdl.mpdata("dens", 1, 1, 7894, 7744, 7631, 7518, 7406, 7406) # kg/m^3 + + # * Material properties for PCBN tool + mapdl.mp("ex", 2, 680e9) # Elastic modulus (N/m^2) + mapdl.mp("nuxy", 2, 0.22) # Poisson's ratio + mapdl.mp("kxx", 2, 100) # Thermal conductivity(W/m'C) + mapdl.mp("c", 2, 750) # Specific heat(J/kg'C) + mapdl.mp("dens", 2, 4280) # Density,kg/m^3 + + + +28.5. Boundary Conditions and Loading +------------------------------------- + +This section describes the thermal and mechanical boundary conditions imposed +on the FSW model: + +* `28.5.1. Thermal Boundary Conditions`_ +* `28.5.2. Mechanical Boundary Conditions`_ +* `28.5.3. Loading`_ + +28.5.1. Thermal Boundary Conditions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The frictional and plastic heat generated during the FSW process propagates +rapidly into remote regions of the plates. On the top and side surfaces of the +workpiece, convection and radiation account for heat loss to the +ambient. Conduction losses also occur from the bottom surface of the workpiece +to the backing plate. + + +.. jupyter-execute:: + :hide-code: + + pl = pyvista.Plotter() + + mapdl.allsel() + mapdl.asel('u', 'loc', 'z', -t) + + areas = mapdl.geometry.areas() + for each_area in areas: + pl.add_mesh(each_area, show_edges=False, show_scalar_bar=False, + style='surface', color='red') + + mapdl.asel('s', 'loc', 'z', -t) + + areas = mapdl.geometry.areas() + for each_area in areas: + pl.add_mesh(each_area, show_edges=False, show_scalar_bar=False, + style='surface', color='yellow') + + pl.show() + +**Figure 28.6: Thermal Boundary Conditions.** +Convection loads (:red-text:`red`) and conduction loads (:yellow-text:`yellow`) + +Available data suggest that the value of the convection coefficient lies +between 10 and 30 W/m2 °C for the workpiece surfaces, except for the bottom +surface. The value of the convection coefficient is 30 W/m2°C for workpiece and +tool. This coefficient affects the output temperature. A lower coefficient +increases the output temperature of the model. A high overall heat-transfer +coefficient (about 10 times the convective coefficient) of 300 W/m2 °C is +assumed for the conductive heat loss through the bottom surface of the +workpiece. As a result, the bottom surface of the workpiece is also treated as +a convection surface for modeling conduction losses. Because the percentage of +heat lost due to radiation is low, radiation heat losses are ignored. An +initial temperature of 25 °C is applied on the model. Temperature boundary +conditions are not imposed anywhere on the model. + +.. **Example 28.3: Defining the Thermal Boundary Conditions** + +.. code:: python + + # Initial boundary conditions. + mapdl.tref(25) # Reference temperature 25'C + mapdl.allsel() + mapdl.nsel("all") + mapdl.ic("all", "temp", 25) # Initial condition at nodes,temp 25'C + + + # Thermal Boundary Conditions + # Convection heat loss from the workpiece surfaces + mapdl.vsel("s", "volume", "", 1, 2) # Selecting the workpiece + mapdl.allsel("below", "volume") + mapdl.nsel("r", "loc", "z", 0) + mapdl.nsel("a", "loc", "x", -w) + mapdl.nsel("a", "loc", "x", w) + mapdl.nsel("a", "loc", "y", -l1) + mapdl.nsel("a", "loc", "y", l2) + mapdl.sf("all", "conv", 30, 25) + + # Convection (high)heat loss from the workpiece bottom + mapdl.nsel("s", "loc", "z", -t) + mapdl.sf("all", "conv", 300, 25) + mapdl.allsel("all") + + # Convection heat loss from the tool surfaces + mapdl.vsel("u", "volume", "", 1, 2) # Selecting the tool + mapdl.allsel("below", "volume") + mapdl.csys(1) + mapdl.nsel("r", "loc", "x", r1) + mapdl.nsel("a", "loc", "z", h) + mapdl.sf("all", "conv", 30, 25) + mapdl.allsel("all") + + # Constraining all DOFs at pilot node except the Temp DOF + mapdl.d(1, "all") + mapdl.ddele(1, "temp") + mapdl.allsel("all") + + + +28.5.2. Mechanical Boundary Conditions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The workpiece is fixed by clamping each plate. The clamped portions of the +plates are constrained in all directions. To simulate support at the bottom of +the plates, all bottom nodes of the workpiece are constrained in the +perpendicular direction (z direction). + + +.. jupyter-execute:: + :hide-code: + + mapdl.allsel("all") + + # Plotting BC + pl = mapdl.eplot( + plot_bc=True, + return_plotter=True, + bc_glyph_size=0.002, + theme=mytheme, + notebook='pythreejs', + show_axes=False) + pl.show() + +**Figure 28.7: Mechanical Boundary Conditions:** +X-direction (``UX``) in :red-text:`red`, Y-direction (``UY``) in :green-text:`green`, and Z-direction (``UZ``) in :blue-text:`blue`. + + +.. code:: python + + # Mechanical Boundary Conditions + # 20% ends of the each plate is constraint + mapdl.nsel("s", "loc", "x", -0.8*w, -w) + mapdl.nsel("a", "loc", "x", 0.8*w, w) + mapdl.d("all", "uz", 0) # Displacement constraint in x-direction + mapdl.d("all", "uy", 0) # Displacement constraint in y-direction + mapdl.d("all", "ux", 0) # Displacement constraint in z-direction + mapdl.allsel("all") + + # Bottom of workpiece is constraint in z-direction + mapdl.nsel("s", "loc", "z", -t) + mapdl.d("all", "uz") # Displacement constraint in z-direction + mapdl.allsel("all") + + + +28.5.3. Loading +^^^^^^^^^^^^^^^ + +The FSW process consists of three primary phases: + +1. **Plunge** -- The tool plunges slowly into the workpiece + +2. **Dwell** -- Friction between the rotating tool and workpiece generates heat + at the initial tool position until the workpiece temperature reaches the + value required for the welding. +3. **Traverse (or Traveling)** -- The rotating tool moves along the weld line. + +During the traverse phase, the temperature at the weld line region rises, but +the maximum temperature values do not surpass the melting temperature of the +workpiece material. As the temperature drops, a solid continuous joint appears +between the two plates. + +For illustrative purposes, each phase of the FSW process is considered a separate +load step. A rigid surface constraint is already defined for applying loading on the +tool. + +The following table shows the details for each load step. + +**Table 28.3: Load Steps** + ++-----------+------------------+----------------------------------------------------------------------------+---------------------------------------+ +| Load Step | Time Period (sec)| Loadings on Pilot Node | Boundary Condition | ++===========+==================+============================================================================+=======================================+ +| 1 | 1 | Displacement boundary condition | ``UZ`` = -7.95E-07 m | ++-----------+------------------+----------------------------------------------------------------------------+---------------------------------------+ +| 2 | 5.5 | Rotational boundary condition | ``ROTZ`` = 60 RPM | ++-----------+------------------+----------------------------------------------------------------------------+---------------------------------------+ +| 3 | 22.5 | Displacement and rotational boundary conditions together on the pilot node | ``ROTZ`` = 60 RPM ``UY`` = 60.96E-3 m | ++-----------+------------------+----------------------------------------------------------------------------+---------------------------------------+ + + +The tool plunges into the workpiece at a very shallow depth, then rotates to +generate heat. The depth and rotating speeds are the critical parameters for +the weld temperatures. The parameters are determined based on the experimental +data of Zhu and Chao [Zhu2004]_. The tool travels from one end of the welding +line to the other at a speed of 2.7 mm/s. + +28.6. Analysis and Solution Controls +------------------------------------ + +A nonlinear transient analysis is performed in three load steps using +structural-thermal options of ``SOLID226`` and +``CONTA174``. + +FSW simulation includes factors such as nonlinearity, contact, friction, large +plastic deformation, structural-thermal coupling, and different loadings at +each load step. The solution settings applied consider all of these factors. + +The first load step in the solution process converges within a few substeps, +but the second and third load steps converge only after applying the proper +solution settings shown in the following table: + +**Table 28.4: Solution Settings** + ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Solution Setting | Description of Setting and Comments | ++==================================================================================+==================================================================================================================================================================================================================================================================================================================================================================+ +| :meth:`Mapdl.antype(4) ` | Transient analysis. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.lnsrch("ON") ` | For contact problems,this option is useful for enhancing convergence. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.cutcontrol("PLSLIMIT", 0.15) ` | Controls the time-step cutback during a nonlinear solution and specifies the maximum equivalent plastic strain allowed within a time-step. If the calculated value exceeds the specified value, the program performs a cutback (bisection). ``PLSLIMIT`` is set at 15 percent (from the default five percent) because solution-control support is not available. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.nlgeom("ON") ` | Includes large-deflection effects or large strain effects, according to the element type. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.nropt("UNSYM") ` | Recommended for contact elements with high friction coefficients. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.timint("OFF", "STRUC") ` | To speed up convergence in a coupled-field transient analysis, the structural dynamic effects are turned off. These structural effects are not important in the modeling of heat generation due to friction; however,the thermal dynamic effects are considered here. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| :meth:`Mapdl.kbc(0) ` | The loads applied to intermediate substeps within the load step are ramped because the structural dynamic effects are set to off. | ++----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +To allow for a faster solution, automatic time-stepping is activated +(:meth:`Mapdl.autots("on") `). The initial time +step size (:meth:`Mapdl.deltim() `) is set to +0.1, and the minimum time step is set to 0.001. The maximum time step is set as +0.2 in load steps 2 and 3. A higher maximum time-step size may result in an +unconverged solution. + +The time step values are determined based on mesh or element size. For +stability, no time-step limitation exists for the implicit integration +algorithm. Because this problem is inherently nonlinear and an accurate +solution is necessary, a disturbance must not propagate to more than one +element in a time step; therefore, an upper limit on the time step size is +required. It is important to choose a time step size that does not violate the +subsequent criterion (minimum element size, maximum thermal conductivity over +the whole model, minimum density, and minimum specific heat). + +.. **Example 28.5: Defining the Solution Settings** + +.. code:: python + + mapdl.solu() + mapdl.antype(4) # Transient analysis + mapdl.lnsrch('on') + mapdl.cutcontrol('plslimit', 0.15) + mapdl.kbc(0) # Ramped loading within a load step + mapdl.nlgeom("on") # Turn on large deformation effects + mapdl.timint("off", "struc") # Structural dynamic effects are turned off. + mapdl.nropt('unsym') + + ## Solving + # Load Step1 + mapdl.time(1) + mapdl.nsubst(10, 1000, 10) + mapdl.d(1, "uz", -uz1) # Tool plunges into the workpiece + mapdl.outres("all", "all") + mapdl.allsel() + mapdl.solve() + mapdl.save() + + # Load Step2 + mapdl.time(6.5) + mapdl.d(1, "rotz", nr1) # Rotation of tool, 60rpm + mapdl.deltim(tsz, 0.001, 0.2) + mapdl.outres("all", 10) + mapdl.allsel() + mapdl.solve() + mapdl.save() + + # Load Step3 + mapdl.time(29) + mapdl.d(1, "rotz", nr2) # Rotation of tool,60rpm + mapdl.d(1, "uy", uy1) # Displacement of tool along weldline + mapdl.deltim(tsz, 0.001, 0.2) + mapdl.outres("all", 10) + mapdl.solve() + mapdl.finish() + mapdl.save() + + + +28.7. Results and Discussion +---------------------------- + +The following results topics for the FSW simulation are available: + +* `28.7.1. Deformation and Stresses`_ +* `28.7.2. Temperature Results`_ +* `28.7.3. Welding Results`_ +* `28.7.4. Heat Generation`_ + + + +28.7.1. Deformation and Stresses +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is important to observe the change in various quantities around the weld +line during the FSW process. The following figure shows the deflection of the +workpiece due to plunging of the tool in the first load step: + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.9.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + + +**Figure 28.9: Deflection at Workpiece After Load Step 1** + + +The deflection causes high stresses to develop on the workpiece beneath the +tool, as shown in this figure: + + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.10.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + +**Figure 28.10: von Mises Stress After Load Step 1** + +Following load step 1, the temperature remains unchanged (25 °C), as shown in +this figure: + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.11.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + + +**Figure 28.11: Temperature After Load Step 1** + +As the tool begins to rotate at this location, the frictional stresses develop +and increase rapidly. The following two figures show the increment in contact +frictional stresses from load step 1 to load step 2: + + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.12.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + + +**Figure 28.12: Frictional Stress After Load Step 1** + + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.13.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + + +**Figure 28.13: Frictional Stress After Load Step 2** + +All frictional dissipated energy is converted into heat during load step 2. The +heat is generated at the tool-workpiece interface. Most of the heat is +transferred to the workpiece (FWGT is specified to 0.95). As a result, the +temperature of the workpiece increases rapidly compared to that of the tool. + +28.7.2. Temperature Results +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following two figures shows the temperature rise due to heat generation in the +second and third load steps: + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.14.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + +**Figure 28.14: Temperature After Load Step 2** + + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.15.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.show() + +**Figure 28.15: Temperature After Load Step 3** + + +The maximum temperature on the workpiece occurs beneath the tool during the +last two load steps. Heat generation is due to the mechanical loads. No +external heat sources are used. As the temperature increases, the material +softens and the coefficient of friction decreases. A temperature-dependent +coefficient of friction (0.4 to 0.2) helps to prevent the maximum temperature +from exceeding the material melting point. + +The observed temperature rise in the model shows that heat generation during +the second and third load steps is due to friction between the tool shoulder +and workpiece, as well as plastic deformation of the workpiece material. + +The melting temperature of 304L stainless steel is 1450 °C. As shown in the +following figure, the maximum temperature range at the weld line region on the +workpiece beneath the tool is well below the melting temperature of the +workpiece material during the second and third load steps, but above 70 percent +of the melting temperature: + +.. jupyter-execute:: + :hide-code: + + columns_names = ['time', 'max temp'] + values = np.loadtxt(download_tech_demo_data("td-28/supporting_files","Figure_28.16.txt")) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['max temp'], y=df['time'], name='Maximum Temperature', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=True + ) + ] + ) + + fig.update_layout( + template='simple_white', + xaxis_title='Time (Sec)', + yaxis_title='Temperature (C)', + #title='Effect of friction coefficient on Mode coupling', + title_x=0.5, + #legend_title='Modes', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + + +**Figure 28.16: Maximum Temperature (on Workpiece Beneath the Tool) Variation with Time** + + +The two plates can be welded together within this temperature range. + +The following figure shows the temperature distributions on the top surface of +the workpiece along the transverse distance (perpendicular to the weld line): + + +.. jupyter-execute:: + :hide-code: + + columns_names = ['x', 'loc1', 'loc2', 'loc3'] + values = np.loadtxt(download_tech_demo_data("td-28/supporting_files","Figure_28.17.txt")) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['x'], y=df['loc1'], name='Location 1 - 0.016 m', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=True + ), + go.Scatter(x=df['x'], y=df['loc2'], name='Location 2 - 0.027 m', + mode='markers+lines', + marker=dict(color='red', size=10), + line=dict(color='red', width=3), + showlegend=True + ), + go.Scatter(x=df['x'], y=df['loc3'], name='Location 3 - 0.040 m', + mode='markers+lines', + marker=dict(color='green', size=10), + line=dict(color='green', width=3), + showlegend=True + ), + ] + ) + + fig.update_layout( + template='simple_white', + xaxis_title='Transverse distance (m)', + yaxis_title='Temperature (C)', + #title='Temperature Distribution on the Top Surface of Workpiece at Various Locations', + title_x=0.5, + #legend_title='Locations', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + +**Figure 28.17: Temperature Distribution on the Top Surface of Workpiece at Various Locations** + +As shown in the following figure and table, the temperature plots indicate the +temperature distribution at various locations on the weld line when the maximum +temperature occurs at those locations: + +.. figure:: images/gtecfricstir_fig17.png + :align: center + :alt: Various Locations on the Workpiece + :figclass: align-center + + **Figure 28.18: Various Locations on the Workpiece** + + +**Table 28.5: Locations on Weld Line** + ++------------------+-------------------------------------------+---------------------------------------+ +| Location Number | Distance on the Weld Line in y Direction | Time When Maximum Temperature Occurs | ++==================+===========================================+=======================================+ +| 1 | 0.016 m | 15.25 Sec | ++------------------+-------------------------------------------+---------------------------------------+ +| 2 | 0.027 m | 19.2 Sec | ++------------------+-------------------------------------------+---------------------------------------+ +| 3 | 0.040 m | 24 Sec | ++------------------+-------------------------------------------+---------------------------------------+ + + +The following figure shows the temperature distribution in the thickness direction +at location 1: + +.. jupyter-execute:: + :hide-code: + + rotor1 = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.19.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(rotor1, scalars="values", cmap='jet', show_edges=True) + pl.camera.position=(0,0.15,0) + pl.show() + +**Figure 28.19: Temperature Distribution in Thickness Direction at Location 1** + + +As expected, the highest temperature caused by heat generation appears around +the weld line region. By comparing the above temperature results with the +reference results, it can be determined that the temperatures obtained at the +weld line are well below the melting temperature of the workpiece material, but +still sufficient for friction stir welding. + +The following table and figure show the time-history response of the +temperature at various locations on the weld line: + ++------------------+----------------------------+ +| Location Number | Distance on the Weld Line | ++==================+============================+ +| 1 | 0.018 m | ++------------------+----------------------------+ +| 2 | 0.023 m | ++------------------+----------------------------+ +| 3 | 0.027 m | ++------------------+----------------------------+ +| 4 | 0.032 m | ++------------------+----------------------------+ +| 5 | 0.035 m | ++------------------+----------------------------+ +| 6 | 0.039 m | ++------------------+----------------------------+ + + +.. jupyter-execute:: + :hide-code: + + columns_names = ['time', 'loc1', 'loc2', 'loc3', 'loc4', 'loc5', 'loc6'] + values = np.loadtxt(download_tech_demo_data("td-28/supporting_files","Figure_28.20.txt")) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['time'], y=df['loc1'], name='Location 1 (0.018 m)', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=True + ), + go.Scatter(x=df['time'], y=df['loc2'], name='Location 2 (0.023 m)', + mode='markers+lines', + marker=dict(color='red', size=10), + line=dict(color='red', width=3), + showlegend=True + ), + go.Scatter(x=df['time'], y=df['loc3'], name='Location 3 (0.027 m)', + mode='markers+lines', + marker=dict(color='green', size=10), + line=dict(color='green', width=3), + showlegend=True + ), + go.Scatter(x=df['time'], y=df['loc4'], name='Location 4 (0.032 m)', + mode='markers+lines', + marker=dict(color='purple', size=10), + line=dict(color='purple', width=3), + showlegend=True + ), + go.Scatter(x=df['time'], y=df['loc5'], name='Location 5 (0.035 m)', + mode='markers+lines', + marker=dict(color='orange', size=10), + line=dict(color='orange', width=3), + showlegend=True + ), + go.Scatter(x=df['time'], y=df['loc6'], name='Location 6 (0.039 m)', + mode='markers+lines', + marker=dict(color='pink', size=10), + line=dict(color='pink', width=3), + showlegend=True + ), + ] + ) + + fig.update_layout( + template='simple_white', + xaxis_title='Time (Sec)', + yaxis_title='Temperature (C)', + title='Temperature Variation with Time on Various Joint Locations', + title_x=0.5, + legend_title='Locations', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + + +**Figure 28.20: Temperature Variation with Time on Various Joint Locations** + + +28.7.3. Welding Results +^^^^^^^^^^^^^^^^^^^^^^^ + +A bonding temperature of 1000 °C is already defined for the welding simulation +at the interface of the plates. The contact status at this interface after the last +load step is shown in the following figure: + + +.. jupyter-execute:: + :hide-code: + + mesh = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.21.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(mesh, scalars="values", cmap='jet', show_edges=True) + pl.camera.position=(0.15,0.0,0) + pl.show() + + +**Figure 28.21: Contact Status at Interface with Bonding Temperature 1000 °C** +Elements can be in near-contact (:blue-text:`blue`), sliding (:green-text:`green`) or sticking (:red-text:`red`) states. + + +The sticking portion of the interface shows the bonding or welding region of +the plates. If the bonding temperature was assumed to be 900 °C, then the +welding region would increase, as shown in this figure: + + +.. jupyter-execute:: + :hide-code: + + mesh = pyvista.read(download_tech_demo_data("td-28/supporting_files",'Figure_28.22.vtk')) + pl = pyvista.Plotter() + pl.add_mesh(mesh, scalars="values", cmap='jet', show_edges=True) + pl.camera.position=(0.15,0.0,0) + pl.show() + +**Figure 28.22: Contact Status at Interface with Bonding Temperature 900 °C** +Elements can be in near-contact (:blue-text:`blue`), sliding (:green-text:`green`) or sticking (:red-text:`red`) states. + + +28.7.4. Heat Generation +^^^^^^^^^^^^^^^^^^^^^^^ + +Friction and plastic deformation generate heat. A calculation of frictional and +plastic heat generation is performed. The generation of heat due to friction +begins in the second load step. + +The ``CONTA174`` element's ``FDDIS`` (``SMISC item``) output option is used to +calculate frictional heat generation on the workpiece. This option gives the +frictional energy dissipation per unit area for an element. After multiplying +this value with the corresponding element area, the friction heat-generation +rate for an element is calculated. By summing the values from each ``CONTA174`` +element of the workpiece, the total frictional heat generation rate is +calculated for a given time. + +It is possible to calculate the total frictional heat-generation rate at each +time-step (:meth:`Mapdl.etable `). The +following figure shows the plot of total frictional heat generation rate on the +workpiece with time: + +.. jupyter-execute:: + :hide-code: + + columns_names = ['time', 'fricheat'] + values = np.loadtxt(download_tech_demo_data("td-28/supporting_files","Figure_28.23.txt")) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['time'], y=df['fricheat'], #name='Location 1 (0.018 m)', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=False + ), + ] + ) + + fig.update_layout( + showlegend=True, + template='simple_white', + xaxis_title='Time (Sec)', + yaxis_title='Total frictional heat generation rate (W)', + title='Total Frictional Heat Rate Variation with Time', + title_x=0.5, + #legend_title='Locations', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + +**Figure 28.23: Total Frictional Heat Rate Variation with Time** + +The plot indicates that the frictional heat starts from the second load step +(after 1 second). + +The element contact area can be calculated using the +``CONTA174`` element ``CAREA`` (``NMISC, 58``) output +option. + +.. **Example 28.6: Defining the Frictional Heat Calculations** + +.. code:: python + + mapdl.post1() + mapdl.set("last") + nst = mapdl.get_value("nst", "active", "", "set", "nset") # To get number of data sets on result file + + # Total frictional heat rate + mapdl.esel("s", "real", "", 5) + mapdl.esel("r", "ename", "", 174) # Selecting the contact elements on Workpiece + fht = np.zeros(nst) + for i in range(1, nst): + mapdl.set("", "", "", "", "", "", i) + + # Frictional energy dissipation per unit + # area for an element, FDDIS + mapdl.etable("fri", "smisc", 18) + mapdl.etable("are1", "nmisc", 58) # Area of each contact element + + # Multiplying Fri. energy dissipation + # per unit area with the area of + # corresponding element + mapdl.smult("frri", "fri", "are1") + mapdl.ssum() # Summing up the Frictional heat rate + + # Total Frictional heat rate on + # workpiece at a particular time + frhi = mapdl.get('frhi', 'ssum',, 'item', 'frri') + fht(i) = frhi + + mapdl.parsav("all") + mapdl.allsel("all") + mapdl.finish() + + mapdl.post26() + mapdl.file("fsw", "rst") + mapdl.numvar(200) + mapdl.solu(191, "ncmit") # Solution summary data per substep to be + # stored for cumulative no. of iterations. + mapdl.store("merge") # Merge data from results file + mapdl.filldata(191, "", "", "", 1, 1) + mapdl.realvar(191, 191) + mapdl.parres("new", "fsw", "parm") + mapdl.vput("fht", 11, "", "", "fric_heat") + mapdl.plvar(11) # Plot of frictional heat rate against time + + +A similar calculation is performed to check the heat generation from plastic +deformation on the workpiece. The ``SOLID226`` element's output option +``PHEAT`` (``NMISC, 5``) gives the plastic heat generation rate per unit +volume. After multiplying this value with the corresponding element volume, +the plastic heat generation rate for an element is calculated. By summing the +values from each element (``SOLID226``) of the workpiece, the total plastic +heat generation rate is calculated for a particular time. + +It is possible to calculate the total frictional heat generation rate at each +time-step (:meth:`Mapdl.etable `). The following +figure shows the plot of the total plastic heat-generation rate with time. + +.. jupyter-execute:: + :hide-code: + + columns_names = ['time', 'fricheat'] + values = np.loadtxt(download_tech_demo_data("td-28/supporting_files","Figure_28.24.txt")) + + df = pd.DataFrame(data=values, columns=columns_names) + + fig = go.Figure( + [ + go.Scatter(x=df['time'], y=df['fricheat'], #name='Location 1 (0.018 m)', + mode='markers+lines', + marker=dict(color='blue', size=10), + line=dict(color='blue', width=3), + showlegend=False + ), + ] + ) + + fig.update_layout( + template='simple_white', + xaxis_title='Time (Sec)', + yaxis_title='Total Plastic Heat Generation Rate (W)', + title='Total Plastic Heat Rate Variation with Time', + title_x=0.5, + legend_title='Locations', + hovermode='x', + xaxis=dict(showgrid=True), + yaxis=dict(showgrid=True) + ) + fig.show() + + +**Figure 28.24: Total Plastic Heat Rate Variation with Time** + + +.. **Example 28.7: Defining the Plastic Heat Calculations** + +.. code:: python + + + mapdl.post1() + mapdl.set("last") + nst = mapdl.get("nst", "active", "", "set", "nset") # To get number of data sets on result file + + # Total Plastic heat rate + mapdl.esel("s", "mat", "", 1) # Selecting the coupled elements on workpiece + mapdl.etable("vlm1", "volu") # Volume of the each element + pha = np.zeros(nst) + + for i in range(1, nst): + mapdl.set("", "", "", "", "", "", i) + + # Plastic heat rate per unit volume on + # each element, PHEAT + mapdl.etable("pi", "nmisc", 5) + + # Multiplying Pl. heat rate per unit + # volume with the volume of + # corresponding element + mapdl.smult("psi", "pi", "vlm1") + + mapdl.ssum() # Summing up the Plastic heat rate + # Total Plastic heat rate on workpiece + # at a particular time + ppi = mapdl.get('ppi','ssum',,'item','psi') + + pha[i] = ppi + + mapdl.parsav("all") + mapdl.allsel("all") + + mapdl.post26() + mapdl.file("fsw", "rst") + mapdl.numvar(200) + + # solution summary data per substep to be + # stored for cumulative no. of iterations. + mapdl.solu(191, "ncmit") + mapdl.store("merge") # Merge data from results file + mapdl.filldata(191, "", "", "", 1, 1) + mapdl.realvar(191, 191) + mapdl.parres("new", "fsw", "parm") + mapdl.vput("pha", 10, "", "", "pheat_nmisc") + mapdl.plvar(10) # Plot of Plastic heat rate against time + + +**Figure 28.23** and **Figure 28.24** +show that friction is responsible for generating most of the heat needed, while the +contribution of heat due to plastic deformation is less significant. Because the +tool-penetration is shallow and the tool pin is ignored, the plastic heat is small +compared to frictional heat. + + +28.8. Recommendations +--------------------- + +To perform a similar FSW analysis, consider the following hints and +recommendations: + +* FSW is a coupled-field (structural-thermal) process. The temperature field + affects the stress distribution during the entire process. Also, heat generated + in structural deformation affects the temperature field. The direct method of + coupling is recommended for such processes. This method involves just one + analysis that uses a coupled-field element containing all necessary degrees of + freedom. Direct coupling is advantageous when the coupled-field interaction + involves strongly-coupled physics or is highly nonlinear. +* A nonlinear transient analysis is preferable for simulations where the + objective is to study the transient temperature and transient heat + transfer. +* The dynamic effects of different physics should be controlled. In this + problem, for example, the dynamic effects of the structural degrees of freedom + are disabled as they are unimportant. +* Separating the solution process into three load steps helps you to understand + the physics and solve the problem. +* The contact between the two plates must be nearly perfect to maintain + temperature continuity. For a perfect thermal contact, specify a high thermal + contact conductance (TCC) coefficient between workpiece plates. A high + coefficient results in temperature continuity across the interface. +* Because the problem is nonlinear, proper solution settings are required. Set + the following analysis controls to the appropriate values to achieve the + converged solution: :meth:`Mapdl.lnsrch() `, + :meth:`Mapdl.cutcontrol() `, + :meth:`Mapdl.kbc() `, + :meth:`Mapdl.neqit() `, + :meth:`Mapdl.nropt() `, + and :meth:`Mapdl.autots() `. +* Convergence at the second and third load steps is difficult to achieve. The + depth of penetration of the tool on the workpiece (``UZ``), rotational speed of the + tool (``ROTZ``), and time-step size play crucial roles in the convergence of the + second load step. Use a very small time-step size if the rotational speed is + higher than 60 RPM. +* A symmetric mesh (about the joint line) is preferred to capture the exact + outputs and their effects on the workpiece. A hex mesh with dropped midside + nodes is recommended for the workpiece as well as the tool. This approach helps + to maintain symmetry and prevent the temperature from reaching negative values + during the simulation. +* A minimum of two element layers is required in the thickness direction. A fine + sweep mesh near the weld line yields more accurate results; however, too fine a + mesh increases computational time. A fine mesh is unnecessary on the tool side. + To minimize computational time, the tool can be considered to be rigid with no + temperature degrees of freedom. + +28.9. References +---------------- + +The following papers are cited in this example problem: + + +.. [Zhu2004] Zhu, X. K. & Chao, Y. J. (2004). Numerical simulation of transient + temperature and residual stresses in friction stir welding of 304L stainless + steel. *Journal of Materials Processing Technology*. 146(2), + 263-272. + +.. [Prasanna2010] Prasanna, P., Rao, B. S., & Rao, G. K. (2010). Finite element modeling for + maximum temperature in friction stir welding and its validation. + *Journal of Advanced Manufacturing Technology*. 51, + 925-933. + +.. [Ozel2008] Ozel, T., Karpat, Y., & Srivastava, A. (2008). Hard turning with variable + micro-geometry PcBN tools. *CIRP Annals - Manufacturing + Technology*. 57, 73-76. + +.. [Mishra2007] Mishra, R. S. (2007). *Friction Stir Welding and + Processing*. Ed. R. S. Mishra and M. W. Mahoney. Materials Park, + OH: ASM International. + + +28.10. Input Files +------------------ + +The following files were used in this problem: + +* :download:`fsw.cdb ` -- Common database file containing the FSW model information + +You can also download the MAPDL files from: + +* `Download the zipped td-28 file set for this problem. `_ +* `Download all td-nn file sets in a single zip file. `_ + +.. jupyter-execute:: + :hide-code: + + mapdl.finish() + mapdl.exit() + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ + diff --git a/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir-anim.gif b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir-anim.gif new file mode 100644 index 000000000..5b4cc3c13 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir-anim.gif differ diff --git a/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig17.png b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig17.png new file mode 100644 index 000000000..f317b7231 Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig17.png differ diff --git a/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig3.png b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig3.png new file mode 100644 index 000000000..36e4dd03a Binary files /dev/null and b/doc/source/technology_showcase_examples/techdemo-28/images/gtecfricstir_fig3.png differ diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index df635b4e6..000000000 --- a/examples/README.md +++ /dev/null @@ -1 +0,0 @@ -# Examples diff --git a/ignore_words.txt b/ignore_words.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/requirements/requirements_build.txt b/requirements/requirements_build.txt deleted file mode 100644 index cdeec7a65..000000000 --- a/requirements/requirements_build.txt +++ /dev/null @@ -1,2 +0,0 @@ -build==0.9.0 -twine==4.0.1 diff --git a/requirements/requirements_doc.txt b/requirements/requirements_doc.txt index 0e5ee3b5f..22316b219 100644 --- a/requirements/requirements_doc.txt +++ b/requirements/requirements_doc.txt @@ -1,10 +1,11 @@ #PyMAPDL dependencies ansys-mapdl-core==0.63.3 -numpy==1.22.0 +numpy==1.23.1 pandas==1.5.1 plotly==5.11.0 pythreejs==2.4.1 pyvista==0.37.0 +vtk==9.0.3 # Documentation dependencies Sphinx==5.3.0