1 : C DYPOL0 SOURCE CHAT 06/06/01 21:16:30 5450 2 : SUBROUTINE DYPOL0(ITAB1,XPDT,NX,NI) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8(A-H,O-Z) 5 : *--------------------------------------------------------------------* 6 : * * 7 : * Operateur DYNE : algorithme de Fu - de Vogelaere * 8 : * ________________________________________________ * 9 : * * 10 : * Recherche du nombre de parametres d'une liaison POLYNOMIALE * 11 : * * 12 : * Parametres: * 13 : * * 14 : * e ITAB1 Table decrivant une liaison POLYNOMIALE * 15 : * e XPDT Valeur du pas de temps * 16 : * s NX Nombre de valeurs reelles caracterisant la liaison * 17 : * s NI Nombre de points intervenant dans la liaison * 18 : * * 19 : * Auteur, date de creation: * 20 : * * 21 : * Denis ROBERT, le 23 avril 1992. * 22 : * * 23 : *--------------------------------------------------------------------* 24 : -INC CCOPTIO 25 : -INC CCNOYAU 26 : -INC SMTABLE 27 : -INC CCASSIS 28 : * 29 : LOGICAL L0,L1 30 : CHARACTER*(8) TYPIND, TYPOBJ, MONOBJ 31 : CHARACTER*(18) CHAI1 32 : CHARACTER*(14) CHAI2 33 : PARAMETER (XZERO = 0.D0) 34 : * voir avec DYNE12 35 : ILC1 = 18 36 : ILC2 = 14 37 : 38 : DATA CHAI1 /'RETARD_DEPLACEMENT'/ 39 : DATA CHAI2 /'RETARD_VITESSE'/ 40 : NXX = 0 41 : IPORIG = 0 42 : NI = 0 43 : XPDTS2 = 0.5 * XPDT 44 : * 45 : MTABLE = ITAB1 46 : SEGACT MTABLE 47 : NIND1 = MLOTAB 48 : * Nombre de points "support" et "origine" 49 : NI = NIND1 - 3 50 : * 51 : * Recherche des infos dans la table LIAISON_ELEMENTAIRE 52 : * 53 : if(nbesc.ne.0) segact ipiloc 54 : DO 10 I = 1,NIND1 55 : TYPIND = MTABTI(I) 56 : * 57 : * Cas d'un point "origine" 58 : * 59 : IF (TYPIND.EQ.'POINT ') THEN 60 : TYPOBJ = MTABTV(I) 61 : IF (TYPOBJ.EQ.'TABLE ') THEN 62 : MTAB1 = MTABIV(I) 63 : SEGACT,MTAB1 64 : NIND2 = MTAB1.MLOTAB 65 : IPORIG = IPORIG + 1 66 : XRD = XZERO 67 : XRV = XZERO 68 : * 69 : * Recherche des termes de retard pour dimensionner la 70 : * partie variable du tableau XPALA 71 : * 72 : DO 20 J=1,NIND2 73 : TYPIND = MTAB1.MTABTI(J) 74 : IF (TYPIND.EQ.'MOT ') THEN 75 : IP = MTAB1.MTABII(J) 76 : ID = IPCHAR(IP) 77 : IFI = IPCHAR(IP+1) 78 : IL1 = IFI - ID 79 : IF (IL1.EQ.ILC1) THEN 80 : IF (CHAI1.EQ.ICHARA(ID:IFI-1)) THEN 81 : TYPOBJ = MTAB1.MTABTV(J) 82 : IF (TYPOBJ.EQ.'FLOTTANT') THEN 83 : XRD = MTAB1.RMTABV(J) 84 : ENDIF 85 : ENDIF 86 : ELSE IF (IL1.EQ.ILC2) THEN 87 : IF (CHAI2.EQ.ICHARA(ID:IFI-1)) THEN 88 : TYPOBJ = MTAB1.MTABTV(J) 89 : IF (TYPOBJ.EQ.'FLOTTANT') THEN 90 : XRV = MTAB1.RMTABV(J) 91 : ENDIF 92 : ENDIF 93 : ENDIF 94 : ENDIF 95 : 20 CONTINUE 96 : XAUX1 = XRD / XPDTS2 97 : XAUX2 = XAUX1 + (XAUX1 / 1000.) 98 : ND = INT(XAUX2) + 1 99 : XAUX3 = XRV / XPDTS2 100 : XAUX4 = XAUX3 + (XAUX3 / 1000.) 101 : NV = INT(XAUX4) + 2 102 : NMAX = MAX(ND,NV) 103 : NXX = NXX + NMAX 104 : SEGDES,MTAB1 105 : ENDIF 106 : ENDIF 107 : 10 CONTINUE 108 : if(nbesc.ne.0)segdes ipiloc 109 : NX = 1 + NXX + (6 * IPORIG) 110 : * 111 : END 112 : 113 : 114 :
© Cast3M 2003 - All rights reserved.
Disclaimer