Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
444df28
[WIP]: support of LSDyna (d3plot). ElementProvider seems to be OK now.
roosre Jan 17, 2025
e284e68
[WIP] filter and plot ply-wise results of LSDyna analysis
roosre Jan 29, 2025
06bd7ea
LS Dyna example with local patch working
roosre Jan 29, 2025
38e6b55
[WIP] work on examples
roosre Mar 21, 2025
f67bc53
Merge remote-tracking branch 'remotes/origin/main' into feat/postproc…
roosre Mar 21, 2025
84d1a64
[WIP] example 016 is running as expected now.
roosre Mar 24, 2025
ea22c83
[WIP] lsdyna example and support.
roosre Mar 25, 2025
4918a83
Merge remote-tracking branch 'remotes/origin/main' into feat/postproc…
roosre Mar 25, 2025
b0ed0f2
[WIP] work on code style
roosre Mar 25, 2025
6d05697
[WIP] code style
roosre Mar 25, 2025
945b3af
[WIP] add unit test and files
roosre Mar 26, 2025
0b66958
[WIP] extend get_composite_files_from_workbench_result_folder to supp…
roosre Mar 26, 2025
0f4c849
[WIP] update tests/lsdyna_workflow_test.py to verify get_composite_fi…
roosre Mar 26, 2025
dd73f6d
fix docu build (missing api references and thumbnail size)
roosre Mar 26, 2025
4b3f53b
run style checks
roosre Mar 26, 2025
b13294b
run style checks
roosre Mar 26, 2025
3951a08
[WIP] run style checks
roosre Mar 26, 2025
a8f4c95
some more cosmetic changes
roosre Mar 26, 2025
b097d52
use github repo to get example files and cosmetic changes
roosre Mar 26, 2025
88cc02d
Disable lsdyna test for servers older than 2025 R2
roosre Mar 26, 2025
120e1b9
Merge branch 'main' into feat/postprocessing_of_lsdyna
roosre Mar 27, 2025
ca0b182
fix docu build
roosre Mar 27, 2025
8481eb7
Merge branch 'feat/postprocessing_of_lsdyna' of https://github.com/an…
roosre Mar 27, 2025
a285900
fix docu build
roosre Mar 27, 2025
e6f443e
Update src/ansys/dpf/composites/data_sources.py
roosre Mar 27, 2025
e589799
Update src/ansys/dpf/composites/data_sources.py
roosre Mar 27, 2025
e16da96
[debugging] add print messages to track file upload to server
roosre Mar 27, 2025
34dc4f7
Merge branch 'feat/postprocessing_of_lsdyna' of https://github.com/an…
roosre Mar 27, 2025
fb5e5d3
[debugging] minor fix
roosre Mar 27, 2025
1e3424e
[debugging] get print message on the console
roosre Mar 27, 2025
90bb3d5
[debugging] add more debug output
roosre Mar 27, 2025
060390f
[debugging] ensure that the d3plot file is used and not d3plot<...>
roosre Mar 27, 2025
2a69b39
[debugging] remove debug output and ensure that the main d3plot file …
roosre Mar 27, 2025
56260ed
Update minimum requirement of ansys-dpf-core
roosre Mar 27, 2025
89cc442
improve test to run with different version of pydpf-core.
roosre Mar 28, 2025
4ac1fbd
[WIP] implement remarks from code review and run style checks
roosre Mar 28, 2025
b5f651d
run style checks
roosre Mar 28, 2025
5cce878
cosmetic changes
roosre Mar 28, 2025
b43f765
cosmetic change (docu)
roosre Mar 28, 2025
b013b6e
Move class descriptions otherwise it won't show up in the API docu.
roosre Mar 28, 2025
b5efa31
update new test and compare values with LS PrePost
roosre Mar 28, 2025
2673ab4
add comments
roosre Mar 31, 2025
61358be
run pre-commit checks
roosre Mar 31, 2025
345ecf4
git missed changes
roosre Apr 2, 2025
98ec6eb
Merge remote-tracking branch 'remotes/origin/main' into doc/limitations
roosre Apr 2, 2025
695a337
refine documentation
roosre Apr 2, 2025
c54acf7
run style checks
roosre Apr 2, 2025
f5d85fa
typo
roosre Apr 2, 2025
f881b1c
fix typo
roosre Apr 2, 2025
eb56768
implement solver type for the legacy composite model.
roosre Apr 2, 2025
6a32d2b
fix doc style
roosre Apr 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,13 @@ Here are some key features of PyDPF - Composites:

Limitations
'''''''''''
- Only the Mechanical APDL solver is supported.
- The post-processing of expanded cyclic symmetry models is not implemented.
- Only the Mechanical APDL solver is fully supported. LSDYNA is partially supported
as shown in :ref:`LSDYNA post-processing <sphx_glr_examples_gallery_examples_016_lsdyna_bird_strike.py>`.
The combined failure criterion (:meth:`.CompositeModel.evaluate_failure_criteria`),
sampling point (:meth:`.CompositeModel.get_sampling_point`) and
computation of interlaminar normal stresses (:meth:`.CompositeModel.add_interlaminar_normal_stresses`)
features are not supported for LSDYNA.
- The post-processing of expanded cyclic symmetry models is not implemented. Only the first sector is considered.
- The following operators and features are only supported if the model was
preprocessed with ACP and if the corresponding lay-up definition file is passed to the :class:`.CompositeModel` class.

Expand Down
11 changes: 11 additions & 0 deletions src/ansys/dpf/composites/_composite_model_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,9 @@ def evaluate_failure_criteria(
``write_data_for_full_element_scope=True`` is not supported.

"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError("evaluate_failure_criteria is implemented for MAPDL results only.")

if composite_scope is None:
composite_scope = CompositeScope()

Expand Down Expand Up @@ -514,6 +517,9 @@ def get_sampling_point(
attribute. This parameter is only required for assemblies.
See the note about assemblies in the description for the :class:`CompositeModel` class.
"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError("get_sampling_point is implemented for MAPDL results only.")

element_info = self.get_element_info(element_id)
if element_info.is_shell:
return SamplingPointNew(
Expand Down Expand Up @@ -707,6 +713,11 @@ def add_interlaminar_normal_stresses(
Interlaminar normal stresses are only added to the layered elements defined
in the specified composite definition.
"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError(
"add_interlaminar_normal_stresses is implemented for MAPDL results only."
)

ins_operator = dpf.Operator("composite::interlaminar_normal_stress_operator")
ins_operator.inputs.materials_container(self._material_operators.material_provider)
ins_operator.inputs.mesh(self.get_mesh())
Expand Down
22 changes: 16 additions & 6 deletions src/ansys/dpf/composites/_composite_model_impl_2023r2.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from numpy.typing import NDArray

from .composite_scope import CompositeScope
from .constants import SolverType
from .constants import D3PLOT_KEY_AND_FILENAME, SolverType
from .data_sources import (
CompositeDataSources,
ContinuousFiberCompositesFiles,
Expand Down Expand Up @@ -268,11 +268,10 @@ def layup_model_type(self) -> LayupModelContextType:
@property
def solver_type(self) -> SolverType:
"""Get the type of solver used to generate the result file."""
raise NotImplementedError(
"solver_type is not implemented"
" for this version of DPF. DPF server 10.0 (2025 R2)"
" or later should be used instead."
)
if self._core_model.metadata.data_sources.result_key == D3PLOT_KEY_AND_FILENAME:
return SolverType.LSDYNA

return SolverType.MAPDL

def evaluate_failure_criteria(
self,
Expand Down Expand Up @@ -314,6 +313,9 @@ def evaluate_failure_criteria(
``write_data_for_full_element_scope=True`` is not supported.

"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError("evaluate_failure_criteria is implemented for MAPDL results only.")

if composite_scope is None:
composite_scope = CompositeScope()

Expand Down Expand Up @@ -385,6 +387,9 @@ def get_sampling_point(
attribute. This parameter is only required for assemblies.
See the note about assemblies in the description for the :class:`CompositeModel` class.
"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError("get_sampling_point is implemented for MAPDL results only.")

time_in = time

if composite_definition_label is None:
Expand Down Expand Up @@ -594,6 +599,11 @@ def add_interlaminar_normal_stresses(
Interlaminar normal stresses are only added to the layered elements defined
in the specified composite definition.
"""
if self.solver_type != SolverType.MAPDL:
raise RuntimeError(
"add_interlaminar_normal_stresses is implemented for MAPDL results only."
)

if composite_definition_label is None:
composite_definition_label = self._first_composite_definition_label_if_only_one()

Expand Down