prdmcp
C PRDMCP SOURCE CB215821 20/11/25 13:36:04 10792 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : PRDMCP C DESCRIPTION : Produit matrices élémentaires * chpo. primal C -> chpo. dual. C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : PRMCP2 C APPELES (UTIL.) : FIXMEL, ADCHPO, DTCHPO, ERREUR C APPELE PAR : KOPS C*********************************************************************** C ENTREES : MATELE, MCHPRI C ENTREES/SORTIES : - C SORTIES : MCHDUA C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 18/04/2000, version initiale C HISTORIQUE : v1, 18/04/2000, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMMATRIK POINTEUR MATELE.MATRIK POINTEUR MMATEL.IMATEL -INC SMCHPOI INTEGER NAT,NSOUPO POINTEUR MCHPRI.MCHPOI POINTEUR MSOPRI.MSOUPO POINTEUR MCHDUA.MCHPOI POINTEUR MCHTOT.MCHPOI POINTEUR MCHTMP.MCHPOI POINTEUR MSOTMP.MSOUPO -INC SMELEME POINTEUR MELPRI.MELEME POINTEUR MELPR2.MELEME POINTEUR MMLPRI.MELEME POINTEUR MELDUA.MELEME POINTEUR MELDU2.MELEME POINTEUR MMLDUA.MELEME * INTEGER IMPR,IRET INTEGER NMATE,NSOPRI INTEGER IMATE,ISOPRI * * Executable statements * IMPR=IIMPI IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans prdmcp.eso' * Correction des maillages (à supprimer dès que possible) SEGACT MATELE*MOD NMATE=MATELE.IRIGEL(/2) DO 1 IMATE=1,NMATE MELPRI=MATELE.IRIGEL(1,IMATE) MELDUA=MATELE.IRIGEL(2,IMATE) $ MELPR2,MELDU2, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 MATELE.IRIGEL(1,IMATE)=MELPR2 MATELE.IRIGEL(2,IMATE)=MELDU2 1 CONTINUE SEGDES MATELE * Initialisation du résultat avec un chpoint vide NAT=2 NSOUPO=0 SEGINI MCHDUA MCHDUA.IFOPOI=IFOUR MCHDUA.JATTRI(1)=2 SEGDES MCHDUA * * Boucle sur les matrices et les msoupo du chpoint primal * SEGACT MATELE NMATE=MATELE.IRIGEL(/2) SEGACT MCHPRI NSOPRI=MCHPRI.IPCHP(/1) DO 3 IMATE=1,NMATE MMLPRI=MATELE.IRIGEL(1,IMATE) MMLDUA=MATELE.IRIGEL(2,IMATE) MMATEL=MATELE.IRIGEL(4,IMATE) DO 4 ISOPRI=1,NSOPRI MSOPRI=MCHPRI.IPCHP(ISOPRI) $ MSOTMP, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 IF (MSOTMP.NE.0) THEN NAT=2 NSOUPO=1 SEGINI MCHTMP MCHTMP.IFOPOI=IFOUR MCHTMP.JATTRI(1)=2 MCHTMP.IPCHP(1)=MSOTMP SEGDES MCHTMP IF (MCHTOT.EQ.0) THEN WRITE(IOIMP,*) 'Pas pu faire le ET des chpoints...' GOTO 9999 ENDIF MCHDUA=MCHTOT ENDIF 4 CONTINUE 3 CONTINUE segact mchdua*mod mchdua.mochde='créé par prdmcp' mchdua.mtypoi=' ' SEGDES MATELE * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine prdmcp' * 153 2 * Opération illicite dans ce contexte RETURN * * End of subroutine PRDMCP * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales