Civil Engineering Reference
In-Depth Information
CALL rod_km(km,prop(1,etype(iel)),ell(iel)); 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),value(fixed_freedoms))
READ(10,*)(node(i),value(i),i=1,fixed_freedoms)
DO i=1,fixed_freedoms; no(i)=nf(1,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 Disp"
DO k=1,nn; WRITE(11,'(I5,2E12.4)')k,loads(nf(:,k)); END DO
!-----------------------retrieve element end actions----------------------
WRITE(11,'(/A)')" Element Actions"
elements_3: DO iel=1,nels
CALL rod_km(km,prop(1,etype(iel)),ell(iel)); g=g_g(:,iel)
eld=loads(g); action=MATMUL(km,eld); WRITE(11,'(I5,2E12.4)')iel,action
END DO elements_3
STOP
END PROGRAM p41
Scalar integers:
fixed freedoms number of fixed displacements
i
simple counter
simple counter
iel
iwp
SELECTED REAL KIND(15)
simple counter
k
number of loaded nodes
loaded nodes
number of degrees of freedom per element
ndof
number of elements
nels
number of degrees of freedom in the mesh
neq
number of nodes in the mesh
nn
number of nodes per element
nod
number of degrees of freedom per node
nodof
number of material properties
nprops
np types
number of different property types
nr
number of restrained nodes
Scalar reals:
penalty
10 20
set to 1
×
set to 0
.
0
zero
Dynamic integer arrays:
etype
element property type vector
g
element steering vector
g g
global element steering matrix
kdiag
diagonal term location vector
Search WWH ::




Custom Search