Download mocu2d.eso

Back to the list

   1 : C MOCU2D    SOURCE    CHAT      11/03/16    21:28:01     6902           
   2 : C MOCU2D     SOURCE    GOUNAND   97/10/13    22:21:06     2872           
   3 :       SUBROUTINE MOCU2D(IPCURZ,IPAXIA,IPMODL,IPCAR,IPEPAX,IPMOMZ
   4 :      . ,TOL,mtable,zveri)
   5 : **********************************************************************
   6 : *
   7 : *     OPERATEUR MOCU2D  (MOment/CUrvature)
   8 : *
   9 : * IPCURZ :  Histoire en courbure
  10 : * IPAXIA :   Histoire en effort normal
  11 : * IPMODL : Modele
  12 : * IPCAR :    Materiau
  13 : * IPEPAX :  Histoire allongement axial
  14 : * IPMOMZ : Histoire en moment
  15 : * TOL:         Tolerance
  16 : *
  17 : **********************************************************************
  18 : * D'APRES MOCUR DC 98
  19 : **********************************************************************
  20 :       IMPLICIT INTEGER(I-N)
  21 :       IMPLICIT REAL*8(A-H,O-Z)
  22 : C
  23 :       DIMENSION DEPSI(3),SIGMA(3),CRIGI(12),CMASS(12)
  24 :       logical bool,zveri
  25 :       character*1 char1
  26 : 
  27 : C
  28 : -INC CCOPTIO
  29 : -INC SMLREEL
  30 : -INC CCGEOME
  31 : -INC CCREEL
  32 : -INC SMMODEL
  33 : -INC SMCHAML
  34 : -INC SMTABLE
  35 :       POINTEUR IPCURZ.MLREEL,IPAXIA.MLREEL
  36 :       POINTEUR IPMOMZ.MLREEL,IPEPAX.MLREEL
  37 : C
  38 :       NMAXIT=50
  39 :       NSTRS2 = 3
  40 : C
  41 : *
  42 :       ICOUL1=IDCOUL
  43 : C
  44 : C------- NSTEPS --
  45 : C
  46 :       SEGACT,IPCURZ,IPAXIA
  47 :       NSTEPS=IPCURZ.PROG(/1)
  48 :       IF(IPAXIA.PROG(/1).NE.NSTEPS)THEN
  49 :         SEGDES,IPCURZ,IPAXIA
  50 :         RETURN
  51 :       ENDIF
  52 : C
  53 :       if (zveri) then
  54 :          m=3
  55 :          segini mtable
  56 :          m=nsteps + 1
  57 :          segini mtab1
  57 :          call ecctab (mtable,'MOT     ',ii,xva,'CONTRAINTES',bool,iob,
  58 :      $         'TABLE   ',ii,xva,char1,bool,mtab1)
  59 :          segini mtab2                 
  59 :          call ecctab (mtable,'MOT ',ii,xva,'VARIABLES_INTERNES',bool,iob
  60 :      $         ,'TABLE   ',ii,xva,char1,bool,mtab2)
  61 :          segini mtab3                 
  61 :          call ecctab (mtable,'MOT     ',ii,xva,'DEFORMATIONS',
  62 :      $  bool,iob,
  63 :      $         'TABLE   ',ii,xva,char1,bool,mtab3)
  64 :          segdes mtable
  65 :       endif
  66 : c
  67 : C-------- INITIALIZING ---------------
  68 : C
  68 :       CALL ZEROP(IPMODL,'CONTRAIN',IPSIG0)
  68 :       CALL ZEROP(IPMODL,'VARINTER',IPVAR0)
  69 :       DO IE1=1,3
  70 :         SIGMA(IE1)=0.D0
  71 :       END DO
  72 :       SZERO=0.0D0
  73 :       if (zveri) then
  73 :          call ecctab(mtab1,'ENTIER',0,xva,char1,bool,iob,
  74 :      $                  'MCHAML',ii,xva,char1,bool,ipsig0)
  74 :          call ecctab(mtab2,'ENTIER',0,xva,char1,bool,iob,
  75 :      $                  'MCHAML',ii,xva,char1,bool,ipvar0)
  75 :          call ecctab(mtab3,'ENTIER  ',0,xva,char1,bool,iob,
  76 :      $                  'FLOTTANT',ii,szero,char1,bool,iob)
  77 :       endif
  78 : C
  79 :       JG=NSTEPS
  80 :       SEGINI,IPMOMZ,IPEPAX
  81 : C
  82 : C     INITIAL STIFNESS
  83 : C
  83 :       CALL FRIGIE(IPMODL,IPCAR,CRIGI,CMASS)
  84 :       XKFXEX=CRIGI(1)
  85 :       XKFXCZ=-CRIGI(2)
  86 : C
  87 : C     NULL DEFORMATION INCREMENT
  88 : C
  89 :       DEPSI(2)=0.D0
  90 : C
  91 :       ZAUX0=0.D0
  92 :       ZAXI0=0.D0
  93 :       DEFOA=0.D0
  94 : C
  95 : C-------- LOOP ---------------
  96 : C
  97 :       DO 2000 I=1,NSTEPS
  98 : C
  99 :         ZAUX1=IPCURZ.PROG(I)
 100 :         ZAXI1=IPAXIA.PROG(I)
 101 :         DZCURV=ZAUX1-ZAUX0
 102 :         DFAXIA=ZAXI1-ZAXI0
 103 : C
 104 :         SIGPRE=ZAXI0
 105 :         XKFXEX=CRIGI(1)
 106 :         DSITER=(DFAXIA-XKFXCZ*DZCURV)/XKFXEX
 107 :         SZERO =DSITER
 108 : C
 109 :         DEPSI(3)=DZCURV
 110 : C
 111 :         DO 5000 NITER=1,NMAXIT
 112 :           DEPSI(1)=SZERO
 113 : C
 113 :           CALL FCOUL1(DEPSI,IPMODL,IPSIG0,IPVAR0,IPCAR,
 114 :      $                SIGMA,IPSIGF,IPVARF,IRETO,NSTRS2)
 115 :           IF(IRETO.EQ.0) THEN
 116 :             SEGSUP,IPMOMZ,IPEPAX
 117 :             RETURN
 118 :           ENDIF
 119 : C
 120 :           DSITET=(ZAXI1-SIGMA(1))/XKFXEX
 121 : C
 122 :           IF(IIMPI.EQ.1789)THEN
 123 :             write(IOIMP,999)I,NITER,XKFXEX,DSITET
 124 :  999        format(1x,'I=',I4,' NITER=',I2,' XKFXEX=',
 125 :      $               1pd12.5,' DSITET=',1pd12.5)
 126 :           ENDIF
 127 : C
 128 :           IF(ABS(DSITET).LT.TOL)GOTO 5010
 129 : C
 130 : C  on tente une approximation quasi-newton apres la prediction ...
 131 : C
 132 :           IF(NITER.GT.1) XKFXEX=(SIGMA(1)-SIGPRE)/DSITER
 133 :           SIGPRE=SIGMA(1)
 134 :           DSITER=(ZAXI1-SIGMA(1))/XKFXEX
 135 :           SZERO=SZERO+DSITER
 136 : C
 136 :           CALL DTCHAM(IPSIGF)
 136 :           CALL DTCHAM(IPVARF)
 137 : C
 138 : 5000    CONTINUE
 139 : C
 140 :         INTERR(1)=NMAXIT
 140 :         CALL ERREUR(638)
 140 :         CALL DTCHAM(IPSIG0)
 140 :         CALL DTCHAM(IPVAR0)
 141 :         SEGSUP,IPMOMZ,IPEPAX 
 142 :         SEGDES,IPCURZ,IPAXIA
 143 :         RETURN
 144 : C
 145 : 5010    ZAXI0=SIGMA(1)
 146 :         ZAUX0=ZAUX1
 147 :         DEFOA=DEFOA+SZERO
 148 : C
 149 :         if (.not.zveri) then
 149 :            CALL DTCHAM(IPSIG0)
 149 :            CALL DTCHAM(IPVAR0)
 150 :         endif
 151 :         IPSIG0=IPSIGF
 152 :         IPVAR0=IPVARF
 153 : c
 154 :         if (zveri) then
 154 :            call ecctab(mtab1,'ENTIER',0,xva,char1,bool,iob,
 155 :      $                  'MCHAML',ii,xva,char1,bool,ipsig0)
 155 :            call ecctab(mtab2,'ENTIER',0,xva,char1,bool,iob,
 156 :      $                  'MCHAML',ii,xva,char1,bool,ipvar0)
 156 :            call ecctab(mtab3,'ENTIER  ',I,xva,char1,bool,iob,
 157 :      $                  'FLOTTANT  ',ii,DEFOA,char1,bool,iob)
 158 :        endif
 159 : C
 160 :         IPMOMZ.PROG(I)=SIGMA(3)
 161 :         IPEPAX.PROG(I)=DEFOA
 162 : C
 163 : C
 164 : 2000  CONTINUE
 165 : C
 166 :       if (zveri) then
 167 :          segdes,mtab1,mtab2,mtab3
 168 :       else
 168 :          CALL DTCHAM(IPSIG0)
 168 :          CALL DTCHAM(IPVAR0)
 169 :       endif
 170 :       SEGDES,IPCURZ,IPAXIA
 171 : C
 172 :       SEGDES,IPMOMZ,IPEPAX
 173 : C
 174 :       RETURN
 175 :       END
 176 :  
 177 :  
 178 :  
 179 :  
 180 :  
 181 :  
 182 :  
 183 :  
 184 :  
 185 :  
 186 :  
 187 :  
 188 :  
 189 :  
 190 :  
 191 :  
 192 :  
 193 :  

© Cast3M 2003 - All rights reserved.
Disclaimer