devlir
C DEVLIR SOURCE CB215821 24/04/12 21:15:36 11897 & NINS,ITSORT,ITREDU,KPREF,KCPR,ITCARA,LMODYN,ITDYN) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Lecture et coherence des operandes, verification des supports * * objets TBAS, TKM, TA et TINIT. * * Obtention de la liste des points de reference. * * * * Param}tres: * * * * s ITBAS Table representant une base modale * * s ITKM Table contenant les matrices de raideur et de masse * * s ITA Table contenant la matrice des amortissements * * s ITLIA Table rassemblant la description des liaisons * * s ITCHAR Table contenant les chargements * * s ITINIT Table donnant les conditions initiales * * s NP Nombre de pas de temps * * s PDT Valeur du pas de temps * * s NINS On veut un resultat tous les NINS pas de calcul * * s ITSORT Table definissant les resultats attendus * * s ITREDU Table contenant les noms d'inconnues de la base B * * auxquelles on se restreint * * s KPREF Segment des points de reference * * s KCPR Segment des points * * * * Auteur, date de creation: * * * * Denis ROBERT-MOUGIN, le 25 mai 1989. * * * *--------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC SMMODEL segment mwinit integer jpdep,jpvit,jrepr endsegment segment mtbas integer itbmod,lsstru(np1),nsstru endsegment * LOGICAL LMODYN, LOAMOR,L0,L1 CHARACTER*8 TYPOBJ CHARACTER*72 CHARRE,CHARRI * NINS = 1 LMODYN = .false. ITDYN = 0 * ITBAS = 0 ITKM = 0 ITA = 0 ITLIA = 0 ITCHAR = 0 ITINIT = 0 ITSORT = 0 ITREDU = 0 ITIND = 0 if (iret.ne.0) lmodyn = .true. * * A/ Lecture des operandes, les tables puis les autres: * if (lmodyn) then & 'MMODEL',I1,X1,CHARRE,L1,ITMOD) IF (IERR.NE.0) RETURN & 'MCHAML',I1,X1,CHARRE,L1,ITCARA) IF (IERR.NE.0) RETURN call extrai mmodel = itmod segact mmodel np1 = kmodel(/1) segini mtbas itbas = mtbas itbmod = itmo1 else IF (IRET.EQ.0) THEN ENDIF IF (IERR.NE.0) RETURN IF (ITBAS.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*)' on a lu la table definissant la base modale.' ENDIF endif * if (lmodyn) then else IF (IERR.NE.0) RETURN IF (ITKM.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*) & ' on a lu la table definissant les matrices de raideurs.' ENDIF endif * if (lmodyn) then ITBMO1 = itbmod IF(IERR .NE. 0) RETURN call exis if (loamor) then call amor IF (IERR.NE.0) RETURN endif else IF (IERR.NE.0) RETURN IF (ITA.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*) & ' on a lu la table definissant une matrice d''amortissement.' ENDIF endif * if (lmodyn) then call exis if (itlog.eq.1) then call extrai endif if (ierr.ne.0) return else IF (IERR.NE.0) RETURN IF (ITLIA.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*)' on a lu la table definissant les liaisons.' ENDIF endif * if (lmodyn) then typobj = ' ' irep = 0 ITCHAR = 0 & typobj,I1,X1,CHARRE,L1,irep) if (typobj.eq.'CHARGEME') ITCHAR = irep else IF (IERR.NE.0) RETURN IF (ITCHAR.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*)' on a lu la table definissant les chargements.' ENDIF endif * if (lmodyn) then typobj = ' ' irep = 0 & typobj,I1,X1,CHARRE,L1,IREP) if (typobj.eq.'TABLE') then segini mwinit itinit = mwinit jrepr = irep else itind = 0 typobj = ' ' & typobj,I1,X1,CHARRE,L1,ITAD) if (typobj.eq.'TABLE') then & 'CHPOINT',I1,X1,CHARRE,L1,ITIND) endif typobj = ' ' & typobj,I1,X1,CHARRE,L1,ITAV) if (typobj.eq.'TABLE') then endif segini mwinit jpdep = itind jpvit = itinv itinit = mwinit endif endif else IF (IERR.NE.0) RETURN IF (ITINIT.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*) &' on a lu la table definissant les conditions initiales.' ENDIF endif if (lmodyn) then * le traitement des reprises semble �tre fait dans devalo else IF (IERR.NE.0) RETURN IF (IREP.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*) &' on a lu la table definissant la reprise' ENDIF endif * if (lmodyn) then ITSORT = 0 typobj = ' ' & typobj,I1,X1,CHARRE,L1,ITSOR1) if (typobj.eq.'TABLE') then ITSORT = ITSOR1 endif else IF (IERR.NE.0) RETURN IF (ITSORT.NE.0 .AND. IIMPI.EQ.333) THEN WRITE(IOIMP,*)' on a lu la table definissant les sorties.' ENDIF endif * if (lmodyn) then else IF (IERR.NE.0) RETURN endif * if (lmodyn) then & 'FLOTTANT',I1,pdt,CHARRE,L1,IP1) & 'ENTIER',np,X1,CHARRE,L1,IP1) typobj = ' ' nins = 1 & typobj,I1,X1,CHARRE,L1,IP1) if (typobj.eq.'ENTIER') nins = I1 else IF (IERR.NE.0) RETURN * IF (IERR.NE.0) RETURN * IF (IERR.NE.0) RETURN endif * * B/ Coherence des operandes * IF (ITBAS.EQ.0 .AND. ITKM.EQ.0) THEN RETURN ENDIF IF (ITCHAR.EQ.0 .AND. ITINIT.EQ.0 .AND. IREP.EQ.0) THEN RETURN ENDIF IF (NP.LE.0) THEN IF(LANGUE.EQ.'ANGL') THEN MOTERR(1:40)='time steps' ELSE MOTERR(1:40)='pas de temps de calcul' ENDIF RETURN ENDIF RETURN ENDIF IF (NINS.LE.0) THEN * INTERR(1)=NINS * CALL ERREUR(36) IF(LANGUE.EQ.'ANGL') THEN MOTERR(1:40)='calculation steps between two outputs' ELSE MOTERR(1:40)='pas de calcul entre deux sorties' ENDIF RETURN ENDIF * * C/ Verification des supports des objets TBAS, TKM, TA et TINIT * et obtention de la liste des points de reference * if (lmodyn) then it1 = itbmod else it1 = itbas endif IF (IERR.NE.0) RETURN * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales