Télécharger chalvs.eso

Retour à la liste

Numérotation des lignes :

chalvs
  1. C CHALVS SOURCE CB215821 26/03/10 21:15:07 12487
  2.  
  3. C=======================================================================
  4. C= C H A L V S =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= =
  10. C= Parametres : (E)=Entree (S)=Sortie =
  11. C= ------------ =
  12. C= IPMODE (E) Pointeur sur le segment MMODEL de la structure =
  13. C= IFORMU (E) Formulation associee au MMODEL de la structure =
  14. C= ITYPEF (E) Type(Famille) des EF du MMODEL de la structure =
  15. C= IPCHPO (E) Pointeur sur le CHPOINT de sources (puits) aux =
  16. C= noeuds de la structure (champ variable) =
  17. C= S1 (E) Valeur de la source (FLOTTANT = champ constant) =
  18. C= IPGEOM (E) Pointeur sur le MAILLAGE sur lequel s'applique S1 =
  19. C= IPCHEL (E) Pointeur sur le segment MCHAML de sources donnees =
  20. C= en chaque element de la structure (champ variable) =
  21. C= IPCHSO (S) Pointeur sur le champ de sources volumiques =
  22. C= ISUPSO (S) Support du champ de sources volumiques =
  23. C=======================================================================
  24.  
  25. SUBROUTINE CHALVS (IPMODE,IFORMU,ITYPEF, IPCHPO,S1,IPGEOM,IPCHEL,
  26. & IPCHSO,ISUPSO)
  27.  
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30.  
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34.  
  35. c* -INC SMMODEL
  36. c* -INC SMCHPOI
  37.  
  38. IPCHSO = 0
  39. ISUPSO = 0
  40.  
  41. C 1 - Sources sous forme d'un MCHAML
  42. C Determination du support :
  43. C =======================================================
  44. IF (IPCHEL.NE.0) THEN
  45. IPCHSO = IPCHEL
  46. CALL QUESUP(IPMODE,IPCHSO,0,0,iok,ISUPSO)
  47. IF (IERR.NE.0 .OR. iok.EQ.9999) THEN
  48. IPCHSO = 0
  49. CALL ERREUR(21)
  50. RETURN
  51. ENDIF
  52. ISUP_Z = ISUPSO
  53. IPCH_Z = IPCHSO
  54.  
  55. C En massif, on passe aux points d'integration (MASSE ou GAUSS
  56. C selon la formulation) si le champ est aux noeuds ou au gravite
  57. C Si le champ a un autre support que NOEUD ou GRAVITE, on ne change
  58. C pas le support a MASSE pour l'instant.
  59. IF (ITYPEF.EQ.1) THEN
  60. IF (ISUPSO.EQ.1 .OR. ISUPSO.EQ.2) THEN
  61. C* Rappel : diffusion = thermique (en attendant retour a "mecanique")
  62. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2 .OR. IFORMU.EQ.3) THEN
  63. ISUPSO = 6
  64. ELSE
  65. c* Avant on mettait au support RIGIDITE : ISUPSO = 3
  66. c* Maintenant on met au support MASSE : ISUPSO = 4
  67. ISUPSO = 4
  68. ENDIF
  69. ENDIF
  70.  
  71. ELSE
  72. ISUPSO = 6
  73. ENDIF
  74.  
  75. IF (ISUP_Z.NE.ISUPSO) THEN
  76. CALL CHASUP(IPMODE,IPCH_Z,IPCHSO,iok,ISUPSO)
  77. IF (IERR.NE.0 .OR. iok.NE.0) THEN
  78. IPCHSO = 0
  79. CALL ERREUR(21)
  80. RETURN
  81. ENDIF
  82. ENDIF
  83. ELSE
  84.  
  85. C 2 - Sources constantes (FLOTTANT) sur un MAILLAGE
  86. C Sources mises sous forme d'un CHPOINT puis
  87. C Transfert du CHPOINT en MCHAML au support adhoc
  88. C =======================================================
  89. C Les composantes sont fonction de la formulation !
  90. IF (IPGEOM.NE.0) THEN
  91. IF (ITYPEF.EQ.2) THEN
  92. CALL ECRREE(S1)
  93. CALL ECRCHA('QSUP')
  94. CALL ECRREE(S1)
  95. CALL ECRCHA('QVOL')
  96. CALL ECRREE(S1)
  97. CALL ECRCHA('QINF')
  98. CALL ECRENT(3)
  99. C* ELSE IF (ITYPEF.EQ.1 .OR. ITYPEF.EQ.3) THEN
  100. ELSE
  101. CALL ECRREE(S1)
  102. CALL ECRCHA('QVOL')
  103. CALL ECRENT(1)
  104. ENDIF
  105. CALL ECROBJ('MAILLAGE',IPGEOM)
  106. CALL MANUCH
  107. IF (IERR.NE.0) RETURN
  108. CALL LIROBJ('CHPOINT',IPCH_Z,1,iok)
  109. IF (IERR.NE.0) RETURN
  110. IPCHPO = IPCH_Z
  111.  
  112. C 3 - Sources sous forme d'un CHPOINT
  113. C Transfert du CHPOINT en MCHAML au support adhoc
  114. C =======================================================
  115. ELSE
  116. IPCH_Z = 0
  117. ENDIF
  118.  
  119. C Changement en MCHAML au support adapte du modele (commun a 2 et 3) :
  120. C* En fait on devrait directement creer le MCHAML sans passer par le CHPOINT...
  121. IF (ITYPEF.EQ.1) THEN
  122. C* Rappel : diffusion = thermique (en attendant retour a "mecanique")
  123. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2 .OR. IFORMU.EQ.3) THEN
  124. ISUPSO = 6
  125. ELSE
  126. c* On met au support MASSE : ISUPSO = 4 (integration plus "precise")
  127. C* Avant on prenait RIGIDITE : ISUPSO = 3
  128. ISUPSO = 4
  129. ENDIF
  130. ELSE
  131. ISUPSO = 6
  132. ENDIF
  133. CALL CHAME1(0,IPMODE,IPCHPO,'VOLUMIQUE',IPCHSO,ISUPSO)
  134. IF (IERR.NE.0) RETURN
  135. if (ipch_z.ne.0) call dtchpo(ipch_z)
  136.  
  137. ENDIF
  138.  
  139. RETURN
  140. END
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  

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