Skip to content

Commit e6ebc18

Browse files
committed
Merge remote-tracking branch 'origin/zzqbranch'
2 parents 9fcf587 + c5cbe63 commit e6ebc18

File tree

4 files changed

+74
-6
lines changed

4 files changed

+74
-6
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ classifiers = [
2727

2828
dependencies = [
2929
"ansys-dpf-core>=0.7.2",
30-
"ansys-api-dyna==0.3.0",
30+
"ansys-api-dyna==0.3.1",
3131
]
3232

3333
[project.optional-dependencies]

src/ansys/dyna/core/pre/dynabase.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,32 @@ def create(self, stub):
149149
return self.id
150150

151151

152+
class Table2D:
153+
"""Define a table,a curve ID is specified for each value defined in the table."""
154+
155+
def __init__(self, title=""):
156+
self.title = title
157+
self.valuecurvelist = []
158+
159+
def append(self, value=0, curve=None):
160+
self.valuecurvelist.append((value, curve))
161+
162+
def create(self, stub=None):
163+
"""Create Table2D."""
164+
if stub is None:
165+
stub = DynaBase.get_stub()
166+
vls = []
167+
cvs = []
168+
for obj in self.valuecurvelist:
169+
vls.append(obj[0])
170+
cid = obj[1].create(stub)
171+
cvs.append(cid)
172+
ret = stub.CreateDefineTable2D(DefineTable2DRequest(title=self.title, values=vls, cids=cvs))
173+
self.id = ret.id
174+
logging.info(f"Table2D {self.id} defined...")
175+
return self.id
176+
177+
152178
class Point:
153179
"""Defines a point."""
154180

@@ -886,6 +912,33 @@ def create(self, stub):
886912
return self.id
887913

888914

915+
class NodeSetBox(BaseSet):
916+
"""include the nodes inside boxes.
917+
918+
Parameters
919+
----------
920+
boxes : list
921+
A list of BOX.
922+
"""
923+
924+
def __init__(self, boxes=[]):
925+
self.boxes = boxes
926+
self.type = "NODESETBOX"
927+
928+
def create(self, stub):
929+
"""Create a node set."""
930+
if len(self.boxes) <= 0:
931+
return 0
932+
boxids = []
933+
for box in self.boxes:
934+
boxid = box.create(stub)
935+
boxids.append(boxid)
936+
ret = stub.CreateNodeSet(NodeSetRequest(option="GENERAL", sid=0, genoption="BOX", entities=boxids))
937+
self.id = ret.id
938+
self.type = "NODESETBOX"
939+
return self.id
940+
941+
889942
class PartSet(BaseSet):
890943
"""Defines a set of parts with optional attributes."""
891944

src/ansys/dyna/core/pre/dynaem.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,15 @@ def create(self):
669669
logging.info("EM Contact Created...")
670670

671671

672+
class EMRandlesLayer(Enum):
673+
DEFAULT = 0
674+
CURRENT_COLLECTOR_POSITIVE = 1
675+
POSITIVE_ELECTRODE = 2
676+
SEPARATOR = 3
677+
NEGATIVE_ELECTRODE = 4
678+
CURRENT_COLLECTOR_NEGATIVE = 5
679+
680+
672681
class Isopotential:
673682
"""Defines an isopotential.
674683
@@ -682,25 +691,29 @@ class Isopotential:
682691

683692
isopotlist = []
684693

685-
def __init__(self, set=None):
694+
def __init__(self, set=None, layer=EMRandlesLayer.DEFAULT):
686695
self.stub = DynaBase.get_stub()
687696
self.set = set
688697
self.id = 0
698+
self.rdltype = layer.value
689699

690700
def create(self):
691701
"""Create an isopotential."""
692-
isoinfo = [self.set.type, self.set.nodes]
702+
if self.set.type == "NODESETBOX":
703+
isoinfo = [self.set.type, self.set.boxes]
704+
else:
705+
isoinfo = [self.set.type, self.set.nodes]
693706
if isoinfo in Isopotential.isopotlist:
694707
pass
695708
id, settype = 0, 1
696709
if self.set is not None:
697710
id = self.set.create(self.stub)
698711
type = self.set.type
699-
if type == "NODESET":
712+
if type == "NODESET" or type == "NODESETBOX":
700713
settype = 2
701714
elif type == "SEGMENTSET":
702715
settype = 1
703-
ret = self.stub.CreateEMIsopotential(EMIsopotentialRequest(settype=settype, setid=id))
716+
ret = self.stub.CreateEMIsopotential(EMIsopotentialRequest(settype=settype, setid=id, rdltype=self.rdltype))
704717
self.id = ret.id
705718
logging.info(f"EM Isopotential {self.id} Created...")
706719
return self.id

src/ansys/dyna/core/pre/dynamaterial.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -600,12 +600,13 @@ def create(self, stub):
600600
logging.info(f"Material {self.name} Created...")
601601

602602

603-
class MatCrushableFoam:
603+
class MatCrushableFoam(MatAdditional):
604604
"""Define material of modelling crushable foam."""
605605

606606
def __init__(
607607
self, mass_density=0, young_modulus=0, poisson_ratio=0.3, yield_stress_curve=None, tensile_stress_cutoff=0
608608
):
609+
MatAdditional.__init__(self)
609610
self.ro = mass_density
610611
self.e = young_modulus
611612
self.pr = poisson_ratio
@@ -623,6 +624,7 @@ def create(self, stub):
623624
)
624625
self.material_id = ret.mid
625626
self.name = "Crushable Foam"
627+
MatAdditional.create(self, stub, self.material_id)
626628
logging.info(f"Material {self.name} Created...")
627629

628630

0 commit comments

Comments
 (0)