forked from RiccardoRossi/pyKratos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoint_condition_2d.py
59 lines (44 loc) · 2.12 KB
/
point_condition_2d.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from __future__ import print_function, absolute_import, division
import math
from pyKratos import *
from numpy import *
from scipy import linalg
def Create(Id, prop, list_of_nodes):
geom = point2d.Point2D(list_of_nodes)
return Point2DCondition(Id, prop, geom)
class Point2DCondition:
def __init__(self, Id, prop, geometry):
self.Id = Id
self.prop = prop
self.geometry = geometry
def GetDofsPerNode(self):
return 3
def CalculateLocalSystem(self,ProcessInfo):
fx = self.geometry[0].GetSolutionStepValue(EXTERNAL_FORCE_X,0)
fy = self.geometry[0].GetSolutionStepValue(EXTERNAL_FORCE_Y,0)
moment = self.geometry[0].GetSolutionStepValue(EXTERNAL_MOMENT,0)
RHS = zeros(3)
LHS = zeros((3,3))
RHS[0] = fx
RHS[1] = fy
RHS[2] = moment
return [LHS, RHS]
# this function returns a list with the node and unkowns to be solved for
def GetDofList(self):
unknowns = []
unknowns.append(Dof(self.geometry[0], DISPLACEMENT_X)) ## added by Andreas Riedl
unknowns.append(Dof(self.geometry[0], DISPLACEMENT_Y)) ## added by Andreas Riedl
unknowns.append(Dof(self.geometry[0], ROTATION)) ## added by Andreas Riedl
return unknowns
def EquationId(self):
equation_ids = []
equation_ids.append(self.geometry[0].EquationId(DISPLACEMENT_X)) ## added by Andreas Riedl
equation_ids.append(self.geometry[0].EquationId(DISPLACEMENT_Y)) ## added by Andreas Riedl
equation_ids.append(self.geometry[0].EquationId(ROTATION)) ## added by Andreas Riedl
return equation_ids
def GetValues(self, step=0):
values = zeros(self.GetDofsPerNode()*self.geometry.GetNumberOfNodes())
values[0] = self.geometry[0].GetSolutionStepValue(DISPLACEMENT_X, step) ## added by Andreas Riedl
values[1] = self.geometry[0].GetSolutionStepValue(DISPLACEMENT_Y, step) ## added by Andreas Riedl
values[2] = self.geometry[0].GetSolutionStepValue(ROTATION, step) ## added by Andreas Riedl
return values