Download force.eso

Back to the list

   1 : C FORCE     SOURCE    KICH      08/07/30    21:15:11     6140           
   2 : 
   3 : C=======================================================================
   4 : C=          OPERATEUR FORCE OU MOMENT
   5 : C
   6 : C=             SYNTAXE CHP1=FORCE  I    VECTEUR          I  OBJET ;
   7 : C=                                 I  NOMFORC  VAL  ...  I
   8 : C
   9 : C=                     CHP2=MOMEN  I    VECTEUR          I  OBJET ;
  10 : C=                                 I  NOMMOME  VAL  ...  I
  11 : C
  12 : C=                           VECTEUR EST LE VECTEUR FORCE TOTAL APPLIQUE
  13 : C=                                    A L OBJET QUI PEUT ETRE UNE LISTE
  14 : C=                                    DE POINTS OU D ELEMENTS
  15 : C=======================================================================
  16 : 
  17 :       SUBROUTINE FORCE(LTYP)
  18 : 
  19 :       IMPLICIT INTEGER(I-N)
  20 :       IMPLICIT REAL*8 (A-H,O-Z)
  21 : 
  22 : -INC CCOPTIO
  23 : -INC SMELEME
  24 : -INC SMCHPOI
  25 : -INC SMCOORD
  26 : 
  27 :       SEGMENT MSWMOT
  28 :         CHARACTER*4 MOTFOR(0)
  29 :       ENDSEGMENT
  30 :       SEGMENT MSWVAL
  31 :         REAL*8 VALFOR(0)
  32 :       ENDSEGMENT
  33 : 
  34 :       DIMENSION VEC(3)
  35 :       CHARACTER*4 MOTYPO(10),charm,charre,typret
  36 :       CHARACTER*4 MOFOR1(2),MOFOR2(2),MOFOR3(3),MOFOR4(3),MOFOR5(2)
  37 :       CHARACTER*4 MOMOM1(1),MOMOM2(1),MOMOM3(2),MOMOM4(3)
  38 :       REAL*8 XXA,vval,X0,X1
  39 : 
  40 : 
  41 :       DATA MOTYPO / 'FX  ','FY  ','FZ  ','FR  ','FZ  ','FT  ',
  42 :      .              'MX  ','MY  ','MZ  ','MT  ' /
  43 :       DATA MOFOR1 / 'FX  ','FY  ' /
  44 :       DATA MOFOR2 / 'FR  ','FZ  ' /
  45 :       DATA MOFOR3 / 'FR  ','FZ  ','FT  ' /
  46 :       DATA MOFOR4 / 'FX  ','FY  ','FZ  ' /
  47 :       DATA MOFOR5 / 'FX  ','FZ  ' /
  48 :       DATA MOMOM1 / 'MZ  ' /
  49 :       DATA MOMOM2 / 'MT  ' /
  50 :       DATA MOMOM3 / 'MT  ','MZ  ' /
  51 :       DATA MOMOM4 / 'MX  ','MY  ','MZ  ' /
  52 : 
  53 : 
  53 :       call lirtab('LIAISONS_STATIQUES',ipt,0,iret1) 
  54 :       if (iret1.ne.0) goto 200
  55 : 
  56 : CCCCCCCCCC ON LIT SOIT UN VECTEUR , SOIT UN OU PLUSIEURS NOMS DE
  57 : C    COMPOSANTES ACCOMPAGNES D'UN FLOTTANT
  58 : 
  58 :       CALL LIROBJ('POINT   ',NOEUD,0,IRET1)
  59 :       IF (IRET1.EQ.0) THEN
  60 :         SEGINI,MSWMOT,MSWVAL
  61 :         IF (LTYP.EQ.1) THEN
  62 :           IF (IFOMOD.EQ.-1) THEN
  63 : C  ON INTRODUIT LES FORCES EN DEFO PLANE GENE (FX,FY,FZ)
  64 :  11         IF (IFOUR.EQ.-3) THEN
  64 :               CALL LIRMOT(MOFOR4,3,IMLU,0)
  65 :               IF (IMLU.EQ.0) GOTO 999
  65 :               CALL LIRREE(VAL,1,IRETOU)
  66 :               IF (IERR.NE.0) RETURN
  67 :               MOTFOR(**)=MOFOR4(IMLU)
  68 :               VALFOR(**)=VAL
  69 :             ELSE
  69 :               CALL LIRMOT(MOFOR1,2,IMLU,0)
  70 :               IF (IMLU.EQ.0) GOTO 999
  70 :               CALL LIRREE(VAL,1,IRETOU)
  71 :               IF (IERR.NE.0) RETURN
  72 :               MOTFOR(**)=MOFOR1(IMLU)
  73 :               VALFOR(**)=VAL
  74 :             ENDIF
  75 :             GOTO 11
  76 :           ELSE IF(IFOMOD.EQ.0) THEN
  76 :  12         CALL LIRMOT(MOFOR2,2,IMLU,0)
  77 :             IF (IMLU.EQ.0) GOTO 999
  77 :             CALL LIRREE(VAL,1,IRETOU)
  78 :             IF (IERR.NE.0) RETURN
  79 :             MOTFOR(**)=MOFOR2(IMLU)
  80 :             VALFOR(**)=VAL
  81 :             GOTO 12
  82 :           ELSE IF (IFOMOD.EQ.1) THEN
  82 :  13         CALL LIRMOT(MOFOR3,3,IMLU,0)
  83 :             IF (IMLU.EQ.0) GOTO 999
  83 :             CALL LIRREE(VAL,1,IRETOU)
  84 :             IF (IERR.NE.0) RETURN
  85 :             MOTFOR(**)=MOFOR3(IMLU)
  86 :             VALFOR(**)=VAL
  87 :             GOTO 13
  88 :           ELSE IF (IFOMOD.EQ.2) THEN
  88 :  14         CALL LIRMOT(MOFOR4,3,IMLU,0)
  89 :             IF (IMLU.EQ.0) GOTO 999
  89 :             CALL LIRREE(VAL,1,IRETOU)
  90 :             IF (IERR.NE.0) RETURN
  91 :             MOTFOR(**)=MOFOR4(IMLU)
  92 :             VALFOR(**)=VAL
  93 :             GOTO 14
  94 :           ELSE IF (IFOMOD.EQ.3) THEN
  95 :             IF (IFOUR.EQ.9.OR.IFOUR.EQ.10) THEN
  95 :  151          CALL LIRMOT(MOFOR5,2,IMLU,0)
  96 :               IF (IMLU.EQ.0) GOTO 999
  96 :               CALL LIRREE(VAL,1,IRETOU)
  97 :               IF (IERR.NE.0) RETURN
  98 :               MOTFOR(**)=MOFOR5(IMLU)
  99 :               VALFOR(**)=VAL
 100 :               GOTO 151
 101 :             ELSE
 102 :               NC=1
 103 :               IF (IFOUR.EQ.7.OR.IFOUR.EQ.8) NC=2
 104 :               IF (IFOUR.EQ.11) NC=3
 104 :  152          CALL LIRMOT(MOFOR4,3,IMLU,0)
 105 :               IF (IMLU.EQ.0) GOTO 999
 105 :               CALL LIRREE(VAL,1,IRETOU)
 106 :               IF (IERR.NE.0) RETURN
 107 :               MOTFOR(**)=MOFOR4(IMLU)
 108 :               VALFOR(**)=VAL
 109 :               GOTO 152
 110 :             ENDIF
 111 :           ELSE IF (IFOMOD.EQ.4) THEN
 112 :             NC=1
 113 :             IF (IFOUR.EQ.14) NC=2
 113 :  16         CALL LIRMOT(MOFOR2,2,IMLU,0)
 114 :             IF (IMLU.EQ.0) GOTO 999
 114 :             CALL LIRREE(VAL,1,IRETOU)
 115 :             IF (IERR.NE.0) RETURN
 116 :             MOTFOR(**)=MOFOR2(IMLU)
 117 :             VALFOR(**)=VAL
 118 :             GOTO 16
 119 :           ELSE IF (IFOMOD.EQ.5) THEN
 119 :  17         CALL LIRMOT(MOFOR2,1,IMLU,0)
 120 :             IF (IMLU.EQ.0) GOTO 999
 120 :             CALL LIRREE(VAL,1,IRETOU)
 121 :             IF (IERR.NE.0) RETURN
 122 :             MOTFOR(**)=MOFOR2(IMLU)
 123 :             VALFOR(**)=VAL
 124 :             GOTO 17
 125 :           ENDIF
 126 :         ELSE IF (LTYP.EQ.2) THEN
 127 :           IF (IFOMOD.EQ.-1) THEN
 128 : C    ON INTRODUIT LES MOMENTS EN DEFO PLANE GENE (MX,MY,MZ)
 129 :  21         IF (IFOUR.EQ.-3) THEN
 129 :               CALL LIRMOT(MOMOM4,3,IMLU,0)
 130 :               IF (IMLU.EQ.0) GOTO 999
 130 :               CALL LIRREE(VAL,1,IRETOU)
 131 :               IF (IERR.NE.0) RETURN
 132 :               MOTFOR(**)=MOMOM4(IMLU)
 133 :               VALFOR(**)=VAL
 134 :             ELSE
 134 :               CALL LIRMOT(MOMOM1,1,IMLU,0)
 135 :               IF (IMLU.EQ.0) GOTO 999
 135 :               CALL LIRREE(VAL,1,IRETOU)
 136 :               IF (IERR.NE.0) RETURN
 137 :               MOTFOR(**)=MOMOM1(IMLU)
 138 :               VALFOR(**)=VAL
 139 :             ENDIF
 140 :             GOTO 21
 141 :           ELSE IF (IFOMOD.EQ.0) THEN
 141 :  22         CALL LIRMOT(MOMOM2,1,IMLU,0)
 142 :             IF (IMLU.EQ.0) GOTO 999
 142 :             CALL LIRREE(VAL,1,IRETOU)
 143 :             IF (IERR.NE.0) RETURN
 144 :             MOTFOR(**)=MOMOM2(IMLU)
 145 :             VALFOR(**)=VAL
 146 :             GOTO 22
 147 :           ELSE IF (IFOMOD.EQ.1) THEN
 147 :  23         CALL LIRMOT(MOMOM3,2,IMLU,0)
 148 :             IF (IMLU.EQ.0) GOTO 999
 148 :             CALL LIRREE(VAL,1,IRETOU)
 149 :             IF (IERR.NE.0) RETURN
 150 :             MOTFOR(**)=MOMOM3(IMLU)
 151 :             VALFOR(**)=VAL
 152 :             GOTO 23
 153 :           ELSE IF (IFOMOD.EQ.2) THEN
 153 :  24         CALL LIRMOT(MOMOM4,3,IMLU,0)
 154 :             IF (IMLU.EQ.0) GOTO 999
 154 :             CALL LIRREE(VAL,1,IRETOU)
 155 :             IF (IERR.NE.0) RETURN
 156 :             MOTFOR(**)=MOMOM4(IMLU)
 157 :             VALFOR(**)=VAL
 158 :             GOTO 24
 159 : C*OF Pas de MOMENT en 1D (IFOMOD=3,4,5)
 160 :           ENDIF
 161 :         ENDIF
 162 :  999    IF (MOTFOR(/2).EQ.0) THEN
 162 :           CALL ERREUR(533)
 163 :           RETURN
 164 :         ENDIF
 165 :       ENDIF
 166 : 
 166 :       CALL LIROBJ('POINT   ',IPT1,0,IRETOU)
 167 : C  ON A BIEN LU UN POINT (application du chargement)
 168 :       IF (IRETOU.NE.0) THEN
 168 :         CALL CRELEM(IPT1)
 169 : C  A T ON UN OBJET DE TYPE ELEMENT SI OUI ON LE TRAN EN POINT
 170 :       ELSE
 170 :         CALL LIROBJ('MAILLAGE',IPT1,1,IRETOU)
 171 :         IF (IERR.NE.0) RETURN
 171 :         CALL CHANGE(IPT1,1)
 172 :       ENDIF
 173 : 
 174 : CCCCCCCCCCCCC ON N A PAS D ERREUR ON RECUPERE LES COORDONNEES DU
 175 : C             VECTEUR ET LE NUMERO DU POINT
 176 :       IF (IRET1.EQ.1) THEN
 177 :         SEGACT,MCOORD
 178 :         iNoe=(NOEUD-1)*(IDIM+1)
 179 :         DO i=1,IDIM
 180 :           VEC(i)=XCOOR(iNoe+i)
 181 :         ENDDO
 182 : CCCCCCCCCCCCCC ON RECUPERE LE NUMERO DU POINT
 183 : CCCCCCCCCCCCCC ON COMPTE LE NOMBRE DE COMPOSANTE ET L ADRESSE
 184 : CCCCCCCCCCCCCC DANS LE TABLEAU DU TYPE DES DDL SUIVANT L OPTION
 185 :         JDIM=IDIM
 186 :         IF (LTYP.EQ.2) THEN
 187 :           IF (IFOMOD.LE.1) THEN
 188 :             JDEC=9
 189 :             JDIM=1
 190 :           ELSE IF (IFOMOD.EQ.2) THEN
 191 :             JDEC=6
 192 :           ELSE
 192 :             CALL ERREUR(533)
 193 :             RETURN
 194 :           ENDIF
 195 :         ELSE IF (LTYP.EQ.1) THEN
 196 :           JDEC=0
 197 :           IF (IFOMOD.EQ.1) THEN
 198 :             JDEC=3
 199 :             JDIM=3
 200 :           ELSE IF (IFOMOD.EQ.0) THEN
 201 :             JDEC=3
 202 :           ELSE IF (IFOMOD.EQ.4.OR.IFOMOD.EQ.5) THEN
 203 :             JDEC=3
 204 :           ENDIF
 205 :         ELSE
 206 :           MOTERR(1:4)=LOCERR
 206 :           CALL ERREUR(5)
 207 :           RETURN
 208 :         ENDIF
 209 :         NC=JDIM
 210 :       ELSE
 211 :         NC=MOTFOR(/2)
 212 :       ENDIF
 213 : 
 214 : CCCCCCCCCCC CREATION DU SEGMENT GEOMETRIE
 215 :       NSOUPO=1
 216 :       NAT=1
 217 :       SEGINI,MCHPOI
 218 :       MTYPOI='FORCES'
 219 :       MOCHDE='                CHPOINT CREE PAR FORCE '
 220 : C*    IFOPOI=IFOMOD
 221 :       IFOPOI=IFOUR
 222 :       JATTRI(1)=2
 223 :       SEGINI,MSOUPO
 224 :       IPCHP(1)=MSOUPO
 225 :       IGEOC=IPT1
 226 :       IF (IRET1.EQ.1) THEN
 227 :         DO i=1,NC
 228 :           NOHARM(i)=NIFOUR
 229 :           NOCOMP(i)=MOTYPO(JDEC+i)
 230 :         ENDDO
 231 :       ELSE
 232 :         DO i=1,NC
 233 :           NOHARM(i)=NIFOUR
 234 :           NOCOMP(i)=MOTFOR(i)
 235 :         ENDDO
 236 :       ENDIF
 237 :       MELEME=IPT1
 238 :       SEGACT,MELEME
 239 :       N=NUM(/2)
 240 :       SEGINI,MPOVAL
 241 :       IPOVAL=MPOVAL
 242 :       IF (IRET1.EQ.1) THEN
 243 :         DO i=1,NC
 244 :           zz=VEC(i)/N
 245 :           DO j=1,N
 246 :             VPOCHA(j,i)=zz
 247 :           ENDDO
 248 :         ENDDO
 249 :       ELSE
 250 :         DO i=1,NC
 251 :           zz=VALFOR(i)/N
 252 :           DO j=1,N
 253 :             VPOCHA(j,i)=zz
 254 :           ENDDO
 255 :         ENDDO
 256 :       ENDIF
 257 :       SEGDES,MELEME,MPOVAL,MSOUPO,MCHPOI
 258 : 
 259 :       IP2=MCHPOI
 259 :       CALL ECROBJ('CHPOINT',IP2)
 260 :       IF (IRET1.EQ.0) SEGSUP,MSWMOT,MSWVAL
 261 : 
 262 :       RETURN
 263 : 
 264 :  200  continue
 264 :       call force2(ipt)
 265 :       END
 266 : 
 267 :  
 268 :  
 269 :  
 270 :  
 271 :  

© Cast3M 2003 - All rights reserved.
Disclaimer