示例#1
0
numg = 8 * nx * ny * nz
# number of Gauss points
packNo = range(0, numg, 8)

prob = MultiScale(domain=mydomain, ng=numg, useMPI=True,
                  rtol=1e-2)  # mpi is activated

disp = Vector(0., Solution(mydomain))

t = 0
stress = prob.getCurrentStress()
proj = Projector(mydomain)
sig = proj(stress)
sig_bounda = interpolate(sig, FunctionOnBoundary(mydomain))
traction = matrix_mult(sig_bounda,
                       mydomain.getNormal())  # traction on boundary
x = mydomain.getX()
bx = FunctionOnBoundary(mydomain).getX()
topSurf = whereZero(bx[2] - lz)
tractTop = traction * topSurf  # traction on top surface
forceTop = integrate(tractTop,
                     where=FunctionOnBoundary(mydomain))  # force on top
areaTop = integrate(topSurf, where=FunctionOnBoundary(mydomain))
fout = file('./result/resultant.dat', 'w')
fout.write('0 ' + str(forceTop[2]) + ' ' + str(areaTop) + '\n')

# Dirichlet BC, rough loading ends
Dbc = whereZero(x[2]) * [1, 1, 1] + whereZero(x[2] - lz) * [1, 1, 1]
Vbc = whereZero(x[2]) * [0, 0, 0] + whereZero(x[2] - lz) * [0, 0, vel]
# Neumann BC, constant lateral confining
Nbc = whereZero(bx[0]) * [-confining, 0, 0] + whereZero(bx[0] - sup(bx[0])) * [
示例#2
0
nx = 8; ny = 8; nz = 16; # discretization
mydomain = Brick(l0=lx,l1=ly,l2=lz,n0=nx,n1=ny,n2=nz,order=2,integrationOrder=2) # 20-noded,8-Gauss hexahedral element
dim = 3; k = kronecker(mydomain)
numg = 8*nx*ny*nz; # number of Gauss points
packNo=list(range(0,numg,8))

prob = MultiScale(domain=mydomain,ng=numg,useMPI=True,rtol=1e-2) # mpi is activated

disp = Vector(0.,Solution(mydomain))

t=0
stress = prob.getCurrentStress()
proj = Projector(mydomain)
sig = proj(stress)
sig_bounda = interpolate(sig,FunctionOnBoundary(mydomain))
traction = matrix_mult(sig_bounda,mydomain.getNormal()) # traction on boundary
x = mydomain.getX()
bx = FunctionOnBoundary(mydomain).getX()
topSurf = whereZero(bx[2]-lz)
tractTop = traction*topSurf # traction on top surface
forceTop = integrate(tractTop,where=FunctionOnBoundary(mydomain)) # force on top
areaTop = integrate(topSurf,where=FunctionOnBoundary(mydomain))
fout=file('./result/resultant.dat','w')
fout.write('0 '+str(forceTop[2])+' '+str(areaTop)+'\n')

# Dirichlet BC, rough loading ends
Dbc = whereZero(x[2])*[1,1,1]+whereZero(x[2]-lz)*[1,1,1]
Vbc = whereZero(x[2])*[0,0,0]+whereZero(x[2]-lz)*[0,0,vel]
# Neumann BC, constant lateral confining
Nbc = whereZero(bx[0])*[-confining,0,0]+whereZero(bx[0]-sup(bx[0]))*[confining,0,0]+whereZero(bx[1])*[0,-confining,0]+whereZero(bx[1]-sup(bx[1]))*[0,confining,0]