1 : C COQ4RJ SOURCE CHAT 05/01/12 22:21:44 5004 2 : SUBROUTINE COQ4RJ (IGAU,BGENE,DJAC,EXCENT,NOPLAN,DHOOK,REL) 3 : ************************************************************************ 4 : * 5 : * C O Q 4 R J 6 : * ----------- 7 : * 8 : * FONCTION: 9 : * --------- 10 : * 11 : * Calcul du produit Bt.D.B en 1 point de Gauss, pour le COQ4 non-isotrope. 12 : * 13 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 14 : * ----------- 15 : * 16 : * IGAU (E) Numéro du point de Gauss. 17 : * BGENE (E) Matrice "B". 18 : * DJAC (E) Jacobien. 19 : * EXCENT (E) Excentrement. 20 : * NOPLAN (E) = 1 si élément non plan, 21 : * = 0 sinon. 22 : * DHOOK (E) Matrice de Hooke intégrée dans l'épaisseur. 23 : * Séparation par blocs: 24 : * membrane, puis flexion, puis cisaillement transverse. 25 : * (S) Contenu modifie. 26 : * REL (E) Matrice de Raideur. 27 : * (S) Completée par la contribution du point de Gauss 28 : * courant. 29 : * 30 : IMPLICIT INTEGER(I-N) 31 : PARAMETER (NSTRS=8, LRE=24) 32 : REAL*8 DJAC,EXCENT 33 : REAL*8 DHOOK(NSTRS,NSTRS),REL(LRE,LRE),BGENE(NSTRS,LRE) 34 : * 35 : * VARIABLES: 36 : * ---------- 37 : * 38 : REAL*8 DB(NSTRS,LRE) 39 : * 40 : * MODE DE FONCTIONNEMENT: 41 : * ----------------------- 42 : * 43 : * Utilisation de la valeur de "Bm" au point central pour toute ou 44 : * partie de la raideur de membrane: 45 : * - tout si élément non plan, 46 : * - rien sinon. 47 : * 48 : * Utilisation de la valeur de "Bf" au point central pour la raideur 49 : * de couplage membrane/flexion due à l'excentrement dans les mêmes 50 : * conditions que pour la membrane. 51 : * 52 : * AUTEUR, DATE DE CREATION: 53 : * ------------------------- 54 : * 55 : * Michel BULIK 26 Novembre 1996 d'après COQ4RI écrit par 56 : * Pascal MANIGOT 27 Mars 1991 57 : * 58 : ************************************************************************ 59 : * 60 : * 61 : * On multiplie les termes de la matrice de Hooke par le Jacobien, 62 : * elle est déja intégrée dans l'épaisseur ... 63 : * 64 : DO 100 J=1,NSTRS 65 : DO 100 I=1,NSTRS 66 : DHOOK(I,J) = DJAC * DHOOK(I,J) 67 : 100 CONTINUE 68 : * END DO 69 : * END DO 70 : * 71 : * Mise à 0 de DB, en cas de coque non excentrée INCMAX=2 permet 72 : * d'éviter pas mal de multiplications par 0 ... 73 : * 73 : CALL ZERO (DB,NSTRS,LRE) 74 : IF (ABS(EXCENT) .GT. 1.D-30) THEN 75 : INCMAX = 5 76 : ELSE 77 : INCMAX = 2 78 : END IF 79 : * 80 : * Calcul de DB ... 81 : * 82 : DO 110 NOEUD=1,4 83 : N6 = 6 * (NOEUD - 1) 84 : * 85 : * eD.Bm | eD.h.Bf 86 : DO 120 J=1,INCMAX 87 : DO 120 I=1,3 88 : DO 120 K=1,3 89 : DB(I,J+N6) = DB(I,J+N6) + DHOOK(I,K)*BGENE(K,J+N6) 90 : 120 CONTINUE 91 : * END DO 92 : * END DO 93 : * END DO 94 : * 95 : * Pour le calcul de la raideur et lorsque IGAU=5, seules les 96 : * lignes de 1 à 3 de la matrice B peuvent contenir des termes 97 : * non nuls, d'où cette condition : 98 : * 99 : IF (IGAU .LE. 4) THEN 100 : DO 160 J=3,5 101 : * e3/12.D.Bf 102 : DO 140 I=4,6 103 : DO 140 K=4,6 104 : DB(I,J+N6) = DB(I,J+N6) + DHOOK(I,K)*BGENE(K,J+N6) 105 : 140 CONTINUE 106 : * END DO 107 : * END DO 108 : * 5/6.eG.Bc 109 : * 110 : * ATTENTION !!! en orthotrope, cela n'est pas correct !!!!!!!!!!!!!!!!!! 111 : * car les termes (7,8) et (8,7) de D sont en général non nuls ... 112 : * 113 : * DB(7,J+N6) = DB(7,J+N6) + DHOOK(7,7)*BGENE(7,J+N6) 114 : * DB(8,J+N6) = DB(8,J+N6) + DHOOK(8,8)*BGENE(8,J+N6) 115 : * 116 : DO 150 I=7,8 117 : DO 150 K=7,8 118 : DB(I,J+N6) = DB(I,J+N6) + DHOOK(I,K)*BGENE(K,J+N6) 119 : 150 CONTINUE 120 : * END DO 121 : * END DO 122 : 123 : 160 CONTINUE 124 : * END DO 125 : END IF 126 : * 127 : 110 CONTINUE 128 : * END DO 129 : * 130 : * Intégration elle-même ... 131 : * 132 : IF (IGAU .LE. 4) THEN 133 : * Intégration exacte. 134 : * 135 : * Rigidité de Flexion et Cisaillement transverse. 136 : DO 200 M=3,5 137 : DO 200 L=3,5 138 : DO 200 NOEUD = 1,4 139 : L6 = 6 * (NOEUD - 1) 140 : DO 200 NOEUD2 = 1,4 141 : M6 = 6 * (NOEUD2 - 1) 142 : DO 200 I=4,8 143 : REL(L+L6,M+M6) 144 : & = REL(L+L6,M+M6) + BGENE(I,L+L6)*DB(I,M+M6) 145 : 200 CONTINUE 146 : * END DO 147 : * END DO 148 : * END DO 149 : * END DO 150 : * END DO 151 : * 152 : IF (NOPLAN .EQ. 0) THEN 153 : * Intégration exacte raideur de membrane et de couplage 154 : * membrane/flexion, avec cisaillement: 155 : DO 220 M=1,INCMAX 156 : DO 220 L=1,INCMAX 157 : DO 220 NOEUD = 1,4 158 : L6 = 6 * (NOEUD - 1) 159 : DO 220 NOEUD2 = 1,4 160 : M6 = 6 * (NOEUD2 - 1) 161 : REL(L+L6,M+M6) = REL(L+L6,M+M6) 162 : & + BGENE(1,L+L6)*DB(1,M+M6) 163 : & + BGENE(2,L+L6)*DB(2,M+M6) 164 : & + BGENE(3,L+L6)*DB(3,M+M6) 165 : 220 CONTINUE 166 : * END DO 167 : * END DO 168 : * END DO 169 : * END DO 170 : END IF 171 : * 172 : ELSE IF (IGAU .EQ. 5) THEN 173 : * 174 : * Intégration réduite raideur de membrane et de couplage 175 : * membrane/flexion: 176 : IF (NOPLAN .EQ. 1) THEN 177 : 178 : DO 240 M=1,INCMAX 179 : DO 240 L=1,INCMAX 180 : DO 240 NOEUD = 1,4 181 : L6 = 6 * (NOEUD - 1) 182 : DO 240 NOEUD2 = 1,4 183 : M6 = 6 * (NOEUD2 - 1) 184 : DO 240 I= 1,3 185 : REL(L+L6,M+M6) 186 : & = REL(L+L6,M+M6) + BGENE(I,L+L6)*DB(I,M+M6) 187 : 240 CONTINUE 188 : * END DO 189 : * END DO 190 : * END DO 191 : * END DO 192 : * END DO 193 : * 194 : END IF 195 : 196 : END IF 197 : * 198 : END 199 : 200 :
© Cast3M 2003 - All rights reserved.
Disclaimer