Télécharger nnor.eso

Retour à la liste

Numérotation des lignes :

nnor
  1. C NNOR SOURCE CB215821 20/11/25 13:34:50 10792
  2. SUBROUTINE NNOR
  3. ************************************************************************
  4. * NOM : NNOR
  5. * DESCRIPTION : La directive NNOR rend un objet unitaire au sens de la
  6. * norme infinie (par defaut) ou de la norme Euclidienne.
  7. ************************************************************************
  8. * APPELE PAR : pilot.eso
  9. ************************************************************************
  10. * SOUS-PROGRAMMES : norma3 => norme sup d'un objet CHPOINT
  11. * norma5 => norme sup d'un objet TABLE
  12. * normb3 => norme 2 d'un objet CHPOINT
  13. * normb5 => norme 2 d'un objet TABLE
  14. ************************************************************************
  15. * SYNTAXE (GIBIANE) :
  16. *
  17. * 1) NORME INFINIE
  18. *
  19. * NNOR ('INFI') OBJET1 ( | ('AVEC') | LMOTS1 ) ...
  20. * | 'SANS' |
  21. *
  22. * ... ('RORF' VAL1 'CREF' VAL2 'LCAR' VAL3) ;
  23. *
  24. *
  25. * 2) NORME EUCLIDIENNE
  26. *
  27. * NNOR 'EUCL' OBJET1 (RIGID1) ;
  28. *
  29. ************************************************************************
  30. *
  31. IMPLICIT INTEGER(I-N)
  32. IMPLICIT REAL*8(A-H,O-Z)
  33.  
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC SMTABLE
  37. -INC SMCHPOI
  38. *
  39. c REAL*8 VNOR,PGRAND,FLUI(3),COEFP,COEFPI,RET
  40. REAL*8 FLUI(3)
  41. *
  42. PARAMETER (NBTYPE = 2)
  43. PARAMETER (LCLEF = 5)
  44. PARAMETER (LNORM = 2)
  45. *
  46. CHARACTER*8 LISTYP(NBTYPE),MONTYP,CHA8
  47. CHARACTER*4 MOCLEF(LCLEF),MONORM(LNORM)
  48. CHARACTER*(LOCOMP) MOTCLE
  49. *
  50. DATA LISTYP/'CHPOINT ','TABLE '/
  51. DATA MOCLEF/'RORF','CREF','LCAR','AVEC','SANS'/
  52. DATA MONORM/'INFI','EUCL'/
  53.  
  54. IFLUI=0
  55. INORM=1
  56. MOTCLE = ' '
  57. *
  58. * LECTURE DU TYPE DE NORME
  59. * ========================
  60. ICODE = 0
  61. CALL LIRMOT(MONORM,LNORM,IVAL,ICODE)
  62. IF (IVAL .GT. 1) INORM=IVAL
  63. *
  64. *
  65. IF (INORM.EQ.1) THEN
  66. *
  67. * LECTURE DES MOTS-CLES
  68. * =====================
  69. 1 ICODE = 0
  70. CALL LIRMOT(MOCLEF,LCLEF,IVAL,ICODE)
  71. IF(IVAL.EQ.1 .OR. IVAL.EQ.2 .OR. IVAL.EQ.3) THEN
  72. CALL LIRREE(RET,1,IRETOU)
  73. IF(IERR.NE.0) RETURN
  74. FLUI(IVAL)=RET
  75. IFLUI=IFLUI + 2**IVAL
  76. ELSEIF (IVAL.EQ.4 .OR. IVAL.EQ.5) THEN
  77. MOTCLE=MOCLEF(IVAL)
  78. ELSE
  79. GOTO 2
  80. ENDIF
  81. GOTO 1
  82. *
  83. * LECTURE DE LA LISTE DES COMPOSANTES
  84. * ===================================
  85. 2 ICODE = 0
  86. CALL LIROBJ ('LISTMOTS',IPLMOT,ICODE,IRETOU)
  87. IF (IRETOU .EQ. 0) THEN
  88. IPLMOT = 0
  89. ELSE IF (MOTCLE .EQ. ' ') THEN
  90. * PAR DEFAUT, LES COMPOSANTES NOMMEES SONT LES COMPOSANTES
  91. * PRISES EN COMPTE (ET NON PAS LES COMPOSANTES EXCLUES)
  92. MOTCLE = 'AVEC'
  93. END IF
  94.  
  95. ELSEIF (INORM.EQ.2) THEN
  96. *
  97. * LECTURE DE LA MATRICE
  98. * =====================
  99. ICODE=0
  100. CALL LIROBJ('RIGIDITE',IRIG1,ICODE,IZRIG)
  101. *
  102. ENDIF
  103. *
  104. *
  105. * LECTURE DE L'OBJET
  106. * ==================
  107. CALL QUETYP(MONTYP,0,IRETOU)
  108. IF (IRETOU.EQ.0) THEN
  109. CALL ERREUR(533)
  110. RETURN
  111. ENDIF
  112.  
  113. CALL PLACE(LISTYP,NBTYPE,IPOS,MONTYP)
  114. IF(IPOS .EQ. 0)THEN
  115. MOTERR(1:8)=MONTYP
  116. CALL ERREUR(39)
  117. RETURN
  118. ENDIF
  119.  
  120. IF (IPOS.EQ.2) THEN
  121. CALL LIRTAB('BASE_DE_MODES',ITBAS,0,IRETOU)
  122. IF (IRETOU .NE. 0) THEN
  123. IPOINT = ITBAS
  124.  
  125. ELSE
  126. CALL LIRTAB('BASE_MODALE',IPOINT,0,IRETOU)
  127. IF (IRETOU.NE.0) THEN
  128. CHA8=' '
  129. CALL ACMO(IPOINT,'MODES',CHA8,ITBAS)
  130. IF (CHA8.NE.'TABLE' .OR. ITBAS .LE. 0) THEN
  131. CALL ERREUR(647)
  132. RETURN
  133. ENDIF
  134.  
  135. ELSE
  136. MOTERR(1:8)='TABLE'
  137. CALL ERREUR(302)
  138. RETURN
  139. ENDIF
  140. ENDIF
  141.  
  142. ELSE
  143. CALL LIROBJ(MONTYP,IPOINT,1,IRETOU)
  144. CALL ACTOBJ(MONTYP,IPOINT,1)
  145. C Copie du CHPOINT (OPERATEUR)
  146. MCHPOI=IPOINT
  147. SEGINI,MCHPO1=MCHPOI
  148. IPOINT=MCHPO1
  149. ENDIF
  150. IF (IERR.NE.0) RETURN
  151. *
  152. *
  153. * NORMALISATION
  154. * =============
  155. IF(IFLUI.EQ.0) THEN
  156. COEFP =0.D0
  157. COEFPI=0.D0
  158. ELSE IF(IFLUI.EQ.14) THEN
  159. IF(FLUI(3).EQ.0.D0) THEN
  160. CALL ERREUR(284)
  161. RETURN
  162. ENDIF
  163. COEFP =FLUI(1)*FLUI(2)*FLUI(2)/FLUI(3)
  164. COEFPI=FLUI(1)*FLUI(3)
  165. ELSE
  166. CALL ERREUR(284)
  167. * IL MANQUE DES VALEURS
  168. ENDIF
  169. *
  170. *
  171. * NORMALISATION D'UN "CHPOINT"
  172. IF (IPOS .EQ. 1) THEN
  173. IF (INORM.EQ.1) THEN
  174. CALL NORMA3 (IPOINT,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI,PGRAND)
  175. ELSEIF (INORM.EQ.2) THEN
  176. CALL NORMB3(IPOINT,IRIG1,VNOR)
  177. ENDIF
  178. *
  179. * NORMALISATION D'UNE TABLE DE SOUS TYPE "BASE_DE_MODES"
  180. ELSEIF (IPOS .EQ. 2) THEN
  181. IF (INORM.EQ.1) THEN
  182. CALL NORMA5 (ITBAS,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI)
  183. ELSEIF (INORM.EQ.2) THEN
  184. CALL NORMB5(ITBAS,IRIG1,VNOR)
  185. ENDIF
  186. ENDIF
  187. IF (IERR .NE. 0) RETURN
  188.  
  189. CALL ACTOBJ(MONTYP,IPOINT,1)
  190. CALL ECROBJ(MONTYP,IPOINT)
  191. RETURN
  192. *
  193. END
  194.  
  195.  
  196.  
  197.  
  198.  

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