C MACHI2 SOURCE GOUNAND 11/07/01 21:15:18 7020 SUBROUTINE MACHI2(IKAS) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : MACHI2 C DESCRIPTION : Changement de noms d'inconnues duales C d'une matrice (type MATRIK) pour qu'ils soient C identiques aux noms d'inconnues primales C IKAS=1 C ou pour qu'ils correspondent aux noms d'inconnues C primales (noms standard CASTEM) C IKAS=2 C C C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELES (E/S) : C APPELES (BLAS) : C APPELES (CALCUL) : C APPELE PAR : C*********************************************************************** C SYNTAXE GIBIANE : C MATRIK2 = 'KOPS' 'NINCDUPR' MATRIK1 ; C ENTREES : - C ENTREES/SORTIES : - C SORTIES : - C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 22/02/2006, version initiale C HISTORIQUE : v1, 22/02/2006, 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 CCOPTIO -INC CCHAMP -INC SMLMOTS POINTEUR PRI.MLMOTS POINTEUR DUA.MLMOTS CHARACTER*8 MTYP,TYPE CHARACTER*8 BLAN,TYCHPO,TYLMOT,TYMATK,TYRIGI * * Executable statements * BLAN=' ' TYCHPO='CHPOINT ' TYLMOT='LISTMOTS' TYMATK='MATRIK ' TYRIGI='RIGIDITE' * On construit les noms primaux et duaux en recopiant NOMDD et NOMDU * de CCHAMP * JGN=4 JGM=LNOMDD SEGINI PRI DO IGM=1,JGM PRI.MOTS(IGM)=NOMDD(IGM) ENDDO SEGDES PRI JGN=4 JGM=LNOMDU SEGINI DUA DO IGM=1,JGM DUA.MOTS(IGM)=NOMDU(IGM) ENDDO SEGDES DUA TYPE=BLAN CALL QUETYP(TYPE,1,IRET) IF (TYPE.EQ.TYCHPO) THEN MTYP=TYLMOT IF (IKAS.EQ.1) THEN CALL ECROBJ(MTYP,PRI) CALL ECROBJ(MTYP,DUA) ELSEIF (IKAS.EQ.2) THEN CALL ECROBJ(MTYP,DUA) CALL ECROBJ(MTYP,PRI) ELSE CALL ERREUR(5) RETURN ENDIF CALL NOMC ELSEIF (TYPE.EQ.TYMATK.OR.TYPE.EQ.TYRIGI) THEN MTYP=TYLMOT IF (IKAS.EQ.1) THEN CALL ECROBJ(MTYP,PRI) CALL ECROBJ(MTYP,DUA) CALL ECROBJ(MTYP,PRI) CALL ECROBJ(MTYP,PRI) ELSEIF (IKAS.EQ.2) THEN CALL ECROBJ(MTYP,DUA) CALL ECROBJ(MTYP,PRI) CALL ECROBJ(MTYP,PRI) CALL ECROBJ(MTYP,PRI) ELSE CALL ERREUR(5) RETURN ENDIF CALL MACHIN ELSE MOTERR(1:8)=TYPE * 39 2 *On ne veut pas d'objet de type %m1:8 CALL ERREUR(131) ENDIF * * Normal termination * RETURN * * Format handling * * * Error handling * 9999 CONTINUE WRITE(IOIMP,*) 'An error was detected in subroutine machi2' CALL ERREUR(5) RETURN * * End of subroutine MACHI2 * END