fsurco
C FSURCO SOURCE OF166741 24/10/07 21:15:20 12016 *_____________________________________________________________________ * * CALCULE LES FORCES DE PRESSIONS APPLIQUEES SUR DES COQUES * * ENTREES : * --------- * * IPMODL OBJET AFFECTE SUR LEQUEL S APPLIQUE LA PRESSION * IPCHE1 CHPOINT CONTENANT LES VALEURS DES FORCES AUX NOEUDS * IPVECT VECTEUR INDIQUANT LA DIRECTION DANS LAQUELLE * S APPLIQUE LA FORCE SURFACIQUE * * SORTIES : * --------- * * IPTFP CHPOINT DES FORCES NODALES EQUIVALENTES * *_____________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCOORD -INC SMELEME -INC SMMODEL -INC SMCHAML -INC SMCHPOI -INC SMINTE SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT PARAMETER (NINF=3) INTEGER INFOS(NINF) DIMENSION V(3),ipt(3) CHARACTER*(LOCOMP) mfors(3) CHARACTER*(NCONCH) CONM C= LEFCOQ Liste des numeros d'elements finis COQUEs C= NEFCOQ Longueur de cette liste PARAMETER ( NEFCOQ = 8 ) DIMENSION LEFCOQ(NEFCOQ) C ============ C Elements COQUEs COQ2 COQ3 COQ6 COQ4 COQ8 DKT POI1 DST DATA LEFCOQ / 44, 27, 56, 49, 41, 28, 45, 93 / LOGICAL ltelq, lsupfo * * 0) QUELQUES INITIALISATIONS * IPTFP = 0 NHRM = NIFOUR C= Composantes du CHPOINT IPCHPS a retenir (si besoin) IF (IFOMOD.EQ.2) THEN nfors = 3 mfors(1) = 'FX ' mfors(2) = 'FY ' mfors(3) = 'FZ ' ELSE IF (IFOMOD.EQ.-1) THEN nfors = 2 mfors(1) = 'FX ' mfors(2) = 'FY ' mfors(3) = ' ' ELSE IF (IFOMOD.EQ.0) THEN nfors = 2 mfors(1) = 'FR ' mfors(2) = 'FZ ' mfors(3) = ' ' ELSE IF (IFOMOD.EQ.1) THEN nfors = 3 mfors(1) = 'FR ' mfors(2) = 'FZ ' mfors(3) = 'FT ' ELSE RETURN ENDIF C= Cas des modes de calculs en DEFORMATIONS GENERALISEES IF (IFOUR.EQ.-3) THEN NDPGE = 3 ELSE NDPGE = 0 ENDIF IPCHMS = 0 IPCHMZ = 0 NBTYPE = 1 SEGINI,NOTYPE notype.TYPE(1) = 'REAL*8' MOTYR8 = notype * * 1) ON RECUPERE LES COORDONNEES DU VECTEUR CONSTANT (SI DONNE) * V(1) = 0.D0 V(2) = 0.D0 V(3) = 0.D0 IF (IPVECT.NE.0) THEN IREF=(IPVECT-1)*(IDIM+1) V(1)=XCOOR(IREF+1) V(2)=XCOOR(IREF+2) VN = V(1)**2 + V(2)**2 IF (IDIM.GE.3) THEN V(3)=XCOOR(IREF+3) VN=VN+V(3)**2 ENDIF c* VN=SQRT(VN) IF (VN.LE.0.) THEN RETURN ENDIF ENDIF * * 2) VERIFICATIONS DU CHAMP DE CARACTERISTIQUES SI FOURNI * IF (IPCARA.NE.0) THEN IF (ISUPCA.GT.1) RETURN ENDIF * * 3) ANALYSE DU CHPOINT DE FORCES SURFACIQUES SI DONNE * IFLAG SERT A INDIQUER SI L'ON DOIT OU NON DETRUIRE LE MODELE IPMODI * ( 1 = DESTRUCTION DU MMODEL IPMODI CREE ) * IF (IPCHPS.NE.0) THEN * IFLAG = 1 * * ON CREE L OBJET MAILLAGE CONTENANT TOUS LES POINTS DU CHPOINT * CORRESPONDANT AUX SEULES COMPOSANTES RECHERCHEES (mfors) * IPGEOM = 0 * MCHPOI=IPCHPS NSOUPO=IPCHP(/1) ltelq=.FALSE. DO I = 1, NSOUPO MSOUPO=IPCHP(I) NC = NOCOMP(/2) DO j = 1, NC IF (imo.NE.0) THEN IF (IPGEOM.EQ.0) THEN IPGEOM = IGEOC ELSE IPP2 = IGEOC IF (IERR.NE.0) RETURN IPGEOM = IPPT ENDIF GOTO 10 ENDIF ENDDO 10 CONTINUE ENDDO IF (IPGEOM.EQ.0) THEN RETURN ENDIF * * ON CREE UN MODELE S'ACCROCHANT AU CHPOINT * MMODEL = IPMODL NSOUS = MMODEL.KMODEL(/1) * N1 = NSOUS SEGINI,MMODE1=MMODEL IPMODI = MMODE1 * * BOUCLE SUR LES SOUS ZONES GEOMETRIQUES ELEMENTAIRES * N1 = 0 lzero = 0 * DO 11 ISOUS = 1, NSOUS * IMODEL=KMODEL(ISOUS) ITGEOM=IMAMOD * * * LE CHPOINT ET LA SOUS-ZONE N'ONT PAS D'ELEMENT EN COMMUN * IF (irr.GT.0) GOTO 11 * * DEFINITION DU SOUS-MODELE ASSOCIE A L'INTERSECTION IF (IERR.NE.0) GOTO 9990 * N1 = N1 + 1 * * CREATION DE L'OBJET IMODEL DE CETTE SOUS ZONE * SEGINI,IMODE1=IMODEL IMODE1.IMAMOD=IPOGEO MMODE1.KMODEL(N1) = IMODE1 * 11 CONTINUE * * LE MODELE ET LE CHPOINT SONT INCOMPATIBLES * IF (N1.EQ.0) THEN MOTERR(1:8)='MAILLAGE' MOTERR(9:16)='CHPOINT' IFLAG = 0 SEGSUP,MMODE1 GOTO 9990 ENDIF * IF (N1.NE.NSOUS) THEN SEGADJ,MMODE1 ENDIF * * ON TRANSFORME LE CHPOINT DE VECTEUR EN MCHAML AUX NOEUDS * IF (IERR.NE.0) GOTO 9990 MCHEL1=IPCHMS * ELSE IFLAG = 0 IPMODI = IPMODL ENDIF * * ACTIVATION DU MODELE * MMODEL = IPMODI NSOUS = KMODEL(/1) * * INITIALISATION DU MCHAML ELEMENTAIRE DES FORCES NODALES * N1 = NSOUS L1 = 6 N3 = 6 SEGINI,MCHELM IPCHMZ = MCHELM TITCHE = 'FORCES' IFOCHE = IFOUR DO 100 ISOUS = 1, NSOUS * * ON RECUPERE L INFORMATION GENERALE * IMODEL=KMODEL(ISOUS) * MOCARA = 0 IVACAR = 0 MOFORC = 0 IVAFOR = 0 * * TRAITEMENT DU MODEL * IPMAIL=IMAMOD CONM =CONMOD MELE =NEFMOD imo = 0 * * ERREUR L ELEMENT N EST PAS ENCORE IMPLEMENTE IF (imo.EQ.0) THEN MOTERR(1:4) = NOMTP(MELE) MOTERR(5:12)='FSURCO ' ipchmz=0 ipchms=0 GOTO 9900 ENDIF IF (MELE.EQ.41.OR.MELE.EQ.56) THEN IF (IPCARA.EQ.0) THEN C* Revoir l'erreur MOTERR(1:4) = NOMTP(MELE) MOTERR(5:12)='FSURCO ' ipchmz=0 ipchms=0 GOTO 9900 ENDIF ENDIF * * INFORMATION SUR L ELEMENT FINI * MFR =INFELE(13) IPTINT=INFMOD(5) c* IPTNOE=INFMOD(8) IPTNOE=INFELE(12) MINTE =IPTINT IPPORE=0 IF (MFR.EQ.33) IPPORE=NBNN * * CREATION DU TABLEAU INFOS * IF (iret.EQ.0) GOTO 9900 * IPT(1) = 0 IPT(2) = 0 IPT(3) = 0 IF (IPCHMS.NE.0) THEN MCHAM1 = MCHEL1.ICHAML(ISOUS) DO i = 1, MCHAM1.NOMCHE(/2) if (imo.ne.0) IPT(imo) = MCHAM1.IELVAL(i) ENDDO ENDIF * IMACHE(ISOUS)=IPMAIL CONCHE(ISOUS)=CONM INFCHE(ISOUS,1)=0 INFCHE(ISOUS,2)=0 INFCHE(ISOUS,3)=NHRM INFCHE(ISOUS,4)=IPTINT INFCHE(ISOUS,5)=0 INFCHE(ISOUS,6)=3 * MELEME=IPMAIL NBNN =NUM(/1) NBELEM=NUM(/2) * * RECHERCHE DES NOMS DE COMPOSANTES * IF (lnomid(2).ne.0) then lsupfo = .false. MOFORC = lnomid(2) else lsupfo = .true. endif nomid=MOFORC nfor = lesobl(/2) nfac = 0 NCOMP = NFOR - NDPGE N2 = NCOMP SEGINI,MCHAML ICHAML(ISOUS) = MCHAML NS=1 NCOSOU=NCOMP SEGINI,MPTVAL IVAFOR=MPTVAL N1EL = NBELEM IF (MELE.EQ.27 .OR. MELE.EQ.28 .OR. MELE.EQ.45 .OR. & MELE.EQ.93) THEN N1PTEL = 3 ELSE IF (MELE.EQ.44) THEN N1PTEL = 2 ELSE IF (MELE.EQ.49 .OR. MELE.EQ.41 .OR. MELE.EQ.56) THEN N1PTEL=NBNN ENDIF N2PTEL=0 N2EL =0 DO 4 ICOMP = 1, NCOMP NOMCHE(ICOMP) = LESOBL(ICOMP) TYPCHE(ICOMP)='REAL*8' SEGINI,MELVAL IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL 4 CONTINUE *_______________________________________________________________________ * * CALCUL DES FORCES NODALES EQUIVALENTES * DEBRANCHEMENT SUIVANT LE TYPE DES ELEMENTS *_______________________________________________________________________ * * ELEMENTS COQ3 , DKT OU DKTC * --------------------------- IF (MELE.EQ.27 .OR. MELE.EQ.28 .OR. MELE.EQ.45 .OR. & MELE.EQ.93) THEN * * * ELEMENT COQ2 * ------------ ELSE IF (MELE.EQ.44) THEN * * TRAITEMENT DU CHAMP DE CARACTERISTIQUES * IF (IFOUR.EQ.-2 .AND. IPCARA.NE.0) THEN * NBROBL=0 NBRFAC=1 SEGINI,NOMID MOCARA=NOMID LESFAC(1)='DIM3' NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF & INFOS,3,IVACAR) IF (IERR.NE.0) GOTO 9990 IF (ISUPCA.EQ.1) THEN ENDIF * ENDIF * * ELEMENTS COQ4 * ------------- * ELSE IF (MELE.EQ.49) THEN * * * ELEMENTS COQ6 OU COQ8 * --------------------- * ELSE IF (MELE.EQ.41.OR.MELE.EQ.56) THEN *____________________________________________________________________ * * TRAITEMENT DES CHAMPS DE CARACTERISTIQUES POUR LES COQ8 ET COQ6 *____________________________________________________________________ * NBROBL=1 NBRFAC=0 SEGINI,NOMID MOCARA=NOMID LESOBL(1)='EPAI' NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF IF (IERR.NE.0) GOTO 9990 IF (ISUPCA.EQ.1) THEN ENDIF ENDIF * IF (MOCARA.NE.0) THEN NOMID = MOCARA SEGSUP,NOMID IF (ISUPCA.EQ.1) THEN ELSE ENDIF ENDIF * IF (MOFORC.NE.0) THEN nomid=MOFORC IF (lsupfo) SEGSUP,nomid ENDIF * 100 CONTINUE * * ON TRANSFORME LE MCHAML EN CHPOINT * IF (iret.EQ.0) GOTO 9990 * * ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR * 9900 CONTINUE 9990 CONTINUE * notype = MOTYR8 SEGSUP,notype C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales