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