subroutine UGENS(ddndde,force,statev,sse,spd,pnewdt,stran,dstran, 1 tss,time,dtime,temp,dtemp,predef,dpred,cename,ndi,nshr,nsecv, 2 nstatv,props,jprops,nprops,njprop,coords,celent,thick,dfgrd,curv, 3 basis,noel,npt,kstep,kinc,kit,linper) c include 'aba_param.inc' c character*80 cename dimension force(nsecv),statev(nstatv),ddndde(nsecv,nsecv), 1 stran(nsecv),dstran(nsecv),predef(*),dpred(*), 2 props(*),jprops(*),coords(3),time(2),dfgrd(3,3), 3 curv(2,2),basis(3,3),tss(*) parameter (zero=0.0d0,half=0.5d0,one=1.0d0) c c STORE ARGUMENT LIST IN STATE VARIABLE ARRAY (FOR PRINTOUT IN RESULTS FILE) statev(1)=noel statev(2)=npt statev(3)=kstep statev(4)=kinc statev(5)=kit statev(6)=time(1) statev(7)=dtime statev(8)=thick statev(9)=celent statev(10)=temp statev(11)=dtemp c c --- no field variable defined in the problem c statev(12)=zero statev(13)=zero k3=0 do k1=1,3 do k2=1,3 statev(14+k3)=basis(k1,k2) statev(23+k3)=dfgrd(k1,k2) k3=k3+1 end do end do statev(32)=curv(1,1) statev(33)=curv(1,2) statev(34)=curv(2,1) statev(35)=curv(2,2) statev(36)=tss(1) statev(37)=tss(2) statev(38)=coords(1) statev(39)=coords(2) statev(40)=coords(3) do k1=1,nsecv statev(40+k1)=stran(k1) end do istatev=40+nsecv c c ASSEMBLE SECTION STIFFNESS MATRIX FROM USER SPECIFIED PROPERTIES if (nsecv.eq.4) then ddndde(1,1) = props(1) ddndde(1,2) = props(2) ddndde(1,3) = props(7) ddndde(1,4) = props(11) ddndde(2,2) = props(3) ddndde(2,3) = props(8) ddndde(2,4) = props(12) ddndde(3,3) = props(10) ddndde(3,4) = props(14) ddndde(4,4) = props(15) do ksecv1=1,nsecv do ksecv2=1,ksecv1 ddndde(ksecv1,ksecv2) = ddndde(ksecv2,ksecv1) end do end do else iprop=1 do ksecv1=1,nsecv do ksecv2=1,ksecv1 ddndde(ksecv2,ksecv1) = props(iprop) ddndde(ksecv1,ksecv2) = ddndde(ksecv2,ksecv1) iprop=iprop+1 end do end do end if c c UPDATE FORCES AND MOMENTS FOR NONLINEAR STEPS if(linper.eq.0)then do ksecv1=1,nsecv do ksecv2=1,nsecv force(ksecv1) = force(ksecv1) + ddndde(ksecv1,ksecv2)* * dstran(ksecv2) end do statev(istatev+ksecv1) = force(ksecv1) end do endif c if (cename.EQ.'ALL1') then c this is NOT a good way of testing IPROPERTIES tzero=jprops(1) alpha=1.d0/jprops(2) xnu=jprops(3) else c real properties given FOR THERMAL LOADING STEPS tzero=props(22) alpha=props(23) xnu=props(24) end if c SECTION FORCE/MOMENT VECTOR FOR THERMAL LOADING STEPS do kndi=1,ndi force(kndi) = force(kndi) - props(1)*(one+xnu)*alpha*dtemp end do c 999 continue return end