ansys / pymechanical

Pythonic interface to Ansys Mechanical
https://mechanical.docs.pyansys.com/
MIT License
29 stars 13 forks source link

Do explicit dynamics analysis seems not begin in Linux with version 2023R1 #754

Open coconutLatte opened 1 month ago

coconutLatte commented 1 month ago

πŸ” Before submitting the issue

🐞 Description of the bug

Hi, I'm trying to perform an explicit dynamics in Linux without gui by pyMechanical. First of all, I record the ACT script in Windows and modify it a bit. Below are the codes:

script1

mesh = Model.Mesh
mesh.ElementSize = Quantity(1, "mm")
mesh.PhysicsPreference = MeshPhysicsPreferenceType.Explicit
mesh.GenerateMesh()

analysis_20 = Model.AddExplicitDynamicsAnalysis()
fixed_support_33 = analysis_20.AddFixedSupport()

def analysis_settings(p, value):
    pro = DataModel.AnalysisList[0].AnalysisSettings.PropertyByName(p)
    print("find %s propertry is ok, old value is %f " % (p, pro.InternalValue))
    pro.InternalValue=value
    print("update %s propertry is ok, new value is %f " % (p, pro.InternalValue))
analysis_settings("StepEndTime", 0.0001)

selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [88, 94, 91]
fixed_support_33.Location = selection

displacement_33 = analysis_20.AddDisplacement()
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [90, 93, 86]
displacement_33.Location = selection

displacement_33.XComponent.Output.DefinitionType=VariableDefinitionType.Discrete
displacement_33.XComponent.Inputs[0].DiscreteValues = [Quantity(0, 'sec'), Quantity(1, 'sec')]
displacement_33.XComponent.Output.DiscreteValues = [Quantity(0, 'mm'), Quantity(-10, 'mm')]

analysis_20.Solution.AddEquivalentStress()
analysis_20.Solution.AddTotalDeformation()

script2

analysis_20.Solution.Solve(True)

After importing the geometry file, run the script1 and script2 in Windows. It works well in the Windows Platform.

Then I copy the script to Linux and pack it to myself code framework. But It not works. I can't even feel it running on analysis. Below are the codes in Linux:

import ansys.mechanical.core as pymechanical

wb_path = "/es01/home/zssoftware/Ansys/Ansys2023r1_gr/v231/aisol/.workbench"
print("wb_path", wb_path)
mechanical = pymechanical.launch_mechanical(exec_file=wb_path, verbose_mechanical=True, batch=True, loglevel="DEBUG", log_file=True, log_mechanical="pymechanical")
print("mechanical launch success: ", mechanical)

try:
    # import geometry file
    GEO_IMPORT_SCRIPT = """
geo_import_format = Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic
geo_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()
geo_import = Model.GeometryImportGroup.AddGeometryImport()
geo_import.Import("{geo_path:s}", geo_import_format, geo_import_preferences)
"""
    mechanical.run_python_script(
      GEO_IMPORT_SCRIPT.format(geo_path="/es01/home/yuansuan/test_case/wanghao/ansys-231-pre-process/breakage/breakage.stp")
    )

    # mesh
    mechanical.run_python_script("""
mesh_14 = Model.Mesh
mesh_14.ElementSize = Quantity(1, "m")
mesh_14.PhysicsPreference = MeshPhysicsPreferenceType.Explicit
mesh_14.GenerateMesh()
"""
    )

    mechanical.run_python_script("""
# set ExplicitDynamicsAnalysis
explicit_dynamics_analysis = Model.AddExplicitDynamicsAnalysis()

def analysis_settings(p, value):
    pro = DataModel.AnalysisList[0].AnalysisSettings.PropertyByName(p)
    print("find %s propertry is ok, old value is %f " % (p, pro.InternalValue))
    pro.InternalValue=value
    print("update %s propertry is ok, new value is %f " % (p, pro.InternalValue))

analysis_settings("StepEndTime", 0.0001)

fixed_support = explicit_dynamics_analysis.AddFixedSupport()
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [88, 94, 91]
fixed_support.Location = selection

displacement = explicit_dynamics_analysis.AddDisplacement()
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Ids = [90, 93, 86]
displacement.Location = selection

displacement.XComponent.Output.DefinitionType=VariableDefinitionType.Discrete
displacement.XComponent.Inputs[0].DiscreteValues = [Quantity(0, 'sec'), Quantity(1, 'sec')]
displacement.XComponent.Output.DiscreteValues = [Quantity(0, 'mm'), Quantity(-10, 'mm')]

explicit_dynamics_analysis.Solution.AddEquivalentStress()
explicit_dynamics_analysis.Solution.AddTotalDeformation()
""")

    mechanical.run_python_script("""
explicit_dynamics_analysis.Solution.Solve(True)
""")

