tailpo
C TAILPO SOURCE CB215821 24/04/12 21:17:18 11897 C responsable : Mr MILLARD C======================================================================= C C C======================================================================= C ENTREES : C --------- C IPMODL= pointeur sur un MMODEL C C SORTIES : C -------- C IPCHE = CHAMELEM contenant les parametres de tailles aux C point de GAUSS necessaire a modele beton OTTOSEN C IRET = 1 si succes 0 sinon C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) PARAMETER(XUN=1.D0,XZER=0.D0) EXTERNAL SHAPE -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMMODEL -INC SMELEME -INC SMCOORD -INC SMINTE SEGMENT MTRA1 REAL*8 XEL(3,NBNN) REAL*8 VCOMP(NCOMP) REAL*8 SHP(6,NBNN),SHPZER(6,NBNN) REAL*8 SHPQSI(6,NBNN),SHPETA(6,NBNN),SHPDZE(6,NBNN) C* REAL*8 SHPGAU(6,NBNN) ENDSEGMENT SEGMENT MTRA2 REAL*8 BPSS(3,3),YEL(3,NBNN) ENDSEGMENT * SEGMENT INFO * INTEGER INFELE(JG) * ENDSEGMENT C C ACTIVATION DU MODELE C MMODEL= IPMODL NSOUS=KMODEL(/1) C C CREATION DU MCHELM C N1=NSOUS L1=16 N3=6 SEGINI,MCHELM TITCHE='CARACTERISTIQUES' IFOCHE=IFOUR NHRM=NIFOUR C======================================================================= C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES C======================================================================= C DO 500 ISOUS=1,NSOUS C C----------------------------------------------------------------------- C Traitement du modele de la sous-zone ISOUS C----------------------------------------------------------------------- IMODEL=KMODEL(ISOUS) IPMAIL=IMAMOD C Numero de l element fini dans nomtp de CCHAMP.INC MELE=NEFMOD NFOR=FORMOD(/2) C Recherche de formulations particulieres C----------------------------------------------------------------------- C INFORMATION SUR L'ELEMENT FINI C----------------------------------------------------------------------- * CALL ELQUOI(MELE,0,3,IPINF,IMODEL) * IF (IERR.NE.0) THEN * CALL ERREUR(660) * RETURN * ENDIF * INFO=IPINF IF (ITHER.NE.0 .OR. IDIFF.NE.0 .OR. ITHEHY.NE.0) THEN ELSE MELE=INFELE(1) C Numero de la formulation de l element fini (massif ...) MFR =INFELE(13) C Pointeur sur un segment d integration MINTE=INFMOD(5) ENDIF * MINTE=INFELE(11) * SEGSUP INFO C----------------------------------------------------------------------- C- CREATION DU MCHAML DE LA SOUS ZONE--------------------- C----------------------------------------------------------------------- C Remplissage de l'entete dans le MCHELM C pointeur sur le maillage de la sous zone (maillage elementaire) IMACHE(ISOUS)=IPMAIL C Nom du constituant CONCHE(ISOUS)=CONMOD C =0 pour des valeurs independantes du repere C en fait, ces valeurs dependent du repere global mais C nous voulons un champ de caracteristiques (donc idpt du repere) INFCHE(ISOUS,1)=0 INFCHE(ISOUS,2)=0 C numero de l harmonique de Fourier INFCHE(ISOUS,3)=NHRM C pointeur sur un SMINTE INFCHE(ISOUS,4)=MINTE C =0 pour des champs de defomations et contraintes usuels INFCHE(ISOUS,5)=0 C =3 SMINTE pointe sur un segment d integration aux pts de GAUSS C pour la rigidite IF (ITHER.NE.0 .OR. IDIFF.NE.0 .OR. ITHEHY.NE.0) THEN INFCHE(ISOUS,6)=6 ELSE INFCHE(ISOUS,6)=3 ENDIF C NOMBRE DES COMPOSANTES SELON LA DIMENSION N2 = 0 IF (IDIM.EQ.2) N2=7 IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9 )) N2=7 IF (IDIM.EQ.3.AND.(MFR.EQ.1.OR.MFR.EQ.31)) N2=12 C ERREUR FORMULATION INDISPONIBLE IF (N2 .EQ. 0) THEN MOTERR(1:8)=NOMFR(MFR) RETURN ENDIF C----------------------------------------------------------------------- C CREATION DU MCHAML C----------------------------------------------------------------------- SEGINI MCHAML ICHAML(ISOUS)=MCHAML C----------------------------------------------------------------------- C Remplissage du MCHAML C----------------------------------------------------------------------- NCOMP = N2 DO i=1,NCOMP TYPCHE(i)='REAL*8' ENDDO * C NOM DES COMPOSANTES SELON LA DIMENSION C Si l option de calcul est PLAN IF (IFOMOD.EQ.-1) THEN NOMCHE(1)='LXX ' NOMCHE(2)='LYY ' NOMCHE(3)='LZZ ' NOMCHE(4)='LXY ' NOMCHE(5)='PXX ' NOMCHE(6)='PYY ' NOMCHE(7)='PXY ' C Si l option de calcul est AXIS ou FOUR ELSE IF (IFOMOD.EQ.0.OR.IFOMOD.EQ.1) THEN NOMCHE(1)='LRR ' NOMCHE(2)='LZZ ' NOMCHE(3)='LOO ' NOMCHE(4)='LRZ ' NOMCHE(5)='PRR ' NOMCHE(6)='PZZ ' NOMCHE(7)='PRZ ' C Si l option de calcul est TRID CAS MASSIF ELSE IF (IFOMOD.EQ.2.AND.(MFR.EQ.1.OR.MFR.EQ.31)) THEN NOMCHE( 1)='LXX ' NOMCHE( 2)='LYY ' NOMCHE( 3)='LZZ ' NOMCHE( 4)='LXY ' NOMCHE( 5)='LXZ ' NOMCHE( 6)='LYZ ' NOMCHE( 7)='PXX ' NOMCHE( 8)='PYY ' NOMCHE( 9)='PZZ ' NOMCHE(10)='PXY ' NOMCHE(11)='PXZ ' NOMCHE(12)='PYZ ' C Si l option de calcul est TRID CAS COQUES ELSE IF (IFOMOD.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN NOMCHE(1)='LSS ' NOMCHE(2)='LTT ' NOMCHE(3)='LNN ' NOMCHE(4)='LST ' NOMCHE(5)='PSS ' NOMCHE(6)='PTT ' NOMCHE(7)='PST ' ELSE ENDIF C C----------------------------------------------------------------------- C CREATION ET REMPLISSAGE DU MELVAL DE CHAQUE COMPOSANTE C----------------------------------------------------------------------- C Nous n avons que des composantes scalaires donc N2*=0---- N2PTEL=0 N2EL =0 C Cas 1 : Champs UNIFORMEs (valeur nulle) IF (IUNIF.NE.0) THEN N1PTEL=1 N1EL=1 DO i=1,NCOMP SEGINI,MELVAL IELVAL(i)=MELVAL VELCHE(1,1)=XZER ENDDO C Cas 2 : Calculs des tenseurs en chaque point d'integration ! ELSE C---------INFORMATION sur les fonctions de forme ( MINTE )--------- NBPGAU=POIGAU(/1) C----ACTIVATION DU MELEME : Maillage elementaire de la sous zone--- MELEME=IPMAIL NBNN =NUM(/1) NBELEM=NUM(/2) N1PTEL=NBPGAU N1EL =NBELEM C-Initialisation du segment des valeurs aux points de Gauss DO i=1,NCOMP SEGINI,MELVAL IELVAL(i)=MELVAL ENDDO C-- Segments de travail SEGINI,MTRA1 MTRA2=0 IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9)) SEGINI,MTRA2 C-------------------------------------------------------------------- C initialisation des fonctions de formes aux points de GAUSS C pour l element de reference de cette sous zone C-------------------------------------------------------------------- C-initialisation des fonctions de forme a l origine et sur les axes- CALL SHAPE(XZER,XZER,XZER,IELE,SHPZER,IRET) * IF (IRET.EQ.0) THEN * CALL ERREUR(662) * GOTO 592 * ENDIF CALL SHAPE(XUN,XZER,XZER,IELE,SHPQSI,IRET) * IF (IRET.EQ.0) THEN * CALL ERREUR(662) * GOTO 592 * ENDIF CALL SHAPE(XZER,XUN,XZER,IELE,SHPETA,IRET) * IF (IRET.EQ.0) THEN * CALL ERREUR(662) * GOTO 592 * ENDIF CALL SHAPE(XZER,XZER,XUN,IELE,SHPDZE,IRET) IF (IRET.EQ.0) THEN GOTO 592 ENDIF C BOUCLE SUR CHAQUE ELEMENT C----------------------------------------------------------------------- DO 1000 IB=1,NBELEM C extraction des coordonnees des noeuds de l element IB C resultat dans XEL C C CAS DES COQUES 3D - RECHERCHE DES COORDONNEES LOCALES IF (IDIM.EQ.3.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN C* IF (MTRA2.NE.0) THEN DO j=1,NBNN DO i=1,3 YEL(i,j)=XEL(i,j) ENDDO ENDDO ENDIF C C BOUCLE SUR CHAQUE POINT DE GAUSS C============================================================= DO 1004 IC=1,NBPGAU DO j=1,NBNN DO i=1,6 SHP(i,j)=SHPTOT(i,j,IC) ENDDO ENDDO POI=POIGAU(IC) * QSI=QSIGAU(IC) * ETA=ETAGAU(IC) * DZE=DZEGAU(IC) * CALL SHAPE(QSI,ETA,DZE,IELE,SHPGAU,IRET) * IF (IRET.EQ.0) THEN * CALL ERREUR(662) * GOTO 592 * ENDIF C IF (IRET.EQ.0) THEN GOTO 592 ENDIF C DO i=1,NCOMP MELVAL=IELVAL(i) VELCHE(IC,IB)=VCOMP(i) ENDDO C 1004 CONTINUE C 1000 CONTINUE 592 CONTINUE SEGSUP,MTRA1 IF (MTRA2.NE.0) SEGSUP,MTRA2 ENDIF IF (IERR.NE.0) GOTO 9990 C============================================================ C------------ BOUCLE SUR LES SOUS ZONES RESTANTES ----------- C============================================================ 500 CONTINUE C---------------------FIN NORMAL DU CALCUL------------------------- IPCHE=MCHELM IRET=1 RETURN C------------------------------------------------------------------- C ERREUR DANS UNE ZONE , DESACTIVATION ET RETOUR C------------------------------------------------------------------- 9990 CONTINUE SEGSUP,MCHELM IPCHE=0 IRET =0 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales