SUBROUTINE IRCMVA ( NUMCMP, NCMPVE, NCMPRF, > NVALEC, NBPG, NBSP, NOLOPG, > ADSV, ADSD, ADSL, > TYMAST, MODNUM, NUANOM, > VAL, PROFAS, IDEB, IFIN ) C CONFIGURATION MANAGEMENT OF EDF VERSION C MODIF PREPOST DATE 31/01/2006 AUTEUR GNICOLAS G.NICOLAS C ====================================================================== C COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG C THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY C IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY C THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR C (AT YOUR OPTION) ANY LATER VERSION. C C THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT C WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF C MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU C GENERAL PUBLIC LICENSE FOR MORE DETAILS. C C YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE C ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, C 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. C ====================================================================== C RESPONSABLE GNICOLAS G.NICOLAS C_______________________________________________________________________ C ECRITURE D'UN CHAMP - FORMAT MED - CREATION DES VALEURS C - - - - -- C_______________________________________________________________________ C ENTREES : C NUMCMP : NUMEROS DES COMPOSANTES C NCMPVE : NOMBRE DE COMPOSANTES VALIDES EN ECRITURE C NVALEC : NOMBRE DE VALEURS A ECRIRE C NBPG : NOMBRE DE POINTS DE GAUSS (1 POUR DES CHAMNO) C NBSP : NOMBRE DE SOUS-POINTS (1 POUR DES CHAMNO) C NOLOPG : NOM MED LOCALISATION DES PTS DE GAUSS ASSOCIEE AU CHAMP C ADSV,D,L : ADRESSES DES TABLEAUX DES CHAMPS SIMPLIFIES C TYMAST : TYPE ASTER DE MAILLE QUE L'ON VEUT (0 POUR LES NOEUDS) C MODNUM : INDICATEUR SI LA SPECIFICATION DE NUMEROTATION DES C NOEUDS DES MAILLES EST DIFFERENTES ENTRE ASTER ET MED: C MODNUM = 0 : NUMEROTATION IDENTIQUE C MODNUM = 1 : NUMEROTATION DIFFERENTE C NUANOM : TABLEAU DE CORRESPONDANCE DES NOEUDS MED/ASTER. C NUANOM(ITYP,J): NUMERO DANS ASTER DU J IEME NOEUD DE LA C MAILLE DE TYPE ITYP DANS MED. C PROFAS : PROFIL ASTER. C'EST LA LISTE DES NUMEROS ASTER C DES NOEUDS OU DES ELEMENTS POUR LESQUELS LE CHAMP C EST DEFINI C IDEB : INDICE DE DEBUT DANS PROFAS C IFIN : INDICE DE FIN DANS PROFAS C SORTIES : C VAL : VALEURS EN MODE ENTRELACE C_______________________________________________________________________ C IMPLICIT NONE C INTEGER NTYMAX PARAMETER (NTYMAX = 48) C C 0.1. ==> ARGUMENTS C INTEGER NCMPVE, NCMPRF, NVALEC, NBPG, NBSP INTEGER NUMCMP(NCMPRF) INTEGER ADSV, ADSD, ADSL INTEGER TYMAST INTEGER MODNUM(NTYMAX), NUANOM(NTYMAX,*) INTEGER PROFAS(*) INTEGER IDEB, IFIN C REAL*8 VAL(NCMPVE,NBSP,NBPG,NVALEC) C CHARACTER*32 NOLOPG C C 0.2. ==> COMMUNS C C --------------- COMMUNS NORMALISES JEVEUX -------------------------- REAL*8 ZR LOGICAL ZL COMMON /RVARJE/ZR(1) COMMON /LVARJE/ZL(1) C ----- FIN COMMUNS NORMALISES JEVEUX -------------------------- C C 0.3. ==> VARIABLES LOCALES C CHARACTER*6 NOMPRO PARAMETER ( NOMPRO = 'IRCMVA' ) C CHARACTER*32 EDELGA PARAMETER ( EDELGA='________ELNO____________________' ) C 12345678901234567890123456789012 INTEGER IAUX, JAUX, KAUX INTEGER ADSVXX INTEGER INO, IMA, NRCMP, NRCMPR, NRPG, NRSP INTEGER IFM, NIVINF C LOGICAL LOGAUX C C==== C 1. PREALABLES C==== C C 1.1. ==> RECUPERATION DU NIVEAU D'IMPRESSION C CALL INFNIV ( IFM, NIVINF ) C C 1.2. ==> INFORMATION C IF ( NIVINF.GT.1 ) THEN CALL UTMESS ( 'I', NOMPRO, > 'CREATION DES TABLEAUX DE VALEURS A ECRIRE AVEC :') WRITE (IFM,13001) NVALEC, NCMPVE, NBPG, NBSP ENDIF 13001 FORMAT(' NVALEC =',I8,', NCMPVE =',I8, > ', NBPG =',I8,', NBSP =',I8,/) C C==== C 2. CREATION DU CHAMP DE VALEURS AD-HOC C LE TABLEAU DE VALEURS EST UTILISE AINSI : C TV(NCMPVE,NBSP,NBPG,NVALEC) C EN FORTRAN, CELA CORRESPOND AU STOCKAGE MEMOIRE SUIVANT : C TV(1,1,1,1), TV(2,1,1,1), ..., TV(NCMPVE,1,1,1), C TV(1,2,1,1), TV(2,2,1,1), ..., TV(NCMPVE,2,1,1), C ... ... ... C TV(1,NBSP,NBPG,NVALEC), TV(2,NBSP,NBPG,NVALEC), ... , C TV(NCMPVE,NBSP,NBPG,NVALEC) C C'EST CE QUE MED APPELLE LE MODE ENTRELACE C ATTENTION : LE CHAMP SIMPLIFIE EST DEJA PARTIELLEMENT FILTRE ... C ATTENTION ENCORE : LE CHAMP SIMPLIFIE N'A PAS LA MEME STRUCTURE C POUR LES NOEUDS ET LES ELEMENTS. IL FAUT RESPECTER CE TRAITEMENT C REMARQUE : SI UNE COMPOSANTE EST ABSENTE, ON AURA UNE VALEUR NULLE C REMARQUE : ATTENTION A BIEN REDIRIGER SUR LE NUMERO DE C COMPOSANTE DE REFERENCE C==== C C 2.1. ==> POUR LES NOEUDS : ON PREND TOUT CE QUI FRANCHIT LE FILTRE C IF ( TYMAST.EQ.0 ) THEN CGN PRINT *,'PREMIER NOEUD : ',PROFAS(IDEB) CGN PRINT *,'DERNIER NOEUD : ',PROFAS(IFIN) C DO 21 , NRCMP = 1 , NCMPVE C ADSVXX = ADSV-1+NUMCMP(NRCMP)-NCMPRF JAUX = 0 DO 211 , IAUX = IDEB, IFIN INO = PROFAS(IAUX) JAUX = JAUX + 1 KAUX = INO*NCMPRF VAL(NRCMP,1,1,JAUX) = ZR(ADSVXX+KAUX) 211 CONTINUE C 21 CONTINUE C ELSE C C 2.2. ==> POUR LES MAILLES : ON PREND TOUT CE QUI FRANCHIT LE FILTRE C ET QUI EST DU TYPE EN COURS C REMARQUE : ON NE REDECODE PAS LES NOMBRES DE POINTS DE GAUSS C NI DE SOUS-POINT CAR ILS SONT INVARIANTS POUR UNE IMPRESSION C DONNE C REMARQUE : DANS LE CAS DE CHAMPS AUX NOEUDS PAR ELEMENTS, C L'ORDRE DE STOCKAGE DES VALEURS DANS UNE MAILLE DONNEE EST C CELUI DE LA CONNECTIVITE LOCALE DE LA MAILLE. OR POUR C CERTAINES MAILLES, CET ORDRE CHANGE ENTRE ASTER ET MED. IL C FAUT DONC RENUMEROTER. C C ATTENTION : DANS L'ATTENTE D'UN NOM TYPE UNIQUE POUR LES C LOCALISATIONS DE CHAMPS AUX NOEUDS PAR ELEMENT, EVOLUTION C MED A VENIR, ON TESTE SUR LE NOM QUI A ETE DONNE DANS IRMPG1. C PAR DEFAUT, IL COMPORTE 'ELNO____' DE 9 A 16 C QUAND L'EVOLUTION AURA EU LIEU, IL SUFFIRA DE METTRE LE NOM C RETENU DANS EDELGA ET DE FAIRE LE TEST COMPLET. C CGN PRINT *,'PREMIERE MAILLE : ',PROFAS(IDEB) CGN PRINT *,'DERNIERE MAILLE : ',PROFAS(IFIN) C C 2.2.1. ==> A-T-ON BESOIN DE RENUMEROTER ? C REMARQUE : LE MODE DE RANGEMENT FAIT QUE CELA NE FONCTIONNE C QUE POUR LES CHAMPS AVEC 1 SEUL SOUS-POINT. C LOGAUX = .FALSE. IF ( EDELGA(9:16).EQ.NOLOPG(9:16) ) THEN IF ( MODNUM(TYMAST).EQ.1 ) THEN LOGAUX = .TRUE. ENDIF ENDIF C IF ( LOGAUX ) THEN IF ( NBSP.GT.1 ) THEN WRITE (IFM,13001) NVALEC, NCMPVE, NBPG, NBSP CALL UTMESS ( 'F', NOMPRO, > 'RENUMEROTATION IMPOSSIBLE AVEC PLUS D''UN SOUS-POINT') ENDIF ENDIF C C 2.2.2. ==> TRANSFERT C ON FAIT LE TEST AVANT LA BOUCLE 211. IL EST DONC FAIT C AUTANT DE FOIS QUE DE COMPOSANTES A TRANSFERER. AU-DELA, CE C SERAIT AUTANT DE FOIS QUE DE MAILLES, DONC COUTEUX C DO 22 , NRCMP = 1 , NCMPVE C NRCMPR = NUMCMP(NRCMP) JAUX = 0 IF ( LOGAUX ) THEN C NRSP = 1 DO 221 , IAUX = IDEB, IFIN IMA = PROFAS(IAUX) JAUX = JAUX + 1 DO 2211 , NRPG = 1 , NBPG CALL CESEXI ('C',ADSD,ADSL,IMA,NRPG,NRSP,NRCMPR,KAUX) VAL(NRCMP,NRSP,NUANOM(TYMAST,NRPG),JAUX)=ZR(ADSV-1+ & KAUX) 2211 CONTINUE C 221 CONTINUE C ELSE C DO 222 , IAUX = IDEB, IFIN IMA = PROFAS(IAUX) JAUX = JAUX + 1 DO 2221 , NRPG = 1 , NBPG DO 2222 , NRSP = 1 , NBSP CALL CESEXI ('C',ADSD,ADSL,IMA,NRPG,NRSP,NRCMPR, & KAUX) VAL(NRCMP,NRSP,NRPG,JAUX) = ZR(ADSV-1+KAUX) 2222 CONTINUE 2221 CONTINUE C 222 CONTINUE C ENDIF C 22 CONTINUE C ENDIF C END