Civil Engineering Reference
In-Depth Information
END DO int_pts_1
CALL fsparv(kv,km,g,kdiag); gravlo(g)=gravlo(g)-eld*prop(3,etype(iel))
END DO elements_2
loads=zero; READ(10,*)loaded_nodes,(k,loads(nf(:,k)),i=1,loaded_nodes)
loads=loads+gravlo; READ(10,*)fixed_freedoms
IF(fixed_freedoms/=0)THEN
ALLOCATE(node(fixed_freedoms),sense(fixed_freedoms),
&
value(fixed_freedoms),no(fixed_freedoms))
READ(10,*)(node(i),sense(i),value(i),i=1,fixed_freedoms)
DO i=1,fixed_freedoms; no(i)=nf(sense(i),node(i)); END DO
kv(kdiag(no))=kv(kdiag(no))+penalty; loads(no)=kv(kdiag(no))*value
END IF
!-----------------------equation solution---------------------------------
CALL sparin(kv,kdiag); CALL spabac(kv,loads,kdiag); loads(0)=zero
IF(ndim==3)THEN; WRITE(11,'(/A)')" Node
x-disp
y-disp
z-disp"
ELSE; WRITE(11,'(/A)')" Node
x-disp
y-disp"
END IF
DO k=1,nn; WRITE(11,'(I5,3E12.4)')k,loads(nf(:,k)); END DO
!-----------------------recover stresses at element Gauss-points----------
!nip=1; DEALLOCATE(points,weights); ALLOCATE(points(nip,ndim),weights(nip))
!CALL sample(element,points,weights)
WRITE(11,'(/A,I2,A)')" The integration point (nip=",nip,") stresses are:"
IF(ndim==3)THEN
WRITE(11,'(A,/,A)')"
Element
x-coord
y-coord
z-coord", &
"
sig_x
sig_y
sig_z
tau_xy
tau_yz
tau_zx"
ELSE; WRITE(11,'(A,A)') "
Element x-coord
y-coord",
&
"
sig_x
sig_y
tau_xy"
END IF
elements_3: DO iel=1,nels
CALL deemat(dee,prop(1,etype(iel)),prop(2,etype(iel))); num=g_num(:,iel)
coord=TRANSPOSE(g_coord(:,num)); g=g_g(:,iel); eld=loads(g)
int_pts_2: DO i=1,nip
CALL shape_der(der,points,i); CALL shape_fun(fun,points,i)
gc=MATMUL(fun,coord); jac=MATMUL(der,coord); CALL invert(jac)
deriv=MATMUL(jac,der); CALL beemat(bee,deriv)
sigma=MATMUL(dee,MATMUL(bee,eld))
IF(ndim==3)THEN; WRITE(11,'(I8,4X,3E12.4)')iel,gc
WRITE(11,'(6E12.4)')sigma
ELSE; WRITE(11,'(I8,2E12.4,5X,3E12.4)')iel,gc,sigma
END IF
END DO int_pts_2
END DO elements_3
IF(ndim==2)THEN; CALL dismsh(loads,nf,0.05_iwp,g_coord,g_num,13)
CALL vecmsh(loads,nf,0.05_iwp,0.1_iwp,g_coord,g_num,14)
END IF
STOP
END PROGRAM p54
New dynamic real arrays:
gravlo
loads generated by gravity
Perusal of Programs 5.1 and 5.3 in this chapter will show that they are essentially
identical. The shape function and derivative subroutines
shape fun
and
shape der
,
and the [
B
] and [
D
] subroutines
beemat
and
deemat
can all generate the appropriate