Télécharger form.eso

Retour à la liste

Numérotation des lignes :

form
  1. C FORM SOURCE OF166741 24/06/06 21:15:02 11934
  2.  
  3. C=======================================================================
  4. C= F O R M =
  5. C= ------- =
  6. C= =
  7. C= FONCTEUR CAST3M 'FORME' DE MISE A JOUR DE CONFIGURATIONS : =
  8. C= ---------------------------------------------------------- =
  9. C= (CONF2) (CAR2) = 'FORME' (CONF1) (CHPO1) (MODL1 CAR1) ; =
  10. C= =
  11. C= UTILISATION : SANS OPERANDE MET DANS LA PILE LE SEGMENT MCOORD
  12. C= : AVEC UN OBJET CONFIGURA, ACTIVE CETTE CONFIGURATION
  13. C= : AVEC UN CHAMPOINT, CREE LES COORD = COURANTES+DEFORMEE
  14. C= PUIS ACTIVE CETTE CONFIG
  15. C= : AVEC CHPOINT ET CONFIGUR CREE ET ACTIVE LA CONFIGU =
  16. C= CONFIGUR + DEFORMEE ISSU DE CHPOINT.
  17. C= SERT A NOMMER, ACTIVER OU CREER UNE CONFIGURATION C'EST-A-DIRE UN
  18. C= CHAMP DE COORDONNEES SUPPORT.
  19. C= =
  20. C= ARGUMENTS : =
  21. C= ----------- =
  22. C= CONF1 (CONFIGU) Champ de coordonnees support (configuration) =
  23. C= CHPO1 (CHPOINT) Champ de deplacements sur la structure =
  24. C= MODL1 (MMODEL) Modele de la structure etudiee (facultatif) =
  25. C= CAR1 (MCHAML) Caracteristiques geometriques (facultatif) =
  26. C= Sous-type 'CARACTERISTIQUES' =
  27. C= =
  28. C= RESULTATS : =
  29. C= ----------- =
  30. C= CONF2 (CONFIGU) Champ de coordonnees support actualise =
  31. C= CAR2 (MCHAML) Caracteristiques geometriques actualisees =
  32. C=======================================================================
  33.  
  34. SUBROUTINE FORM
  35.  
  36. IMPLICIT INTEGER(I-N)
  37. IMPLICIT REAL*8 (A-H,O-Z)
  38.  
  39.  
  40. -INC PPARAM
  41. -INC CCOPTIO
  42. -INC CCASSIS
  43.  
  44. -INC SMCOORD
  45. POINTEUR MXCA.MCOORD
  46. -INC SMELEME
  47. -INC SMCHPOI
  48.  
  49. LOGICAL BUR
  50. CHARACTER*(LOCOMP) MDDL
  51. CHARACTER*(LOCOMP) NODEF(3),NODEG(3)
  52.  
  53. DATA NODEF / 'UX ','UY ','UZ ' /
  54. DATA NODEG / 'UR ','UZ ','UT ' /
  55.  
  56. C * attention aux assistants ....
  57. if (NBESC.NE.0) then
  58. if (iimpi .eq. 1234)
  59.  
  60. & write(ioimp,*) ' il faut bloquer les assistants'
  61. ith=0
  62. ith=oothrd
  63. if(ith.ne.0) then
  64. call erreur (1010)
  65. return
  66. endif
  67. do ith=1,nbesc
  68. mesins= mescl(ith)
  69. segact mesins
  70. 20 if(nbins.ne.0) then
  71. * write(6,*)'on attend la fin des esclaves ith nbins',ith,nbins
  72. segdes mesins*record
  73. segact mesins*(mod,ecr=1)
  74. go to 20
  75. endif
  76. segdes mesins*record
  77. enddo
  78. mestra=imestr
  79. SEGACT MESTRA*MOD
  80. if (iimpi .eq. 1234)
  81. & write(ioimp,*) ' assistants en attente'
  82. end if
  83.  
  84. SEGACT,MCOORD*mod
  85. c* NBPTX=XCOOR(/1)/idimp1
  86. c* NBPTX=NBPTS
  87.  
  88. MCOO = 0
  89. IPTC = 0
  90. IPMODL = 0
  91.  
  92. CALL LIROBJ('CONFIGUR',MCOO,0,IRET)
  93. CALL LIROBJ('CHPOINT ',IPTC,0,IRET)
  94. CALL LIROBJ('MMODEL ',IPMODL,0,IRET)
  95. IF (IERR.NE.0) GOTO 10
  96.  
  97. IF (IPTC .NE. 0) THEN
  98. CALL ACTOBJ('CHPOINT ',IPTC,1)
  99. ENDIF
  100.  
  101. C= Cas d'un MCHAML de CARACTERISTIQUES a TRANSPORTER
  102. IF (IPMODL .NE. 0) THEN
  103. IF (IPTC.EQ.0) THEN
  104. MOTERR(1:8)='CHPOINT'
  105. CALL ERREUR(37)
  106. RETURN
  107. ENDIF
  108. CALL LIROBJ('MCHAML ',IPIN,1,IRET)
  109. IF (IERR .NE. 0) GOTO 10
  110.  
  111. CALL ACTOBJ('MMODEL ',IPMODL,1)
  112. CALL ACTOBJ('MCHAML ',IPIN ,1)
  113.  
  114. CALL REDUAF(IPIN,IPMODL,IPCH1,0,IR,KER)
  115. IF (IR .NE. 1) CALL ERREUR(KER)
  116. IF (IERR .NE. 0) GOTO 10
  117.  
  118. C Mise a jour des caracteristiques materielles
  119. CALL FORMCH(IPMODL,IPCH1,IPTC,IRET,IPCH2)
  120. IF (IRET.EQ.0.OR.IERR.NE.0) GOTO 10
  121. CALL ACTOBJ('MCHAML ',IPCH2,1)
  122. CALL ECROBJ('MCHAML ',IPCH2)
  123. IF (IERR .NE. 0) GOTO 10
  124. c-dbg call zpchel(ipch1,0)
  125. c-dbg call zpchel(ipch2,0)
  126. ENDIF
  127.  
  128. idimp1=IDIM+1
  129. IF (IPTC.EQ.0) THEN
  130. IF (MCOO.EQ.0) THEN
  131. SEGINI,MXCA=MCOORD
  132. CALL ECROBJ('CONFIGUR',MXCA)
  133. ELSE
  134. MXCA=MCOO
  135. SEGACT,MXCA
  136. NBPTA=MXCA.XCOOR(/1)/idimp1
  137. IF (NBPTA.NE.NBPTX) THEN
  138. c* NBPTS=NBPTX
  139. SEGADJ,MXCA
  140. DO i=NBPTA*idimp1+1,NBPTS*idimp1
  141. MXCA.XCOOR(i)=XCOOR(i)
  142. ENDDO
  143. ENDIF
  144. MCOORD=MXCA
  145. ENDIF
  146.  
  147. ELSE
  148. C Mise a jour des coordonnes en ajoutant le champ de deplacement
  149. IF (MCOO.NE.0) THEN
  150. MXCA=MCOO
  151. SEGACT,MXCA
  152. NBPTA=MXCA.XCOOR(/1)/idimp1
  153. IF (NBPTA.NE.NBPTX) THEN
  154. c* NBPTS=NBPTX
  155. SEGADJ,MXCA
  156. DO i=NBPTA*idimp1+1,NBPTS*idimp1
  157. MXCA.XCOOR(i)=XCOOR(i)
  158. ENDDO
  159. ENDIF
  160. MCOORD=MXCA
  161. ENDIF
  162.  
  163. IF (IFOMOD.EQ.0.OR.IFOMOD.EQ.1) THEN
  164. BUR=.TRUE.
  165. NCMAX=2
  166. ELSE IF (IFOMOD.EQ.4.OR.IFOMOD.EQ.5) THEN
  167. BUR=.TRUE.
  168. NCMAX=1
  169. ELSE IF (IFOMOD.EQ.-1) THEN
  170. BUR=.FALSE.
  171. NCMAX=2
  172. ELSE IF (IFOMOD.EQ.3) THEN
  173. BUR=.FALSE.
  174. NCMAX=1
  175. ELSE
  176. BUR=.FALSE.
  177. NCMAX=3
  178. ENDIF
  179.  
  180. SEGINI,MXCA=MCOORD
  181. MCHPOI=IPTC
  182. DO iSoup=1,IPCHP(/1)
  183. MSOUPO=IPCHP(iSoup)
  184. MPOVAL=IPOVAL
  185. IPT2=IGEOC
  186. NbElt=IPT2.NUM(/2)
  187. DO IC=1,NOCOMP(/2)
  188. MDDL=NOCOMP(IC)
  189. DO INUM=1,NCMAX
  190. IF (BUR) THEN
  191. IF (NODEG(INUM).EQ.MDDL) GOTO 81
  192. ELSE
  193. IF (NODEF(INUM).EQ.MDDL) GOTO 81
  194. ENDIF
  195. ENDDO
  196. GOTO 70
  197. 81 DO iElt=1,NbElt
  198. IP=(IPT2.NUM(1,iElt)-1)*idimp1+INUM
  199. MXCA.XCOOR(IP)=MXCA.XCOOR(IP)+VPOCHA(iElt,IC)
  200. ENDDO
  201. 70 CONTINUE
  202. ENDDO
  203. ENDDO
  204. MCOORD=MXCA
  205. SEGDES,MCOORD
  206. CALL ECROBJ('CONFIGUR',MCOORD)
  207. ENDIF
  208.  
  209. 10 CONTINUE
  210. C * attention aux assistants ....
  211. if (NBESC.NE.0) then
  212. C * il faut liberer le segment de dialogue
  213. mestra=imestr
  214. SEGDES MESTRA
  215. end if
  216.  
  217. c return
  218. END
  219.  
  220.  
  221.  

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