fscoq8
C FSCOQ8 SOURCE FANDEUR 12/07/18 21:15:39 7434 & IPTNOE,IVAFOR) *______________________________________________________________________ * * CALCULE LES FORCES SURFACIQUES AUX NOEUDS DES COQUES COQ8, COQ6 * * * ENTREES : * --------- * * IPT TABLEAU DE POINTEURS SUR MPTVAL CONTENANT LES FORCES * APPLIQUEES * IPMAIL POINTEUR SUR LE MAILLAGE * IPTINT POINTEUR SUR LE CHAMELEM DE L'INTEGRATION * IPVECT POINTEUR SUR LE VECTEUR REPRESENTANT LA FORCE * VEC VECTEUR REPRESENTANT LA FORCE * IVACAR POINTEUR SUR UN SEGMENT MPTVAL CONCERNANT LES CARAC- * TERISTIQUES (EPAISSEUR AUX NOEUDS) * IPTNOE POINTEUR SUR L'ALIAS DU CHAMELEM D'INTEGRATION CONTENANT * LES FONCTIONS DE FORME AUX NOEUDS * IVAFOR POINTEUR SUR UN MPTVAL ET MELVALS ASSOCIEES AUX FORCES * ET MOMENTS AUX NOEUDS * *_______________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO * -INC SMCHAML -INC SMELEME -INC SMINTE -INC SMCOORD * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * DIMENSION IPT(*),VEC(*) * DIMENSION TH(8),XJ(3,3),TXR(3,3,8),XE(3,8) * MELVA1 = IPT(1) MELVA2 = IPT(2) MELVA3 = IPT(3) IF (IPVECT.EQ.0) THEN IBM1 = 0 IF (MELVA1.NE.0) THEN SEGACT,MELVA1 IGM1 = MELVA1.VELCHE(/1) IBM1 = MELVA1.VELCHE(/2) ENDIF IBM2 = 0 IF (MELVA2.NE.0) THEN SEGACT,MELVA2 IGM2 = MELVA2.VELCHE(/1) IBM2 = MELVA2.VELCHE(/2) ENDIF IBM3 = 0 IF (MELVA3.NE.0) THEN SEGACT,MELVA3 IGM3 = MELVA3.VELCHE(/1) IBM3 = MELVA3.VELCHE(/2) ENDIF F1 = 0.D0 F2 = 0.D0 F3 = 0.D0 ELSE F1 = VEC(1) F2 = VEC(2) F3 = VEC(3) ENDIF * MINTE=IPTINT C* SEGACT,MINTE <- ACTIF EN E/S NBPGAU=POIGAU(/1) NBGAU2=NBPGAU/2 * MINTE1=IPTNOE SEGACT,MINTE1 * MELEME=IPMAIL C* SEGACT,MELEME <- ACTIF EN E/S NBNN = NUM(/1) NBELEM= NUM(/2) C* C* PREPARATION DE DONNEES POUR LE CALCUL DE L'EPAISSEUR D'UN ELEMENT C* MPTVAL = IVACAR MELVEP = IVAL(1) MELVAL = MELVEP C* SEGACT,MELVAL <- ACTIF EN E/S IGEP = VELCHE(/1) IBEP = VELCHE(/2) C* IF (IGEP.LT.1) THEN C* WRITE(IOMP,*) 'ERREUR : FSCOQ8 - IGEP' C* CALL ERREUR(5) C* RETURN C* ENDIF * MPTVAL = IVAFOR * * BOUCLE SUR LES ELEMENTS * DO 1 IB = 1, NBELEM * * CALCUL DE L EPAISSEUR MOYENNE * CALCUL DE TH(IPTELE) * MELVAL = MELVEP IBMN = MIN(IB,IBEP) EPAI = VELCHE(1,IBMN) IF (IGEP.GT.1) THEN DO i = 2, IGEP EPAI = EPAI + VELCHE(i,IBMN) ENDDO EPAI = EPAI / IGEP ENDIF * ON STOCKE L'EPAISSEUR MOYENNE A CHAQUE NOEUD (UTILE POUR LES CALCULS) DO i = 1, NBNN TH(i) = EPAI ENDDO * * DETERMINATION DES REPERES LOCAUX AUX NOEUDS * * IF (IPVECT.EQ.0) THEN IF (MELVA1.NE.0) IBMN1 = MIN(IB,IBM1) IF (MELVA2.NE.0) IBMN2 = MIN(IB,IBM2) IF (MELVA3.NE.0) IBMN3 = MIN(IB,IBM3) ENDIF * * BOUCLE SUR LES POINTS DE GAUSS * DO 10 IGAU = 1, NBGAU2 * IF (IPVECT.EQ.0) THEN IF (MELVA1.NE.0) THEN IGMN = MIN(IGAU,IGM1) F1 = MELVA1.VELCHE(IGMN,IBMN1) ENDIF IF (MELVA2.NE.0) THEN IGMN = MIN(IGAU,IGM2) F2 = MELVA2.VELCHE(IGMN,IBMN2) ENDIF IF (MELVA3.NE.0) THEN IGMN = MIN(IGAU,IGM3) F3 = MELVA3.VELCHE(IGMN,IBMN3) ENDIF ENDIF * * VECTEUR NORMAL A LA SURFACE DE L ELEMENT AU PT DE GAUSS IGAU * * VG_1 = XJ(1,2)*XJ(2,3) - XJ(2,2)*XJ(1,3) VG_2 = XJ(1,3)*XJ(2,1) - XJ(2,3)*XJ(1,1) VG_3 = XJ(1,1)*XJ(2,2) - XJ(2,1)*XJ(1,2) VN = SQRT( VG_1*VG_1 + VG_2*VG_2 + VG_3*VG_3 ) VG_1 = VG_1 / VN VG_2 = VG_2 / VN VG_3 = VG_3 / VN * SURFP = VN * POIGAU(IGAU) POI2P = 0.5D0 * POIGAU(IGAU) * * BOUCLE SUR NOEUDS DE L'ELEMENT * * DO 20 J = 1, NBNN * VQ_1 = TXR(1,1,J) VQ_2 = TXR(2,1,J) VQ_3 = TXR(3,1,J) VE_1 = TXR(1,2,J) VE_2 = TXR(2,2,J) VE_3 = TXR(3,2,J) * * Matrice de changement de repere : XJij * XJ11 = 0.D0 XJ12 = VQ_1*VE_2 - VQ_2*VE_1 XJ13 = VQ_1*VE_3 - VE_1*VQ_3 XJ21 = -XJ12 XJ22 = 0.D0 XJ23 = VQ_2*VE_3 - VE_2*VQ_3 XJ31 = -XJ13 XJ32 = -XJ23 XJ33 = 0.D0 * * Chgt de repere du vecteur force (F1,F2,F3) : global -> local * F1L = VQ_1*F1 + VQ_2*F2 + VQ_3*F3 F2L = VE_1*F1 + VE_2*F2 + VE_3*F3 F3L = VG_1*F1 + VG_2*F2 + VG_3*F3 * * FORCES AUX NOEUDS * WGTM = SURFP * SHPTOT(1,J,IGAU) * MELVAL = IVAL(1) VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VG_1*F3L + VQ_1*F1L + VE_1*F2L) MELVAL = IVAL(2) VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VG_2*F3L + VQ_2*F1L + VE_2*F2L) MELVAL = IVAL(3) VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VG_3*F3L + VQ_3*F1L + VE_3*F2L) * * (V2JT) * MOMENTS AUX NDS = WT*P*TH(J)* (V1J,-V2J)(V1JT) *(VNGAU) * VALEURS DES MOMENTS AUX NOEUDS * Chgt de repere : local -> global * WGTM = POI2P * TH(J) * SHPTOT(1,J,IGAU) * MELVAL = IVAL(4) VGG = XJ11*VG_1 + XJ21*VG_2 + XJ31*VG_3 VQG = XJ11*VQ_1 + XJ21*VQ_2 + XJ31*VQ_3 VEG = XJ11*VE_1 + XJ21*VE_2 + XJ31*VE_3 VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VGG*F3L + VQG*F1L + VEG*F2L) MELVAL=IVAL(5) VGG = XJ12*VG_1 + XJ22*VG_2 + XJ32*VG_3 VQG = XJ12*VQ_1 + XJ22*VQ_2 + XJ32*VQ_3 VEG = XJ12*VE_1 + XJ22*VE_2 + XJ32*VE_3 VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VGG*F3L+ VQG*F1L + VEG*F2L) MELVAL=IVAL(6) VGG = XJ13*VG_1 + XJ23*VG_2 + XJ33*VG_3 VQG = XJ13*VQ_1 + XJ23*VQ_2 + XJ33*VQ_3 VEG = XJ13*VE_1 + XJ23*VE_2 + XJ33*VE_3 VELCHE(J,IB) = VELCHE(J,IB) & + WGTM * (VGG*F3L + VQG*F1L + VEG*F2L) 20 CONTINUE 10 CONTINUE 1 CONTINUE C* SEGDES,MELEME <- ACTIF EN E/S C* SEGDES,MINTE <- ACTIF EN E/S SEGDES,MINTE1 IF (IPVECT.EQ.0) THEN IF (MELVA1.NE.0) SEGDES,MELVA1 IF (MELVA2.NE.0) SEGDES,MELVA2 IF (MELVA3.NE.0) SEGDES,MELVA3 ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales