.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "examples/workflows/01-pymapdl-workflow.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_examples_workflows_01-pymapdl-workflow.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_examples_workflows_01-pymapdl-workflow.py:


.. _pymapdl_workflow_example:

PyMAPDL workflow
================

This example shows how to define a composite lay-up with PyACP, solve the resulting model with PyMAPDL, and
run a failure analysis with PyDPF - Composites.

.. GENERATED FROM PYTHON SOURCE LINES 34-43

Description
-----------

In a basic PyACP workflow, you begin with an MAPDL DAT file containing the mesh, material data, and
boundary conditions. For more information on creating input files, see :ref:`input_file_for_pyacp`.
Then, you import the DAT file into PyACP to define the composite lay-up. Finally, you export the
resulting model from PyACP to PyMAPDL. Once the results are available, the RST file is loaded in
PyDPF - Composites for analysis. The additional input files (``material.xml`` and
``ACPCompositeDefinitions.h5``) can also be stored with PyACP and passed to PyDPF - Composites.

.. GENERATED FROM PYTHON SOURCE LINES 45-49

Import modules
--------------

Import the standard library and third-party dependencies.

.. GENERATED FROM PYTHON SOURCE LINES 49-52

.. code-block:: Python

    import pathlib
    import tempfile








.. GENERATED FROM PYTHON SOURCE LINES 53-54

Import the PyACP dependencies.

.. GENERATED FROM PYTHON SOURCE LINES 54-66

.. code-block:: Python

    from ansys.acp.core import (
        PlyType,
        dpf_integration_helpers,
        get_directions_plotter,
        launch_acp,
        material_property_sets,
        print_model,
    )
    from ansys.acp.core.extras import ExampleKeys, get_example_file










.. GENERATED FROM PYTHON SOURCE LINES 68-72

Launch PyACP
------------

Download the example input file.

.. GENERATED FROM PYTHON SOURCE LINES 72-76

.. code-block:: Python

    tempdir = tempfile.TemporaryDirectory()
    WORKING_DIR = pathlib.Path(tempdir.name)
    input_file = get_example_file(ExampleKeys.BASIC_FLAT_PLATE_DAT, WORKING_DIR)








.. GENERATED FROM PYTHON SOURCE LINES 77-78

Launch the PyACP server and connect to it.

.. GENERATED FROM PYTHON SOURCE LINES 78-80

.. code-block:: Python

    acp = launch_acp()








.. GENERATED FROM PYTHON SOURCE LINES 81-85

Create an ACP workflow instance and load the model
--------------------------------------------------

Import the model from the input file.

.. GENERATED FROM PYTHON SOURCE LINES 85-89

.. code-block:: Python


    model = acp.import_model(input_file, format="ansys:dat")
    print(model.unit_system)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    mks




.. GENERATED FROM PYTHON SOURCE LINES 90-91

Visualize the loaded mesh.

.. GENERATED FROM PYTHON SOURCE LINES 91-95

.. code-block:: Python

    mesh = model.mesh.to_pyvista()
    mesh.plot(show_edges=True)









.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_001.png
        :alt: 01 pymapdl workflow
        :srcset: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_001.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyacp/pyacp/doc/source/examples/workflows/images/sphx_glr_01-pymapdl-workflow_001.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 96-101

Define the composite lay-up
---------------------------

Create an orthotropic material and fabric including strain limits, which are later
used to postprocess the simulation.

.. GENERATED FROM PYTHON SOURCE LINES 101-130

.. code-block:: Python

    engineering_constants = (
        material_property_sets.ConstantEngineeringConstants.from_orthotropic_constants(
            E1=5e10, E2=1e10, E3=1e10, nu12=0.28, nu13=0.28, nu23=0.3, G12=5e9, G23=4e9, G31=4e9
        )
    )

    strain_limit = 0.01
    strain_limits = material_property_sets.ConstantStrainLimits.from_orthotropic_constants(
        eXc=-strain_limit,
        eYc=-strain_limit,
        eZc=-strain_limit,
        eXt=strain_limit,
        eYt=strain_limit,
        eZt=strain_limit,
        eSxy=strain_limit,
        eSyz=strain_limit,
        eSxz=strain_limit,
    )

    ud_material = model.create_material(
        name="UD",
        ply_type=PlyType.REGULAR,
        engineering_constants=engineering_constants,
        strain_limits=strain_limits,
    )

    fabric = model.create_fabric(name="UD", material=ud_material, thickness=0.1)









.. GENERATED FROM PYTHON SOURCE LINES 131-132

Define a rosette and oriented selection set. Plot the orientation.

.. GENERATED FROM PYTHON SOURCE LINES 132-148

.. code-block:: Python

    rosette = model.create_rosette(origin=(0.0, 0.0, 0.0), dir1=(1.0, 0.0, 0.0), dir2=(0.0, 0.0, 1.0))

    oss = model.create_oriented_selection_set(
        name="oss",
        orientation_point=(0.0, 0.0, 0.0),
        orientation_direction=(0.0, 1.0, 0),
        element_sets=[model.element_sets["All_Elements"]],
        rosettes=[rosette],
    )

    model.update()

    plotter = get_directions_plotter(model=model, components=[oss.elemental_data.orientation])
    plotter.show()









.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_002.png
        :alt: 01 pymapdl workflow
        :srcset: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_002.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyacp/pyacp/doc/source/examples/workflows/images/sphx_glr_01-pymapdl-workflow_002.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 149-150

Create various plies with different angles and add them to a modeling group.

.. GENERATED FROM PYTHON SOURCE LINES 150-163

.. code-block:: Python

    modeling_group = model.create_modeling_group(name="modeling_group")
    angles = [0, 45, -45, 45, -45, 0]
    for idx, angle in enumerate(angles):
        modeling_group.create_modeling_ply(
            name=f"ply_{idx}_{angle}_{fabric.name}",
            ply_angle=angle,
            ply_material=fabric,
            oriented_selection_sets=[oss],
        )

    model.update()









.. GENERATED FROM PYTHON SOURCE LINES 164-165

Show the fiber directions of a specific ply.

.. GENERATED FROM PYTHON SOURCE LINES 165-178

.. code-block:: Python

    modeling_ply = model.modeling_groups["modeling_group"].modeling_plies["ply_4_-45_UD"]


    fiber_direction = modeling_ply.elemental_data.fiber_direction
    assert fiber_direction is not None
    plotter = get_directions_plotter(
        model=model,
        components=[fiber_direction],
    )

    plotter.show()









.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_003.png
        :alt: 01 pymapdl workflow
        :srcset: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_003.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyacp/pyacp/doc/source/examples/workflows/images/sphx_glr_01-pymapdl-workflow_003.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 179-182

For a quick overview, print the model tree. Note that
the model can also be opened in the ACP GUI. For more
information, see :ref:`view_the_model_in_the_acp_gui`.

.. GENERATED FROM PYTHON SOURCE LINES 182-184

.. code-block:: Python

    print_model(model)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    'ACP Lay-up Model'
        Materials
            '1'
            'UD'
        Fabrics
            'UD'
        Element Sets
            'All_Elements'
        Edge Sets
            '_FIXEDSU'
        Rosettes
            '12'
            'Rosette'
        Oriented Selection Sets
            'oss'
        Modeling Groups
            'modeling_group'
                Modeling Plies
                    'ply_0_0_UD'
                        Production Plies
                            'P1__ply_0_0_UD'
                                Analysis Plies
                                    'P1L1__ply_0_0_UD'
                    'ply_1_45_UD'
                        Production Plies
                            'P1__ply_1_45_UD'
                                Analysis Plies
                                    'P1L1__ply_1_45_UD'
                    'ply_2_-45_UD'
                        Production Plies
                            'P1__ply_2_-45_UD'
                                Analysis Plies
                                    'P1L1__ply_2_-45_UD'
                    'ply_3_45_UD'
                        Production Plies
                            'P1__ply_3_45_UD'
                                Analysis Plies
                                    'P1L1__ply_3_45_UD'
                    'ply_4_-45_UD'
                        Production Plies
                            'P1__ply_4_-45_UD'
                                Analysis Plies
                                    'P1L1__ply_4_-45_UD'
                    'ply_5_0_UD'
                        Production Plies
                            'P1__ply_5_0_UD'
                                Analysis Plies
                                    'P1L1__ply_5_0_UD'





.. GENERATED FROM PYTHON SOURCE LINES 185-189

Solve the model with PyMAPDL
----------------------------

Launch the PyMAPDL instance.

.. GENERATED FROM PYTHON SOURCE LINES 189-194

.. code-block:: Python

    from ansys.mapdl.core import launch_mapdl

    mapdl = launch_mapdl()
    mapdl.clear()





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    /home/runner/.cache/pypoetry/virtualenvs/ansys-acp-core-O77fA6pn-py3.12/lib/python3.12/site-packages/ansys/mapdl/core/launcher.py:822: UserWarning: The environment variable 'PYMAPDL_START_INSTANCE' is set, hence the argument 'start_instance' is overwritten.
      warnings.warn(




.. GENERATED FROM PYTHON SOURCE LINES 195-196

Load the CDB file into PyMAPDL.

.. GENERATED FROM PYTHON SOURCE LINES 196-200

.. code-block:: Python

    analysis_model_path = WORKING_DIR / "analysis_model.cdb"
    model.export_analysis_model(analysis_model_path)
    mapdl.input(str(analysis_model_path))





.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    '\n /INPUT FILE= analysis_model.cdb  LINE=       0\n\n\n\n DO NOT WRITE ELEMENT RESULTS INTO DATABASE\n\n *GET  _WALLSTRT  FROM  ACTI  ITEM=TIME WALL  VALUE=  20.4000000    \n\n TITLE= \n wbnew--Static Structural (A5)                                                 \n\n  ACT Extensions:\n      LSDYNA, 2024.1\n      5f463412-bd3e-484b-87e7-cbc0a665e474, wbex\n /COM,     ANSYSMotion, 2024.2\n      20180725-3f81-49eb-9f31-41364844c769, wbex\n  \n\n SET PARAMETER DIMENSIONS ON  _WB_PROJECTSCRATCH_DIR\n  TYPE=STRI  DIMENSIONS=      248        1        1\n\n PARAMETER _WB_PROJECTSCRATCH_DIR(1) = D:\\ARM_Reports\\ACP_IMP_LAY_SEC_037_01102024082855\\TBSolves\\WB_jvonrick_50936_2\\wbnew_files\\dp0\\SYS\\MECH\\\n\n SET PARAMETER DIMENSIONS ON  _WB_SOLVERFILES_DIR\n  TYPE=STRI  DIMENSIONS=      248        1        1\n\n PARAMETER _WB_SOLVERFILES_DIR(1) = D:\\ARM_Reports\\ACP_IMP_LAY_SEC_037_01102024082855\\TBSolves\\WB_jvonrick_50936_2\\wbnew_files\\dp0\\SYS\\MECH\\\n\n SET PARAMETER DIMENSIONS ON  _WB_USERFILES_DIR\n  TYPE=STRI  DIMENSIONS=      248        1        1\n\n PARAMETER _WB_USERFILES_DIR(1) = D:\\ARM_Reports\\ACP_IMP_LAY_SEC_037_01102024082855\\TBSolves\\WB_jvonrick_50936_2\\wbnew_files\\user_files\\\n --- Data in consistent MKS units. See Solving Units in the help system for more\n\n MKS UNITS SPECIFIED FOR INTERNAL    \n  LENGTH        (l)  = METER (M)\n  MASS          (M)  = KILOGRAM (KG)\n  TIME          (t)  = SECOND (SEC)\n  TEMPERATURE   (T)  = CELSIUS (C)\n  TOFFSET            = 273.0\n  CHARGE        (Q)  = COULOMB\n  FORCE         (f)  = NEWTON (N) (KG-M/SEC2)\n  HEAT               = JOULE (N-M)\n\n  PRESSURE           = PASCAL (NEWTON/M**2)\n  ENERGY        (W)  = JOULE (N-M)\n  POWER         (P)  = WATT (N-M/SEC)\n  CURRENT       (i)  = AMPERE (COULOMBS/SEC)\n  CAPACITANCE   (C)  = FARAD\n  INDUCTANCE    (L)  = HENRY\n  MAGNETIC FLUX      = WEBER\n  RESISTANCE    (R)  = OHM\n  ELECTRIC POTENTIAL = VOLT\n\n INPUT  UNITS ARE ALSO SET TO MKS \n\n *** MAPDL - ENGINEERING ANALYSIS SYSTEM  RELEASE                  25.2BETA ***\n Ansys Mechanical Enterprise                       \n 00000000  VERSION=LINUX x64     20:24:00  JAN 10, 2025 CP=      0.956\n\n wbnew--Static Structural (A5)                                                 \n\n\n\n ** WARNING: PRE-RELEASE VERSION OF MAPDL 25.2BETA\n  ANSYS,INC TESTING IS NOT COMPLETE - CHECK RESULTS CAREFULLY **\n\n          ***** MAPDL ANALYSIS DEFINITION (PREP7) *****\n *********** Nodes for the whole assembly ***********\n *********** Elements for Body 1 "SYS\\Surface" ***********\n *********** Send User Defined Coordinate System(s) ***********\n *********** Set Reference Temperature ***********\n *********** Send Materials ***********\n *********** Send Sheet Properties ***********\n *********** Fixed Supports ***********\n *********** Define Force Using Surface Effect Elements ***********\n\n\n ***** ROUTINE COMPLETED *****  CP =         0.958\n\n\n --- Number of total nodes = 81\n --- Number of contact elements = 8\n --- Number of spring elements = 0\n --- Number of bearing elements = 0\n --- Number of solid elements = 64\n --- Number of condensed parts = 0\n --- Number of total elements = 72\n\n *GET  _WALLBSOL  FROM  ACTI  ITEM=TIME WALL  VALUE=  20.4000000    \n ****************************************************************************\n *************************    SOLUTION       ********************************\n ****************************************************************************\n\n *****  MAPDL SOLUTION ROUTINE  *****\n\n\n PERFORM A STATIC ANALYSIS\n  THIS WILL BE A NEW ANALYSIS\n\n PARAMETER _THICKRATIO =     0.000000000    \n\n USE SPARSE MATRIX DIRECT SOLVER\n\n CONTACT INFORMATION PRINTOUT LEVEL       1\n\n CHECK INITIAL OPEN/CLOSED STATUS OF SELECTED CONTACT ELEMENTS\n      AND LIST DETAILED CONTACT PAIR INFORMATION\n\n SPLIT CONTACT SURFACES AT SOLVE PHASE\n\n    NUMBER OF SPLITTING TBD BY PROGRAM\n\n DO NOT COMBINE ELEMENT MATRIX FILES (.emat) AFTER DISTRIBUTED PARALLEL SOLUTION\n\n DO NOT COMBINE ELEMENT SAVE DATA FILES (.esav) AFTER DISTRIBUTED PARALLEL SOLUTION\n\n NLDIAG: Nonlinear diagnostics CONT option is set to ON. \n         Writing frequency : each ITERATION.\n\n DO NOT SAVE ANY RESTART FILES AT ALL\n ****************************************************\n ******************* SOLVE FOR LS 1 OF 1 ****************\n\n SELECT       FOR ITEM=TYPE COMPONENT=    \n  IN RANGE         2 TO          2 STEP          1\n\n          8  ELEMENTS (OF         72  DEFINED) SELECTED BY  ESEL  COMMAND.\n\n SELECT      ALL NODES HAVING ANY ELEMENT IN ELEMENT SET.\n\n          9 NODES (OF         81  DEFINED) SELECTED FROM\n        8 SELECTED ELEMENTS BY NSLE COMMAND.\n\n SPECIFIED SURFACE LOAD PRES FOR ALL SELECTED ELEMENTS  LKEY =  1   KVAL = 1\n     VALUES =     0.0000         0.0000         0.0000         0.0000    \n\n SPECIFIED SURFACE LOAD PRES FOR ALL SELECTED ELEMENTS  LKEY =  2   KVAL = 1\n     VALUES =    -10000.        -10000.        -10000.        -10000.    \n\n SPECIFIED SURFACE LOAD PRES FOR ALL SELECTED ELEMENTS  LKEY =  3   KVAL = 1\n     VALUES =     0.0000         0.0000         0.0000         0.0000    \n\n ALL SELECT   FOR ITEM=NODE COMPONENT=    \n  IN RANGE         1 TO         81 STEP          1\n\n         81  NODES (OF         81  DEFINED) SELECTED BY NSEL  COMMAND.\n\n ALL SELECT   FOR ITEM=ELEM COMPONENT=    \n  IN RANGE         1 TO         72 STEP          1\n\n         72  ELEMENTS (OF         72  DEFINED) SELECTED BY  ESEL  COMMAND.\n\n PRINTOUT RESUMED BY /GOP\n\n USE       1 SUBSTEPS INITIALLY THIS LOAD STEP FOR ALL  DEGREES OF FREEDOM\n FOR AUTOMATIC TIME STEPPING:\n   USE      1 SUBSTEPS AS A MAXIMUM\n   USE      1 SUBSTEPS AS A MINIMUM\n\n TIME=  1.0000    \n\n ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE.\n\n\n WRITE ALL  ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE\n   FOR ALL APPLICABLE ENTITIES\n\n WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE ETMP ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE STRS ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE EPEL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE EPPL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n WRITE CONT ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL \n   FOR ALL APPLICABLE ENTITIES\n\n *GET  ANSINTER_  FROM  ACTI  ITEM=INT        VALUE=  0.00000000    \n\n *IF  ANSINTER_  ( =   0.00000     )  NE  \n      0  ( =   0.00000     )  THEN    \n\n *ENDIF\n\n *****  MAPDL SOLVE    COMMAND  *****\n\n *** WARNING ***                         CP =       0.959   TIME= 20:24:00\n Element shape checking is currently inactive.  Issue SHPP,ON or         \n SHPP,WARN to reactivate, if desired.                                    \n\n *** NOTE ***                            CP =       0.959   TIME= 20:24:00\n The model data was checked and warning messages were found.             \n  Please review output or errors file ( /file.err ) for these warning    \n messages.                                                               \n\n *** MAPDL - ENGINEERING ANALYSIS SYSTEM  RELEASE                  25.2BETA ***\n Ansys Mechanical Enterprise                       \n 00000000  VERSION=LINUX x64     20:24:00  JAN 10, 2025 CP=      0.959\n\n wbnew--Static Structural (A5)                                                 \n\n\n\n ** WARNING: PRE-RELEASE VERSION OF MAPDL 25.2BETA\n  ANSYS,INC TESTING IS NOT COMPLETE - CHECK RESULTS CAREFULLY **\n\n                       S O L U T I O N   O P T I O N S\n\n   PROBLEM DIMENSIONALITY. . . . . . . . . . . . .3-D                  \n   DEGREES OF FREEDOM. . . . . . UX   UY   UZ   ROTX ROTY ROTZ\n   ANALYSIS TYPE . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE)\n   OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . .  273.15    \n   EQUATION SOLVER OPTION. . . . . . . . . . . . .SPARSE             \n   GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC  \n\n *** NOTE ***                            CP =       0.960   TIME= 20:24:00\n Poisson\'s ratio PR input has been converted to NU input.                \n\n                      L O A D   S T E P   O P T I O N S\n\n   LOAD STEP NUMBER. . . . . . . . . . . . . . . .     1\n   TIME AT END OF THE LOAD STEP. . . . . . . . . .  1.0000    \n   NUMBER OF SUBSTEPS. . . . . . . . . . . . . . .     1\n   STEP CHANGE BOUNDARY CONDITIONS . . . . . . . .    NO\n   COPY INTEGRATION POINT VALUES TO NODE . . . . .   YES\n   PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT\n   DATABASE OUTPUT CONTROLS\n      ITEM     FREQUENCY   COMPONENT\n       ALL       NONE               \n      NSOL        ALL               \n      RSOL        ALL               \n      EANG        ALL               \n      ETMP        ALL               \n      VENG        ALL               \n      STRS        ALL               \n      EPEL        ALL               \n      EPPL        ALL               \n      CONT        ALL               \n\n\n SOLUTION MONITORING INFO IS WRITTEN TO FILE= file.mntr                                                                                                                                                                                                                                                           \n\n *** NOTE ***                            CP =       0.962   TIME= 20:24:00\n Predictor is ON by default for structural elements with rotational      \n degrees of freedom.  Use the PRED,OFF command to turn the predictor     \n OFF if it adversely affects the convergence.                            \n\n\n Range of element maximum matrix coefficients in global coordinates\n Maximum = 8.014568245E+11 at element 53.                                \n Minimum = 8.014568181E+11 at element 21.                                \n\n   *** ELEMENT MATRIX FORMULATION TIMES\n     TYPE    NUMBER   ENAME      TOTAL CP  AVE CP\n\n        1        64  SHELL181      0.013   0.000208\n        2         8  SURF156       0.000   0.000023\n Time at end of element matrix formulation CP = 0.976495028.             \n\n SPARSE MATRIX DIRECT SOLVER.\n  Number of equations =         432,    Maximum wavefront =     42\n\n\n  Memory allocated on this process\n  -------------------------------------------------------------------\n  Equation solver memory allocated                     =     0.733 MB\n  Equation solver memory required for in-core mode     =     0.708 MB\n  Equation solver memory required for out-of-core mode =     0.503 MB\n  Total (solver and non-solver) memory allocated       =   550.335 MB\n\n *** NOTE ***                            CP =       0.978   TIME= 20:24:00\n The Sparse Matrix Solver is currently running in the in-core memory     \n mode.  This memory mode uses the most amount of memory in order to      \n avoid using the hard drive as much as possible, which most often        \n results in the fastest solution time.  This mode is recommended if      \n enough physical memory is present to accommodate all of the solver      \n data.                                                                   \n Sparse solver maximum pivot= 3.20582728E+12 at node 57 UX.              \n Sparse solver minimum pivot= 144881.263 at node 68 ROTY.                \n Sparse solver minimum pivot in absolute value= 144881.263 at node 68    \n ROTY.                                                                   \n\n   *** ELEMENT RESULT CALCULATION TIMES\n     TYPE    NUMBER   ENAME      TOTAL CP  AVE CP\n\n        1        64  SHELL181      0.028   0.000431\n        2         8  SURF156       0.000   0.000020\n\n   *** NODAL LOAD CALCULATION TIMES\n     TYPE    NUMBER   ENAME      TOTAL CP  AVE CP\n\n        1        64  SHELL181      0.001   0.000014\n        2         8  SURF156       0.000   0.000004\n *** LOAD STEP     1   SUBSTEP     1  COMPLETED.    CUM ITER =      1\n *** TIME =   1.00000         TIME INC =   1.00000      NEW TRIANG MATRIX\n\n\n *** MAPDL BINARY FILE STATISTICS\n  BUFFER SIZE USED= 16384\n        0.062 MB WRITTEN ON ELEMENT MATRIX FILE: file.emat\n        0.125 MB WRITTEN ON ASSEMBLED MATRIX FILE: file.full\n        0.562 MB WRITTEN ON RESULTS FILE: file.rst\n *************** Write FE CONNECTORS *********\n\n WRITE OUT CONSTRAINT EQUATIONS TO FILE= file.ce                                                                                                                                                                                                                                                             \n ****************************************************\n *************** FINISHED SOLVE FOR LS 1 *************\n\n *GET  _WALLASOL  FROM  ACTI  ITEM=TIME WALL  VALUE=  20.4000000    \n\n PRINTOUT RESUMED BY /GOP\n\n FINISH SOLUTION PROCESSING\n\n\n ***** ROUTINE COMPLETED *****  CP =         1.012\n\n\n\n *** MAPDL - ENGINEERING ANALYSIS SYSTEM  RELEASE                  25.2BETA ***\n Ansys Mechanical Enterprise                       \n 00000000  VERSION=LINUX x64     20:24:00  JAN 10, 2025 CP=      1.013\n\n wbnew--Static Structural (A5)                                                 \n\n\n\n ** WARNING: PRE-RELEASE VERSION OF MAPDL 25.2BETA\n  ANSYS,INC TESTING IS NOT COMPLETE - CHECK RESULTS CAREFULLY **\n\n          ***** MAPDL RESULTS INTERPRETATION (POST1) *****\n\n Set Encoding of XML File to:ISO-8859-1\n\n Set Output of XML File to:\n     PARM,     ,     ,     ,     ,     ,     ,     ,     ,     ,     ,     ,\n         ,     ,     ,     ,     ,     ,     ,\n\n DATABASE WRITTEN ON FILE  parm.xml                                                                                                                                                                                                                                                            \n\n EXIT THE MAPDL POST1 DATABASE PROCESSOR\n\n\n ***** ROUTINE COMPLETED *****  CP =         1.013\n\n\n\n PRINTOUT RESUMED BY /GOP\n\n *GET  _WALLDONE  FROM  ACTI  ITEM=TIME WALL  VALUE=  20.4000000    \n\n PARAMETER _PREPTIME =     0.000000000    \n\n PARAMETER _SOLVTIME =     0.000000000    \n\n PARAMETER _POSTTIME =     0.000000000    \n\n PARAMETER _TOTALTIM =     0.000000000    \n\n *GET  _DLBRATIO  FROM  ACTI  ITEM=SOLU DLBR  VALUE=  0.00000000    \n\n *GET  _COMBTIME  FROM  ACTI  ITEM=SOLU COMB  VALUE=  0.00000000    \n\n *GET  _SSMODE   FROM  ACTI  ITEM=SOLU SSMM  VALUE=  2.00000000    \n\n *GET  _NDOFS    FROM  ACTI  ITEM=SOLU NDOF  VALUE=  432.000000    \n\n *GET  _SOL_END_TIME  FROM  ACTI  ITEM=SET  TIME  VALUE=  1.00000000    \n\n *IF  _sol_end_time  ( =   1.00000     )  EQ  \n      1.000000  ( =   1.00000     )  THEN    \n\n /FCLEAN COMMAND REMOVING ALL LOCAL FILES\n\n *ENDIF\n --- Total number of nodes = 81\n --- Total number of elements = 72\n --- Element load balance ratio = 0\n --- Time to combine distributed files = 0\n --- Sparse memory mode = 2\n --- Number of DOF = 432\n'



.. GENERATED FROM PYTHON SOURCE LINES 201-202

Solve the model.

.. GENERATED FROM PYTHON SOURCE LINES 202-206

.. code-block:: Python

    mapdl.allsel()
    mapdl.slashsolu()
    mapdl.solve()





.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    *****  MAPDL SOLVE    COMMAND  *****

     *** WARNING ***                         CP =       1.020   TIME= 20:24:00
     Element shape checking is currently inactive.  Issue SHPP,ON or         
     SHPP,WARN to reactivate, if desired.                                    

     *** NOTE ***                            CP =       1.020   TIME= 20:24:00
     The model data was checked and warning messages were found.             
      Please review output or errors file ( /file.err ) for these warning    
     messages.                                                               

     *** MAPDL - ENGINEERING ANALYSIS SYSTEM  RELEASE                  25.2BETA ***
     Ansys Mechanical Enterprise                       
     00000000  VERSION=LINUX x64     20:24:00  JAN 10, 2025 CP=      1.020

     wbnew--Static Structural (A5)                                                 



     ** WARNING: PRE-RELEASE VERSION OF MAPDL 25.2BETA
      ANSYS,INC TESTING IS NOT COMPLETE - CHECK RESULTS CAREFULLY **

                           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 . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE)
       OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . .  273.15    
       EQUATION SOLVER OPTION. . . . . . . . . . . . .SPARSE             
       GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC  

                          L O A D   S T E P   O P T I O N S

       LOAD STEP NUMBER. . . . . . . . . . . . . . . .     1
       TIME AT END OF THE LOAD STEP. . . . . . . . . .  1.0000    
       NUMBER OF SUBSTEPS. . . . . . . . . . . . . . .     1
       STEP CHANGE BOUNDARY CONDITIONS . . . . . . . .    NO
       COPY INTEGRATION POINT VALUES TO NODE . . . . .   YES
       PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT
       DATABASE OUTPUT CONTROLS
          ITEM     FREQUENCY   COMPONENT
           ALL       NONE               
          NSOL        ALL               
          RSOL        ALL               
          EANG        ALL               
          ETMP        ALL               
          VENG        ALL               
          STRS        ALL               
          EPEL        ALL               
          EPPL        ALL               
          CONT        ALL               


     SOLUTION MONITORING INFO IS WRITTEN TO FILE= file.mntr                                                                                                                                                                                                                                                           

     *** NOTE ***                            CP =       1.023   TIME= 20:24:00
     Predictor is ON by default for structural elements with rotational      
     degrees of freedom.  Use the PRED,OFF command to turn the predictor     
     OFF if it adversely affects the convergence.                            


     Range of element maximum matrix coefficients in global coordinates
     Maximum = 8.014568245E+11 at element 53.                                
     Minimum = 8.014568181E+11 at element 21.                                

       *** ELEMENT MATRIX FORMULATION TIMES
         TYPE    NUMBER   ENAME      TOTAL CP  AVE CP

            1        64  SHELL181      0.013   0.000205
            2         8  SURF156       0.000   0.000021
     Time at end of element matrix formulation CP = 1.03725994.              

     SPARSE MATRIX DIRECT SOLVER.
      Number of equations =         432,    Maximum wavefront =     42


      Memory allocated on this process
      -------------------------------------------------------------------
      Equation solver memory allocated                     =     0.733 MB
      Equation solver memory required for in-core mode     =     0.708 MB
      Equation solver memory required for out-of-core mode =     0.503 MB
      Total (solver and non-solver) memory allocated       =   550.460 MB

     *** NOTE ***                            CP =       1.039   TIME= 20:24:00
     The Sparse Matrix Solver 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.                                                                   
     Sparse solver maximum pivot= 3.20582728E+12 at node 57 UX.              
     Sparse solver minimum pivot= 144881.263 at node 68 ROTY.                
     Sparse solver minimum pivot in absolute value= 144881.263 at node 68    
     ROTY.                                                                   

       *** ELEMENT RESULT CALCULATION TIMES
         TYPE    NUMBER   ENAME      TOTAL CP  AVE CP

            1        64  SHELL181      0.027   0.000429
            2         8  SURF156       0.000   0.000021

       *** NODAL LOAD CALCULATION TIMES
         TYPE    NUMBER   ENAME      TOTAL CP  AVE CP

            1        64  SHELL181      0.001   0.000014
            2         8  SURF156       0.000   0.000004
     *** LOAD STEP     1   SUBSTEP     1  COMPLETED.    CUM ITER =      1
     *** TIME =   1.00000         TIME INC =   1.00000      NEW TRIANG MATRIX


     *** MAPDL BINARY FILE STATISTICS
      BUFFER SIZE USED= 16384
            0.062 MB WRITTEN ON ELEMENT MATRIX FILE: file.emat
            0.125 MB WRITTEN ON ASSEMBLED MATRIX FILE: file.full
            0.562 MB WRITTEN ON RESULTS FILE: file.rst



.. GENERATED FROM PYTHON SOURCE LINES 207-208

Show the displacements in postprocessing.

.. GENERATED FROM PYTHON SOURCE LINES 208-212

.. code-block:: Python

    mapdl.post1()
    mapdl.set("last")
    mapdl.post_processing.plot_nodal_displacement(component="NORM")








.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_004.png
        :alt: 01 pymapdl workflow
        :srcset: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_004.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyacp/pyacp/doc/source/examples/workflows/images/sphx_glr_01-pymapdl-workflow_004.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 213-214

Download the RST file for composite-specific postprocessing.

.. GENERATED FROM PYTHON SOURCE LINES 214-218

.. code-block:: Python

    rstfile_name = f"{mapdl.jobname}.rst"
    rst_file_local_path = WORKING_DIR / rstfile_name
    mapdl.download(rstfile_name, str(WORKING_DIR))





.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    ['file.rst']



.. GENERATED FROM PYTHON SOURCE LINES 219-224

Postprocessing with PyDPF - Composites
--------------------------------------

To postprocess the results, you must configure the imports, connect to the
PyDPF - Composites server, and load its plugin.

.. GENERATED FROM PYTHON SOURCE LINES 224-234

.. code-block:: Python


    from ansys.dpf.composites.composite_model import CompositeModel
    from ansys.dpf.composites.constants import FailureOutput
    from ansys.dpf.composites.data_sources import (
        CompositeDefinitionFiles,
        ContinuousFiberCompositesFiles,
    )
    from ansys.dpf.composites.failure_criteria import CombinedFailureCriterion, MaxStrainCriterion
    from ansys.dpf.composites.server_helpers import connect_to_or_start_server








.. GENERATED FROM PYTHON SOURCE LINES 235-237

Connect to the server. The ``connect_to_or_start_server`` function
automatically loads the composites plugin.

.. GENERATED FROM PYTHON SOURCE LINES 237-239

.. code-block:: Python

    dpf_server = connect_to_or_start_server()








.. GENERATED FROM PYTHON SOURCE LINES 240-241

Specify the combined failure criterion.

.. GENERATED FROM PYTHON SOURCE LINES 241-248

.. code-block:: Python

    max_strain = MaxStrainCriterion()

    cfc = CombinedFailureCriterion(
        name="Combined Failure Criterion",
        failure_criteria=[max_strain],
    )








.. GENERATED FROM PYTHON SOURCE LINES 249-250

Create the composite model and configure its input.

.. GENERATED FROM PYTHON SOURCE LINES 250-264

.. code-block:: Python

    composite_definitions_file = WORKING_DIR / "ACPCompositeDefinitions.h5"
    model.export_shell_composite_definitions(composite_definitions_file)
    materials_file = WORKING_DIR / "materials.xml"
    model.export_materials(materials_file)
    composite_model = CompositeModel(
        composite_files=ContinuousFiberCompositesFiles(
            rst=rst_file_local_path,
            composite={"shell": CompositeDefinitionFiles(composite_definitions_file)},
            engineering_data=materials_file,
        ),
        default_unit_system=dpf_integration_helpers.get_dpf_unit_system(model.unit_system),
        server=dpf_server,
    )








.. GENERATED FROM PYTHON SOURCE LINES 265-266

Evaluate and plot the failure criteria.

.. GENERATED FROM PYTHON SOURCE LINES 266-270

.. code-block:: Python

    output_all_elements = composite_model.evaluate_failure_criteria(cfc)
    irf_field = output_all_elements.get_field({"failure_label": FailureOutput.FAILURE_VALUE})
    irf_field.plot()








.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_005.png
        :alt: 01 pymapdl workflow
        :srcset: /examples/workflows/images/sphx_glr_01-pymapdl-workflow_005.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyacp/pyacp/doc/source/examples/workflows/images/sphx_glr_01-pymapdl-workflow_005.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 271-272

Release the composite model to close the open streams to the result file.

.. GENERATED FROM PYTHON SOURCE LINES 272-276

.. code-block:: Python

    composite_model = None  # type: ignore

    # Close MAPDL instance
    mapdl.exit()








.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 9.711 seconds)


.. _sphx_glr_download_examples_workflows_01-pymapdl-workflow.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: 01-pymapdl-workflow.ipynb <01-pymapdl-workflow.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: 01-pymapdl-workflow.py <01-pymapdl-workflow.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: 01-pymapdl-workflow.zip <01-pymapdl-workflow.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_