except Exception as e:
    print("An error occurred while running the Python script:", e)
finally:
    print("exit mechanical instance")
    mechanical.exit()

Here's are the stdout when running it by python3 the_script.py

wb_path /es01/home/zssoftware/Ansys/Ansys2023r1_gr/v231/aisol/.workbench
Running /es01/home/zssoftware/Ansys/Ansys2023r1_gr/v231/aisol/.workbench -DSApplet -b -AppModeMech -grpc 10000.
INFO - GRPC_127.0.0.1:10000 -  mechanical - log_info - Mechanical connection is treated as local.
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - timetout:120 n_attempts:5 attempt_timeout=24.0
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - Connection attempt 1 with attempt timeout 24.0s
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - Connection attempt 2 with attempt timeout 24.0s
Initialize() started
Initialize() done
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - Established a connection to the Mechanical gRPC server.
INFO - GRPC_127.0.0.1:10000 -  mechanical - log_info - Waiting for Mechanical to be ready. Maximum wait time: 24.0s
INFO - GRPC_127.0.0.1:10000 -  mechanical - log_info - Mechanical is ready. It took 0 seconds to verify.
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - Connection attempt 2 succeeded.
INFO - GRPC_127.0.0.1:10000 -  mechanical - log_info - Mechanical is ready to accept grpc calls
mechanical launch success:  Ansys Mechanical [Ansys Mechanical Enterprise]
Product Version:231
Software build date:Sat Nov 26 20:15:28 2022
project directory = /tmp/AnsysMech9675/Project_Mech_Files/
AnsMeshingServer, compiled Nov 26 2022 21:20:33, DS Mesher, Fri May 31 11:13:38 2024
AnsMeshingServer, okay, Fri May 31 11:13:39 2024
exit code: 255
find StepEndTime propertry is ok, old value is 0.000000 
update StepEndTime propertry is ok, new value is 0.000100 
Warning at File: myxml, line 1, col 40, encoding 'utf-16' from XML declaration or manually set contradicts the auto-sensed encoding; ignoring
Warning at File: myxml, line 1, col 40, encoding 'utf-16' from XML declaration or manually set contradicts the auto-sensed encoding; ignoring
exit mechanical instance
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - In shutdown.
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - Shutting down...
DEBUG - GRPC_127.0.0.1:10000 -  mechanical - log_debug - No PyPIM cleanup is needed.
INFO - GRPC_127.0.0.1:10000 -  mechanical - log_info - Shutdown has finished.

πŸ“ Steps to reproduce

breakage.zip breakage.zip are the geometry file

It can be reproduced just run the script in Linux with the geometry file above.

πŸ’» Which operating system are you using?

Linux

πŸ“€ Which ANSYS version are you using?

2023 R1

🐍 Which Python version are you using?

3.11

πŸ“¦ Installed packages

Package                               Version
------------------------------------- ------------
aiobotocore                           2.7.0
aiohttp                               3.9.3
aioitertools                          0.7.1
aiosignal                             1.2.0
alabaster                             0.7.12
altair                                5.0.1
anaconda-anon-usage                   0.4.3
anaconda-catalogs                     0.2.0
anaconda-client                       1.12.3
anaconda-cloud-auth                   0.1.4
anaconda-navigator                    2.5.2
anaconda-project                      0.11.1
ansys-api-mechanical                  0.1.1
ansys-api-platform-instancemanagement 1.0.0
ansys-mapdl-reader                    0.53.0
ansys-mechanical-core                 0.10.8
ansys-mechanical-env                  0.1.4
ansys-platform-instancemanagement     1.1.2
ansys-pythonnet                       3.1.0rc3
ansys-tools-path                      0.4.1
anyio                                 4.2.0
appdirs                               1.4.4
archspec                              0.2.1
argon2-cffi                           21.3.0
argon2-cffi-bindings                  21.2.0
arrow                                 1.2.3
astroid                               2.14.2
astropy                               5.3.4
asttokens                             2.0.5
async-lru                             2.0.4
atomicwrites                          1.4.0
attrs                                 23.1.0
Automat                               20.2.0
autopep8                              1.6.0
Babel                                 2.11.0
backports.functools-lru-cache         1.6.4
backports.tempfile                    1.0
backports.weakref                     1.0.post1
bcrypt                                3.2.0
beautifulsoup4                        4.12.2
binaryornot                           0.4.4
black                                 23.11.0
bleach                                4.1.0
blinker                               1.6.2
bokeh                                 3.3.4
boltons                               23.0.0
botocore                              1.31.64
Bottleneck                            1.3.7
Brotli                                1.0.9
cachetools                            4.2.2
certifi                               2024.2.2
cffi                                  1.16.0
chardet                               4.0.0
charset-normalizer                    2.0.4
click                                 8.1.7
cloudpickle                           2.2.1
clr-loader                            0.2.6
clyent                                1.2.2
colorama                              0.4.6
colorcet                              3.0.1
comm                                  0.1.2
conda                                 24.1.2
conda-build                           24.1.2
conda-content-trust                   0.2.0
conda_index                           0.4.0
conda-libmamba-solver                 24.1.0
conda-pack                            0.6.0
conda-package-handling                2.2.0
conda_package_streaming               0.9.0
conda-repo-cli                        1.0.75
conda-token                           0.4.0
conda-verify                          3.4.2
constantly                            23.10.4
contourpy                             1.2.0
cookiecutter                          2.5.0
cryptography                          42.0.2
cssselect                             1.2.0
cycler                                0.11.0
cytoolz                               0.12.2
dask                                  2023.11.0
datashader                            0.16.0
debugpy                               1.6.7
decorator                             5.1.1
defusedxml                            0.7.1
diff-match-patch                      20200713
dill                                  0.3.7
distributed                           2023.11.0
distro                                1.8.0
docstring-to-markdown                 0.11
docutils                              0.18.1
entrypoints                           0.4
et-xmlfile                            1.1.0
executing                             0.8.3
fastjsonschema                        2.16.2
filelock                              3.13.1
flake8                                6.0.0
Flask                                 2.2.5
fonttools                             4.25.0
frozenlist                            1.4.0
fsspec                                2023.10.0
future                                0.18.3
gensim                                4.3.0
gitdb                                 4.0.7
GitPython                             3.1.37
gmpy2                                 2.1.2
greenlet                              3.0.1
grpcio                                1.62.1
h5py                                  3.9.0
HeapDict                              1.0.1
holoviews                             1.18.3
hvplot                                0.9.2
hyperlink                             21.0.0
idna                                  3.4
imagecodecs                           2023.1.23
imageio                               2.33.1
imagesize                             1.4.1
imbalanced-learn                      0.11.0
importlib-metadata                    7.0.1
incremental                           22.10.0
inflection                            0.5.1
iniconfig                             1.1.1
intake                                0.6.8
intervaltree                          3.1.0
ipykernel                             6.28.0
ipython                               8.20.0
ipython-genutils                      0.2.0
ipywidgets                            7.6.5
isort                                 5.9.3
itemadapter                           0.3.0
itemloaders                           1.1.0
itsdangerous                          2.0.1
jaraco.classes                        3.2.1
jedi                                  0.18.1
jeepney                               0.7.1
jellyfish                             1.0.1
Jinja2                                3.1.3
jmespath                              1.0.1
joblib                                1.2.0
json5                                 0.9.6
jsonpatch                             1.32
jsonpointer                           2.1
jsonschema                            4.19.2
jsonschema-specifications             2023.7.1
jupyter                               1.0.0
jupyter_client                        8.6.0
jupyter-console                       6.6.3
jupyter_core                          5.5.0
jupyter-events                        0.8.0
jupyter-lsp                           2.2.0
jupyter_server                        2.10.0
jupyter_server_terminals              0.4.4
jupyterlab                            4.0.11
jupyterlab-pygments                   0.1.2
jupyterlab_server                     2.25.1
jupyterlab-widgets                    3.0.9
keyring                               23.13.1
kiwisolver                            1.4.4
lazy_loader                           0.3
lazy-object-proxy                     1.6.0
lckr_jupyterlab_variableinspector     3.1.0
libarchive-c                          2.9
libmambapy                            1.5.6
linkify-it-py                         2.0.0
llvmlite                              0.42.0
lmdb                                  1.4.1
locket                                1.0.0
lxml                                  4.9.3
lz4                                   4.3.2
Markdown                              3.4.1
markdown-it-py                        2.2.0
MarkupSafe                            2.1.3
matplotlib                            3.8.0
matplotlib-inline                     0.1.6
mccabe                                0.7.0
mdit-py-plugins                       0.3.0
mdurl                                 0.1.0
menuinst                              2.0.2
mistune                               2.0.4
mkl-fft                               1.3.8
mkl-random                            1.2.4
mkl-service                           2.4.0
more-itertools                        10.1.0
mpmath                                1.3.0
msgpack                               1.0.3
multidict                             6.0.4
multipledispatch                      0.6.0
munkres                               1.1.4
mypy                                  1.8.0
mypy-extensions                       1.0.0
navigator-updater                     0.4.0
nbclient                              0.8.0
nbconvert                             7.10.0
nbformat                              5.9.2
nest-asyncio                          1.6.0
networkx                              3.1
nltk                                  3.8.1
notebook                              7.0.8
notebook_shim                         0.2.3
numba                                 0.59.0
numexpr                               2.8.7
numpy                                 1.26.4
numpydoc                              1.5.0
openpyxl                              3.0.10
overrides                             7.4.0
packaging                             23.1
pandas                                2.1.4
pandocfilters                         1.5.0
panel                                 1.3.8
param                                 2.0.2
parsel                                1.8.1
parso                                 0.8.3
partd                                 1.4.1
pathlib                               1.0.1
pathspec                              0.10.3
patsy                                 0.5.3
pexpect                               4.8.0
pickleshare                           0.7.5
pillow                                10.2.0
pip                                   23.3.1
pkce                                  1.0.3
pkginfo                               1.9.6
platformdirs                          3.10.0
plotly                                5.9.0
pluggy                                1.0.0
ply                                   3.11
pooch                                 1.8.1
prometheus-client                     0.14.1
prompt-toolkit                        3.0.43
Protego                               0.1.16
protobuf                              3.20.3
psutil                                5.9.0
ptyprocess                            0.7.0
pure-eval                             0.2.2
py-cpuinfo                            9.0.0
pyarrow                               14.0.2
pyasn1                                0.4.8
pyasn1-modules                        0.2.8
pycodestyle                           2.10.0
pycosat                               0.6.6
pycparser                             2.21
pyct                                  0.5.0
pycurl                                7.45.2
pydantic                              1.10.12
pydeck                                0.8.0
PyDispatcher                          2.0.5
pydocstyle                            6.3.0
pyerfa                                2.0.0
pyflakes                              3.0.1
Pygments                              2.15.1
PyJWT                                 2.4.0
pylint                                2.16.2
pylint-venv                           2.3.0
pyls-spyder                           0.4.0
pyodbc                                5.0.1
pyOpenSSL                             24.0.0
pyparsing                             3.0.9
PyQt5                                 5.15.10
PyQt5-sip                             12.13.0
PyQtWebEngine                         5.15.6
PySocks                               1.7.1
pytest                                7.4.0
python-dateutil                       2.8.2
python-dotenv                         0.21.0
python-json-logger                    2.0.7
python-lsp-black                      1.2.1
python-lsp-jsonrpc                    1.0.0
python-lsp-server                     1.7.2
python-slugify                        5.0.2
python-snappy                         0.6.1
pytoolconfig                          1.2.6
pytz                                  2023.3.post1
pyvista                               0.43.4
pyviz_comms                           3.0.0
pywavelets                            1.5.0
pyxdg                                 0.27
PyYAML                                6.0.1
pyzmq                                 25.1.2
QDarkStyle                            3.0.2
qstylizer                             0.2.2
QtAwesome                             1.2.2
qtconsole                             5.4.2
QtPy                                  2.4.1
queuelib                              1.6.2
referencing                           0.30.2
regex                                 2023.10.3
requests                              2.31.0
requests-file                         1.5.1
requests-toolbelt                     1.0.0
rfc3339-validator                     0.1.4
rfc3986-validator                     0.1.1
rich                                  13.3.5
rope                                  1.7.0
rpds-py                               0.10.6
Rtree                                 1.0.1
ruamel.yaml                           0.17.21
ruamel-yaml-conda                     0.17.21
s3fs                                  2023.10.0
scikit-image                          0.22.0
scikit-learn                          1.2.2
scipy                                 1.11.4
scooby                                0.9.2
Scrapy                                2.8.0
seaborn                               0.12.2
SecretStorage                         3.3.1
semver                                2.13.0
Send2Trash                            1.8.2
service-identity                      18.1.0
setuptools                            68.2.2
sip                                   6.7.12
six                                   1.16.0
smart-open                            5.2.1
smmap                                 4.0.0
sniffio                               1.3.0
snowballstemmer                       2.2.0
sortedcontainers                      2.4.0
soupsieve                             2.5
Sphinx                                5.0.2
sphinxcontrib-applehelp               1.0.2
sphinxcontrib-devhelp                 1.0.2
sphinxcontrib-htmlhelp                2.0.0
sphinxcontrib-jsmath                  1.0.1
sphinxcontrib-qthelp                  1.0.3
sphinxcontrib-serializinghtml         1.1.5
spyder                                5.4.3
spyder-kernels                        2.4.4
SQLAlchemy                            2.0.25
stack-data                            0.2.0
statsmodels                           0.14.0
streamlit                             1.30.0
sympy                                 1.12
tables                                3.9.2
tabulate                              0.9.0
tblib                                 1.7.0
tenacity                              8.2.2
terminado                             0.17.1
text-unidecode                        1.3
textdistance                          4.2.1
threadpoolctl                         2.2.0
three-merge                           0.1.1
tifffile                              2023.4.12
tinycss2                              1.2.1
tldextract                            3.2.0
toml                                  0.10.2
tomlkit                               0.11.1
toolz                                 0.12.0
tornado                               6.3.3
tqdm                                  4.65.0
traitlets                             5.7.1
truststore                            0.8.0
Twisted                               23.10.0
typing_extensions                     4.9.0
tzdata                                2023.3
tzlocal                               2.1
uc-micro-py                           1.0.1
ujson                                 5.4.0
Unidecode                             1.2.0
urllib3                               2.0.7
validators                            0.18.2
vtk                                   9.3.0
w3lib                                 2.1.2
watchdog                              2.1.6
wcwidth                               0.2.5
webencodings                          0.5.1
websocket-client                      0.58.0
Werkzeug                              2.2.3
whatthepatch                          1.0.2
wheel                                 0.41.2
widgetsnbextension                    3.5.2
wrapt                                 1.14.1
wurlitzer                             3.0.2
xarray                                2023.6.0
xyzservices                           2022.9.0
yapf                                  0.31.0
yarl                                  1.9.3
zict                                  3.0.0
zipp                                  3.17.0
zope.interface                        5.4.0
zstandard                             0.19.0
dipinknair commented 3 weeks ago

@coconutLatte Hi, I did not encounter any issue with your code and geometry with 23R1 in Linux, Could you please save the file after the solve as .mechdb and open in mechanical and check everything is solved as you expected.

finally:
    print("exit mechanical instance")
    mechanical.run_python_script("""
DataModel.Project.Save("/es01/home/yuansuan/test_case/wanghao/ansys-231-pre-process/breakage/breakage.mechdb")
""")
    mechanical.exit()
dipinknair commented 2 weeks ago

Could you please add debug level logging to your workflow and attach log here so that we can look into it. For adding logging please refer https://mechanical.docs.pyansys.com/version/stable/api/_autosummary/ansys.mechanical.core.logging.Logger.html#ansys.mechanical.core.logging.Logger.