Télécharger dscmat.eso

Retour à la liste

Numérotation des lignes :

dscmat
  1. C DSCMAT SOURCE OF166741 26/02/23 21:15:01 12480
  2.  
  3. *----------------------------------------------------------------------*
  4. * DESCRIPTEUR DE LA RIGIDITE POUR LA FORMULATION 'HHO' *
  5. *----------------------------------------------------------------------*
  6. * ENTREES : *
  7. * --------- *
  8. * modHHO Modele elementaire (IMODEL) de formulation HHO *
  9. * *
  10. * SORTIES : *
  11. * --------- *
  12. * IPDSCR Descripteur (DESCR) de la rigidite du sous-modele *
  13. * LRE Dimension de la matrice de rigidite (symetrique) *
  14. * iret = 0 si ok, = num.erreur sinon *
  15. *----------------------------------------------------------------------*
  16.  
  17. SUBROUTINE DSCMAT (modHHO, IPDSCR, LRE, iret)
  18.  
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8(A-H,O-Z)
  21.  
  22. -INC PPARAM
  23. -INC CCOPTIO
  24.  
  25. -INC CCHHOPA
  26. -INC CCHHOPR
  27.  
  28. -INC SMLENTI
  29. -INC SMMODEL
  30. POINTEUR nomidu.nomid, nomidf.nomid
  31. -INC SMRIGID
  32.  
  33. LOGICAL LDPGE
  34.  
  35. iret = 0
  36.  
  37. IPDSCR = 0
  38. LRE = 0
  39.  
  40. C- Premiere verification (Test de debogage a supprimer un jour)
  41. CALL HHONOB(modHHO, nobHHO)
  42. IF (nobHHO.LE.0) THEN
  43. moterr = 'DSCMAT(HHO): data not consistent !'
  44. call erreur(-385)
  45. iret = 5
  46. return
  47. END IF
  48.  
  49. imodel = modHHO
  50. c* segact,imodel <- actif en entree/sortie
  51.  
  52. C- Recuperation des donnees de infell en entree
  53. MFR = imodel.INFELE(13)
  54. CALL INFDPG(MFR,IFOUR,LDPGE,NDPGE)
  55. IF (LDPGE) THEN
  56. moterr = 'DSCMAT(HHO): PLAN GENE not implemented !'
  57. call erreur(-385)
  58. iret = 21
  59. RETURN
  60. END IF
  61.  
  62. C---- !!
  63. mlenti = imodel.IVAMOD(nobHHO+1)
  64. c* segact,mlenti
  65.  
  66. c* n_o_face = mlenti.lect(2)
  67. n_d_face = mlenti.lect(3)
  68. c* n_o_cell = mlenti.lect(4)
  69. n_d_cell = mlenti.lect(5)
  70. nb_faces = mlenti.lect(7)
  71. idifo = mlenti.lect(9)
  72. NBDDL = mlenti.lect(11)
  73. c-dbg write(ioimp,*) 'DSCMAT(HHO):',nb_faces,NBDDL
  74.  
  75. NDEPF = idifo * n_d_face
  76. NDEPC = idifo * n_d_cell
  77. LRE = NBDDL
  78.  
  79. IF (LRE .NE. imodel.INFELE(9)) then
  80. moterr = 'DSCMAT(HHO): LRE is strange'
  81. call erreur(-385)
  82. END IF
  83.  
  84. C REMPLISSAGE DU SEGMENT DESCRIPTEUR
  85. C
  86. C RECHERCHE DES NOMS D'INCONNUES ET DES DUAUX
  87. C
  88. nomidu = imodel.lnomid(1)
  89. ndepl = nomidu.lesobl(/2)
  90. c- ndum = nomidu.lesfac(/2)
  91.  
  92. nomidf = imodel.lnomid(2)
  93. nforc = nomidf.lesobl(/2)
  94. c- ndum = nomidf.lesfac(/2)
  95.  
  96. IF (NDEPL.EQ.0 .OR. NFORC.EQ.0 .OR. NDEPL.NE.NFORC) THEN
  97. moterr = 'DSCMAT(HHO): data inconsistent PRIMAL/DUAL (1)'
  98. call erreur(-385)
  99. iret = 5
  100. END IF
  101. IF (NDEPL.NE.(NDEPC+NDEPF)) THEN
  102. moterr = 'DSCMAT(HHO): data inconsistent PRIMAL/DUAL (2)'
  103. call erreur(-385)
  104. iret = 717
  105. END IF
  106. IF (NBDDL.NE.(NDEPC+(nb_faces*NDEPF))) THEN
  107. moterr = 'DSCMAT(HHO): data inconsistent PRIMAL/DUAL (3)'
  108. call erreur(-385)
  109. iret = 717
  110. END IF
  111. IF (iret.NE.0) RETURN
  112.  
  113. NLIGRP = LRE
  114. NLIGRD = LRE
  115. SEGINI,DESCR
  116.  
  117. iddl = 0
  118. c Noeud support de la cellule :
  119. INOE = 1
  120. DO ic = 1, NDEPC
  121. iddl = iddl + 1
  122. LISINC(iddl) = nomidu.LESOBL(ic)
  123. LISDUA(iddl) = nomidf.LESOBL(ic)
  124. NOELEP(iddl) = INOE
  125. NOELED(iddl) = INOE
  126. END DO
  127. c Noeuds supports des faces de la cellule :
  128. DO in = 1, nb_faces
  129. INOE = in + 1
  130. DO ic = 1, NDEPF
  131. iddl = iddl + 1
  132. LISINC(iddl) = nomidu.LESOBL(NDEPC+ic)
  133. LISDUA(iddl) = nomidf.LESOBL(NDEPC+ic)
  134. NOELEP(iddl) = INOE
  135. NOELED(iddl) = INOE
  136. END DO
  137. END DO
  138. C CAS DE LA DEFORMATION PLANE GENERALISEE
  139. c!! IF (LDPGE) THEN
  140. C!! INOE = NBNN
  141. c!! DO ic = (NDPGE-1),0,-1
  142. c!! iddl = iddl + 1
  143. c!! LISINC(iddl) = nomidu.LESOBL(NDEPL-ic)
  144. c!! LISDUA(iddl) = nomidf.LESOBL(NFORC-ic)
  145. c!! NOELEP(iddl) = INOE
  146. c!! NOELED(iddl) = INOE
  147. c!! END DO
  148. c!! END IF
  149. IF (iddl .NE. NBDDL) THEN
  150. ** AFinir MOTERR = 'DSCMAT(HHO): NBDDL inconsistent',iddl,nbddl
  151. MOTERR = 'DSCMAT(HHO): NBDDL inconsistent'
  152. CALL ERREUR(-385)
  153. iret = 717
  154. RETURN
  155. END IF
  156.  
  157. SEGDES,DESCR
  158. IPDSCR = DESCR
  159.  
  160. * RETURN
  161. END
  162.  
  163.  
  164.  

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