11from stlib .entities import Entity , EntityParameters
2- from stlib .entities . deformable . __parameters__ import DeformableParameters
2+ from stlib .prefabs . material import Material , MaterialParameters
33from stlib .prefabs .visual import Visual
4- from stlib .mixins .collision import CollisionMixin
5- from splib .core .enum_types import ConstitutiveLaw
4+ from splib .core .enum_types import ConstitutiveLaw , ElementType
5+ from splib .mechanics .linear_elasticity import *
6+ from splib .mechanics .hyperelasticity import *
7+ from splib .mechanics .mass import addMass
68
7- class DeformableParameters (EntityParameters ):
89
9- constitutiveLaw : ConstitutiveLaw = ConstitutiveLaw . ELASTIC
10+ class DeformableBehaviorParameters ( MaterialParameters ):
1011
11- class Deformable (CollisionMixin , Entity ):
12+ constitutiveLawType : ConstitutiveLaw
13+ elementType : ElementType
14+ parameters : list [float ]
1215
13- params : DeformableParameters
16+ def addMaterial ( self , node ):
1417
15- @staticmethod
16- def getParameters (** kwargs ) -> DeformableParameters :
17- return DeformableParameters (** kwargs )
18+ addMass (node , node .stateType , massDensity = node .massDensity , lumping = node .massLumping )
19+
20+ # TODO : change this with inheritance
21+ if (self .constitutiveLawType == ConstitutiveLaw .HYPERELASTIC ):
22+ addHyperelasticity (node ,self .elementType , self .parameters )
23+ else :
24+ addLinearElasticity (node ,self .elementType , self .parameters [0 ], self .parameters [1 ])
25+
26+
27+ # class Deformable(Entity):
28+
29+ # params : DeformableParameters
30+
31+ # @staticmethod
32+ # def getParameters(**kwargs) -> DeformableParameters:
33+ # return DeformableParameters(**kwargs)
1834
1935
20- def __init__ (self , params : DeformableParameters , ** kwargs ):
21- Entity .__init__ (self , ** kwargs )
36+ # def __init__(self, params : DeformableParameters, **kwargs):
37+ # Entity.__init__(self, **kwargs)
2238
23- self .__addConstitutiveLaw__ ()
24- self .addCollision (params .collision )
39+ # self.__addConstitutiveLaw__()
40+ # self.addCollision(params.collision)
2541
2642
27- #@customizable
28- # Need generic way of defining paramaters (linear/hyper...)
29- def __addConstitutiveLaw__ (self ):
30- self .params .addConstitutiveLaw ()
43+ # #@customizable
44+ # # Need generic way of defining paramaters (linear/hyper...)
45+ # def __addConstitutiveLaw__(self):
46+ # self.params.addConstitutiveLaw()
3147
3248
33- #@customizable
34- def __addVisual__ (self ):
35- #Extract surface and add identity mapping
36- self .add (Visual , self .params .visual )
49+ # #@customizable
50+ # def __addVisual__(self):
51+ # #Extract surface and add identity mapping
52+ # self.add(Visual, self.params.visual)
53+
54+
55+
56+
57+
58+ def createScene (root ) :
59+
60+ from stlib .geometry .file import FileParameters
61+ from stlib .geometry .extract import ExtractParameters
3762
63+ liverParameters = EntityParameters ()
64+ liverParameters .behavior = DeformableBehaviorParameters ()
65+ liverParameters .behavior .constitutiveLawType = ConstitutiveLaw .ELASTIC
66+ liverParameters .behavior .parameters = [1000 , 0.45 ]
67+ liverParameters .geometry = FileParameters ("liver.vtk" )
68+ liverParameters .visual = ExtractParameters ()
69+ myDeformableObject = root .add (Entity , liverParameters )
0 commit comments