Civil Engineering Reference
In-Depth Information
READ(10,*)prop; etype=1; IF(np_types>1)READ(10,*)etype
READ(10,*)g_coord; READ(10,*)g_num
nf=1; READ(10,*)nr,(k,nf(:,k),i=1,nr); CALL formnf(nf); neq=MAXVAL(nf)
ALLOCATE(kdiag(neq),loads(0:neq)); kdiag=0
!----------------------loop the elements to find global array sizes-------
elements_1: DO iel=1,nels
num=g_num(:,iel); CALL num_to_g(num,nf,g); g_g(:,iel)=g
CALL fkdiag(kdiag,g)
END DO elements_1
DO i=2,neq; kdiag(i)=kdiag(i)+kdiag(i-1); END DO; ALLOCATE(kv(kdiag(neq)))
WRITE(11,'(2(A,I5))')
&
" There are",neq," equations and the skyline storage is",kdiag(neq)
!-----------------------global stiffness matrix assembly------------------
kv=zero
elements_2: DO iel=1,nels
num=g_num(:,iel); coord=TRANSPOSE(g_coord(:,num))
CALL pin_jointed(km,prop(1,etype(iel)),coord); g=g_g(:,iel)
CALL fsparv(kv,km,g,kdiag)
END DO elements_2
!-----------------------read loads and/or displacements-------------------
loads=zero; READ(10,*)loaded_nodes,(k,loads(nf(:,k)),i=1,loaded_nodes)
READ(10,*)fixed_freedoms
IF(fixed_freedoms/=0)THEN
ALLOCATE(node(fixed_freedoms),no(fixed_freedoms),
&
sense(fixed_freedoms),value(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
WRITE(11,'(/A)') " Node Displacement(s)"
DO k=1,nn; WRITE(11,'(I5,3E12.4)')k,loads(nf(:,k)); END DO
!-----------------------retrieve element end actions----------------------
WRITE(11,'(/A)')" Element Actions"
elements_3: DO iel=1,nels
num=g_num(:,iel); coord=TRANSPOSE(g_coord(:,num))
CALL pin_jointed(km,prop(1,etype(iel)),coord); g=g_g(:,iel)
eld=loads(g); action=MATMUL(km,eld); WRITE(11,'(I5,6E12.4)')iel,action
CALL glob_to_axial(axial,action,coord)
WRITE(11,'(A,E12.4)')"
Axial force =",axial
END DO elements_3
STOP
END PROGRAM p42
New scalar integers:
ndim
number of dimensions
New scalar reals:
axial element axial force
New dynamic integer arrays:
g num global element node numbers matrix
sense sense of freedoms to be fixed vector
Search WWH ::




Custom Search