fsurpo
C FSURPO SOURCE CB215821 24/04/12 21:16:08 11897 *_______________________________________________________________________ * * CALCULE LES FORCES NODALES EQUIVALENTES SUR DES POUTRES * * ENTREES : * --------- * IPMODL MODELE SUR LEQUEL S APPLIQUE LA DENSITE DE FORCES * IPCHPS CHPOINT CONTENANT LES VALEURS DE LA DENSITE DE FORCE AUX * NOEUDS DU MODELE, SINON =0 (IPVECT NON NUL) * IPVECT VECTEUR (POINT) DEFINISSANT LA DENSITE DE FORCE CONSTANTE * (=0 SI IPCHPS NON NUL) * IVPROJ VECTEUR (POINT) POUR LA PROJECTION (?) * * SORTIES : * --------- * IPCHPF CHPOINT DES FORCES NODALES EQUIVALENTES * = 0 EN CAS D'ERREUR (ET IERR NON NUL AUSSI DANS CE CAS) * * I. Politopoulos Mars 1998 *_______________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMMODEL -INC SMCHAML -INC SMLMOTS -INC SMCOORD -INC SMELEME -INC TMTRAV REAL*8 xe(3,2),vf(3) IPCHPF = 0 * * --> VERIFICATIONS SUR LA COMPATIBILITE MODE DE CALCUL/DIMENSION * iret = 0 IF (IDIM.EQ.3) THEN IF (IFOUR.NE.2) iret = 1 ELSE IF (IDIM.EQ.2) THEN IF (IFOUR.EQ.0 .OR. IFOUR.EQ.1) iret = 1 ELSE iret = 1 ENDIF IF (iret.NE.0) THEN RETURN ENDIF * * --> VERIFICATIONS SUR LE VECTEUR DE PROJECTION SI FOURNI * IF (IVPROJ.NE.0) THEN IREFP = (IVPROJ-1)*(IDIM+1) VP1 = XCOOR(IREFP+1) VP2 = XCOOR(IREFP+2) IF (IDIM.EQ.2) THEN VP3 = 0.D0 ELSE VP3 = XCOOR(IREFP+3) ENDIF vlong = VP1*VP1 + VP2*VP2 + VP3*VP3 IF (vlong.LE.0.D0) THEN RETURN ENDIF vlong = SQRT(vlong) VP1 = VP1 / vlong VP2 = VP2 / vlong VP3 = VP3 / vlong ENDIF * * SI on a donne un vecteur comme densite de forces, il faut le trans- * former en chpoint defini sur le maillage soustendant le modele : * IF (IPVECT.NE.0) THEN IREFP = (IPVECT-1)*(IDIM+1) vf(1) = XCOOR(IREFP+1) vf(2) = XCOOR(IREFP+2) IF (IDIM.EQ.2) THEN vf(3) = 0.D0 ELSE vf(3) = XCOOR(IREFP+3) ENDIF vlong = vf(1)*vf(1) + vf(2)*vf(2) + vf(3)*vf(3) IF (vlong.LE.0.D0) THEN RETURN ENDIF * SEGINI,indic * NNNOE = 0 ENDIF * On cree un champ de materiau bidon (masse volumique) MMODEL=IPMODL SEGACT,MMODEL * N1 = KMODEL(/1) L1 = 16 N3 = 6 SEGINI,mchelm titche = 'CARACTERISTIQUES' ifoche = IFOUR IF (IDIM.EQ.3) THEN N2 = 5 * ELSE IF (IDIM.EQ.2) THEN ELSE N2 = 3 ENDIF n1ptel = 1 n1el = 1 n2ptel = 0 n2el = 0 DO 10 I = 1, N1 IMODEL=KMODEL(I) SEGACT,IMODEL * mele = nefmod meleme = imamod * imache(i) = imamod conche(i) = conmod * infche(i,1) = 0 infche(i,2) = 0 infche(i,3) = 0 infche(i,4) = infmod(6) infche(i,5) = 0 infche(i,6) = 4 * SEGINI,mchaml ichaml(i) = mchaml * nomche(1) = 'RHO ' nomche(2) = 'SECT ' nomche(3) = 'INRZ ' IF (IDIM.EQ.3) THEN nomche(4) = 'INRY ' nomche(5) = 'TORS ' ENDIF * DO 20 j = 1, N2 * si projection IF (j.EQ.1 .AND. IVPROJ.NE.0) THEN SEGACT,meleme nbelem = num(/2) n1el = nbelem SEGINI,melval DO 50 iel = 1, nbelem vl1 = xe(1,2) - xe(1,1) vl2 = xe(2,2) - xe(2,1) vl3 = xe(3,2) - xe(3,1) vlong = vl1*vl1 + vl2*vl2 + vl3*vl3 xsin = vl1*vp1 + vl2*vp2 + vl3*vp3 xcos = SQRT( 1.d0 - (xsin*xsin / vlong) ) velche(1,iel) = xcos 50 CONTINUE SEGDES,meleme ELSE n1el = 1 SEGINI,melval velche(1,1) = 1.d0 ENDIF ielval(j) = melval typche(j) = 'REAL*8' 20 CONTINUE * Si on a donne un vecteur comme densite de forces, il faut le * transformer en chpoint IF (IPVECT.NE.0) then SEGACT,meleme nbnoe = num(/1) nbele = num(/2) DO 3 iel = 1, nbele DO 3 n = 1, nbnoe inoe = num(n,iel) NNNOE = NNNOE + 1 ENDIF 3 CONTINUE SEGDES,meleme ENDIF SEGDES,IMODEL * 10 CONTINUE SEGDES,MMODEL * on ne se casse pas trop la tete. On calcule la force en passant * par la masse IF (IERR.NE.0 .OR. iret.NE.1) RETURN IF (IPVECT.NE.0) THEN NNIN = IDIM SEGINI,mtrav IF (IDIM.EQ.3) THEN ENDIF ii = 0 DO inoe = 1, nbpts ii = ii + 1 igeo(ii)= inoe DO 4 k = 1, IDIM bb(k,ii) = vf(k) ibin(k,ii) = 1 4 CONTINUE IF (ii.EQ.NNNOE) GOTO 401 ENDIF ENDDO 401 CONTINUE SEGSUP,mtrav,indic ELSE * noms des variables possibles * et de leurs duales jgn = 4 IF (IDIM.EQ.3) THEN jgm = 6 SEGINI,mlmot1 SEGINI,mlmot2 c* ELSE IF (IDIM.EQ.2) THEN ELSE jgm = 3 SEGINI,mlmot1 SEGINI,mlmot2 ENDIF iplm1 = mlmot1 iplm2 = mlmot2 SEGSUP,mlmot1,mlmot2 ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales