diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..600de368 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: e1973c1c5a5129b1378434ac5df37914 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 00000000..f1ba22de --- /dev/null +++ b/404.html @@ -0,0 +1,516 @@ + + + + + + + + + + Page not found — PyMechanical Embedding Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+ + +
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
+ + + + + +
+ +

Page not found

+ +Unfortunately we couldn't find the content you were looking for. + +
+ + + + + +
+ + + +
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..91f0496d --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +embedding.examples.mechanical.docs.pyansys.com \ No newline at end of file diff --git a/_downloads/027d13126900b9c00cdef4f3cfa66ff9/steady_state_thermal_analysis.py b/_downloads/027d13126900b9c00cdef4f3cfa66ff9/steady_state_thermal_analysis.py new file mode 100644 index 00000000..88bc727d --- /dev/null +++ b/_downloads/027d13126900b9c00cdef4f3cfa66ff9/steady_state_thermal_analysis.py @@ -0,0 +1,493 @@ +""" .. _ref_steady_state_thermal: + +Steady state thermal analysis +----------------------------- + +This example problem demonstrates the use of a +simple steady-state thermal analysis to determine the temperatures, +thermal gradients, heat flow rates, and heat fluxes that are caused +by thermal loads that do not vary over time. A steady-state thermal +analysis calculates the effects of steady thermal loads on a system +or component, in this example, a long bar model. +""" + +# %% +# Import necessary libraries +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +import os + +from PIL import Image +import ansys.mechanical.core as mech +from ansys.mechanical.core.examples import delete_downloads, download_file +from matplotlib import image as mpimg +from matplotlib import pyplot as plt +from matplotlib.animation import FuncAnimation + +# %% +# Embed mechanical and set global variables + +app = mech.App(version=241) +globals().update(mech.global_variables(app, True)) +print(app) + +cwd = os.path.join(os.getcwd(), "out") + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +# %% +# Configure graphics for image export +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso) +ExtAPI.Graphics.Camera.SetFit() +image_export_format = GraphicsImageExportFormat.PNG +settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() +settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution +settings_720p.Background = GraphicsBackgroundType.White +settings_720p.Width = 1280 +settings_720p.Height = 720 +settings_720p.CurrentGraphicsDisplay = False + + +# %% +# Download and import geometry +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Download the geometry file. + +geometry_path = download_file("LONGBAR.x_t", "pymechanical", "embedding") + +# %% +# Import the geometry + +geometry_import_group = Model.GeometryImportGroup +geometry_import = geometry_import_group.AddGeometryImport() +geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic +) +geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() +geometry_import_preferences.ProcessNamedSelections = True +geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences +) + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p +) +display_image("geometry.png") + + +# %% +# Add steady state thermal analysis +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Model.AddSteadyStateThermalAnalysis() +ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS +STAT_THERM = DataModel.Project.Model.Analyses[0] +MODEL = DataModel.Project.Model +CS = MODEL.CoordinateSystems +LCS1 = CS.AddCoordinateSystem() +LCS1.OriginX = Quantity("0 [m]") + +LCS2 = CS.AddCoordinateSystem() +LCS2.OriginX = Quantity("0 [m]") +LCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalY + +# %% +# Create named selections and construction geometry +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Create named selections + +FACE1 = DataModel.Project.Model.AddNamedSelection() +FACE1.ScopingMethod = GeometryDefineByType.Worksheet +FACE1.Name = "Face1" +GEN_CRT1 = FACE1.GenerationCriteria +CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT1.Active = True +CRT1.Action = SelectionActionType.Add +CRT1.EntityType = SelectionType.GeoFace +CRT1.Criterion = SelectionCriterionType.LocationZ +CRT1.Operator = SelectionOperatorType.Equal +CRT1.Value = Quantity("20 [m]") +GEN_CRT1.Add(CRT1) +FACE1.Activate() +FACE1.Generate() + +FACE2 = DataModel.Project.Model.AddNamedSelection() +FACE2.ScopingMethod = GeometryDefineByType.Worksheet +FACE2.Name = "Face2" +GEN_CRT2 = FACE2.GenerationCriteria +CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT1.Active = True +CRT1.Action = SelectionActionType.Add +CRT1.EntityType = SelectionType.GeoFace +CRT1.Criterion = SelectionCriterionType.LocationZ +CRT1.Operator = SelectionOperatorType.Equal +CRT1.Value = Quantity("0 [m]") +GEN_CRT2.Add(CRT1) +FACE2.Activate() +FACE2.Generate() + +FACE3 = DataModel.Project.Model.AddNamedSelection() +FACE3.ScopingMethod = GeometryDefineByType.Worksheet +FACE3.Name = "Face3" +GEN_CRT3 = FACE3.GenerationCriteria +CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT1.Active = True +CRT1.Action = SelectionActionType.Add +CRT1.EntityType = SelectionType.GeoFace +CRT1.Criterion = SelectionCriterionType.LocationX +CRT1.Operator = SelectionOperatorType.Equal +CRT1.Value = Quantity("1 [m]") +GEN_CRT3.Add(CRT1) +CRT2 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT2.Active = True +CRT2.Action = SelectionActionType.Filter +CRT2.EntityType = SelectionType.GeoFace +CRT2.Criterion = SelectionCriterionType.LocationY +CRT2.Operator = SelectionOperatorType.Equal +CRT2.Value = Quantity("2 [m]") +GEN_CRT3.Add(CRT2) +CRT3 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT3.Active = True +CRT3.Action = SelectionActionType.Filter +CRT3.EntityType = SelectionType.GeoFace +CRT3.Criterion = SelectionCriterionType.LocationZ +CRT3.Operator = SelectionOperatorType.Equal +CRT3.Value = Quantity("12 [m]") +GEN_CRT3.Add(CRT3) +CRT4 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT4.Active = True +CRT4.Action = SelectionActionType.Add +CRT4.EntityType = SelectionType.GeoFace +CRT4.Criterion = SelectionCriterionType.LocationZ +CRT4.Operator = SelectionOperatorType.Equal +CRT4.Value = Quantity("4.5 [m]") +GEN_CRT3.Add(CRT4) +CRT5 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() +CRT5.Active = True +CRT5.Action = SelectionActionType.Filter +CRT5.EntityType = SelectionType.GeoFace +CRT5.Criterion = SelectionCriterionType.LocationY +CRT5.Operator = SelectionOperatorType.Equal +CRT5.Value = Quantity("2 [m]") +GEN_CRT3.Add(CRT5) +FACE3.Activate() +FACE3.Generate() + +BODY1 = DataModel.Project.Model.AddNamedSelection() +BODY1.ScopingMethod = GeometryDefineByType.Worksheet +BODY1.Name = "Body1" +BODY1.GenerationCriteria.Add(None) +BODY1.GenerationCriteria[0].EntityType = SelectionType.GeoFace +BODY1.GenerationCriteria[0].Criterion = SelectionCriterionType.LocationZ +BODY1.GenerationCriteria[0].Operator = SelectionOperatorType.Equal +BODY1.GenerationCriteria[0].Value = Quantity("1 [m]") +BODY1.GenerationCriteria.Add(None) +BODY1.GenerationCriteria[1].EntityType = SelectionType.GeoFace +BODY1.GenerationCriteria[1].Criterion = SelectionCriterionType.LocationZ +BODY1.GenerationCriteria[1].Operator = SelectionOperatorType.Equal +BODY1.GenerationCriteria[1].Value = Quantity("1 [m]") +BODY1.Generate() + +# %% +# Create construction geometry + +CONST_GEOM = MODEL.AddConstructionGeometry() +Path = CONST_GEOM.AddPath() +Path.StartYCoordinate = Quantity(2, "m") +Path.StartZCoordinate = Quantity(20, "m") +Path.StartZCoordinate = Quantity(20, "m") +Path.EndXCoordinate = Quantity(2, "m") +SURF = CONST_GEOM.AddSurface() +SURF.CoordinateSystem = LCS2 +CONST_GEOM.UpdateAllSolids() + +# %% +# Define boundary condition and add results +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Add temperature boundary conditions + +TEMP = STAT_THERM.AddTemperature() +TEMP.Location = FACE1 +TEMP.Magnitude.Output.DiscreteValues = [Quantity("22[C]"), Quantity("30[C]")] + +TEMP2 = STAT_THERM.AddTemperature() +TEMP2.Location = FACE2 +TEMP2.Magnitude.Output.DiscreteValues = [Quantity("22[C]"), Quantity("60[C]")] + +TEMP.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), +] +TEMP.Magnitude.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("30[C]"), + Quantity("40[C]"), +] + +TEMP2.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), +] +TEMP2.Magnitude.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("50[C]"), + Quantity("80[C]"), +] + +# %% +# Add radiation + +RAD = STAT_THERM.AddRadiation() +RAD.Location = FACE3 +RAD.AmbientTemperature.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), +] +RAD.AmbientTemperature.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("30[C]"), + Quantity("40[C]"), +] +RAD.Correlation = RadiationType.SurfaceToSurface + +# %% +# Analysis settings + +ANLYS_SET = STAT_THERM.AnalysisSettings +ANLYS_SET.NumberOfSteps = 2 +ANLYS_SET.CalculateVolumeEnergy = True + +STAT_THERM.Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "BC_steadystate.png"), image_export_format, settings_720p +) +display_image("BC_steadystate.png") + +# %% +# Add results +# ~~~~~~~~~~~ +# Temperature + +STAT_THERM_SOLN = DataModel.Project.Model.Analyses[0].Solution +TEMP_RST = STAT_THERM_SOLN.AddTemperature() +TEMP_RST.By = SetDriverStyle.MaximumOverTime + + +TEMP_RST2 = STAT_THERM_SOLN.AddTemperature() +TEMP_RST2.Location = BODY1 + +TEMP_RST3 = STAT_THERM_SOLN.AddTemperature() +TEMP_RST3.Location = Path + +TEMP_RST4 = STAT_THERM_SOLN.AddTemperature() +TEMP_RST4.Location = SURF + +# %% +# Total and directional heat flux + +TOT_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux() +DIR_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux() +DIR_HFLUX.ThermalResultType = TotalOrDirectional.Directional +DIR_HFLUX.NormalOrientation = NormalOrientationType.ZAxis + +LCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalZ +DIR_HFLUX.CoordinateSystem = LCS2 +DIR_HFLUX.DisplayOption = ResultAveragingType.Averaged + +# %% +# Thermal error + +THERM_ERROR = STAT_THERM_SOLN.AddThermalError() + +# %% +# Temperature probe + +TEMP_PROBE = STAT_THERM_SOLN.AddTemperatureProbe() +TEMP_PROBE.GeometryLocation = FACE1 +TEMP_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem +TEMP_PROBE.CoordinateSystemSelection = LCS2 + +# %% +# Heat flux probe + +HFLUX_PROBE = STAT_THERM_SOLN.AddHeatFluxProbe() +HFLUX_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem +HFLUX_PROBE.CoordinateSystemSelection = LCS2 +HFLUX_PROBE.ResultSelection = ProbeDisplayFilter.ZAxis + +# %% +# Reaction probe + +ANLYS_SET.NodalForces = OutputControlsNodalForcesType.Yes +REAC_PROBE = STAT_THERM_SOLN.AddReactionProbe() +REAC_PROBE.LocationMethod = LocationDefinitionMethod.GeometrySelection +REAC_PROBE.GeometryLocation = FACE1 + +# %% +# Radiation probe + +Rad_Probe = STAT_THERM_SOLN.AddRadiationProbe() +Rad_Probe.BoundaryConditionSelection = RAD +Rad_Probe.ResultSelection = ProbeDisplayFilter.All + + +# %% +# Solve +# ~~~~~ + +STAT_THERM_SOLN.Solve(True) + +# sphinx_gallery_start_ignore +assert str(STAT_THERM_SOLN.Status) == "Done", "Solution status is not 'Done'" +# sphinx_gallery_end_ignore + +# %% +# Messages +# ~~~~~~~~ + +Messages = ExtAPI.Application.Messages +if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") +else: + print("No [Info]/[Warning]/[Error] Messages") + +# Display results +# ~~~~~~~~~~~~~~~ +# Total body temperature + +Tree.Activate([TEMP_RST]) +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp.png"), image_export_format, settings_720p +) +display_image("temp.png") + +# %% +# Temperature on part of the body + +Tree.Activate([TEMP_RST2]) +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp2.png"), image_export_format, settings_720p +) +display_image("temp2.png") + +# %% +# Temperature distribution along the specific path + +Tree.Activate([TEMP_RST3]) +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp3.png"), image_export_format, settings_720p +) +display_image("temp3.png") + +# %% +# Temperature of bottom surface + +Tree.Activate([TEMP_RST4]) +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp4.png"), image_export_format, settings_720p +) +display_image("temp4.png") + +# %% +# Export directional heat flux animation +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Directional heat flux + +Tree.Activate([DIR_HFLUX]) +animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF +) +settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() +settings_720p.Width = 1280 +settings_720p.Height = 720 + +DIR_HFLUX.ExportAnimation( + os.path.join(cwd, "DirectionalHeatFlux.gif"), animation_export_format, settings_720p +) +gif = Image.open(os.path.join(cwd, "DirectionalHeatFlux.gif")) +fig, ax = plt.subplots(figsize=(16, 9)) +ax.axis("off") +img = ax.imshow(gif.convert("RGBA")) + + +def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + +ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True +) +plt.show() + +# %% +# Display output file from solve +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + +solve_path = STAT_THERM.WorkingDir +solve_out_path = os.path.join(solve_path, "solve.out") +if solve_out_path: + write_file_contents_to_console(solve_out_path) + +# %% +# Project tree +# ~~~~~~~~~~~~ + + +def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + +root_node = DataModel.Project +print_tree(root_node) + +# %% +# Cleanup +# ~~~~~~~ +# Save project + +app.save(os.path.join(cwd, "steady_state_thermal.mechdat")) +app.new() + +# %% +# Delete example files + +delete_downloads() diff --git a/_downloads/19cb8643577ec82e3d487802dec4548c/topology_optimization_cantilever_beam.ipynb b/_downloads/19cb8643577ec82e3d487802dec4548c/topology_optimization_cantilever_beam.ipynb new file mode 100644 index 00000000..e123a327 --- /dev/null +++ b/_downloads/19cb8643577ec82e3d487802dec4548c/topology_optimization_cantilever_beam.ipynb @@ -0,0 +1,345 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Topology optimization of a simple cantilever beam\n\nThis example demonstrates the structural topology optimization of a simple\ncantilever beam. The structural analysis is performed with basic constraints and\nload, which is then transferred to the topology optimization.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import necessary libraries\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import delete_downloads, download_file\nfrom matplotlib import image as mpimg\nfrom matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Embed Mechanical and set global variables\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app = mech.App(version=241)\nglobals().update(mech.global_variables(app, True))\nprint(app)\n\n\ndef display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()\n\n\ncwd = os.path.join(os.getcwd(), \"out\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Configure graphics for image export\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front)\nimage_export_format = GraphicsImageExportFormat.PNG\nsettings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings()\nsettings_720p.Resolution = GraphicsResolutionType.EnhancedResolution\nsettings_720p.Background = GraphicsBackgroundType.White\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\nsettings_720p.CurrentGraphicsDisplay = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import structural analsys\nDownload ``.mechdat`` file\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "structural_mechdat_file = download_file(\n \"cantilever.mechdat\", \"pymechanical\", \"embedding\"\n)\napp.open(structural_mechdat_file)\nSTRUCT = ExtAPI.DataModel.Project.Model.Analyses[0]\n\nSTRUCT_SLN = STRUCT.Solution\nSTRUCT_SLN.Solve(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display structural analsys results\nTotal deformation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STRUCT_SLN.Children[1].Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"total_deformation.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"total_deformation.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equivalent stress\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STRUCT_SLN.Children[2].Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"equivalent_stress.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"equivalent_stress.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Topology optimization\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Set MKS unit system\n\nExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS\n\n# Store all main tree nodes as variables\n\nGEOM = ExtAPI.DataModel.Project.Model.Geometry\nMSH = ExtAPI.DataModel.Project.Model.Mesh\nNS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections\nCONN_GRP = ExtAPI.DataModel.Project.Model.Connections\nMY_TOTAL_VOL = GEOM.Volume.Value\nMY_TOTAL_MA = GEOM.Mass.Value\n\n# Get structural analysis and link to topology optimization\n\nTOPO_OPT = ExtAPI.DataModel.Project.Model.AddTopologyOptimizationAnalysis()\nTOPO_OPT.TransferDataFrom(STRUCT)\n\n\n# Set ``None`` for optimization region boundary condition exclusion region\n# Optimization region\n\nOPT_REG = TOPO_OPT.Children[1]\n# OPT_REG.BoundaryCondition=BoundaryConditionType.None\n# Using ``getattr`` because Python.Net does not support the ``None`` enum\nOPT_REG.BoundaryCondition = BoundaryConditionType.AllLoadsAndSupports\n\n# Insert volume response constraint object for topology optimization\n# Delete mass response constraint\n\nMASS_CONSTRN = TOPO_OPT.Children[3]\nMASS_CONSTRN.Delete()\n\n# Add volume response constraint\n\nVOL_CONSTRN = TOPO_OPT.AddVolumeConstraint()\n# VOL_CONSTRN.DefineBy=ResponseConstraintDefineBy.Constant\n# VOL_CONSTRN.PercentageToRetain=50\n\n# Insert member size manufacturing constraint\n\nMEM_SIZE_MFG_CONSTRN = TOPO_OPT.AddMemberSizeManufacturingConstraint()\nMEM_SIZE_MFG_CONSTRN.Minimum = ManuMemberSizeControlledType.Manual\nMEM_SIZE_MFG_CONSTRN.MinSize = Quantity(\"2.4 [m]\")\n\n# # Store coordinate system ID for use in symmetry manufacturing constraint\n# Coordinate_Systems = DataModel.Project.Model.CoordinateSystems\n# coord_sys7 = Coordinate_Systems.Children[7]\n\n# # Insert symmetry manufacturing constraint\n# SYMM_MFG_CONSTRN = TOPO_OPT.AddSymmetryManufacturingConstraint()\n# SYMM_MFG_CONSTRN.CoordinateSystem = coord_sys7\n\nTOPO_OPT.Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"boundary_conditions.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"boundary_conditions.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TOPO_OPT_SLN = TOPO_OPT.Solution\nTOPO_OPT_SLN.Solve(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Messages\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Messages = ExtAPI.Application.Messages\nif Messages:\n for message in Messages:\n print(f\"[{message.Severity}] {message.DisplayString}\")\nelse:\n print(\"No [Info]/[Warning]/[Error] Messages\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TOPO_OPT_SLN.Children[1].Activate()\nTOPO_DENS = TOPO_OPT_SLN.Children[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add smoothing to the STL\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TOPO_DENS.AddSmoothing()\nTOPO_OPT.Solution.EvaluateAllResults()\nTOPO_DENS.Children[0].Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"topo_opitimized_smooth.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"topo_opitimized_smooth.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Export animation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "animation_export_format = (\n Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF\n)\nsettings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings()\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\n\nTOPO_DENS.ExportAnimation(\n os.path.join(cwd, \"Topo_opitimized.gif\"), animation_export_format, settings_720p\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Review the results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Print topology density results\nprint(\"Topology Density Results\")\nprint(\"Minimum Density: \", TOPO_DENS.Minimum)\nprint(\"Maximum Density: \", TOPO_DENS.Maximum)\nprint(\"Iteration Number: \", TOPO_DENS.IterationNumber)\nprint(\"Original Volume: \", TOPO_DENS.OriginalVolume.Value)\nprint(\"Final Volume: \", TOPO_DENS.FinalVolume.Value)\nprint(\"Percent Volume of Original: \", TOPO_DENS.PercentVolumeOfOriginal)\nprint(\"Original Mass: \", TOPO_DENS.OriginalMass.Value)\nprint(\"Final Mass: \", TOPO_DENS.FinalMass.Value)\nprint(\"Percent Mass of Original: \", TOPO_DENS.PercentMassOfOriginal)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display output file from solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def write_file_contents_to_console(path):\n \"\"\"Write file contents to console.\"\"\"\n with open(path, \"rt\") as file:\n for line in file:\n print(line, end=\"\")\n\n\nsolve_path = TOPO_OPT.WorkingDir\nsolve_out_path = os.path.join(solve_path, \"solve.out\")\nif solve_out_path:\n write_file_contents_to_console(solve_out_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Project tree\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def print_tree(node, indentation=\"\"):\n print(f\"{indentation}\u251c\u2500\u2500 {node.Name}\")\n\n if (\n hasattr(node, \"Children\")\n and node.Children is not None\n and node.Children.Count > 0\n ):\n for child in node.Children:\n print_tree(child, indentation + \"| \")\n\n\nroot_node = DataModel.Project\nprint_tree(root_node)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\nSave project\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app.save(os.path.join(cwd, \"cantilever_beam_topology_optimization.mechdat\"))\napp.new()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete the example files\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "delete_downloads()" + ] + } + ], + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/1ddcf3cbf35b98ad7b43386adb1b92ff/Rotor_Blade_Inverse_solve.ipynb b/_downloads/1ddcf3cbf35b98ad7b43386adb1b92ff/Rotor_Blade_Inverse_solve.ipynb new file mode 100644 index 00000000..002f19c6 --- /dev/null +++ b/_downloads/1ddcf3cbf35b98ad7b43386adb1b92ff/Rotor_Blade_Inverse_solve.ipynb @@ -0,0 +1,428 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Inverse-Solving analysis of a rotor fan blade with disk\n\nThis example demonstrates the inverse-solving analysis of a rotor fan blade with disk.\nThe NASA Rotor 67 fan bladed disk is a subsystem of a turbo fan's compressor set used\nin aerospace engine applications. This sector model, representing a challenging industrial\nexample for which the detailed geometry and flow information is available in the public\ndomain, consists of a disk and a fan blade with a sector angle of 16.364 degrees.\nThe sector model represents the running condition or hot geometry of the blade. It is\nalready optimized at the running condition under loading. The primary objective is to\nobtain the cold geometry (for manufacturing) from the given hot geometry using inverse solving.\n\n- ELEMENTS: SOLID186\n- MATERIAL: Elastic Material\n- CONTACT: MPC bonded contact pair\n\nTo highlight Mechanical APDL inverse-solving technology, this example problem does not\ninvolve a cyclic symmetry analysis.\n\n**Material Properties:**\n\n+------------+--------+----------------+----------------+---------------------------+\n| Temperature| Density| Young's Modulus| Poisson's Ratio| Coeff of Thermal Expansion|\n+============+========+================+================+===========================+\n| 22 deg C | 7840 | 2.2e11 Pa | 0.27 | 1.2e-5 |\n+------------+--------+----------------+----------------+---------------------------+\n| 200 deg C | 7740 | 2e11 Pa | 0.28 | 1.3e-5 |\n+------------+--------+----------------+----------------+---------------------------+\n| 300 deg C | 7640 | 1.9e11 Pa | 0.29 | 1.4e-5 |\n+------------+--------+----------------+----------------+---------------------------+\n| 600 deg C | 7540 | 1.8e11 Pa | 0.30 | 1.5e-5 |\n+------------+--------+----------------+----------------+---------------------------+\n\n\n**Following loads are considered:**\n\nThe rotational velocity (CGOMGA,0,0,1680) is applied along the global Z axis. The reference\ntemperature is maintained at 22\u00b0C, and the temperature loading is applied on the blade (BF)\n\n**Expected results:**\n\nInverse-Solving Analysis: A nonlinear static analysis using inverse solving\n(INVOPT,ON) is performed on the hot geometry of the model to obtain the cold geometry\n(for manufacturing) and the stress/strain results on the hot geometry.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import delete_downloads, download_file\nfrom matplotlib import image as mpimg\nfrom matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Embed mechanical and set global variables\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app = mech.App(version=241)\nglobals().update(mech.global_variables(app, True))\nprint(app)\n\ncwd = os.path.join(os.getcwd(), \"out\")\n\n\ndef display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download required files\nDownload the geometry file\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_path = download_file(\n \"example_10_td_055_Rotor_Blade_Geom.pmdb\", \"pymechanical\", \"embedding\"\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Download the material file\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mat_path = download_file(\n \"example_10_td_055_Rotor_Blade_Mat_File.xml\", \"pymechanical\", \"embedding\"\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Download the CFX pressure data\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "cfx_data_path = download_file(\n \"example_10_CFX_ExportResults_FT_10P_EO2.csv\", \"pymechanical\", \"embedding\"\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure graphics for image export\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "cwd = os.path.join(os.getcwd(), \"out\")\nExtAPI.Graphics.Camera.SetSpecificViewOrientation(\n Ansys.Mechanical.DataModel.Enums.ViewOrientationType.Iso\n)\nExtAPI.Graphics.Camera.SetFit()\nimage_export_format = Ansys.Mechanical.DataModel.Enums.GraphicsImageExportFormat.PNG\nsettings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings()\nsettings_720p.Resolution = (\n Ansys.Mechanical.DataModel.Enums.GraphicsResolutionType.EnhancedResolution\n)\nsettings_720p.Background = Ansys.Mechanical.DataModel.Enums.GraphicsBackgroundType.White\nsettings_720p.Width = 1280\n# settings_720p.Capture = Ansys.Mechanical.DataModel.Enums.GraphicsCaptureType.ImageOnly\nsettings_720p.Height = 720\nsettings_720p.CurrentGraphicsDisplay = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import geometry\nReads geometry file and display\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_import_group = Model.GeometryImportGroup\ngeometry_import = geometry_import_group.AddGeometryImport()\ngeometry_import_format = (\n Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic\n)\ngeometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()\ngeometry_import_preferences.ProcessNamedSelections = True\ngeometry_import_preferences.NamedSelectionKey = \"\"\ngeometry_import_preferences.ProcessMaterialProperties = True\ngeometry_import_preferences.ProcessCoordinateSystems = True\ngeometry_import.Import(\n geometry_path, geometry_import_format, geometry_import_preferences\n)\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"geometry.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"geometry.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assign materials\nImport material from xml file and assign it to bodies\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "materials = ExtAPI.DataModel.Project.Model.Materials\nmaterials.Import(mat_path)\n\nPRT1 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Component2\\Rotor11\"][\n 0\n]\nPRT2 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Component3\"][0]\nPRT2_Blade_1 = PRT2.Children[0]\nPRT2_Blade_2 = PRT2.Children[1]\nPRT2_Blade_3 = PRT2.Children[2]\nPRT1.Material = \"MAT1 (Setup, File1)\"\nPRT2_Blade_1.Material = \"MAT1 (Setup, File1)\"\nPRT2_Blade_2.Material = \"MAT1 (Setup, File1)\"\nPRT2_Blade_3.Material = \"MAT1 (Setup, File1)\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define units system and store variables\nSelect MKS units\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ExtAPI.Application.ActiveUnitSystem = (\n Ansys.ACT.Interfaces.Common.MechanicalUnitSystem.StandardMKS\n)\n\n# Store all main tree nodes as variables\nMODEL = ExtAPI.DataModel.Project.Model\nGEOM = ExtAPI.DataModel.Project.Model.Geometry\nMESH = ExtAPI.DataModel.Project.Model.Mesh\nMAT_GRP = ExtAPI.DataModel.Project.Model.Materials\nCS = ExtAPI.DataModel.Project.Model.CoordinateSystems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define named selection\nCreate NS for named selection\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "NS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections\nBLADE_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade\"][0]\nBLADE_SURF_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade_Surf\"][\n 0\n]\nFIX_SUPPORT_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Fix_Support\"\n][0]\nBLADE_HUB_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade_Hub\"][0]\nHUB_CONTACT_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Hub_Contact\"\n][0]\nBLADE_TARGET_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade_Target\"\n][0]\nHub_Low_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Hub_Low\"][0]\nHub_High_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Hub_High\"][0]\nBLADE1_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade1\"][0]\nBLADE1_Source_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade1_Source\"\n][0]\nBLADE1_TARGET_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade1_Target\"\n][0]\nBLADE2_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade2\"][0]\nBLADE2_Source_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade2_Source\"\n][0]\nBLADE2_TARGET_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade2_Target\"\n][0]\nBLADE3_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade3\"][0]\nBLADE3_Source_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade3_Source\"\n][0]\nBLADE3_TARGET_NS = [\n x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Blade3_Target\"\n][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define coordinate system\nCreate cylindrical coordinate system\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "coordinate_systems = Model.CoordinateSystems\ncoord_system = coordinate_systems.AddCoordinateSystem()\ncoord_system.CoordinateSystemType = (\n Ansys.ACT.Interfaces.Analysis.CoordinateSystemTypeEnum.Cylindrical\n)\ncoord_system.OriginDefineBy = CoordinateSystemAlignmentType.Component\ncoord_system.OriginDefineBy = CoordinateSystemAlignmentType.Fixed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define contacts\nDelete existing contacts and define connections\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "connections = ExtAPI.DataModel.Project.Model.Connections\n\n# Delete existing contacts\n# for connection in connections.Children:\n# if connection.DataModelObjectCategory==DataModelObjectCategory.ConnectionGroup:\n# connection.Delete()\n\n# Define connections\n\nCONN_GRP = ExtAPI.DataModel.Project.Model.Connections\nCONT_REG1 = CONN_GRP.AddContactRegion()\nCONT_REG1.SourceLocation = NS_GRP.Children[6]\nCONT_REG1.TargetLocation = NS_GRP.Children[5]\nCONT_REG1.Behavior = ContactBehavior.AutoAsymmetric\nCONT_REG1.ContactFormulation = ContactFormulation.MPC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define mesh settings and generate mesh\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MSH = Model.Mesh\nMSH.ElementSize = Quantity(0.004, \"m\")\nMSH.UseAdaptiveSizing = False\nMSH.MaximumSize = Quantity(0.004, \"m\")\nMSH.ShapeChecking = 0\nautomatic_method_Hub = MSH.AddAutomaticMethod()\nautomatic_method_Hub.Location = NS_GRP.Children[0]\nautomatic_method_Hub.Method = MethodType.Sweep\nautomatic_method_Hub.SweepNumberDivisions = 6\n\nmatch_control_Hub = MSH.AddMatchControl()\nmatch_control_Hub.LowNamedSelection = NS_GRP.Children[7]\nmatch_control_Hub.HighNamedSelection = NS_GRP.Children[8]\ncyc_coordinate_system = coordinate_systems.Children[1]\nmatch_control_Hub.RotationAxis = cyc_coordinate_system\n\nsizing_Blade = MSH.AddSizing()\nselection = NS_GRP.Children[5]\nsizing_Blade.Location = selection\n# sizing_Blade.ElementSize = Quantity(1e-3, \"m\")\nsizing_Blade.ElementSize = Quantity(1e-2, \"m\")\nsizing_Blade.CaptureCurvature = True\nsizing_Blade.CurvatureNormalAngle = Quantity(0.31, \"rad\")\n# sizing_Blade.LocalMinimumSize = Quantity(0.00025, \"m\")\nsizing_Blade.LocalMinimumSize = Quantity(0.0005, \"m\")\n\nautomatic_method_Blade1 = MSH.AddAutomaticMethod()\nselection = NS_GRP.Children[9]\nautomatic_method_Blade1.Location = selection\nautomatic_method_Blade1.Method = MethodType.Sweep\nautomatic_method_Blade1.SourceTargetSelection = 2\nselection = NS_GRP.Children[10]\nautomatic_method_Blade1.SourceLocation = selection\nselection = NS_GRP.Children[11]\nautomatic_method_Blade1.TargetLocation = selection\nautomatic_method_Blade1.SweepNumberDivisions = 5\n\nautomatic_method_Blade2 = MSH.AddAutomaticMethod()\nselection = NS_GRP.Children[12]\nautomatic_method_Blade2.Location = selection\nautomatic_method_Blade2.Method = MethodType.Sweep\nautomatic_method_Blade2.SourceTargetSelection = 2\nselection = NS_GRP.Children[13]\nautomatic_method_Blade2.SourceLocation = selection\nselection = NS_GRP.Children[14]\nautomatic_method_Blade2.TargetLocation = selection\nautomatic_method_Blade2.SweepNumberDivisions = 5\n\nautomatic_method_Blade3 = MSH.AddAutomaticMethod()\nselection = NS_GRP.Children[15]\nautomatic_method_Blade3.Location = selection\nautomatic_method_Blade3.Method = MethodType.Sweep\nautomatic_method_Blade3.SourceTargetSelection = 2\nselection = NS_GRP.Children[16]\nautomatic_method_Blade3.SourceLocation = selection\nselection = NS_GRP.Children[17]\nautomatic_method_Blade3.TargetLocation = selection\nautomatic_method_Blade3.SweepNumberDivisions = 5\n\nMSH.GenerateMesh()\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"blade_mesh.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"blade_mesh.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define analysis settings\nSetup static structural settings with inverse solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Model.AddStaticStructuralAnalysis()\nSTAT_STRUC = Model.Analyses[0]\nANA_SETTINGS = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings\nANA_SETTINGS.NumberOfSteps = 2\nANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off\nANA_SETTINGS.NumberOfSubSteps = 20\n\nANA_SETTINGS.Activate()\nANA_SETTINGS.CurrentStepNumber = 2\nANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off\nANA_SETTINGS.NumberOfSubSteps = 20\n\nANA_SETTINGS.InverseOption = True\nANA_SETTINGS.LargeDeflection = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define boundary conditions\nApply rotational velocity\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ROT_VEL = STAT_STRUC.AddRotationalVelocity()\nROT_VEL.DefineBy = LoadDefineBy.Components\nROT_VEL.ZComponent.Inputs[0].DiscreteValues = [\n Quantity(\"0 [s]\"),\n Quantity(\"1 [s]\"),\n Quantity(\"2 [s]\"),\n]\nROT_VEL.ZComponent.Output.DiscreteValues = [\n Quantity(\"0 [rad/s]\"),\n Quantity(\"1680 [rad/s]\"),\n Quantity(\"1680 [rad/s]\"),\n]\n\n# Apply Fixed Support Condition\n\nFixed_Support = STAT_STRUC.AddFixedSupport()\nselection = NS_GRP.Children[3]\nFixed_Support.Location = selection\n\n# Apply Thermal load to the Structural Blade\n\nThermal_Condition = STAT_STRUC.AddThermalCondition()\nselection = NS_GRP.Children[1]\nThermal_Condition.Location = selection\nThermal_Condition.Magnitude.Inputs[0].DiscreteValues = [\n Quantity(\"0 [s]\"),\n Quantity(\"1 [s]\"),\n Quantity(\"2 [s]\"),\n]\nThermal_Condition.Magnitude.Output.DiscreteValues = [\n Quantity(\"22 [C]\"),\n Quantity(\"80 [C]\"),\n Quantity(\"80 [C]\"),\n]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import CFX pressure\nImport CFX pressure data and apply it to structural blade surface\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Imported_Load_Group = STAT_STRUC.AddImportedLoadExternalData()\n\nexternal_data_files = Ansys.Mechanical.ExternalData.ExternalDataFileCollection()\nexternal_data_files.SaveFilesWithProject = False\nexternal_data_file_1 = Ansys.Mechanical.ExternalData.ExternalDataFile()\nexternal_data_files.Add(external_data_file_1)\nexternal_data_file_1.Identifier = \"File1\"\nexternal_data_file_1.Description = \"\"\nexternal_data_file_1.IsMainFile = False\nexternal_data_file_1.FilePath = cfx_data_path\nexternal_data_file_1.ImportSettings = (\n Ansys.Mechanical.ExternalData.ImportSettingsFactory.GetSettingsForFormat(\n Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.ImportFormat.Delimited\n )\n)\nimport_settings = external_data_file_1.ImportSettings\nimport_settings.SkipRows = 17\nimport_settings.SkipFooter = 0\nimport_settings.Delimiter = \",\"\nimport_settings.AverageCornerNodesToMidsideNodes = False\nimport_settings.UseColumn(\n 0,\n Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.XCoordinate,\n \"m\",\n \"X Coordinate@A\",\n)\nimport_settings.UseColumn(\n 1,\n Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.YCoordinate,\n \"m\",\n \"Y Coordinate@B\",\n)\nimport_settings.UseColumn(\n 2,\n Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.ZCoordinate,\n \"m\",\n \"Z Coordinate@C\",\n)\nimport_settings.UseColumn(\n 3,\n Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.Pressure,\n \"Pa\",\n \"Pressure@D\",\n)\n\nImported_Load_Group.ImportExternalDataFiles(external_data_files)\nImported_Pressure = Imported_Load_Group.AddImportedPressure()\nselection = NS_GRP.Children[2]\nImported_Pressure.Location = selection\n\npressure_id = Imported_Pressure.ObjectId\nmech_command = f\"\"\"Imported_Pressure = ExtAPI.DataModel.GetObjectById({pressure_id})\nImported_Pressure.InternalObject.ExternalLoadAppliedBy = 1\n\"\"\"\napp.execute_script(mech_command)\nImported_Pressure.ImportLoad()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Postprocessing\nInsert results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "SOLN = STAT_STRUC.Solution\n\nTOT_DEF1 = SOLN.AddTotalDeformation()\nTOT_DEF1.DisplayTime = Quantity(\"1 [s]\")\n\nTOT_DEF2 = SOLN.AddTotalDeformation()\nTOT_DEF2.DisplayTime = Quantity(\"2 [s]\")\n\nEQV_STRS1 = SOLN.AddEquivalentStress()\nEQV_STRS1.DisplayTime = Quantity(\"1 [s]\")\n\nEQV_STRS2 = SOLN.AddEquivalentStress()\nEQV_STRS2.DisplayTime = Quantity(\"2 [s]\")\n\nEQV_TOT_STRN1 = SOLN.AddEquivalentTotalStrain()\nEQV_TOT_STRN1.DisplayTime = Quantity(\"1 [s]\")\n\nEQV_TOT_STRN2 = SOLN.AddEquivalentTotalStrain()\nEQV_TOT_STRN2.DisplayTime = Quantity(\"2 [s]\")\n\nTHERM_STRN1 = SOLN.AddThermalStrain()\nTHERM_STRN1.DisplayTime = Quantity(\"1 [s]\")\n\nTHERM_STRN2 = SOLN.AddThermalStrain()\nTHERM_STRN2.DisplayTime = Quantity(\"2 [s]\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run Solution\nSolve inverse analysis on blade model\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "SOLN.Solve(True)\nSTAT_STRUC_SS = SOLN.Status" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Postprocessing\nEvaluate results and export screenshots\n\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Total deformation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([TOT_DEF2])\nExtAPI.Graphics.ViewOptions.ResultPreference.ExtraModelDisplay = (\n Ansys.Mechanical.DataModel.MechanicalEnums.Graphics.ExtraModelDisplay.NoWireframe\n)\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"deformation.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"deformation.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equivalent stress\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([EQV_STRS2])\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"stress.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"stress.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\nSave project\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app.save(os.path.join(cwd, \"blade_inverse.mechdat\"))\napp.new()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete example file\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "delete_downloads()" + ] + } + ], + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/5b4b02be924a6fcc365cfd7eebd4efc3/valve.ipynb b/_downloads/5b4b02be924a6fcc365cfd7eebd4efc3/valve.ipynb new file mode 100644 index 00000000..72650c73 --- /dev/null +++ b/_downloads/5b4b02be924a6fcc365cfd7eebd4efc3/valve.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Basic Valve Implementation\n\nThis example demonstrates a basic implementation of a valve in Python.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import necessary libraries\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n\nfrom PIL import Image\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import delete_downloads, download_file\nfrom matplotlib import image as mpimg\nfrom matplotlib import pyplot as plt\nfrom matplotlib.animation import FuncAnimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Embed mechanical and set global variables\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app = mech.App(version=241)\nglobals().update(mech.global_variables(app, True))\nprint(app)\n\ncwd = os.path.join(os.getcwd(), \"out\")\n\n\ndef display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure graphics for image export\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso)\nimage_export_format = GraphicsImageExportFormat.PNG\nsettings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings()\nsettings_720p.Resolution = GraphicsResolutionType.EnhancedResolution\nsettings_720p.Background = GraphicsBackgroundType.White\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\nsettings_720p.CurrentGraphicsDisplay = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download geometry and import\nDownload geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_path = download_file(\"Valve.pmdb\", \"pymechanical\", \"embedding\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_import = Model.GeometryImportGroup.AddGeometryImport()\ngeometry_import_format = (\n Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic\n)\ngeometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()\ngeometry_import_preferences.ProcessNamedSelections = True\ngeometry_import.Import(\n geometry_path, geometry_import_format, geometry_import_preferences\n)\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"geometry.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"geometry.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assign materials and mesh the geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "material_assignment = Model.Materials.AddMaterialAssignment()\nmaterial_assignment.Material = \"Structural Steel\"\nsel = ExtAPI.SelectionManager.CreateSelectionInfo(\n Ansys.ACT.Interfaces.Common.SelectionTypeEnum.GeometryEntities\n)\nsel.Ids = [\n body.GetGeoBody().Id\n for body in Model.Geometry.GetChildren(\n Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body, True\n )\n]\nmaterial_assignment.Location = sel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define mesh settings, generate mesh\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mesh = Model.Mesh\nmesh.ElementSize = Quantity(25, \"mm\")\nmesh.GenerateMesh()\nTree.Activate([mesh])\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"mesh.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"mesh.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define analysis and boundary conditions\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "analysis = Model.AddStaticStructuralAnalysis()\n\nfixed_support = analysis.AddFixedSupport()\nfixed_support.Location = ExtAPI.DataModel.GetObjectsByName(\"NSFixedSupportFaces\")[0]\n\nfrictionless_support = analysis.AddFrictionlessSupport()\nfrictionless_support.Location = ExtAPI.DataModel.GetObjectsByName(\n \"NSFrictionlessSupportFaces\"\n)[0]\n\npressure = analysis.AddPressure()\npressure.Location = ExtAPI.DataModel.GetObjectsByName(\"NSInsideFaces\")[0]\n\npressure.Magnitude.Inputs[0].DiscreteValues = [Quantity(\"0 [s]\"), Quantity(\"1 [s]\")]\npressure.Magnitude.Output.DiscreteValues = [Quantity(\"0 [Pa]\"), Quantity(\"15 [MPa]\")]\n\nanalysis.Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"boundary_conditions.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"boundary_conditions.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve\nSolve process settings\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "config = ExtAPI.Application.SolveConfigurations[\"My Computer\"]\nconfig.SolveProcessSettings.MaxNumberOfCores = 1\nconfig.SolveProcessSettings.DistributeSolution = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "solution = analysis.Solution\ndeformation = solution.AddTotalDeformation()\nstress = solution.AddEquivalentStress()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "solution.Solve(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Messages\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Messages = ExtAPI.Application.Messages\nif Messages:\n for message in Messages:\n print(f\"[{message.Severity}] {message.DisplayString}\")\nelse:\n print(\"No [Info]/[Warning]/[Error] Messages\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Total deformation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([deformation])\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"totaldeformation_valve.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"totaldeformation_valve.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Stress\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([stress])\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"stress_valve.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"stress_valve.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Export stress animation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "animation_export_format = (\n Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF\n)\nsettings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings()\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\n\nstress.ExportAnimation(\n os.path.join(cwd, \"Valve.gif\"), animation_export_format, settings_720p\n)\ngif = Image.open(os.path.join(cwd, \"Valve.gif\"))\nfig, ax = plt.subplots(figsize=(16, 9))\nax.axis(\"off\")\nimg = ax.imshow(gif.convert(\"RGBA\"))\n\n\ndef update(frame):\n gif.seek(frame)\n img.set_array(gif.convert(\"RGBA\"))\n return [img]\n\n\nani = FuncAnimation(\n fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True\n)\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display output file from solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def write_file_contents_to_console(path):\n \"\"\"Write file contents to console.\"\"\"\n with open(path, \"rt\") as file:\n for line in file:\n print(line, end=\"\")\n\n\nsolve_path = analysis.WorkingDir\nsolve_out_path = os.path.join(solve_path, \"solve.out\")\nif solve_out_path:\n write_file_contents_to_console(solve_out_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Project tree\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def print_tree(node, indentation=\"\"):\n print(f\"{indentation}\u251c\u2500\u2500 {node.Name}\")\n\n if (\n hasattr(node, \"Children\")\n and node.Children is not None\n and node.Children.Count > 0\n ):\n for child in node.Children:\n print_tree(child, indentation + \"| \")\n\n\nroot_node = DataModel.Project\nprint_tree(root_node)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\nSave project\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app.save(os.path.join(cwd, \"Valve.mechdat\"))\napp.new()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "delete example files\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "delete_downloads()" + ] + } + ], + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/779ad6d8486e209a6bf69dc70e36eae0/Rotor_Blade_Inverse_solve.py b/_downloads/779ad6d8486e209a6bf69dc70e36eae0/Rotor_Blade_Inverse_solve.py new file mode 100644 index 00000000..085107cf --- /dev/null +++ b/_downloads/779ad6d8486e209a6bf69dc70e36eae0/Rotor_Blade_Inverse_solve.py @@ -0,0 +1,526 @@ +""" .. _ref_example_10_td_055: + +Inverse-Solving analysis of a rotor fan blade with disk +------------------------------------------------------- + +This example demonstrates the inverse-solving analysis of a rotor fan blade with disk. +The NASA Rotor 67 fan bladed disk is a subsystem of a turbo fan's compressor set used +in aerospace engine applications. This sector model, representing a challenging industrial +example for which the detailed geometry and flow information is available in the public +domain, consists of a disk and a fan blade with a sector angle of 16.364 degrees. +The sector model represents the running condition or hot geometry of the blade. It is +already optimized at the running condition under loading. The primary objective is to +obtain the cold geometry (for manufacturing) from the given hot geometry using inverse solving. + +- ELEMENTS: SOLID186 +- MATERIAL: Elastic Material +- CONTACT: MPC bonded contact pair + +To highlight Mechanical APDL inverse-solving technology, this example problem does not +involve a cyclic symmetry analysis. + +**Material Properties:** + ++------------+--------+----------------+----------------+---------------------------+ +| Temperature| Density| Young's Modulus| Poisson's Ratio| Coeff of Thermal Expansion| ++============+========+================+================+===========================+ +| 22 deg C | 7840 | 2.2e11 Pa | 0.27 | 1.2e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 200 deg C | 7740 | 2e11 Pa | 0.28 | 1.3e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 300 deg C | 7640 | 1.9e11 Pa | 0.29 | 1.4e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 600 deg C | 7540 | 1.8e11 Pa | 0.30 | 1.5e-5 | ++------------+--------+----------------+----------------+---------------------------+ + + +**Following loads are considered:** + +The rotational velocity (CGOMGA,0,0,1680) is applied along the global Z axis. The reference +temperature is maintained at 22°C, and the temperature loading is applied on the blade (BF) + +**Expected results:** + +Inverse-Solving Analysis: A nonlinear static analysis using inverse solving +(INVOPT,ON) is performed on the hot geometry of the model to obtain the cold geometry +(for manufacturing) and the stress/strain results on the hot geometry. + +""" + +import os + +import ansys.mechanical.core as mech +from ansys.mechanical.core.examples import delete_downloads, download_file +from matplotlib import image as mpimg +from matplotlib import pyplot as plt + +# %% +# Embed mechanical and set global variables + +app = mech.App(version=241) +globals().update(mech.global_variables(app, True)) +print(app) + +cwd = os.path.join(os.getcwd(), "out") + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +# %% +# Download required files +# ~~~~~~~~~~~~~~~~~~~~~~~ +# Download the geometry file + +geometry_path = download_file( + "example_10_td_055_Rotor_Blade_Geom.pmdb", "pymechanical", "embedding" +) + +# %% +# Download the material file + +mat_path = download_file( + "example_10_td_055_Rotor_Blade_Mat_File.xml", "pymechanical", "embedding" +) + +# %% +# Download the CFX pressure data + +cfx_data_path = download_file( + "example_10_CFX_ExportResults_FT_10P_EO2.csv", "pymechanical", "embedding" +) + +# %% +# Configure graphics for image export +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +cwd = os.path.join(os.getcwd(), "out") +ExtAPI.Graphics.Camera.SetSpecificViewOrientation( + Ansys.Mechanical.DataModel.Enums.ViewOrientationType.Iso +) +ExtAPI.Graphics.Camera.SetFit() +image_export_format = Ansys.Mechanical.DataModel.Enums.GraphicsImageExportFormat.PNG +settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() +settings_720p.Resolution = ( + Ansys.Mechanical.DataModel.Enums.GraphicsResolutionType.EnhancedResolution +) +settings_720p.Background = Ansys.Mechanical.DataModel.Enums.GraphicsBackgroundType.White +settings_720p.Width = 1280 +# settings_720p.Capture = Ansys.Mechanical.DataModel.Enums.GraphicsCaptureType.ImageOnly +settings_720p.Height = 720 +settings_720p.CurrentGraphicsDisplay = False + +# %% +# Import geometry +# ~~~~~~~~~~~~~~~ +# Reads geometry file and display + +geometry_import_group = Model.GeometryImportGroup +geometry_import = geometry_import_group.AddGeometryImport() +geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic +) +geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() +geometry_import_preferences.ProcessNamedSelections = True +geometry_import_preferences.NamedSelectionKey = "" +geometry_import_preferences.ProcessMaterialProperties = True +geometry_import_preferences.ProcessCoordinateSystems = True +geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences +) + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p +) +display_image("geometry.png") + +# %% +# Assign materials +# ~~~~~~~~~~~~~~~~ +# Import material from xml file and assign it to bodies + +materials = ExtAPI.DataModel.Project.Model.Materials +materials.Import(mat_path) + +PRT1 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Component2\Rotor11"][ + 0 +] +PRT2 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Component3"][0] +PRT2_Blade_1 = PRT2.Children[0] +PRT2_Blade_2 = PRT2.Children[1] +PRT2_Blade_3 = PRT2.Children[2] +PRT1.Material = "MAT1 (Setup, File1)" +PRT2_Blade_1.Material = "MAT1 (Setup, File1)" +PRT2_Blade_2.Material = "MAT1 (Setup, File1)" +PRT2_Blade_3.Material = "MAT1 (Setup, File1)" + +# %% +# Define units system and store variables +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Select MKS units +ExtAPI.Application.ActiveUnitSystem = ( + Ansys.ACT.Interfaces.Common.MechanicalUnitSystem.StandardMKS +) + +# Store all main tree nodes as variables +MODEL = ExtAPI.DataModel.Project.Model +GEOM = ExtAPI.DataModel.Project.Model.Geometry +MESH = ExtAPI.DataModel.Project.Model.Mesh +MAT_GRP = ExtAPI.DataModel.Project.Model.Materials +CS = ExtAPI.DataModel.Project.Model.CoordinateSystems + +# %% +# Define named selection +# ~~~~~~~~~~~~~~~~~~~~~~ +# Create NS for named selection + +NS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections +BLADE_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade"][0] +BLADE_SURF_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Surf"][ + 0 +] +FIX_SUPPORT_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Fix_Support" +][0] +BLADE_HUB_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Hub"][0] +HUB_CONTACT_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_Contact" +][0] +BLADE_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Target" +][0] +Hub_Low_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_Low"][0] +Hub_High_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_High"][0] +BLADE1_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1"][0] +BLADE1_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1_Source" +][0] +BLADE1_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1_Target" +][0] +BLADE2_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2"][0] +BLADE2_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2_Source" +][0] +BLADE2_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2_Target" +][0] +BLADE3_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3"][0] +BLADE3_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3_Source" +][0] +BLADE3_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3_Target" +][0] + +# %% +# Define coordinate system +# ~~~~~~~~~~~~~~~~~~~~~~~~ +# Create cylindrical coordinate system + +coordinate_systems = Model.CoordinateSystems +coord_system = coordinate_systems.AddCoordinateSystem() +coord_system.CoordinateSystemType = ( + Ansys.ACT.Interfaces.Analysis.CoordinateSystemTypeEnum.Cylindrical +) +coord_system.OriginDefineBy = CoordinateSystemAlignmentType.Component +coord_system.OriginDefineBy = CoordinateSystemAlignmentType.Fixed + +# %% +# Define contacts +# ~~~~~~~~~~~~~~~ +# Delete existing contacts and define connections + +connections = ExtAPI.DataModel.Project.Model.Connections + +# Delete existing contacts +# for connection in connections.Children: +# if connection.DataModelObjectCategory==DataModelObjectCategory.ConnectionGroup: +# connection.Delete() + +# Define connections + +CONN_GRP = ExtAPI.DataModel.Project.Model.Connections +CONT_REG1 = CONN_GRP.AddContactRegion() +CONT_REG1.SourceLocation = NS_GRP.Children[6] +CONT_REG1.TargetLocation = NS_GRP.Children[5] +CONT_REG1.Behavior = ContactBehavior.AutoAsymmetric +CONT_REG1.ContactFormulation = ContactFormulation.MPC + +# %% +# Define mesh settings and generate mesh +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MSH = Model.Mesh +MSH.ElementSize = Quantity(0.004, "m") +MSH.UseAdaptiveSizing = False +MSH.MaximumSize = Quantity(0.004, "m") +MSH.ShapeChecking = 0 +automatic_method_Hub = MSH.AddAutomaticMethod() +automatic_method_Hub.Location = NS_GRP.Children[0] +automatic_method_Hub.Method = MethodType.Sweep +automatic_method_Hub.SweepNumberDivisions = 6 + +match_control_Hub = MSH.AddMatchControl() +match_control_Hub.LowNamedSelection = NS_GRP.Children[7] +match_control_Hub.HighNamedSelection = NS_GRP.Children[8] +cyc_coordinate_system = coordinate_systems.Children[1] +match_control_Hub.RotationAxis = cyc_coordinate_system + +sizing_Blade = MSH.AddSizing() +selection = NS_GRP.Children[5] +sizing_Blade.Location = selection +# sizing_Blade.ElementSize = Quantity(1e-3, "m") +sizing_Blade.ElementSize = Quantity(1e-2, "m") +sizing_Blade.CaptureCurvature = True +sizing_Blade.CurvatureNormalAngle = Quantity(0.31, "rad") +# sizing_Blade.LocalMinimumSize = Quantity(0.00025, "m") +sizing_Blade.LocalMinimumSize = Quantity(0.0005, "m") + +automatic_method_Blade1 = MSH.AddAutomaticMethod() +selection = NS_GRP.Children[9] +automatic_method_Blade1.Location = selection +automatic_method_Blade1.Method = MethodType.Sweep +automatic_method_Blade1.SourceTargetSelection = 2 +selection = NS_GRP.Children[10] +automatic_method_Blade1.SourceLocation = selection +selection = NS_GRP.Children[11] +automatic_method_Blade1.TargetLocation = selection +automatic_method_Blade1.SweepNumberDivisions = 5 + +automatic_method_Blade2 = MSH.AddAutomaticMethod() +selection = NS_GRP.Children[12] +automatic_method_Blade2.Location = selection +automatic_method_Blade2.Method = MethodType.Sweep +automatic_method_Blade2.SourceTargetSelection = 2 +selection = NS_GRP.Children[13] +automatic_method_Blade2.SourceLocation = selection +selection = NS_GRP.Children[14] +automatic_method_Blade2.TargetLocation = selection +automatic_method_Blade2.SweepNumberDivisions = 5 + +automatic_method_Blade3 = MSH.AddAutomaticMethod() +selection = NS_GRP.Children[15] +automatic_method_Blade3.Location = selection +automatic_method_Blade3.Method = MethodType.Sweep +automatic_method_Blade3.SourceTargetSelection = 2 +selection = NS_GRP.Children[16] +automatic_method_Blade3.SourceLocation = selection +selection = NS_GRP.Children[17] +automatic_method_Blade3.TargetLocation = selection +automatic_method_Blade3.SweepNumberDivisions = 5 + +MSH.GenerateMesh() + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "blade_mesh.png"), image_export_format, settings_720p +) +display_image("blade_mesh.png") + +# %% +# Define analysis settings +# ~~~~~~~~~~~~~~~~~~~~~~~~ +# Setup static structural settings with inverse solve + +Model.AddStaticStructuralAnalysis() +STAT_STRUC = Model.Analyses[0] +ANA_SETTINGS = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings +ANA_SETTINGS.NumberOfSteps = 2 +ANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off +ANA_SETTINGS.NumberOfSubSteps = 20 + +ANA_SETTINGS.Activate() +ANA_SETTINGS.CurrentStepNumber = 2 +ANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off +ANA_SETTINGS.NumberOfSubSteps = 20 + +ANA_SETTINGS.InverseOption = True +ANA_SETTINGS.LargeDeflection = True + +# %% +# Define boundary conditions +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Apply rotational velocity + +ROT_VEL = STAT_STRUC.AddRotationalVelocity() +ROT_VEL.DefineBy = LoadDefineBy.Components +ROT_VEL.ZComponent.Inputs[0].DiscreteValues = [ + Quantity("0 [s]"), + Quantity("1 [s]"), + Quantity("2 [s]"), +] +ROT_VEL.ZComponent.Output.DiscreteValues = [ + Quantity("0 [rad/s]"), + Quantity("1680 [rad/s]"), + Quantity("1680 [rad/s]"), +] + +# Apply Fixed Support Condition + +Fixed_Support = STAT_STRUC.AddFixedSupport() +selection = NS_GRP.Children[3] +Fixed_Support.Location = selection + +# Apply Thermal load to the Structural Blade + +Thermal_Condition = STAT_STRUC.AddThermalCondition() +selection = NS_GRP.Children[1] +Thermal_Condition.Location = selection +Thermal_Condition.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [s]"), + Quantity("1 [s]"), + Quantity("2 [s]"), +] +Thermal_Condition.Magnitude.Output.DiscreteValues = [ + Quantity("22 [C]"), + Quantity("80 [C]"), + Quantity("80 [C]"), +] + +# %% +# Import CFX pressure +# ~~~~~~~~~~~~~~~~~~~ +# Import CFX pressure data and apply it to structural blade surface + +Imported_Load_Group = STAT_STRUC.AddImportedLoadExternalData() + +external_data_files = Ansys.Mechanical.ExternalData.ExternalDataFileCollection() +external_data_files.SaveFilesWithProject = False +external_data_file_1 = Ansys.Mechanical.ExternalData.ExternalDataFile() +external_data_files.Add(external_data_file_1) +external_data_file_1.Identifier = "File1" +external_data_file_1.Description = "" +external_data_file_1.IsMainFile = False +external_data_file_1.FilePath = cfx_data_path +external_data_file_1.ImportSettings = ( + Ansys.Mechanical.ExternalData.ImportSettingsFactory.GetSettingsForFormat( + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.ImportFormat.Delimited + ) +) +import_settings = external_data_file_1.ImportSettings +import_settings.SkipRows = 17 +import_settings.SkipFooter = 0 +import_settings.Delimiter = "," +import_settings.AverageCornerNodesToMidsideNodes = False +import_settings.UseColumn( + 0, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.XCoordinate, + "m", + "X Coordinate@A", +) +import_settings.UseColumn( + 1, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.YCoordinate, + "m", + "Y Coordinate@B", +) +import_settings.UseColumn( + 2, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.ZCoordinate, + "m", + "Z Coordinate@C", +) +import_settings.UseColumn( + 3, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.Pressure, + "Pa", + "Pressure@D", +) + +Imported_Load_Group.ImportExternalDataFiles(external_data_files) +Imported_Pressure = Imported_Load_Group.AddImportedPressure() +selection = NS_GRP.Children[2] +Imported_Pressure.Location = selection + +pressure_id = Imported_Pressure.ObjectId +mech_command = f"""Imported_Pressure = ExtAPI.DataModel.GetObjectById({pressure_id}) +Imported_Pressure.InternalObject.ExternalLoadAppliedBy = 1 +""" +app.execute_script(mech_command) +Imported_Pressure.ImportLoad() + +# %% +# Postprocessing +# ~~~~~~~~~~~~~~ +# Insert results + +SOLN = STAT_STRUC.Solution + +TOT_DEF1 = SOLN.AddTotalDeformation() +TOT_DEF1.DisplayTime = Quantity("1 [s]") + +TOT_DEF2 = SOLN.AddTotalDeformation() +TOT_DEF2.DisplayTime = Quantity("2 [s]") + +EQV_STRS1 = SOLN.AddEquivalentStress() +EQV_STRS1.DisplayTime = Quantity("1 [s]") + +EQV_STRS2 = SOLN.AddEquivalentStress() +EQV_STRS2.DisplayTime = Quantity("2 [s]") + +EQV_TOT_STRN1 = SOLN.AddEquivalentTotalStrain() +EQV_TOT_STRN1.DisplayTime = Quantity("1 [s]") + +EQV_TOT_STRN2 = SOLN.AddEquivalentTotalStrain() +EQV_TOT_STRN2.DisplayTime = Quantity("2 [s]") + +THERM_STRN1 = SOLN.AddThermalStrain() +THERM_STRN1.DisplayTime = Quantity("1 [s]") + +THERM_STRN2 = SOLN.AddThermalStrain() +THERM_STRN2.DisplayTime = Quantity("2 [s]") + +# %% +# Run Solution +# ~~~~~~~~~~~~ +# Solve inverse analysis on blade model + +SOLN.Solve(True) +STAT_STRUC_SS = SOLN.Status + +# %% +# Postprocessing +# ~~~~~~~~~~~~~~ +# Evaluate results and export screenshots + +# %% +# Total deformation + +Tree.Activate([TOT_DEF2]) +ExtAPI.Graphics.ViewOptions.ResultPreference.ExtraModelDisplay = ( + Ansys.Mechanical.DataModel.MechanicalEnums.Graphics.ExtraModelDisplay.NoWireframe +) +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "deformation.png"), image_export_format, settings_720p +) +display_image("deformation.png") + +# %% +# Equivalent stress + +Tree.Activate([EQV_STRS2]) +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "stress.png"), image_export_format, settings_720p +) +display_image("stress.png") + +# %% +# Cleanup +# ~~~~~~~ +# Save project + +app.save(os.path.join(cwd, "blade_inverse.mechdat")) +app.new() + +# %% +# Delete example file + +delete_downloads() diff --git a/_downloads/998afc8c45f241c226139362330c610d/topology_optimization_cantilever_beam.py b/_downloads/998afc8c45f241c226139362330c610d/topology_optimization_cantilever_beam.py new file mode 100644 index 00000000..53402b96 --- /dev/null +++ b/_downloads/998afc8c45f241c226139362330c610d/topology_optimization_cantilever_beam.py @@ -0,0 +1,282 @@ +""" .. _ref_topology_optimization: + +Topology optimization of a simple cantilever beam +------------------------------------------------- + +This example demonstrates the structural topology optimization of a simple +cantilever beam. The structural analysis is performed with basic constraints and +load, which is then transferred to the topology optimization. +""" + +# %% +# Import necessary libraries +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +import os + +import ansys.mechanical.core as mech +from ansys.mechanical.core.examples import delete_downloads, download_file +from matplotlib import image as mpimg +from matplotlib import pyplot as plt + +# %% +# Embed Mechanical and set global variables + +app = mech.App(version=241) +globals().update(mech.global_variables(app, True)) +print(app) + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +cwd = os.path.join(os.getcwd(), "out") + +# %% +# Configure graphics for image export + +ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front) +image_export_format = GraphicsImageExportFormat.PNG +settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() +settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution +settings_720p.Background = GraphicsBackgroundType.White +settings_720p.Width = 1280 +settings_720p.Height = 720 +settings_720p.CurrentGraphicsDisplay = False + +# %% +# Import structural analsys +# ~~~~~~~~~~~~~~~~~~~~~~~~~ +# Download ``.mechdat`` file + +structural_mechdat_file = download_file( + "cantilever.mechdat", "pymechanical", "embedding" +) +app.open(structural_mechdat_file) +STRUCT = ExtAPI.DataModel.Project.Model.Analyses[0] + +# sphinx_gallery_start_ignore +assert str(STRUCT.ObjectState) == "Solved" +# sphinx_gallery_end_ignore +STRUCT_SLN = STRUCT.Solution +STRUCT_SLN.Solve(True) +# sphinx_gallery_start_ignore +assert str(STRUCT_SLN.Status) == "Done", "Solution status is not 'Done'" +# sphinx_gallery_end_ignore + +# %% +# Display structural analsys results +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Total deformation + +STRUCT_SLN.Children[1].Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "total_deformation.png"), image_export_format, settings_720p +) +display_image("total_deformation.png") + +# %% +# Equivalent stress + +STRUCT_SLN.Children[2].Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "equivalent_stress.png"), image_export_format, settings_720p +) +display_image("equivalent_stress.png") + +# %% +# Topology optimization +# ~~~~~~~~~~~~~~~~~~~~~ + +# Set MKS unit system + +ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS + +# Store all main tree nodes as variables + +GEOM = ExtAPI.DataModel.Project.Model.Geometry +MSH = ExtAPI.DataModel.Project.Model.Mesh +NS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections +CONN_GRP = ExtAPI.DataModel.Project.Model.Connections +MY_TOTAL_VOL = GEOM.Volume.Value +MY_TOTAL_MA = GEOM.Mass.Value + +# Get structural analysis and link to topology optimization + +TOPO_OPT = ExtAPI.DataModel.Project.Model.AddTopologyOptimizationAnalysis() +TOPO_OPT.TransferDataFrom(STRUCT) + +# sphinx_gallery_start_ignore +assert str(TOPO_OPT.ObjectState) == "NotSolved" +# sphinx_gallery_end_ignore + +# Set ``None`` for optimization region boundary condition exclusion region +# Optimization region + +OPT_REG = TOPO_OPT.Children[1] +# OPT_REG.BoundaryCondition=BoundaryConditionType.None +# Using ``getattr`` because Python.Net does not support the ``None`` enum +OPT_REG.BoundaryCondition = BoundaryConditionType.AllLoadsAndSupports + +# Insert volume response constraint object for topology optimization +# Delete mass response constraint + +MASS_CONSTRN = TOPO_OPT.Children[3] +MASS_CONSTRN.Delete() + +# Add volume response constraint + +VOL_CONSTRN = TOPO_OPT.AddVolumeConstraint() +# VOL_CONSTRN.DefineBy=ResponseConstraintDefineBy.Constant +# VOL_CONSTRN.PercentageToRetain=50 + +# Insert member size manufacturing constraint + +MEM_SIZE_MFG_CONSTRN = TOPO_OPT.AddMemberSizeManufacturingConstraint() +MEM_SIZE_MFG_CONSTRN.Minimum = ManuMemberSizeControlledType.Manual +MEM_SIZE_MFG_CONSTRN.MinSize = Quantity("2.4 [m]") + +# # Store coordinate system ID for use in symmetry manufacturing constraint +# Coordinate_Systems = DataModel.Project.Model.CoordinateSystems +# coord_sys7 = Coordinate_Systems.Children[7] + +# # Insert symmetry manufacturing constraint +# SYMM_MFG_CONSTRN = TOPO_OPT.AddSymmetryManufacturingConstraint() +# SYMM_MFG_CONSTRN.CoordinateSystem = coord_sys7 + +TOPO_OPT.Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p +) +display_image("boundary_conditions.png") + +# %% +# Solve +# ~~~~~ + +TOPO_OPT_SLN = TOPO_OPT.Solution +TOPO_OPT_SLN.Solve(True) +# sphinx_gallery_start_ignore +assert str(TOPO_OPT_SLN.Status) == "Done", "Solution status is not 'Done'" +# sphinx_gallery_end_ignore + +# %% +# Messages +# ~~~~~~~~ + +Messages = ExtAPI.Application.Messages +if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") +else: + print("No [Info]/[Warning]/[Error] Messages") + +# %% +# Display results +# ~~~~~~~~~~~~~~~ + +TOPO_OPT_SLN.Children[1].Activate() +TOPO_DENS = TOPO_OPT_SLN.Children[1] + +# %% +# Add smoothing to the STL + +TOPO_DENS.AddSmoothing() +TOPO_OPT.Solution.EvaluateAllResults() +TOPO_DENS.Children[0].Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "topo_opitimized_smooth.png"), image_export_format, settings_720p +) +display_image("topo_opitimized_smooth.png") + +# %% +# Export animation + +animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF +) +settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() +settings_720p.Width = 1280 +settings_720p.Height = 720 + +TOPO_DENS.ExportAnimation( + os.path.join(cwd, "Topo_opitimized.gif"), animation_export_format, settings_720p +) + +# %% +# .. image:: /_static/basic/Topo_opitimized.gif + +# %% +# Review the results + +# Print topology density results +print("Topology Density Results") +print("Minimum Density: ", TOPO_DENS.Minimum) +print("Maximum Density: ", TOPO_DENS.Maximum) +print("Iteration Number: ", TOPO_DENS.IterationNumber) +print("Original Volume: ", TOPO_DENS.OriginalVolume.Value) +print("Final Volume: ", TOPO_DENS.FinalVolume.Value) +print("Percent Volume of Original: ", TOPO_DENS.PercentVolumeOfOriginal) +print("Original Mass: ", TOPO_DENS.OriginalMass.Value) +print("Final Mass: ", TOPO_DENS.FinalMass.Value) +print("Percent Mass of Original: ", TOPO_DENS.PercentMassOfOriginal) + +# %% +# Display output file from solve +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + +solve_path = TOPO_OPT.WorkingDir +solve_out_path = os.path.join(solve_path, "solve.out") +if solve_out_path: + write_file_contents_to_console(solve_out_path) + +# %% +# Project tree +# ~~~~~~~~~~~~ + + +def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + +root_node = DataModel.Project +print_tree(root_node) + +# %% +# Cleanup +# ~~~~~~~ +# Save project + +app.save(os.path.join(cwd, "cantilever_beam_topology_optimization.mechdat")) +app.new() + +# %% +# Delete the example files + +delete_downloads() diff --git a/_downloads/b250566454cafeecd41a271ef5e21fdd/fracture_analysis_contact_debonding.ipynb b/_downloads/b250566454cafeecd41a271ef5e21fdd/fracture_analysis_contact_debonding.ipynb new file mode 100644 index 00000000..3c23f6d2 --- /dev/null +++ b/_downloads/b250566454cafeecd41a271ef5e21fdd/fracture_analysis_contact_debonding.ipynb @@ -0,0 +1,464 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Fracture Analysis - Contact debonding\n\nThe following example demonstrates the use of the Contact Debonding\nfeaturing in Mechanical using the Cohesive Zone Material (CZM) method.\nThis example displaces two two-dimensional parts on a\ndouble cantilever beam.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import necessary libraries\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n\nfrom PIL import Image\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import delete_downloads, download_file\nfrom matplotlib import image as mpimg\nfrom matplotlib import pyplot as plt\nfrom matplotlib.animation import FuncAnimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Embed mechanical and set global variables\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app = mech.App(version=241)\nglobals().update(mech.global_variables(app, True))\nprint(app)\n\ncwd = os.path.join(os.getcwd(), \"out\")\n\n\ndef display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure graphics for image export\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front)\nimage_export_format = GraphicsImageExportFormat.PNG\nsettings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings()\nsettings_720p.Resolution = GraphicsResolutionType.EnhancedResolution\nsettings_720p.Background = GraphicsBackgroundType.White\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\nsettings_720p.CurrentGraphicsDisplay = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download geometry and materials files\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_path = download_file(\n \"Contact_Debonding_Example.agdb\", \"pymechanical\", \"embedding\"\n)\nmat1_path = download_file(\n \"Contact_Debonding_Example_Mat1.xml\", \"pymechanical\", \"embedding\"\n)\nmat2_path = download_file(\n \"Contact_Debonding_Example_Mat2.xml\", \"pymechanical\", \"embedding\"\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import the geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_import = Model.GeometryImportGroup.AddGeometryImport()\ngeometry_import_format = (\n Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic\n)\ngeometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()\ngeometry_import_preferences.ProcessNamedSelections = True\ngeometry_import_preferences.AnalysisType = (\n Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.AnalysisType.Type2D\n)\ngeometry_import.Import(\n geometry_path, geometry_import_format, geometry_import_preferences\n)\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"geometry.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"geometry.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Material import, named selections, and connections\nImport materials\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MODEL = Model\nGEOMETRY = Model.Geometry\nMAT_GRP = MODEL.Materials\nMAT_GRP.Import(mat1_path)\nMAT_GRP.Import(mat2_path)\n\nPART = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == \"Part 2\"][0]\nMAT_BODY = [\n i\n for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True)\n if i.Name == \"Interface Body Material\"\n][0]\nMAT_CZM = [\n i\n for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True)\n if i.Name == \"CZM Crack Material\"\n][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Connections\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "connections = MODEL.AddConnections()\nCONNECTIONS_GRP = connections.AddConnectionGroup()\nMODEL.Connections.CreateAutomaticConnections()\nCONNECTIONS_GRP = ExtAPI.DataModel.Project.Model.Connections\nCONTACTS = [\n i\n for i in CONNECTIONS_GRP.GetChildren[\n Ansys.ACT.Automation.Mechanical.Connections.ConnectionGroup\n ](True)\n if i.Name == \"Contacts\"\n][0]\nCONTACT_REGION = [\n i\n for i in CONTACTS.GetChildren[\n Ansys.ACT.Automation.Mechanical.Connections.ContactRegion\n ](True)\n if i.Name == \"Contact Region\"\n][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Named selections\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "NAMED_SELECTIONS = ExtAPI.DataModel.Project.Model.NamedSelections\nNS_EDGE_HIGH = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"High_Edge\"\n][0]\nNS_EDGE_LOW = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Low_Edge\"\n][0]\nNS_EDGES_SHORT = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Short_Edges\"\n][0]\nNS_EDGES_LONG = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Long_Edges\"\n][0]\nNS_EDGES_FIXED = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Fixed_Edges\"\n][0]\nNS_VERTEX_DISP1 = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Disp1_Vertex\"\n][0]\nNS_VERTEX_DISP2 = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Disp2_Vertex\"\n][0]\nNS_FACES_BOTH = [\n i\n for i in NAMED_SELECTIONS.GetChildren[\n Ansys.ACT.Automation.Mechanical.NamedSelection\n ](True)\n if i.Name == \"Both_Faces\"\n][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define static structural analysis and settings\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MODEL.AddStaticStructuralAnalysis()\nSTATIC_STRUCTURAL = ExtAPI.DataModel.AnalysisByName(\"Static Structural\")\nANALYSIS_SETTINGS = STATIC_STRUCTURAL.AnalysisSettings\nSOLUTION = STATIC_STRUCTURAL.Solution\nMESH = Model.Mesh\n\n# Set unit system\n\nExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardNMM\n\n# Set 2D behavior\n\nGEOMETRY.Activate()\nGEOMETRY.Model2DBehavior = Model2DBehavior.PlaneStrain\n\n# Assign material\n\nPART.Activate()\nPART.Material = MAT_BODY.Name\n\n# Define contact Region\n\nCONTACT_REGION.Activate()\nCONTACT_REGION.SourceLocation = NS_EDGE_HIGH\nCONTACT_REGION.TargetLocation = NS_EDGE_LOW\nCONTACT_REGION.ContactType = ContactType.Bonded\nCONTACT_REGION.ContactFormulation = ContactFormulation.PurePenalty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define mesh controls and generate mesh\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MESH.Activate()\nMESH.ElementOrder = ElementOrder.Quadratic\nMESH.UseAdaptiveSizing = False\nMESH.ElementSize = Quantity(\"0.75 [mm]\")\n\nSIZING_MESH = MESH.AddSizing()\nSIZING_MESH.Location = NS_EDGES_SHORT\nSIZING_MESH.ElementSize = Quantity(\"0.75 [mm]\")\nSIZING_MESH.Behavior = SizingBehavior.Hard\n\nSIZING_MESH2 = MESH.AddSizing()\nSIZING_MESH2.Location = NS_EDGES_LONG\nSIZING_MESH2.ElementSize = Quantity(\"0.5 [mm]\")\nSIZING_MESH2.Behavior = SizingBehavior.Hard\n\nFACE_MESHING = MESH.AddFaceMeshing()\nFACE_MESHING.Location = NS_FACES_BOTH\nFACE_MESHING.Method = FaceMeshingMethod.Quadrilaterals\n\nMESH.Activate()\nMESH.GenerateMesh()\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"mesh.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"mesh.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add contact debonding object\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MODEL.Activate()\nFRACTURE = MODEL.AddFracture()\n\nCONTACT_DEBONDING = FRACTURE.AddContactDebonding()\nCONTACT_DEBONDING.Material = MAT_CZM.Name\nCONTACT_DEBONDING.ContactRegion = CONTACT_REGION" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define analysis settings\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ANALYSIS_SETTINGS.Activate()\nANALYSIS_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.On\nANALYSIS_SETTINGS.DefineBy = TimeStepDefineByType.Substeps\nANALYSIS_SETTINGS.MaximumSubsteps = 100\nANALYSIS_SETTINGS.InitialSubsteps = 100\nANALYSIS_SETTINGS.MinimumSubsteps = 100\nANALYSIS_SETTINGS.LargeDeflection = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define boundary conditions\nAdd fixed support\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STATIC_STRUCTURAL.Activate()\nFIXED_SUPPORT = STATIC_STRUCTURAL.AddFixedSupport()\nFIXED_SUPPORT.Location = NS_EDGES_FIXED" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add displacement\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STATIC_STRUCTURAL.Activate()\nDISPLACEMENT = STATIC_STRUCTURAL.AddDisplacement()\nDISPLACEMENT.Location = NS_VERTEX_DISP1\nDISPLACEMENT.DefineBy = LoadDefineBy.Components\nDISPLACEMENT.YComponent.Output.DiscreteValues = [Quantity(\"10 [mm]\")]\n\nSTATIC_STRUCTURAL.Activate()\nDISPLACEMENT2 = STATIC_STRUCTURAL.AddDisplacement()\nDISPLACEMENT2.Location = NS_VERTEX_DISP2\nDISPLACEMENT2.DefineBy = LoadDefineBy.Components\nDISPLACEMENT2.YComponent.Output.DiscreteValues = [Quantity(\"-10 [mm]\")]\n\nSTATIC_STRUCTURAL.Activate()\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"boundary_conditions.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"boundary_conditions.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add results\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "SOLUTION.Activate()\nDIRECTIONAL_DEFORMATION = SOLUTION.AddDirectionalDeformation()\nDIRECTIONAL_DEFORMATION.NormalOrientation = NormalOrientationType.YAxis\n\nFORCE_REACTION = SOLUTION.AddForceReaction()\nFORCE_REACTION.BoundaryConditionSelection = DISPLACEMENT" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STATIC_STRUCTURAL.Activate()\nSOLUTION.Solve(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Messages\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Messages = ExtAPI.Application.Messages\nif Messages:\n for message in Messages:\n print(f\"[{message.Severity}] {message.DisplayString}\")\nelse:\n print(\"No [Info]/[Warning]/[Error] Messages\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display results\nDirectional deformation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "DIRECTIONAL_DEFORMATION.Activate()\n\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"directional_deformation.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"directional_deformation.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Force reaction\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "FORCE_REACTION.Activate()\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"force_reaction.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"force_reaction.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export animation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "animation_export_format = (\n Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF\n)\nsettings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings()\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\n\nFORCE_REACTION.ExportAnimation(\n os.path.join(cwd, \"force_reaction.gif\"), animation_export_format, settings_720p\n)\ngif = Image.open(os.path.join(cwd, \"force_reaction.gif\"))\nfig, ax = plt.subplots(figsize=(16, 9))\nax.axis(\"off\")\nimg = ax.imshow(gif.convert(\"RGBA\"))\n\n\ndef update(frame):\n gif.seek(frame)\n img.set_array(gif.convert(\"RGBA\"))\n return [img]\n\n\nani = FuncAnimation(\n fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True\n)\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display output file from solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def write_file_contents_to_console(path):\n \"\"\"Write file contents to console.\"\"\"\n with open(path, \"rt\") as file:\n for line in file:\n print(line, end=\"\")\n\n\nsolve_path = STATIC_STRUCTURAL.WorkingDir\nsolve_out_path = os.path.join(solve_path, \"solve.out\")\nif solve_out_path:\n write_file_contents_to_console(solve_out_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Project tree\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def print_tree(node, indentation=\"\"):\n print(f\"{indentation}\u251c\u2500\u2500 {node.Name}\")\n\n if (\n hasattr(node, \"Children\")\n and node.Children is not None\n and node.Children.Count > 0\n ):\n for child in node.Children:\n print_tree(child, indentation + \"| \")\n\n\nroot_node = DataModel.Project\nprint_tree(root_node)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\nSave project\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app.save(os.path.join(cwd, \"contact_debonding.mechdat\"))\napp.new()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete example files\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "delete_downloads()" + ] + } + ], + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/cfea8c5ef4d2769c29aa50bde351a7ee/valve.py b/_downloads/cfea8c5ef4d2769c29aa50bde351a7ee/valve.py new file mode 100644 index 00000000..36cef93c --- /dev/null +++ b/_downloads/cfea8c5ef4d2769c29aa50bde351a7ee/valve.py @@ -0,0 +1,282 @@ +""" .. _ref_basic_valve: + +Basic Valve Implementation +-------------------------- + +This example demonstrates a basic implementation of a valve in Python. +""" + +# %% +# Import necessary libraries +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +import os + +from PIL import Image +import ansys.mechanical.core as mech +from ansys.mechanical.core.examples import delete_downloads, download_file +from matplotlib import image as mpimg +from matplotlib import pyplot as plt +from matplotlib.animation import FuncAnimation + +# %% +# Embed mechanical and set global variables + +app = mech.App(version=241) +globals().update(mech.global_variables(app, True)) +print(app) + +cwd = os.path.join(os.getcwd(), "out") + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +# %% +# Configure graphics for image export +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso) +image_export_format = GraphicsImageExportFormat.PNG +settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() +settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution +settings_720p.Background = GraphicsBackgroundType.White +settings_720p.Width = 1280 +settings_720p.Height = 720 +settings_720p.CurrentGraphicsDisplay = False + + +# %% +# Download geometry and import +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Download geometry + +geometry_path = download_file("Valve.pmdb", "pymechanical", "embedding") + +# %% +# Import geometry + +geometry_import = Model.GeometryImportGroup.AddGeometryImport() +geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic +) +geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() +geometry_import_preferences.ProcessNamedSelections = True +geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences +) + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p +) +display_image("geometry.png") + +# %% +# Assign materials and mesh the geometry +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +material_assignment = Model.Materials.AddMaterialAssignment() +material_assignment.Material = "Structural Steel" +sel = ExtAPI.SelectionManager.CreateSelectionInfo( + Ansys.ACT.Interfaces.Common.SelectionTypeEnum.GeometryEntities +) +sel.Ids = [ + body.GetGeoBody().Id + for body in Model.Geometry.GetChildren( + Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body, True + ) +] +material_assignment.Location = sel + +# %% +# Define mesh settings, generate mesh + +mesh = Model.Mesh +mesh.ElementSize = Quantity(25, "mm") +mesh.GenerateMesh() +Tree.Activate([mesh]) +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "mesh.png"), image_export_format, settings_720p +) +display_image("mesh.png") + +# %% +# Define analysis and boundary conditions +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +analysis = Model.AddStaticStructuralAnalysis() + +fixed_support = analysis.AddFixedSupport() +fixed_support.Location = ExtAPI.DataModel.GetObjectsByName("NSFixedSupportFaces")[0] + +frictionless_support = analysis.AddFrictionlessSupport() +frictionless_support.Location = ExtAPI.DataModel.GetObjectsByName( + "NSFrictionlessSupportFaces" +)[0] + +pressure = analysis.AddPressure() +pressure.Location = ExtAPI.DataModel.GetObjectsByName("NSInsideFaces")[0] + +pressure.Magnitude.Inputs[0].DiscreteValues = [Quantity("0 [s]"), Quantity("1 [s]")] +pressure.Magnitude.Output.DiscreteValues = [Quantity("0 [Pa]"), Quantity("15 [MPa]")] + +analysis.Activate() +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p +) +display_image("boundary_conditions.png") + +# %% +# Solve +# ~~~~~ +# Solve process settings + +config = ExtAPI.Application.SolveConfigurations["My Computer"] +config.SolveProcessSettings.MaxNumberOfCores = 1 +config.SolveProcessSettings.DistributeSolution = False + +# %% +# Add results + +solution = analysis.Solution +deformation = solution.AddTotalDeformation() +stress = solution.AddEquivalentStress() + +# %% +# Solve + +solution.Solve(True) + +# sphinx_gallery_start_ignore +assert str(solution.Status) == "Done", "Solution status is not 'Done'" +# sphinx_gallery_end_ignore + +# %% +# Messages +# ~~~~~~~~ + +Messages = ExtAPI.Application.Messages +if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") +else: + print("No [Info]/[Warning]/[Error] Messages") + +# %% +# Results +# ~~~~~~~ + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +# %% +# Total deformation + +Tree.Activate([deformation]) +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "totaldeformation_valve.png"), image_export_format, settings_720p +) +display_image("totaldeformation_valve.png") + +# %% +# Stress + +Tree.Activate([stress]) +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "stress_valve.png"), image_export_format, settings_720p +) +display_image("stress_valve.png") + +# %% +# Export stress animation + +animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF +) +settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() +settings_720p.Width = 1280 +settings_720p.Height = 720 + +stress.ExportAnimation( + os.path.join(cwd, "Valve.gif"), animation_export_format, settings_720p +) +gif = Image.open(os.path.join(cwd, "Valve.gif")) +fig, ax = plt.subplots(figsize=(16, 9)) +ax.axis("off") +img = ax.imshow(gif.convert("RGBA")) + + +def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + +ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True +) +plt.show() + +# %% +# Display output file from solve +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + +solve_path = analysis.WorkingDir +solve_out_path = os.path.join(solve_path, "solve.out") +if solve_out_path: + write_file_contents_to_console(solve_out_path) + +# %% +# Project tree +# ~~~~~~~~~~~~ + + +def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + +root_node = DataModel.Project +print_tree(root_node) + +# %% +# Cleanup +# ~~~~~~~ +# Save project + +app.save(os.path.join(cwd, "Valve.mechdat")) +app.new() + +# %% +# delete example files + +delete_downloads() diff --git a/_downloads/d644d36d0a1d52786ec272a88836e69f/steady_state_thermal_analysis.ipynb b/_downloads/d644d36d0a1d52786ec272a88836e69f/steady_state_thermal_analysis.ipynb new file mode 100644 index 00000000..49767a51 --- /dev/null +++ b/_downloads/d644d36d0a1d52786ec272a88836e69f/steady_state_thermal_analysis.ipynb @@ -0,0 +1,536 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Steady state thermal analysis\n\nThis example problem demonstrates the use of a\nsimple steady-state thermal analysis to determine the temperatures,\nthermal gradients, heat flow rates, and heat fluxes that are caused\nby thermal loads that do not vary over time. A steady-state thermal\nanalysis calculates the effects of steady thermal loads on a system\nor component, in this example, a long bar model.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import necessary libraries\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n\nfrom PIL import Image\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import delete_downloads, download_file\nfrom matplotlib import image as mpimg\nfrom matplotlib import pyplot as plt\nfrom matplotlib.animation import FuncAnimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Embed mechanical and set global variables\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app = mech.App(version=241)\nglobals().update(mech.global_variables(app, True))\nprint(app)\n\ncwd = os.path.join(os.getcwd(), \"out\")\n\n\ndef display_image(image_name):\n plt.figure(figsize=(16, 9))\n plt.imshow(mpimg.imread(os.path.join(cwd, image_name)))\n plt.xticks([])\n plt.yticks([])\n plt.axis(\"off\")\n plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure graphics for image export\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso)\nExtAPI.Graphics.Camera.SetFit()\nimage_export_format = GraphicsImageExportFormat.PNG\nsettings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings()\nsettings_720p.Resolution = GraphicsResolutionType.EnhancedResolution\nsettings_720p.Background = GraphicsBackgroundType.White\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\nsettings_720p.CurrentGraphicsDisplay = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download and import geometry\nDownload the geometry file.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_path = download_file(\"LONGBAR.x_t\", \"pymechanical\", \"embedding\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import the geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geometry_import_group = Model.GeometryImportGroup\ngeometry_import = geometry_import_group.AddGeometryImport()\ngeometry_import_format = (\n Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic\n)\ngeometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()\ngeometry_import_preferences.ProcessNamedSelections = True\ngeometry_import.Import(\n geometry_path, geometry_import_format, geometry_import_preferences\n)\n\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"geometry.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"geometry.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add steady state thermal analysis\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Model.AddSteadyStateThermalAnalysis()\nExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS\nSTAT_THERM = DataModel.Project.Model.Analyses[0]\nMODEL = DataModel.Project.Model\nCS = MODEL.CoordinateSystems\nLCS1 = CS.AddCoordinateSystem()\nLCS1.OriginX = Quantity(\"0 [m]\")\n\nLCS2 = CS.AddCoordinateSystem()\nLCS2.OriginX = Quantity(\"0 [m]\")\nLCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalY" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create named selections and construction geometry\nCreate named selections\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "FACE1 = DataModel.Project.Model.AddNamedSelection()\nFACE1.ScopingMethod = GeometryDefineByType.Worksheet\nFACE1.Name = \"Face1\"\nGEN_CRT1 = FACE1.GenerationCriteria\nCRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT1.Active = True\nCRT1.Action = SelectionActionType.Add\nCRT1.EntityType = SelectionType.GeoFace\nCRT1.Criterion = SelectionCriterionType.LocationZ\nCRT1.Operator = SelectionOperatorType.Equal\nCRT1.Value = Quantity(\"20 [m]\")\nGEN_CRT1.Add(CRT1)\nFACE1.Activate()\nFACE1.Generate()\n\nFACE2 = DataModel.Project.Model.AddNamedSelection()\nFACE2.ScopingMethod = GeometryDefineByType.Worksheet\nFACE2.Name = \"Face2\"\nGEN_CRT2 = FACE2.GenerationCriteria\nCRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT1.Active = True\nCRT1.Action = SelectionActionType.Add\nCRT1.EntityType = SelectionType.GeoFace\nCRT1.Criterion = SelectionCriterionType.LocationZ\nCRT1.Operator = SelectionOperatorType.Equal\nCRT1.Value = Quantity(\"0 [m]\")\nGEN_CRT2.Add(CRT1)\nFACE2.Activate()\nFACE2.Generate()\n\nFACE3 = DataModel.Project.Model.AddNamedSelection()\nFACE3.ScopingMethod = GeometryDefineByType.Worksheet\nFACE3.Name = \"Face3\"\nGEN_CRT3 = FACE3.GenerationCriteria\nCRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT1.Active = True\nCRT1.Action = SelectionActionType.Add\nCRT1.EntityType = SelectionType.GeoFace\nCRT1.Criterion = SelectionCriterionType.LocationX\nCRT1.Operator = SelectionOperatorType.Equal\nCRT1.Value = Quantity(\"1 [m]\")\nGEN_CRT3.Add(CRT1)\nCRT2 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT2.Active = True\nCRT2.Action = SelectionActionType.Filter\nCRT2.EntityType = SelectionType.GeoFace\nCRT2.Criterion = SelectionCriterionType.LocationY\nCRT2.Operator = SelectionOperatorType.Equal\nCRT2.Value = Quantity(\"2 [m]\")\nGEN_CRT3.Add(CRT2)\nCRT3 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT3.Active = True\nCRT3.Action = SelectionActionType.Filter\nCRT3.EntityType = SelectionType.GeoFace\nCRT3.Criterion = SelectionCriterionType.LocationZ\nCRT3.Operator = SelectionOperatorType.Equal\nCRT3.Value = Quantity(\"12 [m]\")\nGEN_CRT3.Add(CRT3)\nCRT4 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT4.Active = True\nCRT4.Action = SelectionActionType.Add\nCRT4.EntityType = SelectionType.GeoFace\nCRT4.Criterion = SelectionCriterionType.LocationZ\nCRT4.Operator = SelectionOperatorType.Equal\nCRT4.Value = Quantity(\"4.5 [m]\")\nGEN_CRT3.Add(CRT4)\nCRT5 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion()\nCRT5.Active = True\nCRT5.Action = SelectionActionType.Filter\nCRT5.EntityType = SelectionType.GeoFace\nCRT5.Criterion = SelectionCriterionType.LocationY\nCRT5.Operator = SelectionOperatorType.Equal\nCRT5.Value = Quantity(\"2 [m]\")\nGEN_CRT3.Add(CRT5)\nFACE3.Activate()\nFACE3.Generate()\n\nBODY1 = DataModel.Project.Model.AddNamedSelection()\nBODY1.ScopingMethod = GeometryDefineByType.Worksheet\nBODY1.Name = \"Body1\"\nBODY1.GenerationCriteria.Add(None)\nBODY1.GenerationCriteria[0].EntityType = SelectionType.GeoFace\nBODY1.GenerationCriteria[0].Criterion = SelectionCriterionType.LocationZ\nBODY1.GenerationCriteria[0].Operator = SelectionOperatorType.Equal\nBODY1.GenerationCriteria[0].Value = Quantity(\"1 [m]\")\nBODY1.GenerationCriteria.Add(None)\nBODY1.GenerationCriteria[1].EntityType = SelectionType.GeoFace\nBODY1.GenerationCriteria[1].Criterion = SelectionCriterionType.LocationZ\nBODY1.GenerationCriteria[1].Operator = SelectionOperatorType.Equal\nBODY1.GenerationCriteria[1].Value = Quantity(\"1 [m]\")\nBODY1.Generate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create construction geometry\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "CONST_GEOM = MODEL.AddConstructionGeometry()\nPath = CONST_GEOM.AddPath()\nPath.StartYCoordinate = Quantity(2, \"m\")\nPath.StartZCoordinate = Quantity(20, \"m\")\nPath.StartZCoordinate = Quantity(20, \"m\")\nPath.EndXCoordinate = Quantity(2, \"m\")\nSURF = CONST_GEOM.AddSurface()\nSURF.CoordinateSystem = LCS2\nCONST_GEOM.UpdateAllSolids()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define boundary condition and add results\nAdd temperature boundary conditions\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TEMP = STAT_THERM.AddTemperature()\nTEMP.Location = FACE1\nTEMP.Magnitude.Output.DiscreteValues = [Quantity(\"22[C]\"), Quantity(\"30[C]\")]\n\nTEMP2 = STAT_THERM.AddTemperature()\nTEMP2.Location = FACE2\nTEMP2.Magnitude.Output.DiscreteValues = [Quantity(\"22[C]\"), Quantity(\"60[C]\")]\n\nTEMP.Magnitude.Inputs[0].DiscreteValues = [\n Quantity(\"0 [sec]\"),\n Quantity(\"1 [sec]\"),\n Quantity(\"2 [sec]\"),\n]\nTEMP.Magnitude.Output.DiscreteValues = [\n Quantity(\"22[C]\"),\n Quantity(\"30[C]\"),\n Quantity(\"40[C]\"),\n]\n\nTEMP2.Magnitude.Inputs[0].DiscreteValues = [\n Quantity(\"0 [sec]\"),\n Quantity(\"1 [sec]\"),\n Quantity(\"2 [sec]\"),\n]\nTEMP2.Magnitude.Output.DiscreteValues = [\n Quantity(\"22[C]\"),\n Quantity(\"50[C]\"),\n Quantity(\"80[C]\"),\n]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add radiation\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "RAD = STAT_THERM.AddRadiation()\nRAD.Location = FACE3\nRAD.AmbientTemperature.Inputs[0].DiscreteValues = [\n Quantity(\"0 [sec]\"),\n Quantity(\"1 [sec]\"),\n Quantity(\"2 [sec]\"),\n]\nRAD.AmbientTemperature.Output.DiscreteValues = [\n Quantity(\"22[C]\"),\n Quantity(\"30[C]\"),\n Quantity(\"40[C]\"),\n]\nRAD.Correlation = RadiationType.SurfaceToSurface" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Analysis settings\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ANLYS_SET = STAT_THERM.AnalysisSettings\nANLYS_SET.NumberOfSteps = 2\nANLYS_SET.CalculateVolumeEnergy = True\n\nSTAT_THERM.Activate()\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"BC_steadystate.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"BC_steadystate.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add results\nTemperature\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STAT_THERM_SOLN = DataModel.Project.Model.Analyses[0].Solution\nTEMP_RST = STAT_THERM_SOLN.AddTemperature()\nTEMP_RST.By = SetDriverStyle.MaximumOverTime\n\n\nTEMP_RST2 = STAT_THERM_SOLN.AddTemperature()\nTEMP_RST2.Location = BODY1\n\nTEMP_RST3 = STAT_THERM_SOLN.AddTemperature()\nTEMP_RST3.Location = Path\n\nTEMP_RST4 = STAT_THERM_SOLN.AddTemperature()\nTEMP_RST4.Location = SURF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Total and directional heat flux\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TOT_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux()\nDIR_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux()\nDIR_HFLUX.ThermalResultType = TotalOrDirectional.Directional\nDIR_HFLUX.NormalOrientation = NormalOrientationType.ZAxis\n\nLCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalZ\nDIR_HFLUX.CoordinateSystem = LCS2\nDIR_HFLUX.DisplayOption = ResultAveragingType.Averaged" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thermal error\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "THERM_ERROR = STAT_THERM_SOLN.AddThermalError()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Temperature probe\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TEMP_PROBE = STAT_THERM_SOLN.AddTemperatureProbe()\nTEMP_PROBE.GeometryLocation = FACE1\nTEMP_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem\nTEMP_PROBE.CoordinateSystemSelection = LCS2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Heat flux probe\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "HFLUX_PROBE = STAT_THERM_SOLN.AddHeatFluxProbe()\nHFLUX_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem\nHFLUX_PROBE.CoordinateSystemSelection = LCS2\nHFLUX_PROBE.ResultSelection = ProbeDisplayFilter.ZAxis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reaction probe\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ANLYS_SET.NodalForces = OutputControlsNodalForcesType.Yes\nREAC_PROBE = STAT_THERM_SOLN.AddReactionProbe()\nREAC_PROBE.LocationMethod = LocationDefinitionMethod.GeometrySelection\nREAC_PROBE.GeometryLocation = FACE1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Radiation probe\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Rad_Probe = STAT_THERM_SOLN.AddRadiationProbe()\nRad_Probe.BoundaryConditionSelection = RAD\nRad_Probe.ResultSelection = ProbeDisplayFilter.All" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "STAT_THERM_SOLN.Solve(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Messages\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Messages = ExtAPI.Application.Messages\nif Messages:\n for message in Messages:\n print(f\"[{message.Severity}] {message.DisplayString}\")\nelse:\n print(\"No [Info]/[Warning]/[Error] Messages\")\n\n# Display results\n# ~~~~~~~~~~~~~~~\n# Total body temperature\n\nTree.Activate([TEMP_RST])\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"temp.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"temp.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Temperature on part of the body\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([TEMP_RST2])\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"temp2.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"temp2.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Temperature distribution along the specific path\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([TEMP_RST3])\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"temp3.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"temp3.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Temperature of bottom surface\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([TEMP_RST4])\nExtAPI.Graphics.Camera.SetFit()\nExtAPI.Graphics.ExportImage(\n os.path.join(cwd, \"temp4.png\"), image_export_format, settings_720p\n)\ndisplay_image(\"temp4.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export directional heat flux animation\nDirectional heat flux\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Tree.Activate([DIR_HFLUX])\nanimation_export_format = (\n Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF\n)\nsettings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings()\nsettings_720p.Width = 1280\nsettings_720p.Height = 720\n\nDIR_HFLUX.ExportAnimation(\n os.path.join(cwd, \"DirectionalHeatFlux.gif\"), animation_export_format, settings_720p\n)\ngif = Image.open(os.path.join(cwd, \"DirectionalHeatFlux.gif\"))\nfig, ax = plt.subplots(figsize=(16, 9))\nax.axis(\"off\")\nimg = ax.imshow(gif.convert(\"RGBA\"))\n\n\ndef update(frame):\n gif.seek(frame)\n img.set_array(gif.convert(\"RGBA\"))\n return [img]\n\n\nani = FuncAnimation(\n fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True\n)\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display output file from solve\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def write_file_contents_to_console(path):\n \"\"\"Write file contents to console.\"\"\"\n with open(path, \"rt\") as file:\n for line in file:\n print(line, end=\"\")\n\n\nsolve_path = STAT_THERM.WorkingDir\nsolve_out_path = os.path.join(solve_path, \"solve.out\")\nif solve_out_path:\n write_file_contents_to_console(solve_out_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Project tree\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def print_tree(node, indentation=\"\"):\n print(f\"{indentation}\u251c\u2500\u2500 {node.Name}\")\n\n if (\n hasattr(node, \"Children\")\n and node.Children is not None\n and node.Children.Count > 0\n ):\n for child in node.Children:\n print_tree(child, indentation + \"| \")\n\n\nroot_node = DataModel.Project\nprint_tree(root_node)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup\nSave project\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "app.save(os.path.join(cwd, \"steady_state_thermal.mechdat\"))\napp.new()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete example files\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "delete_downloads()" + ] + } + ], + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/f9fe154851faa50e73a25ffd979e59e1/fracture_analysis_contact_debonding.py b/_downloads/f9fe154851faa50e73a25ffd979e59e1/fracture_analysis_contact_debonding.py new file mode 100644 index 00000000..602e8124 --- /dev/null +++ b/_downloads/f9fe154851faa50e73a25ffd979e59e1/fracture_analysis_contact_debonding.py @@ -0,0 +1,455 @@ +""" .. _ref_contact: + +Fracture Analysis - Contact debonding +------------------------------------- + +The following example demonstrates the use of the Contact Debonding +featuring in Mechanical using the Cohesive Zone Material (CZM) method. +This example displaces two two-dimensional parts on a +double cantilever beam. +""" + +# %% +# Import necessary libraries +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +import os + +from PIL import Image +import ansys.mechanical.core as mech +from ansys.mechanical.core.examples import delete_downloads, download_file +from matplotlib import image as mpimg +from matplotlib import pyplot as plt +from matplotlib.animation import FuncAnimation + +# %% +# Embed mechanical and set global variables + +app = mech.App(version=241) +globals().update(mech.global_variables(app, True)) +print(app) + +cwd = os.path.join(os.getcwd(), "out") + + +def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + +# %% +# Configure graphics for image export +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front) +image_export_format = GraphicsImageExportFormat.PNG +settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() +settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution +settings_720p.Background = GraphicsBackgroundType.White +settings_720p.Width = 1280 +settings_720p.Height = 720 +settings_720p.CurrentGraphicsDisplay = False + +# %% +# Download geometry and materials files +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +geometry_path = download_file( + "Contact_Debonding_Example.agdb", "pymechanical", "embedding" +) +mat1_path = download_file( + "Contact_Debonding_Example_Mat1.xml", "pymechanical", "embedding" +) +mat2_path = download_file( + "Contact_Debonding_Example_Mat2.xml", "pymechanical", "embedding" +) + + +# %% +# Import the geometry +# ~~~~~~~~~~~~~~~~~~~ + +geometry_import = Model.GeometryImportGroup.AddGeometryImport() +geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic +) +geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() +geometry_import_preferences.ProcessNamedSelections = True +geometry_import_preferences.AnalysisType = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.AnalysisType.Type2D +) +geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences +) + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p +) +display_image("geometry.png") + +# %% +# Material import, named selections, and connections +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Import materials + +MODEL = Model +GEOMETRY = Model.Geometry +MAT_GRP = MODEL.Materials +MAT_GRP.Import(mat1_path) +MAT_GRP.Import(mat2_path) + +PART = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Part 2"][0] +MAT_BODY = [ + i + for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) + if i.Name == "Interface Body Material" +][0] +MAT_CZM = [ + i + for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) + if i.Name == "CZM Crack Material" +][0] + +# %% +# Connections + +connections = MODEL.AddConnections() +CONNECTIONS_GRP = connections.AddConnectionGroup() +MODEL.Connections.CreateAutomaticConnections() +CONNECTIONS_GRP = ExtAPI.DataModel.Project.Model.Connections +CONTACTS = [ + i + for i in CONNECTIONS_GRP.GetChildren[ + Ansys.ACT.Automation.Mechanical.Connections.ConnectionGroup + ](True) + if i.Name == "Contacts" +][0] +CONTACT_REGION = [ + i + for i in CONTACTS.GetChildren[ + Ansys.ACT.Automation.Mechanical.Connections.ContactRegion + ](True) + if i.Name == "Contact Region" +][0] + +# %% +# Named selections + +NAMED_SELECTIONS = ExtAPI.DataModel.Project.Model.NamedSelections +NS_EDGE_HIGH = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "High_Edge" +][0] +NS_EDGE_LOW = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Low_Edge" +][0] +NS_EDGES_SHORT = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Short_Edges" +][0] +NS_EDGES_LONG = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Long_Edges" +][0] +NS_EDGES_FIXED = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Fixed_Edges" +][0] +NS_VERTEX_DISP1 = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Disp1_Vertex" +][0] +NS_VERTEX_DISP2 = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Disp2_Vertex" +][0] +NS_FACES_BOTH = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Both_Faces" +][0] + +# %% +# Define static structural analysis and settings +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MODEL.AddStaticStructuralAnalysis() +STATIC_STRUCTURAL = ExtAPI.DataModel.AnalysisByName("Static Structural") +ANALYSIS_SETTINGS = STATIC_STRUCTURAL.AnalysisSettings +SOLUTION = STATIC_STRUCTURAL.Solution +MESH = Model.Mesh + +# Set unit system + +ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardNMM + +# Set 2D behavior + +GEOMETRY.Activate() +GEOMETRY.Model2DBehavior = Model2DBehavior.PlaneStrain + +# Assign material + +PART.Activate() +PART.Material = MAT_BODY.Name + +# Define contact Region + +CONTACT_REGION.Activate() +CONTACT_REGION.SourceLocation = NS_EDGE_HIGH +CONTACT_REGION.TargetLocation = NS_EDGE_LOW +CONTACT_REGION.ContactType = ContactType.Bonded +CONTACT_REGION.ContactFormulation = ContactFormulation.PurePenalty + +# %% +# Define mesh controls and generate mesh +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MESH.Activate() +MESH.ElementOrder = ElementOrder.Quadratic +MESH.UseAdaptiveSizing = False +MESH.ElementSize = Quantity("0.75 [mm]") + +SIZING_MESH = MESH.AddSizing() +SIZING_MESH.Location = NS_EDGES_SHORT +SIZING_MESH.ElementSize = Quantity("0.75 [mm]") +SIZING_MESH.Behavior = SizingBehavior.Hard + +SIZING_MESH2 = MESH.AddSizing() +SIZING_MESH2.Location = NS_EDGES_LONG +SIZING_MESH2.ElementSize = Quantity("0.5 [mm]") +SIZING_MESH2.Behavior = SizingBehavior.Hard + +FACE_MESHING = MESH.AddFaceMeshing() +FACE_MESHING.Location = NS_FACES_BOTH +FACE_MESHING.Method = FaceMeshingMethod.Quadrilaterals + +MESH.Activate() +MESH.GenerateMesh() + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "mesh.png"), image_export_format, settings_720p +) +display_image("mesh.png") + +# %% +# Add contact debonding object +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MODEL.Activate() +FRACTURE = MODEL.AddFracture() + +CONTACT_DEBONDING = FRACTURE.AddContactDebonding() +CONTACT_DEBONDING.Material = MAT_CZM.Name +CONTACT_DEBONDING.ContactRegion = CONTACT_REGION + +# %% +# Define analysis settings +# ~~~~~~~~~~~~~~~~~~~~~~~~ + +ANALYSIS_SETTINGS.Activate() +ANALYSIS_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.On +ANALYSIS_SETTINGS.DefineBy = TimeStepDefineByType.Substeps +ANALYSIS_SETTINGS.MaximumSubsteps = 100 +ANALYSIS_SETTINGS.InitialSubsteps = 100 +ANALYSIS_SETTINGS.MinimumSubsteps = 100 +ANALYSIS_SETTINGS.LargeDeflection = True + +# %% +# Define boundary conditions +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Add fixed support + +STATIC_STRUCTURAL.Activate() +FIXED_SUPPORT = STATIC_STRUCTURAL.AddFixedSupport() +FIXED_SUPPORT.Location = NS_EDGES_FIXED + +# %% +# Add displacement + +STATIC_STRUCTURAL.Activate() +DISPLACEMENT = STATIC_STRUCTURAL.AddDisplacement() +DISPLACEMENT.Location = NS_VERTEX_DISP1 +DISPLACEMENT.DefineBy = LoadDefineBy.Components +DISPLACEMENT.YComponent.Output.DiscreteValues = [Quantity("10 [mm]")] + +STATIC_STRUCTURAL.Activate() +DISPLACEMENT2 = STATIC_STRUCTURAL.AddDisplacement() +DISPLACEMENT2.Location = NS_VERTEX_DISP2 +DISPLACEMENT2.DefineBy = LoadDefineBy.Components +DISPLACEMENT2.YComponent.Output.DiscreteValues = [Quantity("-10 [mm]")] + +STATIC_STRUCTURAL.Activate() + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p +) +display_image("boundary_conditions.png") + +# %% +# Add results +# ~~~~~~~~~~~ + +SOLUTION.Activate() +DIRECTIONAL_DEFORMATION = SOLUTION.AddDirectionalDeformation() +DIRECTIONAL_DEFORMATION.NormalOrientation = NormalOrientationType.YAxis + +FORCE_REACTION = SOLUTION.AddForceReaction() +FORCE_REACTION.BoundaryConditionSelection = DISPLACEMENT + +# %% +# Solve +# ~~~~~ + +STATIC_STRUCTURAL.Activate() +SOLUTION.Solve(True) + +# sphinx_gallery_start_ignore +assert str(SOLUTION.Status) == "Done", "Solution status is not 'Done'" +# sphinx_gallery_end_ignore + +# %% +# Messages +# ~~~~~~~~ + +Messages = ExtAPI.Application.Messages +if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") +else: + print("No [Info]/[Warning]/[Error] Messages") + +# %% +# Display results +# ~~~~~~~~~~~~~~~ +# Directional deformation + +DIRECTIONAL_DEFORMATION.Activate() + +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "directional_deformation.png"), image_export_format, settings_720p +) +display_image("directional_deformation.png") + +# %% +# Force reaction + +FORCE_REACTION.Activate() + +ExtAPI.Graphics.Camera.SetFit() +ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "force_reaction.png"), image_export_format, settings_720p +) +display_image("force_reaction.png") + +# %% +# Export animation +# ~~~~~~~~~~~~~~~~ + +animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF +) +settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() +settings_720p.Width = 1280 +settings_720p.Height = 720 + +FORCE_REACTION.ExportAnimation( + os.path.join(cwd, "force_reaction.gif"), animation_export_format, settings_720p +) +gif = Image.open(os.path.join(cwd, "force_reaction.gif")) +fig, ax = plt.subplots(figsize=(16, 9)) +ax.axis("off") +img = ax.imshow(gif.convert("RGBA")) + + +def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + +ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True +) +plt.show() + +# %% +# Display output file from solve +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + +solve_path = STATIC_STRUCTURAL.WorkingDir +solve_out_path = os.path.join(solve_path, "solve.out") +if solve_out_path: + write_file_contents_to_console(solve_out_path) + +# %% +# Project tree +# ~~~~~~~~~~~~ + + +def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + +root_node = DataModel.Project +print_tree(root_node) + +# %% +# Cleanup +# ~~~~~~~ +# Save project + +app.save(os.path.join(cwd, "contact_debonding.mechdat")) +app.new() + +# %% +# Delete example files + +delete_downloads() diff --git a/_images/Topo_opitimized.gif b/_images/Topo_opitimized.gif new file mode 100644 index 00000000..c6f8dfbf Binary files /dev/null and b/_images/Topo_opitimized.gif differ diff --git a/_images/sphx_glr_Rotor_Blade_Inverse_solve_001.png b/_images/sphx_glr_Rotor_Blade_Inverse_solve_001.png new file mode 100644 index 00000000..b34ec2d5 Binary files /dev/null and b/_images/sphx_glr_Rotor_Blade_Inverse_solve_001.png differ diff --git a/_images/sphx_glr_Rotor_Blade_Inverse_solve_002.png b/_images/sphx_glr_Rotor_Blade_Inverse_solve_002.png new file mode 100644 index 00000000..fd244866 Binary files /dev/null and b/_images/sphx_glr_Rotor_Blade_Inverse_solve_002.png differ diff --git a/_images/sphx_glr_Rotor_Blade_Inverse_solve_003.png b/_images/sphx_glr_Rotor_Blade_Inverse_solve_003.png new file mode 100644 index 00000000..d8b6f0ad Binary files /dev/null and b/_images/sphx_glr_Rotor_Blade_Inverse_solve_003.png differ diff --git a/_images/sphx_glr_Rotor_Blade_Inverse_solve_004.png b/_images/sphx_glr_Rotor_Blade_Inverse_solve_004.png new file mode 100644 index 00000000..4407944f Binary files /dev/null and b/_images/sphx_glr_Rotor_Blade_Inverse_solve_004.png differ diff --git a/_images/sphx_glr_Rotor_Blade_Inverse_solve_thumb.png b/_images/sphx_glr_Rotor_Blade_Inverse_solve_thumb.png new file mode 100644 index 00000000..22c5de82 Binary files /dev/null and b/_images/sphx_glr_Rotor_Blade_Inverse_solve_thumb.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_001.png b/_images/sphx_glr_fracture_analysis_contact_debonding_001.png new file mode 100644 index 00000000..a47e5a15 Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_001.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_002.png b/_images/sphx_glr_fracture_analysis_contact_debonding_002.png new file mode 100644 index 00000000..5999a0b6 Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_002.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_003.png b/_images/sphx_glr_fracture_analysis_contact_debonding_003.png new file mode 100644 index 00000000..57947734 Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_003.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_004.png b/_images/sphx_glr_fracture_analysis_contact_debonding_004.png new file mode 100644 index 00000000..ed71e7d8 Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_004.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_005.png b/_images/sphx_glr_fracture_analysis_contact_debonding_005.png new file mode 100644 index 00000000..746fbe3e Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_005.png differ diff --git a/_images/sphx_glr_fracture_analysis_contact_debonding_thumb.png b/_images/sphx_glr_fracture_analysis_contact_debonding_thumb.png new file mode 100644 index 00000000..a0abfd42 Binary files /dev/null and b/_images/sphx_glr_fracture_analysis_contact_debonding_thumb.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_001.png b/_images/sphx_glr_steady_state_thermal_analysis_001.png new file mode 100644 index 00000000..3afb02c6 Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_001.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_002.png b/_images/sphx_glr_steady_state_thermal_analysis_002.png new file mode 100644 index 00000000..0cf3874f Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_002.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_003.png b/_images/sphx_glr_steady_state_thermal_analysis_003.png new file mode 100644 index 00000000..209b1e5d Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_003.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_004.png b/_images/sphx_glr_steady_state_thermal_analysis_004.png new file mode 100644 index 00000000..5e347e84 Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_004.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_005.png b/_images/sphx_glr_steady_state_thermal_analysis_005.png new file mode 100644 index 00000000..a5954c0c Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_005.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_006.png b/_images/sphx_glr_steady_state_thermal_analysis_006.png new file mode 100644 index 00000000..bc508d4d Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_006.png differ diff --git a/_images/sphx_glr_steady_state_thermal_analysis_thumb.png b/_images/sphx_glr_steady_state_thermal_analysis_thumb.png new file mode 100644 index 00000000..5cbe83c5 Binary files /dev/null and b/_images/sphx_glr_steady_state_thermal_analysis_thumb.png differ diff --git a/_images/sphx_glr_topology_optimization_cantilever_beam_001.png b/_images/sphx_glr_topology_optimization_cantilever_beam_001.png new file mode 100644 index 00000000..6a8ed79a Binary files /dev/null and b/_images/sphx_glr_topology_optimization_cantilever_beam_001.png differ diff --git a/_images/sphx_glr_topology_optimization_cantilever_beam_002.png b/_images/sphx_glr_topology_optimization_cantilever_beam_002.png new file mode 100644 index 00000000..3297b8ef Binary files /dev/null and b/_images/sphx_glr_topology_optimization_cantilever_beam_002.png differ diff --git a/_images/sphx_glr_topology_optimization_cantilever_beam_003.png b/_images/sphx_glr_topology_optimization_cantilever_beam_003.png new file mode 100644 index 00000000..ff7d31fe Binary files /dev/null and b/_images/sphx_glr_topology_optimization_cantilever_beam_003.png differ diff --git a/_images/sphx_glr_topology_optimization_cantilever_beam_004.png b/_images/sphx_glr_topology_optimization_cantilever_beam_004.png new file mode 100644 index 00000000..4b37bc21 Binary files /dev/null and b/_images/sphx_glr_topology_optimization_cantilever_beam_004.png differ diff --git a/_images/sphx_glr_topology_optimization_cantilever_beam_thumb.png b/_images/sphx_glr_topology_optimization_cantilever_beam_thumb.png new file mode 100644 index 00000000..19d24d43 Binary files /dev/null and b/_images/sphx_glr_topology_optimization_cantilever_beam_thumb.png differ diff --git a/_images/sphx_glr_valve_001.png b/_images/sphx_glr_valve_001.png new file mode 100644 index 00000000..744e4aa2 Binary files /dev/null and b/_images/sphx_glr_valve_001.png differ diff --git a/_images/sphx_glr_valve_002.png b/_images/sphx_glr_valve_002.png new file mode 100644 index 00000000..b2b4847c Binary files /dev/null and b/_images/sphx_glr_valve_002.png differ diff --git a/_images/sphx_glr_valve_003.png b/_images/sphx_glr_valve_003.png new file mode 100644 index 00000000..26911c6a Binary files /dev/null and b/_images/sphx_glr_valve_003.png differ diff --git a/_images/sphx_glr_valve_004.png b/_images/sphx_glr_valve_004.png new file mode 100644 index 00000000..247e391e Binary files /dev/null and b/_images/sphx_glr_valve_004.png differ diff --git a/_images/sphx_glr_valve_005.png b/_images/sphx_glr_valve_005.png new file mode 100644 index 00000000..ec7b47b7 Binary files /dev/null and b/_images/sphx_glr_valve_005.png differ diff --git a/_images/sphx_glr_valve_thumb.png b/_images/sphx_glr_valve_thumb.png new file mode 100644 index 00000000..82c8f7e1 Binary files /dev/null and b/_images/sphx_glr_valve_thumb.png differ diff --git a/_sources/examples/basic/fracture_analysis_contact_debonding.rst.txt b/_sources/examples/basic/fracture_analysis_contact_debonding.rst.txt new file mode 100644 index 00000000..b2f1ead7 --- /dev/null +++ b/_sources/examples/basic/fracture_analysis_contact_debonding.rst.txt @@ -0,0 +1,23309 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/basic/fracture_analysis_contact_debonding.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_basic_fracture_analysis_contact_debonding.py: + +.. _ref_contact: + +Fracture Analysis - Contact debonding +------------------------------------- + +The following example demonstrates the use of the Contact Debonding +featuring in Mechanical using the Cohesive Zone Material (CZM) method. +This example displaces two two-dimensional parts on a +double cantilever beam. + +.. GENERATED FROM PYTHON SOURCE LINES 13-15 + +Import necessary libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 15-25 + +.. code-block:: Python + + + import os + + from PIL import Image + import ansys.mechanical.core as mech + from ansys.mechanical.core.examples import delete_downloads, download_file + from matplotlib import image as mpimg + from matplotlib import pyplot as plt + from matplotlib.animation import FuncAnimation + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 26-27 + +Embed mechanical and set global variables + +.. GENERATED FROM PYTHON SOURCE LINES 27-44 + +.. code-block:: Python + + + app = mech.App(version=241) + globals().update(mech.global_variables(app, True)) + print(app) + + cwd = os.path.join(os.getcwd(), "out") + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /usr/local/lib/python3.9/dist-packages/clr_loader/mono.py:180: UserWarning: Hosting Mono versions before v6.12 is known to be problematic. If the process crashes shortly after you see this message, try updating Mono to at least v6.12. + warnings.warn( + Ansys Mechanical [Ansys Mechanical Enterprise] + Product Version:241 + Software build date: 11/27/2023 10:24:20 + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 45-47 + +Configure graphics for image export +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 47-57 + +.. code-block:: Python + + + ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front) + image_export_format = GraphicsImageExportFormat.PNG + settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() + settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution + settings_720p.Background = GraphicsBackgroundType.White + settings_720p.Width = 1280 + settings_720p.Height = 720 + settings_720p.CurrentGraphicsDisplay = False + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 58-60 + +Download geometry and materials files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 60-72 + +.. code-block:: Python + + + geometry_path = download_file( + "Contact_Debonding_Example.agdb", "pymechanical", "embedding" + ) + mat1_path = download_file( + "Contact_Debonding_Example_Mat1.xml", "pymechanical", "embedding" + ) + mat2_path = download_file( + "Contact_Debonding_Example_Mat2.xml", "pymechanical", "embedding" + ) + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 73-75 + +Import the geometry +~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 75-95 + +.. code-block:: Python + + + geometry_import = Model.GeometryImportGroup.AddGeometryImport() + geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic + ) + geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() + geometry_import_preferences.ProcessNamedSelections = True + geometry_import_preferences.AnalysisType = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.AnalysisType.Type2D + ) + geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences + ) + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p + ) + display_image("geometry.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_001.png + :alt: fracture analysis contact debonding + :srcset: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 96-99 + +Material import, named selections, and connections +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Import materials + +.. GENERATED FROM PYTHON SOURCE LINES 99-118 + +.. code-block:: Python + + + MODEL = Model + GEOMETRY = Model.Geometry + MAT_GRP = MODEL.Materials + MAT_GRP.Import(mat1_path) + MAT_GRP.Import(mat2_path) + + PART = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Part 2"][0] + MAT_BODY = [ + i + for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) + if i.Name == "Interface Body Material" + ][0] + MAT_CZM = [ + i + for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) + if i.Name == "CZM Crack Material" + ][0] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 119-120 + +Connections + +.. GENERATED FROM PYTHON SOURCE LINES 120-140 + +.. code-block:: Python + + + connections = MODEL.AddConnections() + CONNECTIONS_GRP = connections.AddConnectionGroup() + MODEL.Connections.CreateAutomaticConnections() + CONNECTIONS_GRP = ExtAPI.DataModel.Project.Model.Connections + CONTACTS = [ + i + for i in CONNECTIONS_GRP.GetChildren[ + Ansys.ACT.Automation.Mechanical.Connections.ConnectionGroup + ](True) + if i.Name == "Contacts" + ][0] + CONTACT_REGION = [ + i + for i in CONTACTS.GetChildren[ + Ansys.ACT.Automation.Mechanical.Connections.ContactRegion + ](True) + if i.Name == "Contact Region" + ][0] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 141-142 + +Named selections + +.. GENERATED FROM PYTHON SOURCE LINES 142-201 + +.. code-block:: Python + + + NAMED_SELECTIONS = ExtAPI.DataModel.Project.Model.NamedSelections + NS_EDGE_HIGH = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "High_Edge" + ][0] + NS_EDGE_LOW = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Low_Edge" + ][0] + NS_EDGES_SHORT = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Short_Edges" + ][0] + NS_EDGES_LONG = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Long_Edges" + ][0] + NS_EDGES_FIXED = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Fixed_Edges" + ][0] + NS_VERTEX_DISP1 = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Disp1_Vertex" + ][0] + NS_VERTEX_DISP2 = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Disp2_Vertex" + ][0] + NS_FACES_BOTH = [ + i + for i in NAMED_SELECTIONS.GetChildren[ + Ansys.ACT.Automation.Mechanical.NamedSelection + ](True) + if i.Name == "Both_Faces" + ][0] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 202-204 + +Define static structural analysis and settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 204-233 + +.. code-block:: Python + + + MODEL.AddStaticStructuralAnalysis() + STATIC_STRUCTURAL = ExtAPI.DataModel.AnalysisByName("Static Structural") + ANALYSIS_SETTINGS = STATIC_STRUCTURAL.AnalysisSettings + SOLUTION = STATIC_STRUCTURAL.Solution + MESH = Model.Mesh + + # Set unit system + + ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardNMM + + # Set 2D behavior + + GEOMETRY.Activate() + GEOMETRY.Model2DBehavior = Model2DBehavior.PlaneStrain + + # Assign material + + PART.Activate() + PART.Material = MAT_BODY.Name + + # Define contact Region + + CONTACT_REGION.Activate() + CONTACT_REGION.SourceLocation = NS_EDGE_HIGH + CONTACT_REGION.TargetLocation = NS_EDGE_LOW + CONTACT_REGION.ContactType = ContactType.Bonded + CONTACT_REGION.ContactFormulation = ContactFormulation.PurePenalty + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 234-236 + +Define mesh controls and generate mesh +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 236-265 + +.. code-block:: Python + + + MESH.Activate() + MESH.ElementOrder = ElementOrder.Quadratic + MESH.UseAdaptiveSizing = False + MESH.ElementSize = Quantity("0.75 [mm]") + + SIZING_MESH = MESH.AddSizing() + SIZING_MESH.Location = NS_EDGES_SHORT + SIZING_MESH.ElementSize = Quantity("0.75 [mm]") + SIZING_MESH.Behavior = SizingBehavior.Hard + + SIZING_MESH2 = MESH.AddSizing() + SIZING_MESH2.Location = NS_EDGES_LONG + SIZING_MESH2.ElementSize = Quantity("0.5 [mm]") + SIZING_MESH2.Behavior = SizingBehavior.Hard + + FACE_MESHING = MESH.AddFaceMeshing() + FACE_MESHING.Location = NS_FACES_BOTH + FACE_MESHING.Method = FaceMeshingMethod.Quadrilaterals + + MESH.Activate() + MESH.GenerateMesh() + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "mesh.png"), image_export_format, settings_720p + ) + display_image("mesh.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_002.png + :alt: fracture analysis contact debonding + :srcset: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_002.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 266-268 + +Add contact debonding object +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 268-276 + +.. code-block:: Python + + + MODEL.Activate() + FRACTURE = MODEL.AddFracture() + + CONTACT_DEBONDING = FRACTURE.AddContactDebonding() + CONTACT_DEBONDING.Material = MAT_CZM.Name + CONTACT_DEBONDING.ContactRegion = CONTACT_REGION + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 277-279 + +Define analysis settings +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 279-288 + +.. code-block:: Python + + + ANALYSIS_SETTINGS.Activate() + ANALYSIS_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.On + ANALYSIS_SETTINGS.DefineBy = TimeStepDefineByType.Substeps + ANALYSIS_SETTINGS.MaximumSubsteps = 100 + ANALYSIS_SETTINGS.InitialSubsteps = 100 + ANALYSIS_SETTINGS.MinimumSubsteps = 100 + ANALYSIS_SETTINGS.LargeDeflection = True + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 289-292 + +Define boundary conditions +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Add fixed support + +.. GENERATED FROM PYTHON SOURCE LINES 292-297 + +.. code-block:: Python + + + STATIC_STRUCTURAL.Activate() + FIXED_SUPPORT = STATIC_STRUCTURAL.AddFixedSupport() + FIXED_SUPPORT.Location = NS_EDGES_FIXED + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 298-299 + +Add displacement + +.. GENERATED FROM PYTHON SOURCE LINES 299-320 + +.. code-block:: Python + + + STATIC_STRUCTURAL.Activate() + DISPLACEMENT = STATIC_STRUCTURAL.AddDisplacement() + DISPLACEMENT.Location = NS_VERTEX_DISP1 + DISPLACEMENT.DefineBy = LoadDefineBy.Components + DISPLACEMENT.YComponent.Output.DiscreteValues = [Quantity("10 [mm]")] + + STATIC_STRUCTURAL.Activate() + DISPLACEMENT2 = STATIC_STRUCTURAL.AddDisplacement() + DISPLACEMENT2.Location = NS_VERTEX_DISP2 + DISPLACEMENT2.DefineBy = LoadDefineBy.Components + DISPLACEMENT2.YComponent.Output.DiscreteValues = [Quantity("-10 [mm]")] + + STATIC_STRUCTURAL.Activate() + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p + ) + display_image("boundary_conditions.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_003.png + :alt: fracture analysis contact debonding + :srcset: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 321-323 + +Add results +~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 323-331 + +.. code-block:: Python + + + SOLUTION.Activate() + DIRECTIONAL_DEFORMATION = SOLUTION.AddDirectionalDeformation() + DIRECTIONAL_DEFORMATION.NormalOrientation = NormalOrientationType.YAxis + + FORCE_REACTION = SOLUTION.AddForceReaction() + FORCE_REACTION.BoundaryConditionSelection = DISPLACEMENT + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 332-334 + +Solve +~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 334-339 + +.. code-block:: Python + + + STATIC_STRUCTURAL.Activate() + SOLUTION.Solve(True) + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 343-345 + +Messages +~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 345-353 + +.. code-block:: Python + + + Messages = ExtAPI.Application.Messages + if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") + else: + print("No [Info]/[Warning]/[Error] Messages") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + [Warning] Large deformation effects are active which may have invalidated some of your applied supports such as displacement, cylindrical, frictionless, or compression only. Refer to Troubleshooting in the Help System for more details. + [Warning] Contact status has experienced an abrupt change. Check results carefully for possible contact separation. + + + + +.. GENERATED FROM PYTHON SOURCE LINES 354-357 + +Display results +~~~~~~~~~~~~~~~ +Directional deformation + +.. GENERATED FROM PYTHON SOURCE LINES 357-365 + +.. code-block:: Python + + + DIRECTIONAL_DEFORMATION.Activate() + + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "directional_deformation.png"), image_export_format, settings_720p + ) + display_image("directional_deformation.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_004.png + :alt: fracture analysis contact debonding + :srcset: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 366-367 + +Force reaction + +.. GENERATED FROM PYTHON SOURCE LINES 367-376 + +.. code-block:: Python + + + FORCE_REACTION.Activate() + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "force_reaction.png"), image_export_format, settings_720p + ) + display_image("force_reaction.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_005.png + :alt: fracture analysis contact debonding + :srcset: /examples/basic/images/sphx_glr_fracture_analysis_contact_debonding_005.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 377-379 + +Export animation +~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 379-407 + +.. code-block:: Python + + + animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF + ) + settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() + settings_720p.Width = 1280 + settings_720p.Height = 720 + + FORCE_REACTION.ExportAnimation( + os.path.join(cwd, "force_reaction.gif"), animation_export_format, settings_720p + ) + gif = Image.open(os.path.join(cwd, "force_reaction.gif")) + fig, ax = plt.subplots(figsize=(16, 9)) + ax.axis("off") + img = ax.imshow(gif.convert("RGBA")) + + + def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + + ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True + ) + plt.show() + + + + +.. container:: sphx-glr-animation + + .. raw:: html + + + + + + + +
+ +
+ +
+ + + + + + + + + +
+
+ + + + + + +
+
+
+ + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 408-410 + +Display output file from solve +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 410-424 + +.. code-block:: Python + + + + def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + + solve_path = STATIC_STRUCTURAL.WorkingDir + solve_out_path = os.path.join(solve_path, "solve.out") + if solve_out_path: + write_file_contents_to_console(solve_out_path) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + Ansys Mechanical Enterprise + + + *------------------------------------------------------------------* + | | + | W E L C O M E T O T H E A N S Y S (R) P R O G R A M | + | | + *------------------------------------------------------------------* + + + + + *************************************************************** + * ANSYS MAPDL 2024 R1 LEGAL NOTICES * + *************************************************************** + * * + * Copyright 1971-2024 Ansys, Inc. All rights reserved. * + * Unauthorized use, distribution or duplication is * + * prohibited. * + * * + * Ansys is a registered trademark of Ansys, Inc. or its * + * subsidiaries in the United States or other countries. * + * See the Ansys, Inc. online documentation or the Ansys, Inc. * + * documentation CD or online help for the complete Legal * + * Notice. * + * * + *************************************************************** + * * + * THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION * + * INCLUDE TRADE SECRETS AND CONFIDENTIAL AND PROPRIETARY * + * PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. * + * The software products and documentation are furnished by * + * Ansys, Inc. or its subsidiaries under a software license * + * agreement that contains provisions concerning * + * non-disclosure, copying, length and nature of use, * + * compliance with exporting laws, warranties, disclaimers, * + * limitations of liability, and remedies, and other * + * provisions. The software products and documentation may be * + * used, disclosed, transferred, or copied only in accordance * + * with the terms and conditions of that software license * + * agreement. * + * * + * Ansys, Inc. is a UL registered * + * ISO 9001:2015 company. * + * * + *************************************************************** + * * + * This product is subject to U.S. laws governing export and * + * re-export. * + * * + * For U.S. Government users, except as specifically granted * + * by the Ansys, Inc. software license agreement, the use, * + * duplication, or disclosure by the United States Government * + * is subject to restrictions stated in the Ansys, Inc. * + * software license agreement and FAR 12.212 (for non-DOD * + * licenses). * + * * + *************************************************************** + + + + *------------------------------------------------------------------* + | Ansys Product Improvement | + | | + | Ansys Product Improvement Program helps improve Ansys | + | products. Participating in this program is like filling out a | + | survey. Without interrupting your work, the software reports | + | anonymous usage information such as errors, machine and | + | solver statistics, features used, etc. to Ansys. We never | + | use the data to identify or contact you. | + | The data does NOT contain: | + | - Any personally identifiable information including names, | + | IP addresses, file names, part names, etc. | + | - Any information about your geometry or design specific | + | inputs. | + | You can stop participation at any time. To change your | + | selection go to Help >> Ansys Product Improvement Program | + | in the GUI. | + | For more information about the Ansys Privacy Policy, please | + | check: http://www.ansys.com/privacy | + | | + *------------------------------------------------------------------* + + + 2024 R1 + + Point Releases and Patches installed: + + Ansys, Inc. License Manager 2024 R1 + Structures 2024 R1 + LS-DYNA 2024 R1 + Mechanical Products 2024 R1 + + + ***** MAPDL COMMAND LINE ARGUMENTS ***** + BATCH MODE REQUESTED (-b) = NOLIST + INPUT FILE COPY MODE (-c) = COPY + DISTRIBUTED MEMORY PARALLEL REQUESTED + 4 PARALLEL PROCESSES REQUESTED WITH SINGLE THREAD PER PROCESS + TOTAL OF 4 CORES REQUESTED + INPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/dummy.dat + OUTPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/solve.out + START-UP FILE MODE = NOREAD + STOP FILE MODE = NOREAD + + RELEASE= 2024 R1 BUILD= 24.1 UP20231106 VERSION=LINUX x64 + CURRENT JOBNAME=file0 03:04:44 FEB 02, 2024 CP= 0.231 + + + PARAMETER _DS_PROGRESS = 999.0000000 + + /INPUT FILE= ds.dat LINE= 0 + + + + *** NOTE *** CP = 0.304 TIME= 03:04:44 + The /CONFIG,NOELDB command is not valid in a distributed memory + parallel solution. Command is ignored. + + *GET _WALLSTRT FROM ACTI ITEM=TIME WALL VALUE= 3.07888889 + + TITLE= + --Static Structural + + + SET PARAMETER DIMENSIONS ON _WB_PROJECTSCRATCH_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_PROJECTSCRATCH_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/ + + SET PARAMETER DIMENSIONS ON _WB_SOLVERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_SOLVERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/ + + SET PARAMETER DIMENSIONS ON _WB_USERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_USERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/UserFiles/ + --- Data in consistent NMM units. See Solving Units in the help system for more + + MPA UNITS SPECIFIED FOR INTERNAL + LENGTH = MILLIMETERS (mm) + MASS = TONNE (Mg) + TIME = SECONDS (sec) + TEMPERATURE = CELSIUS (C) + TOFFSET = 273.0 + FORCE = NEWTON (N) + HEAT = MILLIJOULES (mJ) + + INPUT UNITS ARE ALSO SET TO MPA + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:04:44 FEB 02, 2024 CP= 0.308 + + --Static Structural + + + + ***** MAPDL ANALYSIS DEFINITION (PREP7) ***** + *********** Nodes for the whole assembly *********** + *********** Elements for Body 1 "Surface Body" *********** + *********** Elements for Body 2 "Surface Body" *********** + *********** Send User Defined Coordinate System(s) *********** + *********** Set Reference Temperature *********** + *********** Send Materials *********** + *********** Send Sheet Properties *********** + *********** Create Contact "Bonded - High_Edge To Low_Edge" *********** + Real Constant Set For Above Contact Is 4 & 3 + *********** Create Debonding "Contact Debonding" *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Element Component *********** + *********** Send Named Selection as Element Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Element Component *********** + *********** Send Named Selection as Node Component *********** + *********** Fixed Supports *********** + + + ***** ROUTINE COMPLETED ***** CP = 0.373 + + + --- Number of total nodes = 3210 + --- Number of contact elements = 560 + --- Number of spring elements = 0 + --- Number of bearing elements = 0 + --- Number of solid elements = 800 + --- Number of condensed parts = 0 + --- Number of total elements = 1360 + + *GET _WALLBSOL FROM ACTI ITEM=TIME WALL VALUE= 3.07888889 + **************************************************************************** + ************************* SOLUTION ******************************** + **************************************************************************** + + ***** MAPDL SOLUTION ROUTINE ***** + + + PERFORM A STATIC ANALYSIS + THIS WILL BE A NEW ANALYSIS + + LARGE DEFORMATION ANALYSIS + + PARAMETER _THICKRATIO = 0.000000000 + + USE SPARSE MATRIX DIRECT SOLVER + + CONTACT INFORMATION PRINTOUT LEVEL 1 + + CHECK INITIAL OPEN/CLOSED STATUS OF SELECTED CONTACT ELEMENTS + AND LIST DETAILED CONTACT PAIR INFORMATION + + SPLIT CONTACT SURFACES AT SOLVE PHASE + + NUMBER OF SPLITTING TBD BY PROGRAM + + DO NOT COMBINE ELEMENT MATRIX FILES (.emat) AFTER DISTRIBUTED PARALLEL SOLUTION + + DO NOT COMBINE ELEMENT SAVE DATA FILES (.esav) AFTER DISTRIBUTED PARALLEL SOLUTION + + NLDIAG: Nonlinear diagnostics CONT option is set to ON. + Writing frequency : each ITERATION. + + DEFINE RESTART CONTROL FOR LOADSTEP LAST + AT FREQUENCY OF LAST AND NUMBER FOR OVERWRITE IS -1 + + DELETE RESTART FILES OF ENDSTEP + **************************************************** + ******************* SOLVE FOR LS 1 OF 1 **************** + *** Set Displacements *** + CMBLOCK read of NODE component _CM77UY_YP completed + + SELECT COMPONENT _CM77UY_YP + + SPECIFIED CONSTRAINT UY FOR SELECTED NODES 1 TO 3210 BY 1 + REAL= 10.0000000 IMAG= 0.00000000 + CMBLOCK read of NODE component _CM79UY_YP completed + + SELECT COMPONENT _CM79UY_YP + + SPECIFIED CONSTRAINT UY FOR SELECTED NODES 1 TO 3210 BY 1 + REAL= -10.0000000 IMAG= 0.00000000 + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 3210 STEP 1 + + 3210 NODES (OF 3210 DEFINED) SELECTED BY NSEL COMMAND. + *** Component For All Non-Zero UY Displacements *** + + SELECT COMPONENT _CM77UY_YP + + ALSO SELECT COMPONENT _CM79UY_YP + + DEFINITION OF COMPONENT = _DISPNONZEROUY ENTITY=NODE + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 3210 STEP 1 + + 3210 NODES (OF 3210 DEFINED) SELECTED BY NSEL COMMAND. + + PRINTOUT RESUMED BY /GOP + + USE AUTOMATIC TIME STEPPING THIS LOAD STEP + + USE 100 SUBSTEPS INITIALLY THIS LOAD STEP FOR ALL DEGREES OF FREEDOM + FOR AUTOMATIC TIME STEPPING: + USE 100 SUBSTEPS AS A MAXIMUM + USE 100 SUBSTEPS AS A MINIMUM + + TIME= 1.0000 + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + WRITE ALL ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE + FOR ALL APPLICABLE ENTITIES + + WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE ETMP ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE STRS ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EPEL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EPPL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE CONT ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + *GET ANSINTER_ FROM ACTI ITEM=INT VALUE= 0.00000000 + + *IF ANSINTER_ ( = 0.00000 ) NE + 0 ( = 0.00000 ) THEN + + *ENDIF + + *** NOTE *** CP = 0.526 TIME= 03:04:44 + The automatic domain decomposition logic has selected the MESH domain + decomposition method with 4 processes per solution. + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 0.549 TIME= 03:04:44 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** NOTE *** CP = 0.557 TIME= 03:04:44 + The model data was checked and warning messages were found. + Please review output or errors file ( /github/home/.mw/Application + Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/file0 + 0.err ) for these warning messages. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRAIN OPTION. IT IS NOT ASSOCIATED + WITH FULLY INCOMPRESSIBLE HYPERELASTIC MATERIALS. NO SUGGESTION IS AVAILABLE + AND NO RESETTING IS NEEDED. + + ELEMENT TYPE 2 IS PLANE183 WITH PLANE STRAIN OPTION. IT IS NOT ASSOCIATED + WITH FULLY INCOMPRESSIBLE HYPERELASTIC MATERIALS. NO SUGGESTION IS AVAILABLE + AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:04:44 FEB 02, 2024 CP= 0.560 + + --Static Structural + + + + S O L U T I O N O P T I O N S + + PROBLEM DIMENSIONALITY. . . . . . . . . . . . .2-D + DEGREES OF FREEDOM. . . . . . UX UY + ANALYSIS TYPE . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE) + OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . . 273.15 + NONLINEAR GEOMETRIC EFFECTS . . . . . . . . . .ON + EQUATION SOLVER OPTION. . . . . . . . . . . . .SPARSE + PLASTIC MATERIAL PROPERTIES INCLUDED. . . . . .YES + NEWTON-RAPHSON OPTION . . . . . . . . . . . . .PROGRAM CHOSEN + GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC + + *** NOTE *** CP = 0.565 TIME= 03:04:44 + Poisson's ratio PR input has been converted to NU input. + + *** WARNING *** CP = 0.566 TIME= 03:04:44 + The ratio of the maximum Young's or shear modulus to the minimum + Young's or shear modulus for material 1 exceeds 1.0e9. Accuracy may + be poor. + + *** WARNING *** CP = 0.566 TIME= 03:04:44 + The ratio of the maximum Young's or shear modulus to the minimum + Young's or shear modulus for material 2 exceeds 1.0e9. Accuracy may + be poor. + + *** NOTE *** CP = 0.573 TIME= 03:04:44 + The step data was checked and warning messages were found. + Please review output or errors file ( /github/home/.mw/Application + Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural/file0 + 0.err ) for these warning messages. + + *** NOTE *** CP = 0.573 TIME= 03:04:44 + This nonlinear analysis defaults to using the full Newton-Raphson + solution procedure. This can be modified using the NROPT command. + + *** NOTE *** CP = 0.573 TIME= 03:04:44 + The conditions for direct assembly have been met. No .emat or .erot + files will be produced. + + CHECK INITIAL OPEN/CLOSED STATUS OF SELECTED CONTACT ELEMENTS + AND LIST DETAILED CONTACT PAIR INFORMATION + + *** WARNING *** CP = 0.694 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + *** WARNING *** CP = 0.695 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + 140 CONTACT ELEMENTS & 140 TARGET ELEMENTS ARE UNSELECTED FOR PREPARATION OF SPLITTING. + 1 CONTACT PAIRS ARE UNSELECTED. + + *** NOTE *** CP = 0.706 TIME= 03:04:44 + No contact pairs are being split by the CNCH,DMP logic. This may be + due to CHCH,DMP command has been applied before for this model or + number of contact elements in each domain is small enough for good + scalability. + + BECAUSE SPLIT WAS NOT DONE FOR CONNECT REGION(S), UNSELECTED ELEMENTS ARE REVERTED (SELECTED). + + *** NOTE *** CP = 0.790 TIME= 03:04:44 + Symmetric Deformable- deformable contact pair identified by real + constant set 3 and contact element type 3 has been set up. The + companion pair has real constant set ID 4. Both pairs should have the + same behavior. + *WARNING*: The contact pairs have similar mesh patterns. MAPDL will + keep the current pair and deactivate its companion pair. + Contact algorithm: Penalty method + Contact detection at: Gauss integration point + Contact stiffness factor FKN 10.000 + The resulting initial contact stiffness 0.30761E+07 + Default penetration tolerance factor FTOLN 0.10000 + The resulting penetration tolerance 0.75000E-01 + Default opening contact stiffness OPSF will be used. + Default tangent stiffness factor FKT 1.0000 + Default elastic slip factor SLTOL 0.50000E-02 + The resulting elastic slip tolerance 0.25000E-02 + Update contact stiffness at each iteration + Default Max. friction stress TAUMAX 0.10000E+21 + Average contact surface length 0.50000 + Average contact pair depth 0.75000 + Average target surface length 0.50000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.18750 + Initial penetration/gap is excluded. + Bonded contact (always) with debonding is defined. + + *** WARNING *** CP = 0.790 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + *** NOTE *** CP = 0.790 TIME= 03:04:44 + Max. Initial penetration 0 was detected between contact element 941 + and target element 1360. + **************************************** + + + *** NOTE *** CP = 0.791 TIME= 03:04:44 + Symmetric Deformable- deformable contact pair identified by real + constant set 4 and contact element type 3 has been set up. The + companion pair has real constant set ID 3. Both pairs should have the + same behavior. + MAPDL will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Contact algorithm: Penalty method + Contact detection at: Gauss integration point + Contact stiffness factor FKN 10.000 + The resulting initial contact stiffness 0.30761E+07 + Default penetration tolerance factor FTOLN 0.10000 + The resulting penetration tolerance 0.75000E-01 + Default opening contact stiffness OPSF will be used. + Default tangent stiffness factor FKT 1.0000 + Default elastic slip factor SLTOL 0.50000E-02 + The resulting elastic slip tolerance 0.25000E-02 + Update contact stiffness at each iteration + Default Max. friction stress TAUMAX 0.10000E+21 + Average contact surface length 0.50000 + Average contact pair depth 0.75000 + Average target surface length 0.50000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.18750 + Initial penetration/gap is excluded. + Bonded contact (always) with debonding is defined. + + *** WARNING *** CP = 0.791 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + *** NOTE *** CP = 0.791 TIME= 03:04:44 + Max. Initial penetration 0 was detected between contact element 1081 + and target element 940. + **************************************** + + + + + + + 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: 1360 + ...Number of nodes: 3210 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.112 + + + 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 + AUTOMATIC TIME STEPPING . . . . . . . . . . . . ON + INITIAL NUMBER OF SUBSTEPS . . . . . . . . . 100 + MAXIMUM NUMBER OF SUBSTEPS . . . . . . . . . 100 + MINIMUM NUMBER OF SUBSTEPS . . . . . . . . . 100 + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS. . . . 15 + STEP CHANGE BOUNDARY CONDITIONS . . . . . . . . NO + STRESS-STIFFENING . . . . . . . . . . . . . . . ON + TERMINATE ANALYSIS IF NOT CONVERGED . . . . . .YES (EXIT) + CONVERGENCE CONTROLS. . . . . . . . . . . . . .USE DEFAULTS + COPY INTEGRATION POINT VALUES TO NODE . . . . .YES, FOR ELEMENTS WITH + ACTIVE MAT. NONLINEARITIES + 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 + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS HAS BEEN MODIFIED + TO BE, NEQIT = 25, BY SOLUTION CONTROL LOGIC. + + *** WARNING *** CP = 1.078 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + *** WARNING *** CP = 1.078 TIME= 03:04:44 + Normal separation at maximum traction for debonding (obtained from data + specified on TB,CZM command) is greater than pinball radius. Increase + pinball radius so it is greater than the expected maximum normal + separation (when normal traction becomes zero); otherwise, debonding + calculations will be bypassed when normal separation exceeds pinball + radius. + + + Range of element maximum matrix coefficients in global coordinates + Maximum = 769032.209 at element 1076. + Minimum = 367534.443 at element 430. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 400 PLANE183 0.028 0.000069 + 2 400 PLANE183 0.086 0.000215 + 3 280 CONTA172 0.013 0.000045 + 4 280 TARGE169 0.001 0.000003 + Time at end of element matrix formulation CP = 1.231107. + + ALL CURRENT MAPDL DATA WRITTEN TO FILE NAME= file.rdb + FOR POSSIBLE RESUME FROM THIS POINT + FORCE CONVERGENCE VALUE = 1956. CRITERION= 9.782 + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 6398, Maximum wavefront = 42 + + Process memory allocated for solver = 2.372 MB + Process memory required for in-core solution = 2.293 MB + Process memory required for out-of-core solution = 2.005 MB + + Total memory allocated for solver = 8.520 MB + Total memory required for in-core solution = 8.220 MB + Total memory required for out-of-core solution = 7.166 MB + + *** NOTE *** CP = 1.349 TIME= 03:04:44 + The Distributed 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. + Distributed sparse solver maximum pivot= 1136566.65 at node 2873 UX. + Distributed sparse solver minimum pivot= 24.4793853 at node 1529 UY. + Distributed sparse solver minimum pivot in absolute value= 24.4793853 + at node 1529 UY. + DISP CONVERGENCE VALUE = 0.1000 CRITERION= 0.5000E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1000 + DISP CONVERGENCE VALUE = 0.1000 CRITERION= 0.5000E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1000 + FORCE CONVERGENCE VALUE = 3.339 CRITERION= 0.2437E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1878E-03 + DISP CONVERGENCE VALUE = 0.1878E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1878E-03 + FORCE CONVERGENCE VALUE = 2.990 CRITERION= 0.2308E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4592E-03 + DISP CONVERGENCE VALUE = 0.4195E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9134 SCALED MAX DOF INC = 0.4195E-03 + FORCE CONVERGENCE VALUE = 4.244 CRITERION= 0.2260E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2812E-03 + DISP CONVERGENCE VALUE = 0.2812E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2812E-03 + FORCE CONVERGENCE VALUE = 1.828 CRITERION= 0.2228E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2891E-03 + DISP CONVERGENCE VALUE = 0.2415E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8353 SCALED MAX DOF INC = -0.2415E-03 + FORCE CONVERGENCE VALUE = 2.921 CRITERION= 0.2202E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1826E-03 + DISP CONVERGENCE VALUE = 0.1826E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1826E-03 + FORCE CONVERGENCE VALUE = 0.8149 CRITERION= 0.2182E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1291E-03 + DISP CONVERGENCE VALUE = 0.1291E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1291E-03 + FORCE CONVERGENCE VALUE = 0.1905 CRITERION= 0.2549E-02 + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2230E-04 + DISP CONVERGENCE VALUE = 0.2230E-04 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2230E-04 + FORCE CONVERGENCE VALUE = 0.1499E-03 CRITERION= 0.2598E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 8 + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 400 PLANE183 0.021 0.000051 + 2 400 PLANE183 0.021 0.000053 + 3 280 CONTA172 0.008 0.000029 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 400 PLANE183 0.006 0.000015 + 2 400 PLANE183 0.006 0.000015 + 3 280 CONTA172 0.002 0.000007 + *** LOAD STEP 1 SUBSTEP 1 COMPLETED. CUM ITER = 8 + *** TIME = 0.100000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.736 CRITERION= 0.4579E-02 + DISP CONVERGENCE VALUE = 0.1390E-02 CRITERION= 0.5000E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1390E-02 + DISP CONVERGENCE VALUE = 0.1390E-02 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1390E-02 + FORCE CONVERGENCE VALUE = 2.888 CRITERION= 0.4183E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4733E-03 + DISP CONVERGENCE VALUE = 0.4125E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8716 SCALED MAX DOF INC = -0.4125E-03 + FORCE CONVERGENCE VALUE = 4.466 CRITERION= 0.4143E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3029E-03 + DISP CONVERGENCE VALUE = 0.3029E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3029E-03 + FORCE CONVERGENCE VALUE = 1.603 CRITERION= 0.4113E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2689E-03 + DISP CONVERGENCE VALUE = 0.1984E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7377 SCALED MAX DOF INC = -0.1984E-03 + FORCE CONVERGENCE VALUE = 2.776 CRITERION= 0.4094E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1647E-03 + DISP CONVERGENCE VALUE = 0.1647E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1647E-03 + FORCE CONVERGENCE VALUE = 0.2541 CRITERION= 0.4078E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4262E-04 + DISP CONVERGENCE VALUE = 0.4262E-04 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4262E-04 + FORCE CONVERGENCE VALUE = 0.5821E-03 CRITERION= 0.4074E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 2 COMPLETED. CUM ITER = 14 + *** TIME = 0.200000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.508 CRITERION= 0.6218E-02 + DISP CONVERGENCE VALUE = 0.1124E-02 CRITERION= 0.5000E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1124E-02 + DISP CONVERGENCE VALUE = 0.1124E-02 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1124E-02 + FORCE CONVERGENCE VALUE = 2.344 CRITERION= 0.5876E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2926E-03 + DISP CONVERGENCE VALUE = 0.2926E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2926E-03 + FORCE CONVERGENCE VALUE = 1.773 CRITERION= 0.5851E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3095E-03 + DISP CONVERGENCE VALUE = 0.2242E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7244 SCALED MAX DOF INC = 0.2242E-03 + FORCE CONVERGENCE VALUE = 3.117 CRITERION= 0.5830E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7952E-04 + DISP CONVERGENCE VALUE = 0.7952E-04 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.7952E-04 + FORCE CONVERGENCE VALUE = 0.8581 CRITERION= 0.5823E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1084E-03 + DISP CONVERGENCE VALUE = 0.1084E-03 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1084E-03 + FORCE CONVERGENCE VALUE = 0.1977 CRITERION= 0.5814E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3465E-04 + DISP CONVERGENCE VALUE = 0.3465E-04 CRITERION= 0.5000E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3465E-04 + FORCE CONVERGENCE VALUE = 0.5894E-03 CRITERION= 0.5811E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 3 COMPLETED. CUM ITER = 20 + *** TIME = 0.300000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.373 CRITERION= 0.7777E-02 + DISP CONVERGENCE VALUE = 0.9942E-03 CRITERION= 0.5001E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9942E-03 + DISP CONVERGENCE VALUE = 0.9942E-03 CRITERION= 0.5001E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.9942E-03 + FORCE CONVERGENCE VALUE = 2.068 CRITERION= 0.7462E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2701E-03 + DISP CONVERGENCE VALUE = 0.2701E-03 CRITERION= 0.5001E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2701E-03 + FORCE CONVERGENCE VALUE = 1.402 CRITERION= 0.7440E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2511E-03 + DISP CONVERGENCE VALUE = 0.2511E-03 CRITERION= 0.5001E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2511E-03 + FORCE CONVERGENCE VALUE = 0.3859 CRITERION= 0.7419E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5149E-04 + DISP CONVERGENCE VALUE = 0.5149E-04 CRITERION= 0.5001E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5149E-04 + FORCE CONVERGENCE VALUE = 0.9820E-03 CRITERION= 0.7415E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 4 COMPLETED. CUM ITER = 24 + *** TIME = 0.400000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.230 CRITERION= 0.9245E-02 + DISP CONVERGENCE VALUE = 0.1122E-02 CRITERION= 0.5002E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1122E-02 + DISP CONVERGENCE VALUE = 0.1122E-02 CRITERION= 0.5002E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1122E-02 + FORCE CONVERGENCE VALUE = 1.337 CRITERION= 0.8929E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1862E-03 + DISP CONVERGENCE VALUE = 0.1862E-03 CRITERION= 0.5002E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1862E-03 + FORCE CONVERGENCE VALUE = 0.5599 CRITERION= 0.8916E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1064E-03 + DISP CONVERGENCE VALUE = 0.1064E-03 CRITERION= 0.5002E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1064E-03 + FORCE CONVERGENCE VALUE = 0.2395E-02 CRITERION= 0.8908E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 5 COMPLETED. CUM ITER = 27 + *** TIME = 0.500000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.091 CRITERION= 0.1062E-01 + DISP CONVERGENCE VALUE = 0.6920E-03 CRITERION= 0.5003E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6920E-03 + DISP CONVERGENCE VALUE = 0.6920E-03 CRITERION= 0.5003E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.6920E-03 + FORCE CONVERGENCE VALUE = 2.172 CRITERION= 0.1035E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3073E-03 + DISP CONVERGENCE VALUE = 0.3073E-03 CRITERION= 0.5003E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3073E-03 + FORCE CONVERGENCE VALUE = 1.386 CRITERION= 0.1032E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2718E-03 + DISP CONVERGENCE VALUE = 0.2718E-03 CRITERION= 0.5003E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2718E-03 + FORCE CONVERGENCE VALUE = 0.2147 CRITERION= 0.1030E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3189E-04 + DISP CONVERGENCE VALUE = 0.3189E-04 CRITERION= 0.5003E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3189E-04 + FORCE CONVERGENCE VALUE = 0.1775E-02 CRITERION= 0.1030E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 6 COMPLETED. CUM ITER = 31 + *** TIME = 0.600000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.082 CRITERION= 0.1192E-01 + DISP CONVERGENCE VALUE = 0.7217E-03 CRITERION= 0.5004E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7217E-03 + DISP CONVERGENCE VALUE = 0.7217E-03 CRITERION= 0.5004E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.7217E-03 + FORCE CONVERGENCE VALUE = 2.122 CRITERION= 0.1164E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4332E-03 + DISP CONVERGENCE VALUE = 0.4332E-03 CRITERION= 0.5004E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4332E-03 + FORCE CONVERGENCE VALUE = 0.8789 CRITERION= 0.1161E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1338E-03 + DISP CONVERGENCE VALUE = 0.1338E-03 CRITERION= 0.5004E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1338E-03 + FORCE CONVERGENCE VALUE = 0.3497E-02 CRITERION= 0.1161E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 7 COMPLETED. CUM ITER = 34 + *** TIME = 0.700000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.094 CRITERION= 0.1312E-01 + DISP CONVERGENCE VALUE = 0.1016E-02 CRITERION= 0.5006E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1016E-02 + DISP CONVERGENCE VALUE = 0.1016E-02 CRITERION= 0.5006E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1016E-02 + FORCE CONVERGENCE VALUE = 1.490 CRITERION= 0.1284E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2392E-03 + DISP CONVERGENCE VALUE = 0.2392E-03 CRITERION= 0.5006E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2392E-03 + FORCE CONVERGENCE VALUE = 0.5735 CRITERION= 0.1282E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1274E-03 + DISP CONVERGENCE VALUE = 0.1274E-03 CRITERION= 0.5006E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1274E-03 + FORCE CONVERGENCE VALUE = 0.4058E-02 CRITERION= 0.1281E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 8 COMPLETED. CUM ITER = 37 + *** TIME = 0.800000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.880 CRITERION= 0.1423E-01 + DISP CONVERGENCE VALUE = 0.7189E-03 CRITERION= 0.5007E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7189E-03 + DISP CONVERGENCE VALUE = 0.7189E-03 CRITERION= 0.5007E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.7189E-03 + FORCE CONVERGENCE VALUE = 2.080 CRITERION= 0.1397E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3458E-03 + DISP CONVERGENCE VALUE = 0.3458E-03 CRITERION= 0.5007E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3458E-03 + FORCE CONVERGENCE VALUE = 1.161 CRITERION= 0.1395E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2706E-03 + DISP CONVERGENCE VALUE = 0.2706E-03 CRITERION= 0.5007E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2706E-03 + FORCE CONVERGENCE VALUE = 0.7224E-02 CRITERION= 0.1393E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 9 COMPLETED. CUM ITER = 40 + *** TIME = 0.900000E-01 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.871 CRITERION= 0.1526E-01 + DISP CONVERGENCE VALUE = 0.9997E-03 CRITERION= 0.5008E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9997E-03 + DISP CONVERGENCE VALUE = 0.9997E-03 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.9997E-03 + FORCE CONVERGENCE VALUE = 1.767 CRITERION= 0.1499E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4383E-03 + DISP CONVERGENCE VALUE = 0.4383E-03 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4383E-03 + FORCE CONVERGENCE VALUE = 0.3910 CRITERION= 0.1496E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7361E-04 + DISP CONVERGENCE VALUE = 0.7361E-04 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.7361E-04 + FORCE CONVERGENCE VALUE = 0.5217E-02 CRITERION= 0.1496E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 10 COMPLETED. CUM ITER = 43 + *** TIME = 0.100000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.843 CRITERION= 0.1618E-01 + DISP CONVERGENCE VALUE = 0.8122E-03 CRITERION= 0.5008E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8122E-03 + DISP CONVERGENCE VALUE = 0.8122E-03 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.8122E-03 + FORCE CONVERGENCE VALUE = 2.434 CRITERION= 0.1593E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6386E-03 + DISP CONVERGENCE VALUE = 0.6386E-03 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.6386E-03 + FORCE CONVERGENCE VALUE = 1.023 CRITERION= 0.1589E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2032E-03 + DISP CONVERGENCE VALUE = 0.2032E-03 CRITERION= 0.5008E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2032E-03 + FORCE CONVERGENCE VALUE = 0.6449E-02 CRITERION= 0.1588E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 11 COMPLETED. CUM ITER = 46 + *** TIME = 0.110000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.951 CRITERION= 0.1699E-01 + DISP CONVERGENCE VALUE = 0.1485E-02 CRITERION= 0.5009E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1485E-02 + DISP CONVERGENCE VALUE = 0.1485E-02 CRITERION= 0.5009E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1485E-02 + FORCE CONVERGENCE VALUE = 1.780 CRITERION= 0.1671E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3845E-03 + DISP CONVERGENCE VALUE = 0.3845E-03 CRITERION= 0.5009E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3845E-03 + FORCE CONVERGENCE VALUE = 0.7676 CRITERION= 0.1668E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2335E-03 + DISP CONVERGENCE VALUE = 0.2335E-03 CRITERION= 0.5009E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2335E-03 + FORCE CONVERGENCE VALUE = 0.7477E-02 CRITERION= 0.1667E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 12 COMPLETED. CUM ITER = 49 + *** TIME = 0.120000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.711 CRITERION= 0.1765E-01 + DISP CONVERGENCE VALUE = 0.1747E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1747E-02 + DISP CONVERGENCE VALUE = 0.1747E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1747E-02 + FORCE CONVERGENCE VALUE = 1.778 CRITERION= 0.1736E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5978E-03 + DISP CONVERGENCE VALUE = 0.5978E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5978E-03 + FORCE CONVERGENCE VALUE = 0.3314 CRITERION= 0.1733E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8599E-04 + DISP CONVERGENCE VALUE = 0.8599E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.8599E-04 + FORCE CONVERGENCE VALUE = 0.7680E-02 CRITERION= 0.1732E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 13 COMPLETED. CUM ITER = 52 + *** TIME = 0.130000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.829 CRITERION= 0.1814E-01 + DISP CONVERGENCE VALUE = 0.1618E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1618E-02 + DISP CONVERGENCE VALUE = 0.1618E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1618E-02 + FORCE CONVERGENCE VALUE = 3.115 CRITERION= 0.1788E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1171E-02 + DISP CONVERGENCE VALUE = 0.8701E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7428 SCALED MAX DOF INC = -0.8701E-03 + FORCE CONVERGENCE VALUE = 5.544 CRITERION= 0.1783E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7549E-03 + DISP CONVERGENCE VALUE = 0.7549E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.7549E-03 + FORCE CONVERGENCE VALUE = 0.6570 CRITERION= 0.1778E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2726E-03 + DISP CONVERGENCE VALUE = 0.2726E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2726E-03 + FORCE CONVERGENCE VALUE = 0.8204E-02 CRITERION= 0.1777E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 14 COMPLETED. CUM ITER = 56 + *** TIME = 0.140000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 2.838 CRITERION= 0.1836E-01 + DISP CONVERGENCE VALUE = 0.2447E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2447E-02 + DISP CONVERGENCE VALUE = 0.2447E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2447E-02 + FORCE CONVERGENCE VALUE = 3.601 CRITERION= 0.1807E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1156E-02 + DISP CONVERGENCE VALUE = 0.1156E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1156E-02 + FORCE CONVERGENCE VALUE = 2.744 CRITERION= 0.1801E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1319E-02 + DISP CONVERGENCE VALUE = 0.9328E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7071 SCALED MAX DOF INC = 0.9328E-03 + FORCE CONVERGENCE VALUE = 5.126 CRITERION= 0.1796E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3625E-03 + DISP CONVERGENCE VALUE = 0.3625E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3625E-03 + FORCE CONVERGENCE VALUE = 1.347 CRITERION= 0.1794E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4942E-03 + DISP CONVERGENCE VALUE = 0.4942E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4942E-03 + FORCE CONVERGENCE VALUE = 0.2936 CRITERION= 0.1791E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1641E-03 + DISP CONVERGENCE VALUE = 0.1641E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1641E-03 + FORCE CONVERGENCE VALUE = 0.7587E-02 CRITERION= 0.1790E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 15 COMPLETED. CUM ITER = 62 + *** TIME = 0.150000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 3.194 CRITERION= 0.1814E-01 + DISP CONVERGENCE VALUE = 0.5035E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5035E-02 + DISP CONVERGENCE VALUE = 0.5035E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.5035E-02 + FORCE CONVERGENCE VALUE = 4.536 CRITERION= 0.1775E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1462E-02 + DISP CONVERGENCE VALUE = 0.1462E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1462E-02 + FORCE CONVERGENCE VALUE = 3.742 CRITERION= 0.1768E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2285E-02 + DISP CONVERGENCE VALUE = 0.1771E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7752 SCALED MAX DOF INC = 0.1771E-02 + FORCE CONVERGENCE VALUE = 6.554 CRITERION= 0.1758E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1451E-02 + DISP CONVERGENCE VALUE = 0.1451E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1451E-02 + FORCE CONVERGENCE VALUE = 1.556 CRITERION= 0.1750E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9546E-03 + DISP CONVERGENCE VALUE = 0.9321E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9765 SCALED MAX DOF INC = -0.9321E-03 + FORCE CONVERGENCE VALUE = 0.1218 CRITERION= 0.1745E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2476E-03 + DISP CONVERGENCE VALUE = 0.2133E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8614 SCALED MAX DOF INC = -0.2133E-03 + FORCE CONVERGENCE VALUE = 0.1784E-01 CRITERION= 0.1747E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4307E-04 + DISP CONVERGENCE VALUE = 0.3554E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8254 SCALED MAX DOF INC = 0.3554E-04 + FORCE CONVERGENCE VALUE = 0.3538E-02 CRITERION= 0.2053E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 16 COMPLETED. CUM ITER = 69 + *** TIME = 0.160000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 4.746 TIME= 03:04:48 + Contact element 941 (real ID 3) status changes abruptly from contact + (with target element 1360) -> no-contact. + FORCE CONVERGENCE VALUE = 3.881 CRITERION= 0.1709E-01 + DISP CONVERGENCE VALUE = 0.3371E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3371E-02 + DISP CONVERGENCE VALUE = 0.3371E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3371E-02 + FORCE CONVERGENCE VALUE = 4.789 CRITERION= 0.1731E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3485E-02 + DISP CONVERGENCE VALUE = 0.2877E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8255 SCALED MAX DOF INC = 0.2877E-02 + FORCE CONVERGENCE VALUE = 8.193 CRITERION= 0.1716E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1922E-02 + DISP CONVERGENCE VALUE = 0.1922E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1922E-02 + FORCE CONVERGENCE VALUE = 2.866 CRITERION= 0.1706E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1941E-02 + DISP CONVERGENCE VALUE = 0.1362E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7018 SCALED MAX DOF INC = 0.1362E-02 + FORCE CONVERGENCE VALUE = 5.230 CRITERION= 0.1699E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1711E-03 + DISP CONVERGENCE VALUE = 0.1711E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1711E-03 + FORCE CONVERGENCE VALUE = 1.492 CRITERION= 0.1699E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9166E-03 + DISP CONVERGENCE VALUE = 0.9157E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9990 SCALED MAX DOF INC = 0.9157E-03 + FORCE CONVERGENCE VALUE = 0.5152 CRITERION= 0.1694E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1664E-03 + DISP CONVERGENCE VALUE = 0.1647E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9901 SCALED MAX DOF INC = -0.1647E-03 + FORCE CONVERGENCE VALUE = 0.8558E-02 CRITERION= 0.1991E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 17 COMPLETED. CUM ITER = 76 + *** TIME = 0.170000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 5.055 TIME= 03:04:48 + Contact element 943 (real ID 3) status changes abruptly from contact + (with target element 1358) -> no-contact. + FORCE CONVERGENCE VALUE = 3.900 CRITERION= 0.1645E-01 + DISP CONVERGENCE VALUE = 0.6058E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6058E-02 + DISP CONVERGENCE VALUE = 0.6058E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.6058E-02 + FORCE CONVERGENCE VALUE = 4.425 CRITERION= 0.1681E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3012E-02 + DISP CONVERGENCE VALUE = 0.3012E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3012E-02 + FORCE CONVERGENCE VALUE = 3.938 CRITERION= 0.1666E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2472E-02 + DISP CONVERGENCE VALUE = 0.1924E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7783 SCALED MAX DOF INC = -0.1924E-02 + FORCE CONVERGENCE VALUE = 6.780 CRITERION= 0.1657E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1569E-02 + DISP CONVERGENCE VALUE = 0.1569E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1569E-02 + FORCE CONVERGENCE VALUE = 1.762 CRITERION= 0.1650E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9972E-03 + DISP CONVERGENCE VALUE = 0.9960E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9988 SCALED MAX DOF INC = -0.9960E-03 + FORCE CONVERGENCE VALUE = 0.3334 CRITERION= 0.1646E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3271E-04 + DISP CONVERGENCE VALUE = 0.3271E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9999 SCALED MAX DOF INC = -0.3271E-04 + FORCE CONVERGENCE VALUE = 0.6589E-02 CRITERION= 0.1646E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 18 COMPLETED. CUM ITER = 82 + *** TIME = 0.180000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 5.326 TIME= 03:04:48 + Contact element 946 (real ID 3) status changes abruptly from contact + (with target element 1355) -> no-contact. + FORCE CONVERGENCE VALUE = 3.796 CRITERION= 0.1604E-01 + DISP CONVERGENCE VALUE = 0.6220E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6220E-02 + DISP CONVERGENCE VALUE = 0.6220E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.6220E-02 + FORCE CONVERGENCE VALUE = 4.553 CRITERION= 0.1636E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4215E-02 + DISP CONVERGENCE VALUE = 0.3432E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8143 SCALED MAX DOF INC = 0.3432E-02 + FORCE CONVERGENCE VALUE = 7.987 CRITERION= 0.1621E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2115E-02 + DISP CONVERGENCE VALUE = 0.2115E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2115E-02 + FORCE CONVERGENCE VALUE = 2.745 CRITERION= 0.1612E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2027E-02 + DISP CONVERGENCE VALUE = 0.2027E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2027E-02 + FORCE CONVERGENCE VALUE = 1.455 CRITERION= 0.1603E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2856E-03 + DISP CONVERGENCE VALUE = 0.2856E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2856E-03 + FORCE CONVERGENCE VALUE = 0.3397 CRITERION= 0.1603E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2857E-03 + DISP CONVERGENCE VALUE = 0.2709E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9483 SCALED MAX DOF INC = -0.2709E-03 + FORCE CONVERGENCE VALUE = 0.1869E-01 CRITERION= 0.1601E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1278E-03 + DISP CONVERGENCE VALUE = 0.8883E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6949 SCALED MAX DOF INC = -0.8883E-04 + FORCE CONVERGENCE VALUE = 0.5676E-02 CRITERION= 0.1883E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 19 COMPLETED. CUM ITER = 89 + *** TIME = 0.190000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 5.638 TIME= 03:04:48 + Contact element 948 (real ID 3) status changes abruptly from contact + (with target element 1353) -> no-contact. + FORCE CONVERGENCE VALUE = 3.792 CRITERION= 0.1562E-01 + DISP CONVERGENCE VALUE = 0.5678E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5678E-02 + DISP CONVERGENCE VALUE = 0.5678E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5678E-02 + FORCE CONVERGENCE VALUE = 4.052 CRITERION= 0.1589E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3321E-02 + DISP CONVERGENCE VALUE = 0.3321E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3321E-02 + FORCE CONVERGENCE VALUE = 3.589 CRITERION= 0.1575E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2103E-02 + DISP CONVERGENCE VALUE = 0.1592E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7571 SCALED MAX DOF INC = -0.1592E-02 + FORCE CONVERGENCE VALUE = 6.239 CRITERION= 0.1569E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1615E-02 + DISP CONVERGENCE VALUE = 0.1615E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1615E-02 + FORCE CONVERGENCE VALUE = 1.333 CRITERION= 0.1563E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8167E-03 + DISP CONVERGENCE VALUE = 0.7925E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9703 SCALED MAX DOF INC = -0.7925E-03 + FORCE CONVERGENCE VALUE = 0.4124E-01 CRITERION= 0.1560E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3530E-03 + DISP CONVERGENCE VALUE = 0.2509E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7109 SCALED MAX DOF INC = -0.2509E-03 + FORCE CONVERGENCE VALUE = 0.1185E-01 CRITERION= 0.1561E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 20 COMPLETED. CUM ITER = 95 + *** TIME = 0.200000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 5.910 TIME= 03:04:49 + Contact element 951 (real ID 3) status changes abruptly from contact + (with target element 1350) -> no-contact. + FORCE CONVERGENCE VALUE = 3.688 CRITERION= 0.1525E-01 + DISP CONVERGENCE VALUE = 0.5420E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5420E-02 + DISP CONVERGENCE VALUE = 0.5420E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5420E-02 + FORCE CONVERGENCE VALUE = 3.933 CRITERION= 0.1549E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4540E-02 + DISP CONVERGENCE VALUE = 0.3476E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7656 SCALED MAX DOF INC = 0.3476E-02 + FORCE CONVERGENCE VALUE = 6.987 CRITERION= 0.1535E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1699E-02 + DISP CONVERGENCE VALUE = 0.1699E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1699E-02 + FORCE CONVERGENCE VALUE = 2.028 CRITERION= 0.1529E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1704E-02 + DISP CONVERGENCE VALUE = 0.1697E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9964 SCALED MAX DOF INC = 0.1697E-02 + FORCE CONVERGENCE VALUE = 0.6912 CRITERION= 0.1523E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1039E-03 + DISP CONVERGENCE VALUE = 0.1037E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9982 SCALED MAX DOF INC = -0.1037E-03 + FORCE CONVERGENCE VALUE = 0.6755E-02 CRITERION= 0.1523E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 21 COMPLETED. CUM ITER = 100 + *** TIME = 0.210000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 6.143 TIME= 03:04:49 + Contact element 953 (real ID 3) status changes abruptly from contact + (with target element 1348) -> no-contact. + FORCE CONVERGENCE VALUE = 3.625 CRITERION= 0.1489E-01 + DISP CONVERGENCE VALUE = 0.4244E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4244E-02 + DISP CONVERGENCE VALUE = 0.4244E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4244E-02 + FORCE CONVERGENCE VALUE = 3.233 CRITERION= 0.1507E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3028E-02 + DISP CONVERGENCE VALUE = 0.3028E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3028E-02 + FORCE CONVERGENCE VALUE = 2.677 CRITERION= 0.1496E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1976E-02 + DISP CONVERGENCE VALUE = 0.1976E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1976E-02 + FORCE CONVERGENCE VALUE = 1.353 CRITERION= 0.1489E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2574E-03 + DISP CONVERGENCE VALUE = 0.2574E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2574E-03 + FORCE CONVERGENCE VALUE = 0.2216 CRITERION= 0.1489E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2086E-03 + DISP CONVERGENCE VALUE = 0.2002E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9599 SCALED MAX DOF INC = -0.2002E-03 + FORCE CONVERGENCE VALUE = 0.1072E-01 CRITERION= 0.1488E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 22 COMPLETED. CUM ITER = 105 + *** TIME = 0.220000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 6.375 TIME= 03:04:49 + Contact element 956 (real ID 3) status changes abruptly from contact + (with target element 1345) -> no-contact. + FORCE CONVERGENCE VALUE = 3.637 CRITERION= 0.1457E-01 + DISP CONVERGENCE VALUE = 0.5477E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5477E-02 + DISP CONVERGENCE VALUE = 0.5477E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5477E-02 + FORCE CONVERGENCE VALUE = 3.617 CRITERION= 0.1477E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3582E-02 + DISP CONVERGENCE VALUE = 0.3582E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3582E-02 + FORCE CONVERGENCE VALUE = 3.156 CRITERION= 0.1465E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1987E-02 + DISP CONVERGENCE VALUE = 0.1438E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7235 SCALED MAX DOF INC = -0.1438E-02 + FORCE CONVERGENCE VALUE = 5.598 CRITERION= 0.1461E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1603E-02 + DISP CONVERGENCE VALUE = 0.1603E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1603E-02 + FORCE CONVERGENCE VALUE = 0.8346 CRITERION= 0.1456E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4707E-03 + DISP CONVERGENCE VALUE = 0.4590E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9751 SCALED MAX DOF INC = -0.4590E-03 + FORCE CONVERGENCE VALUE = 0.2238E-01 CRITERION= 0.1454E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2634E-03 + DISP CONVERGENCE VALUE = 0.1735E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6587 SCALED MAX DOF INC = -0.1735E-03 + FORCE CONVERGENCE VALUE = 0.7575E-02 CRITERION= 0.1455E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 23 COMPLETED. CUM ITER = 111 + *** TIME = 0.230000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 6.659 TIME= 03:04:49 + Contact element 958 (real ID 3) status changes abruptly from contact + (with target element 1343) -> no-contact. + FORCE CONVERGENCE VALUE = 3.369 CRITERION= 0.1426E-01 + DISP CONVERGENCE VALUE = 0.4867E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4867E-02 + DISP CONVERGENCE VALUE = 0.4867E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4867E-02 + FORCE CONVERGENCE VALUE = 3.164 CRITERION= 0.1442E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4692E-02 + DISP CONVERGENCE VALUE = 0.3366E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7174 SCALED MAX DOF INC = 0.3366E-02 + FORCE CONVERGENCE VALUE = 5.918 CRITERION= 0.1432E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2003E-02 + DISP CONVERGENCE VALUE = 0.2003E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2003E-02 + FORCE CONVERGENCE VALUE = 1.252 CRITERION= 0.1426E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6438E-03 + DISP CONVERGENCE VALUE = 0.6348E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9861 SCALED MAX DOF INC = -0.6348E-03 + FORCE CONVERGENCE VALUE = 0.2039E-01 CRITERION= 0.1424E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2165E-03 + DISP CONVERGENCE VALUE = 0.1662E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7676 SCALED MAX DOF INC = -0.1662E-03 + FORCE CONVERGENCE VALUE = 0.4686E-02 CRITERION= 0.1425E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 24 COMPLETED. CUM ITER = 116 + *** TIME = 0.240000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 6.891 TIME= 03:04:50 + Contact element 960 (real ID 3) status changes abruptly from contact + (with target element 1341) -> no-contact. + FORCE CONVERGENCE VALUE = 3.388 CRITERION= 0.1398E-01 + DISP CONVERGENCE VALUE = 0.5190E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5190E-02 + DISP CONVERGENCE VALUE = 0.5190E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5190E-02 + FORCE CONVERGENCE VALUE = 3.417 CRITERION= 0.1414E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5022E-02 + DISP CONVERGENCE VALUE = 0.3642E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7253 SCALED MAX DOF INC = 0.3642E-02 + FORCE CONVERGENCE VALUE = 6.225 CRITERION= 0.1404E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1722E-02 + DISP CONVERGENCE VALUE = 0.1722E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1722E-02 + FORCE CONVERGENCE VALUE = 1.482 CRITERION= 0.1399E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1452E-02 + DISP CONVERGENCE VALUE = 0.1403E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9659 SCALED MAX DOF INC = -0.1403E-02 + FORCE CONVERGENCE VALUE = 0.7941E-01 CRITERION= 0.1395E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4143E-03 + DISP CONVERGENCE VALUE = 0.3309E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7985 SCALED MAX DOF INC = -0.3309E-03 + FORCE CONVERGENCE VALUE = 0.1625E-01 CRITERION= 0.1396E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4601E-04 + DISP CONVERGENCE VALUE = 0.4014E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8724 SCALED MAX DOF INC = 0.4014E-04 + FORCE CONVERGENCE VALUE = 0.3179E-02 CRITERION= 0.1396E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 25 COMPLETED. CUM ITER = 122 + *** TIME = 0.250000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 7.161 TIME= 03:04:50 + Contact element 962 (real ID 3) status changes abruptly from contact + (with target element 1339) -> no-contact. + FORCE CONVERGENCE VALUE = 3.560 CRITERION= 0.1371E-01 + DISP CONVERGENCE VALUE = 0.6151E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6151E-02 + DISP CONVERGENCE VALUE = 0.6151E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.6151E-02 + FORCE CONVERGENCE VALUE = 3.521 CRITERION= 0.1389E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5638E-02 + DISP CONVERGENCE VALUE = 0.4102E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7276 SCALED MAX DOF INC = 0.4102E-02 + FORCE CONVERGENCE VALUE = 6.408 CRITERION= 0.1377E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1864E-02 + DISP CONVERGENCE VALUE = 0.1864E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1864E-02 + FORCE CONVERGENCE VALUE = 1.673 CRITERION= 0.1372E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1770E-02 + DISP CONVERGENCE VALUE = 0.1721E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9720 SCALED MAX DOF INC = 0.1721E-02 + FORCE CONVERGENCE VALUE = 0.3003 CRITERION= 0.1368E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2745E-03 + DISP CONVERGENCE VALUE = 0.2665E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9709 SCALED MAX DOF INC = -0.2665E-03 + FORCE CONVERGENCE VALUE = 0.1121E-01 CRITERION= 0.1368E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 26 COMPLETED. CUM ITER = 127 + *** TIME = 0.260000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 7.393 TIME= 03:04:50 + Contact element 964 (real ID 3) status changes abruptly from contact + (with target element 1337) -> no-contact. + FORCE CONVERGENCE VALUE = 3.488 CRITERION= 0.1345E-01 + DISP CONVERGENCE VALUE = 0.7032E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7032E-02 + DISP CONVERGENCE VALUE = 0.6996E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9949 SCALED MAX DOF INC = -0.6996E-02 + FORCE CONVERGENCE VALUE = 3.536 CRITERION= 0.1364E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6137E-02 + DISP CONVERGENCE VALUE = 0.4456E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7261 SCALED MAX DOF INC = 0.4456E-02 + FORCE CONVERGENCE VALUE = 6.486 CRITERION= 0.1352E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1966E-02 + DISP CONVERGENCE VALUE = 0.1966E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1966E-02 + FORCE CONVERGENCE VALUE = 1.773 CRITERION= 0.1347E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1994E-02 + DISP CONVERGENCE VALUE = 0.1929E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9675 SCALED MAX DOF INC = 0.1929E-02 + FORCE CONVERGENCE VALUE = 0.4164 CRITERION= 0.1342E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2828E-03 + DISP CONVERGENCE VALUE = 0.2761E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9761 SCALED MAX DOF INC = -0.2761E-03 + FORCE CONVERGENCE VALUE = 0.1231E-01 CRITERION= 0.1343E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 27 COMPLETED. CUM ITER = 132 + *** TIME = 0.270000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 7.627 TIME= 03:04:50 + Contact element 966 (real ID 3) status changes abruptly from contact + (with target element 1335) -> no-contact. + FORCE CONVERGENCE VALUE = 3.371 CRITERION= 0.1320E-01 + DISP CONVERGENCE VALUE = 0.7432E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7432E-02 + DISP CONVERGENCE VALUE = 0.7356E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9897 SCALED MAX DOF INC = -0.7356E-02 + FORCE CONVERGENCE VALUE = 3.499 CRITERION= 0.1339E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6453E-02 + DISP CONVERGENCE VALUE = 0.4659E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7219 SCALED MAX DOF INC = 0.4659E-02 + FORCE CONVERGENCE VALUE = 6.469 CRITERION= 0.1327E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2025E-02 + DISP CONVERGENCE VALUE = 0.2025E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2025E-02 + FORCE CONVERGENCE VALUE = 1.786 CRITERION= 0.1322E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2111E-02 + DISP CONVERGENCE VALUE = 0.2022E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9578 SCALED MAX DOF INC = 0.2022E-02 + FORCE CONVERGENCE VALUE = 0.4273 CRITERION= 0.1318E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4176E-03 + DISP CONVERGENCE VALUE = 0.3984E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9541 SCALED MAX DOF INC = -0.3984E-03 + FORCE CONVERGENCE VALUE = 0.2096E-01 CRITERION= 0.1319E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2395E-03 + DISP CONVERGENCE VALUE = 0.1448E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6046 SCALED MAX DOF INC = 0.1448E-03 + FORCE CONVERGENCE VALUE = 0.8354E-02 CRITERION= 0.1318E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 28 COMPLETED. CUM ITER = 138 + *** TIME = 0.280000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 7.911 TIME= 03:04:51 + Contact element 968 (real ID 3) status changes abruptly from contact + (with target element 1333) -> no-contact. + FORCE CONVERGENCE VALUE = 3.309 CRITERION= 0.1297E-01 + DISP CONVERGENCE VALUE = 0.7662E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7662E-02 + DISP CONVERGENCE VALUE = 0.7557E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9863 SCALED MAX DOF INC = -0.7557E-02 + FORCE CONVERGENCE VALUE = 3.410 CRITERION= 0.1315E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6673E-02 + DISP CONVERGENCE VALUE = 0.4765E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7142 SCALED MAX DOF INC = 0.4765E-02 + FORCE CONVERGENCE VALUE = 6.355 CRITERION= 0.1304E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2048E-02 + DISP CONVERGENCE VALUE = 0.2048E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2048E-02 + FORCE CONVERGENCE VALUE = 1.715 CRITERION= 0.1299E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2106E-02 + DISP CONVERGENCE VALUE = 0.2006E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9528 SCALED MAX DOF INC = 0.2006E-02 + FORCE CONVERGENCE VALUE = 0.3499 CRITERION= 0.1294E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5171E-03 + DISP CONVERGENCE VALUE = 0.4713E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9115 SCALED MAX DOF INC = -0.4713E-03 + FORCE CONVERGENCE VALUE = 0.3183E-01 CRITERION= 0.1296E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2858E-03 + DISP CONVERGENCE VALUE = 0.1735E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6069 SCALED MAX DOF INC = 0.1735E-03 + FORCE CONVERGENCE VALUE = 0.1260E-01 CRITERION= 0.1295E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 29 COMPLETED. CUM ITER = 144 + *** TIME = 0.290000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 8.193 TIME= 03:04:51 + Contact element 970 (real ID 3) status changes abruptly from contact + (with target element 1331) -> no-contact. + FORCE CONVERGENCE VALUE = 3.302 CRITERION= 0.1275E-01 + DISP CONVERGENCE VALUE = 0.7423E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7423E-02 + DISP CONVERGENCE VALUE = 0.7337E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9884 SCALED MAX DOF INC = -0.7337E-02 + FORCE CONVERGENCE VALUE = 3.289 CRITERION= 0.1292E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6760E-02 + DISP CONVERGENCE VALUE = 0.4753E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7030 SCALED MAX DOF INC = 0.4753E-02 + FORCE CONVERGENCE VALUE = 6.149 CRITERION= 0.1281E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2031E-02 + DISP CONVERGENCE VALUE = 0.2031E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2031E-02 + FORCE CONVERGENCE VALUE = 1.565 CRITERION= 0.1277E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1964E-02 + DISP CONVERGENCE VALUE = 0.1873E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9535 SCALED MAX DOF INC = 0.1873E-02 + FORCE CONVERGENCE VALUE = 0.1894 CRITERION= 0.1273E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5708E-03 + DISP CONVERGENCE VALUE = 0.4775E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8365 SCALED MAX DOF INC = -0.4775E-03 + FORCE CONVERGENCE VALUE = 0.3155E-01 CRITERION= 0.1274E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1863E-03 + DISP CONVERGENCE VALUE = 0.1372E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7366 SCALED MAX DOF INC = 0.1372E-03 + FORCE CONVERGENCE VALUE = 0.8617E-02 CRITERION= 0.1273E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 30 COMPLETED. CUM ITER = 150 + *** TIME = 0.300000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 8.462 TIME= 03:04:51 + Contact element 972 (real ID 3) status changes abruptly from contact + (with target element 1329) -> no-contact. + FORCE CONVERGENCE VALUE = 3.339 CRITERION= 0.1255E-01 + DISP CONVERGENCE VALUE = 0.6946E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6946E-02 + DISP CONVERGENCE VALUE = 0.6899E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9933 SCALED MAX DOF INC = -0.6899E-02 + FORCE CONVERGENCE VALUE = 3.128 CRITERION= 0.1269E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6717E-02 + DISP CONVERGENCE VALUE = 0.4623E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6882 SCALED MAX DOF INC = 0.4623E-02 + FORCE CONVERGENCE VALUE = 5.858 CRITERION= 0.1259E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1973E-02 + DISP CONVERGENCE VALUE = 0.1973E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1973E-02 + FORCE CONVERGENCE VALUE = 1.337 CRITERION= 0.1255E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1669E-02 + DISP CONVERGENCE VALUE = 0.1577E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9449 SCALED MAX DOF INC = 0.1577E-02 + FORCE CONVERGENCE VALUE = 0.7492E-01 CRITERION= 0.1252E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6355E-03 + DISP CONVERGENCE VALUE = 0.4625E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7279 SCALED MAX DOF INC = -0.4625E-03 + FORCE CONVERGENCE VALUE = 0.2033E-01 CRITERION= 0.1253E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2520E-04 + DISP CONVERGENCE VALUE = 0.2381E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9450 SCALED MAX DOF INC = 0.2381E-04 + FORCE CONVERGENCE VALUE = 0.1152E-02 CRITERION= 0.1253E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 31 COMPLETED. CUM ITER = 156 + *** TIME = 0.310000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 8.734 TIME= 03:04:52 + Contact element 974 (real ID 3) status changes abruptly from contact + (with target element 1327) -> no-contact. + FORCE CONVERGENCE VALUE = 3.283 CRITERION= 0.1236E-01 + DISP CONVERGENCE VALUE = 0.5900E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5900E-02 + DISP CONVERGENCE VALUE = 0.5900E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5900E-02 + FORCE CONVERGENCE VALUE = 2.941 CRITERION= 0.1247E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6419E-02 + DISP CONVERGENCE VALUE = 0.4303E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6703 SCALED MAX DOF INC = 0.4303E-02 + FORCE CONVERGENCE VALUE = 5.493 CRITERION= 0.1238E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1860E-02 + DISP CONVERGENCE VALUE = 0.1860E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1860E-02 + FORCE CONVERGENCE VALUE = 1.034 CRITERION= 0.1235E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1204E-02 + DISP CONVERGENCE VALUE = 0.1145E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9507 SCALED MAX DOF INC = 0.1145E-02 + FORCE CONVERGENCE VALUE = 0.5208E-01 CRITERION= 0.1232E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5033E-03 + DISP CONVERGENCE VALUE = 0.3577E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7107 SCALED MAX DOF INC = -0.3577E-03 + FORCE CONVERGENCE VALUE = 0.1501E-01 CRITERION= 0.1233E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1735E-04 + DISP CONVERGENCE VALUE = 0.1650E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9507 SCALED MAX DOF INC = 0.1650E-04 + FORCE CONVERGENCE VALUE = 0.7679E-03 CRITERION= 0.1233E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 32 COMPLETED. CUM ITER = 162 + *** TIME = 0.320000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 9.008 TIME= 03:04:52 + Contact element 976 (real ID 3) status changes abruptly from contact + (with target element 1325) -> no-contact. + FORCE CONVERGENCE VALUE = 3.055 CRITERION= 0.1216E-01 + DISP CONVERGENCE VALUE = 0.5622E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5622E-02 + DISP CONVERGENCE VALUE = 0.5594E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9949 SCALED MAX DOF INC = -0.5594E-02 + FORCE CONVERGENCE VALUE = 2.567 CRITERION= 0.1227E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6338E-02 + DISP CONVERGENCE VALUE = 0.5550E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8757 SCALED MAX DOF INC = 0.5550E-02 + FORCE CONVERGENCE VALUE = 1.555 CRITERION= 0.1216E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2072E-03 + DISP CONVERGENCE VALUE = 0.2072E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2072E-03 + FORCE CONVERGENCE VALUE = 0.5908 CRITERION= 0.1216E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1185E-02 + DISP CONVERGENCE VALUE = 0.1055E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8908 SCALED MAX DOF INC = 0.1055E-02 + FORCE CONVERGENCE VALUE = 0.6511E-01 CRITERION= 0.1214E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4105E-03 + DISP CONVERGENCE VALUE = 0.3002E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7313 SCALED MAX DOF INC = 0.3002E-03 + FORCE CONVERGENCE VALUE = 0.1748E-01 CRITERION= 0.1214E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3497E-04 + DISP CONVERGENCE VALUE = 0.3116E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8910 SCALED MAX DOF INC = 0.3116E-04 + FORCE CONVERGENCE VALUE = 0.1929E-02 CRITERION= 0.1214E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 33 COMPLETED. CUM ITER = 168 + *** TIME = 0.330000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 9.279 TIME= 03:04:52 + Contact element 978 (real ID 3) status changes abruptly from contact + (with target element 1323) -> no-contact. + FORCE CONVERGENCE VALUE = 2.961 CRITERION= 0.1198E-01 + DISP CONVERGENCE VALUE = 0.7124E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7124E-02 + DISP CONVERGENCE VALUE = 0.7027E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9865 SCALED MAX DOF INC = -0.7027E-02 + FORCE CONVERGENCE VALUE = 2.938 CRITERION= 0.1211E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5512E-02 + DISP CONVERGENCE VALUE = 0.5078E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9213 SCALED MAX DOF INC = 0.5078E-02 + FORCE CONVERGENCE VALUE = 2.460 CRITERION= 0.1201E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2138E-02 + DISP CONVERGENCE VALUE = 0.2138E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2138E-02 + FORCE CONVERGENCE VALUE = 1.280 CRITERION= 0.1197E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7275E-03 + DISP CONVERGENCE VALUE = 0.7209E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9909 SCALED MAX DOF INC = 0.7209E-03 + FORCE CONVERGENCE VALUE = 0.1872 CRITERION= 0.1196E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2009E-03 + DISP CONVERGENCE VALUE = 0.1921E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9563 SCALED MAX DOF INC = 0.1921E-03 + FORCE CONVERGENCE VALUE = 0.1023E-01 CRITERION= 0.1197E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 34 COMPLETED. CUM ITER = 173 + *** TIME = 0.340000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 9.512 TIME= 03:04:52 + Contact element 980 (real ID 3) status changes abruptly from contact + (with target element 1321) -> no-contact. + FORCE CONVERGENCE VALUE = 3.134 CRITERION= 0.1182E-01 + DISP CONVERGENCE VALUE = 0.5199E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5199E-02 + DISP CONVERGENCE VALUE = 0.5199E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5199E-02 + FORCE CONVERGENCE VALUE = 2.648 CRITERION= 0.1190E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4743E-02 + DISP CONVERGENCE VALUE = 0.4395E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9266 SCALED MAX DOF INC = 0.4395E-02 + FORCE CONVERGENCE VALUE = 2.025 CRITERION= 0.1182E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1765E-02 + DISP CONVERGENCE VALUE = 0.1765E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1765E-02 + FORCE CONVERGENCE VALUE = 0.7740 CRITERION= 0.1179E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3286E-03 + DISP CONVERGENCE VALUE = 0.3250E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9893 SCALED MAX DOF INC = 0.3250E-03 + FORCE CONVERGENCE VALUE = 0.1113E-01 CRITERION= 0.1179E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 35 COMPLETED. CUM ITER = 177 + *** TIME = 0.350000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 9.706 TIME= 03:04:53 + Contact element 982 (real ID 3) status changes abruptly from contact + (with target element 1319) -> no-contact. + FORCE CONVERGENCE VALUE = 3.046 CRITERION= 0.1164E-01 + DISP CONVERGENCE VALUE = 0.4796E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4796E-02 + DISP CONVERGENCE VALUE = 0.4796E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4796E-02 + FORCE CONVERGENCE VALUE = 2.175 CRITERION= 0.1171E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4241E-02 + DISP CONVERGENCE VALUE = 0.3994E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9417 SCALED MAX DOF INC = -0.3994E-02 + FORCE CONVERGENCE VALUE = 1.519 CRITERION= 0.1164E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2055E-02 + DISP CONVERGENCE VALUE = 0.1921E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9348 SCALED MAX DOF INC = 0.1921E-02 + FORCE CONVERGENCE VALUE = 0.2068 CRITERION= 0.1161E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1404E-02 + DISP CONVERGENCE VALUE = 0.8599E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6124 SCALED MAX DOF INC = 0.8599E-03 + FORCE CONVERGENCE VALUE = 0.8012E-01 CRITERION= 0.1163E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3701E-03 + DISP CONVERGENCE VALUE = 0.2547E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6881 SCALED MAX DOF INC = 0.2547E-03 + FORCE CONVERGENCE VALUE = 0.2554E-01 CRITERION= 0.1162E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1698E-03 + DISP CONVERGENCE VALUE = 0.1039E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6120 SCALED MAX DOF INC = 0.1039E-03 + FORCE CONVERGENCE VALUE = 0.9915E-02 CRITERION= 0.1163E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 36 COMPLETED. CUM ITER = 183 + *** TIME = 0.360000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 10.003 TIME= 03:04:53 + Contact element 983 (real ID 3) status changes abruptly from contact + (with target element 1318) -> no-contact. + FORCE CONVERGENCE VALUE = 3.133 CRITERION= 0.1149E-01 + DISP CONVERGENCE VALUE = 0.6900E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6900E-02 + DISP CONVERGENCE VALUE = 0.6831E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9899 SCALED MAX DOF INC = -0.6831E-02 + FORCE CONVERGENCE VALUE = 2.751 CRITERION= 0.1159E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7664E-02 + DISP CONVERGENCE VALUE = 0.6450E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8416 SCALED MAX DOF INC = -0.6450E-02 + FORCE CONVERGENCE VALUE = 1.771 CRITERION= 0.1149E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1981E-03 + DISP CONVERGENCE VALUE = 0.1981E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1981E-03 + FORCE CONVERGENCE VALUE = 0.8605 CRITERION= 0.1149E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2207E-02 + DISP CONVERGENCE VALUE = 0.1886E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8546 SCALED MAX DOF INC = -0.1886E-02 + FORCE CONVERGENCE VALUE = 0.1257 CRITERION= 0.1146E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7908E-03 + DISP CONVERGENCE VALUE = 0.5667E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7167 SCALED MAX DOF INC = 0.5667E-03 + FORCE CONVERGENCE VALUE = 0.3560E-01 CRITERION= 0.1147E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9126E-04 + DISP CONVERGENCE VALUE = 0.7805E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8552 SCALED MAX DOF INC = 0.7805E-04 + FORCE CONVERGENCE VALUE = 0.5192E-02 CRITERION= 0.1147E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 37 COMPLETED. CUM ITER = 189 + *** TIME = 0.370000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 10.274 TIME= 03:04:53 + Contact element 985 (real ID 3) status changes abruptly from contact + (with target element 1316) -> no-contact. + FORCE CONVERGENCE VALUE = 2.875 CRITERION= 0.1133E-01 + DISP CONVERGENCE VALUE = 0.5484E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5484E-02 + DISP CONVERGENCE VALUE = 0.5459E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9953 SCALED MAX DOF INC = -0.5459E-02 + FORCE CONVERGENCE VALUE = 2.222 CRITERION= 0.1141E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6693E-02 + DISP CONVERGENCE VALUE = 0.5640E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8426 SCALED MAX DOF INC = -0.5640E-02 + FORCE CONVERGENCE VALUE = 1.175 CRITERION= 0.1132E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1453E-03 + DISP CONVERGENCE VALUE = 0.1453E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1453E-03 + FORCE CONVERGENCE VALUE = 0.1862 CRITERION= 0.1132E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6104E-03 + DISP CONVERGENCE VALUE = 0.4342E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7114 SCALED MAX DOF INC = 0.4342E-03 + FORCE CONVERGENCE VALUE = 0.5411E-01 CRITERION= 0.1131E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2925E-03 + DISP CONVERGENCE VALUE = 0.2124E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7262 SCALED MAX DOF INC = 0.2124E-03 + FORCE CONVERGENCE VALUE = 0.1482E-01 CRITERION= 0.1132E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7036E-04 + DISP CONVERGENCE VALUE = 0.4302E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6115 SCALED MAX DOF INC = 0.4302E-04 + FORCE CONVERGENCE VALUE = 0.5794E-02 CRITERION= 0.1132E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 38 COMPLETED. CUM ITER = 195 + *** TIME = 0.380000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 10.559 TIME= 03:04:53 + Contact element 987 (real ID 3) status changes abruptly from contact + (with target element 1314) -> no-contact. + FORCE CONVERGENCE VALUE = 2.996 CRITERION= 0.1120E-01 + DISP CONVERGENCE VALUE = 0.5330E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5330E-02 + DISP CONVERGENCE VALUE = 0.5330E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5330E-02 + FORCE CONVERGENCE VALUE = 2.470 CRITERION= 0.1127E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5259E-02 + DISP CONVERGENCE VALUE = 0.4700E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8937 SCALED MAX DOF INC = -0.4700E-02 + FORCE CONVERGENCE VALUE = 1.804 CRITERION= 0.1119E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1793E-02 + DISP CONVERGENCE VALUE = 0.1786E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9960 SCALED MAX DOF INC = 0.1786E-02 + FORCE CONVERGENCE VALUE = 0.5929 CRITERION= 0.1117E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7636E-04 + DISP CONVERGENCE VALUE = 0.7625E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9986 SCALED MAX DOF INC = -0.7625E-04 + FORCE CONVERGENCE VALUE = 0.7459E-02 CRITERION= 0.1117E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 39 COMPLETED. CUM ITER = 199 + *** TIME = 0.390000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 10.752 TIME= 03:04:54 + Contact element 989 (real ID 3) status changes abruptly from contact + (with target element 1312) -> no-contact. + FORCE CONVERGENCE VALUE = 2.881 CRITERION= 0.1104E-01 + DISP CONVERGENCE VALUE = 0.4142E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4142E-02 + DISP CONVERGENCE VALUE = 0.4142E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4142E-02 + FORCE CONVERGENCE VALUE = 1.838 CRITERION= 0.1109E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4117E-02 + DISP CONVERGENCE VALUE = 0.3801E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9234 SCALED MAX DOF INC = -0.3801E-02 + FORCE CONVERGENCE VALUE = 1.105 CRITERION= 0.1104E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1692E-02 + DISP CONVERGENCE VALUE = 0.1577E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9319 SCALED MAX DOF INC = 0.1577E-02 + FORCE CONVERGENCE VALUE = 0.7629E-01 CRITERION= 0.1102E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1089E-02 + DISP CONVERGENCE VALUE = 0.6211E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5704 SCALED MAX DOF INC = 0.6211E-03 + FORCE CONVERGENCE VALUE = 0.3267E-01 CRITERION= 0.1103E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5777E-04 + DISP CONVERGENCE VALUE = 0.5349E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9260 SCALED MAX DOF INC = 0.5349E-04 + FORCE CONVERGENCE VALUE = 0.2476E-02 CRITERION= 0.1103E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 40 COMPLETED. CUM ITER = 204 + *** TIME = 0.400000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 10.996 TIME= 03:04:54 + Contact element 990 (real ID 3) status changes abruptly from contact + (with target element 1311) -> no-contact. + FORCE CONVERGENCE VALUE = 2.882 CRITERION= 0.1091E-01 + DISP CONVERGENCE VALUE = 0.6049E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6049E-02 + DISP CONVERGENCE VALUE = 0.6043E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9989 SCALED MAX DOF INC = 0.6043E-02 + FORCE CONVERGENCE VALUE = 2.307 CRITERION= 0.1098E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7164E-02 + DISP CONVERGENCE VALUE = 0.5902E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8238 SCALED MAX DOF INC = -0.5902E-02 + FORCE CONVERGENCE VALUE = 1.227 CRITERION= 0.1090E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2304E-03 + DISP CONVERGENCE VALUE = 0.2304E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2304E-03 + FORCE CONVERGENCE VALUE = 0.2319 CRITERION= 0.1090E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8116E-03 + DISP CONVERGENCE VALUE = 0.6433E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7927 SCALED MAX DOF INC = -0.6433E-03 + FORCE CONVERGENCE VALUE = 0.4857E-01 CRITERION= 0.1089E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2903E-03 + DISP CONVERGENCE VALUE = 0.2032E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7001 SCALED MAX DOF INC = 0.2032E-03 + FORCE CONVERGENCE VALUE = 0.1456E-01 CRITERION= 0.1090E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5082E-04 + DISP CONVERGENCE VALUE = 0.4028E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7927 SCALED MAX DOF INC = 0.4028E-04 + FORCE CONVERGENCE VALUE = 0.3056E-02 CRITERION= 0.1090E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 41 COMPLETED. CUM ITER = 210 + *** TIME = 0.410000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 11.274 TIME= 03:04:54 + Contact element 992 (real ID 3) status changes abruptly from contact + (with target element 1309) -> no-contact. + FORCE CONVERGENCE VALUE = 2.905 CRITERION= 0.1079E-01 + DISP CONVERGENCE VALUE = 0.5352E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5352E-02 + DISP CONVERGENCE VALUE = 0.5352E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.5352E-02 + FORCE CONVERGENCE VALUE = 2.380 CRITERION= 0.1085E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5729E-02 + DISP CONVERGENCE VALUE = 0.4963E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8663 SCALED MAX DOF INC = -0.4963E-02 + FORCE CONVERGENCE VALUE = 1.688 CRITERION= 0.1078E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1835E-02 + DISP CONVERGENCE VALUE = 0.1819E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9912 SCALED MAX DOF INC = 0.1819E-02 + FORCE CONVERGENCE VALUE = 0.5065 CRITERION= 0.1076E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9659E-04 + DISP CONVERGENCE VALUE = 0.9655E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9996 SCALED MAX DOF INC = 0.9655E-04 + FORCE CONVERGENCE VALUE = 0.7582E-02 CRITERION= 0.1076E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 42 COMPLETED. CUM ITER = 214 + *** TIME = 0.420000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 11.489 TIME= 03:04:54 + Contact element 994 (real ID 3) status changes abruptly from contact + (with target element 1307) -> no-contact. + FORCE CONVERGENCE VALUE = 2.800 CRITERION= 0.1065E-01 + DISP CONVERGENCE VALUE = 0.8800E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8800E-02 + DISP CONVERGENCE VALUE = 0.8430E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9580 SCALED MAX DOF INC = 0.8430E-02 + FORCE CONVERGENCE VALUE = 2.558 CRITERION= 0.1075E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9536E-02 + DISP CONVERGENCE VALUE = 0.7510E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7876 SCALED MAX DOF INC = -0.7510E-02 + FORCE CONVERGENCE VALUE = 1.697 CRITERION= 0.1065E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2054E-03 + DISP CONVERGENCE VALUE = 0.2054E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2054E-03 + FORCE CONVERGENCE VALUE = 0.8487 CRITERION= 0.1066E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2898E-02 + DISP CONVERGENCE VALUE = 0.2319E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8003 SCALED MAX DOF INC = -0.2319E-02 + FORCE CONVERGENCE VALUE = 0.1700 CRITERION= 0.1063E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1138E-02 + DISP CONVERGENCE VALUE = 0.7781E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6835 SCALED MAX DOF INC = 0.7781E-03 + FORCE CONVERGENCE VALUE = 0.5379E-01 CRITERION= 0.1064E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1836E-03 + DISP CONVERGENCE VALUE = 0.1471E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8011 SCALED MAX DOF INC = 0.1471E-03 + FORCE CONVERGENCE VALUE = 0.1074E-01 CRITERION= 0.1063E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7170E-04 + DISP CONVERGENCE VALUE = 0.4896E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6828 SCALED MAX DOF INC = 0.4896E-04 + FORCE CONVERGENCE VALUE = 0.3407E-02 CRITERION= 0.1250E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 43 COMPLETED. CUM ITER = 221 + *** TIME = 0.430000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 11.797 TIME= 03:04:55 + Contact element 995 (real ID 3) status changes abruptly from contact + (with target element 1306) -> no-contact. + FORCE CONVERGENCE VALUE = 2.680 CRITERION= 0.1053E-01 + DISP CONVERGENCE VALUE = 0.5722E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5722E-02 + DISP CONVERGENCE VALUE = 0.5676E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9921 SCALED MAX DOF INC = 0.5676E-02 + FORCE CONVERGENCE VALUE = 1.920 CRITERION= 0.1059E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7489E-02 + DISP CONVERGENCE VALUE = 0.5924E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7910 SCALED MAX DOF INC = -0.5924E-02 + FORCE CONVERGENCE VALUE = 0.8754 CRITERION= 0.1052E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2021E-03 + DISP CONVERGENCE VALUE = 0.2020E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9999 SCALED MAX DOF INC = 0.2020E-03 + FORCE CONVERGENCE VALUE = 0.1034E-01 CRITERION= 0.1052E-01 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6421E-04 + DISP CONVERGENCE VALUE = 0.6421E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.6421E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 44 COMPLETED. CUM ITER = 225 + *** TIME = 0.440000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 12.000 TIME= 03:04:55 + Contact element 997 (real ID 3) status changes abruptly from contact + (with target element 1304) -> no-contact. + FORCE CONVERGENCE VALUE = 2.831 CRITERION= 0.1043E-01 + DISP CONVERGENCE VALUE = 0.4377E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4377E-02 + DISP CONVERGENCE VALUE = 0.4377E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4377E-02 + FORCE CONVERGENCE VALUE = 1.969 CRITERION= 0.1047E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5274E-02 + DISP CONVERGENCE VALUE = 0.4577E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8678 SCALED MAX DOF INC = -0.4577E-02 + FORCE CONVERGENCE VALUE = 1.233 CRITERION= 0.1041E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2327E-02 + DISP CONVERGENCE VALUE = 0.2095E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9003 SCALED MAX DOF INC = 0.2095E-02 + FORCE CONVERGENCE VALUE = 0.1240 CRITERION= 0.1038E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1685E-02 + DISP CONVERGENCE VALUE = 0.1142E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6778 SCALED MAX DOF INC = 0.1142E-02 + FORCE CONVERGENCE VALUE = 0.3985E-01 CRITERION= 0.1040E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9846E-04 + DISP CONVERGENCE VALUE = 0.8323E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8454 SCALED MAX DOF INC = -0.8323E-04 + FORCE CONVERGENCE VALUE = 0.6211E-02 CRITERION= 0.1040E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 45 COMPLETED. CUM ITER = 230 + *** TIME = 0.450000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 12.229 TIME= 03:04:55 + Contact element 998 (real ID 3) status changes abruptly from contact + (with target element 1303) -> no-contact. + FORCE CONVERGENCE VALUE = 2.929 CRITERION= 0.1030E-01 + DISP CONVERGENCE VALUE = 0.6689E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6689E-02 + DISP CONVERGENCE VALUE = 0.6635E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9920 SCALED MAX DOF INC = 0.6635E-02 + FORCE CONVERGENCE VALUE = 2.202 CRITERION= 0.1037E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8678E-02 + DISP CONVERGENCE VALUE = 0.6646E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7658 SCALED MAX DOF INC = -0.6646E-02 + FORCE CONVERGENCE VALUE = 1.163 CRITERION= 0.1029E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3782E-03 + DISP CONVERGENCE VALUE = 0.3782E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3782E-03 + FORCE CONVERGENCE VALUE = 0.1908 CRITERION= 0.1029E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9525E-03 + DISP CONVERGENCE VALUE = 0.6782E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7121 SCALED MAX DOF INC = -0.6782E-03 + FORCE CONVERGENCE VALUE = 0.5534E-01 CRITERION= 0.1029E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3106E-03 + DISP CONVERGENCE VALUE = 0.2164E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6967 SCALED MAX DOF INC = 0.2164E-03 + FORCE CONVERGENCE VALUE = 0.1678E-01 CRITERION= 0.1029E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8355E-04 + DISP CONVERGENCE VALUE = 0.5951E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7123 SCALED MAX DOF INC = 0.5951E-04 + FORCE CONVERGENCE VALUE = 0.4875E-02 CRITERION= 0.1029E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 46 COMPLETED. CUM ITER = 236 + *** TIME = 0.460000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 12.496 TIME= 03:04:55 + Contact element 1000 (real ID 3) status changes abruptly from contact + (with target element 1301) -> no-contact. + FORCE CONVERGENCE VALUE = 2.859 CRITERION= 0.1020E-01 + DISP CONVERGENCE VALUE = 0.5370E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5370E-02 + DISP CONVERGENCE VALUE = 0.5370E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.5370E-02 + FORCE CONVERGENCE VALUE = 2.165 CRITERION= 0.1025E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6172E-02 + DISP CONVERGENCE VALUE = 0.5131E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8313 SCALED MAX DOF INC = -0.5131E-02 + FORCE CONVERGENCE VALUE = 1.428 CRITERION= 0.1019E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1836E-02 + DISP CONVERGENCE VALUE = 0.1794E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9771 SCALED MAX DOF INC = 0.1794E-02 + FORCE CONVERGENCE VALUE = 0.2498 CRITERION= 0.1017E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7179E-03 + DISP CONVERGENCE VALUE = 0.6096E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8491 SCALED MAX DOF INC = 0.6096E-03 + FORCE CONVERGENCE VALUE = 0.3829E-01 CRITERION= 0.1018E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3547E-03 + DISP CONVERGENCE VALUE = 0.2195E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6190 SCALED MAX DOF INC = -0.2195E-03 + FORCE CONVERGENCE VALUE = 0.1479E-01 CRITERION= 0.1017E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4165E-04 + DISP CONVERGENCE VALUE = 0.3535E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8489 SCALED MAX DOF INC = 0.3535E-04 + FORCE CONVERGENCE VALUE = 0.2270E-02 CRITERION= 0.1017E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 47 COMPLETED. CUM ITER = 242 + *** TIME = 0.470000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 12.777 TIME= 03:04:56 + Contact element 1002 (real ID 3) status changes abruptly from contact + (with target element 1299) -> no-contact. + FORCE CONVERGENCE VALUE = 2.828 CRITERION= 0.1008E-01 + DISP CONVERGENCE VALUE = 0.7883E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7883E-02 + DISP CONVERGENCE VALUE = 0.7662E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9720 SCALED MAX DOF INC = 0.7662E-02 + FORCE CONVERGENCE VALUE = 2.231 CRITERION= 0.1016E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1013E-01 + DISP CONVERGENCE VALUE = 0.7419E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7322 SCALED MAX DOF INC = -0.7419E-02 + FORCE CONVERGENCE VALUE = 1.286 CRITERION= 0.1007E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3883E-03 + DISP CONVERGENCE VALUE = 0.3883E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3883E-03 + FORCE CONVERGENCE VALUE = 0.3730 CRITERION= 0.1008E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1837E-02 + DISP CONVERGENCE VALUE = 0.1309E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7127 SCALED MAX DOF INC = -0.1309E-02 + FORCE CONVERGENCE VALUE = 0.1075 CRITERION= 0.1007E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6767E-03 + DISP CONVERGENCE VALUE = 0.4538E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6707 SCALED MAX DOF INC = 0.4538E-03 + FORCE CONVERGENCE VALUE = 0.3538E-01 CRITERION= 0.1007E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1741E-03 + DISP CONVERGENCE VALUE = 0.1242E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7133 SCALED MAX DOF INC = -0.1242E-03 + FORCE CONVERGENCE VALUE = 0.1018E-01 CRITERION= 0.1007E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6394E-04 + DISP CONVERGENCE VALUE = 0.4286E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6704 SCALED MAX DOF INC = 0.4286E-04 + FORCE CONVERGENCE VALUE = 0.3355E-02 CRITERION= 0.1184E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 48 COMPLETED. CUM ITER = 249 + *** TIME = 0.480000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 13.081 TIME= 03:04:56 + Contact element 1003 (real ID 3) status changes abruptly from contact + (with target element 1298) -> no-contact. + FORCE CONVERGENCE VALUE = 2.701 CRITERION= 0.9986E-02 + DISP CONVERGENCE VALUE = 0.6662E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6662E-02 + DISP CONVERGENCE VALUE = 0.6569E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9860 SCALED MAX DOF INC = 0.6569E-02 + FORCE CONVERGENCE VALUE = 2.152 CRITERION= 0.1004E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7304E-02 + DISP CONVERGENCE VALUE = 0.5744E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7864 SCALED MAX DOF INC = -0.5744E-02 + FORCE CONVERGENCE VALUE = 1.464 CRITERION= 0.9981E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2058E-02 + DISP CONVERGENCE VALUE = 0.2014E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9786 SCALED MAX DOF INC = 0.2014E-02 + FORCE CONVERGENCE VALUE = 0.3676 CRITERION= 0.9960E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5849E-03 + DISP CONVERGENCE VALUE = 0.5499E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9401 SCALED MAX DOF INC = 0.5499E-03 + FORCE CONVERGENCE VALUE = 0.2335E-01 CRITERION= 0.9967E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3960E-03 + DISP CONVERGENCE VALUE = 0.2224E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5615 SCALED MAX DOF INC = -0.2224E-03 + FORCE CONVERGENCE VALUE = 0.1035E-01 CRITERION= 0.9964E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1584E-04 + DISP CONVERGENCE VALUE = 0.1489E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9397 SCALED MAX DOF INC = 0.1489E-04 + FORCE CONVERGENCE VALUE = 0.6513E-03 CRITERION= 0.9964E-02 <<< CONVERGED + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1057E-04 + DISP CONVERGENCE VALUE = 0.1057E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1057E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 49 COMPLETED. CUM ITER = 256 + *** TIME = 0.490000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 13.411 TIME= 03:04:56 + Contact element 1005 (real ID 3) status changes abruptly from contact + (with target element 1296) -> no-contact. + FORCE CONVERGENCE VALUE = 2.688 CRITERION= 0.9881E-02 + DISP CONVERGENCE VALUE = 0.8491E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8491E-02 + DISP CONVERGENCE VALUE = 0.8142E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9589 SCALED MAX DOF INC = 0.8142E-02 + FORCE CONVERGENCE VALUE = 2.195 CRITERION= 0.9954E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1084E-01 + DISP CONVERGENCE VALUE = 0.7761E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7157 SCALED MAX DOF INC = -0.7761E-02 + FORCE CONVERGENCE VALUE = 1.293 CRITERION= 0.9872E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3787E-03 + DISP CONVERGENCE VALUE = 0.3787E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3787E-03 + FORCE CONVERGENCE VALUE = 0.4018 CRITERION= 0.9876E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2126E-02 + DISP CONVERGENCE VALUE = 0.1473E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6929 SCALED MAX DOF INC = -0.1473E-02 + FORCE CONVERGENCE VALUE = 0.1237 CRITERION= 0.9861E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8067E-03 + DISP CONVERGENCE VALUE = 0.5307E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6578 SCALED MAX DOF INC = 0.5307E-03 + FORCE CONVERGENCE VALUE = 0.4231E-01 CRITERION= 0.9867E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2238E-03 + DISP CONVERGENCE VALUE = 0.1552E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6935 SCALED MAX DOF INC = -0.1552E-03 + FORCE CONVERGENCE VALUE = 0.1300E-01 CRITERION= 0.9865E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8463E-04 + DISP CONVERGENCE VALUE = 0.5565E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6575 SCALED MAX DOF INC = 0.5565E-04 + FORCE CONVERGENCE VALUE = 0.4453E-02 CRITERION= 0.1160E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 50 COMPLETED. CUM ITER = 263 + *** TIME = 0.500000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 13.739 TIME= 03:04:57 + Contact element 1006 (real ID 3) status changes abruptly from contact + (with target element 1295) -> no-contact. + FORCE CONVERGENCE VALUE = 2.621 CRITERION= 0.9789E-02 + DISP CONVERGENCE VALUE = 0.6821E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6821E-02 + DISP CONVERGENCE VALUE = 0.6701E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9824 SCALED MAX DOF INC = 0.6701E-02 + FORCE CONVERGENCE VALUE = 2.095 CRITERION= 0.9843E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7685E-02 + DISP CONVERGENCE VALUE = 0.5897E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7673 SCALED MAX DOF INC = -0.5897E-02 + FORCE CONVERGENCE VALUE = 1.405 CRITERION= 0.9783E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2121E-02 + DISP CONVERGENCE VALUE = 0.2067E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9745 SCALED MAX DOF INC = 0.2067E-02 + FORCE CONVERGENCE VALUE = 0.3232 CRITERION= 0.9763E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7920E-03 + DISP CONVERGENCE VALUE = 0.6986E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8821 SCALED MAX DOF INC = 0.6986E-03 + FORCE CONVERGENCE VALUE = 0.3882E-01 CRITERION= 0.9770E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5090E-03 + DISP CONVERGENCE VALUE = 0.2865E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5628 SCALED MAX DOF INC = -0.2865E-03 + FORCE CONVERGENCE VALUE = 0.1711E-01 CRITERION= 0.9767E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4126E-04 + DISP CONVERGENCE VALUE = 0.3639E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8819 SCALED MAX DOF INC = 0.3639E-04 + FORCE CONVERGENCE VALUE = 0.2051E-02 CRITERION= 0.9767E-02 <<< CONVERGED + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2636E-04 + DISP CONVERGENCE VALUE = 0.2636E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2636E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 51 COMPLETED. CUM ITER = 270 + *** TIME = 0.510000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 14.064 TIME= 03:04:57 + Contact element 1008 (real ID 3) status changes abruptly from contact + (with target element 1293) -> no-contact. + FORCE CONVERGENCE VALUE = 2.667 CRITERION= 0.9690E-02 + DISP CONVERGENCE VALUE = 0.8284E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8284E-02 + DISP CONVERGENCE VALUE = 0.7967E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9617 SCALED MAX DOF INC = 0.7967E-02 + FORCE CONVERGENCE VALUE = 2.108 CRITERION= 0.9756E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1120E-01 + DISP CONVERGENCE VALUE = 0.7784E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6951 SCALED MAX DOF INC = -0.7784E-02 + FORCE CONVERGENCE VALUE = 1.192 CRITERION= 0.9679E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4672E-03 + DISP CONVERGENCE VALUE = 0.4672E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4672E-03 + FORCE CONVERGENCE VALUE = 0.2782 CRITERION= 0.9683E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1759E-02 + DISP CONVERGENCE VALUE = 0.1138E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6469 SCALED MAX DOF INC = -0.1138E-02 + FORCE CONVERGENCE VALUE = 0.9852E-01 CRITERION= 0.9672E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6059E-03 + DISP CONVERGENCE VALUE = 0.4021E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6637 SCALED MAX DOF INC = 0.4021E-03 + FORCE CONVERGENCE VALUE = 0.3312E-01 CRITERION= 0.9676E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2092E-03 + DISP CONVERGENCE VALUE = 0.1355E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6475 SCALED MAX DOF INC = -0.1355E-03 + FORCE CONVERGENCE VALUE = 0.1172E-01 CRITERION= 0.9675E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7190E-04 + DISP CONVERGENCE VALUE = 0.4771E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6635 SCALED MAX DOF INC = 0.4771E-04 + FORCE CONVERGENCE VALUE = 0.3942E-02 CRITERION= 0.1137E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 52 COMPLETED. CUM ITER = 277 + *** TIME = 0.520000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 14.414 TIME= 03:04:57 + Contact element 1009 (real ID 3) status changes abruptly from contact + (with target element 1292) -> no-contact. + FORCE CONVERGENCE VALUE = 2.651 CRITERION= 0.9605E-02 + DISP CONVERGENCE VALUE = 0.5934E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5934E-02 + DISP CONVERGENCE VALUE = 0.5905E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9951 SCALED MAX DOF INC = 0.5905E-02 + FORCE CONVERGENCE VALUE = 2.006 CRITERION= 0.9648E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7324E-02 + DISP CONVERGENCE VALUE = 0.5630E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7688 SCALED MAX DOF INC = -0.5630E-02 + FORCE CONVERGENCE VALUE = 1.256 CRITERION= 0.9594E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1990E-02 + DISP CONVERGENCE VALUE = 0.1921E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9651 SCALED MAX DOF INC = 0.1921E-02 + FORCE CONVERGENCE VALUE = 0.1262 CRITERION= 0.9576E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1404E-02 + DISP CONVERGENCE VALUE = 0.8208E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5847 SCALED MAX DOF INC = 0.8208E-03 + FORCE CONVERGENCE VALUE = 0.1156 CRITERION= 0.9584E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3555E-05 + DISP CONVERGENCE VALUE = 0.3555E-05 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3555E-05 + FORCE CONVERGENCE VALUE = 0.5661E-01 CRITERION= 0.9584E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2115E-03 + DISP CONVERGENCE VALUE = 0.1576E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7452 SCALED MAX DOF INC = -0.1576E-03 + FORCE CONVERGENCE VALUE = 0.1569E-01 CRITERION= 0.9582E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1067E-03 + DISP CONVERGENCE VALUE = 0.6482E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6074 SCALED MAX DOF INC = 0.6482E-04 + FORCE CONVERGENCE VALUE = 0.6150E-02 CRITERION= 0.1126E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 53 COMPLETED. CUM ITER = 284 + *** TIME = 0.530000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 14.740 TIME= 03:04:58 + Contact element 1011 (real ID 3) status changes abruptly from contact + (with target element 1290) -> no-contact. + FORCE CONVERGENCE VALUE = 2.763 CRITERION= 0.9511E-02 + DISP CONVERGENCE VALUE = 0.7137E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7137E-02 + DISP CONVERGENCE VALUE = 0.7019E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9835 SCALED MAX DOF INC = 0.7019E-02 + FORCE CONVERGENCE VALUE = 1.992 CRITERION= 0.9564E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1071E-01 + DISP CONVERGENCE VALUE = 0.7362E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6872 SCALED MAX DOF INC = -0.7362E-02 + FORCE CONVERGENCE VALUE = 0.9983 CRITERION= 0.9495E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5688E-03 + DISP CONVERGENCE VALUE = 0.5681E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9988 SCALED MAX DOF INC = 0.5681E-03 + FORCE CONVERGENCE VALUE = 0.1651E-01 CRITERION= 0.9500E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4762E-03 + DISP CONVERGENCE VALUE = 0.2235E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4692 SCALED MAX DOF INC = -0.2235E-03 + FORCE CONVERGENCE VALUE = 0.9482E-02 CRITERION= 0.9498E-02 <<< CONVERGED + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1025E-04 + DISP CONVERGENCE VALUE = 0.1025E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1025E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 54 COMPLETED. CUM ITER = 289 + *** TIME = 0.540000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 14.977 TIME= 03:04:58 + Contact element 1012 (real ID 3) status changes abruptly from contact + (with target element 1289) -> no-contact. + FORCE CONVERGENCE VALUE = 2.797 CRITERION= 0.9435E-02 + DISP CONVERGENCE VALUE = 0.4603E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4603E-02 + DISP CONVERGENCE VALUE = 0.4603E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4603E-02 + FORCE CONVERGENCE VALUE = 1.763 CRITERION= 0.9462E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6910E-02 + DISP CONVERGENCE VALUE = 0.5294E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7661 SCALED MAX DOF INC = -0.5294E-02 + FORCE CONVERGENCE VALUE = 0.9818 CRITERION= 0.9414E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2916E-02 + DISP CONVERGENCE VALUE = 0.2453E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8413 SCALED MAX DOF INC = 0.2453E-02 + FORCE CONVERGENCE VALUE = 0.1567 CRITERION= 0.9392E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2515E-02 + DISP CONVERGENCE VALUE = 0.1584E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6297 SCALED MAX DOF INC = 0.1584E-02 + FORCE CONVERGENCE VALUE = 0.5789E-01 CRITERION= 0.9407E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1717E-03 + DISP CONVERGENCE VALUE = 0.1535E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8939 SCALED MAX DOF INC = -0.1535E-03 + FORCE CONVERGENCE VALUE = 0.6215E-02 CRITERION= 0.9405E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 55 COMPLETED. CUM ITER = 294 + *** TIME = 0.550000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 15.212 TIME= 03:04:58 + Contact element 1014 (real ID 3) status changes abruptly from contact + (with target element 1287) -> no-contact. + FORCE CONVERGENCE VALUE = 2.627 CRITERION= 0.9332E-02 + DISP CONVERGENCE VALUE = 0.8042E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8042E-02 + DISP CONVERGENCE VALUE = 0.7706E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9582 SCALED MAX DOF INC = 0.7706E-02 + FORCE CONVERGENCE VALUE = 1.500 CRITERION= 0.9388E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1133E-01 + DISP CONVERGENCE VALUE = 0.7338E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6477 SCALED MAX DOF INC = -0.7338E-02 + FORCE CONVERGENCE VALUE = 0.6531 CRITERION= 0.9323E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1754E-03 + DISP CONVERGENCE VALUE = 0.1754E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1754E-03 + FORCE CONVERGENCE VALUE = 0.1207E-01 CRITERION= 0.9324E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1782E-04 + DISP CONVERGENCE VALUE = 0.1253E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7031 SCALED MAX DOF INC = 0.1253E-04 + FORCE CONVERGENCE VALUE = 0.3576E-02 CRITERION= 0.9325E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 56 COMPLETED. CUM ITER = 298 + *** TIME = 0.560000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 15.412 TIME= 03:04:58 + Contact element 1015 (real ID 3) status changes abruptly from contact + (with target element 1286) -> no-contact. + FORCE CONVERGENCE VALUE = 2.517 CRITERION= 0.9264E-02 + DISP CONVERGENCE VALUE = 0.3678E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3678E-02 + DISP CONVERGENCE VALUE = 0.3678E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3678E-02 + FORCE CONVERGENCE VALUE = 1.438 CRITERION= 0.9281E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5632E-02 + DISP CONVERGENCE VALUE = 0.4530E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8043 SCALED MAX DOF INC = -0.4530E-02 + FORCE CONVERGENCE VALUE = 0.6275 CRITERION= 0.9243E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1719E-02 + DISP CONVERGENCE VALUE = 0.1515E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8812 SCALED MAX DOF INC = 0.1515E-02 + FORCE CONVERGENCE VALUE = 0.7533E-01 CRITERION= 0.9230E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2298E-02 + DISP CONVERGENCE VALUE = 0.8942E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3892 SCALED MAX DOF INC = 0.8942E-03 + FORCE CONVERGENCE VALUE = 0.4584E-01 CRITERION= 0.9238E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1798E-03 + DISP CONVERGENCE VALUE = 0.1456E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8100 SCALED MAX DOF INC = 0.1456E-03 + FORCE CONVERGENCE VALUE = 0.8781E-02 CRITERION= 0.9237E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 57 COMPLETED. CUM ITER = 303 + *** TIME = 0.570000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 15.649 TIME= 03:04:58 + Contact element 1016 (real ID 3) status changes abruptly from contact + (with target element 1285) -> no-contact. + FORCE CONVERGENCE VALUE = 2.397 CRITERION= 0.9168E-02 + DISP CONVERGENCE VALUE = 0.6258E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6258E-02 + DISP CONVERGENCE VALUE = 0.6153E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9832 SCALED MAX DOF INC = 0.6153E-02 + FORCE CONVERGENCE VALUE = 1.251 CRITERION= 0.9207E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8981E-02 + DISP CONVERGENCE VALUE = 0.5992E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6672 SCALED MAX DOF INC = -0.5992E-02 + FORCE CONVERGENCE VALUE = 0.4170 CRITERION= 0.9158E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1666E-02 + DISP CONVERGENCE VALUE = 0.1377E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8268 SCALED MAX DOF INC = 0.1377E-02 + FORCE CONVERGENCE VALUE = 0.1733 CRITERION= 0.9169E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2077E-02 + DISP CONVERGENCE VALUE = 0.1146E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5519 SCALED MAX DOF INC = -0.1146E-02 + FORCE CONVERGENCE VALUE = 0.7824E-01 CRITERION= 0.9159E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4365E-03 + DISP CONVERGENCE VALUE = 0.3216E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7368 SCALED MAX DOF INC = 0.3216E-03 + FORCE CONVERGENCE VALUE = 0.2062E-01 CRITERION= 0.9162E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2464E-03 + DISP CONVERGENCE VALUE = 0.1362E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5527 SCALED MAX DOF INC = -0.1362E-03 + FORCE CONVERGENCE VALUE = 0.9284E-02 CRITERION= 0.9161E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5146E-04 + DISP CONVERGENCE VALUE = 0.3792E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7368 SCALED MAX DOF INC = 0.3792E-04 + FORCE CONVERGENCE VALUE = 0.2448E-02 CRITERION= 0.1077E-01 <<< CONVERGED + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2903E-04 + DISP CONVERGENCE VALUE = 0.2903E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2903E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 8 + *** LOAD STEP 1 SUBSTEP 58 COMPLETED. CUM ITER = 311 + *** TIME = 0.580000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 16.021 TIME= 03:04:59 + Contact element 1018 (real ID 3) status changes abruptly from contact + (with target element 1283) -> no-contact. + FORCE CONVERGENCE VALUE = 2.489 CRITERION= 0.9105E-02 + DISP CONVERGENCE VALUE = 0.8101E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8101E-02 + DISP CONVERGENCE VALUE = 0.7754E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9572 SCALED MAX DOF INC = 0.7754E-02 + FORCE CONVERGENCE VALUE = 1.914 CRITERION= 0.9155E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1282E-01 + DISP CONVERGENCE VALUE = 0.7948E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6201 SCALED MAX DOF INC = -0.7948E-02 + FORCE CONVERGENCE VALUE = 0.9915 CRITERION= 0.9090E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3457E-03 + DISP CONVERGENCE VALUE = 0.3457E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3457E-03 + FORCE CONVERGENCE VALUE = 0.6749E-01 CRITERION= 0.9093E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6294E-03 + DISP CONVERGENCE VALUE = 0.3347E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5318 SCALED MAX DOF INC = -0.3347E-03 + FORCE CONVERGENCE VALUE = 0.3195E-01 CRITERION= 0.9090E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1925E-03 + DISP CONVERGENCE VALUE = 0.1245E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6470 SCALED MAX DOF INC = 0.1245E-03 + FORCE CONVERGENCE VALUE = 0.1128E-01 CRITERION= 0.9091E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1049E-03 + DISP CONVERGENCE VALUE = 0.5579E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5318 SCALED MAX DOF INC = 0.5579E-04 + FORCE CONVERGENCE VALUE = 0.5406E-02 CRITERION= 0.9091E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 59 COMPLETED. CUM ITER = 317 + *** TIME = 0.590000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 16.330 TIME= 03:04:59 + Contact element 1019 (real ID 3) status changes abruptly from contact + (with target element 1282) -> no-contact. + FORCE CONVERGENCE VALUE = 2.636 CRITERION= 0.9041E-02 + DISP CONVERGENCE VALUE = 0.4476E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4476E-02 + DISP CONVERGENCE VALUE = 0.4476E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4476E-02 + FORCE CONVERGENCE VALUE = 1.668 CRITERION= 0.9062E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7531E-02 + DISP CONVERGENCE VALUE = 0.5462E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7252 SCALED MAX DOF INC = -0.5462E-02 + FORCE CONVERGENCE VALUE = 0.8723 CRITERION= 0.9019E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3261E-02 + DISP CONVERGENCE VALUE = 0.2611E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8006 SCALED MAX DOF INC = 0.2611E-02 + FORCE CONVERGENCE VALUE = 0.1746 CRITERION= 0.8999E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2995E-02 + DISP CONVERGENCE VALUE = 0.1818E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6069 SCALED MAX DOF INC = 0.1818E-02 + FORCE CONVERGENCE VALUE = 0.6851E-01 CRITERION= 0.9013E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2567E-03 + DISP CONVERGENCE VALUE = 0.2224E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8666 SCALED MAX DOF INC = -0.2224E-03 + FORCE CONVERGENCE VALUE = 0.9217E-02 CRITERION= 0.9012E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1572E-03 + DISP CONVERGENCE VALUE = 0.9508E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6049 SCALED MAX DOF INC = 0.9508E-04 + FORCE CONVERGENCE VALUE = 0.3635E-02 CRITERION= 0.9012E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 60 COMPLETED. CUM ITER = 323 + *** TIME = 0.600000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 16.615 TIME= 03:04:59 + Contact element 1021 (real ID 3) status changes abruptly from contact + (with target element 1280) -> no-contact. + FORCE CONVERGENCE VALUE = 2.454 CRITERION= 0.8953E-02 + DISP CONVERGENCE VALUE = 0.7383E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7383E-02 + DISP CONVERGENCE VALUE = 0.7144E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9675 SCALED MAX DOF INC = 0.7144E-02 + FORCE CONVERGENCE VALUE = 1.349 CRITERION= 0.8997E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1144E-01 + DISP CONVERGENCE VALUE = 0.7117E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6223 SCALED MAX DOF INC = -0.7117E-02 + FORCE CONVERGENCE VALUE = 0.5105 CRITERION= 0.8943E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2444E-02 + DISP CONVERGENCE VALUE = 0.1766E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7225 SCALED MAX DOF INC = 0.1766E-02 + FORCE CONVERGENCE VALUE = 0.3432 CRITERION= 0.8956E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4393E-02 + DISP CONVERGENCE VALUE = 0.1882E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4285 SCALED MAX DOF INC = -0.1882E-02 + FORCE CONVERGENCE VALUE = 0.1965 CRITERION= 0.8942E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1199E-02 + DISP CONVERGENCE VALUE = 0.7511E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6264 SCALED MAX DOF INC = 0.7511E-03 + FORCE CONVERGENCE VALUE = 0.7341E-01 CRITERION= 0.8947E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9425E-03 + DISP CONVERGENCE VALUE = 0.4052E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4300 SCALED MAX DOF INC = -0.4052E-03 + FORCE CONVERGENCE VALUE = 0.4191E-01 CRITERION= 0.8944E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2549E-03 + DISP CONVERGENCE VALUE = 0.1598E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6268 SCALED MAX DOF INC = 0.1598E-03 + FORCE CONVERGENCE VALUE = 0.1564E-01 CRITERION= 0.1051E-01 + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2007E-03 + DISP CONVERGENCE VALUE = 0.8635E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4303 SCALED MAX DOF INC = -0.8635E-04 + FORCE CONVERGENCE VALUE = 0.8924E-02 CRITERION= 0.1073E-01 <<< CONVERGED + EQUIL ITER 9 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5421E-04 + DISP CONVERGENCE VALUE = 0.5421E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.5421E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 9 + *** LOAD STEP 1 SUBSTEP 61 COMPLETED. CUM ITER = 332 + *** TIME = 0.610000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 17.071 TIME= 03:05:00 + Contact element 1022 (real ID 3) status changes abruptly from contact + (with target element 1279) -> no-contact. + FORCE CONVERGENCE VALUE = 2.380 CRITERION= 0.8899E-02 + DISP CONVERGENCE VALUE = 0.3185E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3185E-02 + DISP CONVERGENCE VALUE = 0.3185E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3185E-02 + FORCE CONVERGENCE VALUE = 1.119 CRITERION= 0.8910E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5105E-02 + DISP CONVERGENCE VALUE = 0.3875E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7590 SCALED MAX DOF INC = -0.3875E-02 + FORCE CONVERGENCE VALUE = 0.2947 CRITERION= 0.8883E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4499E-03 + DISP CONVERGENCE VALUE = 0.4431E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9849 SCALED MAX DOF INC = 0.4431E-03 + FORCE CONVERGENCE VALUE = 0.9802E-02 CRITERION= 0.8886E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5630E-03 + DISP CONVERGENCE VALUE = 0.2188E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3887 SCALED MAX DOF INC = -0.2188E-03 + FORCE CONVERGENCE VALUE = 0.6144E-02 CRITERION= 0.8884E-02 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 62 COMPLETED. CUM ITER = 336 + *** TIME = 0.620000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 17.267 TIME= 03:05:00 + Contact element 1023 (real ID 3) status changes abruptly from contact + (with target element 1278) -> no-contact. + FORCE CONVERGENCE VALUE = 2.482 CRITERION= 0.8845E-02 + DISP CONVERGENCE VALUE = 0.7287E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7287E-02 + DISP CONVERGENCE VALUE = 0.6995E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9599 SCALED MAX DOF INC = 0.6995E-02 + FORCE CONVERGENCE VALUE = 1.494 CRITERION= 0.8883E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1036E-01 + DISP CONVERGENCE VALUE = 0.6587E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6356 SCALED MAX DOF INC = -0.6587E-02 + FORCE CONVERGENCE VALUE = 0.8707 CRITERION= 0.8838E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2684E-02 + DISP CONVERGENCE VALUE = 0.2442E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9099 SCALED MAX DOF INC = 0.2442E-02 + FORCE CONVERGENCE VALUE = 0.7963E-01 CRITERION= 0.8823E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2060E-02 + DISP CONVERGENCE VALUE = 0.1172E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5691 SCALED MAX DOF INC = 0.1172E-02 + FORCE CONVERGENCE VALUE = 0.3409E-01 CRITERION= 0.8831E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1056E-03 + DISP CONVERGENCE VALUE = 0.9612E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9099 SCALED MAX DOF INC = 0.9612E-04 + FORCE CONVERGENCE VALUE = 0.3146E-02 CRITERION= 0.8830E-02 <<< CONVERGED + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8016E-04 + DISP CONVERGENCE VALUE = 0.8016E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.8016E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 63 COMPLETED. CUM ITER = 342 + *** TIME = 0.630000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 17.562 TIME= 03:05:00 + Contact element 1025 (real ID 3) status changes abruptly from contact + (with target element 1276) -> no-contact. + FORCE CONVERGENCE VALUE = 2.386 CRITERION= 0.8800E-02 + DISP CONVERGENCE VALUE = 0.7066E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7066E-02 + DISP CONVERGENCE VALUE = 0.6842E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9683 SCALED MAX DOF INC = 0.6842E-02 + FORCE CONVERGENCE VALUE = 1.358 CRITERION= 0.8835E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1233E-01 + DISP CONVERGENCE VALUE = 0.7331E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5946 SCALED MAX DOF INC = -0.7331E-02 + FORCE CONVERGENCE VALUE = 0.5515 CRITERION= 0.8791E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2710E-02 + DISP CONVERGENCE VALUE = 0.1925E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7104 SCALED MAX DOF INC = 0.1925E-02 + FORCE CONVERGENCE VALUE = 0.3331 CRITERION= 0.8803E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5158E-02 + DISP CONVERGENCE VALUE = 0.2016E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3909 SCALED MAX DOF INC = -0.2016E-02 + FORCE CONVERGENCE VALUE = 0.2033 CRITERION= 0.8791E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1293E-02 + DISP CONVERGENCE VALUE = 0.8088E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6255 SCALED MAX DOF INC = 0.8088E-03 + FORCE CONVERGENCE VALUE = 0.7611E-01 CRITERION= 0.8796E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1183E-02 + DISP CONVERGENCE VALUE = 0.4646E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3926 SCALED MAX DOF INC = -0.4646E-03 + FORCE CONVERGENCE VALUE = 0.4630E-01 CRITERION= 0.8793E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2934E-03 + DISP CONVERGENCE VALUE = 0.1837E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6262 SCALED MAX DOF INC = 0.1837E-03 + FORCE CONVERGENCE VALUE = 0.1731E-01 CRITERION= 0.1034E-01 + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2690E-03 + DISP CONVERGENCE VALUE = 0.1057E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3930 SCALED MAX DOF INC = -0.1057E-03 + FORCE CONVERGENCE VALUE = 0.1052E-01 CRITERION= 0.1055E-01 <<< CONVERGED + EQUIL ITER 9 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6657E-04 + DISP CONVERGENCE VALUE = 0.6657E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.6657E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 9 + *** LOAD STEP 1 SUBSTEP 64 COMPLETED. CUM ITER = 351 + *** TIME = 0.640000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 18.014 TIME= 03:05:01 + Contact element 1026 (real ID 3) status changes abruptly from contact + (with target element 1275) -> no-contact. + FORCE CONVERGENCE VALUE = 2.350 CRITERION= 0.8786E-02 + DISP CONVERGENCE VALUE = 0.3134E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3134E-02 + DISP CONVERGENCE VALUE = 0.3134E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.3134E-02 + FORCE CONVERGENCE VALUE = 1.059 CRITERION= 0.8799E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5291E-02 + DISP CONVERGENCE VALUE = 0.3887E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7347 SCALED MAX DOF INC = -0.3887E-02 + FORCE CONVERGENCE VALUE = 0.2813 CRITERION= 0.8781E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1859E-02 + DISP CONVERGENCE VALUE = 0.1252E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6739 SCALED MAX DOF INC = 0.1252E-02 + FORCE CONVERGENCE VALUE = 0.1158 CRITERION= 0.8787E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2471E-02 + DISP CONVERGENCE VALUE = 0.1066E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4313 SCALED MAX DOF INC = -0.1066E-02 + FORCE CONVERGENCE VALUE = 0.6627E-01 CRITERION= 0.8783E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5917E-03 + DISP CONVERGENCE VALUE = 0.3882E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6561 SCALED MAX DOF INC = 0.3882E-03 + FORCE CONVERGENCE VALUE = 0.2278E-01 CRITERION= 0.8785E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4846E-03 + DISP CONVERGENCE VALUE = 0.2095E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4323 SCALED MAX DOF INC = -0.2095E-03 + FORCE CONVERGENCE VALUE = 0.1303E-01 CRITERION= 0.8784E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1156E-03 + DISP CONVERGENCE VALUE = 0.7586E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6564 SCALED MAX DOF INC = 0.7586E-04 + FORCE CONVERGENCE VALUE = 0.4478E-02 CRITERION= 0.1033E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 65 COMPLETED. CUM ITER = 358 + *** TIME = 0.650000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 18.361 TIME= 03:05:01 + Contact element 1027 (real ID 3) status changes abruptly from contact + (with target element 1274) -> no-contact. + FORCE CONVERGENCE VALUE = 2.483 CRITERION= 0.8808E-02 + DISP CONVERGENCE VALUE = 0.6392E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6392E-02 + DISP CONVERGENCE VALUE = 0.6243E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9766 SCALED MAX DOF INC = 0.6243E-02 + FORCE CONVERGENCE VALUE = 1.456 CRITERION= 0.8833E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1006E-01 + DISP CONVERGENCE VALUE = 0.6326E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6289 SCALED MAX DOF INC = -0.6326E-02 + FORCE CONVERGENCE VALUE = 0.7781 CRITERION= 0.8813E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4890E-02 + DISP CONVERGENCE VALUE = 0.3262E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6670 SCALED MAX DOF INC = -0.3262E-02 + FORCE CONVERGENCE VALUE = 0.2597 CRITERION= 0.8807E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3961E-02 + DISP CONVERGENCE VALUE = 0.2416E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6101 SCALED MAX DOF INC = 0.2416E-02 + FORCE CONVERGENCE VALUE = 0.1011 CRITERION= 0.8815E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6410E-03 + DISP CONVERGENCE VALUE = 0.4981E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7770 SCALED MAX DOF INC = -0.4981E-03 + FORCE CONVERGENCE VALUE = 0.2263E-01 CRITERION= 0.8814E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3443E-03 + DISP CONVERGENCE VALUE = 0.2093E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6079 SCALED MAX DOF INC = 0.2093E-03 + FORCE CONVERGENCE VALUE = 0.8865E-02 CRITERION= 0.8815E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5603E-04 + DISP CONVERGENCE VALUE = 0.4354E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7771 SCALED MAX DOF INC = -0.4354E-04 + FORCE CONVERGENCE VALUE = 0.1987E-02 CRITERION= 0.1036E-01 <<< CONVERGED + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3011E-04 + DISP CONVERGENCE VALUE = 0.3011E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3011E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 8 + *** LOAD STEP 1 SUBSTEP 66 COMPLETED. CUM ITER = 366 + *** TIME = 0.660000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 18.741 TIME= 03:05:02 + Contact element 1029 (real ID 3) status changes abruptly from contact + (with target element 1272) -> no-contact. + FORCE CONVERGENCE VALUE = 2.288 CRITERION= 0.8890E-02 + DISP CONVERGENCE VALUE = 0.6769E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6769E-02 + DISP CONVERGENCE VALUE = 0.6598E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9748 SCALED MAX DOF INC = 0.6598E-02 + FORCE CONVERGENCE VALUE = 1.224 CRITERION= 0.8914E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1187E-01 + DISP CONVERGENCE VALUE = 0.7027E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5920 SCALED MAX DOF INC = -0.7027E-02 + FORCE CONVERGENCE VALUE = 0.5002 CRITERION= 0.8915E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2565E-02 + DISP CONVERGENCE VALUE = 0.1843E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7185 SCALED MAX DOF INC = 0.1843E-02 + FORCE CONVERGENCE VALUE = 0.1785 CRITERION= 0.8918E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4476E-02 + DISP CONVERGENCE VALUE = 0.1546E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3453 SCALED MAX DOF INC = -0.1546E-02 + FORCE CONVERGENCE VALUE = 0.1173 CRITERION= 0.8919E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7549E-03 + DISP CONVERGENCE VALUE = 0.5100E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6756 SCALED MAX DOF INC = 0.5100E-03 + FORCE CONVERGENCE VALUE = 0.3808E-01 CRITERION= 0.8920E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9504E-03 + DISP CONVERGENCE VALUE = 0.3183E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3349 SCALED MAX DOF INC = -0.3183E-03 + FORCE CONVERGENCE VALUE = 0.2540E-01 CRITERION= 0.8920E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1627E-03 + DISP CONVERGENCE VALUE = 0.1100E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6763 SCALED MAX DOF INC = 0.1100E-03 + FORCE CONVERGENCE VALUE = 0.8233E-02 CRITERION= 0.1048E-01 <<< CONVERGED + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2048E-03 + DISP CONVERGENCE VALUE = 0.2048E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2048E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 8 + *** LOAD STEP 1 SUBSTEP 67 COMPLETED. CUM ITER = 374 + *** TIME = 0.670000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 19.118 TIME= 03:05:02 + Contact element 1030 (real ID 3) status changes abruptly from contact + (with target element 1271) -> no-contact. + FORCE CONVERGENCE VALUE = 2.363 CRITERION= 0.9087E-02 + DISP CONVERGENCE VALUE = 0.9452E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.9452E-02 + DISP CONVERGENCE VALUE = 0.8799E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9310 SCALED MAX DOF INC = 0.8799E-02 + FORCE CONVERGENCE VALUE = 1.665 CRITERION= 0.9089E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1058E-01 + DISP CONVERGENCE VALUE = 0.8214E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7766 SCALED MAX DOF INC = -0.8214E-02 + FORCE CONVERGENCE VALUE = 0.8668 CRITERION= 0.9129E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1719E-03 + DISP CONVERGENCE VALUE = 0.1716E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9985 SCALED MAX DOF INC = 0.1716E-03 + FORCE CONVERGENCE VALUE = 0.1114E-01 CRITERION= 0.9141E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2516E-03 + DISP CONVERGENCE VALUE = 0.1347E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5354 SCALED MAX DOF INC = 0.1347E-03 + FORCE CONVERGENCE VALUE = 0.5105E-02 CRITERION= 0.9141E-02 <<< CONVERGED + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1990E-05 + DISP CONVERGENCE VALUE = 0.1990E-05 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1990E-05 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 68 COMPLETED. CUM ITER = 379 + *** TIME = 0.680000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 19.347 TIME= 03:05:02 + Contact element 1031 (real ID 3) status changes abruptly from contact + (with target element 1270) -> no-contact. + FORCE CONVERGENCE VALUE = 2.433 CRITERION= 0.9444E-02 + DISP CONVERGENCE VALUE = 0.3089E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3089E-02 + DISP CONVERGENCE VALUE = 0.3089E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3089E-02 + FORCE CONVERGENCE VALUE = 1.373 CRITERION= 0.9482E-02 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7035E-02 + DISP CONVERGENCE VALUE = 0.4945E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7029 SCALED MAX DOF INC = -0.4945E-02 + FORCE CONVERGENCE VALUE = 0.5503 CRITERION= 0.9545E-02 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2929E-02 + DISP CONVERGENCE VALUE = 0.2105E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7185 SCALED MAX DOF INC = 0.2105E-02 + FORCE CONVERGENCE VALUE = 0.1554 CRITERION= 0.9586E-02 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6138E-02 + DISP CONVERGENCE VALUE = 0.1650E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2689 SCALED MAX DOF INC = 0.1650E-02 + FORCE CONVERGENCE VALUE = 0.1133 CRITERION= 0.9566E-02 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6143E-03 + DISP CONVERGENCE VALUE = 0.4382E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7133 SCALED MAX DOF INC = 0.4382E-03 + FORCE CONVERGENCE VALUE = 0.3261E-01 CRITERION= 0.9574E-02 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1281E-02 + DISP CONVERGENCE VALUE = 0.3413E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2663 SCALED MAX DOF INC = 0.3413E-03 + FORCE CONVERGENCE VALUE = 0.2387E-01 CRITERION= 0.9570E-02 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1298E-03 + DISP CONVERGENCE VALUE = 0.9246E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7122 SCALED MAX DOF INC = 0.9246E-04 + FORCE CONVERGENCE VALUE = 0.6898E-02 CRITERION= 0.1125E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 69 COMPLETED. CUM ITER = 386 + *** TIME = 0.690000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 19.662 TIME= 03:05:02 + Contact element 1032 (real ID 3) status changes abruptly from contact + (with target element 1269) -> no-contact. + FORCE CONVERGENCE VALUE = 2.256 CRITERION= 0.1013E-01 + DISP CONVERGENCE VALUE = 0.6504E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6504E-02 + DISP CONVERGENCE VALUE = 0.6351E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9766 SCALED MAX DOF INC = 0.6351E-02 + FORCE CONVERGENCE VALUE = 0.8760 CRITERION= 0.1014E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1063E-01 + DISP CONVERGENCE VALUE = 0.6050E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5691 SCALED MAX DOF INC = -0.6050E-02 + FORCE CONVERGENCE VALUE = 0.3781 CRITERION= 0.1029E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1749E-02 + DISP CONVERGENCE VALUE = 0.1388E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7937 SCALED MAX DOF INC = 0.1388E-02 + FORCE CONVERGENCE VALUE = 0.7805E-01 CRITERION= 0.1027E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9598E-03 + DISP CONVERGENCE VALUE = 0.5511E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5742 SCALED MAX DOF INC = -0.5511E-03 + FORCE CONVERGENCE VALUE = 0.3328E-01 CRITERION= 0.1028E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1536E-03 + DISP CONVERGENCE VALUE = 0.1219E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7935 SCALED MAX DOF INC = 0.1219E-03 + FORCE CONVERGENCE VALUE = 0.6880E-02 CRITERION= 0.1028E-01 <<< CONVERGED + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8441E-04 + DISP CONVERGENCE VALUE = 0.8441E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.8441E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 70 COMPLETED. CUM ITER = 392 + *** TIME = 0.700000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 19.954 TIME= 03:05:03 + Contact element 1034 (real ID 3) status changes abruptly from contact + (with target element 1267) -> no-contact. + FORCE CONVERGENCE VALUE = 2.351 CRITERION= 0.1114E-01 + DISP CONVERGENCE VALUE = 0.7062E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7062E-02 + DISP CONVERGENCE VALUE = 0.6790E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9615 SCALED MAX DOF INC = 0.6790E-02 + FORCE CONVERGENCE VALUE = 1.297 CRITERION= 0.1109E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1481E-01 + DISP CONVERGENCE VALUE = 0.7855E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5304 SCALED MAX DOF INC = -0.7855E-02 + FORCE CONVERGENCE VALUE = 0.6103 CRITERION= 0.1140E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2147E-02 + DISP CONVERGENCE VALUE = 0.1919E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8937 SCALED MAX DOF INC = 0.1919E-02 + FORCE CONVERGENCE VALUE = 0.3634 CRITERION= 0.1136E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6088E-02 + DISP CONVERGENCE VALUE = 0.1920E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.3154 SCALED MAX DOF INC = -0.1920E-02 + FORCE CONVERGENCE VALUE = 0.2490 CRITERION= 0.1144E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7251E-03 + DISP CONVERGENCE VALUE = 0.6394E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8817 SCALED MAX DOF INC = 0.6394E-03 + FORCE CONVERGENCE VALUE = 0.2956E-01 CRITERION= 0.1142E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9649E-03 + DISP CONVERGENCE VALUE = 0.2680E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2777 SCALED MAX DOF INC = -0.2680E-03 + FORCE CONVERGENCE VALUE = 0.2137E-01 CRITERION= 0.1143E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3368E-04 + DISP CONVERGENCE VALUE = 0.3240E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9622 SCALED MAX DOF INC = 0.3240E-04 + FORCE CONVERGENCE VALUE = 0.8312E-03 CRITERION= 0.1344E-01 <<< CONVERGED + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2658E-04 + DISP CONVERGENCE VALUE = 0.2658E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2658E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 8 + *** LOAD STEP 1 SUBSTEP 71 COMPLETED. CUM ITER = 400 + *** TIME = 0.710000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 20.329 TIME= 03:05:03 + Contact element 1035 (real ID 3) status changes abruptly from contact + (with target element 1266) -> no-contact. + FORCE CONVERGENCE VALUE = 2.287 CRITERION= 0.1277E-01 + DISP CONVERGENCE VALUE = 0.2869E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2869E-02 + DISP CONVERGENCE VALUE = 0.2869E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2869E-02 + FORCE CONVERGENCE VALUE = 0.8976 CRITERION= 0.1294E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5443E-02 + DISP CONVERGENCE VALUE = 0.3688E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6775 SCALED MAX DOF INC = -0.3688E-02 + FORCE CONVERGENCE VALUE = 0.2898 CRITERION= 0.1319E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1851E-02 + DISP CONVERGENCE VALUE = 0.1234E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6665 SCALED MAX DOF INC = 0.1234E-02 + FORCE CONVERGENCE VALUE = 0.9656E-01 CRITERION= 0.1312E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5204E-03 + DISP CONVERGENCE VALUE = 0.3628E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6971 SCALED MAX DOF INC = -0.3628E-03 + FORCE CONVERGENCE VALUE = 0.2929E-01 CRITERION= 0.1315E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1944E-03 + DISP CONVERGENCE VALUE = 0.1278E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6576 SCALED MAX DOF INC = 0.1278E-03 + FORCE CONVERGENCE VALUE = 0.1002E-01 CRITERION= 0.1314E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + *** LOAD STEP 1 SUBSTEP 72 COMPLETED. CUM ITER = 405 + *** TIME = 0.720000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 20.570 TIME= 03:05:03 + Contact element 1036 (real ID 3) status changes abruptly from contact + (with target element 1265) -> no-contact. + FORCE CONVERGENCE VALUE = 2.461 CRITERION= 0.1504E-01 + DISP CONVERGENCE VALUE = 0.3639E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3639E-02 + DISP CONVERGENCE VALUE = 0.3639E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3639E-02 + FORCE CONVERGENCE VALUE = 1.344 CRITERION= 0.1518E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8130E-02 + DISP CONVERGENCE VALUE = 0.5318E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6541 SCALED MAX DOF INC = -0.5318E-02 + FORCE CONVERGENCE VALUE = 0.5562 CRITERION= 0.1567E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3400E-02 + DISP CONVERGENCE VALUE = 0.2298E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6760 SCALED MAX DOF INC = 0.2298E-02 + FORCE CONVERGENCE VALUE = 0.1807 CRITERION= 0.1595E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8027E-02 + DISP CONVERGENCE VALUE = 0.1883E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2346 SCALED MAX DOF INC = 0.1883E-02 + FORCE CONVERGENCE VALUE = 0.1380 CRITERION= 0.1578E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8640E-03 + DISP CONVERGENCE VALUE = 0.5773E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6682 SCALED MAX DOF INC = 0.5773E-03 + FORCE CONVERGENCE VALUE = 0.4592E-01 CRITERION= 0.1585E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2025E-02 + DISP CONVERGENCE VALUE = 0.4696E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2319 SCALED MAX DOF INC = 0.4696E-03 + FORCE CONVERGENCE VALUE = 0.3520E-01 CRITERION= 0.1581E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2217E-03 + DISP CONVERGENCE VALUE = 0.1477E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6662 SCALED MAX DOF INC = 0.1477E-03 + FORCE CONVERGENCE VALUE = 0.1179E-01 CRITERION= 0.1860E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 73 COMPLETED. CUM ITER = 412 + *** TIME = 0.730000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 20.905 TIME= 03:05:04 + Contact element 1037 (real ID 3) status changes abruptly from contact + (with target element 1264) -> no-contact. + FORCE CONVERGENCE VALUE = 2.230 CRITERION= 0.1872E-01 + DISP CONVERGENCE VALUE = 0.6774E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6774E-02 + DISP CONVERGENCE VALUE = 0.6585E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9721 SCALED MAX DOF INC = 0.6585E-02 + FORCE CONVERGENCE VALUE = 0.7570 CRITERION= 0.1862E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1124E-01 + DISP CONVERGENCE VALUE = 0.5991E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5331 SCALED MAX DOF INC = -0.5991E-02 + FORCE CONVERGENCE VALUE = 0.3540 CRITERION= 0.1942E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1611E-02 + DISP CONVERGENCE VALUE = 0.1300E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8066 SCALED MAX DOF INC = 0.1300E-02 + FORCE CONVERGENCE VALUE = 0.6852E-01 CRITERION= 0.1931E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1034E-02 + DISP CONVERGENCE VALUE = 0.5568E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5387 SCALED MAX DOF INC = -0.5568E-03 + FORCE CONVERGENCE VALUE = 0.3165E-01 CRITERION= 0.1938E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1438E-03 + DISP CONVERGENCE VALUE = 0.1159E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8066 SCALED MAX DOF INC = 0.1159E-03 + FORCE CONVERGENCE VALUE = 0.6132E-02 CRITERION= 0.1937E-01 <<< CONVERGED + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.9229E-04 + DISP CONVERGENCE VALUE = 0.9229E-04 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.9229E-04 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + *** LOAD STEP 1 SUBSTEP 74 COMPLETED. CUM ITER = 418 + *** TIME = 0.740000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 21.193 TIME= 03:05:04 + Contact element 1039 (real ID 3) status changes abruptly from contact + (with target element 1262) -> no-contact. + FORCE CONVERGENCE VALUE = 2.186 CRITERION= 0.2311E-01 + DISP CONVERGENCE VALUE = 0.6448E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6448E-02 + DISP CONVERGENCE VALUE = 0.6264E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9714 SCALED MAX DOF INC = 0.6264E-02 + FORCE CONVERGENCE VALUE = 1.173 CRITERION= 0.2287E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1417E-01 + DISP CONVERGENCE VALUE = 0.7402E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.5225 SCALED MAX DOF INC = -0.7402E-02 + FORCE CONVERGENCE VALUE = 0.5609 CRITERION= 0.2417E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3027E-02 + DISP CONVERGENCE VALUE = 0.2066E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6827 SCALED MAX DOF INC = 0.2066E-02 + FORCE CONVERGENCE VALUE = 0.1780 CRITERION= 0.2391E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2242E-02 + DISP CONVERGENCE VALUE = 0.1076E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4798 SCALED MAX DOF INC = -0.1076E-02 + FORCE CONVERGENCE VALUE = 0.2319 CRITERION= 0.2410E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1558E-02 + DISP CONVERGENCE VALUE = 0.8635E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5541 SCALED MAX DOF INC = -0.8635E-03 + FORCE CONVERGENCE VALUE = 0.1039 CRITERION= 0.2428E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2284E-02 + DISP CONVERGENCE VALUE = 0.6497E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2844 SCALED MAX DOF INC = 0.6497E-03 + FORCE CONVERGENCE VALUE = 0.7426E-01 CRITERION= 0.2418E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5004E-03 + DISP CONVERGENCE VALUE = 0.2762E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.5519 SCALED MAX DOF INC = -0.2762E-03 + FORCE CONVERGENCE VALUE = 0.3340E-01 CRITERION= 0.2849E-01 + EQUIL ITER 8 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7307E-03 + DISP CONVERGENCE VALUE = 0.2074E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2839 SCALED MAX DOF INC = 0.2074E-03 + FORCE CONVERGENCE VALUE = 0.2388E-01 CRITERION= 0.2903E-01 <<< CONVERGED + EQUIL ITER 9 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1610E-03 + DISP CONVERGENCE VALUE = 0.1610E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1610E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 9 + *** LOAD STEP 1 SUBSTEP 75 COMPLETED. CUM ITER = 427 + *** TIME = 0.750000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 21.645 TIME= 03:05:04 + Contact element 1040 (real ID 3) status changes abruptly from contact + (with target element 1261) -> no-contact. + FORCE CONVERGENCE VALUE = 2.295 CRITERION= 0.2923E-01 + DISP CONVERGENCE VALUE = 0.8854E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8854E-02 + DISP CONVERGENCE VALUE = 0.8287E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9360 SCALED MAX DOF INC = 0.8287E-02 + FORCE CONVERGENCE VALUE = 1.469 CRITERION= 0.2838E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1088E-01 + DISP CONVERGENCE VALUE = 0.8122E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.7463 SCALED MAX DOF INC = -0.8122E-02 + FORCE CONVERGENCE VALUE = 0.6190 CRITERION= 0.3031E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3928E-03 + DISP CONVERGENCE VALUE = 0.3923E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9989 SCALED MAX DOF INC = 0.3923E-03 + FORCE CONVERGENCE VALUE = 0.1130E-01 CRITERION= 0.3046E-01 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2086E-03 + DISP CONVERGENCE VALUE = 0.2086E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2086E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 76 COMPLETED. CUM ITER = 431 + *** TIME = 0.760000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 21.837 TIME= 03:05:05 + Contact element 1041 (real ID 3) status changes abruptly from contact + (with target element 1260) -> no-contact. + FORCE CONVERGENCE VALUE = 2.171 CRITERION= 0.3689E-01 + DISP CONVERGENCE VALUE = 0.2932E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2932E-02 + DISP CONVERGENCE VALUE = 0.2932E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2932E-02 + FORCE CONVERGENCE VALUE = 0.8905 CRITERION= 0.3751E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6031E-02 + DISP CONVERGENCE VALUE = 0.3860E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6400 SCALED MAX DOF INC = -0.3860E-02 + FORCE CONVERGENCE VALUE = 0.3208 CRITERION= 0.3871E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1843E-02 + DISP CONVERGENCE VALUE = 0.1273E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6906 SCALED MAX DOF INC = 0.1273E-02 + FORCE CONVERGENCE VALUE = 0.9923E-01 CRITERION= 0.3841E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6741E-03 + DISP CONVERGENCE VALUE = 0.4329E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.6423 SCALED MAX DOF INC = -0.4329E-03 + FORCE CONVERGENCE VALUE = 0.3553E-01 CRITERION= 0.3854E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 77 COMPLETED. CUM ITER = 435 + *** TIME = 0.770000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 22.041 TIME= 03:05:05 + Contact element 1042 (real ID 3) status changes abruptly from contact + (with target element 1259) -> no-contact. + FORCE CONVERGENCE VALUE = 2.372 CRITERION= 0.4666E-01 + DISP CONVERGENCE VALUE = 0.4228E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4228E-02 + DISP CONVERGENCE VALUE = 0.4228E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.4228E-02 + FORCE CONVERGENCE VALUE = 1.098 CRITERION= 0.4694E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.8197E-02 + DISP CONVERGENCE VALUE = 0.5099E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.6221 SCALED MAX DOF INC = -0.5099E-02 + FORCE CONVERGENCE VALUE = 0.4154 CRITERION= 0.4889E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2225E-02 + DISP CONVERGENCE VALUE = 0.1572E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7066 SCALED MAX DOF INC = 0.1572E-02 + FORCE CONVERGENCE VALUE = 0.1828 CRITERION= 0.4843E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7197E-02 + DISP CONVERGENCE VALUE = 0.1916E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2662 SCALED MAX DOF INC = -0.1916E-02 + FORCE CONVERGENCE VALUE = 0.1344 CRITERION= 0.4921E-01 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1410E-02 + DISP CONVERGENCE VALUE = 0.6921E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4909 SCALED MAX DOF INC = 0.6921E-03 + FORCE CONVERGENCE VALUE = 0.6840E-01 CRITERION= 0.4899E-01 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2199E-02 + DISP CONVERGENCE VALUE = 0.5065E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.2303 SCALED MAX DOF INC = -0.5065E-03 + FORCE CONVERGENCE VALUE = 0.5272E-01 CRITERION= 0.4920E-01 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5410E-03 + DISP CONVERGENCE VALUE = 0.2684E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.4962 SCALED MAX DOF INC = 0.2684E-03 + FORCE CONVERGENCE VALUE = 0.2655E-01 CRITERION= 0.5773E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 1 SUBSTEP 78 COMPLETED. CUM ITER = 442 + *** TIME = 0.780000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 22.385 TIME= 03:05:05 + Contact element 1043 (real ID 3) status changes abruptly from contact + (with target element 1258) -> no-contact. + FORCE CONVERGENCE VALUE = 2.276 CRITERION= 0.5976E-01 + DISP CONVERGENCE VALUE = 0.7166E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7166E-02 + DISP CONVERGENCE VALUE = 0.6970E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9726 SCALED MAX DOF INC = 0.6970E-02 + FORCE CONVERGENCE VALUE = 1.161 CRITERION= 0.5860E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6337E-02 + DISP CONVERGENCE VALUE = 0.5180E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.8175 SCALED MAX DOF INC = -0.5180E-02 + FORCE CONVERGENCE VALUE = 0.4029 CRITERION= 0.6120E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1228E-02 + DISP CONVERGENCE VALUE = 0.1123E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9143 SCALED MAX DOF INC = 0.1123E-02 + FORCE CONVERGENCE VALUE = 0.3578E-01 CRITERION= 0.6207E-01 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1284E-02 + DISP CONVERGENCE VALUE = 0.1284E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1284E-02 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 79 COMPLETED. CUM ITER = 446 + *** TIME = 0.790000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.941 CRITERION= 0.7389E-01 + DISP CONVERGENCE VALUE = 0.4804E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4804E-02 + DISP CONVERGENCE VALUE = 0.4750E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9888 SCALED MAX DOF INC = -0.4750E-02 + FORCE CONVERGENCE VALUE = 1.262 CRITERION= 0.7318E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5879E-02 + + *** WARNING *** CP = 22.635 TIME= 03:05:05 + Contact element 1045 (real ID 3) status changes abruptly from contact + (with target element 1256) -> no-contact. + DISP CONVERGENCE VALUE = 0.4777E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8125 SCALED MAX DOF INC = -0.4777E-02 + FORCE CONVERGENCE VALUE = 0.4009 CRITERION= 0.7617E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5186E-03 + DISP CONVERGENCE VALUE = 0.5079E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9795 SCALED MAX DOF INC = 0.5079E-03 + FORCE CONVERGENCE VALUE = 0.1253E-01 CRITERION= 0.7690E-01 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6446E-03 + DISP CONVERGENCE VALUE = 0.6446E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.6446E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 80 COMPLETED. CUM ITER = 450 + *** TIME = 0.800000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 22.769 TIME= 03:05:06 + Contact element 1046 (real ID 3) status changes abruptly from contact + (with target element 1255) -> no-contact. + FORCE CONVERGENCE VALUE = 1.864 CRITERION= 0.9160E-01 + DISP CONVERGENCE VALUE = 0.5748E-02 CRITERION= 0.5010E-02 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5748E-02 + DISP CONVERGENCE VALUE = 0.5569E-02 CRITERION= 0.5010E-02 + LINE SEARCH PARAMETER = 0.9689 SCALED MAX DOF INC = 0.5569E-02 + FORCE CONVERGENCE VALUE = 1.038 CRITERION= 0.9014E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5467E-02 + DISP CONVERGENCE VALUE = 0.4336E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7930 SCALED MAX DOF INC = -0.4336E-02 + FORCE CONVERGENCE VALUE = 0.2177 CRITERION= 0.9348E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5900E-03 + DISP CONVERGENCE VALUE = 0.5665E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9601 SCALED MAX DOF INC = 0.5665E-03 + FORCE CONVERGENCE VALUE = 0.1254E-01 CRITERION= 0.9339E-01 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4667E-03 + DISP CONVERGENCE VALUE = 0.4667E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4667E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 81 COMPLETED. CUM ITER = 454 + *** TIME = 0.810000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.892 CRITERION= 0.1110 + DISP CONVERGENCE VALUE = 0.4527E-02 CRITERION= 0.5010E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4527E-02 + DISP CONVERGENCE VALUE = 0.4478E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9892 SCALED MAX DOF INC = 0.4478E-02 + FORCE CONVERGENCE VALUE = 0.6922 CRITERION= 0.1101 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.3352E-02 + DISP CONVERGENCE VALUE = 0.2798E-02 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8348 SCALED MAX DOF INC = -0.2798E-02 + FORCE CONVERGENCE VALUE = 0.1150 CRITERION= 0.1128 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5011E-03 + DISP CONVERGENCE VALUE = 0.4050E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.8081 SCALED MAX DOF INC = 0.4050E-03 + FORCE CONVERGENCE VALUE = 0.2207E-01 CRITERION= 0.1125 <<< CONVERGED + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1304E-03 + DISP CONVERGENCE VALUE = 0.1304E-03 CRITERION= 0.5010E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1304E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + *** LOAD STEP 1 SUBSTEP 82 COMPLETED. CUM ITER = 458 + *** TIME = 0.820000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.645 CRITERION= 0.1315 + DISP CONVERGENCE VALUE = 0.2755E-02 CRITERION= 0.5011E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2755E-02 + DISP CONVERGENCE VALUE = 0.2737E-02 CRITERION= 0.5011E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9938 SCALED MAX DOF INC = 0.2737E-02 + FORCE CONVERGENCE VALUE = 0.2190E-01 CRITERION= 0.1319 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4565E-03 + DISP CONVERGENCE VALUE = 0.4565E-03 CRITERION= 0.5011E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4565E-03 + FORCE CONVERGENCE VALUE = 0.2388E-01 CRITERION= 0.1323 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 83 COMPLETED. CUM ITER = 460 + *** TIME = 0.830000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.898 CRITERION= 0.1520 + DISP CONVERGENCE VALUE = 0.2881E-02 CRITERION= 0.5011E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2881E-02 + DISP CONVERGENCE VALUE = 0.2849E-02 CRITERION= 0.5011E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9889 SCALED MAX DOF INC = 0.2849E-02 + FORCE CONVERGENCE VALUE = 0.4380 CRITERION= 0.1511 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2680E-02 + DISP CONVERGENCE VALUE = 0.2069E-02 CRITERION= 0.5011E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.7720 SCALED MAX DOF INC = -0.2069E-02 + FORCE CONVERGENCE VALUE = 0.1004 CRITERION= 0.1537 <<< CONVERGED + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5358E-03 + DISP CONVERGENCE VALUE = 0.5358E-03 CRITERION= 0.5011E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.5358E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 84 COMPLETED. CUM ITER = 463 + *** TIME = 0.840000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + + *** WARNING *** CP = 23.383 TIME= 03:05:06 + Contact element 1049 (real ID 3) status changes abruptly from contact + (with target element 1252) -> no-contact. + FORCE CONVERGENCE VALUE = 1.412 CRITERION= 0.1743 + DISP CONVERGENCE VALUE = 0.2441E-02 CRITERION= 0.5012E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2441E-02 + DISP CONVERGENCE VALUE = 0.2441E-02 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9999 SCALED MAX DOF INC = -0.2441E-02 + FORCE CONVERGENCE VALUE = 0.3855 CRITERION= 0.1731 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1007E-02 + DISP CONVERGENCE VALUE = 0.9501E-03 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9438 SCALED MAX DOF INC = -0.9501E-03 + FORCE CONVERGENCE VALUE = 0.2395E-01 CRITERION= 0.1745 <<< CONVERGED + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1338E-03 + DISP CONVERGENCE VALUE = 0.1338E-03 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1338E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 85 COMPLETED. CUM ITER = 466 + *** TIME = 0.850000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.250 CRITERION= 0.1955 + DISP CONVERGENCE VALUE = 0.2860E-02 CRITERION= 0.5012E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2860E-02 + DISP CONVERGENCE VALUE = 0.2826E-02 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9882 SCALED MAX DOF INC = 0.2826E-02 + FORCE CONVERGENCE VALUE = 0.4182 CRITERION= 0.1932 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1297E-02 + DISP CONVERGENCE VALUE = 0.1225E-02 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9446 SCALED MAX DOF INC = -0.1225E-02 + FORCE CONVERGENCE VALUE = 0.2524E-01 CRITERION= 0.1954 <<< CONVERGED + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1664E-03 + DISP CONVERGENCE VALUE = 0.1664E-03 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1664E-03 + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + *** LOAD STEP 1 SUBSTEP 86 COMPLETED. CUM ITER = 469 + *** TIME = 0.860000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.034 CRITERION= 0.2161 + DISP CONVERGENCE VALUE = 0.1133E-02 CRITERION= 0.5012E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1133E-02 + DISP CONVERGENCE VALUE = 0.1127E-02 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9949 SCALED MAX DOF INC = 0.1127E-02 + FORCE CONVERGENCE VALUE = 0.9957E-02 CRITERION= 0.2159 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1318E-03 + DISP CONVERGENCE VALUE = 0.1318E-03 CRITERION= 0.5012E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1318E-03 + FORCE CONVERGENCE VALUE = 0.2163E-03 CRITERION= 0.2160 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 87 COMPLETED. CUM ITER = 471 + *** TIME = 0.870000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 1.246 CRITERION= 0.2368 + DISP CONVERGENCE VALUE = 0.1659E-02 CRITERION= 0.5013E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1659E-02 + DISP CONVERGENCE VALUE = 0.1641E-02 CRITERION= 0.5013E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9894 SCALED MAX DOF INC = 0.1641E-02 + FORCE CONVERGENCE VALUE = 0.1673E-01 CRITERION= 0.2358 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1784E-03 + DISP CONVERGENCE VALUE = 0.1784E-03 CRITERION= 0.5013E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1784E-03 + FORCE CONVERGENCE VALUE = 0.2953E-03 CRITERION= 0.2360 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 88 COMPLETED. CUM ITER = 473 + *** TIME = 0.880000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.6818 CRITERION= 0.2560 + DISP CONVERGENCE VALUE = 0.6447E-03 CRITERION= 0.5013E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6447E-03 + DISP CONVERGENCE VALUE = 0.6432E-03 CRITERION= 0.5013E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9978 SCALED MAX DOF INC = 0.6432E-03 + FORCE CONVERGENCE VALUE = 0.1125E-01 CRITERION= 0.2561 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6300E-04 + DISP CONVERGENCE VALUE = 0.6300E-04 CRITERION= 0.5013E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.6300E-04 + FORCE CONVERGENCE VALUE = 0.1084E-03 CRITERION= 0.2562 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 89 COMPLETED. CUM ITER = 475 + *** TIME = 0.890000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.5861 CRITERION= 0.2765 + DISP CONVERGENCE VALUE = 0.1200E-02 CRITERION= 0.5014E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1200E-02 + DISP CONVERGENCE VALUE = 0.1187E-02 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9886 SCALED MAX DOF INC = 0.1187E-02 + FORCE CONVERGENCE VALUE = 0.8125E-02 CRITERION= 0.2753 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1054E-03 + DISP CONVERGENCE VALUE = 0.1054E-03 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1054E-03 + FORCE CONVERGENCE VALUE = 0.1770E-03 CRITERION= 0.2755 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 90 COMPLETED. CUM ITER = 477 + *** TIME = 0.900000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.4763 CRITERION= 0.2947 + DISP CONVERGENCE VALUE = 0.5898E-03 CRITERION= 0.5014E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5898E-03 + DISP CONVERGENCE VALUE = 0.5877E-03 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9965 SCALED MAX DOF INC = 0.5877E-03 + FORCE CONVERGENCE VALUE = 0.1057E-01 CRITERION= 0.2941 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.5096E-04 + DISP CONVERGENCE VALUE = 0.5096E-04 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.5096E-04 + FORCE CONVERGENCE VALUE = 0.1140E-03 CRITERION= 0.2942 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 91 COMPLETED. CUM ITER = 479 + *** TIME = 0.910000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.6639 CRITERION= 0.3130 + DISP CONVERGENCE VALUE = 0.6638E-03 CRITERION= 0.5014E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6638E-03 + DISP CONVERGENCE VALUE = 0.6617E-03 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9968 SCALED MAX DOF INC = 0.6617E-03 + FORCE CONVERGENCE VALUE = 0.3822E-02 CRITERION= 0.3125 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4915E-04 + DISP CONVERGENCE VALUE = 0.4915E-04 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4915E-04 + FORCE CONVERGENCE VALUE = 0.7974E-04 CRITERION= 0.3126 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 92 COMPLETED. CUM ITER = 481 + *** TIME = 0.920000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.3865 CRITERION= 0.3310 + DISP CONVERGENCE VALUE = 0.7672E-03 CRITERION= 0.5014E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.7672E-03 + DISP CONVERGENCE VALUE = 0.7672E-03 CRITERION= 0.5014E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.7672E-03 + FORCE CONVERGENCE VALUE = 0.8258E-02 CRITERION= 0.3298 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 1 + *** LOAD STEP 1 SUBSTEP 93 COMPLETED. CUM ITER = 482 + *** TIME = 0.930000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.7194 CRITERION= 0.3470 + DISP CONVERGENCE VALUE = 0.1407E-03 CRITERION= 0.5015E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1407E-03 + DISP CONVERGENCE VALUE = 0.1406E-03 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9996 SCALED MAX DOF INC = -0.1406E-03 + FORCE CONVERGENCE VALUE = 0.7601E-02 CRITERION= 0.3483 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2149E-04 + DISP CONVERGENCE VALUE = 0.2149E-04 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2149E-04 + FORCE CONVERGENCE VALUE = 0.3091E-04 CRITERION= 0.3483 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 94 COMPLETED. CUM ITER = 484 + *** TIME = 0.940000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.3568 CRITERION= 0.3668 + DISP CONVERGENCE VALUE = 0.5948E-03 CRITERION= 0.5015E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.5948E-03 + DISP CONVERGENCE VALUE = 0.5924E-03 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9960 SCALED MAX DOF INC = 0.5924E-03 + FORCE CONVERGENCE VALUE = 0.1695E-02 CRITERION= 0.3657 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.4008E-04 + DISP CONVERGENCE VALUE = 0.4008E-04 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.4008E-04 + FORCE CONVERGENCE VALUE = 0.6101E-04 CRITERION= 0.3658 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 95 COMPLETED. CUM ITER = 486 + *** TIME = 0.950000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.3637 CRITERION= 0.3832 + DISP CONVERGENCE VALUE = 0.6906E-03 CRITERION= 0.5015E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.6906E-03 + DISP CONVERGENCE VALUE = 0.6906E-03 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.6906E-03 + FORCE CONVERGENCE VALUE = 0.5411E-03 CRITERION= 0.3819 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 1 + *** LOAD STEP 1 SUBSTEP 96 COMPLETED. CUM ITER = 487 + *** TIME = 0.960000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.4161 CRITERION= 0.3980 + DISP CONVERGENCE VALUE = 0.1084E-03 CRITERION= 0.5015E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1084E-03 + DISP CONVERGENCE VALUE = 0.1084E-03 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.1084E-03 + FORCE CONVERGENCE VALUE = 0.1085E-01 CRITERION= 0.3984 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.2677E-05 + DISP CONVERGENCE VALUE = 0.2677E-05 CRITERION= 0.5015E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.2677E-05 + FORCE CONVERGENCE VALUE = 0.1071E-04 CRITERION= 0.3984 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 97 COMPLETED. CUM ITER = 489 + *** TIME = 0.970000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.5180 CRITERION= 0.4150 + DISP CONVERGENCE VALUE = 0.4925E-03 CRITERION= 0.5016E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4925E-03 + DISP CONVERGENCE VALUE = 0.4916E-03 CRITERION= 0.5016E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9981 SCALED MAX DOF INC = 0.4916E-03 + FORCE CONVERGENCE VALUE = 0.2902E-02 CRITERION= 0.4145 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.2757E-04 + DISP CONVERGENCE VALUE = 0.2757E-04 CRITERION= 0.5016E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.2757E-04 + FORCE CONVERGENCE VALUE = 0.4536E-04 CRITERION= 0.4145 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 98 COMPLETED. CUM ITER = 491 + *** TIME = 0.980000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.3774 CRITERION= 0.4306 + DISP CONVERGENCE VALUE = 0.1980E-03 CRITERION= 0.5016E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.1980E-03 + DISP CONVERGENCE VALUE = 0.1980E-03 CRITERION= 0.5016E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 0.9996 SCALED MAX DOF INC = 0.1980E-03 + FORCE CONVERGENCE VALUE = 0.3432E-03 CRITERION= 0.4302 <<< CONVERGED + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1034E-04 + DISP CONVERGENCE VALUE = 0.1034E-04 CRITERION= 0.5016E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = -0.1034E-04 + FORCE CONVERGENCE VALUE = 0.1730E-04 CRITERION= 0.4302 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + *** LOAD STEP 1 SUBSTEP 99 COMPLETED. CUM ITER = 493 + *** TIME = 0.990000 TIME INC = 0.100000E-01 + *** AUTO STEP TIME: NEXT TIME INC = 0.10000E-01 UNCHANGED + + FORCE CONVERGENCE VALUE = 0.3800 CRITERION= 0.4459 + DISP CONVERGENCE VALUE = 0.3450E-03 CRITERION= 0.5016E-02 <<< CONVERGED + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.3450E-03 + DISP CONVERGENCE VALUE = 0.3450E-03 CRITERION= 0.5016E-02 <<< CONVERGED + LINE SEARCH PARAMETER = 1.000 SCALED MAX DOF INC = 0.3450E-03 + FORCE CONVERGENCE VALUE = 0.3124E-03 CRITERION= 0.4452 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 1 + *** LOAD STEP 1 SUBSTEP 100 COMPLETED. CUM ITER = 494 + *** TIME = 1.00000 TIME INC = 0.100000E-01 + + + *** MAPDL BINARY FILE STATISTICS + BUFFER SIZE USED= 16384 + 0.750 MB WRITTEN ON ELEMENT SAVED DATA FILE: file0.esav + 0.562 MB WRITTEN ON ASSEMBLED MATRIX FILE: file0.full + 10.812 MB WRITTEN ON RESULTS FILE: file0.rst + *************** Write FE CONNECTORS ********* + + WRITE OUT CONSTRAINT EQUATIONS TO FILE= file.ce + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + *GET _WALLASOL FROM ACTI ITEM=TIME WALL VALUE= 3.08555556 + + PRINTOUT RESUMED BY /GOP + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 25.124 + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:08 FEB 02, 2024 CP= 25.125 + + --Static Structural + + + + ***** MAPDL RESULTS INTERPRETATION (POST1) ***** + + *** NOTE *** CP = 25.126 TIME= 03:05:08 + Reading results into the database (SET command) will update the current + displacement and force boundary conditions in the database with the + values from the results file for that load set. Note that any + subsequent solutions will use these values unless action is taken to + either SAVE the current values or not overwrite them (/EXIT,NOSAVE). + + Set Encoding of XML File to:ISO-8859-1 + + Set Output of XML File to: + PARM, , , , , , , , , , , , + , , , , , , , + + DATABASE WRITTEN ON FILE parm.xml + + EXIT THE MAPDL POST1 DATABASE PROCESSOR + + + ***** ROUTINE COMPLETED ***** CP = 25.128 + + + + PRINTOUT RESUMED BY /GOP + + *GET _WALLDONE FROM ACTI ITEM=TIME WALL VALUE= 3.08555556 + + PARAMETER _PREPTIME = 0.000000000 + + PARAMETER _SOLVTIME = 24.00000000 + + PARAMETER _POSTTIME = 0.000000000 + + PARAMETER _TOTALTIM = 24.00000000 + + *GET _DLBRATIO FROM ACTI ITEM=SOLU DLBR VALUE= 1.11191336 + + *GET _COMBTIME FROM ACTI ITEM=SOLU COMB VALUE= 0.992244709E-01 + + *GET _SSMODE FROM ACTI ITEM=SOLU SSMM VALUE= 2.00000000 + + *GET _NDOFS FROM ACTI ITEM=SOLU NDOF VALUE= 6398.00000 + + *GET _SOL_END_TIME FROM ACTI ITEM=SET TIME VALUE= 1.00000000 + + *IF _sol_end_time ( = 1.00000 ) EQ + 1.000000 ( = 1.00000 ) THEN + + /FCLEAN COMMAND REMOVING ALL LOCAL FILES + + *ENDIF + --- Total number of nodes = 3210 + --- Total number of elements = 1360 + --- Element load balance ratio = 1.11191336 + --- Time to combine distributed files = 9.922447088E-02 + --- Sparse memory mode = 2 + --- Number of DOF = 6398 + + EXIT MAPDL WITHOUT SAVING DATABASE + + + NUMBER OF WARNING MESSAGES ENCOUNTERED= 75 + NUMBER OF ERROR MESSAGES ENCOUNTERED= 0 + + +--------------------- M A P D L S T A T I S T I C S ------------------------+ + + Release: 2024 R1 Build: 24.1 Update: UP20231106 Platform: LINUX x64 + Date Run: 02/02/2024 Time: 03:05 Process ID: 3244 + Operating System: Ubuntu 20.04.6 LTS + + Processor Model: AMD EPYC 7763 64-Core Processor + + Compiler: Intel(R) Fortran Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) C/C++ Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 + BLAS Library supplied by AMD BLIS + + Number of machines requested : 1 + Total number of cores available : 8 + Number of physical cores available : 4 + Number of processes requested : 4 + Number of threads per process requested : 1 + Total number of cores requested : 4 (Distributed Memory Parallel) + MPI Type: INTELMPI + MPI Version: Intel(R) MPI Library 2021.10 for Linux* OS + + + GPU Acceleration: Not Requested + + Job Name: file0 + Input File: dummy.dat + + Core Machine Name Working Directory + ----------------------------------------------------- + 0 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural + 1 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural + 2 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural + 3 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMechFBE0/Project_Mech_Files/StaticStructural + + Latency time from master to core 1 = 2.219 microseconds + Latency time from master to core 2 = 2.198 microseconds + Latency time from master to core 3 = 1.974 microseconds + + Communication speed from master to core 1 = 8715.86 MB/sec + Communication speed from master to core 2 = 13162.08 MB/sec + Communication speed from master to core 3 = 15402.68 MB/sec + + Total CPU time for main thread : 22.8 seconds + Total CPU time summed for all threads : 25.5 seconds + + Elapsed time spent obtaining a license : 0.3 seconds + Elapsed time spent pre-processing model (/PREP7) : 0.0 seconds + Elapsed time spent solution - preprocessing : 0.1 seconds + Elapsed time spent computing solution : 23.6 seconds + Elapsed time spent solution - postprocessing : 0.1 seconds + Elapsed time spent post-processing model (/POST1) : 0.0 seconds + + Equation solver used : Sparse (symmetric) + Equation solver computational rate : 7.1 Gflops + Equation solver effective I/O rate : 8.9 GB/sec + + Sum of disk space used on all processes : 69.6 MB + + Sum of memory used on all processes : 531.0 MB + Sum of memory allocated on all processes : 2880.0 MB + Physical memory available : 31 GB + Total amount of I/O written to disk : 2.5 GB + Total amount of I/O read from disk : 6.9 GB + + +------------------ E N D M A P D L S T A T I S T I C S -------------------+ + + + *-----------------------------------------------------------------------------* + | | + | RUN COMPLETED | + | | + |-----------------------------------------------------------------------------| + | | + | Ansys MAPDL 2024 R1 Build 24.1 UP20231106 LINUX x64 | + | | + |-----------------------------------------------------------------------------| + | | + | Database Requested(-db) 1024 MB Scratch Memory Requested 1024 MB | + | Max Database Used(Master) 3 MB Max Scratch Used(Master) 132 MB | + | Max Database Used(Workers) 1 MB Max Scratch Used(Workers) 131 MB | + | Sum Database Used(All) 6 MB Sum Scratch Used(All) 525 MB | + | | + |-----------------------------------------------------------------------------| + | | + | CP Time (sec) = 25.522 Time = 03:05:08 | + | Elapsed Time (sec) = 26.000 Date = 02/02/2024 | + | | + *-----------------------------------------------------------------------------* + + + + +.. GENERATED FROM PYTHON SOURCE LINES 425-427 + +Project tree +~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 427-444 + +.. code-block:: Python + + + + def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + + root_node = DataModel.Project + print_tree(root_node) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + ├── Project + | ├── Model + | | ├── Geometry Imports + | | | ├── Geometry Import + | | ├── Geometry + | | | ├── Part 2 + | | | | ├── Surface Body + | | | | ├── Surface Body + | | ├── Materials + | | | ├── Structural Steel + | | | ├── CZM Crack Material + | | | ├── Interface Body Material + | | ├── Coordinate Systems + | | | ├── Global Coordinate System + | | ├── Remote Points + | | ├── Connections + | | | ├── Contacts + | | | | ├── Bonded - High_Edge To Low_Edge + | | ├── Mesh + | | | ├── Edge Sizing + | | | ├── Edge Sizing 2 + | | | ├── Face Meshing + | | ├── Fracture + | | | ├── Contact Debonding + | | ├── Named Selections + | | | ├── High_Edge + | | | ├── Low_Edge + | | | ├── Short_Edges + | | | ├── Long_Edges + | | | ├── Fixed_Edges + | | | ├── Disp1_Vertex + | | | ├── Disp2_Vertex + | | | ├── Top_Body + | | | ├── Bottom_Body + | | | ├── Top_Face + | | | ├── Bottom_Face + | | | ├── Both_Bodies + | | | ├── Both_Faces + | | ├── Static Structural + | | | ├── Analysis Settings + | | | ├── Fixed Support + | | | ├── Displacement + | | | ├── Displacement 2 + | | | ├── Solution + | | | | ├── Solution Information + | | | | ├── Directional Deformation + | | | | ├── Force Reaction + + + + +.. GENERATED FROM PYTHON SOURCE LINES 445-448 + +Cleanup +~~~~~~~ +Save project + +.. GENERATED FROM PYTHON SOURCE LINES 448-452 + +.. code-block:: Python + + + app.save(os.path.join(cwd, "contact_debonding.mechdat")) + app.new() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 453-454 + +Delete example files + +.. GENERATED FROM PYTHON SOURCE LINES 454-456 + +.. code-block:: Python + + + delete_downloads() + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + True + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 54.704 seconds) + + +.. _sphx_glr_download_examples_basic_fracture_analysis_contact_debonding.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: fracture_analysis_contact_debonding.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: fracture_analysis_contact_debonding.py ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/basic/index.rst.txt b/_sources/examples/basic/index.rst.txt new file mode 100644 index 00000000..3a264701 --- /dev/null +++ b/_sources/examples/basic/index.rst.txt @@ -0,0 +1,97 @@ + + +.. _sphx_glr_examples_basic: + +Basic +====== + +This section demonstrates basic capabilities of PyMechanical + + + +.. raw:: html + +
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_fracture_analysis_contact_debonding_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_fracture_analysis_contact_debonding.py` + +.. raw:: html + +
Fracture Analysis - Contact debonding
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_steady_state_thermal_analysis_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_steady_state_thermal_analysis.py` + +.. raw:: html + +
Steady state thermal analysis
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_topology_optimization_cantilever_beam_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_topology_optimization_cantilever_beam.py` + +.. raw:: html + +
Topology optimization of a simple cantilever beam
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_valve_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_valve.py` + +.. raw:: html + +
Basic Valve Implementation
+
+ + +.. raw:: html + +
+ + +.. toctree:: + :hidden: + + /examples/basic/fracture_analysis_contact_debonding + /examples/basic/steady_state_thermal_analysis + /examples/basic/topology_optimization_cantilever_beam + /examples/basic/valve + diff --git a/_sources/examples/basic/sg_execution_times.rst.txt b/_sources/examples/basic/sg_execution_times.rst.txt new file mode 100644 index 00000000..e5d71077 --- /dev/null +++ b/_sources/examples/basic/sg_execution_times.rst.txt @@ -0,0 +1,46 @@ + +:orphan: + +.. _sphx_glr_examples_basic_sg_execution_times: + + +Computation times +================= +**02:16.757** total execution time for 4 files **from examples/basic**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_basic_fracture_analysis_contact_debonding.py` (``fracture_analysis_contact_debonding.py``) + - 00:54.704 + - 0.0 + * - :ref:`sphx_glr_examples_basic_topology_optimization_cantilever_beam.py` (``topology_optimization_cantilever_beam.py``) + - 00:36.132 + - 0.0 + * - :ref:`sphx_glr_examples_basic_valve.py` (``valve.py``) + - 00:25.343 + - 0.0 + * - :ref:`sphx_glr_examples_basic_steady_state_thermal_analysis.py` (``steady_state_thermal_analysis.py``) + - 00:20.578 + - 0.0 diff --git a/_sources/examples/basic/steady_state_thermal_analysis.rst.txt b/_sources/examples/basic/steady_state_thermal_analysis.rst.txt new file mode 100644 index 00000000..edaa6602 --- /dev/null +++ b/_sources/examples/basic/steady_state_thermal_analysis.rst.txt @@ -0,0 +1,42594 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/basic/steady_state_thermal_analysis.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_basic_steady_state_thermal_analysis.py: + +.. _ref_steady_state_thermal: + +Steady state thermal analysis +----------------------------- + +This example problem demonstrates the use of a +simple steady-state thermal analysis to determine the temperatures, +thermal gradients, heat flow rates, and heat fluxes that are caused +by thermal loads that do not vary over time. A steady-state thermal +analysis calculates the effects of steady thermal loads on a system +or component, in this example, a long bar model. + +.. GENERATED FROM PYTHON SOURCE LINES 15-17 + +Import necessary libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 17-28 + +.. code-block:: Python + + + + import os + + from PIL import Image + import ansys.mechanical.core as mech + from ansys.mechanical.core.examples import delete_downloads, download_file + from matplotlib import image as mpimg + from matplotlib import pyplot as plt + from matplotlib.animation import FuncAnimation + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 29-30 + +Embed mechanical and set global variables + +.. GENERATED FROM PYTHON SOURCE LINES 30-47 + +.. code-block:: Python + + + app = mech.App(version=241) + globals().update(mech.global_variables(app, True)) + print(app) + + cwd = os.path.join(os.getcwd(), "out") + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Ansys Mechanical [Ansys Mechanical Enterprise] + Product Version:241 + Software build date: 11/27/2023 10:24:20 + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 48-50 + +Configure graphics for image export +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 50-62 + +.. code-block:: Python + + + ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso) + ExtAPI.Graphics.Camera.SetFit() + image_export_format = GraphicsImageExportFormat.PNG + settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() + settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution + settings_720p.Background = GraphicsBackgroundType.White + settings_720p.Width = 1280 + settings_720p.Height = 720 + settings_720p.CurrentGraphicsDisplay = False + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 63-66 + +Download and import geometry +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Download the geometry file. + +.. GENERATED FROM PYTHON SOURCE LINES 66-69 + +.. code-block:: Python + + + geometry_path = download_file("LONGBAR.x_t", "pymechanical", "embedding") + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 70-71 + +Import the geometry + +.. GENERATED FROM PYTHON SOURCE LINES 71-90 + +.. code-block:: Python + + + geometry_import_group = Model.GeometryImportGroup + geometry_import = geometry_import_group.AddGeometryImport() + geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic + ) + geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() + geometry_import_preferences.ProcessNamedSelections = True + geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences + ) + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p + ) + display_image("geometry.png") + + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_001.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 91-93 + +Add steady state thermal analysis +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 93-106 + +.. code-block:: Python + + + Model.AddSteadyStateThermalAnalysis() + ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS + STAT_THERM = DataModel.Project.Model.Analyses[0] + MODEL = DataModel.Project.Model + CS = MODEL.CoordinateSystems + LCS1 = CS.AddCoordinateSystem() + LCS1.OriginX = Quantity("0 [m]") + + LCS2 = CS.AddCoordinateSystem() + LCS2.OriginX = Quantity("0 [m]") + LCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalY + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 107-110 + +Create named selections and construction geometry +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Create named selections + +.. GENERATED FROM PYTHON SOURCE LINES 110-203 + +.. code-block:: Python + + + FACE1 = DataModel.Project.Model.AddNamedSelection() + FACE1.ScopingMethod = GeometryDefineByType.Worksheet + FACE1.Name = "Face1" + GEN_CRT1 = FACE1.GenerationCriteria + CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT1.Active = True + CRT1.Action = SelectionActionType.Add + CRT1.EntityType = SelectionType.GeoFace + CRT1.Criterion = SelectionCriterionType.LocationZ + CRT1.Operator = SelectionOperatorType.Equal + CRT1.Value = Quantity("20 [m]") + GEN_CRT1.Add(CRT1) + FACE1.Activate() + FACE1.Generate() + + FACE2 = DataModel.Project.Model.AddNamedSelection() + FACE2.ScopingMethod = GeometryDefineByType.Worksheet + FACE2.Name = "Face2" + GEN_CRT2 = FACE2.GenerationCriteria + CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT1.Active = True + CRT1.Action = SelectionActionType.Add + CRT1.EntityType = SelectionType.GeoFace + CRT1.Criterion = SelectionCriterionType.LocationZ + CRT1.Operator = SelectionOperatorType.Equal + CRT1.Value = Quantity("0 [m]") + GEN_CRT2.Add(CRT1) + FACE2.Activate() + FACE2.Generate() + + FACE3 = DataModel.Project.Model.AddNamedSelection() + FACE3.ScopingMethod = GeometryDefineByType.Worksheet + FACE3.Name = "Face3" + GEN_CRT3 = FACE3.GenerationCriteria + CRT1 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT1.Active = True + CRT1.Action = SelectionActionType.Add + CRT1.EntityType = SelectionType.GeoFace + CRT1.Criterion = SelectionCriterionType.LocationX + CRT1.Operator = SelectionOperatorType.Equal + CRT1.Value = Quantity("1 [m]") + GEN_CRT3.Add(CRT1) + CRT2 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT2.Active = True + CRT2.Action = SelectionActionType.Filter + CRT2.EntityType = SelectionType.GeoFace + CRT2.Criterion = SelectionCriterionType.LocationY + CRT2.Operator = SelectionOperatorType.Equal + CRT2.Value = Quantity("2 [m]") + GEN_CRT3.Add(CRT2) + CRT3 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT3.Active = True + CRT3.Action = SelectionActionType.Filter + CRT3.EntityType = SelectionType.GeoFace + CRT3.Criterion = SelectionCriterionType.LocationZ + CRT3.Operator = SelectionOperatorType.Equal + CRT3.Value = Quantity("12 [m]") + GEN_CRT3.Add(CRT3) + CRT4 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT4.Active = True + CRT4.Action = SelectionActionType.Add + CRT4.EntityType = SelectionType.GeoFace + CRT4.Criterion = SelectionCriterionType.LocationZ + CRT4.Operator = SelectionOperatorType.Equal + CRT4.Value = Quantity("4.5 [m]") + GEN_CRT3.Add(CRT4) + CRT5 = Ansys.ACT.Automation.Mechanical.NamedSelectionCriterion() + CRT5.Active = True + CRT5.Action = SelectionActionType.Filter + CRT5.EntityType = SelectionType.GeoFace + CRT5.Criterion = SelectionCriterionType.LocationY + CRT5.Operator = SelectionOperatorType.Equal + CRT5.Value = Quantity("2 [m]") + GEN_CRT3.Add(CRT5) + FACE3.Activate() + FACE3.Generate() + + BODY1 = DataModel.Project.Model.AddNamedSelection() + BODY1.ScopingMethod = GeometryDefineByType.Worksheet + BODY1.Name = "Body1" + BODY1.GenerationCriteria.Add(None) + BODY1.GenerationCriteria[0].EntityType = SelectionType.GeoFace + BODY1.GenerationCriteria[0].Criterion = SelectionCriterionType.LocationZ + BODY1.GenerationCriteria[0].Operator = SelectionOperatorType.Equal + BODY1.GenerationCriteria[0].Value = Quantity("1 [m]") + BODY1.GenerationCriteria.Add(None) + BODY1.GenerationCriteria[1].EntityType = SelectionType.GeoFace + BODY1.GenerationCriteria[1].Criterion = SelectionCriterionType.LocationZ + BODY1.GenerationCriteria[1].Operator = SelectionOperatorType.Equal + BODY1.GenerationCriteria[1].Value = Quantity("1 [m]") + BODY1.Generate() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 204-205 + +Create construction geometry + +.. GENERATED FROM PYTHON SOURCE LINES 205-216 + +.. code-block:: Python + + + CONST_GEOM = MODEL.AddConstructionGeometry() + Path = CONST_GEOM.AddPath() + Path.StartYCoordinate = Quantity(2, "m") + Path.StartZCoordinate = Quantity(20, "m") + Path.StartZCoordinate = Quantity(20, "m") + Path.EndXCoordinate = Quantity(2, "m") + SURF = CONST_GEOM.AddSurface() + SURF.CoordinateSystem = LCS2 + CONST_GEOM.UpdateAllSolids() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 217-220 + +Define boundary condition and add results +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Add temperature boundary conditions + +.. GENERATED FROM PYTHON SOURCE LINES 220-251 + +.. code-block:: Python + + + TEMP = STAT_THERM.AddTemperature() + TEMP.Location = FACE1 + TEMP.Magnitude.Output.DiscreteValues = [Quantity("22[C]"), Quantity("30[C]")] + + TEMP2 = STAT_THERM.AddTemperature() + TEMP2.Location = FACE2 + TEMP2.Magnitude.Output.DiscreteValues = [Quantity("22[C]"), Quantity("60[C]")] + + TEMP.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), + ] + TEMP.Magnitude.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("30[C]"), + Quantity("40[C]"), + ] + + TEMP2.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), + ] + TEMP2.Magnitude.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("50[C]"), + Quantity("80[C]"), + ] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 252-253 + +Add radiation + +.. GENERATED FROM PYTHON SOURCE LINES 253-268 + +.. code-block:: Python + + + RAD = STAT_THERM.AddRadiation() + RAD.Location = FACE3 + RAD.AmbientTemperature.Inputs[0].DiscreteValues = [ + Quantity("0 [sec]"), + Quantity("1 [sec]"), + Quantity("2 [sec]"), + ] + RAD.AmbientTemperature.Output.DiscreteValues = [ + Quantity("22[C]"), + Quantity("30[C]"), + Quantity("40[C]"), + ] + RAD.Correlation = RadiationType.SurfaceToSurface + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 269-270 + +Analysis settings + +.. GENERATED FROM PYTHON SOURCE LINES 270-282 + +.. code-block:: Python + + + ANLYS_SET = STAT_THERM.AnalysisSettings + ANLYS_SET.NumberOfSteps = 2 + ANLYS_SET.CalculateVolumeEnergy = True + + STAT_THERM.Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "BC_steadystate.png"), image_export_format, settings_720p + ) + display_image("BC_steadystate.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_002.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_002.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 283-286 + +Add results +~~~~~~~~~~~ +Temperature + +.. GENERATED FROM PYTHON SOURCE LINES 286-301 + +.. code-block:: Python + + + STAT_THERM_SOLN = DataModel.Project.Model.Analyses[0].Solution + TEMP_RST = STAT_THERM_SOLN.AddTemperature() + TEMP_RST.By = SetDriverStyle.MaximumOverTime + + + TEMP_RST2 = STAT_THERM_SOLN.AddTemperature() + TEMP_RST2.Location = BODY1 + + TEMP_RST3 = STAT_THERM_SOLN.AddTemperature() + TEMP_RST3.Location = Path + + TEMP_RST4 = STAT_THERM_SOLN.AddTemperature() + TEMP_RST4.Location = SURF + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 302-303 + +Total and directional heat flux + +.. GENERATED FROM PYTHON SOURCE LINES 303-313 + +.. code-block:: Python + + + TOT_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux() + DIR_HFLUX = STAT_THERM_SOLN.AddTotalHeatFlux() + DIR_HFLUX.ThermalResultType = TotalOrDirectional.Directional + DIR_HFLUX.NormalOrientation = NormalOrientationType.ZAxis + + LCS2.PrimaryAxisDefineBy = CoordinateSystemAlignmentType.GlobalZ + DIR_HFLUX.CoordinateSystem = LCS2 + DIR_HFLUX.DisplayOption = ResultAveragingType.Averaged + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 314-315 + +Thermal error + +.. GENERATED FROM PYTHON SOURCE LINES 315-318 + +.. code-block:: Python + + + THERM_ERROR = STAT_THERM_SOLN.AddThermalError() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 319-320 + +Temperature probe + +.. GENERATED FROM PYTHON SOURCE LINES 320-326 + +.. code-block:: Python + + + TEMP_PROBE = STAT_THERM_SOLN.AddTemperatureProbe() + TEMP_PROBE.GeometryLocation = FACE1 + TEMP_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem + TEMP_PROBE.CoordinateSystemSelection = LCS2 + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 327-328 + +Heat flux probe + +.. GENERATED FROM PYTHON SOURCE LINES 328-334 + +.. code-block:: Python + + + HFLUX_PROBE = STAT_THERM_SOLN.AddHeatFluxProbe() + HFLUX_PROBE.LocationMethod = LocationDefinitionMethod.CoordinateSystem + HFLUX_PROBE.CoordinateSystemSelection = LCS2 + HFLUX_PROBE.ResultSelection = ProbeDisplayFilter.ZAxis + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 335-336 + +Reaction probe + +.. GENERATED FROM PYTHON SOURCE LINES 336-342 + +.. code-block:: Python + + + ANLYS_SET.NodalForces = OutputControlsNodalForcesType.Yes + REAC_PROBE = STAT_THERM_SOLN.AddReactionProbe() + REAC_PROBE.LocationMethod = LocationDefinitionMethod.GeometrySelection + REAC_PROBE.GeometryLocation = FACE1 + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 343-344 + +Radiation probe + +.. GENERATED FROM PYTHON SOURCE LINES 344-350 + +.. code-block:: Python + + + Rad_Probe = STAT_THERM_SOLN.AddRadiationProbe() + Rad_Probe.BoundaryConditionSelection = RAD + Rad_Probe.ResultSelection = ProbeDisplayFilter.All + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 351-353 + +Solve +~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 353-357 + +.. code-block:: Python + + + STAT_THERM_SOLN.Solve(True) + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 361-363 + +Messages +~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 363-382 + +.. code-block:: Python + + + Messages = ExtAPI.Application.Messages + if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") + else: + print("No [Info]/[Warning]/[Error] Messages") + + # Display results + # ~~~~~~~~~~~~~~~ + # Total body temperature + + Tree.Activate([TEMP_RST]) + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp.png"), image_export_format, settings_720p + ) + display_image("temp.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_003.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_003.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + [Warning] A result is scoped to a construction geometry object which might have points shared with multiple bodies. Please check the results. Object=Surface Result=Temperature 4 + + + + +.. GENERATED FROM PYTHON SOURCE LINES 383-384 + +Temperature on part of the body + +.. GENERATED FROM PYTHON SOURCE LINES 384-392 + +.. code-block:: Python + + + Tree.Activate([TEMP_RST2]) + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp2.png"), image_export_format, settings_720p + ) + display_image("temp2.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_004.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 393-394 + +Temperature distribution along the specific path + +.. GENERATED FROM PYTHON SOURCE LINES 394-402 + +.. code-block:: Python + + + Tree.Activate([TEMP_RST3]) + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp3.png"), image_export_format, settings_720p + ) + display_image("temp3.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_005.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_005.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 403-404 + +Temperature of bottom surface + +.. GENERATED FROM PYTHON SOURCE LINES 404-412 + +.. code-block:: Python + + + Tree.Activate([TEMP_RST4]) + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "temp4.png"), image_export_format, settings_720p + ) + display_image("temp4.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_006.png + :alt: steady state thermal analysis + :srcset: /examples/basic/images/sphx_glr_steady_state_thermal_analysis_006.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 413-416 + +Export directional heat flux animation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Directional heat flux + +.. GENERATED FROM PYTHON SOURCE LINES 416-445 + +.. code-block:: Python + + + Tree.Activate([DIR_HFLUX]) + animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF + ) + settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() + settings_720p.Width = 1280 + settings_720p.Height = 720 + + DIR_HFLUX.ExportAnimation( + os.path.join(cwd, "DirectionalHeatFlux.gif"), animation_export_format, settings_720p + ) + gif = Image.open(os.path.join(cwd, "DirectionalHeatFlux.gif")) + fig, ax = plt.subplots(figsize=(16, 9)) + ax.axis("off") + img = ax.imshow(gif.convert("RGBA")) + + + def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + + ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True + ) + plt.show() + + + + +.. container:: sphx-glr-animation + + .. raw:: html + + + + + + + +
+ +
+ +
+ + + + + + + + + +
+
+ + + + + + +
+
+
+ + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 446-448 + +Display output file from solve +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 448-462 + +.. code-block:: Python + + + + def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + + solve_path = STAT_THERM.WorkingDir + solve_out_path = os.path.join(solve_path, "solve.out") + if solve_out_path: + write_file_contents_to_console(solve_out_path) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + Ansys Mechanical Enterprise + + + *------------------------------------------------------------------* + | | + | W E L C O M E T O T H E A N S Y S (R) P R O G R A M | + | | + *------------------------------------------------------------------* + + + + + *************************************************************** + * ANSYS MAPDL 2024 R1 LEGAL NOTICES * + *************************************************************** + * * + * Copyright 1971-2024 Ansys, Inc. All rights reserved. * + * Unauthorized use, distribution or duplication is * + * prohibited. * + * * + * Ansys is a registered trademark of Ansys, Inc. or its * + * subsidiaries in the United States or other countries. * + * See the Ansys, Inc. online documentation or the Ansys, Inc. * + * documentation CD or online help for the complete Legal * + * Notice. * + * * + *************************************************************** + * * + * THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION * + * INCLUDE TRADE SECRETS AND CONFIDENTIAL AND PROPRIETARY * + * PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. * + * The software products and documentation are furnished by * + * Ansys, Inc. or its subsidiaries under a software license * + * agreement that contains provisions concerning * + * non-disclosure, copying, length and nature of use, * + * compliance with exporting laws, warranties, disclaimers, * + * limitations of liability, and remedies, and other * + * provisions. The software products and documentation may be * + * used, disclosed, transferred, or copied only in accordance * + * with the terms and conditions of that software license * + * agreement. * + * * + * Ansys, Inc. is a UL registered * + * ISO 9001:2015 company. * + * * + *************************************************************** + * * + * This product is subject to U.S. laws governing export and * + * re-export. * + * * + * For U.S. Government users, except as specifically granted * + * by the Ansys, Inc. software license agreement, the use, * + * duplication, or disclosure by the United States Government * + * is subject to restrictions stated in the Ansys, Inc. * + * software license agreement and FAR 12.212 (for non-DOD * + * licenses). * + * * + *************************************************************** + + 2024 R1 + + Point Releases and Patches installed: + + Ansys, Inc. License Manager 2024 R1 + Structures 2024 R1 + LS-DYNA 2024 R1 + Mechanical Products 2024 R1 + + + ***** MAPDL COMMAND LINE ARGUMENTS ***** + BATCH MODE REQUESTED (-b) = NOLIST + INPUT FILE COPY MODE (-c) = COPY + DISTRIBUTED MEMORY PARALLEL REQUESTED + 4 PARALLEL PROCESSES REQUESTED WITH SINGLE THREAD PER PROCESS + TOTAL OF 4 CORES REQUESTED + INPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal/dummy.dat + OUTPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal/solve.out + START-UP FILE MODE = NOREAD + STOP FILE MODE = NOREAD + + RELEASE= 2024 R1 BUILD= 24.1 UP20231106 VERSION=LINUX x64 + CURRENT JOBNAME=file0 03:05:26 FEB 02, 2024 CP= 0.231 + + + PARAMETER _DS_PROGRESS = 999.0000000 + + /INPUT FILE= ds.dat LINE= 0 + + + + *** NOTE *** CP = 0.295 TIME= 03:05:26 + The /CONFIG,NOELDB command is not valid in a distributed memory + parallel solution. Command is ignored. + + *GET _WALLSTRT FROM ACTI ITEM=TIME WALL VALUE= 3.09083333 + + TITLE= + --Steady-State Thermal + + + SET PARAMETER DIMENSIONS ON _WB_PROJECTSCRATCH_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_PROJECTSCRATCH_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal/ + + SET PARAMETER DIMENSIONS ON _WB_SOLVERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_SOLVERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal/ + + SET PARAMETER DIMENSIONS ON _WB_USERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_USERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/UserFiles/ + --- Data in consistent MKS units. See Solving Units in the help system for more + + MKS UNITS SPECIFIED FOR INTERNAL + LENGTH (l) = METER (M) + MASS (M) = KILOGRAM (KG) + TIME (t) = SECOND (SEC) + TEMPERATURE (T) = CELSIUS (C) + TOFFSET = 273.0 + CHARGE (Q) = COULOMB + FORCE (f) = NEWTON (N) (KG-M/SEC2) + HEAT = JOULE (N-M) + + PRESSURE = PASCAL (NEWTON/M**2) + ENERGY (W) = JOULE (N-M) + POWER (P) = WATT (N-M/SEC) + CURRENT (i) = AMPERE (COULOMBS/SEC) + CAPACITANCE (C) = FARAD + INDUCTANCE (L) = HENRY + MAGNETIC FLUX = WEBER + RESISTANCE (R) = OHM + ELECTRIC POTENTIAL = VOLT + + INPUT UNITS ARE ALSO SET TO MKS + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:27 FEB 02, 2024 CP= 0.299 + + --Steady-State Thermal + + + + ***** MAPDL ANALYSIS DEFINITION (PREP7) ***** + *********** Nodes for the whole assembly *********** + *********** Elements for Body 1 "Part4" *********** + *********** Elements for Body 2 "Part3" *********** + *********** Elements for Body 3 "Part2" *********** + *********** Elements for Body 4 "Part1" *********** + *********** Send User Defined Coordinate System(s) *********** + *********** Send Materials *********** + *********** Create Contact "Contact Region" *********** + Real Constant Set For Above Contact Is 6 & 5 + *********** Create Contact "Contact Region 2" *********** + Real Constant Set For Above Contact Is 8 & 7 + *********** Create Contact "Contact Region 3" *********** + Real Constant Set For Above Contact Is 10 & 9 + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Define Temperature Constraint *********** + *********** Define Temperature Constraint *********** + *********** Create "ToSurface(Open)" Radiation *********** + ***************** Define Uniform Initial temperature *************** + + + ***** ROUTINE COMPLETED ***** CP = 0.355 + + + --- Number of total nodes = 3566 + --- Number of contact elements = 200 + --- Number of spring elements = 0 + --- Number of bearing elements = 0 + --- Number of solid elements = 586 + --- Number of condensed parts = 0 + --- Number of total elements = 786 + + *GET _WALLBSOL FROM ACTI ITEM=TIME WALL VALUE= 3.09083333 + **************************************************************************** + ************************* SOLUTION ******************************** + **************************************************************************** + + ***** MAPDL SOLUTION ROUTINE ***** + + + PERFORM A STATIC ANALYSIS + THIS WILL BE A NEW ANALYSIS + + CONTACT INFORMATION PRINTOUT LEVEL 1 + + CHECK INITIAL OPEN/CLOSED STATUS OF SELECTED CONTACT ELEMENTS + AND LIST DETAILED CONTACT PAIR INFORMATION + + SPLIT CONTACT SURFACES AT SOLVE PHASE + + NUMBER OF SPLITTING TBD BY PROGRAM + + DO NOT SAVE ANY RESTART FILES AT ALL + + DO NOT COMBINE ELEMENT MATRIX FILES (.emat) AFTER DISTRIBUTED PARALLEL SOLUTION + + DO NOT COMBINE ELEMENT SAVE DATA FILES (.esav) AFTER DISTRIBUTED PARALLEL SOLUTION + **************************************************** + ******************* SOLVE FOR LS 1 OF 2 **************** + + SPECIFIED CONSTRAINT TEMP FOR PICKED NODES + SET ACCORDING TO TABLE PARAMETER = _LOADVARI63 + + SPECIFIED CONSTRAINT TEMP FOR PICKED NODES + SET ACCORDING TO TABLE PARAMETER = _LOADVARI65 + + SPECIFIED SURFACE LOAD RDSF FOR ALL PICKED ELEMENTS LKEY = 6 KVAL = 1 + VALUES = 1.0000 1.0000 1.0000 1.0000 + + SPECIFIED SURFACE LOAD RDSF FOR ALL PICKED ELEMENTS LKEY = 6 KVAL = 2 + VALUES = 1.0000 1.0000 1.0000 1.0000 + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 3566 STEP 1 + + 3566 NODES (OF 3566 DEFINED) SELECTED BY NSEL COMMAND. + + ALL SELECT FOR ITEM=ELEM COMPONENT= + IN RANGE 1 TO 1504 STEP 1 + + 786 ELEMENTS (OF 786 DEFINED) SELECTED BY ESEL COMMAND. + + SPECIFIED CONSTRAINT TEMP FOR PICKED NODES + SET ACCORDING TO TABLE PARAMETER = _LOADVARI67 + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 3566 STEP 1 + + 3566 NODES (OF 3566 DEFINED) SELECTED BY NSEL COMMAND. + + ALL SELECT FOR ITEM=ELEM COMPONENT= + IN RANGE 1 TO 1504 STEP 1 + + 786 ELEMENTS (OF 786 DEFINED) SELECTED BY ESEL COMMAND. + + PRINTOUT RESUMED BY /GOP + + USE AUTOMATIC TIME STEPPING THIS LOAD STEP + + USE 1 SUBSTEPS INITIALLY THIS LOAD STEP FOR ALL DEGREES OF FREEDOM + FOR AUTOMATIC TIME STEPPING: + USE 10 SUBSTEPS AS A MAXIMUM + USE 1 SUBSTEPS AS A MINIMUM + + TIME= 1.0000 + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + WRITE ALL ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE + FOR ALL APPLICABLE ENTITIES + + WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE FFLU ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE CONT ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE NLOA ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE MISC ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + CONVERGENCE ON HEAT BASED ON THE NORM OF THE N-R LOAD + WITH A TOLERANCE OF 0.1000E-03 AND A MINIMUM REFERENCE VALUE OF 0.1000E-05 + USING THE L2 NORM (CHECK THE SRSS VALUE) + + UNDER RELAXATION FOR RADIATION FLUX= 0.10000 + + TOLERENCE FOR RADIOSITY FLUX= 0.00010 + + USING JACOBI ITERATIVE SOLVER FOR RADIOSITY SOLUTION + FOR 3D ENCLOSURES. + USING GSEIDEL ITERATIVE SOLVER FOR RADIOSITY SOLUTION + FOR 2D ENCLOSURES. + + MAXIMUM NUMBER OF ITERATIONS= 1000 + TOLERENCE FOR ITERATIVE SOLVER= 0.10000 + RELAXATION FOR ITERATIVE SOLVER= 0.10000 + + HEMICUBE RESOLUTION= 10 + + MIN NORMALIZED DIST BEFORE AUTO SUBDIVIDE= 1.000000000E-06 + + SELECT COMPONENT _CM67 + + SELECT ALL ELEMENTS HAVING ANY NODE IN NODAL SET. + + 110 ELEMENTS (OF 786 DEFINED) SELECTED FROM + 310 SELECTED NODES BY ESLN COMMAND. + + BEFORE SYMMETRIZATION: + + NUMBER OF RADIATION NODES CREATED = 115 + + NUMBER OF RADIOSITY SURFACE ELEMENTS CREATED = 82 + + AFTER SYMMETRIZATION: + + FULL NUMBER OF RADIATION NODES CREATED = 115 + + FULL NUMBER OF RADIOSITY SURFACE ELEMENTS CREATED = 82 + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 3681 STEP 1 + + 3681 NODES (OF 3681 DEFINED) SELECTED BY NSEL COMMAND. + + ALL SELECT FOR ITEM=ELEM COMPONENT= + IN RANGE 1 TO 1586 STEP 1 + + 868 ELEMENTS (OF 868 DEFINED) SELECTED BY ESEL COMMAND. + + *GET ANSINTER_ FROM ACTI ITEM=INT VALUE= 0.00000000 + + *IF ANSINTER_ ( = 0.00000 ) NE + 0 ( = 0.00000 ) THEN + + *ENDIF + + *** NOTE *** CP = 0.545 TIME= 03:05:27 + The automatic domain decomposition logic has selected the MESH domain + decomposition method with 4 processes per solution. + + ***** MAPDL SOLVE COMMAND ***** + + CALCULATING VIEW FACTORS USING HEMICUBE METHOD + + RETRIEVED 1 ENCLOSURES. + TOTAL OF 82 DEFINED ELEMENT FACES. + + # ENCLOSURE = 1 # SURFACES = 82 # NODES = 115 + + TIME OF CALCULATION FOR THIS ENCLOSURE = 0.555897E-02 + + CHECKING VIEW FACTOR SUM + + *** NOTE *** CP = 0.633 TIME= 03:05:27 + Some of the rows in the viewfactor matrix have all zeros for enclosure + 1. + + VIEW FACTOR CALCULATION COMPLETE + + WRITING VIEW FACTORS TO FILE file0.vf + VIEW FACTORS WERE WRITTEN TO FILE file0.vf + + *** WARNING *** CP = 0.637 TIME= 03:05:27 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** NOTE *** CP = 0.644 TIME= 03:05:27 + The model data was checked and warning messages were found. + Please review output or errors file ( /github/home/.mw/Application + Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal/fil + le0.err ) for these warning messages. + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:27 FEB 02, 2024 CP= 0.646 + + --Steady-State Thermal + + + + S O L U T I O N O P T I O N S + + PROBLEM DIMENSIONALITY. . . . . . . . . . . . .3-D + DEGREES OF FREEDOM. . . . . . TEMP + ANALYSIS TYPE . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE) + OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . . 273.15 + GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC + + *** NOTE *** CP = 0.651 TIME= 03:05:27 + This nonlinear analysis defaults to using the full Newton-Raphson + solution procedure. This can be modified using the NROPT command. + + *** NOTE *** CP = 0.652 TIME= 03:05:27 + The conditions for direct assembly have been met. No .emat or .erot + files will be produced. + + CHECK INITIAL OPEN/CLOSED STATUS OF SELECTED CONTACT ELEMENTS + AND LIST DETAILED CONTACT PAIR INFORMATION + + 34 CONTACT ELEMENTS & 66 TARGET ELEMENTS ARE UNSELECTED FOR PREPARATION OF SPLITTING. + 3 CONTACT PAIRS ARE UNSELECTED. + + *** NOTE *** CP = 0.779 TIME= 03:05:27 + The maximum number of contact elements in any single contact pair is + 25, which is smaller than the optimal domain size of 120 elements for + the given number of CPU domains (4). Therefore, no contact pairs are + being split by the CNCH,DMP logic. + + BECAUSE SPLIT WAS NOT DONE FOR CONNECT REGION(S), UNSELECTED ELEMENTS ARE REVERTED (SELECTED). + + *** NOTE *** CP = 0.891 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 5 and contact element type 5 has been set up. The + companion pair has real constant set ID 6. Both pairs should have the + same behavior. + MAPDL will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.40000 + Average contact pair depth 0.42857 + Average target surface length 0.66667 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.10714 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.892 TIME= 03:05:27 + Max. Initial penetration 3.552713679E-15 was detected between contact + element 1331 and target element 1366. + **************************************** + + + *** NOTE *** CP = 0.893 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 6 and contact element type 5 has been set up. The + companion pair has real constant set ID 5. Both pairs should have the + same behavior. + MAPDL will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.66667 + Average contact pair depth 0.71429 + Average target surface length 0.40000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.17857 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.893 TIME= 03:05:27 + Max. Initial penetration 3.552713679E-15 was detected between contact + element 1360 and target element 1316. + **************************************** + + + *** NOTE *** CP = 0.893 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 7 and contact element type 7 has been set up. The + companion pair has real constant set ID 8. Both pairs should have the + same behavior. + MAPDL will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.66667 + Average contact pair depth 0.71429 + Average target surface length 0.50000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.17857 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.894 TIME= 03:05:27 + Max. Initial penetration 1.776356839E-15 was detected between contact + element 1382 and target element 1413. + **************************************** + + + *** NOTE *** CP = 0.894 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 8 and contact element type 7 has been set up. The + companion pair has real constant set ID 7. Both pairs should have the + same behavior. + MAPDL will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.50000 + Average contact pair depth 0.50000 + Average target surface length 0.66667 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.12500 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.895 TIME= 03:05:27 + Max. Initial penetration 1.776356839E-15 was detected between contact + element 1395 and target element 1375. + **************************************** + + + *** NOTE *** CP = 0.895 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 9 and contact element type 9 has been set up. The + companion pair has real constant set ID 10. Both pairs should have + the same behavior. + MAPDL will deactivate the current pair and keep its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.50000 + Average contact pair depth 0.50000 + Average target surface length 0.40000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.12500 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.895 TIME= 03:05:27 + Max. Initial penetration 4.440892099E-16 was detected between contact + element 1442 and target element 1480. + **************************************** + + + *** NOTE *** CP = 0.895 TIME= 03:05:27 + Symmetric Deformable- deformable contact pair identified by real + constant set 10 and contact element type 9 has been set up. The + companion pair has real constant set ID 9. Both pairs should have the + same behavior. + MAPDL will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Pure thermal contact is activated. + The emissivity is defined through the material property. + Thermal convection coefficient, environment temperature, and + heat flux are defined using the SFE command. + Target temperature is used for convection/radiation calculation + for near field contact. + Small sliding logic is assumed + Contact detection at: Gauss integration point + Average contact surface length 0.40000 + Average contact pair depth 0.40000 + Average target surface length 0.50000 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.10000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + Thermal contact conductance coef. TCC 29952. + Heat radiation is excluded. + + *** NOTE *** CP = 0.896 TIME= 03:05:27 + Max. Initial penetration 4.440892099E-16 was detected between contact + element 1455 and target element 1426. + **************************************** + + + + + + + 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: 868 + ...Number of nodes: 3681 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.119 + + + 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 + AUTOMATIC TIME STEPPING . . . . . . . . . . . . ON + INITIAL NUMBER OF SUBSTEPS . . . . . . . . . 1 + MAXIMUM NUMBER OF SUBSTEPS . . . . . . . . . 10 + MINIMUM NUMBER OF SUBSTEPS . . . . . . . . . 1 + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS. . . . 15 + STEP CHANGE BOUNDARY CONDITIONS . . . . . . . . NO + TERMINATE ANALYSIS IF NOT CONVERGED . . . . . .YES (EXIT) + CONVERGENCE CONTROLS + LABEL REFERENCE TOLERANCE NORM MINREF + HEAT 0.000 0.1000E-03 2 0.1000E-05 + PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT + DATABASE OUTPUT CONTROLS + ITEM FREQUENCY COMPONENT + ALL NONE + NSOL ALL + RSOL ALL + EANG ALL + VENG ALL + FFLU ALL + CONT ALL + NLOA ALL + MISC ALL + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file.mntr + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS HAS BEEN MODIFIED + TO BE, NEQIT = 1000, BY SOLUTION CONTROL LOGIC. + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 59 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.392497E-02 + RAD FLUX CONVERGENCE VALUE= 1.00000 CRITERION= 0.100000E-03 + + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.62800E+06 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 1.0000 IXX = 0.8453E+08 IXX = 0.2111E+08 + YC = 1.0000 IYY = 0.8453E+08 IYY = 0.2111E+08 + ZC = 10.000 IZZ = 0.1641E+07 IZZ = 0.3847E+06 + IXY = -0.6280E+06 IXY = -0.1164E-09 + IYZ = -0.6280E+07 IYZ = -0.1256E-03 + IZX = -0.6280E+07 IZX = -0.1256E-03 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 94200.0 + 2 314000. + 3 157000. + 4 62800.0 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 2872.34701 at element 1392. + Minimum = 23.5644444 at element 562. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 175 SOLID279 0.013 0.000074 + 2 126 SOLID279 0.030 0.000234 + 3 160 SOLID279 0.009 0.000053 + 4 125 SOLID279 0.005 0.000038 + 5 34 CONTA174 0.005 0.000157 + 6 34 TARGE170 0.000 0.000003 + 7 25 CONTA174 0.004 0.000141 + 8 25 TARGE170 0.000 0.000003 + 9 41 CONTA174 0.004 0.000099 + 10 41 TARGE170 0.000 0.000002 + 11 82 SURF252 0.001 0.000015 + Time at end of element matrix formulation CP = 1.2249999. + HT FLOW CONVERGENCE VALUE= 0.1041E+05 CRITERION= 1.043 + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 3373, Maximum wavefront = 114 + + Process memory allocated for solver = 2.297 MB + Process memory required for in-core solution = 2.212 MB + Process memory required for out-of-core solution = 1.694 MB + + Total memory allocated for solver = 8.417 MB + Total memory required for in-core solution = 8.099 MB + Total memory required for out-of-core solution = 6.122 MB + + *** NOTE *** CP = 1.329 TIME= 03:05:27 + The Distributed 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. + Distributed sparse solver maximum pivot= 2717.07614 at node 1844 TEMP. + Distributed sparse solver minimum pivot= 14.7755695 at node 2950 TEMP. + Distributed sparse solver minimum pivot in absolute value= 14.7755695 + at node 2950 TEMP. + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 28.00 + HT FLOW CONVERGENCE VALUE= 0.7964E-09 CRITERION= 0.6227E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 1 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 48 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.245202E-02 + RAD FLUX CONVERGENCE VALUE= 0.164309 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 4.683 CRITERION= 0.6197E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1700 + HT FLOW CONVERGENCE VALUE= 0.9658E-09 CRITERION= 0.6203E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 1 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.519753E-04 + RAD FLUX CONVERGENCE VALUE= 0.596247E-04 CRITERION= 0.100000E-03 + + RADIOSITY FLUX CONVERGED AFTER ITERATION= 3 SUBSTEP= 1 + + HT FLOW CONVERGENCE VALUE= 1.620 CRITERION= 0.6314E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6831E-01 + HT FLOW CONVERGENCE VALUE= 0.8002E-09 CRITERION= 0.6316E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 175 SOLID279 0.004 0.000020 + 2 126 SOLID279 0.003 0.000023 + 3 160 SOLID279 0.004 0.000022 + 4 125 SOLID279 0.003 0.000021 + 5 34 CONTA174 0.002 0.000046 + 7 25 CONTA174 0.001 0.000039 + 9 41 CONTA174 0.002 0.000039 + 11 82 SURF252 0.001 0.000010 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 175 SOLID279 0.002 0.000013 + 2 126 SOLID279 0.002 0.000015 + 3 160 SOLID279 0.002 0.000014 + 4 125 SOLID279 0.002 0.000015 + 5 34 CONTA174 0.000 0.000005 + 7 25 CONTA174 0.000 0.000004 + 9 41 CONTA174 0.000 0.000004 + 11 82 SURF252 0.000 0.000004 + *** LOAD STEP 1 SUBSTEP 1 COMPLETED. CUM ITER = 3 + *** TIME = 1.00000 TIME INC = 1.00000 + + + *** MAPDL BINARY FILE STATISTICS + BUFFER SIZE USED= 16384 + 0.125 MB WRITTEN ON ELEMENT SAVED DATA FILE: file0.esav + 0.500 MB WRITTEN ON ASSEMBLED MATRIX FILE: file0.full + 0.500 MB WRITTEN ON RESULTS FILE: file0.rth + *************** Write FE CONNECTORS ********* + + WRITE OUT CONSTRAINT EQUATIONS TO FILE= file.ce + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + **************************************************** + ******************* SOLVE FOR LS 2 OF 2 **************** + + PRINTOUT RESUMED BY /GOP + + USE AUTOMATIC TIME STEPPING THIS LOAD STEP + + USE 1 SUBSTEPS INITIALLY THIS LOAD STEP FOR ALL DEGREES OF FREEDOM + FOR AUTOMATIC TIME STEPPING: + USE 10 SUBSTEPS AS A MAXIMUM + USE 1 SUBSTEPS AS A MINIMUM + + TIME= 2.0000 + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + WRITE ALL ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE + FOR ALL APPLICABLE ENTITIES + + WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE FFLU ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE CONT ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE NLOA ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE MISC ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + CONVERGENCE ON HEAT BASED ON THE NORM OF THE N-R LOAD + WITH A TOLERANCE OF 0.1000E-03 AND A MINIMUM REFERENCE VALUE OF 0.1000E-05 + USING THE L2 NORM (CHECK THE SRSS VALUE) + + UNDER RELAXATION FOR RADIATION FLUX= 0.10000 + + TOLERENCE FOR RADIOSITY FLUX= 0.00010 + + USING JACOBI ITERATIVE SOLVER FOR RADIOSITY SOLUTION + FOR 3D ENCLOSURES. + USING GSEIDEL ITERATIVE SOLVER FOR RADIOSITY SOLUTION + FOR 2D ENCLOSURES. + + MAXIMUM NUMBER OF ITERATIONS= 1000 + TOLERENCE FOR ITERATIVE SOLVER= 0.10000 + RELAXATION FOR ITERATIVE SOLVER= 0.10000 + + HEMICUBE RESOLUTION= 10 + + MIN NORMALIZED DIST BEFORE AUTO SUBDIVIDE= 1.000000000E-06 + + ***** MAPDL SOLVE COMMAND ***** + + *** NOTE *** CP = 1.678 TIME= 03:05:27 + This nonlinear analysis defaults to using the full Newton-Raphson + solution procedure. This can be modified using the NROPT command. + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:27 FEB 02, 2024 CP= 1.692 + + --Steady-State Thermal + + + + L O A D S T E P O P T I O N S + + LOAD STEP NUMBER. . . . . . . . . . . . . . . . 2 + TIME AT END OF THE LOAD STEP. . . . . . . . . . 2.0000 + AUTOMATIC TIME STEPPING . . . . . . . . . . . . ON + INITIAL NUMBER OF SUBSTEPS . . . . . . . . . 1 + MAXIMUM NUMBER OF SUBSTEPS . . . . . . . . . 10 + MINIMUM NUMBER OF SUBSTEPS . . . . . . . . . 1 + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS. . . . 15 + STEP CHANGE BOUNDARY CONDITIONS . . . . . . . . NO + TERMINATE ANALYSIS IF NOT CONVERGED . . . . . .YES (EXIT) + CONVERGENCE CONTROLS + LABEL REFERENCE TOLERANCE NORM MINREF + HEAT 0.000 0.1000E-03 2 0.1000E-05 + PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT + DATABASE OUTPUT CONTROLS + ITEM FREQUENCY COMPONENT + ALL NONE + NSOL ALL + RSOL ALL + EANG ALL + VENG ALL + FFLU ALL + CONT ALL + NLOA ALL + MISC ALL + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file.mntr + MAXIMUM NUMBER OF EQUILIBRIUM ITERATIONS HAS BEEN MODIFIED + TO BE, NEQIT = 1000, BY SOLUTION CONTROL LOGIC. + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 1 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.221968E-03 + RAD FLUX CONVERGENCE VALUE= 0.108870E-03 CRITERION= 0.100000E-03 + + + HT FLOW CONVERGENCE VALUE= 0.1129E+05 CRITERION= 1.132 + EQUIL ITER 1 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 30.00 + HT FLOW CONVERGENCE VALUE= 0.1099E-08 CRITERION= 0.9169E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 1 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 51 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.260687E-02 + RAD FLUX CONVERGENCE VALUE= 0.176949 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 31.78 CRITERION= 0.9632E-01 + EQUIL ITER 2 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -1.134 + HT FLOW CONVERGENCE VALUE= 0.9349E-09 CRITERION= 0.9668E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 2 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 21 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.118685E-02 + RAD FLUX CONVERGENCE VALUE= 0.665886E-02 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 1.853 CRITERION= 0.9890E-01 + EQUIL ITER 3 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.6860E-01 + HT FLOW CONVERGENCE VALUE= 0.8175E-09 CRITERION= 0.9893E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 3 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 4 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.424147E-03 + RAD FLUX CONVERGENCE VALUE= 0.506736E-03 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 0.5470 CRITERION= 0.9983E-01 + EQUIL ITER 4 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.1926E-01 + HT FLOW CONVERGENCE VALUE= 0.1099E-08 CRITERION= 0.9983E-01 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 4 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 1 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.217915E-03 + RAD FLUX CONVERGENCE VALUE= 0.109888E-03 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 0.2185 CRITERION= 0.1002 + EQUIL ITER 5 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= -0.7222E-02 + HT FLOW CONVERGENCE VALUE= 0.1194E-08 CRITERION= 0.1002 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 5 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 1 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.460148E-04 + RAD FLUX CONVERGENCE VALUE= 0.102317E-03 CRITERION= 0.100000E-03 + + HT FLOW CONVERGENCE VALUE= 0.1112 CRITERION= 0.1002 + EQUIL ITER 6 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.4308E-02 + HT FLOW CONVERGENCE VALUE= 0.9922E-09 CRITERION= 0.1002 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 6 + + RADIOSITY SOLVER CALCULATION + ENCLOSURE NUMBER= 1 + RADIOSITY SOLVER CONVERGED AFTER 1 ITERATIONS + TIME OF RADIOSITY SOLVER FOR ENCLOSURE= 0.479221E-04 + RAD FLUX CONVERGENCE VALUE= 0.884660E-04 CRITERION= 0.100000E-03 + + RADIOSITY FLUX CONVERGED AFTER ITERATION= 7 SUBSTEP= 1 + + HT FLOW CONVERGENCE VALUE= 0.2106 CRITERION= 0.1000 + EQUIL ITER 7 COMPLETED. NEW TRIANG MATRIX. MAX DOF INC= 0.8012E-02 + HT FLOW CONVERGENCE VALUE= 0.9838E-09 CRITERION= 0.1000 <<< CONVERGED + >>> SOLUTION CONVERGED AFTER EQUILIBRIUM ITERATION 7 + *** LOAD STEP 2 SUBSTEP 1 COMPLETED. CUM ITER = 10 + *** TIME = 2.00000 TIME INC = 1.00000 + **************************************************** + *************** FINISHED SOLVE FOR LS 2 ************* + + *GET _WALLASOL FROM ACTI ITEM=TIME WALL VALUE= 3.09083333 + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 2.518 + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:27 FEB 02, 2024 CP= 2.519 + + --Steady-State Thermal + + + + ***** MAPDL RESULTS INTERPRETATION (POST1) ***** + + *** NOTE *** CP = 2.520 TIME= 03:05:27 + Reading results into the database (SET command) will update the current + displacement and force boundary conditions in the database with the + values from the results file for that load set. Note that any + subsequent solutions will use these values unless action is taken to + either SAVE the current values or not overwrite them (/EXIT,NOSAVE). + + Set Encoding of XML File to:ISO-8859-1 + + Set Output of XML File to: + PARM, , , , , , , , , , , , + , , , , , , , + + DATABASE WRITTEN ON FILE parm.xml + + EXIT THE MAPDL POST1 DATABASE PROCESSOR + + + ***** ROUTINE COMPLETED ***** CP = 2.523 + + + + PRINTOUT RESUMED BY /GOP + + *GET _WALLDONE FROM ACTI ITEM=TIME WALL VALUE= 3.09083333 + + PARAMETER _PREPTIME = 0.000000000 + + PARAMETER _SOLVTIME = 0.000000000 + + PARAMETER _POSTTIME = 0.000000000 + + PARAMETER _TOTALTIM = 0.000000000 + + *GET _DLBRATIO FROM ACTI ITEM=SOLU DLBR VALUE= 1.11855670 + + *GET _COMBTIME FROM ACTI ITEM=SOLU COMB VALUE= 0.409774237E-02 + + *GET _SSMODE FROM ACTI ITEM=SOLU SSMM VALUE= 2.00000000 + + *GET _NDOFS FROM ACTI ITEM=SOLU NDOF VALUE= 3373.00000 + + /FCLEAN COMMAND REMOVING ALL LOCAL FILES + --- Total number of nodes = 3566 + --- Total number of elements = 786 + --- Element load balance ratio = 1.1185567 + --- Time to combine distributed files = 4.097742369E-03 + --- Sparse memory mode = 2 + --- Number of DOF = 3373 + + EXIT MAPDL WITHOUT SAVING DATABASE + + + NUMBER OF WARNING MESSAGES ENCOUNTERED= 1 + NUMBER OF ERROR MESSAGES ENCOUNTERED= 0 + + +--------------------- M A P D L S T A T I S T I C S ------------------------+ + + Release: 2024 R1 Build: 24.1 Update: UP20231106 Platform: LINUX x64 + Date Run: 02/02/2024 Time: 03:05 Process ID: 4667 + Operating System: Ubuntu 20.04.6 LTS + + Processor Model: AMD EPYC 7763 64-Core Processor + + Compiler: Intel(R) Fortran Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) C/C++ Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 + BLAS Library supplied by AMD BLIS + + Number of machines requested : 1 + Total number of cores available : 8 + Number of physical cores available : 4 + Number of processes requested : 4 + Number of threads per process requested : 1 + Total number of cores requested : 4 (Distributed Memory Parallel) + MPI Type: INTELMPI + MPI Version: Intel(R) MPI Library 2021.10 for Linux* OS + + + GPU Acceleration: Not Requested + + Job Name: file0 + Input File: dummy.dat + + Core Machine Name Working Directory + ----------------------------------------------------- + 0 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal + 1 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal + 2 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal + 3 ccfbd43b13e4 /github/home/.mw/Application Data/Ansys/v241/AnsysMech3CE1/Project_Mech_Files/SteadyStateThermal + + Latency time from master to core 1 = 2.454 microseconds + Latency time from master to core 2 = 2.339 microseconds + Latency time from master to core 3 = 1.958 microseconds + + Communication speed from master to core 1 = 9041.70 MB/sec + Communication speed from master to core 2 = 12732.85 MB/sec + Communication speed from master to core 3 = 14502.95 MB/sec + + Total CPU time for main thread : 1.1 seconds + Total CPU time summed for all threads : 3.1 seconds + + Elapsed time spent obtaining a license : 0.3 seconds + Elapsed time spent pre-processing model (/PREP7) : 0.0 seconds + Elapsed time spent solution - preprocessing : 0.1 seconds + Elapsed time spent computing solution : 0.4 seconds + Elapsed time spent solution - postprocessing : 0.0 seconds + Elapsed time spent post-processing model (/POST1) : 0.0 seconds + + Equation solver used : Sparse (symmetric) + Equation solver computational rate : 12.9 Gflops + Equation solver effective I/O rate : 11.8 GB/sec + + Sum of disk space used on all processes : 5.7 MB + + Sum of memory used on all processes : 182.0 MB + Sum of memory allocated on all processes : 2880.0 MB + Physical memory available : 31 GB + Total amount of I/O written to disk : 0.0 GB + Total amount of I/O read from disk : 0.0 GB + + +------------------ E N D M A P D L S T A T I S T I C S -------------------+ + + + *-----------------------------------------------------------------------------* + | | + | RUN COMPLETED | + | | + |-----------------------------------------------------------------------------| + | | + | Ansys MAPDL 2024 R1 Build 24.1 UP20231106 LINUX x64 | + | | + |-----------------------------------------------------------------------------| + | | + | Database Requested(-db) 1024 MB Scratch Memory Requested 1024 MB | + | Max Database Used(Master) 3 MB Max Scratch Used(Master) 44 MB | + | Max Database Used(Workers) 1 MB Max Scratch Used(Workers) 44 MB | + | Sum Database Used(All) 6 MB Sum Scratch Used(All) 176 MB | + | | + |-----------------------------------------------------------------------------| + | | + | CP Time (sec) = 3.105 Time = 03:05:28 | + | Elapsed Time (sec) = 3.000 Date = 02/02/2024 | + | | + *-----------------------------------------------------------------------------* + + + + +.. GENERATED FROM PYTHON SOURCE LINES 463-465 + +Project tree +~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 465-482 + +.. code-block:: Python + + + + def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + + root_node = DataModel.Project + print_tree(root_node) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + ├── Project + | ├── Model + | | ├── Geometry Imports + | | | ├── Geometry Import + | | ├── Geometry + | | | ├── Part4 + | | | | ├── Part4 + | | | ├── Part3 + | | | | ├── Part3 + | | | ├── Part2 + | | | | ├── Part2 + | | | ├── Part1 + | | | | ├── Part1 + | | ├── Construction Geometry + | | | ├── Path + | | | ├── Surface + | | ├── Materials + | | | ├── Structural Steel + | | ├── Coordinate Systems + | | | ├── Global Coordinate System + | | | ├── Coordinate System + | | | ├── Coordinate System 2 + | | ├── Remote Points + | | ├── Connections + | | | ├── Contacts + | | | | ├── Contact Region + | | | | ├── Contact Region 2 + | | | | ├── Contact Region 3 + | | ├── Mesh + | | ├── Named Selections + | | | ├── Face1 + | | | ├── Face2 + | | | ├── Face3 + | | | ├── Body1 + | | ├── Steady-State Thermal + | | | ├── Initial Temperature + | | | ├── Analysis Settings + | | | ├── Temperature + | | | ├── Temperature 2 + | | | ├── Radiation + | | | ├── Solution + | | | | ├── Solution Information + | | | | ├── Temperature + | | | | ├── Temperature 2 + | | | | ├── Temperature 3 + | | | | ├── Temperature 4 + | | | | ├── Total Heat Flux + | | | | ├── Directional Heat Flux + | | | | ├── Thermal Error + | | | | ├── Temperature Probe + | | | | ├── Heat Flux Probe + | | | | ├── Reaction Probe + | | | | ├── Radiation Probe + + + + +.. GENERATED FROM PYTHON SOURCE LINES 483-486 + +Cleanup +~~~~~~~ +Save project + +.. GENERATED FROM PYTHON SOURCE LINES 486-490 + +.. code-block:: Python + + + app.save(os.path.join(cwd, "steady_state_thermal.mechdat")) + app.new() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 491-492 + +Delete example files + +.. GENERATED FROM PYTHON SOURCE LINES 492-494 + +.. code-block:: Python + + + delete_downloads() + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + True + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 20.578 seconds) + + +.. _sphx_glr_download_examples_basic_steady_state_thermal_analysis.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: steady_state_thermal_analysis.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: steady_state_thermal_analysis.py ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/basic/topology_optimization_cantilever_beam.rst.txt b/_sources/examples/basic/topology_optimization_cantilever_beam.rst.txt new file mode 100644 index 00000000..6066a687 --- /dev/null +++ b/_sources/examples/basic/topology_optimization_cantilever_beam.rst.txt @@ -0,0 +1,6336 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/basic/topology_optimization_cantilever_beam.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_basic_topology_optimization_cantilever_beam.py: + +.. _ref_topology_optimization: + +Topology optimization of a simple cantilever beam +------------------------------------------------- + +This example demonstrates the structural topology optimization of a simple +cantilever beam. The structural analysis is performed with basic constraints and +load, which is then transferred to the topology optimization. + +.. GENERATED FROM PYTHON SOURCE LINES 12-14 + +Import necessary libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 14-22 + +.. code-block:: Python + + + import os + + import ansys.mechanical.core as mech + from ansys.mechanical.core.examples import delete_downloads, download_file + from matplotlib import image as mpimg + from matplotlib import pyplot as plt + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 23-24 + +Embed Mechanical and set global variables + +.. GENERATED FROM PYTHON SOURCE LINES 24-41 + +.. code-block:: Python + + + app = mech.App(version=241) + globals().update(mech.global_variables(app, True)) + print(app) + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + cwd = os.path.join(os.getcwd(), "out") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Ansys Mechanical [Ansys Mechanical Enterprise] + Product Version:241 + Software build date: 11/27/2023 10:24:20 + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 42-43 + +Configure graphics for image export + +.. GENERATED FROM PYTHON SOURCE LINES 43-53 + +.. code-block:: Python + + + ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Front) + image_export_format = GraphicsImageExportFormat.PNG + settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() + settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution + settings_720p.Background = GraphicsBackgroundType.White + settings_720p.Width = 1280 + settings_720p.Height = 720 + settings_720p.CurrentGraphicsDisplay = False + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 54-57 + +Import structural analsys +~~~~~~~~~~~~~~~~~~~~~~~~~ +Download ``.mechdat`` file + +.. GENERATED FROM PYTHON SOURCE LINES 57-67 + +.. code-block:: Python + + + structural_mechdat_file = download_file( + "cantilever.mechdat", "pymechanical", "embedding" + ) + app.open(structural_mechdat_file) + STRUCT = ExtAPI.DataModel.Project.Model.Analyses[0] + + STRUCT_SLN = STRUCT.Solution + STRUCT_SLN.Solve(True) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 74-77 + +Display structural analsys results +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Total deformation + +.. GENERATED FROM PYTHON SOURCE LINES 77-85 + +.. code-block:: Python + + + STRUCT_SLN.Children[1].Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "total_deformation.png"), image_export_format, settings_720p + ) + display_image("total_deformation.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_001.png + :alt: topology optimization cantilever beam + :srcset: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 86-87 + +Equivalent stress + +.. GENERATED FROM PYTHON SOURCE LINES 87-95 + +.. code-block:: Python + + + STRUCT_SLN.Children[2].Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "equivalent_stress.png"), image_export_format, settings_720p + ) + display_image("equivalent_stress.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_002.png + :alt: topology optimization cantilever beam + :srcset: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_002.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 96-98 + +Topology optimization +~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 98-159 + +.. code-block:: Python + + + # Set MKS unit system + + ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardMKS + + # Store all main tree nodes as variables + + GEOM = ExtAPI.DataModel.Project.Model.Geometry + MSH = ExtAPI.DataModel.Project.Model.Mesh + NS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections + CONN_GRP = ExtAPI.DataModel.Project.Model.Connections + MY_TOTAL_VOL = GEOM.Volume.Value + MY_TOTAL_MA = GEOM.Mass.Value + + # Get structural analysis and link to topology optimization + + TOPO_OPT = ExtAPI.DataModel.Project.Model.AddTopologyOptimizationAnalysis() + TOPO_OPT.TransferDataFrom(STRUCT) + + + # Set ``None`` for optimization region boundary condition exclusion region + # Optimization region + + OPT_REG = TOPO_OPT.Children[1] + # OPT_REG.BoundaryCondition=BoundaryConditionType.None + # Using ``getattr`` because Python.Net does not support the ``None`` enum + OPT_REG.BoundaryCondition = BoundaryConditionType.AllLoadsAndSupports + + # Insert volume response constraint object for topology optimization + # Delete mass response constraint + + MASS_CONSTRN = TOPO_OPT.Children[3] + MASS_CONSTRN.Delete() + + # Add volume response constraint + + VOL_CONSTRN = TOPO_OPT.AddVolumeConstraint() + # VOL_CONSTRN.DefineBy=ResponseConstraintDefineBy.Constant + # VOL_CONSTRN.PercentageToRetain=50 + + # Insert member size manufacturing constraint + + MEM_SIZE_MFG_CONSTRN = TOPO_OPT.AddMemberSizeManufacturingConstraint() + MEM_SIZE_MFG_CONSTRN.Minimum = ManuMemberSizeControlledType.Manual + MEM_SIZE_MFG_CONSTRN.MinSize = Quantity("2.4 [m]") + + # # Store coordinate system ID for use in symmetry manufacturing constraint + # Coordinate_Systems = DataModel.Project.Model.CoordinateSystems + # coord_sys7 = Coordinate_Systems.Children[7] + + # # Insert symmetry manufacturing constraint + # SYMM_MFG_CONSTRN = TOPO_OPT.AddSymmetryManufacturingConstraint() + # SYMM_MFG_CONSTRN.CoordinateSystem = coord_sys7 + + TOPO_OPT.Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p + ) + display_image("boundary_conditions.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_003.png + :alt: topology optimization cantilever beam + :srcset: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 163-165 + +Solve +~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 165-169 + +.. code-block:: Python + + + TOPO_OPT_SLN = TOPO_OPT.Solution + TOPO_OPT_SLN.Solve(True) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 173-175 + +Messages +~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 175-183 + +.. code-block:: Python + + + Messages = ExtAPI.Application.Messages + if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") + else: + print("No [Info]/[Warning]/[Error] Messages") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + [Info] For Mass, Volume, Center of Gravity or Moment of Inertia Response constraints, it is recommended to use Criterion objects in Measures object (inserted from Model Object). + [Warning] The default mesh size calculations have changed in 18.2. Specifically, the default min size values and/or defeature size values scale dynamically in relation to the element (max face) size. These settings could lead to a significantly different mesh, so the model will be resumed using the previous values for min size and defeature size rather than leaving those values as default. + + + + +.. GENERATED FROM PYTHON SOURCE LINES 184-186 + +Display results +~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 186-190 + +.. code-block:: Python + + + TOPO_OPT_SLN.Children[1].Activate() + TOPO_DENS = TOPO_OPT_SLN.Children[1] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 191-192 + +Add smoothing to the STL + +.. GENERATED FROM PYTHON SOURCE LINES 192-202 + +.. code-block:: Python + + + TOPO_DENS.AddSmoothing() + TOPO_OPT.Solution.EvaluateAllResults() + TOPO_DENS.Children[0].Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "topo_opitimized_smooth.png"), image_export_format, settings_720p + ) + display_image("topo_opitimized_smooth.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_004.png + :alt: topology optimization cantilever beam + :srcset: /examples/basic/images/sphx_glr_topology_optimization_cantilever_beam_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 203-204 + +Export animation + +.. GENERATED FROM PYTHON SOURCE LINES 204-216 + +.. code-block:: Python + + + animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF + ) + settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() + settings_720p.Width = 1280 + settings_720p.Height = 720 + + TOPO_DENS.ExportAnimation( + os.path.join(cwd, "Topo_opitimized.gif"), animation_export_format, settings_720p + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 217-218 + +.. image:: /_static/basic/Topo_opitimized.gif + +.. GENERATED FROM PYTHON SOURCE LINES 220-221 + +Review the results + +.. GENERATED FROM PYTHON SOURCE LINES 221-234 + +.. code-block:: Python + + + # Print topology density results + print("Topology Density Results") + print("Minimum Density: ", TOPO_DENS.Minimum) + print("Maximum Density: ", TOPO_DENS.Maximum) + print("Iteration Number: ", TOPO_DENS.IterationNumber) + print("Original Volume: ", TOPO_DENS.OriginalVolume.Value) + print("Final Volume: ", TOPO_DENS.FinalVolume.Value) + print("Percent Volume of Original: ", TOPO_DENS.PercentVolumeOfOriginal) + print("Original Mass: ", TOPO_DENS.OriginalMass.Value) + print("Final Mass: ", TOPO_DENS.FinalMass.Value) + print("Percent Mass of Original: ", TOPO_DENS.PercentMassOfOriginal) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Topology Density Results + Minimum Density: 0.0010000000474974513 + Maximum Density: 1.0 + Iteration Number: 35 + Original Volume: 1000.0000054389238 + Final Volume: 522.4924773573875 + Percent Volume of Original: 52.24924745155908 + Original Mass: 7849999.975463867 + Final Mass: 4101565.9057617188 + Percent Mass of Original: 52.24924737046705 + + + + +.. GENERATED FROM PYTHON SOURCE LINES 235-237 + +Display output file from solve +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 237-251 + +.. code-block:: Python + + + + def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + + solve_path = TOPO_OPT.WorkingDir + solve_out_path = os.path.join(solve_path, "solve.out") + if solve_out_path: + write_file_contents_to_console(solve_out_path) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + Ansys Mechanical Enterprise + + + *------------------------------------------------------------------* + | | + | W E L C O M E T O T H E A N S Y S (R) P R O G R A M | + | | + *------------------------------------------------------------------* + + + + + *************************************************************** + * ANSYS MAPDL 2024 R1 LEGAL NOTICES * + *************************************************************** + * * + * Copyright 1971-2024 Ansys, Inc. All rights reserved. * + * Unauthorized use, distribution or duplication is * + * prohibited. * + * * + * Ansys is a registered trademark of Ansys, Inc. or its * + * subsidiaries in the United States or other countries. * + * See the Ansys, Inc. online documentation or the Ansys, Inc. * + * documentation CD or online help for the complete Legal * + * Notice. * + * * + *************************************************************** + * * + * THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION * + * INCLUDE TRADE SECRETS AND CONFIDENTIAL AND PROPRIETARY * + * PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. * + * The software products and documentation are furnished by * + * Ansys, Inc. or its subsidiaries under a software license * + * agreement that contains provisions concerning * + * non-disclosure, copying, length and nature of use, * + * compliance with exporting laws, warranties, disclaimers, * + * limitations of liability, and remedies, and other * + * provisions. The software products and documentation may be * + * used, disclosed, transferred, or copied only in accordance * + * with the terms and conditions of that software license * + * agreement. * + * * + * Ansys, Inc. is a UL registered * + * ISO 9001:2015 company. * + * * + *************************************************************** + * * + * This product is subject to U.S. laws governing export and * + * re-export. * + * * + * For U.S. Government users, except as specifically granted * + * by the Ansys, Inc. software license agreement, the use, * + * duplication, or disclosure by the United States Government * + * is subject to restrictions stated in the Ansys, Inc. * + * software license agreement and FAR 12.212 (for non-DOD * + * licenses). * + * * + *************************************************************** + + 2024 R1 + + Point Releases and Patches installed: + + Ansys, Inc. License Manager 2024 R1 + Structures 2024 R1 + LS-DYNA 2024 R1 + Mechanical Products 2024 R1 + + + ***** MAPDL COMMAND LINE ARGUMENTS ***** + INITIAL JOBNAME = file + BATCH MODE REQUESTED (-b) = LIST + INPUT FILE COPY MODE (-c) = COPY + DISTRIBUTED MEMORY PARALLEL REQUESTED + 4 PARALLEL PROCESSES REQUESTED WITH SINGLE THREAD PER PROCESS + TOTAL OF 4 CORES REQUESTED + INPUT FILE NAME = /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization/ds.dat + OUTPUT FILE NAME = /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization/solve.out + + RELEASE= 2024 R1 BUILD= 24.1 UP20231106 VERSION=LINUX x64 + CURRENT JOBNAME=file0 03:05:54 FEB 02, 2024 CP= 0.232 + + 1 /batch + 2 /config,noeldb,1 ! force off writing results to database + 3 ! Ansys input file written by Workbench version 2024 R1 + 4 + 5 *GET,numcpu,active,0,NUMCPU + 6 *cfopen,numCPU,dat + 7 *VWRITE,numcpu + 8 (F8.0) + 9 *cfclose + 10 /SYS,"/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 NEW + 11 + 12 /CLEAR,NOSTART + 13 /FILNAME,file_Static20 + 14 resume,,db + 15 esel,u,ename,,153,156 + 16 esel,r,sfe,pres,-1e100,1e100 + 17 *get,_numsfeelem,elem,0,count + 18 *if,_numsfeelem,ne,0,then + 19 allsel + 20 /solu + 21 bfedele,all, TEMP ! Deletes temperature based body load + 22 bfdele,all, TEMP ! Deletes temperature based body load + 23 acel,0.0,0.0,0.0 ! Deletes linear acceleration + 24 cgom,0.0,0.0,0.0 ! Deletes rotational velocity + 25 dcgomg,0.0,0.0,0.0 ! Deletes rotational acceleration + 26 rescontrol,,none ! No multiframe restarts file + 27 /com,******************* SOLVE FOR LS 1 **************** + 28 outres,erase + 29 outres,all,none + 30 outres,nsol,last + 31 outres,eangl,last + 32 outres,etmp,last + 33 outres,veng,last + 34 outres,nload,last ! Output nodal forces at all time points for Topology Optimization future intent + 35 ! *********** WB SOLVE COMMAND *********** + 36 ! check interactive state + 37 *get,ANSINTER_,active,,int + 38 *if,ANSINTER_,ne,0,then + 39 /eof + 40 *endif + 41 nsubst,1,1,1 + 42 ematwrite,yes + 43 psolve,elform,topo + 44 *GET,numcpu,active,0,NUMCPU + 45 *cfopen,numCPU,dat + 46 *VWRITE,numcpu + 47 (F8.0) + 48 *cfclose + 49 fini + 50 /SYS,"/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 PRES1 + 51 /solu + 52 /com,**************************************************** + 53 /com,*************** FINISHED SOLVE FOR LS 1 ************* + 54 *get,_wallasol,active,,time,wall + 55 + 56 *else + 57 /SYS,"/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 PRES1 + 58 *endif + 59 + 60 *DIM,notconverged_array,,1 + 61 *vread,notconverged_array(1),notconverged,dat + 62 (F8.0) + 63 *SET,notconverged,notconverged_array(1) + 64 *if,notconverged,ne,1,then + 65 /eof + 66 *endif + 67 *dowhile,notconverged + 68 /CLEAR,NOSTART + 69 /FILNAME,file_Static20 + 70 resume,,db + 71 /config,resuprec,0 ! We read the element nodal forces (ENF) from the rst file + 72 ! and need these values in double precision + 73 /solu + 74 rescontrol,,none ! No multiframe restarts file + 75 /com,******************* SOLVE FOR LS 1 **************** + 76 outres,erase + 77 outres,all,none + 78 outres,nsol,last + 79 outres,eangl,last + 80 outres,etmp,last + 81 outres,veng,last + 82 outres,nload,last ! Output nodal forces at all time points for Topology Optimization future intent + 83 ! *********** WB SOLVE COMMAND *********** + 84 ! check interactive state + 85 *get,ANSINTER_,active,,int + 86 *if,ANSINTER_,ne,0,then + 87 /eof + 88 *endif + 89 outres, rsol,last + 90 ncnv,,1e+12 + 91 DMPOPTION,rst,no + 92 TOTYPE,EXTERNAL ! Activates modification of element stiffness matrices + 93 solve + 94 /com,**************************************************** + 95 /com,*************** FINISHED SOLVE FOR LS 1 ************* + 96 *get,_wallasol,active,,time,wall + 97 + 98 *GET,numcpu,active,0,NUMCPU + 99 *cfopen,numCPU,dat + 100 *VWRITE,numcpu + 101 (F8.0) + 102 *cfclose + 103 finish + 104 + 105 /SYS,"/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 TOPO1 + 106 + 107 *DIM,notconverged_array,,1 + 108 *vread,notconverged_array(1),notconverged,dat + 109 (F8.0) + 110 *SET,notconverged,notconverged_array(1) + 111 *ENDDO + 112 /exit,nosave + + RUN SETUP PROCEDURE FROM FILE= /install/ansys_inc/v241/ansys/apdl/start.ans + + /INPUT FILE= /install/ansys_inc/v241/ansys/apdl/start.ans LINE= 0 + + + + *** NOTE *** CP = 0.304 TIME= 03:05:54 + The /CONFIG,NOELDB command is not valid in a distributed memory + parallel solution. Command is ignored. + + *GET NUMCPU FROM ACTI ITEM=NUMC VALUE= 4.00000000 + + OPENED FILE= numCPU.dat FOR COMMAND FILE DATA + + + COMMAND FILE CLOSED + + + SYSTEM= + "/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 NEW + + + CLEAR MAPDL DATABASE AND RESTART + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + *** NOTE *** CP = 0.335 TIME= 03:05:54 + The defined jobname (file_Static20) contains a numeric value (0->9) for + the last character. Therefore, when creating local solution files, + the distributed memory parallel solver will append an underscore to + the jobname prior to appending the MPI rank. + + RESUME ANSYS DATA FROM FILE NAME=file_Static20.db + + *** MAPDL GLOBAL STATUS *** + + TITLE = --Static Structural (B5) + ANALYSIS TYPE = STATIC (STEADY-STATE) + 1 ELEM TYPES DEFINED MAX ELEM TYPE NUMBER = 1 + 4000 ELEMENTS DEFINED MAX ELEMENT NUMBER = 4000 + 12261 NODES DEFINED MAX NODE NUMBER = 12261 + 1 MATERIALS DEFINED MAX MATERIAL NUMBER = 1 + 1 REAL CONSTS DEFINED MAX REAL CONST NUMBER = 1 + 0 SECTIONS DEFINED MAX SECTION NUMBER = 0 + 8 COORD SYS DEFINED MAX COORD SYS NUMBER = 19 + + ACTIVE COORDINATE SYSTEM = 0 (CARTESIAN) + NUMBER OF DEFINED NODAL CONSTRAINTS = 202 + NUMBER OF DEFINED NODAL LOADS = 2 + NUMBER OF DEFINED COMPONENTS = 17 + NUMBER OF DEFINED ELEM SURFACE LOADS = 0 + NUMBER OF DEFINED ELEM BODY LOADS = 0 + NUMBER OF DEFINED NODE BODY FORCES = 0 + + INITIAL JOBNAME = file + CURRENT JOBNAME = file_Static20 + + UNSELECT FOR ITEM=ENAM COMPONENT= + IN RANGE 153 TO 156 STEP 1 + + 4000 ELEMENTS (OF 4000 DEFINED) SELECTED BY ESEL COMMAND. + + RESELECT FOR ITEM=SFE COMPONENT=PRES BETWEEN-0.10000+101 AND 0.10000+101 + KABS= 0. TOLERANCE= 0.00000 + + 0 ELEMENTS (OF 4000 DEFINED) SELECTED BY ESEL COMMAND. + + *GET _NUMSFEELEM FROM ELEM ITEM=COUN VALUE= 0.00000000 + + *IF _numsfeelem ( = 0.00000 ) NE + 0 ( = 0.00000 ) THEN + + *ELSE + + SYSTEM= + "/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 PRES1 + + + *ENDIF + + SET PARAMETER DIMENSIONS ON NOTCONVERGED_ARRAY + TYPE=ARRA DIMENSIONS= 1 1 1 + + VECTOR READ OPERATION *VREAD + notconve READ FROM FILE notconverged.dat + VECTOR LENGTH= 1 + LOOP DIRECTIONS=IJK COUNTS= 1 1 1 + FORMAT=(F8.0) + + PARAMETER NOTCONVERGED = 1.000000000 + + *IF notconverged ( = 1.00000 ) NE + 1 ( = 1.00000 ) THEN + + *ENDIF + + *DOWHILE LOOP ON PARAMETER= NOTCONVERGED + + CLEAR MAPDL DATABASE AND RESTART + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + *** NOTE *** CP = 0.614 TIME= 03:05:54 + The defined jobname (file_Static20) contains a numeric value (0->9) for + the last character. Therefore, when creating local solution files, + the distributed memory parallel solver will append an underscore to + the jobname prior to appending the MPI rank. + + RESUME ANSYS DATA FROM FILE NAME=file_Static20.db + + *** MAPDL GLOBAL STATUS *** + + TITLE = --Static Structural (B5) + ANALYSIS TYPE = STATIC (STEADY-STATE) + 1 ELEM TYPES DEFINED MAX ELEM TYPE NUMBER = 1 + 4000 ELEMENTS DEFINED MAX ELEMENT NUMBER = 4000 + 12261 NODES DEFINED MAX NODE NUMBER = 12261 + 1 MATERIALS DEFINED MAX MATERIAL NUMBER = 1 + 1 REAL CONSTS DEFINED MAX REAL CONST NUMBER = 1 + 0 SECTIONS DEFINED MAX SECTION NUMBER = 0 + 8 COORD SYS DEFINED MAX COORD SYS NUMBER = 19 + + ACTIVE COORDINATE SYSTEM = 0 (CARTESIAN) + NUMBER OF DEFINED NODAL CONSTRAINTS = 202 + NUMBER OF DEFINED NODAL LOADS = 2 + NUMBER OF DEFINED COMPONENTS = 17 + NUMBER OF DEFINED ELEM SURFACE LOADS = 0 + NUMBER OF DEFINED ELEM BODY LOADS = 0 + NUMBER OF DEFINED NODE BODY FORCES = 0 + + INITIAL JOBNAME = file + CURRENT JOBNAME = file_Static20 + + + USE DOUBLE PRECISION RESULTS FILE FORMAT + + ***** MAPDL SOLUTION ROUTINE ***** + + DO NOT SAVE ANY RESTART FILES AT ALL + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + WRITE ALL ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE + FOR ALL APPLICABLE ENTITIES + + WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + WRITE ETMP ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + WRITE NLOA ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + *GET ANSINTER_ FROM ACTI ITEM=INT VALUE= 0.00000000 + + *IF ANSINTER_ ( = 0.00000 ) NE + 0 ( = 0.00000 ) THEN + + *ENDIF + + WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF LAST + FOR ALL APPLICABLE ENTITIES + + KEY TO TERMINATE RUN IF NO CONVERGENCE= 1 + DEGREE OF FREEDOM (DISPLACEMENT) LIMIT= 0.10000E+13 + CUMULATIVE ITERATION LIMIT= 0 + ELAPSED TIME LIMIT (SEC)= 0.0000 ( 0 HOURS 0 MIN) + CPU TIME LIMIT (SEC)= 0.0000 ( 0 HOURS 0 MIN) + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + SET TOPOLOGICAL OPTIMIZATION METHOD TO EXTERNALLY SUPPLIED METHOD + + *** NOTE *** CP = 0.738 TIME= 03:05:54 + The automatic domain decomposition logic has selected the MESH domain + decomposition method with 4 processes per solution. + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 0.761 TIME= 03:05:54 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** NOTE *** CP = 0.794 TIME= 03:05:54 + The model data was checked and warning messages were found. + Please review output or errors file ( + /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mec + ch_Files/StructuralOptimization/file0.err ) for these warning messages. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:54 FEB 02, 2024 CP= 0.797 + + --Static Structural (B5) + + + + S O L U T I O N O P T I O N S + + PROBLEM DIMENSIONALITY. . . . . . . . . . . . .2-D + DEGREES OF FREEDOM. . . . . . UX UY + ANALYSIS TYPE . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE) + OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . . 273.15 + EQUATION SOLVER OPTION. . . . . . . . . . . . .SPARSE + GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC + + *** NOTE *** CP = 0.831 TIME= 03:05:54 + The conditions for direct assembly have been met. No .emat or .erot + files will be produced. + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + 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 + PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT + DATABASE OUTPUT CONTROLS + ITEM FREQUENCY COMPONENT + ALL NONE + NSOL LAST + EANG LAST + ETMP LAST + VENG LAST + NLOA LAST + RSOL LAST + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.314 0.000079 + Time at end of element matrix formulation CP = 1.25069296. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 1.293 TIME= 03:05:55 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 1.122 + Factor Done= 100% Factor Wall sec= 0.030 rate= 2.9 GFlops + Distributed sparse solver maximum pivot= 8.498134039E+11 at node 4183 + UX. + Distributed sparse solver minimum pivot= 4.475744808E+09 at node 975 + UY. + Distributed sparse solver minimum pivot in absolute value= + 4.475744808E+09 at node 975 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + *GET _WALLASOL FROM ACTI ITEM=TIME WALL VALUE= 3.09861111 + + *GET NUMCPU FROM ACTI ITEM=NUMC VALUE= 4.00000000 + + OPENED FILE= numCPU.dat FOR COMMAND FILE DATA + + + COMMAND FILE CLOSED + + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 1.404 + + + + SYSTEM= + "/install/ansys_inc/v241/aisol/CommonFiles/linx64/Opti.exe" 44667 TOPO1 + + + SET PARAMETER DIMENSIONS ON NOTCONVERGED_ARRAY + TYPE=ARRA DIMENSIONS= 1 1 1 + + VECTOR READ OPERATION *VREAD + notconve READ FROM FILE notconverged.dat + VECTOR LENGTH= 1 + LOOP DIRECTIONS=IJK COUNTS= 1 1 1 + FORMAT=(F8.0) + + PARAMETER NOTCONVERGED = 1.000000000 + + *ENDDO INDEX= NOTCONVERGED + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 1.499 TIME= 03:05:55 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:55 FEB 02, 2024 CP= 1.547 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.286 0.000072 + Time at end of element matrix formulation CP = 1.96983004. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 2.025 TIME= 03:05:55 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 1.847 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.498134039E+11 at node 4183 + UX. + Distributed sparse solver minimum pivot= 1.908976253E+09 at node 137 + UY. + Distributed sparse solver minimum pivot in absolute value= + 1.908976253E+09 at node 137 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 2.125 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 2.181 TIME= 03:05:55 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:55 FEB 02, 2024 CP= 2.201 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.198 0.000050 + Time at end of element matrix formulation CP = 2.40498495. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 2.494 TIME= 03:05:56 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 2.399 + Factor Done= 100% Factor Wall sec= 0.027 rate= 3.2 GFlops + Distributed sparse solver maximum pivot= 8.498134039E+11 at node 4183 + UX. + Distributed sparse solver minimum pivot= 192206.996 at node 11239 UX. + Distributed sparse solver minimum pivot in absolute value= 192206.996 + at node 11239 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.112 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 2.687 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 2.767 TIME= 03:05:56 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:56 FEB 02, 2024 CP= 2.799 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.261 0.000065 + Time at end of element matrix formulation CP = 3.12159991. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 3.250 TIME= 03:05:56 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 3.071 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 224.500092 at node 3329 UX. + Distributed sparse solver minimum pivot in absolute value= 224.500092 + at node 3329 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 3.349 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 3.406 TIME= 03:05:56 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:56 FEB 02, 2024 CP= 3.427 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.194 0.000048 + Time at end of element matrix formulation CP = 3.64867306. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 3.737 TIME= 03:05:56 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 3.641 + Factor Done= 100% Factor Wall sec= 0.021 rate= 4.2 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.112 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 3.919 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 4.001 TIME= 03:05:57 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:57 FEB 02, 2024 CP= 4.033 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.251 0.000063 + Time at end of element matrix formulation CP = 4.36449194. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 4.483 TIME= 03:05:57 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 4.305 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 4.582 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 4.639 TIME= 03:05:57 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:57 FEB 02, 2024 CP= 4.659 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.218 0.000054 + Time at end of element matrix formulation CP = 4.88631487. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 5.063 TIME= 03:05:57 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 4.888 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 5.166 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 5.223 TIME= 03:05:58 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:58 FEB 02, 2024 CP= 5.244 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.236 0.000059 + Time at end of element matrix formulation CP = 5.50579596. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 5.661 TIME= 03:05:58 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 5.483 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 5.761 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 5.833 TIME= 03:05:58 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:58 FEB 02, 2024 CP= 5.865 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.291 0.000073 + Time at end of element matrix formulation CP = 6.30347776. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 6.338 TIME= 03:05:58 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 6.160 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 6.438 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 6.494 TIME= 03:05:59 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:59 FEB 02, 2024 CP= 6.515 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 6.73790598. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 6.866 TIME= 03:05:59 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 6.734 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 7.011 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 7.068 TIME= 03:05:59 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:59 FEB 02, 2024 CP= 7.089 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.196 0.000049 + Time at end of element matrix formulation CP = 7.31300211. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 7.425 TIME= 03:05:59 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 7.307 + Factor Done= 100% Factor Wall sec= 0.024 rate= 3.6 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 7.585 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 7.642 TIME= 03:05:59 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:05:59 FEB 02, 2024 CP= 7.663 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 7.88481569. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 7.973 TIME= 03:05:59 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 7.877 + Factor Done= 100% Factor Wall sec= 0.021 rate= 4.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.113 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 8.155 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 8.230 TIME= 03:06:00 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:00 FEB 02, 2024 CP= 8.263 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.220 0.000055 + Time at end of element matrix formulation CP = 8.57364845. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 8.710 TIME= 03:06:00 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 8.531 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 8.809 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 8.866 TIME= 03:06:00 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:00 FEB 02, 2024 CP= 8.887 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.235 0.000059 + Time at end of element matrix formulation CP = 9.14777374. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 9.306 TIME= 03:06:00 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 9.129 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 9.406 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 9.505 TIME= 03:06:01 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:01 FEB 02, 2024 CP= 9.554 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.312 0.000078 + Time at end of element matrix formulation CP = 9.97681427. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 10.030 TIME= 03:06:01 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 9.852 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 10.129 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 10.186 TIME= 03:06:01 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:01 FEB 02, 2024 CP= 10.206 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.198 0.000049 + Time at end of element matrix formulation CP = 10.4272232. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 10.539 TIME= 03:06:01 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 10.423 + Factor Done= 100% Factor Wall sec= 0.024 rate= 3.6 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 10.700 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 10.757 TIME= 03:06:02 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:02 FEB 02, 2024 CP= 10.777 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.198 0.000049 + Time at end of element matrix formulation CP = 10.9818249. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 11.070 TIME= 03:06:02 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 10.988 + Factor Done= 100% Factor Wall sec= 0.039 rate= 2.2 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 11.266 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 11.322 TIME= 03:06:02 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:02 FEB 02, 2024 CP= 11.342 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.220 0.000055 + Time at end of element matrix formulation CP = 11.5666523. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 11.751 TIME= 03:06:02 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 11.573 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.501612847E+11 at node 11376 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.109 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 11.850 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 11.908 TIME= 03:06:02 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:02 FEB 02, 2024 CP= 11.928 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.199 0.000050 + Time at end of element matrix formulation CP = 12.1517467. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 12.264 TIME= 03:06:03 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 12.146 + Factor Done= 100% Factor Wall sec= 0.020 rate= 4.4 GFlops + Distributed sparse solver maximum pivot= 8.510798055E+11 at node 4684 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.113 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 12.424 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 12.504 TIME= 03:06:03 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:03 FEB 02, 2024 CP= 12.537 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.273 0.000068 + Time at end of element matrix formulation CP = 12.8874989. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 12.995 TIME= 03:06:03 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 12.816 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.51944378E+11 at node 4684 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 13.094 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 13.193 TIME= 03:06:03 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:03 FEB 02, 2024 CP= 13.241 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.313 0.000078 + Time at end of element matrix formulation CP = 13.6649952. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 13.715 TIME= 03:06:04 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 13.537 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.51944378E+11 at node 4684 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.113 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 13.816 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 13.896 TIME= 03:06:04 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:04 FEB 02, 2024 CP= 13.928 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.296 0.000074 + Time at end of element matrix formulation CP = 14.3040562. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 14.386 TIME= 03:06:04 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 14.208 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.519418221E+11 at node 4684 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.112 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 14.486 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 14.544 TIME= 03:06:04 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:04 FEB 02, 2024 CP= 14.565 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 14.7880039. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 14.916 TIME= 03:06:04 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 14.783 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.112 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 15.061 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 15.160 TIME= 03:06:05 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:05 FEB 02, 2024 CP= 15.208 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.279 0.000070 + Time at end of element matrix formulation CP = 15.6232834. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 15.683 TIME= 03:06:05 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 15.505 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.113 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 15.783 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 15.840 TIME= 03:06:05 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:05 FEB 02, 2024 CP= 15.861 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 16.0836143. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 16.172 TIME= 03:06:05 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 16.076 + Factor Done= 100% Factor Wall sec= 0.021 rate= 4.0 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 16.353 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 16.432 TIME= 03:06:05 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:06 FEB 02, 2024 CP= 16.465 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.263 0.000066 + Time at end of element matrix formulation CP = 16.8230953. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 16.922 TIME= 03:06:06 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 16.744 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 17.021 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 17.103 TIME= 03:06:06 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:06 FEB 02, 2024 CP= 17.136 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 17.416605. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 17.576 TIME= 03:06:06 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 17.398 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 17.676 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 17.775 TIME= 03:06:06 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:06 FEB 02, 2024 CP= 17.822 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.305 0.000076 + Time at end of element matrix formulation CP = 18.2362556. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 18.297 TIME= 03:06:07 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 18.119 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 18.396 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 18.495 TIME= 03:06:07 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:07 FEB 02, 2024 CP= 18.542 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.300 0.000075 + Time at end of element matrix formulation CP = 18.9473763. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 19.016 TIME= 03:06:07 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 18.838 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.216034 at node 131 UX. + Distributed sparse solver minimum pivot in absolute value= 101.216034 + at node 131 UX. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.109 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 19.116 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 19.173 TIME= 03:06:07 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:07 FEB 02, 2024 CP= 19.194 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.204 0.000051 + Time at end of element matrix formulation CP = 19.4170837. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 19.505 TIME= 03:06:08 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 19.407 + Factor Done= 100% Factor Wall sec= 0.027 rate= 3.2 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.205088 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 101.205088 + at node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.115 0.000029 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.016 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 19.686 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 19.784 TIME= 03:06:08 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:08 FEB 02, 2024 CP= 19.833 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.310 0.000077 + Time at end of element matrix formulation CP = 20.2506523. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 20.313 TIME= 03:06:08 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 20.134 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.052074 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 101.052074 + at node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.111 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 20.412 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 20.471 TIME= 03:06:08 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:08 FEB 02, 2024 CP= 20.492 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.197 0.000049 + Time at end of element matrix formulation CP = 20.7170887. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 20.829 TIME= 03:06:08 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 20.711 + Factor Done= 100% Factor Wall sec= 0.020 rate= 4.3 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.052061 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 101.052061 + at node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.115 0.000029 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.016 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 20.990 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 21.088 TIME= 03:06:09 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:09 FEB 02, 2024 CP= 21.136 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.293 0.000073 + Time at end of element matrix formulation CP = 21.5243473. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 21.595 TIME= 03:06:09 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 21.416 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.0 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.05188 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 101.05188 at + node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.113 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 21.695 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 21.753 TIME= 03:06:09 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:09 FEB 02, 2024 CP= 21.774 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.235 0.000059 + Time at end of element matrix formulation CP = 22.0330772. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 22.193 TIME= 03:06:09 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 22.014 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 101.051786 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 101.051786 + at node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.110 0.000027 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 22.291 + + + + CLEAR MAPDL DATABASE AND RESTART + + Topology Optimization: released + + + Ansys Mechanical Enterprise + + CURRENT JOBNAME REDEFINED AS file_Static20 + + + + ***** MAPDL SOLUTION ROUTINE ***** + ******************* SOLVE FOR LS 1 **************** + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + DO NOT COMBINE RESULT FILES (.rst, .rth, etc.) AFTER DISTRIBUTED PARALLEL SOLUTION + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 22.364 TIME= 03:06:10 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS PLANE183 WITH PLANE STRESS OPTION. NO SUGGESTION IS + AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:10 FEB 02, 2024 CP= 22.397 + + --Static Structural (B5) + + + + + + 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: 4000 + ...Number of nodes: 12261 + ...Decompose to 4 CPU domains + ...Element load balance ratio = 1.000 + + + Topology Optimization: Multipliers prepared + + + Topology Optimization: Multipliers updated + + + SOLUTION MONITORING INFO IS WRITTEN TO FILE= file_Static20.mntr + + + + + **** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA **** + + CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID + + TOTAL MASS = 0.78500E+07 + + MOM. OF INERTIA MOM. OF INERTIA + CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS + + XC = 20.000 IXX = 0.1635E+10 IXX = 0.4087E+09 + YC = 12.500 IYY = 0.4187E+10 IYY = 0.1047E+10 + ZC = 0.0000 IZZ = 0.5822E+10 IZZ = 0.1455E+10 + IXY = -0.1962E+10 IXY = 0.4123E-02 + IYZ = 0.000 IYZ = 0.000 + IZX = 0.000 IZX = 0.000 + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 0.785000E+07 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 4.259917493E+11 at element 31. + Minimum = 4.249084863E+11 at element 1033. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.246 0.000061 + Time at end of element matrix formulation CP = 22.7447987. + + DISTRIBUTED SPARSE MATRIX DIRECT SOLVER. + Number of equations = 24320, Maximum wavefront = 40 + + Process memory allocated for solver = 11.583 MB + Process memory required for in-core solution = 11.138 MB + Process memory required for out-of-core solution = 6.663 MB + + Total memory allocated for solver = 45.835 MB + Total memory required for in-core solution = 44.072 MB + Total memory required for out-of-core solution = 26.283 MB + + *** NOTE *** CP = 22.854 TIME= 03:06:10 + The Distributed 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. + curEqn= 6132 totEqn= 6132 Job CP sec= 22.675 + Factor Done= 100% Factor Wall sec= 0.012 rate= 7.1 GFlops + Distributed sparse solver maximum pivot= 8.519768656E+11 at node 4690 + UY. + Distributed sparse solver minimum pivot= 100.978483 at node 4374 UY. + Distributed sparse solver minimum pivot in absolute value= 100.978483 + at node 4374 UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.112 0.000028 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 4000 PLANE183 0.015 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 + 1.688 MB WRITTEN ON ASSEMBLED MATRIX FILE: file_Static20_0.full + 1.062 MB WRITTEN ON RESULTS FILE: file_Static20_0.rst + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 22.953 + + + + EXIT MAPDL WITHOUT SAVING DATABASE + + + NUMBER OF WARNING MESSAGES ENCOUNTERED= 35 + NUMBER OF ERROR MESSAGES ENCOUNTERED= 0 + + Topology Optimization: released + + + +--------------------- M A P D L S T A T I S T I C S ------------------------+ + + Release: 2024 R1 Build: 24.1 Update: UP20231106 Platform: LINUX x64 + Date Run: 02/02/2024 Time: 03:06 Process ID: 8074 + Operating System: Ubuntu 20.04.6 LTS + + Processor Model: AMD EPYC 7763 64-Core Processor + + Compiler: Intel(R) Fortran Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) C/C++ Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 + BLAS Library supplied by AMD BLIS + + Number of machines requested : 1 + Total number of cores available : 8 + Number of physical cores available : 4 + Number of processes requested : 4 + Number of threads per process requested : 1 + Total number of cores requested : 4 (Distributed Memory Parallel) + MPI Type: INTELMPI + MPI Version: Intel(R) MPI Library 2021.10 for Linux* OS + + + GPU Acceleration: Not Requested + + Job Name: file_Static20_0 + Input File: ds.dat + + Core Machine Name Working Directory + ----------------------------------------------------- + 0 ccfbd43b13e4 /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization + 1 ccfbd43b13e4 /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization + 2 ccfbd43b13e4 /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization + 3 ccfbd43b13e4 /github/home/.local/share/ansys_mechanical_core/examples/cantilever_Mech_Files/StructuralOptimization + + Latency time from master to core 1 = 2.228 microseconds + Latency time from master to core 2 = 2.178 microseconds + Latency time from master to core 3 = 1.972 microseconds + + Communication speed from master to core 1 = 8461.64 MB/sec + Communication speed from master to core 2 = 13061.44 MB/sec + Communication speed from master to core 3 = 14144.68 MB/sec + + Total CPU time for main thread : 10.6 seconds + Total CPU time summed for all threads : 23.0 seconds + + Elapsed time spent obtaining a license : 0.3 seconds + Elapsed time spent pre-processing model (/PREP7) : 0.0 seconds + Elapsed time spent solution - preprocessing : 2.4 seconds + Elapsed time spent computing solution : 7.8 seconds + Elapsed time spent solution - postprocessing : 0.1 seconds + Elapsed time spent post-processing model (/POST1) : 0.0 seconds + + Equation solver used : Sparse (symmetric) + Equation solver computational rate : 27.5 Gflops + Equation solver effective I/O rate : 741.0 GB/sec + + Sum of disk space used on all processes : 15.2 MB + + Sum of memory used on all processes : 549.0 MB + Sum of memory allocated on all processes : 2880.0 MB + Physical memory available : 31 GB + Total amount of I/O written to disk : 0.0 GB + Total amount of I/O read from disk : 0.0 GB + + +------------------ E N D M A P D L S T A T I S T I C S -------------------+ + + + *-----------------------------------------------------------------------------* + | | + | RUN COMPLETED | + | | + |-----------------------------------------------------------------------------| + | | + | Ansys MAPDL 2024 R1 Build 24.1 UP20231106 LINUX x64 | + | | + |-----------------------------------------------------------------------------| + | | + | Database Requested(-db) 1024 MB Scratch Memory Requested 1024 MB | + | Max Database Used(Master) 7 MB Max Scratch Used(Master) 137 MB | + | Max Database Used(Workers) 1 MB Max Scratch Used(Workers) 134 MB | + | Sum Database Used(All) 10 MB Sum Scratch Used(All) 539 MB | + | | + |-----------------------------------------------------------------------------| + | | + | CP Time (sec) = 22.963 Time = 03:06:11 | + | Elapsed Time (sec) = 18.000 Date = 02/02/2024 | + | | + *-----------------------------------------------------------------------------* + + + + +.. GENERATED FROM PYTHON SOURCE LINES 252-254 + +Project tree +~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 254-271 + +.. code-block:: Python + + + + def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + + root_node = DataModel.Project + print_tree(root_node) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + ├── Project + | ├── Model + | | ├── Geometry Imports + | | | ├── Geometry Import + | | ├── Geometry + | | | ├── Surface Body Bodies + | | | | ├── Surface Body + | | ├── Materials + | | | ├── Structural Steel + | | ├── Coordinate Systems + | | | ├── Global Coordinate System + | | | ├── Coordinate System + | | | ├── Coordinate System 2 + | | | ├── Coordinate System 3 + | | | ├── Coordinate System 4 + | | | ├── Coordinate System 5 + | | | ├── Coordinate System 6 + | | | ├── Coordinate System 7 + | | | ├── Coordinate System 8 + | | ├── Remote Points + | | ├── Mesh + | | | ├── Face Sizing + | | ├── Named Selections + | | | ├── Selection + | | | ├── Bottom_Elements + | | | ├── Top_Elements + | | | ├── Middle1_Elements + | | | ├── Middle2_Elements + | | | ├── Left1_Elements + | | | ├── Left2_Elements + | | | ├── Right1_Elements + | | | ├── Right2_Elements + | | | ├── Optimized_Shape + | | | ├── Outside_Optimized_Shape + | | | ├── Selection 2 + | | | ├── Selection 3 + | | | ├── Selection 4 + | | | ├── Selection 5 + | | ├── Static Structural + | | | ├── Analysis Settings + | | | ├── Fixed Support + | | | ├── Nodal Force + | | | ├── Solution + | | | | ├── Solution Information + | | | | ├── Total Deformation + | | | | ├── Equivalent Stress + | | ├── Structural Optimization + | | | ├── Analysis Settings + | | | ├── Optimization Region + | | | ├── Objective + | | | ├── Response Constraint + | | | ├── Manufacturing Constraint + | | | ├── Solution + | | | | ├── Solution Information + | | | | | ├── Topology Density Tracker + | | | | ├── Topology Density + | | | | | ├── Smoothing + + + + +.. GENERATED FROM PYTHON SOURCE LINES 272-275 + +Cleanup +~~~~~~~ +Save project + +.. GENERATED FROM PYTHON SOURCE LINES 275-279 + +.. code-block:: Python + + + app.save(os.path.join(cwd, "cantilever_beam_topology_optimization.mechdat")) + app.new() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 280-281 + +Delete the example files + +.. GENERATED FROM PYTHON SOURCE LINES 281-283 + +.. code-block:: Python + + + delete_downloads() + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + True + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 36.132 seconds) + + +.. _sphx_glr_download_examples_basic_topology_optimization_cantilever_beam.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: topology_optimization_cantilever_beam.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: topology_optimization_cantilever_beam.py ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/basic/valve.rst.txt b/_sources/examples/basic/valve.rst.txt new file mode 100644 index 00000000..8c1954a7 --- /dev/null +++ b/_sources/examples/basic/valve.rst.txt @@ -0,0 +1,121405 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/basic/valve.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_basic_valve.py: + +.. _ref_basic_valve: + +Basic Valve Implementation +-------------------------- + +This example demonstrates a basic implementation of a valve in Python. + +.. GENERATED FROM PYTHON SOURCE LINES 10-12 + +Import necessary libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 12-22 + +.. code-block:: Python + + + import os + + from PIL import Image + import ansys.mechanical.core as mech + from ansys.mechanical.core.examples import delete_downloads, download_file + from matplotlib import image as mpimg + from matplotlib import pyplot as plt + from matplotlib.animation import FuncAnimation + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 23-24 + +Embed mechanical and set global variables + +.. GENERATED FROM PYTHON SOURCE LINES 24-41 + +.. code-block:: Python + + + app = mech.App(version=241) + globals().update(mech.global_variables(app, True)) + print(app) + + cwd = os.path.join(os.getcwd(), "out") + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Ansys Mechanical [Ansys Mechanical Enterprise] + Product Version:241 + Software build date: 11/27/2023 10:24:20 + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 42-44 + +Configure graphics for image export +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 44-55 + +.. code-block:: Python + + + ExtAPI.Graphics.Camera.SetSpecificViewOrientation(ViewOrientationType.Iso) + image_export_format = GraphicsImageExportFormat.PNG + settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() + settings_720p.Resolution = GraphicsResolutionType.EnhancedResolution + settings_720p.Background = GraphicsBackgroundType.White + settings_720p.Width = 1280 + settings_720p.Height = 720 + settings_720p.CurrentGraphicsDisplay = False + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 56-59 + +Download geometry and import +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Download geometry + +.. GENERATED FROM PYTHON SOURCE LINES 59-62 + +.. code-block:: Python + + + geometry_path = download_file("Valve.pmdb", "pymechanical", "embedding") + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 63-64 + +Import geometry + +.. GENERATED FROM PYTHON SOURCE LINES 64-81 + +.. code-block:: Python + + + geometry_import = Model.GeometryImportGroup.AddGeometryImport() + geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic + ) + geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() + geometry_import_preferences.ProcessNamedSelections = True + geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences + ) + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p + ) + display_image("geometry.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_valve_001.png + :alt: valve + :srcset: /examples/basic/images/sphx_glr_valve_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 82-84 + +Assign materials and mesh the geometry +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 84-97 + +.. code-block:: Python + + material_assignment = Model.Materials.AddMaterialAssignment() + material_assignment.Material = "Structural Steel" + sel = ExtAPI.SelectionManager.CreateSelectionInfo( + Ansys.ACT.Interfaces.Common.SelectionTypeEnum.GeometryEntities + ) + sel.Ids = [ + body.GetGeoBody().Id + for body in Model.Geometry.GetChildren( + Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body, True + ) + ] + material_assignment.Location = sel + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 98-99 + +Define mesh settings, generate mesh + +.. GENERATED FROM PYTHON SOURCE LINES 99-109 + +.. code-block:: Python + + + mesh = Model.Mesh + mesh.ElementSize = Quantity(25, "mm") + mesh.GenerateMesh() + Tree.Activate([mesh]) + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "mesh.png"), image_export_format, settings_720p + ) + display_image("mesh.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_valve_002.png + :alt: valve + :srcset: /examples/basic/images/sphx_glr_valve_002.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 110-112 + +Define analysis and boundary conditions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 112-136 + +.. code-block:: Python + + + analysis = Model.AddStaticStructuralAnalysis() + + fixed_support = analysis.AddFixedSupport() + fixed_support.Location = ExtAPI.DataModel.GetObjectsByName("NSFixedSupportFaces")[0] + + frictionless_support = analysis.AddFrictionlessSupport() + frictionless_support.Location = ExtAPI.DataModel.GetObjectsByName( + "NSFrictionlessSupportFaces" + )[0] + + pressure = analysis.AddPressure() + pressure.Location = ExtAPI.DataModel.GetObjectsByName("NSInsideFaces")[0] + + pressure.Magnitude.Inputs[0].DiscreteValues = [Quantity("0 [s]"), Quantity("1 [s]")] + pressure.Magnitude.Output.DiscreteValues = [Quantity("0 [Pa]"), Quantity("15 [MPa]")] + + analysis.Activate() + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "boundary_conditions.png"), image_export_format, settings_720p + ) + display_image("boundary_conditions.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_valve_003.png + :alt: valve + :srcset: /examples/basic/images/sphx_glr_valve_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 137-140 + +Solve +~~~~~ +Solve process settings + +.. GENERATED FROM PYTHON SOURCE LINES 140-145 + +.. code-block:: Python + + + config = ExtAPI.Application.SolveConfigurations["My Computer"] + config.SolveProcessSettings.MaxNumberOfCores = 1 + config.SolveProcessSettings.DistributeSolution = False + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 146-147 + +Add results + +.. GENERATED FROM PYTHON SOURCE LINES 147-152 + +.. code-block:: Python + + + solution = analysis.Solution + deformation = solution.AddTotalDeformation() + stress = solution.AddEquivalentStress() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 153-154 + +Solve + +.. GENERATED FROM PYTHON SOURCE LINES 154-158 + +.. code-block:: Python + + + solution.Solve(True) + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 162-164 + +Messages +~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 164-172 + +.. code-block:: Python + + + Messages = ExtAPI.Application.Messages + if Messages: + for message in Messages: + print(f"[{message.Severity}] {message.DisplayString}") + else: + print("No [Info]/[Warning]/[Error] Messages") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + No [Info]/[Warning]/[Error] Messages + + + + +.. GENERATED FROM PYTHON SOURCE LINES 173-175 + +Results +~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 175-186 + +.. code-block:: Python + + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 187-188 + +Total deformation + +.. GENERATED FROM PYTHON SOURCE LINES 188-195 + +.. code-block:: Python + + + Tree.Activate([deformation]) + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "totaldeformation_valve.png"), image_export_format, settings_720p + ) + display_image("totaldeformation_valve.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_valve_004.png + :alt: valve + :srcset: /examples/basic/images/sphx_glr_valve_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 196-197 + +Stress + +.. GENERATED FROM PYTHON SOURCE LINES 197-204 + +.. code-block:: Python + + + Tree.Activate([stress]) + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "stress_valve.png"), image_export_format, settings_720p + ) + display_image("stress_valve.png") + + + + +.. image-sg:: /examples/basic/images/sphx_glr_valve_005.png + :alt: valve + :srcset: /examples/basic/images/sphx_glr_valve_005.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 205-206 + +Export stress animation + +.. GENERATED FROM PYTHON SOURCE LINES 206-234 + +.. code-block:: Python + + + animation_export_format = ( + Ansys.Mechanical.DataModel.Enums.GraphicsAnimationExportFormat.GIF + ) + settings_720p = Ansys.Mechanical.Graphics.AnimationExportSettings() + settings_720p.Width = 1280 + settings_720p.Height = 720 + + stress.ExportAnimation( + os.path.join(cwd, "Valve.gif"), animation_export_format, settings_720p + ) + gif = Image.open(os.path.join(cwd, "Valve.gif")) + fig, ax = plt.subplots(figsize=(16, 9)) + ax.axis("off") + img = ax.imshow(gif.convert("RGBA")) + + + def update(frame): + gif.seek(frame) + img.set_array(gif.convert("RGBA")) + return [img] + + + ani = FuncAnimation( + fig, update, frames=range(gif.n_frames), interval=100, repeat=True, blit=True + ) + plt.show() + + + + +.. container:: sphx-glr-animation + + .. raw:: html + + + + + + + +
+ +
+ +
+ + + + + + + + + +
+
+ + + + + + +
+
+
+ + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 235-237 + +Display output file from solve +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 237-251 + +.. code-block:: Python + + + + def write_file_contents_to_console(path): + """Write file contents to console.""" + with open(path, "rt") as file: + for line in file: + print(line, end="") + + + solve_path = analysis.WorkingDir + solve_out_path = os.path.join(solve_path, "solve.out") + if solve_out_path: + write_file_contents_to_console(solve_out_path) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + Ansys Mechanical Enterprise + + + *------------------------------------------------------------------* + | | + | W E L C O M E T O T H E A N S Y S (R) P R O G R A M | + | | + *------------------------------------------------------------------* + + + + + *************************************************************** + * ANSYS MAPDL 2024 R1 LEGAL NOTICES * + *************************************************************** + * * + * Copyright 1971-2024 Ansys, Inc. All rights reserved. * + * Unauthorized use, distribution or duplication is * + * prohibited. * + * * + * Ansys is a registered trademark of Ansys, Inc. or its * + * subsidiaries in the United States or other countries. * + * See the Ansys, Inc. online documentation or the Ansys, Inc. * + * documentation CD or online help for the complete Legal * + * Notice. * + * * + *************************************************************** + * * + * THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION * + * INCLUDE TRADE SECRETS AND CONFIDENTIAL AND PROPRIETARY * + * PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. * + * The software products and documentation are furnished by * + * Ansys, Inc. or its subsidiaries under a software license * + * agreement that contains provisions concerning * + * non-disclosure, copying, length and nature of use, * + * compliance with exporting laws, warranties, disclaimers, * + * limitations of liability, and remedies, and other * + * provisions. The software products and documentation may be * + * used, disclosed, transferred, or copied only in accordance * + * with the terms and conditions of that software license * + * agreement. * + * * + * Ansys, Inc. is a UL registered * + * ISO 9001:2015 company. * + * * + *************************************************************** + * * + * This product is subject to U.S. laws governing export and * + * re-export. * + * * + * For U.S. Government users, except as specifically granted * + * by the Ansys, Inc. software license agreement, the use, * + * duplication, or disclosure by the United States Government * + * is subject to restrictions stated in the Ansys, Inc. * + * software license agreement and FAR 12.212 (for non-DOD * + * licenses). * + * * + *************************************************************** + + + AFTER YOU HAVE READ, UNDERSTOOD, AND AGREED TO THE PREVIOUS NOTICES, + PRESS OR TO CONTINUE + 2024 R1 + + Point Releases and Patches installed: + + Ansys, Inc. License Manager 2024 R1 + Structures 2024 R1 + LS-DYNA 2024 R1 + Mechanical Products 2024 R1 + + + ***** MAPDL COMMAND LINE ARGUMENTS ***** + BATCH MODE REQUESTED (-b) = NOLIST + INPUT FILE COPY MODE (-c) = COPY + SHARED MEMORY PARALLEL REQUESTED + SINGLE PROCESS WITH SINGLE THREAD REQUESTED + TOTAL OF 1 CORES REQUESTED + INPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/dummy.dat + OUTPUT FILE NAME = /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/solve.out + START-UP FILE MODE = NOREAD + STOP FILE MODE = NOREAD + + RELEASE= 2024 R1 BUILD= 24.1 UP20231106 VERSION=LINUX x64 + CURRENT JOBNAME=file 03:06:21 FEB 02, 2024 CP= 0.223 + + + PARAMETER _DS_PROGRESS = 999.0000000 + + /INPUT FILE= ds.dat LINE= 0 + + + + DO NOT WRITE ELEMENT RESULTS INTO DATABASE + + *GET _WALLSTRT FROM ACTI ITEM=TIME WALL VALUE= 3.10583333 + + TITLE= + --Static Structural + + + SET PARAMETER DIMENSIONS ON _WB_PROJECTSCRATCH_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_PROJECTSCRATCH_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/ + + SET PARAMETER DIMENSIONS ON _WB_SOLVERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_SOLVERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/ + + SET PARAMETER DIMENSIONS ON _WB_USERFILES_DIR + TYPE=STRI DIMENSIONS= 248 1 1 + + PARAMETER _WB_USERFILES_DIR(1) = /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/UserFiles/ + --- Data in consistent MKS units. See Solving Units in the help system for more + + MKS UNITS SPECIFIED FOR INTERNAL + LENGTH (l) = METER (M) + MASS (M) = KILOGRAM (KG) + TIME (t) = SECOND (SEC) + TEMPERATURE (T) = CELSIUS (C) + TOFFSET = 273.0 + CHARGE (Q) = COULOMB + FORCE (f) = NEWTON (N) (KG-M/SEC2) + HEAT = JOULE (N-M) + + PRESSURE = PASCAL (NEWTON/M**2) + ENERGY (W) = JOULE (N-M) + POWER (P) = WATT (N-M/SEC) + CURRENT (i) = AMPERE (COULOMBS/SEC) + CAPACITANCE (C) = FARAD + INDUCTANCE (L) = HENRY + MAGNETIC FLUX = WEBER + RESISTANCE (R) = OHM + ELECTRIC POTENTIAL = VOLT + + INPUT UNITS ARE ALSO SET TO MKS + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:21 FEB 02, 2024 CP= 0.247 + + --Static Structural + + + + ***** MAPDL ANALYSIS DEFINITION (PREP7) ***** + *********** Nodes for the whole assembly *********** + *********** Elements for Body 1 "Connector\Solid1" *********** + *********** Elements for Body 2 "Right_elbow\Solid1" *********** + *********** Elements for Body 3 "Left_elbow\Solid1" *********** + *********** Send User Defined Coordinate System(s) *********** + *********** Set Reference Temperature *********** + *********** Send Materials *********** + *********** Create Contact "Contact Region" *********** + Real Constant Set For Above Contact Is 5 & 4 + *********** Create Contact "Contact Region 2" *********** + Real Constant Set For Above Contact Is 7 & 6 + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Send Named Selection as Node Component *********** + *********** Fixed Supports *********** + ********* Frictionless Supports X ********* + ********* Frictionless Supports Z ********* + *********** Node Rotations *********** + *********** Define Pressure Using Surface Effect Elements "Pressure" ********** + + + ***** ROUTINE COMPLETED ***** CP = 0.359 + + + --- Number of total nodes = 26882 + --- Number of contact elements = 3294 + --- Number of spring elements = 0 + --- Number of bearing elements = 0 + --- Number of solid elements = 14427 + --- Number of condensed parts = 0 + --- Number of total elements = 17721 + + *GET _WALLBSOL FROM ACTI ITEM=TIME WALL VALUE= 3.10583333 + **************************************************************************** + ************************* SOLUTION ******************************** + **************************************************************************** + + ***** MAPDL SOLUTION ROUTINE ***** + + + PERFORM A STATIC ANALYSIS + THIS WILL BE A NEW ANALYSIS + + PARAMETER _THICKRATIO = 0.3330000000 + + USE SPARSE MATRIX DIRECT SOLVER + + CONTACT INFORMATION PRINTOUT LEVEL 1 + + NLDIAG: Nonlinear diagnostics CONT option is set to ON. + Writing frequency : each ITERATION. + + DO NOT SAVE ANY RESTART FILES AT ALL + **************************************************** + ******************* SOLVE FOR LS 1 OF 1 **************** + + SELECT FOR ITEM=TYPE COMPONENT= + IN RANGE 8 TO 8 STEP 1 + + 1694 ELEMENTS (OF 17721 DEFINED) SELECTED BY ESEL COMMAND. + + SELECT ALL NODES HAVING ANY ELEMENT IN ELEMENT SET. + + 3556 NODES (OF 26882 DEFINED) SELECTED FROM + 1694 SELECTED ELEMENTS BY NSLE COMMAND. + + GENERATE SURFACE LOAD PRES ON SURFACE DEFINED BY ALL SELECTED NODES + SET ACCORDING TO TABLE PARAMETER = _LOADVARI56 + + NUMBER OF PRES ELEMENT FACE LOADS STORED = 1694 + + ALL SELECT FOR ITEM=NODE COMPONENT= + IN RANGE 1 TO 26882 STEP 1 + + 26882 NODES (OF 26882 DEFINED) SELECTED BY NSEL COMMAND. + + ALL SELECT FOR ITEM=ELEM COMPONENT= + IN RANGE 1 TO 25061 STEP 1 + + 17721 ELEMENTS (OF 17721 DEFINED) SELECTED BY ESEL COMMAND. + + ALL SELECT FOR ITEM=ELEM COMPONENT= + IN RANGE 1 TO 25061 STEP 1 + + 17721 ELEMENTS (OF 17721 DEFINED) SELECTED BY ESEL COMMAND. + + PRINTOUT RESUMED BY /GOP + + USE 1 SUBSTEPS INITIALLY THIS LOAD STEP FOR ALL DEGREES OF FREEDOM + FOR AUTOMATIC TIME STEPPING: + USE 1 SUBSTEPS AS A MAXIMUM + USE 1 SUBSTEPS AS A MINIMUM + + TIME= 1.0000 + + ERASE THE CURRENT DATABASE OUTPUT CONTROL TABLE. + + + WRITE ALL ITEMS TO THE DATABASE WITH A FREQUENCY OF NONE + FOR ALL APPLICABLE ENTITIES + + WRITE NSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE RSOL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EANG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE ETMP ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE VENG ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE STRS ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EPEL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE EPPL ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + WRITE CONT ITEMS TO THE DATABASE WITH A FREQUENCY OF ALL + FOR ALL APPLICABLE ENTITIES + + *GET ANSINTER_ FROM ACTI ITEM=INT VALUE= 0.00000000 + + *IF ANSINTER_ ( = 0.00000 ) NE + 0 ( = 0.00000 ) THEN + + *ENDIF + + ***** MAPDL SOLVE COMMAND ***** + + *** WARNING *** CP = 0.396 TIME= 03:06:21 + Element shape checking is currently inactive. Issue SHPP,ON or + SHPP,WARN to reactivate, if desired. + + *** NOTE *** CP = 0.415 TIME= 03:06:21 + The model data was checked and warning messages were found. + Please review output or errors file ( /github/home/.mw/Application + Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/file. + .err ) for these warning messages. + + *** SELECTION OF ELEMENT TECHNOLOGIES FOR APPLICABLE ELEMENTS *** + --- GIVE SUGGESTIONS AND RESET THE KEY OPTIONS --- + + ELEMENT TYPE 1 IS SOLID187. IT IS NOT ASSOCIATED WITH FULLY INCOMPRESSIBLE + HYPERELASTIC MATERIALS. NO SUGGESTION IS AVAILABLE AND NO RESETTING IS NEEDED. + + ELEMENT TYPE 2 IS SOLID187. IT IS NOT ASSOCIATED WITH FULLY INCOMPRESSIBLE + HYPERELASTIC MATERIALS. NO SUGGESTION IS AVAILABLE AND NO RESETTING IS NEEDED. + + ELEMENT TYPE 3 IS SOLID187. IT IS NOT ASSOCIATED WITH FULLY INCOMPRESSIBLE + HYPERELASTIC MATERIALS. NO SUGGESTION IS AVAILABLE AND NO RESETTING IS NEEDED. + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:21 FEB 02, 2024 CP= 0.418 + + --Static Structural + + + + 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 + ANALYSIS TYPE . . . . . . . . . . . . . . . . .STATIC (STEADY-STATE) + OFFSET TEMPERATURE FROM ABSOLUTE ZERO . . . . . 273.15 + EQUATION SOLVER OPTION. . . . . . . . . . . . .SPARSE + GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC + + *** WARNING *** CP = 0.427 TIME= 03:06:21 + Material number 8 (used by element 23368) should normally have at least + one MP or one TB type command associated with it. Output of energy by + material may not be available. + + *** NOTE *** CP = 0.436 TIME= 03:06:21 + The step data was checked and warning messages were found. + Please review output or errors file ( /github/home/.mw/Application + Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural/file. + .err ) for these warning messages. + + *** NOTE *** CP = 0.436 TIME= 03:06:21 + The conditions for direct assembly have been met. No .emat or .erot + files will be produced. + + 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 + 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 = 0.715 TIME= 03:06:22 + Symmetric Deformable- deformable contact pair identified by real + constant set 4 and contact element type 4 has been set up. The + companion pair has real constant set ID 5. Both pairs should have the + same behavior. + MAPDL 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 = 0.715 TIME= 03:06:22 + 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 0.14109E-01 + Average contact pair depth 0.93576E-02 + Average target surface length 0.13700E-01 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.23394E-02 + Default target edge extension factor TOLS 2.0000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Max. Initial penetration 7.571439156E-17 was detected between contact + element 21972 and target element 22406. + **************************************** + + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Symmetric Deformable- deformable contact pair identified by real + constant set 5 and contact element type 4 has been set up. The + companion pair has real constant set ID 4. Both pairs should have the + same behavior. + MAPDL will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + 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 0.14033E-01 + Average contact pair depth 0.82697E-02 + Average target surface length 0.13762E-01 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.20674E-02 + Default target edge extension factor TOLS 2.0000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Max. Initial penetration 8.326672685E-17 was detected between contact + element 22262 and target element 21953. + **************************************** + + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Symmetric Deformable- deformable contact pair identified by real + constant set 6 and contact element type 6 has been set up. The + companion pair has real constant set ID 7. Both pairs should have the + same behavior. + *WARNING*: The contact pairs have similar mesh patterns which can cause + overconstraint. MAPDL will deactivate the current pair and keep its + companion pair. + Contact algorithm: MPC based approach + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + 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 0.14109E-01 + Average contact pair depth 0.91767E-02 + Average target surface length 0.13770E-01 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.22942E-02 + Default target edge extension factor TOLS 2.0000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Max. Initial penetration 8.326672685E-17 was detected between contact + element 22936 and target element 23341. + **************************************** + + + *** NOTE *** CP = 0.715 TIME= 03:06:22 + Symmetric Deformable- deformable contact pair identified by real + constant set 7 and contact element type 6 has been set up. The + companion pair has real constant set ID 6. Both pairs should have the + same behavior. + MAPDL will keep the current pair and deactivate its companion pair, + resulting in asymmetric contact. + Auto surface constraint is built + Contact algorithm: MPC based approach + + *** NOTE *** CP = 0.716 TIME= 03:06:22 + 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 0.14121E-01 + Average contact pair depth 0.81425E-02 + Average target surface length 0.13762E-01 + Default pinball region factor PINB 0.25000 + The resulting pinball region 0.20356E-02 + Default target edge extension factor TOLS 2.0000 + Initial penetration/gap is excluded. + Bonded contact (always) is defined. + + *** NOTE *** CP = 0.716 TIME= 03:06:22 + Max. Initial penetration 8.326672685E-17 was detected between contact + element 22977 and target element 22681. + **************************************** + + + + + + The FEA model contains 0 external CE equations and 2829 internal CE + equations. + + ************************************************* + SUMMARY FOR CONTACT PAIR IDENTIFIED BY REAL CONSTANT SET 4 + + *** NOTE *** CP = 1.738 TIME= 03:06:23 + Contact pair is inactive. + + ************************************************* + SUMMARY FOR CONTACT PAIR IDENTIFIED BY REAL CONSTANT SET 5 + Max. Penetration of 0 has been detected between contact element 22168 + and target element 21830. + + Max. Geometrical gap of 8.326672685E-17 has been detected between + contact element 22235 and target element 21774. + + Max. Geometrical penetration of -8.326672685E-17 has been detected + between contact element 22235 and target element 21774. + For total 200 contact elements, there are 200 elements are in contact. + There are 200 elements are in sticking. + Max. Pinball distance 2.067419789E-03. + One of the contact searching regions contains at least 20 target + elements. + ************************************************* + + ************************************************* + SUMMARY FOR CONTACT PAIR IDENTIFIED BY REAL CONSTANT SET 6 + + *** NOTE *** CP = 1.738 TIME= 03:06:23 + Contact pair is inactive. + + ************************************************* + SUMMARY FOR CONTACT PAIR IDENTIFIED BY REAL CONSTANT SET 7 + Max. Penetration of 0 has been detected between contact element 22968 + and target element 22572. + + Max. Geometrical gap of 8.326672685E-17 has been detected between + contact element 23082 and target element 22663. + + Max. Geometrical penetration of -7.806255642E-17 has been detected + between contact element 23082 and target element 22663. + For total 200 contact elements, there are 200 elements are in contact. + There are 200 elements are in sticking. + Max. Pinball distance 2.035619409E-03. + One of the contact searching regions contains at least 20 target + elements. + ************************************************* + + + *********** PRECISE MASS SUMMARY *********** + + TOTAL RIGID BODY MASS MATRIX ABOUT ORIGIN + Translational mass | Coupled translational/rotational mass + 138.29 0.0000 0.0000 | 0.0000 -56.537 30.296 + 0.0000 138.29 0.0000 | 56.537 0.0000 0.73727E-02 + 0.0000 0.0000 138.29 | -30.296 -0.73727E-02 0.0000 + ------------------------------------------ | ------------------------------------------ + | Rotational mass (inertia) + | 31.211 0.16326E-02 0.30943E-02 + | 0.16326E-02 27.754 -12.386 + | 0.30943E-02 -12.386 11.103 + + TOTAL MASS = 138.29 + The mass principal axes coincide with the global Cartesian axes + + CENTER OF MASS (X,Y,Z)= 0.53313E-04 -0.21907 -0.40882 + + TOTAL INERTIA ABOUT CENTER OF MASS + 1.4604 0.17394E-04 0.80195E-04 + 0.17394E-04 4.6403 0.15516E-05 + 0.80195E-04 0.15516E-05 4.4656 + The inertia principal axes coincide with the global Cartesian axes + + + *** MASS SUMMARY BY ELEMENT TYPE *** + + TYPE MASS + 1 100.182 + 2 19.0548 + 3 19.0556 + + Range of element maximum matrix coefficients in global coordinates + Maximum = 2.93408494E+10 at element 11441. + Minimum = 518803319 at element 2355. + + *** ELEMENT MATRIX FORMULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 8724 SOLID187 0.394 0.000045 + 2 2759 SOLID187 0.126 0.000046 + 3 2944 SOLID187 0.133 0.000045 + 4 400 CONTA174 0.051 0.000128 + 5 400 TARGE170 0.001 0.000003 + 6 400 CONTA174 0.051 0.000127 + 7 400 TARGE170 0.001 0.000002 + 8 1694 SURF154 0.050 0.000030 + Time at end of element matrix formulation CP = 1.73887587. + + SPARSE MATRIX DIRECT SOLVER. + Number of equations = 76728, Maximum wavefront = 480 + Memory allocated for solver = 397.284 MB + Memory required for in-core solution = 380.954 MB + Memory required for out-of-core solution = 148.156 MB + + *** NOTE *** CP = 2.232 TIME= 03:06:23 + 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. + curEqn= 38063 totEqn= 76728 Job CP sec= 2.597 + Factor Done= 56% Factor Wall sec= 0.420 rate= 30.9 GFlops + curEqn= 76728 totEqn= 76728 Job CP sec= 2.940 + Factor Done= 100% Factor Wall sec= 0.761 rate= 30.5 GFlops + Sparse solver maximum pivot= 3.152432104E+10 at node 19308 UZ. + Sparse solver minimum pivot= 245329060 at node 15632 UY. + Sparse solver minimum pivot in absolute value= 245329060 at node 15632 + UY. + + *** ELEMENT RESULT CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 8724 SOLID187 0.343 0.000039 + 2 2759 SOLID187 0.110 0.000040 + 3 2944 SOLID187 0.116 0.000040 + 4 400 CONTA174 0.007 0.000016 + 6 400 CONTA174 0.007 0.000016 + 8 1694 SURF154 0.039 0.000023 + + *** NODAL LOAD CALCULATION TIMES + TYPE NUMBER ENAME TOTAL CP AVE CP + + 1 8724 SOLID187 0.120 0.000014 + 2 2759 SOLID187 0.038 0.000014 + 3 2944 SOLID187 0.040 0.000014 + 4 400 CONTA174 0.001 0.000003 + 6 400 CONTA174 0.001 0.000003 + 8 1694 SURF154 0.006 0.000003 + *** 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 + 18.062 MB WRITTEN ON ELEMENT SAVED DATA FILE: file.esav + 40.625 MB WRITTEN ON ASSEMBLED MATRIX FILE: file.full + 9.875 MB WRITTEN ON RESULTS FILE: file.rst + *************** Write FE CONNECTORS ********* + + WRITE OUT CONSTRAINT EQUATIONS TO FILE= file.ce + **************************************************** + *************** FINISHED SOLVE FOR LS 1 ************* + + *GET _WALLASOL FROM ACTI ITEM=TIME WALL VALUE= 3.10694444 + + PRINTOUT RESUMED BY /GOP + + FINISH SOLUTION PROCESSING + + + ***** ROUTINE COMPLETED ***** CP = 4.342 + + + + *** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2024 R1 24.1 *** + Ansys Mechanical Enterprise + 00000000 VERSION=LINUX x64 03:06:25 FEB 02, 2024 CP= 4.343 + + --Static Structural + + + + ***** MAPDL RESULTS INTERPRETATION (POST1) ***** + + *** NOTE *** CP = 4.343 TIME= 03:06:25 + Reading results into the database (SET command) will update the current + displacement and force boundary conditions in the database with the + values from the results file for that load set. Note that any + subsequent solutions will use these values unless action is taken to + either SAVE the current values or not overwrite them (/EXIT,NOSAVE). + + Set Encoding of XML File to:ISO-8859-1 + + Set Output of XML File to: + PARM, , , , , , , , , , , , + , , , , , , , + + DATABASE WRITTEN ON FILE parm.xml + + EXIT THE MAPDL POST1 DATABASE PROCESSOR + + + ***** ROUTINE COMPLETED ***** CP = 4.344 + + + + PRINTOUT RESUMED BY /GOP + + *GET _WALLDONE FROM ACTI ITEM=TIME WALL VALUE= 3.10694444 + + PARAMETER _PREPTIME = 0.000000000 + + PARAMETER _SOLVTIME = 4.000000000 + + PARAMETER _POSTTIME = 0.000000000 + + PARAMETER _TOTALTIM = 4.000000000 + + *GET _DLBRATIO FROM ACTI ITEM=SOLU DLBR VALUE= 0.00000000 + + *GET _COMBTIME FROM ACTI ITEM=SOLU COMB VALUE= 0.00000000 + + *GET _SSMODE FROM ACTI ITEM=SOLU SSMM VALUE= 2.00000000 + + *GET _NDOFS FROM ACTI ITEM=SOLU NDOF VALUE= 76728.0000 + --- Total number of nodes = 26882 + --- Total number of elements = 17721 + --- Element load balance ratio = 0 + --- Time to combine distributed files = 0 + --- Sparse memory mode = 2 + --- Number of DOF = 76728 + + EXIT MAPDL WITHOUT SAVING DATABASE + + + NUMBER OF WARNING MESSAGES ENCOUNTERED= 2 + NUMBER OF ERROR MESSAGES ENCOUNTERED= 0 + + +--------------------- M A P D L S T A T I S T I C S ------------------------+ + + Release: 2024 R1 Build: 24.1 Update: UP20231106 Platform: LINUX x64 + Date Run: 02/02/2024 Time: 03:06 Process ID: 8644 + Operating System: Ubuntu 20.04.6 LTS + + Processor Model: AMD EPYC 7763 64-Core Processor + + Compiler: Intel(R) Fortran Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) C/C++ Compiler Classic Version 2021.9 (Build: 20230302) + Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 + BLAS Library supplied by AMD BLIS + + Number of machines requested : 1 + Total number of cores available : 8 + Number of physical cores available : 4 + Number of processes requested : 1 + Number of threads per process requested : 1 + Total number of cores requested : 1 (Shared Memory Parallel) + + GPU Acceleration: Not Requested + + Job Name: file + Input File: dummy.dat + Working Directory: /github/home/.mw/Application Data/Ansys/v241/AnsysMechB407/Project_Mech_Files/StaticStructural + + Total CPU time for main thread : 4.3 seconds + Total CPU time summed for all threads : 4.4 seconds + + Elapsed time spent obtaining a license : 0.2 seconds + Elapsed time spent pre-processing model (/PREP7) : 0.1 seconds + Elapsed time spent solution - preprocessing : 0.2 seconds + Elapsed time spent computing solution : 3.6 seconds + Elapsed time spent solution - postprocessing : 0.0 seconds + Elapsed time spent post-processing model (/POST1) : 0.0 seconds + + Equation solver used : Sparse (symmetric) + Equation solver computational rate : 30.5 Gflops + + Sum of disk space used on all processes : 73.7 MB + + Sum of memory used on all processes : 512.0 MB + Sum of memory allocated on all processes : 2112.0 MB + Physical memory available : 31 GB + Total amount of I/O written to disk : 0.1 GB + Total amount of I/O read from disk : 0.0 GB + + +------------------ E N D M A P D L S T A T I S T I C S -------------------+ + + + *-----------------------------------------------------------------------------* + | | + | RUN COMPLETED | + | | + |-----------------------------------------------------------------------------| + | | + | Ansys MAPDL 2024 R1 Build 24.1 UP20231106 LINUX x64 | + | | + |-----------------------------------------------------------------------------| + | | + | Database Requested(-db) 1024 MB Scratch Memory Requested 1024 MB | + | Maximum Database Used 23 MB Maximum Scratch Memory Used 489 MB | + | | + |-----------------------------------------------------------------------------| + | | + | CP Time (sec) = 4.353 Time = 03:06:25 | + | Elapsed Time (sec) = 5.000 Date = 02/02/2024 | + | | + *-----------------------------------------------------------------------------* + + + + +.. GENERATED FROM PYTHON SOURCE LINES 252-254 + +Project tree +~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 254-271 + +.. code-block:: Python + + + + def print_tree(node, indentation=""): + print(f"{indentation}├── {node.Name}") + + if ( + hasattr(node, "Children") + and node.Children is not None + and node.Children.Count > 0 + ): + for child in node.Children: + print_tree(child, indentation + "| ") + + + root_node = DataModel.Project + print_tree(root_node) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + ├── Project + | ├── Model + | | ├── Geometry Imports + | | | ├── Geometry Import + | | ├── Geometry + | | | ├── Connector + | | | | ├── Connector\Solid1 + | | | ├── Right_elbow + | | | | ├── Right_elbow\Solid1 + | | | ├── Left_elbow + | | | | ├── Left_elbow\Solid1 + | | ├── Materials + | | | ├── Structural Steel + | | | ├── Structural Steel Assignment + | | ├── Coordinate Systems + | | | ├── Global Coordinate System + | | ├── Remote Points + | | ├── Connections + | | | ├── Contacts + | | | | ├── Contact Region + | | | | ├── Contact Region 2 + | | ├── Mesh + | | ├── Named Selections + | | | ├── NSFixedSupportFaces + | | | ├── NSFrictionlessSupportFaces + | | | ├── NSInsideFaces + | | ├── Static Structural + | | | ├── Analysis Settings + | | | ├── Fixed Support + | | | ├── Frictionless Support + | | | ├── Pressure + | | | ├── Solution + | | | | ├── Solution Information + | | | | ├── Total Deformation + | | | | ├── Equivalent Stress + + + + +.. GENERATED FROM PYTHON SOURCE LINES 272-275 + +Cleanup +~~~~~~~ +Save project + +.. GENERATED FROM PYTHON SOURCE LINES 275-279 + +.. code-block:: Python + + + app.save(os.path.join(cwd, "Valve.mechdat")) + app.new() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 280-281 + +delete example files + +.. GENERATED FROM PYTHON SOURCE LINES 281-283 + +.. code-block:: Python + + + delete_downloads() + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + True + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 25.343 seconds) + + +.. _sphx_glr_download_examples_basic_valve.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: valve.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: valve.py ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/index.rst.txt b/_sources/examples/index.rst.txt new file mode 100644 index 00000000..cee91e53 --- /dev/null +++ b/_sources/examples/index.rst.txt @@ -0,0 +1,151 @@ +:orphan: + +Examples +========= + +Embedding examples for `PyMechanical <_pymechanical_docs>`_ are contained in this repository. +These end-to-end examples show how you can use ``ansys-mechanical-core``. + + + +.. raw:: html + +
+ + +.. raw:: html + +
+ +Basic +====== + +This section demonstrates basic capabilities of PyMechanical + + + +.. raw:: html + +
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_fracture_analysis_contact_debonding_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_fracture_analysis_contact_debonding.py` + +.. raw:: html + +
Fracture Analysis - Contact debonding
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_steady_state_thermal_analysis_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_steady_state_thermal_analysis.py` + +.. raw:: html + +
Steady state thermal analysis
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_topology_optimization_cantilever_beam_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_topology_optimization_cantilever_beam.py` + +.. raw:: html + +
Topology optimization of a simple cantilever beam
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/basic/images/thumb/sphx_glr_valve_thumb.png + :alt: + + :ref:`sphx_glr_examples_basic_valve.py` + +.. raw:: html + +
Basic Valve Implementation
+
+ + +.. raw:: html + +
+ +Technology showcase +==================== + +Using technology showcase examples demonstrates embedding capabilities of PyMechanical. + + +.. raw:: html + +
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/technology_showcase/images/thumb/sphx_glr_Rotor_Blade_Inverse_solve_thumb.png + :alt: + + :ref:`sphx_glr_examples_technology_showcase_Rotor_Blade_Inverse_solve.py` + +.. raw:: html + +
Inverse-Solving analysis of a rotor fan blade with disk
+
+ + +.. raw:: html + +
+ + +.. toctree:: + :hidden: + :includehidden: + + + /examples/basic/index.rst + /examples/technology_showcase/index.rst + + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/sg_execution_times.rst.txt b/_sources/examples/sg_execution_times.rst.txt new file mode 100644 index 00000000..f7a0c03b --- /dev/null +++ b/_sources/examples/sg_execution_times.rst.txt @@ -0,0 +1,37 @@ + +:orphan: + +.. _sphx_glr_examples_sg_execution_times: + + +Computation times +================= +**00:00.000** total execution time for 0 files **from examples**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - N/A + - N/A + - N/A diff --git a/_sources/examples/technology_showcase/Rotor_Blade_Inverse_solve.rst.txt b/_sources/examples/technology_showcase/Rotor_Blade_Inverse_solve.rst.txt new file mode 100644 index 00000000..ee58eeea --- /dev/null +++ b/_sources/examples/technology_showcase/Rotor_Blade_Inverse_solve.rst.txt @@ -0,0 +1,890 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/technology_showcase/Rotor_Blade_Inverse_solve.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_technology_showcase_Rotor_Blade_Inverse_solve.py: + +.. _ref_example_10_td_055: + +Inverse-Solving analysis of a rotor fan blade with disk +------------------------------------------------------- + +This example demonstrates the inverse-solving analysis of a rotor fan blade with disk. +The NASA Rotor 67 fan bladed disk is a subsystem of a turbo fan's compressor set used +in aerospace engine applications. This sector model, representing a challenging industrial +example for which the detailed geometry and flow information is available in the public +domain, consists of a disk and a fan blade with a sector angle of 16.364 degrees. +The sector model represents the running condition or hot geometry of the blade. It is +already optimized at the running condition under loading. The primary objective is to +obtain the cold geometry (for manufacturing) from the given hot geometry using inverse solving. + +- ELEMENTS: SOLID186 +- MATERIAL: Elastic Material +- CONTACT: MPC bonded contact pair + +To highlight Mechanical APDL inverse-solving technology, this example problem does not +involve a cyclic symmetry analysis. + +**Material Properties:** + ++------------+--------+----------------+----------------+---------------------------+ +| Temperature| Density| Young's Modulus| Poisson's Ratio| Coeff of Thermal Expansion| ++============+========+================+================+===========================+ +| 22 deg C | 7840 | 2.2e11 Pa | 0.27 | 1.2e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 200 deg C | 7740 | 2e11 Pa | 0.28 | 1.3e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 300 deg C | 7640 | 1.9e11 Pa | 0.29 | 1.4e-5 | ++------------+--------+----------------+----------------+---------------------------+ +| 600 deg C | 7540 | 1.8e11 Pa | 0.30 | 1.5e-5 | ++------------+--------+----------------+----------------+---------------------------+ + + +**Following loads are considered:** + +The rotational velocity (CGOMGA,0,0,1680) is applied along the global Z axis. The reference +temperature is maintained at 22°C, and the temperature loading is applied on the blade (BF) + +**Expected results:** + +Inverse-Solving Analysis: A nonlinear static analysis using inverse solving +(INVOPT,ON) is performed on the hot geometry of the model to obtain the cold geometry +(for manufacturing) and the stress/strain results on the hot geometry. + +.. GENERATED FROM PYTHON SOURCE LINES 49-57 + +.. code-block:: Python + + + import os + + import ansys.mechanical.core as mech + from ansys.mechanical.core.examples import delete_downloads, download_file + from matplotlib import image as mpimg + from matplotlib import pyplot as plt + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 58-59 + +Embed mechanical and set global variables + +.. GENERATED FROM PYTHON SOURCE LINES 59-76 + +.. code-block:: Python + + + app = mech.App(version=241) + globals().update(mech.global_variables(app, True)) + print(app) + + cwd = os.path.join(os.getcwd(), "out") + + + def display_image(image_name): + plt.figure(figsize=(16, 9)) + plt.imshow(mpimg.imread(os.path.join(cwd, image_name))) + plt.xticks([]) + plt.yticks([]) + plt.axis("off") + plt.show() + + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Ansys Mechanical [Ansys Mechanical Enterprise] + Product Version:241 + Software build date: 11/27/2023 10:24:20 + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 77-80 + +Download required files +~~~~~~~~~~~~~~~~~~~~~~~ +Download the geometry file + +.. GENERATED FROM PYTHON SOURCE LINES 80-85 + +.. code-block:: Python + + + geometry_path = download_file( + "example_10_td_055_Rotor_Blade_Geom.pmdb", "pymechanical", "embedding" + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 86-87 + +Download the material file + +.. GENERATED FROM PYTHON SOURCE LINES 87-92 + +.. code-block:: Python + + + mat_path = download_file( + "example_10_td_055_Rotor_Blade_Mat_File.xml", "pymechanical", "embedding" + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 93-94 + +Download the CFX pressure data + +.. GENERATED FROM PYTHON SOURCE LINES 94-99 + +.. code-block:: Python + + + cfx_data_path = download_file( + "example_10_CFX_ExportResults_FT_10P_EO2.csv", "pymechanical", "embedding" + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 100-102 + +Configure graphics for image export +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 102-119 + +.. code-block:: Python + + + cwd = os.path.join(os.getcwd(), "out") + ExtAPI.Graphics.Camera.SetSpecificViewOrientation( + Ansys.Mechanical.DataModel.Enums.ViewOrientationType.Iso + ) + ExtAPI.Graphics.Camera.SetFit() + image_export_format = Ansys.Mechanical.DataModel.Enums.GraphicsImageExportFormat.PNG + settings_720p = Ansys.Mechanical.Graphics.GraphicsImageExportSettings() + settings_720p.Resolution = ( + Ansys.Mechanical.DataModel.Enums.GraphicsResolutionType.EnhancedResolution + ) + settings_720p.Background = Ansys.Mechanical.DataModel.Enums.GraphicsBackgroundType.White + settings_720p.Width = 1280 + # settings_720p.Capture = Ansys.Mechanical.DataModel.Enums.GraphicsCaptureType.ImageOnly + settings_720p.Height = 720 + settings_720p.CurrentGraphicsDisplay = False + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 120-123 + +Import geometry +~~~~~~~~~~~~~~~ +Reads geometry file and display + +.. GENERATED FROM PYTHON SOURCE LINES 123-144 + +.. code-block:: Python + + + geometry_import_group = Model.GeometryImportGroup + geometry_import = geometry_import_group.AddGeometryImport() + geometry_import_format = ( + Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic + ) + geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences() + geometry_import_preferences.ProcessNamedSelections = True + geometry_import_preferences.NamedSelectionKey = "" + geometry_import_preferences.ProcessMaterialProperties = True + geometry_import_preferences.ProcessCoordinateSystems = True + geometry_import.Import( + geometry_path, geometry_import_format, geometry_import_preferences + ) + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "geometry.png"), image_export_format, settings_720p + ) + display_image("geometry.png") + + + + +.. image-sg:: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_001.png + :alt: Rotor Blade Inverse solve + :srcset: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 145-148 + +Assign materials +~~~~~~~~~~~~~~~~ +Import material from xml file and assign it to bodies + +.. GENERATED FROM PYTHON SOURCE LINES 148-164 + +.. code-block:: Python + + + materials = ExtAPI.DataModel.Project.Model.Materials + materials.Import(mat_path) + + PRT1 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Component2\Rotor11"][ + 0 + ] + PRT2 = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Component3"][0] + PRT2_Blade_1 = PRT2.Children[0] + PRT2_Blade_2 = PRT2.Children[1] + PRT2_Blade_3 = PRT2.Children[2] + PRT1.Material = "MAT1 (Setup, File1)" + PRT2_Blade_1.Material = "MAT1 (Setup, File1)" + PRT2_Blade_2.Material = "MAT1 (Setup, File1)" + PRT2_Blade_3.Material = "MAT1 (Setup, File1)" + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 165-168 + +Define units system and store variables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Select MKS units + +.. GENERATED FROM PYTHON SOURCE LINES 168-179 + +.. code-block:: Python + + ExtAPI.Application.ActiveUnitSystem = ( + Ansys.ACT.Interfaces.Common.MechanicalUnitSystem.StandardMKS + ) + + # Store all main tree nodes as variables + MODEL = ExtAPI.DataModel.Project.Model + GEOM = ExtAPI.DataModel.Project.Model.Geometry + MESH = ExtAPI.DataModel.Project.Model.Mesh + MAT_GRP = ExtAPI.DataModel.Project.Model.Materials + CS = ExtAPI.DataModel.Project.Model.CoordinateSystems + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 180-183 + +Define named selection +~~~~~~~~~~~~~~~~~~~~~~ +Create NS for named selection + +.. GENERATED FROM PYTHON SOURCE LINES 183-223 + +.. code-block:: Python + + + NS_GRP = ExtAPI.DataModel.Project.Model.NamedSelections + BLADE_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade"][0] + BLADE_SURF_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Surf"][ + 0 + ] + FIX_SUPPORT_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Fix_Support" + ][0] + BLADE_HUB_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Hub"][0] + HUB_CONTACT_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_Contact" + ][0] + BLADE_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade_Target" + ][0] + Hub_Low_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_Low"][0] + Hub_High_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Hub_High"][0] + BLADE1_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1"][0] + BLADE1_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1_Source" + ][0] + BLADE1_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade1_Target" + ][0] + BLADE2_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2"][0] + BLADE2_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2_Source" + ][0] + BLADE2_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade2_Target" + ][0] + BLADE3_NS = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3"][0] + BLADE3_Source_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3_Source" + ][0] + BLADE3_TARGET_NS = [ + x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == "Blade3_Target" + ][0] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 224-227 + +Define coordinate system +~~~~~~~~~~~~~~~~~~~~~~~~ +Create cylindrical coordinate system + +.. GENERATED FROM PYTHON SOURCE LINES 227-236 + +.. code-block:: Python + + + coordinate_systems = Model.CoordinateSystems + coord_system = coordinate_systems.AddCoordinateSystem() + coord_system.CoordinateSystemType = ( + Ansys.ACT.Interfaces.Analysis.CoordinateSystemTypeEnum.Cylindrical + ) + coord_system.OriginDefineBy = CoordinateSystemAlignmentType.Component + coord_system.OriginDefineBy = CoordinateSystemAlignmentType.Fixed + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 237-240 + +Define contacts +~~~~~~~~~~~~~~~ +Delete existing contacts and define connections + +.. GENERATED FROM PYTHON SOURCE LINES 240-257 + +.. code-block:: Python + + + connections = ExtAPI.DataModel.Project.Model.Connections + + # Delete existing contacts + # for connection in connections.Children: + # if connection.DataModelObjectCategory==DataModelObjectCategory.ConnectionGroup: + # connection.Delete() + + # Define connections + + CONN_GRP = ExtAPI.DataModel.Project.Model.Connections + CONT_REG1 = CONN_GRP.AddContactRegion() + CONT_REG1.SourceLocation = NS_GRP.Children[6] + CONT_REG1.TargetLocation = NS_GRP.Children[5] + CONT_REG1.Behavior = ContactBehavior.AutoAsymmetric + CONT_REG1.ContactFormulation = ContactFormulation.MPC + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 258-260 + +Define mesh settings and generate mesh +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. GENERATED FROM PYTHON SOURCE LINES 260-328 + +.. code-block:: Python + + + MSH = Model.Mesh + MSH.ElementSize = Quantity(0.004, "m") + MSH.UseAdaptiveSizing = False + MSH.MaximumSize = Quantity(0.004, "m") + MSH.ShapeChecking = 0 + automatic_method_Hub = MSH.AddAutomaticMethod() + automatic_method_Hub.Location = NS_GRP.Children[0] + automatic_method_Hub.Method = MethodType.Sweep + automatic_method_Hub.SweepNumberDivisions = 6 + + match_control_Hub = MSH.AddMatchControl() + match_control_Hub.LowNamedSelection = NS_GRP.Children[7] + match_control_Hub.HighNamedSelection = NS_GRP.Children[8] + cyc_coordinate_system = coordinate_systems.Children[1] + match_control_Hub.RotationAxis = cyc_coordinate_system + + sizing_Blade = MSH.AddSizing() + selection = NS_GRP.Children[5] + sizing_Blade.Location = selection + # sizing_Blade.ElementSize = Quantity(1e-3, "m") + sizing_Blade.ElementSize = Quantity(1e-2, "m") + sizing_Blade.CaptureCurvature = True + sizing_Blade.CurvatureNormalAngle = Quantity(0.31, "rad") + # sizing_Blade.LocalMinimumSize = Quantity(0.00025, "m") + sizing_Blade.LocalMinimumSize = Quantity(0.0005, "m") + + automatic_method_Blade1 = MSH.AddAutomaticMethod() + selection = NS_GRP.Children[9] + automatic_method_Blade1.Location = selection + automatic_method_Blade1.Method = MethodType.Sweep + automatic_method_Blade1.SourceTargetSelection = 2 + selection = NS_GRP.Children[10] + automatic_method_Blade1.SourceLocation = selection + selection = NS_GRP.Children[11] + automatic_method_Blade1.TargetLocation = selection + automatic_method_Blade1.SweepNumberDivisions = 5 + + automatic_method_Blade2 = MSH.AddAutomaticMethod() + selection = NS_GRP.Children[12] + automatic_method_Blade2.Location = selection + automatic_method_Blade2.Method = MethodType.Sweep + automatic_method_Blade2.SourceTargetSelection = 2 + selection = NS_GRP.Children[13] + automatic_method_Blade2.SourceLocation = selection + selection = NS_GRP.Children[14] + automatic_method_Blade2.TargetLocation = selection + automatic_method_Blade2.SweepNumberDivisions = 5 + + automatic_method_Blade3 = MSH.AddAutomaticMethod() + selection = NS_GRP.Children[15] + automatic_method_Blade3.Location = selection + automatic_method_Blade3.Method = MethodType.Sweep + automatic_method_Blade3.SourceTargetSelection = 2 + selection = NS_GRP.Children[16] + automatic_method_Blade3.SourceLocation = selection + selection = NS_GRP.Children[17] + automatic_method_Blade3.TargetLocation = selection + automatic_method_Blade3.SweepNumberDivisions = 5 + + MSH.GenerateMesh() + + ExtAPI.Graphics.Camera.SetFit() + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "blade_mesh.png"), image_export_format, settings_720p + ) + display_image("blade_mesh.png") + + + + +.. image-sg:: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_002.png + :alt: Rotor Blade Inverse solve + :srcset: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_002.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 329-332 + +Define analysis settings +~~~~~~~~~~~~~~~~~~~~~~~~ +Setup static structural settings with inverse solve + +.. GENERATED FROM PYTHON SOURCE LINES 332-348 + +.. code-block:: Python + + + Model.AddStaticStructuralAnalysis() + STAT_STRUC = Model.Analyses[0] + ANA_SETTINGS = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings + ANA_SETTINGS.NumberOfSteps = 2 + ANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off + ANA_SETTINGS.NumberOfSubSteps = 20 + + ANA_SETTINGS.Activate() + ANA_SETTINGS.CurrentStepNumber = 2 + ANA_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off + ANA_SETTINGS.NumberOfSubSteps = 20 + + ANA_SETTINGS.InverseOption = True + ANA_SETTINGS.LargeDeflection = True + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 349-352 + +Define boundary conditions +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Apply rotational velocity + +.. GENERATED FROM PYTHON SOURCE LINES 352-388 + +.. code-block:: Python + + + ROT_VEL = STAT_STRUC.AddRotationalVelocity() + ROT_VEL.DefineBy = LoadDefineBy.Components + ROT_VEL.ZComponent.Inputs[0].DiscreteValues = [ + Quantity("0 [s]"), + Quantity("1 [s]"), + Quantity("2 [s]"), + ] + ROT_VEL.ZComponent.Output.DiscreteValues = [ + Quantity("0 [rad/s]"), + Quantity("1680 [rad/s]"), + Quantity("1680 [rad/s]"), + ] + + # Apply Fixed Support Condition + + Fixed_Support = STAT_STRUC.AddFixedSupport() + selection = NS_GRP.Children[3] + Fixed_Support.Location = selection + + # Apply Thermal load to the Structural Blade + + Thermal_Condition = STAT_STRUC.AddThermalCondition() + selection = NS_GRP.Children[1] + Thermal_Condition.Location = selection + Thermal_Condition.Magnitude.Inputs[0].DiscreteValues = [ + Quantity("0 [s]"), + Quantity("1 [s]"), + Quantity("2 [s]"), + ] + Thermal_Condition.Magnitude.Output.DiscreteValues = [ + Quantity("22 [C]"), + Quantity("80 [C]"), + Quantity("80 [C]"), + ] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 389-392 + +Import CFX pressure +~~~~~~~~~~~~~~~~~~~ +Import CFX pressure data and apply it to structural blade surface + +.. GENERATED FROM PYTHON SOURCE LINES 392-450 + +.. code-block:: Python + + + Imported_Load_Group = STAT_STRUC.AddImportedLoadExternalData() + + external_data_files = Ansys.Mechanical.ExternalData.ExternalDataFileCollection() + external_data_files.SaveFilesWithProject = False + external_data_file_1 = Ansys.Mechanical.ExternalData.ExternalDataFile() + external_data_files.Add(external_data_file_1) + external_data_file_1.Identifier = "File1" + external_data_file_1.Description = "" + external_data_file_1.IsMainFile = False + external_data_file_1.FilePath = cfx_data_path + external_data_file_1.ImportSettings = ( + Ansys.Mechanical.ExternalData.ImportSettingsFactory.GetSettingsForFormat( + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.ImportFormat.Delimited + ) + ) + import_settings = external_data_file_1.ImportSettings + import_settings.SkipRows = 17 + import_settings.SkipFooter = 0 + import_settings.Delimiter = "," + import_settings.AverageCornerNodesToMidsideNodes = False + import_settings.UseColumn( + 0, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.XCoordinate, + "m", + "X Coordinate@A", + ) + import_settings.UseColumn( + 1, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.YCoordinate, + "m", + "Y Coordinate@B", + ) + import_settings.UseColumn( + 2, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.ZCoordinate, + "m", + "Z Coordinate@C", + ) + import_settings.UseColumn( + 3, + Ansys.Mechanical.DataModel.MechanicalEnums.ExternalData.VariableType.Pressure, + "Pa", + "Pressure@D", + ) + + Imported_Load_Group.ImportExternalDataFiles(external_data_files) + Imported_Pressure = Imported_Load_Group.AddImportedPressure() + selection = NS_GRP.Children[2] + Imported_Pressure.Location = selection + + pressure_id = Imported_Pressure.ObjectId + mech_command = f"""Imported_Pressure = ExtAPI.DataModel.GetObjectById({pressure_id}) + Imported_Pressure.InternalObject.ExternalLoadAppliedBy = 1 + """ + app.execute_script(mech_command) + Imported_Pressure.ImportLoad() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 451-454 + +Postprocessing +~~~~~~~~~~~~~~ +Insert results + +.. GENERATED FROM PYTHON SOURCE LINES 454-481 + +.. code-block:: Python + + + SOLN = STAT_STRUC.Solution + + TOT_DEF1 = SOLN.AddTotalDeformation() + TOT_DEF1.DisplayTime = Quantity("1 [s]") + + TOT_DEF2 = SOLN.AddTotalDeformation() + TOT_DEF2.DisplayTime = Quantity("2 [s]") + + EQV_STRS1 = SOLN.AddEquivalentStress() + EQV_STRS1.DisplayTime = Quantity("1 [s]") + + EQV_STRS2 = SOLN.AddEquivalentStress() + EQV_STRS2.DisplayTime = Quantity("2 [s]") + + EQV_TOT_STRN1 = SOLN.AddEquivalentTotalStrain() + EQV_TOT_STRN1.DisplayTime = Quantity("1 [s]") + + EQV_TOT_STRN2 = SOLN.AddEquivalentTotalStrain() + EQV_TOT_STRN2.DisplayTime = Quantity("2 [s]") + + THERM_STRN1 = SOLN.AddThermalStrain() + THERM_STRN1.DisplayTime = Quantity("1 [s]") + + THERM_STRN2 = SOLN.AddThermalStrain() + THERM_STRN2.DisplayTime = Quantity("2 [s]") + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 482-485 + +Run Solution +~~~~~~~~~~~~ +Solve inverse analysis on blade model + +.. GENERATED FROM PYTHON SOURCE LINES 485-489 + +.. code-block:: Python + + + SOLN.Solve(True) + STAT_STRUC_SS = SOLN.Status + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 490-493 + +Postprocessing +~~~~~~~~~~~~~~ +Evaluate results and export screenshots + +.. GENERATED FROM PYTHON SOURCE LINES 495-496 + +Total deformation + +.. GENERATED FROM PYTHON SOURCE LINES 496-506 + +.. code-block:: Python + + + Tree.Activate([TOT_DEF2]) + ExtAPI.Graphics.ViewOptions.ResultPreference.ExtraModelDisplay = ( + Ansys.Mechanical.DataModel.MechanicalEnums.Graphics.ExtraModelDisplay.NoWireframe + ) + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "deformation.png"), image_export_format, settings_720p + ) + display_image("deformation.png") + + + + +.. image-sg:: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_003.png + :alt: Rotor Blade Inverse solve + :srcset: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 507-508 + +Equivalent stress + +.. GENERATED FROM PYTHON SOURCE LINES 508-515 + +.. code-block:: Python + + + Tree.Activate([EQV_STRS2]) + ExtAPI.Graphics.ExportImage( + os.path.join(cwd, "stress.png"), image_export_format, settings_720p + ) + display_image("stress.png") + + + + +.. image-sg:: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_004.png + :alt: Rotor Blade Inverse solve + :srcset: /examples/technology_showcase/images/sphx_glr_Rotor_Blade_Inverse_solve_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 516-519 + +Cleanup +~~~~~~~ +Save project + +.. GENERATED FROM PYTHON SOURCE LINES 519-523 + +.. code-block:: Python + + + app.save(os.path.join(cwd, "blade_inverse.mechdat")) + app.new() + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 524-525 + +Delete example file + +.. GENERATED FROM PYTHON SOURCE LINES 525-527 + +.. code-block:: Python + + + delete_downloads() + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + True + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 7.126 seconds) + + +.. _sphx_glr_download_examples_technology_showcase_Rotor_Blade_Inverse_solve.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: Rotor_Blade_Inverse_solve.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: Rotor_Blade_Inverse_solve.py ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/technology_showcase/index.rst.txt b/_sources/examples/technology_showcase/index.rst.txt new file mode 100644 index 00000000..e6437d08 --- /dev/null +++ b/_sources/examples/technology_showcase/index.rst.txt @@ -0,0 +1,42 @@ + + +.. _sphx_glr_examples_technology_showcase: + +Technology showcase +==================== + +Using technology showcase examples demonstrates embedding capabilities of PyMechanical. + + +.. raw:: html + +
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/technology_showcase/images/thumb/sphx_glr_Rotor_Blade_Inverse_solve_thumb.png + :alt: + + :ref:`sphx_glr_examples_technology_showcase_Rotor_Blade_Inverse_solve.py` + +.. raw:: html + +
Inverse-Solving analysis of a rotor fan blade with disk
+
+ + +.. raw:: html + +
+ + +.. toctree:: + :hidden: + + /examples/technology_showcase/Rotor_Blade_Inverse_solve + diff --git a/_sources/examples/technology_showcase/sg_execution_times.rst.txt b/_sources/examples/technology_showcase/sg_execution_times.rst.txt new file mode 100644 index 00000000..7cec1874 --- /dev/null +++ b/_sources/examples/technology_showcase/sg_execution_times.rst.txt @@ -0,0 +1,37 @@ + +:orphan: + +.. _sphx_glr_examples_technology_showcase_sg_execution_times: + + +Computation times +================= +**00:07.126** total execution time for 1 file **from examples/technology_showcase**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_technology_showcase_Rotor_Blade_Inverse_solve.py` (``Rotor_Blade_Inverse_solve.py``) + - 00:07.126 + - 0.0 diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..23a72170 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,14 @@ +.. === EXAMPLES Gallery === + +.. + We have to include this rather than include it in a tree. + +.. include:: examples/index.rst + :start-line: 2 + + +.. toctree:: + :hidden: + :includehidden: + + examples/index \ No newline at end of file diff --git a/_sources/sg_execution_times.rst.txt b/_sources/sg_execution_times.rst.txt new file mode 100644 index 00000000..33a3b87f --- /dev/null +++ b/_sources/sg_execution_times.rst.txt @@ -0,0 +1,49 @@ + +:orphan: + +.. _sphx_glr_sg_execution_times: + + +Computation times +================= +**02:23.883** total execution time for 5 files **from all galleries**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_basic_fracture_analysis_contact_debonding.py` (``../../examples/basic/fracture_analysis_contact_debonding.py``) + - 00:54.704 + - 0.0 + * - :ref:`sphx_glr_examples_basic_topology_optimization_cantilever_beam.py` (``../../examples/basic/topology_optimization_cantilever_beam.py``) + - 00:36.132 + - 0.0 + * - :ref:`sphx_glr_examples_basic_valve.py` (``../../examples/basic/valve.py``) + - 00:25.343 + - 0.0 + * - :ref:`sphx_glr_examples_basic_steady_state_thermal_analysis.py` (``../../examples/basic/steady_state_thermal_analysis.py``) + - 00:20.578 + - 0.0 + * - :ref:`sphx_glr_examples_technology_showcase_Rotor_Blade_Inverse_solve.py` (``../../examples/technology_showcase/Rotor_Blade_Inverse_solve.py``) + - 00:07.126 + - 0.0 diff --git a/_static/404.rst b/_static/404.rst new file mode 100644 index 00000000..c5599198 --- /dev/null +++ b/_static/404.rst @@ -0,0 +1,6 @@ +Oops! +===== + +This is unexpected. The page you are requesting does not exist. + +If this page should exist, please contact `{{ theme_contact_mail }} <{{ theme_contact_mail }}>`_. \ No newline at end of file diff --git a/_static/ansys-favicon.png b/_static/ansys-favicon.png new file mode 100644 index 00000000..cfb2e535 Binary files /dev/null and b/_static/ansys-favicon.png differ diff --git a/_static/ansys_logo_black.jpg b/_static/ansys_logo_black.jpg new file mode 100644 index 00000000..7f737335 Binary files /dev/null and b/_static/ansys_logo_black.jpg differ diff --git a/_static/ansys_logo_black_cropped.jpg b/_static/ansys_logo_black_cropped.jpg new file mode 100644 index 00000000..05d98e6c Binary files /dev/null and b/_static/ansys_logo_black_cropped.jpg differ diff --git a/_static/ansys_logo_white.pdf b/_static/ansys_logo_white.pdf new file mode 100644 index 00000000..fceb89b3 Binary files /dev/null and b/_static/ansys_logo_white.pdf differ diff --git a/_static/ansys_logo_white_cropped.pdf b/_static/ansys_logo_white_cropped.pdf new file mode 100644 index 00000000..ad122b15 Binary files /dev/null and b/_static/ansys_logo_white_cropped.pdf differ diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..e760386b --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/basic/Topo_opitimized.gif b/_static/basic/Topo_opitimized.gif new file mode 100644 index 00000000..c6f8dfbf Binary files /dev/null and b/_static/basic/Topo_opitimized.gif differ diff --git a/_static/binder_badge_logo.svg b/_static/binder_badge_logo.svg new file mode 100644 index 00000000..327f6b63 --- /dev/null +++ b/_static/binder_badge_logo.svg @@ -0,0 +1 @@ + launchlaunchbinderbinder \ No newline at end of file diff --git a/_static/broken_example.png b/_static/broken_example.png new file mode 100644 index 00000000..4fea24e7 Binary files /dev/null and b/_static/broken_example.png differ diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000..f1916ec7 --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000..02c5c82d --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copié dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos, .gp'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000..dbe1aaad --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/css/ansys_sphinx_theme.css b/_static/css/ansys_sphinx_theme.css new file mode 100644 index 00000000..62ebe0ea --- /dev/null +++ b/_static/css/ansys_sphinx_theme.css @@ -0,0 +1,1170 @@ +/* Provided by the Sphinx base theme template at build time */ + +@import "../basic.css"; +@import url("https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&family=Open+Sans:ital,wght@0,400;0,600;1,400;1,600&display=swap"); +@import "../sg_gallery.css"; +@import "../design-style.4045f2051d55cab465a707391d5b2007.min.css"; +@import "../styles/pydata-sphinx-theme.css"; + +@font-face { + font-family: "Source Sans Pro Light"; + src: url(../fonts/SourceSansPro-Light.ttf); +} + +@font-face { + font-family: "Source Sans Pro"; + src: url(../fonts/SourceSansPro-Regular.ttf); +} + +:root { + /* Ansys specific changes to the theme */ + + /***************************************************************************** + * Ansys Font family + **/ + /* These are adapted from https://systemfontstack.com/ */ + --pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI, + "Helvetica Neue", Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol; + --pst-font-family-monospace-system: "SFMono-Regular", Menlo, Consolas, Monaco, + Liberation Mono, Lucida Console, monospace; + + --pst-font-family-base: "Source Sans Pro", sans-serif, + var(--pst-font-family-base-system); + --pst-font-family-heading: "Source Sans Pro", sans-serif, + var(--pst-font-family-base-system); + --pst-font-family-monospace: monospace, Courier, + var(--pst-font-family-monospace-system); + + /***************************************************************************** + * Ansys compatible colors + * + * Colors are defined in rgb string way, "red, green, blue" + **/ + --ansysGold: rgb(255, 183, 27); /* #FFB71B */ + --ansysBronze: rgb(200, 146, 17); /* #C89211 */ + --pythonBlue: rgb(57, 114, 161); /* #3972a1 */ + + --pst-color-active-navigation: var(--ansysBronze); /* --ansysBronze */ + --pst-color-navbar-link: rgb(255, 255, 255); + --pst-color-navbar-link-hover: var(--ansysBronze); /* --ansysBronze */ + --pst-color-navbar-link-active: var(--ansysGold); /* --ansysBronze */ + --pst-font-size-h1: 48px; + --pst-font-size-h2: 36px; + --pst-font-size-h3: 28px; + --pst-font-size-h4: 20px; + --pst-font-size-h5: 14px; + --pst-font-size-h6: 11px; +} + +html[data-theme="light"] { + /***************************************************************************** + * main colors + */ + --pst-color-primary: #fff; + --pst-color-secondary: rgb(200, 146, 17); + --pst-color-success: rgb(40, 167, 69); + --pst-color-text-base: rgb(0, 0, 0); + --pst-color-text-muted: rgb(26, 24, 24); + --pst-color-border: #a19d9d; + --pst-color-shadow: rgb(216, 216, 216); + --pst-color-info: var(--pst-color-link); + + /***************************************************************************** + * depth colors + */ + --pst-color-on-background: rgb(0, 0, 0); + --pst-color-on-surface: #f2f2f2; + + /***************************************************************************** + * extensions + */ + + --pst-color-panel-background: var(--pst-color-on-background); + + /***************************************************************************** + * layout + */ + + --pst-color-link: #1e6ddc; + --pst-color-link-hover: #32cfea; + --pst-color-link-visted: #9428f2; + --pst-color-inline-code: #000; + --pst-color-target: rgb(255, 255, 255); + + /***************************************************************************** + * color for sphinx-gallery-code output + */ + --pst-color-codecell: #fafae2; + --pst-color-codeout: var(--pst-color-inline-code); + --pst-color-sig: #0965c8; + --pst-color-code-s1: #b35000; + --pst-color-code-c1: #095d0a; + /***************************************************************************** + * sphinx design primary color + */ + --sd-color-primary: var(--pst-color-text-base); + + /***************************************************************************** + * table hovering + */ + --pst-color-table-hover: var(--pst-color-border); + + /***************************************************************************** + * search hide match + */ + --pst-color-search-match: #91969b; +} + +html[data-theme="dark"] { + /***************************************************************************** + * main colors + */ + --pst-color-primary: #d09735; + --pst-color-secondary: #c58e30; + --pst-color-success: rgb(72, 135, 87); + --pst-color-text-base: rgb(201, 209, 217); + --pst-color-text-muted: rgb(192, 192, 192); + --pst-color-border: rgb(192, 192, 192); + --pst-color-shadow: rgb(104, 102, 102); + --pst-color-background: rgb(18, 18, 18); + --pst-color-on-background: rgb(0, 0, 0); + --pst-color-surface: rgb(41, 41, 41); + --pst-color-on-surface: rgb(55, 55, 55); + --pst-color-info: var(--pst-color-secondary); + + /***************************************************************************** + * extensions + */ + + --pst-color-panel-background: var(--pst-color-on-background); + + /***************************************************************************** + * layout + */ + + --pst-color-link: #579ce5; + --pst-color-link-hover: #12b2e2; + --pst-color-link-visted: #c58af9; + --pst-color-inline-code: #fff; + --pst-color-target: rgb(71, 39, 0); + + /***************************************************************************** + * color for sphinx-gallery-code output + */ + --pst-color-codecell: #495057; + --pst-color-codeout: #f2f4f6; + --pst-color-sig: #d6ab1e; + --pst-color-code-s1: #d79a60; + --pst-color-code-c1: #8fb842; + + /***************************************************************************** + * table hovering + */ + --pst-color-table-hover: var(--pst-color-target); + + /***************************************************************************** + * search hide match + */ + --pst-color-search-match: var(--pst-color-primary); +} + +/* +################# +body and content +################# +*/ + +body { + font-family: "Open Sans", sans-serif; +} + +h1, +h2 { + color: var(--pst-color-text-base); +} + +/* +########## +Codecell +########## +*/ + +dt:target, +span.highlighted { + background-color: var(--pst-color-codecell) !important; +} + +.docutils { + color: var(--pst-color-inline-code); + font-family: var(--pst-font-family-monospace); + font-weight: 500; + font-size: 87.5%; +} + +code.literal { + padding: 0.1rem 0.25rem; + padding-top: 0.1rem; + padding-right: 0.25rem; + padding-bottom: 0.1rem; + padding-left: 0.25rem; + background-color: var(--pst-color-on-surface); + border: 1px solid var(--pst-color-border); + border-radius: 0.25rem; +} + +.xref.std.std-ref { + color: var(--pst-color-inline-code); + font-family: "Inconsolata"; + font-weight: normal; + font-style: italic; + padding: 0.1rem 0.25rem; + padding-top: 0.1rem; + padding-right: 0.25rem; + padding-bottom: 0.1rem; + padding-left: 0.25rem; + font-size: 90%; + background-color: var(--pst-color-on-surface); + border: 1px solid var(--pst-color-border); + border-radius: 0.25rem; +} + +.sig { + font-family: "Consolas", "Menlo", "DejaVu Sans Mono", + "Bitstream Vera Sans Mono", monospace; +} + +.sig-name.descname { + color: var(--pst-color-inline-code); +} + +.sig-name { + color: var(--pst-color-sig); +} + +/* Increase empty-space around classes, methods, properties, etc. that are descendants + of other items */ +dl.class dl.py { + margin-top: 2.5em; + margin-bottom: 2.5em; +} + +/* Reduce empty-space around Notes and Examples headings */ +p.rubric { + margin-top: 0.75em; + margin-bottom: 0.75em; +} + +/* +######## +Table +######## +*/ + +.table { + width: 100%; + max-width: 100%; + border-spacing: 0; + border-collapse: collapse; + overflow: hidden; + vertical-align: middle; + color: var(--pst-color-text-base); + /* Disabling scroll bars */ + overflow-y: scroll; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* Internet Explorer 10+ */ +} + +tr { + background-color: var(--pst-color-background); +} + +th { + background-color: rgb(255, 183, 27, 0.55); +} + +tr:nth-child(odd), +tr:nth-child(even) { + background-color: var(--pst-color-background); +} + +.table tr:hover td { + background-color: var(--pst-color-table-hover); +} + +div.rendered_html table.dataframe td { + color: var(--pst-color-text-base); +} + +/* +############### +Table-centered +################ +Same as table but with horizontally centered text. + +see examples. +*/ +table.table-centered { + width: 100%; + max-width: 100%; + border-spacing: 0; + border-collapse: collapse; + overflow: hidden; + vertical-align: middle; + text-align: center; + + /* Disabling scroll bars */ + overflow-y: scroll; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* Internet Explorer 10+ */ +} + +.table-centered tr { + background-color: var(--pst-color-background); + text-align: center; +} + +.table-centered th { + background-color: rgb(255, 183, 27, 0.55); + text-align: center; +} + +.table-centered tr:nth-child(odd), +.table-centered tr:nth-child(even) { + text-align: center; + background-color: var(--pst-color-background); +} + +.table-centered tr:hover td { + background-color: var(--pst-color-table-hover); + text-align: center; +} + +table.dataframe { + table-layout: auto !important; +} + +/* +################### +longtable-centered +#################### +*/ + +table.longtable-centered { + text-align: center; +} + +.longtable-centered tr { + text-align: center; +} + +.longtable-centered th { + text-align: center; +} + +.longtable-centered tr:nth-child(odd) { + text-align: center; +} + +.longtable-centered tr:nth-child(even) { + text-align: center; +} + +table.longtable-centered tr:hover td { + background-color: var(--pst-color-table-hover); + text-align: center; +} + +/* +######### +DataFrame +######### +*/ + +.dataframe tr { + background-color: var(--pst-color-background); +} + +.dataframe tr:nth-child(odd), +.dataframe tr:nth-child(even) { + background-color: var(--pst-color-background) !important; +} + +.dataframe tr:hover td { + background-color: var(--pst-color-table-hover); +} + +/* +################### +DataFrame-centered +################### +*/ + +.dataframe-centered tr { + background-color: var(--pst-color-background); + text-align: center; +} + +.dataframe-centered tr:nth-child(odd) { + background-color: var(--pst-color-background) !important; + text-align: center; +} + +.dataframe-centered tr:nth-child(even) { + background-color: var(--pst-color-border); + text-align: center; +} + +.dataframe-centered tr:hover td { + background-color: var(--pst-color-border); + text-align: center; +} + +.dataframe thead th { + text-align: center; +} + +/* +############ +data table +############ +*/ + +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + color: var(--pst-color-text-base) !important; +} + +.dataTables_wrapper, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: var(--pst-color-text-base) !important; +} + +table.dataTable tbody th, +table.dataTable tbody td { + background: var(--pst-color-background); +} + +label { + color: var(--pst-color-text-base); +} + +/* +########## +Scroll-bar +########## +*/ + +body::-webkit-scrollbar { + width: 1rem; + height: 1rem; +} + +body::-webkit-scrollbar-thumb { + background: var(--pst-color-border); + border-radius: inherit; +} + +body::-webkit-scrollbar-track { + background: var(--pst-color-background); +} + +.bd-sidebar::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; +} + +.bd-sidebar::-webkit-scrollbar-thumb { + background: var(--pst-color-border); + border-radius: inherit; + visibility: hidden !important; +} + +.bd-sidebar::-webkit-scrollbar-track { + background: var(--pst-color-border); + visibility: hidden !important; +} + +.bd-toc::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; +} + +.bd-toc::-webkit-scrollbar-thumb { + background: var(--pst-color-border); + border-radius: inherit; +} + +.bd-toc::-webkit-scrollbar-track { + background: var(--pst-color-border); +} + +/* +############ +Autosummary +############ +*/ + +.autosummary tr:nth-child(odd), +.autosummary tr:nth-child(even) { + background-color: var(--pst-color-background); +} + +/* +##################### +ReST :download: links +##################### +*/ +a > code.download { + font-family: var(--pst-font-family-base); + color: var(--pst-color-link); + text-decoration: none; + font-weight: normal; +} + +/* +##################### +Sphinx gallery output +##################### +*/ +.sphx-glr-script-out .highlight pre { + background-color: var(--pst-color-codecell) !important; + color: var(--pst-color-codeout); +} + +.prev-next-area a p.prev-next-title { + color: var(--pst-color-link); + font-weight: 600; + font-size: 1.1em; +} + +.highlight .s1, +.s2, +.kc { + color: var(--pst-color-code-s1) !important; +} + +html[data-theme="dark"] .highlight .kn { + color: #e18fff; + font-weight: normal; +} + +.highlight .c1 { + color: var(--pst-color-code-c1); +} + +html[data-theme="dark"] .highlight .n { + color: #b3d7ff; +} + +html[data-theme="dark"] .highlight .nn { + color: #43d69d; + text-decoration: none; +} +/* +############### +Dropdown button +############### +*/ + +.navbar button.navbar-toggler { + margin-right: 1em; + border-color: rgb(255, 255, 255); + color: rgb(255, 255, 255); +} + +/* +#################################################### +Side column size (first and second column from left) +#################################################### +*/ + +.col-md-3 { + flex: 0 0 20%; + max-width: 20%; +} + +a.headerlink { + color: #222; +} + +@media (min-width: 1200px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl { + max-width: 1200px; + } +} + +@media (min-width: 1600px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl { + max-width: 1600px; + } +} + +/* +############################################ +Navigation column (according to side column) +############################################ +*/ +.col-lg-9 { + padding-right: 5px; + padding-left: 20px; +} +.bd-main .bd-content { + display: flex; + height: 100%; + justify-content: end; +} + +.bd-main .bd-content .bd-article-container .bd-article { + padding-left: 1rem; + padding-top: 1rem; + padding-right: 1rem; +} +.bd-header .navbar-nav li a.nav-link { + color: #ddd; +} +.bd-header .navbar-nav .dropdown button { + color: #ddd; + display: unset; +} + +/* +################################# +Syntax highlighting in code block +################################# +*/ + +html[data-theme="light"] .highlight .o { + color: #b35000; + font-weight: bold; +} + +/* +############################# +Bold font weight for **code** +############################# +*/ + +b, +strong { + font-weight: 900; +} + +.bd-header .navbar-header-items__start { + width: fit-content; + padding-right: 3rem; +} + +.navbar-nav li a:focus, +.navbar-nav li a:hover, +.navbar-nav li.current > a { + color: white !important; +} + +.navbar-nav .dropdown .dropdown-menu { + min-width: 250px; +} + +/* +########################### +Left side toc-tree hovering +########################### +*/ + +nav.bd-links .active:hover > a { + font-weight: bold; + color: var(--pst-color-text-base); + border-left: 2px solid var(--pst-color-text-base); +} + +nav.bd-links .active > a { + font-weight: bold; + color: var(--pst-color-text-muted) !important; + border-left: 2px solid var(--pst-color-text-base); + border-bottom: none !important; + padding-left: 0.5rem; +} + +nav.bd-links li > a:hover { + font-weight: 900; + color: var(--pst-color-link) !important; +} + +.bd-header .navbar-nav .dropdown button:hover { + color: white; +} + +.dropdown-item:hover { + font-weight: bold; + background-color: transparent; +} + +/* +################## +icon, button, logo +################## +*/ + +button, +input, +optgroup, +select, +textarea, +button:hover { + color: #ddd; +} + +.theme-switch-button { + border-color: #f8f9fa; +} + +button.btn.version-switcher__button { + border-color: var(--pst-color-border); + color: #ddd; +} + +button.version-switcher__button:hover { + color: #f8f8f2; +} + +button.version-switcher__button { + color: #f8f9fa; +} + +.search-button { + color: #ddd; +} + +kbd { + background-color: #f8f9fa; +} + +/* +##################################### +icon, button, logo for small screen +##################################### +*/ +@media screen and (max-width: 576px) { + html[data-theme="light"] .theme-switch-button span { + color: rgb(19, 18, 18) !important; + } + button.btn.version-switcher__button { + border-color: var(--pst-color-border); + color: var(--pst-color-text-base); + font-weight: 700; + } + button.btn.version-switcher__button { + border-color: var(--pst-color-border); + color: var(--pst-color-text-base); + } + button.version-switcher__button { + color: var(--pst-color-text-base); + } + .navbar-nav li a:focus, + .navbar-nav li a:hover, + .navbar-nav li.current > a { + color: var(--pst-color-text-base) !important; + font-weight: 700; + } + button, + input, + optgroup, + select, + textarea, + button:hover { + color: var(--pst-color-text-base); + } +} + +.theme-switch-button span { + color: #f8f9fa; +} + +.theme-switch-button span:hover { + color: var(--ansysGold); + border-color: white; +} + +.navbar-icon-links { + column-gap: 0.2rem; +} + +.search-button-field { + color: white; + background-color: transparent; +} + +.search-button-field:hover { + color: var(--pst-color-border); +} + +/* make the github logo white */ + +i.fa-github-square:before, +i.fa-square-github:before { + color: white; + font-size: 1rem; +} + +.version-switcher__menu a.list-group-item:hover { + background-color: #d09735 !important; + border-color: var(--pst-color-text-base) !important; + color: #000 !important; +} + +.version-switcher__menu a.list-group-item { + background-color: #f8f9fa; + border-color: var(--pst-color-border); + color: #000; +} + +.fa-wrench:before { + content: "\f0ad"; + color: white; +} + +.navbar-icon-links { + font-size: 1.5rem; + color: white; +} + +html[data-theme="light"] #pst-back-to-top { + background-color: var(--pst-color-link); +} +/* +############################## +image padding before and after +############################## +*/ + +img { + padding-top: 1em; + padding-bottom: 1em; +} + +html[data-theme="dark"] .bd-content img:not(.only-dark):not(.dark-light) { + background: transparent; +} + +img.logo__image { + padding-top: 0rem; + padding-bottom: 0rem; +} + +/* +########################## +Nav-bar entity right side. +########################## +*/ + +nav.bd-links li > a { + color: var(--pst-color-link); + font-size: 0.98rem; +} + +html[data-theme="light"] .highlight pre { + line-height: 125%; + font-size: 0.9em; +} + +html[data-theme="dark"] .highlight pre { + line-height: 125%; + font-size: 0.9em; +} + +.bd-toc { + padding-top: 5em; +} + +#version_switcher_button { + background-color: var(--pst-color-background); +} + +.editthispage a { + color: var(--pst-color-text-base); +} + +.list-group-item.active { + z-index: 2; + color: var(--pst-color-text-base) !important; +} + +/* +############## +Sphinx design +############## +*/ + +blockquote { + background-color: var(--pst-color-background); +} +.sd-sphinx-override, +.sd-sphinx-override * { + font-size: medium; + flex: auto; +} + +/* Sphinx-design tab */ + +/* Common styles for all screen sizes */ +.sd-tab-set > input:not(.focus-visible) + label { + outline: none; + font-size: large; + -webkit-tap-highlight-color: var(--pst-color-background) !important; + color: var(--pst-color-text-base); +} + +.sd-tab-set > input:checked + label + .sd-tab-content { + display: block; + font-size: medium; +} + +.sd-tab-set > input:checked + label + .sd-tab-content { + display: block; + font-size: 0.9rem; +} + +.sd-tab-content { + font-family: var(--pst-font-family-base); +} + +.bd-content .sd-tab-set > input:checked + label, +.bd-content .sd-tab-set > input:not(:checked) + label:hover { + color: var(--pst-color-text-base); + border-color: var(--pst-color-text-base); +} + +/* Media query for medium-sized screens */ +@media screen and (max-width: 768px) { + .sd-tab-set > input:not(.focus-visible) + label { + font-size: medium; + } +} + +/* Media query for small-sized screens */ +@media screen and (max-width: 576px) { + .sd-tab-set > input:not(.focus-visible) + label { + font-size: small; + } +} + +/* Sphinx-design card */ + +/* Common styles for all screen sizes */ +.sd-card .sd-card-text { + font-family: var(--pst-font-family-base) !important; + background-color: var(--pst-color-background) !important; +} + +.bd-content .sd-card .sd-card-header { + border: none; + background-color: transparent; + color: var(--pst-color-text-base) !important; + font-size: var(--pst-font-size-h5); + font-weight: bold; + font-family: var(--pst-font-family-base); + padding: 0.5rem 0rem 0.5rem 0rem; +} + +.sd-card .sd-card-footer .sd-card-text { + max-width: 220px; + margin-left: auto; + margin-right: auto; + font-family: var(--pst-font-family-base); +} + +.sd-card-title { + font-family: var(--pst-font-family-base-system); +} + +.bd-content .sd-card .sd-card-body, +.bd-content .sd-card .sd-card-footer, +.bd-content .sd-card .sd-card-text { + background-color: transparent; +} + +html[data-theme="dark"] .sd-shadow-sm { + box-shadow: 0 0.1rem 1rem rgba(250, 250, 250, 0.6) !important; +} + +html[data-theme="dark"] .sd-card-img-top[src*=".png"] { + filter: invert(0.82) brightness(0.8) contrast(1.2); +} + +/* Common styles for all screen sizes */ +.sd-card { + border-radius: 0; + padding: 10px 10px 10px 10px; + font-family: var(--pst-font-family-base) !important; +} + +/* Media query for medium-sized screens */ +@media screen and (max-width: 768px) { + .sd-card .sd-card-header { + font-size: var(--pst-font-size-h6); + } +} + +/* Media query for small-sized screens */ +@media screen and (max-width: 576px) { + .sd-card .sd-card-header { + font-size: var(--pst-font-size-h5); + } + .sd-card { + padding: 5px 5px 5px 5px; + } + .sd-sphinx-override, + .sd-sphinx-override * { + box-sizing: content-box !important; + } +} + +/* +Sphinx-design dropdown +*/ + +.bd-content details.sd-dropdown .sd-summary-title { + border: 1px solid var(--pst-color-text-base) !important; + color: var(--pst-color-text-base) !important; + font-family: var(monospace) !important; + font-size: medium; + text-align: left; + padding-left: 1rem; +} + +details.sd-dropdown summary.sd-card-header + div.sd-summary-content { + background-color: transparent; +} + +/* +################################# +Right side toctree color and font +################################# +*/ +.toc-entry a.nav-link { + padding: 0.125rem 1.5rem; + color: var(--pst-color-link); +} + +.toc-entry a.nav-link.active { + font-weight: bold; + color: var(--pst-color-text-base); + background-color: transparent; + border-left: 2px solid var(--pst-color-text-muted); +} + +.toc-h2 { + font-size: 0.98rem; + padding: 0.05em; +} + +.toc-h3 { + font-size: 0.96rem; +} + +.toc-h4 { + font-size: 0.9rem; +} + +.toc-entry a.nav-link:hover { + color: var(--pst-color-link); + text-decoration: none; + font-weight: 600; +} + +/* +########### +Directives +########### +*/ + +div.deprecated { + border-color: var(--pst-color-danger); + background-color: #dc354514; +} + +div.deprecated, +div.versionadded, +div.versionchanged { + background-color: transparent; +} + +.admonition, +div.admonition { + background-color: var(--pst-color-on-surface); +} + +/* Select only divisions that contain a dataframe, with enough specificity to override pydata css */ +div.nboutput + div.output_area.rendered_html.docutils.container:has(table.dataframe) { + background-color: transparent; +} + +/* +############ +Border lines +############ +*/ +.bd-sidebar-primary, +.bd-sidebar-secondary { + max-height: calc(100vh - var(--pst-header-height) - 1vh); +} + +/* +################# +search hide match +################# +*/ + +div#searchbox p.highlight-link a { + background-color: var(--pst-color-search-match); +} + +.header-article__inner { + padding: 0 1rem; +} + +.table > :not(caption) > * > * { + background-color: transparent !important; + color: var(--pst-color-text-base) !important; +} + +nav.bd-links li > a { + text-decoration: none; +} + +.bd-header .navbar-nav li a.nav-link:hover { + text-decoration: none; + font-weight: 600; +} + +a { + text-decoration: none; +} + +a:active, +a:visited, +a:visited:hover, +a:active:hover, +a:hover { + text-decoration: underline; + color: var(--pst-color-link); + font-weight: 500; +} + +a:visited, +a:visited:hover { + color: var(--pst-color-link-visted); +} diff --git a/_static/css/breadcrumbs.css b/_static/css/breadcrumbs.css new file mode 100644 index 00000000..60fe0155 --- /dev/null +++ b/_static/css/breadcrumbs.css @@ -0,0 +1,70 @@ +/* Provided by the Sphinx base theme template at build time, +styles exclusively for the ansys-sphinx-theme classes. */ + +@import "ansys-sphinx-theme.css"; + +/* +############ +breadcrumbs +############ +*/ + +#breadcrumbs-spacer { + border-right: 10rem solid var(--pst-color-background); +} + +div.related > ul { + padding: 10px 0 20px 0; +} + +*, +:after, +:before { + box-sizing: border-box; +} + +/* +########################### +vesrion warning announcement +############################ +*/ + +#announcement_msg { + display: flex; + justify-content: center; + position: relative; + width: 100%; + padding: 0.5rem 12.5%; + text-align: center; +} + +#announcement_msg :after { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + background-color: rgb(223, 95, 114); + opacity: 0.2; + content: ""; + z-index: -1; +} + +#announcement_msg :empty { + display: none; +} + +#announcement_msg p { + font-weight: bold; + margin: auto; + color: black; +} + +html[data-theme="dark"] #announcement_msg :after { + background-color: lightpink; + opacity: 0.5; +} + +#announcement_msg a { + color: #1e6ddc; +} diff --git a/_static/css/meilisearch.css b/_static/css/meilisearch.css new file mode 100644 index 00000000..97fa91e1 --- /dev/null +++ b/_static/css/meilisearch.css @@ -0,0 +1,194 @@ +@import "https://cdn.jsdelivr.net/npm/docs-searchbar.js@latest/dist/cdn/docs-searchbar.min.css"; +@import "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"; + +div[data-ds-theme] .searchbox { + overflow-y: scroll; + margin: auto; +} + +.docs-searchbar-suggestion--category-header { + background-color: var(--pst-color-border); + border-radius: 7px; + text-align: left; +} + +/* Styles for screens with a width of 576px or less */ +@media screen and (max-width: 576px) { + div[data-ds-theme] .searchbox { + width: 100%; + max-width: 100%; + } + .bd-search input { + width: 100% !important; + } + + .index-select { + width: 30%; + } +} + +/* Styles for screens with a width of 1200px or less */ +@media screen and (min-width: 1200px) { + div[data-ds-theme] .searchbox { + width: 100%; + max-width: 100%; + } + + .bd-search input { + width: 600px !important; + } + .index-select { + width: 250px; + } +} +.dsb-suggestions { + width: 100%; + max-width: 140%; +} + +div[data-ds-theme] .meilisearch-autocomplete .dsb-dropdown-menu { + max-width: 200%; + min-width: 100%; + width: 140%; +} +div[data-ds-theme] .meilisearch-autocomplete .docs-searchbar-suggestion { + width: 100%; +} + +div[data-ds-theme] .searchbox input { + height: 32px; + border-radius: 8px; + font-size: 18px; + font-family: "Open Sans", sans-serif; + box-shadow: 0px 0px 8px darkgrey; +} + +.docs-searchbar-footer { + display: none; +} + +.docs-searchbar-footer { + display: none; +} + +[class*="docs-searchbar-suggestion"] { + text-decoration: none; +} + +.docs-searchbar-suggestion--highlight { + box-shadow: none !important; +} + +.container { + display: flex; + justify-content: center; + align-items: right; +} + +div[data-ds-theme] .meilisearch-autocomplete { + text-align: center; + color: var(--pst-color-text-base); +} + +#search-bar-input { + background-color: var(--pst-color-background); + color: var(--pst-color-text-base); + font-size: var(--pst-font-size-icon); + position: relative; + padding-left: 1rem; + outline-color: var(--pst-color-border); + margin-left: 1rem; +} + +.index-select { + color: var(--pst-color-text-base); + background: var(--pst-color-background); + height: 47px; + border: 1px solid var(--pst-color-border); + border-radius: 0.25rem; + font-size: 20px; + font-family: "Open Sans", sans-serif; + box-shadow: 0px 0px 20px var(--pst-color-border); + padding: 0 10px 0px 10px; + margin-left: 5px; +} + +div[data-ds-theme] + .meilisearch-autocomplete + .dsb-dropdown-menu + [class^="dsb-dataset-"] { + position: relative; + border: 1px solid #d9d9d9; + background: var(--pst-color-background); + border-radius: 4px; + padding: 0 8px 8px; +} +div[data-ds-theme] .meilisearch-autocomplete .dsb-dropdown-menu { + max-height: 600px !important; + overflow-y: auto !important; + border: 1px solid #ccc; +} + +div[data-ds-theme] .meilisearch-autocomplete .docs-searchbar-suggestion { + background: var(--pst-color-background); +} + +div[data-ds-theme] + .meilisearch-autocomplete + .docs-searchbar-suggestion--highlight { + color: var(--pst-color-info) !important; + font-weight: 900; + background: transparent; + padding: 0 0.05em; +} + +div[data-ds-theme] + .meilisearch-autocomplete + .docs-searchbar-suggestion--subcategory-column { + width: None; + text-align: left; +} + +div[data-ds-theme] + .meilisearch-autocomplete + .docs-searchbar-suggestion--content { + display: block; +} + +div[data-ds-theme] .meilisearch-autocomplete .docs-searchbar-suggestion--title { + margin-bottom: 4px; + color: var(--pst-color-text-base); + font-size: 0.9em; + font-weight: 700; + width: 100%; +} + +/* Styling the scrollbar */ +div[data-ds-theme] + .meilisearch-autocomplete + .dsb-dropdown-menu::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; +} + +div[data-ds-theme] + .meilisearch-autocomplete + .dsb-dropdown-menu::-webkit-scrollbar-thumb { + background: var(--pst-color-text-base); + border-radius: inherit; +} + +div[data-ds-theme] + .meilisearch-autocomplete + .dsb-dropdown-menu::-webkit-scrollbar-track { + background: var(--pst-color-background); +} + +.bd-search { + margin-bottom: 200px; + gap: 0em; + border: 0px solid var(--pst-color-border); +} +#search-icon { + font-size: 1.5rem; +} diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..d06a71d7 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..1378c7c1 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.1.dev0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/fonts/SourceSansPro-Light.ttf b/_static/fonts/SourceSansPro-Light.ttf new file mode 100644 index 00000000..348871ac Binary files /dev/null and b/_static/fonts/SourceSansPro-Light.ttf differ diff --git a/_static/fonts/SourceSansPro-Regular.ttf b/_static/fonts/SourceSansPro-Regular.ttf new file mode 100644 index 00000000..b422bf43 Binary files /dev/null and b/_static/fonts/SourceSansPro-Regular.ttf differ diff --git a/_static/fonts/SourceSansPro-SemiBold.ttf b/_static/fonts/SourceSansPro-SemiBold.ttf new file mode 100644 index 00000000..2908e0d7 Binary files /dev/null and b/_static/fonts/SourceSansPro-SemiBold.ttf differ diff --git a/_static/js/download_target_blank.js b/_static/js/download_target_blank.js new file mode 100644 index 00000000..9f84c70f --- /dev/null +++ b/_static/js/download_target_blank.js @@ -0,0 +1,6 @@ +/* Add target="_blank" attribute to all hyperlinks generated by the ReST :download: directive. + * This will ensure the links open in a new tab. */ + +$(document).ready(function () { + $("a.download").attr("target", "_blank"); +}); diff --git a/_static/js/meilisearch_theme_wrap.js b/_static/js/meilisearch_theme_wrap.js new file mode 100644 index 00000000..4309eea5 --- /dev/null +++ b/_static/js/meilisearch_theme_wrap.js @@ -0,0 +1,62 @@ +require.config({ + paths: { + docsSearchBar: + "https://cdn.jsdelivr.net/npm/docs-searchbar.js@2.5.0/dist/cdn/docs-searchbar.min", + }, +}); + +require(["docsSearchBar"], function (docsSearchBar) { + document.body.style.overflow = "hidden !important"; + // Initialize the MeiliSearch bar with the given API key and host + var theSearchBar = docsSearchBar({ + hostUrl: HOST_URL, + apiKey: API_KEY, + indexUid: indexUid, + inputSelector: "#search-bar-input", + debug: true, // Set debug to true if you want to inspect the dropdown + meilisearchOptions: { + limit: 10, + }, + }); + + // Function to show the magnifier icon + function showMagnifierIcon() { + var searchIcon = document.getElementById("search-icon"); + searchIcon.classList.remove("fa-spinner", "fa-spin"); // Remove spinner classes + searchIcon.classList.add("fa-magnifying-glass"); // Add magnifier icon class + } + + // Function to show the spinner icon + function showSpinnerIcon() { + var searchIcon = document.getElementById("search-icon"); + if (searchIcon) { + searchIcon.classList.remove("fa-magnifying-glass"); // Remove magnifier icon class + searchIcon.classList.add("fa-spinner", "fa-spin"); // Add spinner classes + } + } + + document + .getElementById("search-bar-input") + .addEventListener("input", function () { + const inputValue = this.value.trim(); // Trim whitespace from input value + // Show the spinner icon only when there is input and no suggestions + if ( + inputValue && + document.querySelectorAll(".dsb-suggestion").length === 0 + ) { + showSpinnerIcon(); + } else { + // Hide the spinner icon when there are suggestions + showMagnifierIcon(); + } + }); + + // Listen for changes in the dropdown selector and update the index uid and suggestion accordingly + document + .getElementById("indexUidSelector") + .addEventListener("change", function () { + theSearchBar.indexUid = this.value; + theSearchBar.suggestionIndexUid = this.value; + theSearchBar.autocomplete.autocomplete.setVal(""); + }); +}); diff --git a/_static/js/table.js b/_static/js/table.js new file mode 100644 index 00000000..a080ead1 --- /dev/null +++ b/_static/js/table.js @@ -0,0 +1,3 @@ +$(document).ready(function () { + $("table.datatable").DataTable(); +}); diff --git a/_static/jupyter-sphinx.css b/_static/jupyter-sphinx.css new file mode 100644 index 00000000..87724dfc --- /dev/null +++ b/_static/jupyter-sphinx.css @@ -0,0 +1,123 @@ +/* Stylesheet for jupyter-sphinx + +These styles mimic the Jupyter HTML styles. + +The default CSS (Cascading Style Sheet) class structure of jupyter-sphinx +is the following: + +jupyter_container + code_cell (optional) + stderr (optional) + output (optional) + +If the code_cell is not displayed, then there is not a jupyter_container, and +the output is provided without CSS. + +This stylesheet attempts to override the defaults of all packaged Sphinx themes +to display jupter-sphinx cells in a Jupyter-like style. + +If you want to adjust the styles, add additional custom CSS to override these +styles. + +After a build, this stylesheet is loaded from ./_static/jupyter-sphinx.css . + +*/ + + +div.jupyter_container { + padding: .4em; + margin: 0 0 .4em 0; + background-color: #FFFF; + border: 1px solid #CCC; + -moz-box-shadow: 2px 2px 4px rgba(87, 87, 87, 0.2); + -webkit-box-shadow: 2px 2px 4px rgba(87, 87, 87, 0.2); + box-shadow: 2px 2px 4px rgba(87, 87, 87, 0.2); +} +.jupyter_container div.code_cell { + border: 1px solid #cfcfcf; + border-radius: 2px; + background-color: #f7f7f7; + margin: 0 0; + overflow: auto; +} + +.jupyter_container div.code_cell pre { + padding: 4px; + margin: 0 0; + background-color: #f7f7f7; + border: none; + background: none; + box-shadow: none; + -webkit-box-shadow: none; /* for nature */ + -moz-box-shadow: none; /* for nature */ +} + +.jupyter_container div.code_cell * { + margin: 0 0; +} +div.jupyter_container div.highlight { + background-color: #f7f7f7; /* for haiku */ +} +div.jupyter_container { + padding: 0; + margin: 0; +} + +/* Prevent alabaster breaking highlight alignment */ +div.jupyter_container .hll { + padding: 0; + margin: 0; +} + +/* overrides for sphinx_rtd_theme */ +.rst-content .jupyter_container div[class^='highlight'], +.document .jupyter_container div[class^='highlight'], +.rst-content .jupyter_container pre.literal-block { + border:none; + margin: 0; + padding: 0; + background: none; + padding: 3px; + background-color: transparent; +} +/* restore Mathjax CSS, as it assumes a vertical margin. */ +.jupyter_container .MathJax_Display { + margin: 1em 0em; + text-align: center; +} +.jupyter_container .stderr { + background-color: #FCC; + border: none; + padding: 3px; +} +.jupyter_container .output { + border: none; +} +.jupyter_container div.output pre { + background-color: white; + background: none; + padding: 4px; + border: none; + box-shadow: none; + -webkit-box-shadow: none; /* for nature */ + -moz-box-shadow: none; /* for nature */ +} +.jupyter_container .code_cell td.linenos { + text-align: right; + padding: 4px 4px 4px 8px; + border-right: 1px solid #cfcfcf; + color: #999; +} +.jupyter_container .output .highlight { + background-color: #ffffff; +} +/* combine sequential jupyter cells, + by moving sequential ones up higher on y-axis */ +div.jupyter_container + div.jupyter_container { + margin: -.5em 0 .4em 0; +} + +/* Fix for sphinx_rtd_theme spacing after jupyter_container #91 */ +.rst-content .jupyter_container { + margin: 0 0 24px 0; +} diff --git a/_static/jupyterlite_badge_logo.svg b/_static/jupyterlite_badge_logo.svg new file mode 100644 index 00000000..5de36d7f --- /dev/null +++ b/_static/jupyterlite_badge_logo.svg @@ -0,0 +1,3 @@ + + +launchlaunchlitelite \ No newline at end of file diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 00000000..250f5665 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 00000000..d96755fd Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/no_image.png b/_static/no_image.png new file mode 100644 index 00000000..8c2d48d5 Binary files /dev/null and b/_static/no_image.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 00000000..7107cec9 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pyansys-logo-black-cropped.png b/_static/pyansys-logo-black-cropped.png new file mode 100644 index 00000000..e28bc3de Binary files /dev/null and b/_static/pyansys-logo-black-cropped.png differ diff --git a/_static/pyansys-logo-white-cropped.png b/_static/pyansys-logo-white-cropped.png new file mode 100644 index 00000000..91b50f98 Binary files /dev/null and b/_static/pyansys-logo-white-cropped.png differ diff --git a/_static/pyansys_dark.png b/_static/pyansys_dark.png new file mode 100644 index 00000000..b0ff9e19 Binary files /dev/null and b/_static/pyansys_dark.png differ diff --git a/_static/pyansys_dark_square.png b/_static/pyansys_dark_square.png new file mode 100644 index 00000000..2b271562 Binary files /dev/null and b/_static/pyansys_dark_square.png differ diff --git a/_static/pyansys_light.png b/_static/pyansys_light.png new file mode 100644 index 00000000..9f31babd Binary files /dev/null and b/_static/pyansys_light.png differ diff --git a/_static/pyansys_light_square.png b/_static/pyansys_light_square.png new file mode 100644 index 00000000..3e0706a5 Binary files /dev/null and b/_static/pyansys_light_square.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..997797f2 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,152 @@ +html[data-theme="light"] .highlight pre { line-height: 125%; } +html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight .hll { background-color: #7971292e } +html[data-theme="light"] .highlight { background: #fefefe; color: #545454 } +html[data-theme="light"] .highlight .c { color: #797129 } /* Comment */ +html[data-theme="light"] .highlight .err { color: #d91e18 } /* Error */ +html[data-theme="light"] .highlight .k { color: #7928a1 } /* Keyword */ +html[data-theme="light"] .highlight .l { color: #797129 } /* Literal */ +html[data-theme="light"] .highlight .n { color: #545454 } /* Name */ +html[data-theme="light"] .highlight .o { color: #008000 } /* Operator */ +html[data-theme="light"] .highlight .p { color: #545454 } /* Punctuation */ +html[data-theme="light"] .highlight .ch { color: #797129 } /* Comment.Hashbang */ +html[data-theme="light"] .highlight .cm { color: #797129 } /* Comment.Multiline */ +html[data-theme="light"] .highlight .cp { color: #797129 } /* Comment.Preproc */ +html[data-theme="light"] .highlight .cpf { color: #797129 } /* Comment.PreprocFile */ +html[data-theme="light"] .highlight .c1 { color: #797129 } /* Comment.Single */ +html[data-theme="light"] .highlight .cs { color: #797129 } /* Comment.Special */ +html[data-theme="light"] .highlight .gd { color: #007faa } /* Generic.Deleted */ +html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="light"] .highlight .gh { color: #007faa } /* Generic.Heading */ +html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="light"] .highlight .gu { color: #007faa } /* Generic.Subheading */ +html[data-theme="light"] .highlight .kc { color: #7928a1 } /* Keyword.Constant */ +html[data-theme="light"] .highlight .kd { color: #7928a1 } /* Keyword.Declaration */ +html[data-theme="light"] .highlight .kn { color: #7928a1 } /* Keyword.Namespace */ +html[data-theme="light"] .highlight .kp { color: #7928a1 } /* Keyword.Pseudo */ +html[data-theme="light"] .highlight .kr { color: #7928a1 } /* Keyword.Reserved */ +html[data-theme="light"] .highlight .kt { color: #797129 } /* Keyword.Type */ +html[data-theme="light"] .highlight .ld { color: #797129 } /* Literal.Date */ +html[data-theme="light"] .highlight .m { color: #797129 } /* Literal.Number */ +html[data-theme="light"] .highlight .s { color: #008000 } /* Literal.String */ +html[data-theme="light"] .highlight .na { color: #797129 } /* Name.Attribute */ +html[data-theme="light"] .highlight .nb { color: #797129 } /* Name.Builtin */ +html[data-theme="light"] .highlight .nc { color: #007faa } /* Name.Class */ +html[data-theme="light"] .highlight .no { color: #007faa } /* Name.Constant */ +html[data-theme="light"] .highlight .nd { color: #797129 } /* Name.Decorator */ +html[data-theme="light"] .highlight .ni { color: #008000 } /* Name.Entity */ +html[data-theme="light"] .highlight .ne { color: #7928a1 } /* Name.Exception */ +html[data-theme="light"] .highlight .nf { color: #007faa } /* Name.Function */ +html[data-theme="light"] .highlight .nl { color: #797129 } /* Name.Label */ +html[data-theme="light"] .highlight .nn { color: #545454 } /* Name.Namespace */ +html[data-theme="light"] .highlight .nx { color: #545454 } /* Name.Other */ +html[data-theme="light"] .highlight .py { color: #007faa } /* Name.Property */ +html[data-theme="light"] .highlight .nt { color: #007faa } /* Name.Tag */ +html[data-theme="light"] .highlight .nv { color: #d91e18 } /* Name.Variable */ +html[data-theme="light"] .highlight .ow { color: #7928a1 } /* Operator.Word */ +html[data-theme="light"] .highlight .pm { color: #545454 } /* Punctuation.Marker */ +html[data-theme="light"] .highlight .w { color: #545454 } /* Text.Whitespace */ +html[data-theme="light"] .highlight .mb { color: #797129 } /* Literal.Number.Bin */ +html[data-theme="light"] .highlight .mf { color: #797129 } /* Literal.Number.Float */ +html[data-theme="light"] .highlight .mh { color: #797129 } /* Literal.Number.Hex */ +html[data-theme="light"] .highlight .mi { color: #797129 } /* Literal.Number.Integer */ +html[data-theme="light"] .highlight .mo { color: #797129 } /* Literal.Number.Oct */ +html[data-theme="light"] .highlight .sa { color: #008000 } /* Literal.String.Affix */ +html[data-theme="light"] .highlight .sb { color: #008000 } /* Literal.String.Backtick */ +html[data-theme="light"] .highlight .sc { color: #008000 } /* Literal.String.Char */ +html[data-theme="light"] .highlight .dl { color: #008000 } /* Literal.String.Delimiter */ +html[data-theme="light"] .highlight .sd { color: #008000 } /* Literal.String.Doc */ +html[data-theme="light"] .highlight .s2 { color: #008000 } /* Literal.String.Double */ +html[data-theme="light"] .highlight .se { color: #008000 } /* Literal.String.Escape */ +html[data-theme="light"] .highlight .sh { color: #008000 } /* Literal.String.Heredoc */ +html[data-theme="light"] .highlight .si { color: #008000 } /* Literal.String.Interpol */ +html[data-theme="light"] .highlight .sx { color: #008000 } /* Literal.String.Other */ +html[data-theme="light"] .highlight .sr { color: #d91e18 } /* Literal.String.Regex */ +html[data-theme="light"] .highlight .s1 { color: #008000 } /* Literal.String.Single */ +html[data-theme="light"] .highlight .ss { color: #007faa } /* Literal.String.Symbol */ +html[data-theme="light"] .highlight .bp { color: #797129 } /* Name.Builtin.Pseudo */ +html[data-theme="light"] .highlight .fm { color: #007faa } /* Name.Function.Magic */ +html[data-theme="light"] .highlight .vc { color: #d91e18 } /* Name.Variable.Class */ +html[data-theme="light"] .highlight .vg { color: #d91e18 } /* Name.Variable.Global */ +html[data-theme="light"] .highlight .vi { color: #d91e18 } /* Name.Variable.Instance */ +html[data-theme="light"] .highlight .vm { color: #797129 } /* Name.Variable.Magic */ +html[data-theme="light"] .highlight .il { color: #797129 } /* Literal.Number.Integer.Long */ +html[data-theme="dark"] .highlight pre { line-height: 125%; } +html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } +html[data-theme="dark"] .highlight { background: #2b2b2b; color: #f8f8f2 } +html[data-theme="dark"] .highlight .c { color: #ffd900 } /* Comment */ +html[data-theme="dark"] .highlight .err { color: #ffa07a } /* Error */ +html[data-theme="dark"] .highlight .k { color: #dcc6e0 } /* Keyword */ +html[data-theme="dark"] .highlight .l { color: #ffd900 } /* Literal */ +html[data-theme="dark"] .highlight .n { color: #f8f8f2 } /* Name */ +html[data-theme="dark"] .highlight .o { color: #abe338 } /* Operator */ +html[data-theme="dark"] .highlight .p { color: #f8f8f2 } /* Punctuation */ +html[data-theme="dark"] .highlight .ch { color: #ffd900 } /* Comment.Hashbang */ +html[data-theme="dark"] .highlight .cm { color: #ffd900 } /* Comment.Multiline */ +html[data-theme="dark"] .highlight .cp { color: #ffd900 } /* Comment.Preproc */ +html[data-theme="dark"] .highlight .cpf { color: #ffd900 } /* Comment.PreprocFile */ +html[data-theme="dark"] .highlight .c1 { color: #ffd900 } /* Comment.Single */ +html[data-theme="dark"] .highlight .cs { color: #ffd900 } /* Comment.Special */ +html[data-theme="dark"] .highlight .gd { color: #00e0e0 } /* Generic.Deleted */ +html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="dark"] .highlight .gh { color: #00e0e0 } /* Generic.Heading */ +html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="dark"] .highlight .gu { color: #00e0e0 } /* Generic.Subheading */ +html[data-theme="dark"] .highlight .kc { color: #dcc6e0 } /* Keyword.Constant */ +html[data-theme="dark"] .highlight .kd { color: #dcc6e0 } /* Keyword.Declaration */ +html[data-theme="dark"] .highlight .kn { color: #dcc6e0 } /* Keyword.Namespace */ +html[data-theme="dark"] .highlight .kp { color: #dcc6e0 } /* Keyword.Pseudo */ +html[data-theme="dark"] .highlight .kr { color: #dcc6e0 } /* Keyword.Reserved */ +html[data-theme="dark"] .highlight .kt { color: #ffd900 } /* Keyword.Type */ +html[data-theme="dark"] .highlight .ld { color: #ffd900 } /* Literal.Date */ +html[data-theme="dark"] .highlight .m { color: #ffd900 } /* Literal.Number */ +html[data-theme="dark"] .highlight .s { color: #abe338 } /* Literal.String */ +html[data-theme="dark"] .highlight .na { color: #ffd900 } /* Name.Attribute */ +html[data-theme="dark"] .highlight .nb { color: #ffd900 } /* Name.Builtin */ +html[data-theme="dark"] .highlight .nc { color: #00e0e0 } /* Name.Class */ +html[data-theme="dark"] .highlight .no { color: #00e0e0 } /* Name.Constant */ +html[data-theme="dark"] .highlight .nd { color: #ffd900 } /* Name.Decorator */ +html[data-theme="dark"] .highlight .ni { color: #abe338 } /* Name.Entity */ +html[data-theme="dark"] .highlight .ne { color: #dcc6e0 } /* Name.Exception */ +html[data-theme="dark"] .highlight .nf { color: #00e0e0 } /* Name.Function */ +html[data-theme="dark"] .highlight .nl { color: #ffd900 } /* Name.Label */ +html[data-theme="dark"] .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +html[data-theme="dark"] .highlight .nx { color: #f8f8f2 } /* Name.Other */ +html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */ +html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */ +html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */ +html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */ +html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */ +html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */ +html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */ +html[data-theme="dark"] .highlight .mh { color: #ffd900 } /* Literal.Number.Hex */ +html[data-theme="dark"] .highlight .mi { color: #ffd900 } /* Literal.Number.Integer */ +html[data-theme="dark"] .highlight .mo { color: #ffd900 } /* Literal.Number.Oct */ +html[data-theme="dark"] .highlight .sa { color: #abe338 } /* Literal.String.Affix */ +html[data-theme="dark"] .highlight .sb { color: #abe338 } /* Literal.String.Backtick */ +html[data-theme="dark"] .highlight .sc { color: #abe338 } /* Literal.String.Char */ +html[data-theme="dark"] .highlight .dl { color: #abe338 } /* Literal.String.Delimiter */ +html[data-theme="dark"] .highlight .sd { color: #abe338 } /* Literal.String.Doc */ +html[data-theme="dark"] .highlight .s2 { color: #abe338 } /* Literal.String.Double */ +html[data-theme="dark"] .highlight .se { color: #abe338 } /* Literal.String.Escape */ +html[data-theme="dark"] .highlight .sh { color: #abe338 } /* Literal.String.Heredoc */ +html[data-theme="dark"] .highlight .si { color: #abe338 } /* Literal.String.Interpol */ +html[data-theme="dark"] .highlight .sx { color: #abe338 } /* Literal.String.Other */ +html[data-theme="dark"] .highlight .sr { color: #ffa07a } /* Literal.String.Regex */ +html[data-theme="dark"] .highlight .s1 { color: #abe338 } /* Literal.String.Single */ +html[data-theme="dark"] .highlight .ss { color: #00e0e0 } /* Literal.String.Symbol */ +html[data-theme="dark"] .highlight .bp { color: #ffd900 } /* Name.Builtin.Pseudo */ +html[data-theme="dark"] .highlight .fm { color: #00e0e0 } /* Name.Function.Magic */ +html[data-theme="dark"] .highlight .vc { color: #ffa07a } /* Name.Variable.Class */ +html[data-theme="dark"] .highlight .vg { color: #ffa07a } /* Name.Variable.Global */ +html[data-theme="dark"] .highlight .vi { color: #ffa07a } /* Name.Variable.Instance */ +html[data-theme="dark"] .highlight .vm { color: #ffd900 } /* Name.Variable.Magic */ +html[data-theme="dark"] .highlight .il { color: #ffd900 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 00000000..bda8a602 --- /dev/null +++ b/_static/scripts/bootstrap.js @@ -0,0 +1,3 @@ +/*! For license information please see bootstrap.js.LICENSE.txt */ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>T,applyStyles:()=>D,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>g,beforeWrite:()=>E,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>St,createPopperBase:()=>Lt,createPopperLite:()=>Dt,detectOverflow:()=>gt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>C,offset:()=>wt,placements:()=>m,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>Et,preventOverflow:()=>At,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>A});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),m=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),g="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",E="beforeWrite",A="write",T="afterWrite",C=[g,_,b,v,y,w,E,A,T];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const D={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function $(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function j(){return!/^((?!chrome|android).)*safari/i.test(M())}function F(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!j()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function H(t){var e=F(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&S(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function R(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||R(t)}function V(t){return L(t)&&"fixed"!==W(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===W(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===W(t).position)return null;var i=q(t);for(S(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=W(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=$(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),g=H(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=Q(T,O,C),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=o,C=i,O=window;if(p){var k=Y(r),L="clientHeight",S="clientWidth";k===x(r)&&"static"!==W(k=R(r)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(C=n,y-=(g&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(T=s,b-=(g&&k===O&&O.visualViewport?O.visualViewport.width:k[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&Z),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:$(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return F(R(t)).left+lt(t).scrollLeft}function ht(t){var e=W(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(q(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(q(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=R(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=F(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=R(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===W(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(t)))}function mt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?$(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var m=d?K(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case l:e[m]=e[m]-(r[g]/2-a[g]/2);break;case c:e[m]=e[m]+(r[g]/2-a[g]/2)}}return e}function gt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,m=o.boundary,g=void 0===m?h:m,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,E=void 0!==w&&w,A=o.padding,T=void 0===A?0:A,C=X("number"!=typeof T?T:U(T,a)),x=y===u?f:u,S=t.rects.popper,D=t.elements[E?x:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(q(t)),i=["absolute","fixed"].indexOf(W(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&B(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k(D)?D:D.contextElement||R(t.elements.popper),g,b,p),P=F(t.elements.reference),M=mt({reference:P,element:S,strategy:"absolute",placement:l}),j=ft(Object.assign({},S,M)),H=y===u?j:P,z={top:$.top-H.top+C.top,bottom:H.bottom-$.bottom+C.bottom,left:$.left-H.left+C.left,right:H.right-$.right+C.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,g=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,E=c.flipVariations,A=void 0===E||E,T=c.allowedAutoPlacements,C=e.options.placement,O=$(C),x=_||(O!==C&&A?function(t){if($(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(C):[ot(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat($(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var g=f.reduce((function(e,i){return e[i]=gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[$(i)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,I=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=gt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?s:o:F?n:i;L[B]>S[B]&&(z=ot(z));var R=ot(z),q=[];if(u&&q.push(W[j]<=0),g&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,I=!1;break}D.set(M,q)}if(I)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=gt(e,{elementContext:"reference"}),a=gt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,n){return t[n]=function(t,e,n){var r=$(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,m=r.altBoundary,g=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=gt(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=$(e.placement),A=J(e.placement),T=!A,C=K(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?i:o,B="y"===C?n:s,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[B],V=b?-L[W]/2:0,X=A===l?k[W]:L[W],U=A===l?-L[W]:-k[W],G=e.elements.arrow,Z=b&&G?H(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[B],nt=Q(0,k[W],Z[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:X-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==P?void 0:P[C])?j:0,ct=z+ot-lt,ht=Q(b?N(R,z+st-lt-at):R,z,b?I(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?i:o,ft="x"===C?n:s,pt=x[O],mt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(E),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,Et):Q(b?wt:_t,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Tt(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=R(e),l=F(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=F(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ct(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i$t.has(t)&&$t.get(t).get(e)||null,remove(t,e){if(!$t.has(t))return;const i=$t.get(t);i.delete(e),0===i.size&&$t.delete(t)}},Nt="transitionend",Pt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Mt=t=>{t.dispatchEvent(new Event(Nt))},jt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>jt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Pt(t)):null,Ht=t=>{if(!jt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Bt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Wt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Wt(t.parentNode):null},zt=()=>{},Rt=t=>{t.offsetHeight},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=qt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Nt,o),Qt(t))};e.addEventListener(Nt,o),setTimeout((()=>{s||Mt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&ce(t,e,i,r.callable,r.delegationSelector)}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(Zt,"");a&&!e.includes(s)||ce(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=qt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=fe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function pe(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function me(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ge={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${me(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${me(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=pe(t.dataset[n])}return e},getDataAttribute:(t,e)=>pe(t.getAttribute(`data-bs-${me(e)}`))};class _e{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=jt(e)?ge.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...jt(e)?ge.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=jt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class be extends _e{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),It.set(this._element,this.constructor.DATA_KEY,this))}dispose(){It.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return It.get(Ft(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ve=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?Pt(i.trim()):null}return e},ye={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Bt(t)&&Ht(t)))},getSelectorFromElement(t){const e=ve(t);return e&&ye.findOne(e)?e:null},getElementFromSelector(t){const e=ve(t);return e?ye.findOne(e):null},getMultipleElementsFromSelector(t){const e=ve(t);return e?ye.find(e):[]}},we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Bt(this))return;const s=ye.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ee=".bs.alert",Ae=`close${Ee}`,Te=`closed${Ee}`;class Ce extends be{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ae).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Te),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Ce.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Ce,"close"),Kt(Ce);const Oe='[data-bs-toggle="button"]';class xe extends be{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke=".bs.swipe",Le=`touchstart${ke}`,Se=`touchmove${ke}`,De=`touchend${ke}`,$e=`pointerdown${ke}`,Ie=`pointerup${ke}`,Ne={endCallback:null,leftCallback:null,rightCallback:null},Pe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends _e{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ne}static get DefaultType(){return Pe}static get NAME(){return"swipe"}dispose(){ue.off(this._element,ke)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,$e,(t=>this._start(t))),ue.on(this._element,Ie,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,Le,(t=>this._start(t))),ue.on(this._element,Se,(t=>this._move(t))),ue.on(this._element,De,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const je=".bs.carousel",Fe=".data-api",He="next",Be="prev",We="left",ze="right",Re=`slide${je}`,qe=`slid${je}`,Ve=`keydown${je}`,Ye=`mouseenter${je}`,Ke=`mouseleave${je}`,Qe=`dragstart${je}`,Xe=`load${je}${Fe}`,Ue=`click${je}${Fe}`,Ge="carousel",Je="active",Ze=".active",ti=".carousel-item",ei=Ze+ti,ii={ArrowLeft:ze,ArrowRight:We},ni={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},si={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class oi extends be{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ye.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ge&&this.cycle()}static get Default(){return ni}static get DefaultType(){return si}static get NAME(){return"carousel"}next(){this._slide(He)}nextWhenVisible(){!document.hidden&&Ht(this._element)&&this.next()}prev(){this._slide(Be)}pause(){this._isSliding&&Mt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,qe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,qe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?He:Be;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ve,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ye,(()=>this.pause())),ue.on(this._element,Ke,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ye.find(".carousel-item img",this._element))ue.on(t,Qe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(We)),rightCallback:()=>this._slide(this._directionToOrder(ze)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ii[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ye.findOne(Ze,this._indicatorsElement);e.classList.remove(Je),e.removeAttribute("aria-current");const i=ye.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Je),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===He,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Rt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Je),i.classList.remove(Je,c,l),this._isSliding=!1,r(qe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ye.findOne(ei,this._element)}_getItems(){return ye.find(ti,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===We?Be:He:t===We?He:Be}_orderToDirection(t){return Yt()?t===Be?We:ze:t===Be?ze:We}static jQueryInterface(t){return this.each((function(){const e=oi.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ue,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=ye.getElementFromSelector(this);if(!e||!e.classList.contains(Ge))return;t.preventDefault();const i=oi.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ge.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Xe,(()=>{const t=ye.find('[data-bs-ride="carousel"]');for(const e of t)oi.getOrCreateInstance(e)})),Kt(oi);const ri=".bs.collapse",ai=`show${ri}`,li=`shown${ri}`,ci=`hide${ri}`,hi=`hidden${ri}`,di=`click${ri}.data-api`,ui="show",fi="collapse",pi="collapsing",mi=`:scope .${fi} .${fi}`,gi='[data-bs-toggle="collapse"]',_i={parent:null,toggle:!0},bi={parent:"(null|element)",toggle:"boolean"};class vi extends be{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ye.find(gi);for(const t of i){const e=ye.getSelectorFromElement(t),i=ye.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return _i}static get DefaultType(){return bi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>vi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,ai).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(fi),this._element.classList.add(pi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi,ui),this._element.style[e]="",ue.trigger(this._element,li)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,ci).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Rt(this._element),this._element.classList.add(pi),this._element.classList.remove(fi,ui);for(const t of this._triggerArray){const e=ye.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi),ue.trigger(this._element,hi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ui)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gi);for(const e of t){const t=ye.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ye.find(mi,this._config.parent);return ye.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=vi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,di,gi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of ye.getMultipleElementsFromSelector(this))vi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(vi);const yi="dropdown",wi=".bs.dropdown",Ei=".data-api",Ai="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ei}`,Si=`keydown${wi}${Ei}`,Di=`keyup${wi}${Ei}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=Yt()?"top-end":"top-start",ji=Yt()?"top-start":"top-end",Fi=Yt()?"bottom-end":"bottom-start",Hi=Yt()?"bottom-start":"bottom-end",Bi=Yt()?"left-start":"right-start",Wi=Yt()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends be{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ye.next(this._element,Pi)[0]||ye.prev(this._element,Pi)[0]||ye.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Bt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),ue.trigger(this._element,ki,t)}}hide(){if(Bt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),ge.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!jt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:jt(this._config.reference)?t=Ft(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=St(t,this._menu,i)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Bi;if(t.classList.contains("dropstart"))return Wi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ji:Mi:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(ge.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Qt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=ye.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Ht(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ye.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ai,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:ye.prev(this,Ii)[0]||ye.next(this,Ii)[0]||ye.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,Si,Ii,qi.dataApiKeydownHandler),ue.on(document,Si,Pi,qi.dataApiKeydownHandler),ue.on(document,Li,qi.clearMenus),ue.on(document,Di,qi.clearMenus),ue.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),Kt(qi);const Vi="backdrop",Yi="show",Ki=`mousedown.bs.${Vi}`,Qi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Xi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&Rt(e),e.classList.add(Yi),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Yi),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Ki),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ft(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Ki,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,Gi),ue.on(document,Ji,(t=>this._handleFocusin(t))),ue.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ye.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ge.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ge.getDataAttribute(t,e);null!==i?(ge.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(jt(t))e(t);else for(const i of ye.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",En="show",An="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends be{constructor(t,e){super(t,e),this._dialog=ye.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){ue.off(window,hn),ue.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ye.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Rt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ue.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,bn,(t=>{ue.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(An)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(An),this._queueCallback((()=>{this._element.classList.remove(An),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=ye.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,pn,(t=>{t.defaultPrevented||ue.one(e,fn,(()=>{Ht(this)&&this.focus()}))}));const i=ye.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),we(On),Kt(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Bn=`click${xn}${kn}`,Wn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends be{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),ue.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),ue.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,Wn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Bn,'[data-bs-toggle="offcanvas"]',(function(t){const e=ye.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this))return;ue.one(e,Fn,(()=>{Ht(this)&&this.focus()}));const i=ye.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Ln,(()=>{for(const t of ye.find(In))qn.getOrCreateInstance(t).show()})),ue.on(window,Hn,(()=>{for(const t of ye.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),we(qn),Kt(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Qn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Xn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends _e{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=ye.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?jt(e)?this._putElementInTemplate(Ft(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Qn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Qt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends be{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Wt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=Qt(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return St(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Qt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Qt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ge.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ft(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Es={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class As extends be{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return Es}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ft(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,ms),ue.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ye.find(bs,this._config.target);for(const e of t){if(!e.hash||Bt(e))continue;const t=ye.findOne(decodeURI(e.hash),this._element);Ht(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),ue.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ye.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of ye.parents(t,".nav, .list-group"))for(const t of ye.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=ye.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=As.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,gs,(()=>{for(const t of ye.find('[data-bs-spy="scroll"]'))As.getOrCreateInstance(t)})),Kt(As);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Bs="show",Ws=".dropdown-toggle",zs=`:not(${Ws})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ys extends be{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,Cs,{relatedTarget:t}):null;ue.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,ks,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Bt(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=Ut(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ys.getOrCreateInstance(i).show())}_getChildren(){return ye.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=ye.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ye.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ws,Fs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:ye.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ys.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this)||Ys.getOrCreateInstance(this).show()})),ue.on(window,Ds,(()=>{for(const t of ye.find(Vs))Ys.getOrCreateInstance(t)})),Kt(Ys);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Us=`focusin${Ks}`,Gs=`focusout${Ks}`,Js=`hide${Ks}`,Zs=`hidden${Ks}`,to=`show${Ks}`,eo=`shown${Ks}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends be{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){ue.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),Rt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ue.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ue.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Qs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Us,(t=>this._onInteraction(t,!0))),ue.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function lo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ao),Kt(ao),lo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new cs(t,{delay:{show:500,hide:100}})}))})),lo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),lo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt new file mode 100644 index 00000000..10f979d0 --- /dev/null +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map new file mode 100644 index 00000000..e5bc1575 --- /dev/null +++ b/_static/scripts/bootstrap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both
    and