Télécharger ecomrs.eso

Retour à la liste

Numérotation des lignes :

  1. C ECOMRS SOURCE CHAT 05/01/12 23:25:07 5004
  2. CCC
  3. C **********************************************************************
  4. CCC
  5. SUBROUTINE ECO_MRSMAC (SIGINI,VARINI,DSIGTR,SIGFIN,VARFIN,
  6. . ddefpl,iplast,ndims,xmat,kerre,
  7. . precis,nitmax,nescri,ues,nnumer,deltax,
  8. . iterlocal)
  9. CCC
  10. C kerre control de errores 'KERRE
  11. C = 0 integracion correcta
  12. C = 1 sobrepasado el num max de iteraciones/no conv. local
  13. C = 102 apex
  14. CCC
  15. IMPLICIT INTEGER(I-N)
  16. integer ndims,kerre,nitmax,nescri,nnumer,ues,kdummy,ndimv
  17. integer iplast,kerr,i,iplcon,iplcap,iplapex,ndimx,nmodel
  18. integer iplcon2,iplcap2,iplapex2,iterlocal
  19. real*8 sigini(ndims),varini(4),ddefpl(ndims),
  20. . dsigtr(ndims),sigfin(ndims),varfin(ndims),
  21. . xmat(*),precis,deltax,void
  22. real*8 sigtri(6),xtri(8),xini(8),lini,siginv(3)
  23. real*8 exm,qaa,pcc,eww,xk1,xk2,etb,exv,xep,paa,cco,
  24. . exl,xnn,aaa,bbb,pc0,exr,cca,phi,alp,pcc2,paa2,qaa2,
  25. . exm2,eww2,cpr,cpm,cfr,you,xnu
  26. common /elasdata/ you,xnu
  27. common /MRScone/ exm,qaa,pcc,eww,xk1,xk2,etb,exv,xep,paa,cco,
  28. . exl,xnn,aaa,bbb
  29. common /MRScapp/ pc0,exr,cca,phi,alp,pcc2,paa2,qaa2,exm2,eww2,
  30. . cpr,cpm,cfr
  31. do i=1,3
  32. siginv(i)=0.D0
  33. enddo
  34. do i=1,6
  35. sigtri(i)=0.D0
  36. enddo
  37. do i=1,8
  38. xtri(i)=0.D0
  39. xini(i)=0.D0
  40. enddo
  41. kerre=0
  42. iplast=1
  43. call CaracmateMAC(xmat)
  44. nmodel=20
  45. do i=1,ndims
  46. sigtri(i)=sigini(i)+dsigtr(i)
  47. enddo
  48. if (nescri.eq.1) then
  49. call InvariantesPQT(sigtri,ndims,siginv)
  50. write(ues,*)' Sigma trial invari'
  51. write(ues,'(1x,3(E24.16,1x))')(siginv(i),i=1,3)
  52. endif
  53. kdummy=0
  54. call DeterzonaMAC(sigtri,ndims,varini,iplcon,iplcap,iplapex,
  55. . kdummy,ues)
  56. c ELASTICO
  57. 10 continue
  58. if (iplapex.ne.0) goto 900
  59. if ((iplcon.eq.0).and.(iplcap.eq.0)) then
  60. if (nescri.eq.1) write(*,*)' Paso elastico'
  61. iplast=0
  62. do i=1,ndims
  63. sigfin(i) = sigtri(i)
  64. enddo
  65. varfin(1)=varini(1)
  66. varfin(2)=varini(2)
  67. varfin(3)=-1.D0
  68. varfin(4)=-1.D0
  69. iterlocal=0
  70. return
  71. endif
  72. c PLASTICO
  73. do i=1,ndims
  74. xtri(i)=sigtri(i)
  75. xini(i)=sigtri(i)
  76. enddo
  77. lini =0.D0
  78. if (nescri.eq.1) write(ues,*)' Modelo MAC: cone-cap harde'
  79. ndimx=ndims+2
  80. xtri(ndims+1)=varini(1)
  81. xini(ndims+1)=varini(1)
  82. xtri(ndims+2)=varini(2)
  83. xini(ndims+2)=varini(2)
  84. c prediccion para la var interna del cone:
  85. c se trata de esquivar una zona de no convergencia del n-r local
  86. c if ((xini(ndims+1).gt.1.D0).and.(xini(ndims+1).lt.5.D0))
  87. c . xini(ndims+1)=5.D0
  88. if ((iplcon.eq.1).and.(iplcap.eq.0)) then
  89. if (nescri.eq.1) write(*,*)' Paso plastico: CONE'
  90. kdummy=21
  91. elseif ((iplcon.eq.0).and.(iplcap.eq.1)) then
  92. if (nescri.eq.1) write(*,*)' Paso plastico: CAP'
  93. kdummy=22
  94. else
  95. write(*,*)' Paso plastico: CONE-CAP',iplcon,iplcap
  96. kerre=1
  97. return
  98. endif
  99. call Integra21(xtri,xini,ndimx,lini,ddefpl,ndims,
  100. . kdummy,precis,nitmax,nescri,ues,nnumer,
  101. . deltax,kerre,iterlocal)
  102. varfin(1)=xini(ndims+1)
  103. varfin(2)=xini(ndims+2)
  104. do i=1,ndims
  105. sigfin(i)=xini(i)
  106. enddo
  107. kdummy=0
  108. call DeterzonaMAC(xtri,ndims,varfin,iplcon2,iplcap2,iplapex2,
  109. . kdummy,ues)
  110. if ((iplcon.eq.0).and.(iplcon2.eq.1)) then
  111. if (nescri.eq.1)
  112. . write(*,*)' Cambio de zona de CAP a CONE'
  113. iplcap=0
  114. iplcon=1
  115. goto 10
  116. endif
  117. if (kerre.eq.1) return
  118. if ((iplcon.eq.1).and.(iplcap.eq.0)) then
  119. varfin(3)=lini
  120. varfin(4)=-1.D0
  121. elseif ((iplcon.eq.0).and.(iplcap.eq.1)) then
  122. varfin(3)=-1.D0
  123. varfin(4)=lini
  124. endif
  125. return
  126. c APEX
  127. 900 continue
  128. if (nescri.eq.1) write(*,*)' Paso plastico: APEX'
  129. write(*,*)' Paso plastico: APEX'
  130. do i=1,3
  131. sigfin(i)=-xmat(5)
  132. enddo
  133. do i=4,ndims
  134. sigfin(i)=0.d0
  135. enddo
  136. varfin(1)=varini(1)
  137. varfin(2)=varini(2)
  138. varfin(3)=-2.D0
  139. varfin(4)=-2.D0
  140. kerre=1
  141. return
  142. 1000 continue
  143. return
  144. return
  145. end
  146.  
  147.  
  148.  
  149.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales