dypol0
C DYPOL0 SOURCE CB215821 18/09/13 21:15:34 9917 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Recherche du nombre de parametres d'une liaison POLYNOMIALE * * * * Parametres: * * * * e ITAB1 Table decrivant une liaison POLYNOMIALE * * e XPDT Valeur du pas de temps * * s NX Nombre de valeurs reelles caracterisant la liaison * * s NI Nombre de points intervenant dans la liaison * * * * Auteur, date de creation: * * * * Denis ROBERT, le 23 avril 1992. * * * *--------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC CCNOYAU -INC SMTABLE -INC CCASSIS * LOGICAL L0,L1 CHARACTER*(8) TYPIND, TYPOBJ, MONOBJ CHARACTER*(18) CHAI1 CHARACTER*(14) CHAI2 PARAMETER (XZERO = 0.D0) * voir avec DYNE12 ILC1 = 18 ILC2 = 14 DATA CHAI1 /'RETARD_DEPLACEMENT'/ DATA CHAI2 /'RETARD_VITESSE'/ NXX = 0 IPORIG = 0 XPDTS2 = 0.5 * XPDT * MTABLE = ITAB1 SEGACT MTABLE NIND1 = MLOTAB * Nombre de points "support" et "origine" * * Recherche des infos dans la table LIAISON_ELEMENTAIRE * if(nbesc.ne.0) segact ipiloc DO 10 I = 1,NIND1 TYPIND = MTABTI(I) * * Cas d'un point "origine" * IF (TYPIND.EQ.'POINT ') THEN TYPOBJ = MTABTV(I) IF (TYPOBJ.EQ.'TABLE ') THEN MTAB1 = MTABIV(I) SEGACT,MTAB1 NIND2 = MTAB1.MLOTAB IPORIG = IPORIG + 1 XRD = XZERO XRV = XZERO * * Recherche des termes de retard pour dimensionner la * partie variable du tableau XPALA * DO 20 J=1,NIND2 TYPIND = MTAB1.MTABTI(J) IF (TYPIND.EQ.'MOT ') THEN IP = MTAB1.MTABII(J) ID = IPCHAR(IP) IFI = IPCHAR(IP+1) IL1 = IFI - ID IF (IL1.EQ.ILC1) THEN IF (CHAI1.EQ.ICHARA(ID:IFI-1)) THEN TYPOBJ = MTAB1.MTABTV(J) IF (TYPOBJ.EQ.'FLOTTANT') THEN XRD = MTAB1.RMTABV(J) ENDIF ENDIF ELSE IF (IL1.EQ.ILC2) THEN IF (CHAI2.EQ.ICHARA(ID:IFI-1)) THEN TYPOBJ = MTAB1.MTABTV(J) IF (TYPOBJ.EQ.'FLOTTANT') THEN XRV = MTAB1.RMTABV(J) ENDIF ENDIF ENDIF ENDIF 20 CONTINUE XAUX1 = XRD / XPDTS2 XAUX2 = XAUX1 + (XAUX1 / 1000.) ND = INT(XAUX2) + 1 XAUX3 = XRV / XPDTS2 XAUX4 = XAUX3 + (XAUX3 / 1000.) NV = INT(XAUX4) + 2 NMAX = MAX(ND,NV) NXX = NXX + NMAX SEGDES,MTAB1 ENDIF ENDIF 10 CONTINUE if(nbesc.ne.0)SEGDES,IPILOC NX = 1 + NXX + (6 * IPORIG) * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales