C ECOMRS SOURCE CHAT 05/01/12 23:25:07 5004 CCC C ********************************************************************** CCC SUBROUTINE ECO_MRSMAC (SIGINI,VARINI,DSIGTR,SIGFIN,VARFIN, . ddefpl,iplast,ndims,xmat,kerre, . precis,nitmax,nescri,ues,nnumer,deltax, . iterlocal) CCC C kerre control de errores 'KERRE C = 0 integracion correcta C = 1 sobrepasado el num max de iteraciones/no conv. local C = 102 apex CCC IMPLICIT INTEGER(I-N) integer ndims,kerre,nitmax,nescri,nnumer,ues,kdummy,ndimv integer iplast,kerr,i,iplcon,iplcap,iplapex,ndimx,nmodel integer iplcon2,iplcap2,iplapex2,iterlocal real*8 sigini(ndims),varini(4),ddefpl(ndims), . dsigtr(ndims),sigfin(ndims),varfin(ndims), . xmat(*),precis,deltax,void real*8 sigtri(6),xtri(8),xini(8),lini,siginv(3) real*8 exm,qaa,pcc,eww,xk1,xk2,etb,exv,xep,paa,cco, . exl,xnn,aaa,bbb,pc0,exr,cca,phi,alp,pcc2,paa2,qaa2, . exm2,eww2,cpr,cpm,cfr,you,xnu common /elasdata/ you,xnu common /MRScone/ exm,qaa,pcc,eww,xk1,xk2,etb,exv,xep,paa,cco, . exl,xnn,aaa,bbb common /MRScapp/ pc0,exr,cca,phi,alp,pcc2,paa2,qaa2,exm2,eww2, . cpr,cpm,cfr do i=1,3 siginv(i)=0.D0 enddo do i=1,6 sigtri(i)=0.D0 enddo do i=1,8 xtri(i)=0.D0 xini(i)=0.D0 enddo kerre=0 iplast=1 call CaracmateMAC(xmat) nmodel=20 do i=1,ndims sigtri(i)=sigini(i)+dsigtr(i) enddo if (nescri.eq.1) then call InvariantesPQT(sigtri,ndims,siginv) write(ues,*)' Sigma trial invari' write(ues,'(1x,3(E24.16,1x))')(siginv(i),i=1,3) endif kdummy=0 call DeterzonaMAC(sigtri,ndims,varini,iplcon,iplcap,iplapex, . kdummy,ues) c ELASTICO 10 continue if (iplapex.ne.0) goto 900 if ((iplcon.eq.0).and.(iplcap.eq.0)) then if (nescri.eq.1) write(*,*)' Paso elastico' iplast=0 do i=1,ndims sigfin(i) = sigtri(i) enddo varfin(1)=varini(1) varfin(2)=varini(2) varfin(3)=-1.D0 varfin(4)=-1.D0 iterlocal=0 return endif c PLASTICO do i=1,ndims xtri(i)=sigtri(i) xini(i)=sigtri(i) enddo lini =0.D0 if (nescri.eq.1) write(ues,*)' Modelo MAC: cone-cap harde' ndimx=ndims+2 xtri(ndims+1)=varini(1) xini(ndims+1)=varini(1) xtri(ndims+2)=varini(2) xini(ndims+2)=varini(2) c prediccion para la var interna del cone: c se trata de esquivar una zona de no convergencia del n-r local c if ((xini(ndims+1).gt.1.D0).and.(xini(ndims+1).lt.5.D0)) c . xini(ndims+1)=5.D0 if ((iplcon.eq.1).and.(iplcap.eq.0)) then if (nescri.eq.1) write(*,*)' Paso plastico: CONE' kdummy=21 elseif ((iplcon.eq.0).and.(iplcap.eq.1)) then if (nescri.eq.1) write(*,*)' Paso plastico: CAP' kdummy=22 else write(*,*)' Paso plastico: CONE-CAP',iplcon,iplcap kerre=1 return endif call Integra21(xtri,xini,ndimx,lini,ddefpl,ndims, . kdummy,precis,nitmax,nescri,ues,nnumer, . deltax,kerre,iterlocal) varfin(1)=xini(ndims+1) varfin(2)=xini(ndims+2) do i=1,ndims sigfin(i)=xini(i) enddo kdummy=0 call DeterzonaMAC(xtri,ndims,varfin,iplcon2,iplcap2,iplapex2, . kdummy,ues) if ((iplcon.eq.0).and.(iplcon2.eq.1)) then if (nescri.eq.1) . write(*,*)' Cambio de zona de CAP a CONE' iplcap=0 iplcon=1 goto 10 endif if (kerre.eq.1) return if ((iplcon.eq.1).and.(iplcap.eq.0)) then varfin(3)=lini varfin(4)=-1.D0 elseif ((iplcon.eq.0).and.(iplcap.eq.1)) then varfin(3)=-1.D0 varfin(4)=lini endif return c APEX 900 continue if (nescri.eq.1) write(*,*)' Paso plastico: APEX' write(*,*)' Paso plastico: APEX' do i=1,3 sigfin(i)=-xmat(5) enddo do i=4,ndims sigfin(i)=0.d0 enddo varfin(1)=varini(1) varfin(2)=varini(2) varfin(3)=-2.D0 varfin(4)=-2.D0 kerre=1 return 1000 continue return return end