Esempio n. 1
0
 def get_yield_function(self,stress):
     if material_type=='druckerprager':   #yf=J_2**0.5+alpha*tr(stress)-k
         from mesh import Point
         poi=Point()
         m=poi.get_mean_stress(stress)
         J2=poi.get_second_invariant_of_deviatoric_stress(stress)
         yf=J2**0.5+3*alpha*m-k
     return yf
Esempio n. 2
0
def Rmatrix(ipoint):
    from mesh import Point
    from math import sin, cos
    poi = Point()
    R = np.zeros([3, 3], dtype=float)
    angle = poi.get_angle(ipoint)
    # angle=0.
    R[0, 0] = cos(angle)
    R[0, 1] = sin(angle)
    R[1, 0] = -sin(angle)
    R[1, 1] = cos(angle)
    R[2, 2] = 1.
    return R
Esempio n. 3
0
 def get_derivative_of_yield_function(self,stress):
     import numpy as np
     if material_type=='druckerprager':
         from mesh import Point
         poi=Point()
         J2=poi.get_second_invariant_of_deviatoric_stress(stress)
         J2+=1.e-10
         dJ2=np.empty(3,dtype=float)
         for i in range(3):
             j=(i+1)%3
             k=(i+2)%3
             dJ2[i]=(2*stress[i]-stress[j]-stress[k])/3
         dyf=np.empty(6,dtype=float)
         dyf[0]=0.5*dJ2[0]*J2**(-0.5)+alpha
         dyf[1]=0.5*dJ2[1]*J2**(-0.5)+alpha
         dyf[2]=0.5*dJ2[2]*J2**(-0.5)+alpha
         dyf[3]=stress[3]*J2**(-0.5)
         dyf[4]=stress[4]*J2**(-0.5)
         dyf[5]=stress[5]*J2**(-0.5)
     return dyf