some small fixes, reporting still needs update

This commit is contained in:
Martin Diehl 2014-10-06 12:47:52 +00:00
parent 2836b2fb35
commit d86f091026
1 changed files with 25 additions and 25 deletions

View File

@ -32,25 +32,23 @@ def principalStresses(sigmas):
sorted in descending order. sorted in descending order.
''' '''
lambdas=np.zeros(0,'d') lambdas=np.zeros(0,'d')
for i in xrange(np.shape(sigmas[1])): for i in xrange(np.shape(sigmas)[1]):
eigenvalues = eigvalsh(np.array(x[:,i]).reshape(3,3)) eigenvalues = np.linalg.eigvalsh(np.array(sigmas[:,i]).reshape(3,3))
lambdas = np.append(lambdas,np.sort(eigenvalues)[::-1]) #append eigenvalues in descending order lambdas = np.append(lambdas,np.sort(eigenvalues)[::-1]) #append eigenvalues in descending order
lambdas = lambdas.reshape(np.shape(sigmas)[1],3) lambdas = lambdas.reshape(3,np.shape(sigmas)[1])
return lambdas
return labmdas
def stressInvariants(lambdas): def stressInvariants(lambdas):
''' '''
computes stress invariants (i.e. eigenvalues) for a set of principal Cauchy stresses. computes stress invariants (i.e. eigenvalues) for a set of principal Cauchy stresses.
''' '''
Is=np.zeros(0,'d') Is=np.zeros(0,'d')
for i in xrange(np.shape(lambdas[1])): for i in xrange(np.shape(lambdas)[1]):
I = np.array([lambdas[0:i]+lambdas[1:i]+lambdas[2:i],\ I = np.array([lambdas[0,i]+lambdas[1,i]+lambdas[2,i],\
lambdas[0:i]*lambdas[1:i]+lambdas[1:i]*lambdas[2:i]+lambdas[2:i]*lambdas[0:i],\ lambdas[0,i]*lambdas[1,i]+lambdas[1,i]*lambdas[2,i]+lambdas[2,i]*lambdas[0,i],\
lambdas[0:i]*lambdas[1:i]*lambdas[2:i]]) lambdas[0,i]*lambdas[1,i]*lambdas[2,i]])
Is = np.append(Is,I) Is = np.append(Is,I)
Is = Is.reshape(np.shape(lambdas)[1],3) Is = Is.reshape(3,np.shape(lambdas)[1])
return Is return Is
@ -63,9 +61,9 @@ def Tresca(sigmas, sigma0):
residuum of Tresca yield criterion (eq. 2.26) residuum of Tresca yield criterion (eq. 2.26)
''' '''
lambdas = principalStresses(sigmas) lambdas = principalStresses(sigmas)
r = np.amax(np.array([abs(lambdas[:,2]-lambdas[:,1]),\ r = np.amax(np.array([abs(lambdas[2,:]-lambdas[1,:]),\
abs(lambdas[:,1]-lambdas[:,0]),\ abs(lambdas[1,:]-lambdas[0,:]),\
abs(lambdas[:,0]-lambdas[:,2])]),1) - sigma0 abs(lambdas[0,:]-lambdas[2,:])]),0) - sigma0
return r.ravel() return r.ravel()
@ -90,8 +88,7 @@ def generalDrucker(sigmas, sigma0, C_D, p):
residuum of general Drucker yield criterion (eq. 2.42, F = sigma0) residuum of general Drucker yield criterion (eq. 2.42, F = sigma0)
''' '''
Is = stressInvariants(principalStresses(sigmas)) Is = stressInvariants(principalStresses(sigmas))
r = (Is[:,1]**(3.0*p)-C_D*Is[:,3]**(2.0*I)) - sigma0 r = (Is[1,:]**(3.0*p)-C_D*Is[2,:]**(2.0*p)) - sigma0
return r.ravel() return r.ravel()
@ -100,9 +97,9 @@ def Hosford(sigmas, sigma0, a):
residuum of Hershey yield criterion (eq. 2.43, Y = sigma0) residuum of Hershey yield criterion (eq. 2.43, Y = sigma0)
''' '''
lambdas = principalStresses(sigmas) lambdas = principalStresses(sigmas)
r = (lambdas[:,2]-lambdas[:,1])**a\ r = (lambdas[2,:]-lambdas[1,:])**a\
+ (lambdas[:,1]-lambdas[:,0])**a\ + (lambdas[1,:]-lambdas[0,:])**a\
+ (lambdas[:,0]-lambdas[:,2])**a\ + (lambdas[0,:]-lambdas[2,:])**a\
-2.0*sigma0**a -2.0*sigma0**a
return r.ravel() return r.ravel()
@ -119,6 +116,7 @@ def vonMises():
''' '''
return None return None
def Hill1948(sigmas, F,G,H,L,M,N): def Hill1948(sigmas, F,G,H,L,M,N):
''' '''
residuum of Hill 1948 quadratic yield criterion (eq. 2.48) residuum of Hill 1948 quadratic yield criterion (eq. 2.48)
@ -148,7 +146,6 @@ def generalHosford(sigmas, sigma0, a):
return r.ravel() return r.ravel()
def Barlat1991(sigmas, sigma0, a): def Barlat1991(sigmas, sigma0, a):
''' '''
residuum of Hershey yield criterion (eq. 2.104, sigma_e = sigma0) residuum of Hershey yield criterion (eq. 2.104, sigma_e = sigma0)
@ -156,6 +153,7 @@ def Barlat1991(sigmas, sigma0, a):
return None return None
def Barlat1994(sigmas, sigma0, a): def Barlat1994(sigmas, sigma0, a):
''' '''
residuum of Hershey yield criterion (eq. 2.104, sigma_e = sigma0) residuum of Hershey yield criterion (eq. 2.104, sigma_e = sigma0)
@ -165,8 +163,6 @@ def Barlat1994(sigmas, sigma0, a):
fittingCriteria = { fittingCriteria = {
'vonMises':{'fit':np.ones(1,'d'),'err':np.inf}, 'vonMises':{'fit':np.ones(1,'d'),'err':np.inf},
'hill48' :{'fit':np.ones(6,'d'),'err':np.inf}, 'hill48' :{'fit':np.ones(6,'d'),'err':np.inf},
@ -235,6 +231,7 @@ class Criterion(object):
except Exception as detail: except Exception as detail:
print detail print detail
pass pass
try: try:
popt, pcov = curve_fit(HuberHenckyMises, stress, np.zeros(np.shape(stress)[1])) popt, pcov = curve_fit(HuberHenckyMises, stress, np.zeros(np.shape(stress)[1]))
print '--\nHuberHenckyMises:' print '--\nHuberHenckyMises:'
@ -242,15 +239,17 @@ class Criterion(object):
except Exception as detail: except Exception as detail:
print detail print detail
pass pass
try: try:
popt, pcov = curve_fit(Drucker, stress, np.zeros(np.shape(stress)[1])) popt, pcov = curve_fit(Drucker, stress, np.zeros(np.shape(stress)[1]))
print '--\nDrucker:' print '--\nDrucker:'
print 'sigma0 %f, C_D'%(popt[0].popt[1]) print 'sigma0 , C_D ', popt
except Exception as detail: except Exception as detail:
print detail print detail
pass pass
try: try:
popt, pcov = curve_fit(Hill48, stress, np.zeros(np.shape(stress)[1])) popt, pcov = curve_fit(Hill1948, stress, np.zeros(np.shape(stress)[1]))
print 'Hill48', popt print 'Hill48', popt
except Exception as detail: except Exception as detail:
print detail print detail
@ -340,6 +339,7 @@ def doSim(delay,thread):
s.acquire() s.acquire()
global stressAll global stressAll
print len(yieldStress)
print('starting fitting for sim %i from %s'%(me,thread)) print('starting fitting for sim %i from %s'%(me,thread))
try: try:
for i in xrange(int(options.yieldValue[2])): for i in xrange(int(options.yieldValue[2])):
@ -392,7 +392,7 @@ parser.add_option('--threads', dest='threads', type='int',
parser.set_defaults(min = 12) parser.set_defaults(min = 12)
parser.set_defaults(max = 30) parser.set_defaults(max = 30)
parser.set_defaults(threads = 4) parser.set_defaults(threads = 4)
parser.set_defaults(yieldValue = (0.002,0.002,1)) parser.set_defaults(yieldValue = (0.002,0.004,2))
parser.set_defaults(load = (0.010,100,100.0)) parser.set_defaults(load = (0.010,100,100.0))
parser.set_defaults(criterion = 'worst') parser.set_defaults(criterion = 'worst')
parser.set_defaults(fitting = 'totalshear') parser.set_defaults(fitting = 'totalshear')