C HRSI SOURCE MAGN 10/05/18 21:15:30 6675 SUBROUTINE HRSI IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C************************************************************************ C I OBJET C ---------- C CALCUL DES HR (GRADIENTS FF) ELEMENTAIRES SOUS INTEGRES C C C II SYNTAXE C ___________ C C RES = HRSI OBJ1 <'AXI' i > <'IMPR'> C C OBJ1 : Objet MAILLAGE C AXI DISCRETISATION CORDONNEES CYLINDRIQUE (2D) C i=1 AXE DE SYMETRIE y=0 C i=2 AXE DE SYMETRIE x=0 C IMPR : impressions de controle C RES : Resultat objet de type MATESI C************************************************************************ C -INC CCGEOME -INC CCOPTIO -INC SMTABLE POINTEUR MTABD.MTABLE -INC SMMATRIK -INC SIZFFB -INC SMCOORD -INC SMELEME POINTEUR MELEMZ.MELEME CHARACTER*8 NMD,NOM0,NOM,TYPE,LISTM(1) DIMENSION HRT(24),RPGJ(9),XYZI(24) PARAMETER (NTB=1) CHARACTER*8 LTAB(NTB) DIMENSION KTAB(NTB) DATA LTAB/'DOMAINE '/ DATA LISTM/'IMPR '/ C***************************************************************************** CALL LITABS(LTAB,KTAB,NTB,1,IRET) IF (IERR.NE.0) RETURN MTABD=KTAB(1) IAXI=0 IF(IFOMOD.EQ.0)IAXI=2 IMPAP=0 1 CONTINUE CALL LIRCHA(NOM,0,IRET) IF(IRET.NE.0)THEN CALL OPTLI(IP,LISTM,NOM,1) IF(IP.EQ.0)THEN WRITE(6,*)' On attend le mot cle IMPR' C Il manque la donnée d'un mot clé. CALL ERREUR(498) RETURN ELSE IMPAP=1 GO TO 1 ENDIF ENDIF C TYPE='MAILLAGE' CALL ACMO(MTABD,'MAILLAGE',TYPE,MELEMZ) CALL ACMO(MTABD,'SOMMET',TYPE,MELES1) CALL ACMO(MTABD,'CENTRE',TYPE,MELEMC) IF (IERR.NE.0) RETURN SEGACT MELEMZ NBSOUS=MELEMZ.LISOUS(/1) IF(NBSOUS.EQ.0)NBSOUS=1 C C ON CREE L OBJET MATRIK C NRIGE=7 NKID =9 NKMT =7 NMATRI=1 SEGINI MATRIK IRIGEL(1,1)=MELEMZ IRIGEL(2,1)=MELEMZ IRIGEL(7,1)=1 NBOP=0 NBELC=0 NBME=1 IF(IAXI.NE.0)NBME=2 SEGINI IMATRI IRIGEL(4,1)=IMATRI C KGEOS=MELES1 KSPGP=MELES1 C KGEOC=MELEMC KSPGD=MELEMC C C BOUCLE SUR LES TYPES D'ELEMENTS ET CALCUL C DO 81 KSOUS=1,NBSOUS IF(NBSOUS.EQ.1)IPT1=MELEMZ IF(NBSOUS.NE.1)IPT1=MELEMZ.LISOUS(KSOUS) SEGACT IPT1 NOM0=NOMS(IPT1.ITYPEL)//' ' C CALL KALPBG(NOM0,'FONFORM0',IZFFM) SEGACT IZFFM*MOD IZHR=KZHR(1) SEGACT IZHR*MOD NBEL=IPT1.NUM(/2) IF(IAXI.NE.0)THEN NP=1 MP=1 SEGINI IPM1 LIZAFM(KSOUS,2)=IPM1 ENDIF NP=IPT1.NUM(/1) NES=GR(/1) NPG=GR(/3) MP=NES IESP=MP SEGINI IZAFM C SEGACT IPT1 LIZAFM(KSOUS,1)=IZAFM IF(IMPAP.NE.0)THEN WRITE(6,*)' CREATION SEGMENT MATRIK ' WRITE(6,*)' FONCTIONS DE FORME ' WRITE(6,1002)((FN(MM,II),MM=1,NP),II=1,NPG) WRITE(6,*)' FONCTIONS DE FORME ' WRITE(6,1002)((GR(1,MM,II),MM=1,NP),II=1,NPG) WRITE(6,1002)((GR(2,MM,II),MM=1,NP),II=1,NPG) ENDIF DO 8 K=1,NBEL IJ=1 DO 9 I=1,NP J=IPT1.NUM(I,K) DO 9 N=1,IESP XYZI(IJ )=XCOOR((J-1)*(IDIM+1)+N) IJ=IJ+1 9 CONTINUE C CALL CALJBC(FN,GR,PG,XYZI,HRT,PGSQ,RPGJ,NES, *IESP,NP,NPG,IAXI,AIRE) IH=0 DO 98 I=1,NP DO 98 N=1,IESP IH=IH+1 AM(K,I,N)=HRT(IH) 98 CONTINUE IF(IAXI.NE.0)IPM1.AM(K,1,1)=RPGJ(1) 8 CONTINUE IF(IPT1.NE.MELEMZ)SEGDES IPT1 SEGDES IZAFM IF(IAXI.NE.0)SEGDES IPM1 SEGSUP IZFFM,IZHR 81 CONTINUE SEGDES MELEMZ,IMATRI 32 CONTINUE SEGDES MATRIK CALL ECROBJ('MATRIK',MATRIK) RETURN 1002 FORMAT(10(1X,1PE11.4)) END