Télécharger tab2my.eso

Retour à la liste

Numérotation des lignes :

tab2my
  1. C TAB2MY SOURCE PV 20/03/24 21:22:26 10554
  2. c
  3. SUBROUTINE TAB2MY(iin,iityp,iicpr,iout)
  4. *
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. *
  8. ************************************************************************
  9. *
  10. * FONCTION : "DEBOBINAGE"" D'UNE TABLE SPECIFIQUE
  11. * DANS UN SEGMENT MYTAB + PERFORMANT
  12. *
  13. * INPUT : iin : objet de type MTABLE
  14. * iityp : type de table = | 1 : BASE_MODALE
  15. * | 2 : LIAISONS_STATIQUES
  16. * | ...
  17. * iicpr (si non nul) : segment ICPR a remplir
  18. *
  19. * OUTPUT : iicpr : segment ICPR rempli
  20. * iout : segment MYTAB rempli
  21. *
  22. * REMARQUES : les objets en entree sont deja actifs
  23. * ipiloc est aussi deja actif
  24. * les sous-tables sont activees ici
  25. *
  26. * CREATION : BP, 12/12/2017
  27. *
  28. ************************************************************************
  29.  
  30.  
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC SMCOORD
  34. -INC SMTABLE
  35. -INC CCNOYAU
  36. -INC CCASSIS
  37. ************************************************************************
  38. * -INC TMYTAB
  39. *
  40. * SEGMENT POUR "DEBOBINER" UN OBJET DE TYPE 'TABLE'
  41. * D'UN SOUSTYPE PARTICULIER PRECISE PAR ITYTAB
  42. * Le but est de faciliter la programmation esope notamment en //
  43. *
  44. * ITYTAB = | BASE_MODALE
  45. * | LIAISONS_STATIQUES
  46. * | ... a completer
  47. *
  48. * KPTREP(i) = POINT_REPERE du ieme mode/solution statique
  49. * KDEFO(i) = DEFORMEE_MODALE / DEFORMEE
  50. * KICPR(#noeud POINT_REPERE) = i^eme mode
  51. * DDLLIA(i) = composante de la liaison statique
  52. * KPTLIA(i) = point en jeu dans la liaison statique
  53. *
  54.  
  55. SEGMENT MYTAB
  56. CHARACTER*24 ITYTAB
  57. INTEGER KPTREP(NMY),KDEFO(NMY)
  58. INTEGER KICPR(NMY2)
  59. CHARACTER*4 DDLLIA(NMY3)
  60. INTEGER KPTLIA(NMY3)
  61. ENDSEGMENT
  62. POINTEUR MYTAB1.MYTAB,MYTAB2.MYTAB,MYTAB3.MYTAB
  63.  
  64. ************************************************************************
  65.  
  66. c ICPR(ip)=nombre de fois ou l'on a vu le noeud POINT_LIAISON ip
  67. SEGMENT ICPR(nbpts)
  68.  
  69. CHARACTER*24 CHARIN
  70. CHARACTER*4 MOTDDL
  71.  
  72.  
  73. ************************************************************************
  74. * PRELIMINAIRES
  75. ************************************************************************
  76.  
  77. if(nbesc.ne.0) segact,ipiloc
  78.  
  79. * RECUP DE LA TABLE EN ENTREE (ACTIVE)
  80. MTABLE=iin
  81.  
  82. * CREATION DU MYTAB DE SORTIE
  83. NMY=MLOTAB
  84. NMY2=nbpts
  85. IF (iityp.EQ.1) THEN
  86. NMY3=0
  87. ELSEIF (iityp.EQ.2) THEN
  88. NMY3=NMY
  89. ICPR=iicpr
  90. ELSE
  91. CALL ERREUR(5)
  92. RETURN
  93. ENDIF
  94. SEGINI,MYTAB
  95. iout=MYTAB
  96.  
  97. * TYPE DE LA TABLE EN ENTREE ET AIGUILLAGE
  98. IF (iityp.EQ.1) THEN
  99. ITYTAB='BASE_MODALE'
  100. GOTO 100
  101. ELSEIF (iityp.EQ.2) THEN
  102. ITYTAB='LIAISONS_STATIQUES'
  103. GOTO 200
  104. ENDIF
  105.  
  106.  
  107. ************************************************************************
  108. * TABLE BASE_MODALE
  109. ************************************************************************
  110.  
  111. 100 CONTINUE
  112.  
  113. NMY=0
  114. C BOUCLE SUR LES MODES
  115. DO 101 im=1,MLOTAB
  116.  
  117. IF (MTABTI(im).ne.'ENTIER ') GOTO 101
  118. jm=MTABII(im)
  119. c MTABTV.eq.'TABLE' par construction : on ouvre la sous-table
  120. MTAB1=MTABIV(im)
  121. SEGACT,MTAB1
  122. NMY=NMY+1
  123.  
  124. c BOUCLE SUR LES INFOS DU MODE jm CONTENUES DANS MTAB1
  125. IF(MTAB1.MLOTAB.gt.0) THEN
  126. DO 102 im1=1,MTAB1.MLOTAB
  127.  
  128. IF(MTAB1.MTABTI(im1).NE.'MOT ') GOTO 102
  129. c recup du MOT indice dans CHARIN
  130. ip=MTAB1.MTABII(im1)
  131. id=IPCHAR(IP)
  132. ifi=IPCHAR(IP+1)-1
  133. CHARIN=ICHARA(id:ifi)
  134. c print *,'mode',jm,'info #',im1,CHARIN
  135. IF(CHARIN.EQ.'POINT_REPERE') THEN
  136. iprep=MTAB1.MTABIV(im1)
  137. KPTREP(jm)=iprep
  138. KICPR(iprep)=jm
  139. ELSEIF(CHARIN.EQ.'DEFORMEE_MODALE') THEN
  140. KDEFO(jm)=MTAB1.MTABIV(im1)
  141. ENDIF
  142.  
  143. 102 CONTINUE
  144. ENDIF
  145.  
  146. 101 CONTINUE
  147. C FIN DE BOUCLE SUR LES MODES
  148.  
  149. SEGADJ,MYTAB
  150. GOTO 999
  151.  
  152.  
  153. ************************************************************************
  154. * TABLE LIAISONS_STATIQUES
  155. ************************************************************************
  156.  
  157. 200 CONTINUE
  158.  
  159. NMY=0
  160. C BOUCLE SUR LES MODES
  161. DO 201 im=1,MLOTAB
  162.  
  163. IF (MTABTI(im) .ne. 'ENTIER ') GOTO 201
  164. jm=MTABII(im)
  165. c MTABTV.eq.'TABLE' par construction : on ouvre la sous-table
  166. MTAB1=MTABIV(im)
  167. SEGACT,MTAB1
  168. NMY=NMY+1
  169.  
  170. c BOUCLE SUR LES INFOS DU MODE jm CONTENUES DANS MTAB1
  171. IF(MTAB1.MLOTAB .gt. 0) THEN
  172. DO 202 im1=1,MTAB1.MLOTAB
  173.  
  174. IF(MTAB1.MTABTI(im1).NE.'MOT ') GOTO 202
  175. c recup du MOT indice dans CHARIN (necessite ipiloc)
  176. ip=MTAB1.MTABII(im1)
  177. id=IPCHAR(IP)
  178. ifi=IPCHAR(IP+1)-1
  179. CHARIN=ICHARA(id:ifi)
  180. IF(CHARIN.EQ.'POINT_REPERE') THEN
  181. iprep=MTAB1.MTABIV(im1)
  182. KPTREP(jm)=iprep
  183. KICPR(iprep)=jm
  184. ELSEIF(CHARIN.EQ.'DEFORMEE') THEN
  185. KDEFO(jm)=MTAB1.MTABIV(im1)
  186. ELSEIF(CHARIN.EQ.'POINT_LIAISON') THEN
  187. ipl1=MTAB1.MTABIV(im1)
  188. KPTLIA(jm) = ipl1
  189. ICPR(ipl1) = ICPR(ipl1) + 1
  190. ELSEIF(CHARIN.EQ.'DDL_LIAISON') THEN
  191. ip=MTAB1.MTABIV(im1)
  192. id=IPCHAR(IP)
  193. ifi=IPCHAR(IP+1)-1
  194. MOTDDL=ICHARA(id:ifi)
  195. DDLLIA(jm) = MOTDDL
  196. ENDIF
  197.  
  198. 202 CONTINUE
  199. ENDIF
  200.  
  201.  
  202. 201 CONTINUE
  203. C FIN DE BOUCLE SUR LES MODES
  204.  
  205. NMY3=NMY
  206. SEGADJ,MYTAB
  207. GOTO 999
  208.  
  209.  
  210. ************************************************************************
  211. * FIN DU SOUS-PROGRAMME
  212. ************************************************************************
  213. 999 CONTINUE
  214. c SEGADJ,MYTAB
  215. c attention a bien desactiver ipiloc si ASSISTANT et pas sinon
  216. if (nbesc.ne.0) SEGDES,IPILOC
  217. RETURN
  218. END
  219.  
  220.  
  221.  
  222.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales