Télécharger clispp.eso

Retour à la liste

Numérotation des lignes :

clispp
  1. C CLISPP SOURCE OF166741 25/11/04 21:15:26 12349
  2. SUBROUTINE CLISPP(WRK52,WRK53,WRK54,WRK2,IFOU,IB,IGAU,
  3. 1 NBPGAU,iecou)
  4.  
  5. C======================================================================
  6. C PLASTICITE LINESPRING
  7. C
  8. C ENTREES
  9. C SIG0(NSTRS1) = CONTRAINTES INITIALES
  10. C NSTRS1 = NOMBRE DE CONTRAINTES
  11. C DEPST(NSTRS1)= INCREMENT DE DEFORMATIONS TOTALES
  12. C VAR0(NVARI) = VARIABLES INTERNES DEBUT
  13. C XMAT(NCOMAT)= COMPOSANTES DE MATERIAU
  14. C NCOMAT = NOMBRE DE COMPOSANTES DE MATERIAU
  15. C xcarb(ICARA) = CARACTERISTIQUES
  16. C ICARA = NOMBRE DE CARACTERISTIQUES
  17. C MALI = NUMERO DU MATERIAU LINEAIRE
  18. C INPLAS = NUMERO DU MATERIAU PLASTIQUE
  19. C NCOURT = NOMBRE DE POINTS SUR LA COURBE DE TRACTION
  20. C TRAC = COURBE DE TRACTION
  21. C PRECIS = PRECISION DES ITERATIONS
  22. * CMATE = NOM DU MATERIAU
  23. * VALMAT= TABLEAU DE CARACTERISTIQUES DU MATERIAU
  24. * VALCAR= TABLEAU DE CARACTERISTIQUES GEOMETRIQUES
  25. * N2EL = NBRE D ELEMENTS DANS SEGMENT DE HOOKE
  26. * N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE
  27. * MFR = NUMERO DE LA FORMULATION
  28. * IFOU = OPTION DE CALCUL
  29. * IB = NUMERO DE L ELEMENT COURANT
  30. * IGAU = NUMERO DU POINT COURANT
  31. * EPAIST= EPAISSEUR
  32. * NBPGAU= NBRE DE POINTS DE GAUSS
  33. * MELE = NUMERO DE L ELEMENT FINI
  34. * NPINT = NBRE DE POINTS D INTEGRATION
  35. * NBGMAT= NBRE DE POINTS DANS SEGMENT DE CARACTERISTIQUES
  36. * NELMAT= NBRE D ELEMENTS DANS SEGMENT DE CARACTERISTIQUES
  37. * SECT = SECTION
  38. * LHOOK = TAILLE DE LA MATRICE DE HOOKE
  39. * TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI = TABLEAUX
  40. * UTILISES POUR LE CALCUL DE LA MATRICE DE HOOKE
  41. C
  42. C SORTIES
  43. C SIGF(NSTRS1) = CONTRAINTES FINALES ET J
  44. C VARF(NVARI) = VARIABLES INTERNES FINALES
  45. C DEFP(NSTRS1) = DEFORMATIONS PLASTIQUES
  46. C KERRE = 0 TOUT OK
  47. C 1 SI DLAMBDA NEGATIF
  48. C 2 NOMBRE MAX D ITERATIONS INTERNES DEPASSE
  49. C 21 ON NE TROUVE PAS L INTERSECTION AVEC LA SRFCE DE CHRG
  50. C 22 SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE
  51. C 30 LIMITE ELASTIQUE NULLE
  52. C 75 SORTIE DE LA COURBE DE TRACTION
  53. C=======================================================================
  54. IMPLICIT INTEGER(I-N)
  55. IMPLICIT REAL*8(A-H,O-Z)
  56.  
  57. -INC CCREEL
  58. -INC DECHE
  59. -INC TECOU
  60.  
  61. SEGMENT/WRK2/(TRAC(LTRAC)*D)
  62. SEGMENT/WORK/(SIG(nccor)*D,XLAM(nccor)*D)
  63.  
  64. PARAMETER(UNDEMI=.5D0,UN=1.D0,SIX=6.D0)
  65. PARAMETER(NITERC=50)
  66. dimension crigi(12)
  67. C
  68. PREC = PRECIS*UNDEMI
  69. PRECM =-PRECIS*UNDEMI
  70. C
  71. KERRE = 0
  72.  
  73. C ON RECUPERE L EPAISSEUR
  74. * write(6,*) ' entree dans clispp iecou', iecou
  75. W = xcarb(1)
  76. FI = xcarb(2)
  77. QSI= FI / W
  78. C
  79. C A PARTIR DE LA COURBE DE TRACTION , ON CONSTRUIT (SIG0,PHIP)
  80. C
  81. YOU = XMAT(1)
  82. XNU = XMAT(2)
  83. IF(INPLAS.EQ.2) THEN
  84. CCC CAS DE LA PLASTICITE PARFAITE
  85. IF (XMAT(5).EQ.XZERO) THEN
  86. KERRE=30
  87. RETURN
  88. ENDIF
  89. NCOURT=2
  90. TRAC(1)=XMAT(5)
  91. TRAC(2)=XZERO
  92. TRAC(3)=XMAT(5)
  93. TRAC(4)=UN
  94. ELSE
  95. CCC CAS DE LA PLASTICITE AVEC ECROUISSAGE
  96. C ON CALCULE LA RAIDEUR KMM ET ON REMPLIT XMAT(1)=KMM POUR VERIF
  97. C PENTE A L ORIGINE DE LA COURBE (M,PHI)
  98. IF(INPLAS.EQ.27) THEN
  99. CALL LISPAL(QSI,ALMM,ALMF,ALFF,DELTA)
  100. DDX= 2.D0*(1.D0 -XNU* XNU)/YOU
  101. CMM= ALFF*DDX*SIX*SIX/(W*W)
  102. XMAT(1)=1.D0/CMM
  103. nccor = 0
  104. call ccotra(wrk52,wrk2,nccor,wrk53)
  105. IF (KERRE.NE.0) RETURN
  106. XMAT(1)=YOU
  107. NCOURT = nccor
  108. ENDIF
  109. PMOMM=TRAC(2*NCOURT-1)
  110. IF(PMOMM.EQ.0.D0) THEN
  111. KERRE=30
  112. RETURN
  113. ENDIF
  114. C
  115. C ON CALCULE SIG0 POUR LE MOMENT MAXI
  116. C
  117. XM0SS0=W*W*0.25D0
  118. CALL LISPML(QSI,A)
  119. VSIG0=PMOMM/(XM0SS0*A)
  120. DO 100 I=1,NCOURT
  121. TRAC(2*I-1)=(TRAC(2*I-1)/PMOMM)*VSIG0
  122. 100 CONTINUE
  123. ENDIF
  124. C
  125. C REMPLISSAGE DE LA COURBE DE (SIG0,PHIP)
  126. C
  127. nccor = NCOURT
  128. SEGINI WORK
  129. DO 2 I=1,nccor
  130. SIG(I) =TRAC(2*I-1)
  131. XLAM(I)=TRAC(2*I)
  132. 2 CONTINUE
  133. C
  134. C ON RECUPERE LES VARIABLES INTERNES
  135. C
  136. XLAM0=VAR0(1)
  137. IBI=0
  138. CALL TRACTI(SIGMA0,XLAM0,SIG,XLAM,nccor,2,IBI)
  139. IF (IBI.EQ.1) THEN
  140. KERRE=75
  141. GOTO 666
  142. ENDIF
  143. C
  144. C CALCUL DES INCREMENTS DE CONTRAINTES
  145. C
  146. nstrbi=iecou.nstrss
  147. nbgmab=iecou.nbgmat
  148. nlmatb=iecou.nelmat
  149. * write(6,*) ' clispp appel a calsig mfr ', mfr
  150. CALL CALSIG(DEPST,DDAUX,NSTRbi,CMATE,VALMAT,VALCAR,
  151. 1 N2EL,N2PTEL,MFR,IFOU,IB,IGAU,EPAIST,NBPGAU,
  152. 2 MELE,NPINT,NBGMAb,NLMATb,SECT,LHOOK,TXR,XLOC,
  153. 3 XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI,DSIGT,IRTD)
  154. * write(6,*) ' clispp apres calsig irtd ',irtd
  155. IF(IRTD.NE.1) THEN
  156. KERRE=69
  157. GOTO 666
  158. ENDIF
  159. C
  160. C ON TRAVAILLE AVEC LES 2 CONTRAINTES MEMBRANE ET FLEXION
  161. C SOLLICITANT LA FISSURE
  162. SIGF(2)=DSIGT(2) + SIG0(2)
  163. SIGF(3)=DSIGT(3) + SIG0(3)
  164. SIGF(5)=DSIGT(5) + SIG0(5)
  165. DEFP(2)=XZERO
  166. DEFP(3)=XZERO
  167. DEFP(5)=XZERO
  168. C
  169. C ON CALCULE LES PARAMETRES POUR CALCULER LE CRITERE
  170. C ET SA DERIVEE
  171. CALL LISPPA(QSI,W,SIGMA0,GA,GB,rA,rB,rC,rD,rE,rF)
  172. C
  173. XN0=SIG0(1)
  174. XM0=SIG0(4)
  175. DNT=DSIGT(1)
  176. DMT=DSIGT(4)
  177. XNT=XN0+DNT
  178. XMT=XM0+DMT
  179. C
  180. C POSITION DE XN0 XM0 XNT XMT DANS OU HORS DE LA SURFACE DE CHARGE
  181. C
  182. CALL LISPQ(XN0,XM0,W,SIGMA0,GA,GB,QSI,Q1)
  183. CALL LISPQ(XNT,XMT,W,SIGMA0,GA,GB,QSI,Q2)
  184. C
  185. IF(Q1.GT.PREC) THEN
  186. KERRE=22
  187. ELSE IF(Q1.LE.PREC.AND.Q2.LE.PREC) THEN
  188. XNE =XNT
  189. XME =XMT
  190. XNP=XZERO
  191. XMP=XZERO
  192. DLAM=XZERO
  193. C
  194. ELSE IF(Q1.LE.PRECM.AND.Q2.GT.PREC) THEN
  195. C
  196. C ON CHERCHE INTERSECTION AVEC SURFACE DE CHARGE
  197. C
  198. DQDLAM=(rA*XNT+rB*XMT+rE)*DNT+(rB*XNT+rD*XMT+rF)*DMT
  199. DLAM= 1.D0 - Q2 / DQDLAM
  200. DO 101 IA=1,NITERC
  201. XNTRA=XN0+DLAM*DNT
  202. XMTRA=XM0+DLAM*DMT
  203. CALL LISPQ(XNTRA,XMTRA,W,SIGMA0,GA,GB,QSI,QQ)
  204. DQDLAM= (rA*XNTRA+rB*XMTRA+rE)*DNT
  205. & +(rB*XNTRA+rD*XMTRA+rF)*DMT
  206. DLA1=DLAM - QQ / DQDLAM
  207. XNN = ABS(DLA1-DLAM)
  208. DLAM=DLA1
  209. IF(XNN.LT.PREC) GOTO 200
  210. 101 CONTINUE
  211. C
  212. C ON NE TROUVE PAS XN0 XM0 EN MOINS DE NITERC ITERATIONS
  213. C
  214. KERRE=21
  215. GOTO 444
  216. 200 CONTINUE
  217. C
  218. C ON INTEGRE
  219. C
  220. prec1 = PRECIS
  221. kerre1 = KERRE
  222. CALL LISPP1(XNTRA,XMTRA,XNT,XMT,QSI,W,YOU,XNU,WORK,
  223. 1 XLAM0,prec1,XNE,XME,XNP,XMP,DLAM,kerre1)
  224. PRECIS = prec1
  225. KERRE = kerre1
  226. C
  227. 444 CONTINUE
  228. ELSE IF(Q1.GT.PRECM.AND.Q1.LE.PREC.AND.Q2.GT.PREC) THEN
  229. C
  230. C ON INTEGRE
  231. C
  232. prec1 = PRECIS
  233. kerre1 = KERRE
  234. CALL LISPP1(XN0,XM0,XNT,XMT,QSI,W,YOU,XNU,WORK,
  235. 1 XLAM0,prec1,XNE,XME,XNP,XMP,DLAM,kerre1)
  236. PRECIS = prec1
  237. KERRE = kerre1
  238. C
  239. ENDIF
  240. C
  241. C ON TRANSFORME LES EFFORTS EN CONTRAINTES ET ON RECALCULE KI
  242. IF(KERRE.EQ.0) THEN
  243. SIGF(1)=XNE
  244. S1=XNE/W
  245. SIGF(4)=XME
  246. S4=XME*SIX/(W*W)
  247. C
  248. CALL LISPFI(QSI,FM,FF)
  249. XXX= SQRT(XPI*FI)
  250. XKIEL = XXX*(FM*S1+FF*S4)
  251. C
  252. DEFP(1)=XNP
  253. DEFP(4)=2.D0*XMP/W
  254. C
  255. CALL LISPDF(XNE,XME,GA,GB,QSI,W,SIGMA0,DFIDQS,DFIDM)
  256. VARF(1)=ABS(DLAM)+VAR0(1)
  257. DJP=DFIDQS*DLAM/DFIDM/W
  258. VARF(2)=VAR0(2)+DJP
  259. C
  260. DEFP(6)=DJP
  261. SIGF(6)=XKIEL
  262. ENDIF
  263.  
  264. 666 CONTINUE
  265. RETURN
  266. END
  267.  
  268.  
  269.  

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