relr14
C RELR14 SOURCE PV 20/03/30 21:23:59 10567 $ MINCP,MINCD, $ PROFM,VALM, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : RELR14 C DESCRIPTION : * * Construction du profil Morse de la matrice assemblée * Celui-ci est ordonné (les numeros de colonnes * dans IA sont en ordre croissant) * 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 ENTREES : C ENTREES/SORTIES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 27/06/2003, version initiale C HISTORIQUE : v1, 27/06/2003, 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 SMCOORD -INC SMRIGID POINTEUR MLIN.MRIGID POINTEUR DES.DESCR * POINTEUR IMAT.IMATRI POINTEUR XMAT.XMATRI -INC SMELEME POINTEUR MEL.MELEME * Includes persos CBEGININCLUDE SMMINC SEGMENT MINC INTEGER NPOS(NPT+1) INTEGER MPOS(NPT,NBI+1) ENDSEGMENT SEGMENT IMINC INTEGER LNUPO (NDDL) INTEGER LNUINC(NDDL) ENDSEGMENT CENDINCLUDE SMMINC POINTEUR MINCP.MINC POINTEUR MINCD.MINC CBEGININCLUDE SMPMORS SEGMENT PMORS INTEGER IA (NTT+1) INTEGER JA (NJA) ENDSEGMENT CENDINCLUDE SMPMORS POINTEUR PROFM.PMORS POINTEUR PMCOU.PMORS POINTEUR PMTMP.PMORS CBEGININCLUDE SMIZA SEGMENT IZA REAL*8 A(NBVA) ENDSEGMENT CENDINCLUDE SMIZA POINTEUR VALM.IZA * Segment LSTIND (liste séquentielle indexée) SEGMENT LSTIND INTEGER IDX(NBM+1) INTEGER IELRIG(NBTVAL) INTEGER ILIGR (NBTVAL) ENDSEGMENT POINTEUR DDDNUL.LSTIND * -INC SMLENTI POINTEUR KJSPGP.MLENTI POINTEUR KJSPGD.MLENTI POINTEUR KRSPGP.MLENTI POINTEUR KRSPGD.MLENTI POINTEUR KRINCP.MLENTI POINTEUR KRINCD.MLENTI -INC SMLMOTS POINTEUR LINCP.MLMOTS POINTEUR LINCD.MLMOTS * INTEGER IMPR,IRET * LOGICAL LEXIST * * Executable statements * IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans relr14.eso' SEGACT MLIN NRIG=MLIN.IRIGEL(/2) * Construction des segments de repérage dans l'ensemble des points SEGACT KJSPGP NPOPRI=KJSPGP.LECT(/1) JG=nbpts SEGINI KRSPGP SEGDES KJSPGP SEGACT LINCP SEGACT MINCP * SEGACT KJSPGD NPODUA=KJSPGD.LECT(/1) JG=nbpts SEGINI KRSPGD SEGDES KJSPGD SEGACT LINCD SEGACT MINCD * Initialisation du profil morse total (profil vide et non diagonal) NDDLPR=MINCP.NPOS(NPOPRI+1)-1 NDDLDU=MINCD.NPOS(NPODUA+1)-1 NTT=NDDLDU NJA=0 SEGINI PROFM DO I=1,NDDLDU+1 PROFM.IA(I)=1 ENDDO SEGDES PROFM DO IRIG=1,NRIG MEL=MLIN.IRIGEL(1,IRIG) SEGACT MEL * a effacer NEL=MEL.NUM(/2) DES=MLIN.IRIGEL(3,IRIG) SEGACT DES NDDLOP=DES.NOELEP(/1) NDDLOD=DES.NOELED(/1) * Construction du segment de repérage dans les inconnues primales et duales JG=NDDLOP SEGINI KRINCP $ DES.LISINC,LINCP.MOTS, $ KRINCP.LECT, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 JG=NDDLOD SEGINI KRINCD $ DES.LISDUA,LINCD.MOTS, $ KRINCD.LECT, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * construction de la correspondance : * ieme ddl dual de la matrice assemblée <-> * (numéro d'élément, numéro ddl dual local) * de la rigidité dans lesquels il apparait * In relr1a : SEGINI DDDNUL $ MEL,DES, $ DDDNUL, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * a effacer SEGPRT,DDDNUL * construction de la correspondance : * ieme ddl dual de la matrice assemblée <-> * (numéros des ddl primaux avec lesquels il est * en relation). C'est le profil morse (non ordonné) * In relr1b : SEGINI PMCOU $ MINCP,KRSPGP,KRINCP, $ MEL,DES, $ PMCOU, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * WRITE(IOIMP,*) ' ',IRIG * WRITE(IOIMP,*) 'IRIG=',IRIG * WRITE(IOIMP,*) ' ',IRIG * CALL ECMORS(PMCOU,0,3) * a effacer SEGPRT,PMCOU * In FUSPRM : SEGINI PMTMP $ PMTMP, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * CALL ECMORS(PMTMP,0,3) SEGSUP PMCOU SEGSUP PROFM PROFM=PMTMP SEGSUP DDDNUL SEGSUP KRINCD SEGSUP KRINCP SEGDES DES SEGDES MEL ENDDO * * Ordonnancement du profil morse * $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,PROFM * * Remplissage des valeurs de la matrice Morse * SEGACT PROFM NNZ=PROFM.JA(/1) NBVA=NNZ SEGINI VALM DO IRIG=1,NRIG COEF=MLIN.COERIG(IRIG) MEL=MLIN.IRIGEL(1,IRIG) SEGACT MEL * a effacer NEL=MEL.NUM(/2) DES=MLIN.IRIGEL(3,IRIG) SEGACT DES NDDLOP=DES.NOELEP(/1) NDDLOD=DES.NOELED(/1) * Construction du segment de repérage dans les inconnues primales et duales JG=NDDLOP SEGINI KRINCP $ DES.LISINC,LINCP.MOTS, $ KRINCP.LECT, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 JG=NDDLOD SEGINI KRINCD $ DES.LISDUA,LINCD.MOTS, $ KRINCD.LECT, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * IMAT=MLIN.IRIGEL(4,IRIG) * SEGACT IMAT XMAT=MLIN.IRIGEL(4,IRIG) SEGACT XMAT * Compléter les valeurs de la matrice morse avec celles * de XMAT $ MINCD,KRSPGD,KRINCD, $ COEF,MEL,DES,XMAT, $ PROFM, $ VALM, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * WRITE(IOIMP,*) 'IRIG=',IRIG * CALL ECMORS(PROFM,VALM,3) * stop 16 * SEGDES IMAT SEGDES XMAT SEGSUP KRINCD SEGSUP KRINCP SEGDES DES SEGDES MEL ENDDO SEGDES VALM SEGDES PROFM SEGDES MINCD SEGDES LINCD SEGSUP KRSPGD SEGDES MINCP SEGDES LINCP SEGSUP KRSPGP SEGDES MLIN * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine relr14' RETURN * * End of subroutine RELR14 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales