Télécharger dmtd.eso

Retour à la liste

Numérotation des lignes :

dmtd
  1. C DMTD SOURCE CB215821 25/04/23 21:15:16 12247
  2. SUBROUTINE DMTD
  3. C-----------------------------------------------------------------------
  4. C -1 t
  5. C Calcul du CHPOIN scalaire D M D
  6. C Somme des termes de chaque matrice elementaire pour former
  7. C un chpoin dont le support géométrique est le maillage TADOM.CENTRE
  8. C-----------------------------------------------------------------------
  9. C
  10. C---------------------------
  11. C Phrase d'appel (GIBIANE) :
  12. C---------------------------
  13. C
  14. C CHP1 = 'DMTD' MMODEL RIG1 ;
  15. C
  16. C------------------------
  17. C Operandes et resultat :
  18. C------------------------
  19. C
  20. C MMODEL : MODELE DARCY.
  21. C RIG1 : Matrices hybrides elementaires de DARCY crees par MHYB.
  22. C CHP1 : CHPO centre de composante SCAL coef par élément.
  23. C
  24. C-----------------------------------------------------------------------
  25. C
  26. C Langage : ESOPE + FORTRAN77
  27. C
  28. C
  29. C-----------------------------------------------------------------------
  30. IMPLICIT INTEGER(I-N)
  31. IMPLICIT REAL*8 (A-H,O-Z)
  32. *
  33.  
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC SMCHPOI
  37. -INC SMELEME
  38. -INC SMRIGID
  39. -INC SMCOORD
  40. -INC SMTABLE
  41. -INC SMMODEL
  42. *
  43. LOGICAL LOGRE,LOGIN
  44. CHARACTER*8 TAPIND,TYPOBJ,CHARRE,LETYPE
  45. *
  46. * Initialisations
  47. *
  48. IVALIN = 0
  49. XVALIN = 0.D0
  50. LOGIN = .TRUE.
  51. IOBIN = 0
  52. TAPIND = 'MOT '
  53. *
  54. *
  55. * Lecture du MMODEL
  56. *
  57. CALL LIROBJ('MMODEL',IPMODE,1,IRET)
  58. IF(IERR.NE.0)RETURN
  59. MMODEL=IPMODE
  60. SEGACT MMODEL
  61. N1=KMODEL(/1)
  62. DO 7 I=1,N1
  63. IMODEL=KMODEL(I)
  64. SEGACT IMODEL
  65. IF(FORMOD(1).NE.'DARCY')THEN
  66. MOTERR(1:16) = 'DARCY '
  67. CALL ERREUR(719)
  68. RETURN
  69. ENDIF
  70. 7 CONTINUE
  71. C
  72. C on récupère la table DOMAINE à partir du modèle
  73. C
  74. IPTABL = 0
  75. CALL LEKMOD(MMODEL,IPTABL,IRET)
  76. IF (IERR.NE.0) RETURN
  77. TYPOBJ = 'MAILLAGE'
  78. CALL LEKTAB(IPTABL,'ELTFA',IOBRE)
  79. IF (IERR.NE.0) RETURN
  80. IELTFA = IOBRE
  81. CALL LEKTAB(IPTABL,'CENTRE',IOBRE)
  82. IF (IERR.NE.0) RETURN
  83. ICENTR = IOBRE
  84. *
  85. * Lecture de RIGIDITE
  86. *
  87. CALL LIROBJ('RIGIDITE',IPRIGI,1,IRET)
  88. IF (IERR.NE.0) RETURN
  89. MRIGID = IPRIGI
  90. *
  91. *
  92. *
  93. * Test du sous-type de la matrice de rigiditée récupérée
  94. *
  95. SEGACT MRIGID
  96. LETYPE = MTYMAT
  97. IF (LETYPE.NE.'DARCY') THEN
  98. MOTERR(1:8) = 'RIGIDITE'
  99. MOTERR(9:16) = 'DARCY '
  100. CALL ERREUR(79)
  101. SEGDES MRIGID
  102. GOTO 100
  103. ENDIF
  104. *
  105. * Controle des pointeurs de MELEME de la rigidité
  106. *
  107. NRIGEL=IRIGEL(/2)
  108. MELEME=IELTFA
  109. SEGACT MELEME
  110. NBSOUS=LISOUS(/1)
  111. IF(NBSOUS.EQ.0)THEN
  112. IF((NRIGEL.NE.1).OR.(IRIGEL(1,1).NE.MELEME))THEN
  113. MOTERR(1:8) = 'DARCY '
  114. MOTERR(9:16) = 'ELTFA '
  115. INTERR(1) = 1
  116. CALL ERREUR(698)
  117. SEGDES MRIGID
  118. GOTO 100
  119. ENDIF
  120. ELSE
  121. IF(NRIGEL.NE.NBSOUS)THEN
  122. MOTERR(1:8) = 'DARCY '
  123. MOTERR(9:16) = 'ELTFA '
  124. INTERR(1) = 1
  125. CALL ERREUR(698)
  126. SEGDES MRIGID
  127. GOTO 100
  128. ENDIF
  129. DO 10 ISOUS=1,NBSOUS
  130. IF (LISOUS(ISOUS).NE.IRIGEL(1,ISOUS)) THEN
  131. MOTERR(1:8) = 'DARCY '
  132. MOTERR(9:16) = 'ELTFA '
  133. INTERR(1) = ISOUS
  134. CALL ERREUR(698)
  135. SEGDES MRIGID
  136. GOTO 100
  137. ENDIF
  138. 10 CONTINUE
  139. ENDIF
  140. *
  141. * Construction de MCHPOI
  142. *
  143. *
  144. IPT1=ICENTR
  145. SEGACT IPT1
  146. NPN=IPT1.NUM(/2)
  147. NSOUPO=1
  148. NAT=1
  149. SEGINI MCHPOI
  150. MTYPOI=' '
  151. MOCHDE=' CHPOIN CREE PAR DMTD '
  152. IFOPOI=IFOUR
  153. JATTRI(1)=2
  154. NC=1
  155. SEGINI MSOUPO
  156. IPCHP(1)=MSOUPO
  157. NOCOMP(1)='SCAL'
  158. NOHARM(1)=0
  159. IGEOC=ICENTR
  160. N=NPN
  161. SEGINI MPOVAL
  162. IPOVAL=MPOVAL
  163. NB=N
  164. CALL INITD(VPOCHA,NB,0.D0)
  165. C
  166. C Calcul de la somme par element
  167. C
  168. ITELEM=0
  169. DO 50 ISOUS=1,NRIGEL
  170. xMATRI=IRIGEL(4,ISOUS)
  171. SEGACT xMATRI
  172. NELRIG=re(/3)
  173. DO 60 IEL=1,NELRIG
  174. ITELEM=ITELEM+1
  175. * XMATRI=IMATTT(IEL)
  176. * SEGACT XMATRI
  177. NLIGRD=RE(/1)
  178. NLIGRP=RE(/2)
  179. CONSD=0.D0
  180. DO 40 J=1,NLIGRP
  181. DO 30 I=1,NLIGRD
  182. CONSD=CONSD+RE(I,J,iel)
  183. 30 CONTINUE
  184. 40 CONTINUE
  185. VPOCHA(ITELEM,1)=CONSD
  186. * SEGDES XMATRI
  187. 60 CONTINUE
  188. SEGDES xMATRI
  189. 50 CONTINUE
  190. SEGDES MRIGID
  191. CALL ECROBJ('CHPOINT',MCHPOI)
  192. *
  193. * Ménage
  194. *
  195. SEGDES MPOVAL,MSOUPO,MCHPOI
  196. 100 CONTINUE
  197. RETURN
  198. END
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  

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