@@ -113,21 +113,22 @@ class Curve:
113
113
114
114
"""
115
115
116
- def __init__ (self , sfo = 1 , x = [], y = [], func = None ):
116
+ def __init__ (self , sfo = 1 , x = [], y = [], func = None , title = "" ):
117
117
self .sfo = sfo
118
118
self .abscissa = x
119
119
self .ordinate = y
120
120
self .func = func
121
+ self .title = title
121
122
122
123
def create (self , stub = None ):
123
124
"""Create a curve."""
124
125
if stub is None :
125
126
stub = DynaBase .get_stub ()
126
127
if self .func != None :
127
- ret = stub .CreateDefineCurveFunction (DefineCurveFunctionRequest (function = self .func ))
128
+ ret = stub .CreateDefineCurveFunction (DefineCurveFunctionRequest (function = self .func , title = self . title ))
128
129
else :
129
130
ret = stub .CreateDefineCurve (
130
- DefineCurveRequest (sfo = self .sfo , abscissa = self .abscissa , ordinate = self .ordinate )
131
+ DefineCurveRequest (sfo = self .sfo , abscissa = self .abscissa , ordinate = self .ordinate , title = self . title )
131
132
)
132
133
self .id = ret .id
133
134
logging .info (f"Curve { self .id } defined..." )
@@ -148,6 +149,32 @@ def create(self, stub):
148
149
return self .id
149
150
150
151
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
+
151
178
class Point :
152
179
"""Defines a point."""
153
180
@@ -885,6 +912,33 @@ def create(self, stub):
885
912
return self .id
886
913
887
914
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
+
888
942
class PartSet (BaseSet ):
889
943
"""Defines a set of parts with optional attributes."""
890
944
@@ -1529,6 +1583,7 @@ def __init__(self, analysis_type=AnalysisType.IMPLICIT, initial_timestep_size=0)
1529
1583
self .defined_dynamic = False
1530
1584
self .defined_eigenvalue = False
1531
1585
self .defined_solution = False
1586
+ self .defined_mass_matrix = False
1532
1587
self .imflag = analysis_type .value
1533
1588
self .dt0 = initial_timestep_size
1534
1589
self .stub = DynaBase .get_stub ()
@@ -1640,6 +1695,10 @@ def set_solution(
1640
1695
self .maxref = stiffness_reformation_limit
1641
1696
self .abstol = absolute_convergence_tolerance
1642
1697
1698
+ def set_consistent_mass_matrix (self ):
1699
+ """Use the consistent mass matrix in implicit dynamics and eigenvalue solutions."""
1700
+ self .defined_mass_matrix = True
1701
+
1643
1702
def create (self ):
1644
1703
"""Create an implicit analysis."""
1645
1704
if self .defined == False :
@@ -1662,6 +1721,8 @@ def create(self):
1662
1721
nsolver = self .nsolver , ilimit = self .ilimit , maxref = self .maxref , abstol = self .abstol
1663
1722
)
1664
1723
)
1724
+ if self .defined_mass_matrix :
1725
+ self .stub .CreateControlImplicitConsistentMass (ControlImplicitConsistentMassRequest (iflag = 1 ))
1665
1726
1666
1727
1667
1728
class ThermalAnalysisType (Enum ):
0 commit comments