[updated 8.Sep.2008]
SUBROUTINE MO2LSF (NDIM ,NBTEL ,NCACAR,NDSD,NCOPNP
& ,IANOP5,NOP5 ,IAMAIL,MAIL,MAIC,MAII,MAIJ
& ,LGMDOM,NBDOMG,NCHDOM,AST,IST)
Auteur : D.Martin (Avril 1993)
Derniere modification : D.Martin (20 avril 2007)
Version 3
Construction des #ISTEL pour les domaines de Melina de dimension 2 en 3D
NDIM dimension d'espace
NBTEL nombre d'elements du maillage
NCACAR
NDSD plus grand numero de sous-domaine
NCOPNP indique la coincidence sommets-noeuds
IANOP5 adresse de l'element courant dans le tableau NOP5
NOP5 tableau NOP5 de la structure NOPO de Modulef
IAMAIL adresse de l'element courant dans le tableau MAIL
MAIL tableau MAIL de description des elements
MAIC tableau MAIC de description des types d'elements
MAII tableau MAII
MAIJ tableau MAIJ
LGMDOM longueur du tableau de caracteres des noms de domaine
NBDOMG nombre de domaine (au sens de Melina)
NCHDOM nombre de caracteres maximum par nom de domaine
AST super-tableau de caracteres de Melina
IST super-tableau de Melina, version entiere
CHARACTER AST(*)
INTEGER NDIM,NBTEL,NCACAR,NDSD,NCOPNP,IANOP5,NOP5(*)
& ,IAMAIL,MAIL(*),MAIC(*),MAII(*),MAIJ(*)
& ,LGMDOM,NBDOMG,NCHDOM,IST(*)
CHARACTER*5 LEYTUN
INTEGER MENUTY
INTEGER NCGE,NMAE,NDSDE,NBNE,NTYE,NTALIR,INING
& ,NUTYLE,LAGHER,KCLASS,NBSOMT,NBARET,NBFACE,NBDL
& ,NBNEFL,NBDLFL,NBNEAL,NBDLAL,NUTYAV,L
& ,MEMEMO,IAA
CHARACTER ERCODE*120,CRETAB*2,CRELIS
COMMON/FORMAH/ERCODE
CALL PRFXMJ (1,'*Mo2Lsf*')
NUTYAV =0
CRETAB='Y '
CRELIS='N'
DO 1 L=1,NBTEL
CALL MOATRL (IANOP5,NOP5,IAMAIL,MAIL,MAIC,NCACAR
& ,NCGE,NMAE,NDSDE,NBNE,NTYE,NTALIR) !mo2me
NUTYLE=MENUTY (NDIM,NCGE,NBNE) !momeutil
IF (NUTYLE.NE.NUTYAV) THEN
CALL ELEMNB (NUTYLE,LAGHER,KCLASS,NBSOMT,NBARET
& ,NBFACE,NBNE,NBDL,NBNEAL,NBDLAL,NBNEFL,NBDLFL)!ef3d
CALL TBAR1 (ERCODE,'#umemo',0 ,MEMEMO)
CALL FME2MO (LEYTUN(NUTYLE),NBFACE,IST(MEMEMO)) !momeutil
NUTYAV=NUTYLE
ENDIF
CALL MORIP1 (IANOP5,NOP5,IAMAIL,MAIL,MAII,MAIJ,NCOPNP,NBNE !mo2me
& ,NTYE,NTALIR)
IF (NMAE.GT.0) THEN
IF (IANOP5.GT.0) THEN
INING = NOP5(IANOP5)
IF(INING.EQ.1) THEN
CALL MELIS2 (NDIM,2,NBFACE,NOP5(IANOP5+1)
& ,NDSD,NDSDE,NBTEL,L
& ,NBNE,NBDL,NBNEFL,NBDLFL
& ,LGMDOM,NBDOMG,NCHDOM,AST,IST,CRETAB) !mo2me
CRELIS='Y'
ENDIF
IANOP5=IANOP5+NMAE
ELSEIF (IAMAIL.GT.0) THEN
INING = MAIL(IAMAIL)
IF (INING.EQ.1) THEN
CALL MELIS2 (NDIM,2,NBFACE,MAIL(IAMAIL+1)
& ,NDSD,NDSDE,NBTEL,L
& ,NBNE,NBDL,NBNEFL,NBDLFL
& ,LGMDOM,NBDOMG,NCHDOM,AST,IST,CRETAB) !mo2me
CRELIS='Y'
ENDIF
IAMAIL=IAMAIL+NMAE
ENDIF
ENDIF
1 CONTINUE
IF (CRELIS.EQ.'Y'.AND.CRETAB(2:2).EQ.'Y')WRITE(*,10000) '*Mo2Lsf*'
CALL PRFXMJ (-1,'*Mo2Lsf*')
10000 FORMAT(/T2,A8,' Construction des #ISTEL surfaciques'/)
-- File history
Version 3 : D.Martin (20 avril 2007)
- suppression argument NDSR inutile (arg. de MELIS2)
Version 2 : D.Martin (04 juillet 2005)
END !Mo2Lsf
mo2lsf est appelé dans (2 procédures)