Download znske.eso

Back to the list

   1 : C ZNSKE     SOURCE    MAGN      10/05/18    21:18:00     6675           
   2 :       SUBROUTINE ZNSKE(MTABX,MTAB1)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C***********************************************************************
   6 : C
   7 : C  CET OPERATEUR DISCRETISE LES EQUATIONS DE NAVIER STOKES COUPLEES
   8 : C  AUX DEUX EQUATIONS DU MODELE K - EPSILON
   9 : C    EN 2D SUR LES ELEMENTS QUA4 ET TRI3      PLAN OU AXI
  10 : C    EN 3D SUR LES ELEMENTS CUB8 ET PRI6
  11 : C  LES OPERATEURS SONT "SOUS-INTEGRES"
  12 : C
  13 : C  SYNTAXE :
  14 : C  ---------
  15 : C    1/ Cas incompréssible
  16 : C
  17 : C du/dt + u Grad u = (nu+nut) Lapl u - 1/ro Grad p  < + S >
  18 : C                                             < + g beta (T-Tref) >
  19 : C
  20 : C   'OPER' 'NSKE' nu nut            'INCO' UN :
  21 : C   'OPER' 'NSKE' nu nut s          'INCO' UN :
  22 : C   'OPER' 'NSKE' nu nut gb tn tref 'INCO' UN :
  23 : C
  24 : C
  25 : C    2/ Cas compréssible
  26 : C
  27 : C dG/dt + u Grad G + G Div u = (mu+mut)(Lapl u + 1/3 Grad Div u)
  28 : C                              - Grad p   < + S >
  29 : C
  30 : C   'OPER' 'NSKE' ro mu mut un    'INCO' GN :
  31 : C   'OPER' 'NSKE' ro mu mut un S  'INCO' GN :
  32 : C
  33 : C    ro   densité
  34 : C         FLOTTANT ou CHPOINT SCAL CENTRE
  35 : C    nu,mu viscosité cinématique (resp. dynamique) moléculaire
  36 : C         FLOTTANT ou CHPOINT SCAL CENTRE
  37 : C    nut,mut viscosité cinématique (resp. dynamique) turbulente
  38 : C         CHPOINT SCAL CENTRE
  39 : C    s    source volumique de qdm
  40 : C         POINT ou CHPOINT VECT CENTRE
  41 : C    gb   coéfficient de flottabilité (g*beta où g est l'accéllération
  42 : C         de la pesanteur et beta le coéfficient de dilatabilité)
  43 : C         POINT ou CHPOINT VECT CENTRE
  44 : C    tn   Champ de température CHPOINT SCAL SOMMET
  45 : C    tref température de référence
  46 : C         FLOTTANT ou CHPOINT SCAL SOMMET
  47 : C
  48 : C         Champ de vitesse                       -> VITESS
  49 : C    un   Champ de vitesse transportant          -> UTRANS
  50 : C         CHPOINT VECT SOMMET
  51 : C    gn   Champ de vitesse massique (transporté) -> IZTU1  (Inconnue)
  52 : C         CHPOINT VECT SOMMET
  53 : C    kn   Energie cinétique turbulente
  54 : C         CHPOINT SCAL SOMMET
  55 : C    en   Taux de disparition de k
  56 : C         CHPOINT SCAL SOMMET
  57 : C    Constantes du modèle K - Epsilon
  58 : C         cnu = 0.09 c1 = 1.41 c2 = 1.92
  59 : C
  60 : C************************************************************************       
  61 : 
  62 : -INC CCOPTIO
  63 : -INC CCGEOME
  64 : -INC SIZFFB
  65 :       POINTEUR IZF1.IZFFM
  66 : -INC SMCHAML
  67 : -INC SMCOORD
  68 : -INC SMLENTI
  69 :       POINTEUR IPADI.MLENTI,IPADU.MLENTI,IPADF.MLENTI,IPADS.MLENTI
  70 :       POINTEUR IPADQ.MLENTI
  71 : -INC SMELEME
  72 :       POINTEUR MELEM1.MELEME,MELEMC.MELEME,MELEMS.MELEME,MELEMI.MELEME
  73 :       POINTEUR MELEP1.MELEME
  74 : -INC SMCHPOI
  75 :       POINTEUR IZG1.MCHPOI, IZG3.MCHPOI
  76 :       POINTEUR IZGG1.MPOVAL,IZGG2.MPOVAL,IZGG3.MPOVAL
  77 :       POINTEUR IZGDD2.MPOVAL,IZGDD3.MPOVAL
  78 :       POINTEUR IZDD2.MPOVAL,IZDD3.MPOVAL
  79 :       POINTEUR IZTU1.MPOVAL,IZTU2.MPOVAL,IZTU3.MPOVAL
  80 :       POINTEUR VITESS.MPOVAL,UTRANS.MPOVAL
  81 :       POINTEUR MZNU.MPOVAL,MZGB.MPOVAL,MZTN.MPOVAL,MZTR.MPOVAL
  82 :       POINTEUR MZRO.MPOVAL
  83 :       POINTEUR MZNT.MPOVAL
  84 :       POINTEUR IZVOL.MPOVAL,IZTCO.MPOVAL
  85 :       POINTEUR MCHVOL.MCHPOI,IZG2.MCHPOI,IZGD2.MCHPOI
  86 :       POINTEUR IZD2.MCHPOI,IZGD3.MCHPOI,IZD3.MCHPOI
  87 : -INC SMMATRIK
  88 :       POINTEUR IPM.IZAFM
  89 : 
  90 :       SEGMENT IMATRS
  91 :       INTEGER LIZAFS(NBSOUS,NBME)
  92 :       ENDSEGMENT
  93 :       POINTEUR IPMS.IZAFM,IPS1.IZAFM,IPS2.IZAFM,IPS3.IZAFM
  94 : 
  95 : -INC SMLMOTS
  96 :       POINTEUR LINCO.MLMOTS
  97 :       CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,TYPC,NOM,NOM0
  98 :       PARAMETER (NTB=1)
  99 :       CHARACTER*8 LTAB(NTB)
 100 :       DIMENSION KTAB(NTB),IXV(3),RO(1)
 101 :       SAVE IPAS
 102 :       DATA LTAB/'KIZX    '/,IPAS/0/,RO/1.D0/
 103 : C*****************************************************************************
 104 : CNSKE
 105 : C     write(6,*)' DEBUT NSKE '
 106 : 
 107 : C
 108 : C- Récupération de la table INCO (pointeur KINC)
 109 : C
 109 :       CALL LEKTAB(MTAB1,'INCO',KINC)
 110 :       IF(KINC.EQ.0)THEN
 111 : C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
 112 :          MOTERR( 1: 8) = '  INCO  '
 113 :          MOTERR( 9:16) = '  INCO  '
 114 :          MOTERR(17:24) = '  EQEX  '
 114 :          CALL ERREUR(786)
 115 :          RETURN
 116 :       ENDIF
 117 : 
 118 : C*****************************************************************************
 119 : C OPTIONS
 120 : C KIMPL = 0 -> EXPL     1 -> IMPL     2 -> SEMI
 121 : C KFORM = 0 -> SI       1 -> EF       2 -> VF    3 -> EFMC
 122 : C IDCEN = 0-> rien  1-> CENTREE  2-> SUPGDC  3-> SUPG  4-> TVISQUEU  5-> CNG
 123 : 
 124 :       IAXI=0
 125 :       IF(IFOMOD.EQ.0)IAXI=2
 126 : C
 127 : C- Récupération de la table des options KOPT (pointeur KOPTI)
 128 : C
 128 :       CALL LEKTAB(MTABX,'KOPT',KOPTI)
 129 :       IF (KOPTI.EQ.0) THEN
 130 : C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
 131 :          MOTERR( 1: 8) = '  KOPT  '
 132 :          MOTERR( 9:16) = '  KOPT  '
 133 :          MOTERR(17:24) = '  KIZX  '
 133 :          CALL ERREUR(786)
 134 :          RETURN
 135 :       ENDIF
 136 : 
 136 :       CALL ACME(KOPTI,'MTRMASS ',MMPG)
 137 :       IPG=0
 138 :       IF(MMPG.EQ.3)IPG=1
 138 :       CALL ACME(KOPTI,'IDCEN',IDCEN)
 138 :       CALL ACME(KOPTI,'RNG   ',IMODEL)
 138 :       CALL ACME(KOPTI,'IKOMP',IKOMP)
 138 :       CALL ACME(KOPTI,'KIMPL',KIMPL)
 138 :       CALL ACME(KOPTI,'KPOIN',KPRE)
 138 :       CALL ACME(KOPTI,'KFORM',KFORM)
 138 :       CALL ACME(KOPTI,'KMACO',KMACO)
 138 :       CALL ACMF(KOPTI,'AIMPL',AIMPL)
 139 : 
 140 :       IF (IERR.NE.0) RETURN
 141 : 
 142 :       IF(KFORM.NE.0.AND.KFORM.NE.1)THEN
 143 : C        Option %m1:8 incompatible avec les données
 144 :             MOTERR( 1: 8) = 'EF/EFM1 '
 144 :             CALL ERREUR(803)
 145 :             RETURN
 146 :         ENDIF
 147 : 
 148 :       IF(KFORM.NE.0.AND.KPRE.NE.2)THEN
 149 : C        Option %m1:8 incompatible avec les données
 150 :             MOTERR( 1: 8) = 'EFM1 '
 150 :             CALL ERREUR(803)
 151 :             RETURN
 152 :         ENDIF
 153 : 
 154 : C     write(6,*)' Apres les options '
 155 : C*****************************************************************************
 156 : C
 157 : C- Récupération de la table DOMAINE associée au domaine local
 158 : C
 158 :       CALL ACMM(MTABX,'NOMZONE',NOMZ)
 158 :       CALL LEKTAB(MTABX,'DOMZ',MTABZ)
 159 :       IF(MTABZ.EQ.0)THEN
 160 : C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
 161 :          MOTERR( 1: 8) = '  DOMZ  '
 162 :          MOTERR( 9:16) = '  DOMZ  '
 163 :          MOTERR(17:24) = '  KIZX  '
 163 :          CALL ERREUR(786)
 164 :          RETURN
 165 :       ENDIF
 166 : 
 166 :       CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
 166 :       CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
 166 :       CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
 167 :       IF (IERR.NE.0) RETURN
 168 : 
 169 :       MELEMQ=MELEMC
 170 :       MELEP1=MELEMC
 171 : 
 172 :       IF(KPRE.NE.2)THEN
 172 :       CALL LEKTAB(MTABZ,'MACRO',MACRO)
 172 :       CALL LEKTAB(MTABZ,'MACRO1',MELEMI)
 172 :       CALL LEKTAB(MTABZ,'QUADRATI',MQUAD)
 173 :       IF(KPRE.EQ.3)THEN
 173 :       CALL LEKTAB(MTABZ,'CENTREP0',MELEMQ)
 174 :       MELEP1=MELEMQ
 175 :       ELSEIF(KPRE.EQ.4)THEN
 175 :       CALL LEKTAB(MTABZ,'CENTREP1',MELEMQ)
 175 :       CALL LEKTAB(MTABZ,'ELTP1NC ',MELEP1)
 176 :       ENDIF
 177 :       ENDIF
 178 : 
 179 : C*************************************************************************
 180 : C VERIFICATIONS SUR LES INCONNUES
 181 : C
 182 : C- Récupération du nombre d'inconnues et du nom de l'inconnue NOMI
 183 : C
 184 :       TYPE='LISTMOTS'
 184 :       CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
 185 :       IF (IERR.NE.0) RETURN
 186 :       SEGACT LINCO
 187 :       NBINC=LINCO.MOTS(/2)
 188 :       IF(NBINC.NE.3)THEN
 189 : C        Indice %m1:8 : contient plus de %i1 %m9:16
 190 :          MOTERR( 1:8) = 'LISTINCO'
 191 :          INTERR(1) = 3
 192 :          MOTERR(9:16) = ' MOTS   '
 192 :          CALL ERREUR(799)
 193 :          RETURN
 194 :       ENDIF
 195 : 
 196 :       NOMI=LINCO.MOTS(1)
 197 :       NOMA=NOMI
 198 : C
 199 : C- Récupération de l'inconnue
 200 : C
 201 :       TYPE=' '
 201 :       CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
 202 :       IF(TYPE.NE.'CHPOINT ')THEN
 203 : C        Indice %m1:8 : ne contient pas un objet de type %m9:16
 204 :          MOTERR( 1: 8) = 'INC '//NOMI
 205 :          MOTERR( 9:16) = 'CHPOINT '
 205 :          CALL ERREUR(800)
 206 :          RETURN
 207 :       ELSE
 207 :       CALL LICHT(MCHPOI,IZTU1,TYPC,MELEM1)
 208 :          NINKO = IZTU1.VPOCHA(/2)
 209 :          IF (NINKO.NE.IDIM) THEN
 210 : C        Indice %m1:8 : Le %m9:16 n'a pas le bon nombre de composantes
 211 :             MOTERR( 1: 8) = 'INC '//NOMI
 212 :             MOTERR( 9:16) = 'CHPOINT '
 212 :             CALL ERREUR(784)
 213 :             RETURN
 214 :          ENDIF
 215 : C     write(6,*)' MCHPOI,MELEM1=',MCHPOI,MELEM1
 216 : C On fait pointer ces deux tableaux sur le champ U inconu (tjs présent) pour
 217 : C eviter de les enlever lors de l'appel FORTRAN si les options sont absentes
 218 :       UTRANS=IZTU1
 219 :       IKW=0
 220 :       VITESS=IZTU1
 221 :       ENDIF
 222 : 
 223 : C*****************************************************************************
 224 : C Le domaine de definition est donne par le SPG  de la premiere inconnue
 225 : C Les inconnues suivantes devront posseder ce meme pointeur
 226 : C On verifie que les points de la zone sont tous inclus dans ce SPG
 227 : 
 227 :       CALL KRIPAD(MELEM1,IPADI)
 228 :       IPADS=IPADI
 229 :       IPADD=IPADI
 230 :       IPADU=IPADI
 230 :       IF(MELEM1.NE.MELEMS)CALL KRIPAD(MELEMS,IPADS)
 231 : 
 232 :       IF(IPAS.EQ.0)THEN
 233 :       IPAS=1
 233 :       CALL VERPAD(IPADI,MELEME,IRET)
 234 :       IF(IRET.NE.0)THEN
 235 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 236 :          MOTERR(1: 8) = 'INC '//NOMI
 237 :          MOTERR(9:16) = 'CHPOINT '
 237 :          CALL ERREUR(788)
 238 :       RETURN
 239 :       ENDIF
 240 :       ENDIF
 241 : 
 242 : C*************************************************************************
 243 : C Lecture du coefficient
 244 : C Type du coefficient :
 245 : C IK1=0 CHPOINT IK1=1 scalaire  IK1=2 vecteur
 246 : 
 247 : C     write(6,*)' Opérateur NSKE lecture des coefficients'
 247 :       CALL ACME(MTABX,'IARG',IARG)
 248 :       IF(IKOMP.EQ.0)THEN
 249 :       IF(IARG.NE.2.AND.IARG.NE.3.AND.IARG.NE.5)THEN
 250 :       WRITE(6,*)' Opérateur NSKE : option incompréssible '
 251 :       WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
 252 :       WRITE(6,*)' On attend 2 , 3 ou 5 '
 253 : C           Indice %m1:8 : nombre d'arguments incorrect
 254 :             MOTERR(1:8) = 'IARG    '
 254 :             CALL ERREUR(804)
 255 :       RETURN
 256 :       ENDIF
 257 :       ELSEIF(IKOMP.EQ.1)THEN
 258 :       IF(IARG.NE.4.AND.IARG.NE.5)THEN
 259 :       WRITE(6,*)' Opérateur NSKE : option compréssible '
 260 :       WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
 261 :       WRITE(6,*)' On attend 4 ou 5 '
 262 : C           Indice %m1:8 : nombre d'arguments incorrect
 263 :             MOTERR(1:8) = 'IARG    '
 263 :             CALL ERREUR(804)
 264 :       RETURN
 265 :       ENDIF
 266 :       ENDIF
 267 : 
 268 : C--Cas incompréssible
 269 :       IF(IKOMP.EQ.0)THEN
 270 : 
 271 :       MZRO=IZTU1
 272 : 
 273 : C 1er coefficient : nu
 274 :       IXV(1)=MELEMC
 275 :       IXV(2)=1
 276 :       IXV(3)=0
 276 :       CALL LEKCOF('Opérateur NSKE :',
 277 :      & MTABX,KINC,1,IXV,MNU,MZNU,NPT1,NC1,IKN,IRET)
 278 :       IF(IRET.EQ.0)RETURN
 279 : 
 280 :       MZGB=MZNU
 281 :       MZTN=MZNU
 282 :       MZTR=MZNU
 283 : 
 284 : C 2ème coefficient : nut
 285 :       IXV(1)=MELEMC
 286 :       IXV(2)=0
 287 :       IXV(3)=0
 287 :       CALL LEKCOF('Opérateur NSKE :',
 288 :      & MTABX,KINC,2,IXV,MNT,MZNT,NPT2,NC2,IKNT,IRET)
 289 :       IF(IRET.EQ.0)RETURN
 290 : 
 291 :       IF(IARG.GE.3)THEN
 292 : C 3ème coefficient : gbeta
 293 :       IXV(1)=-MELEMC
 294 :       IXV(2)=0
 295 :       IXV(3)=1
 295 :       CALL LEKCOF('Opérateur NSKE :',
 296 :      & MTABX,KINC,3,IXV,MGB,MZGB,NELG,NC3,IKG,IRET)
 297 :       IF(IRET.EQ.0)RETURN
 298 : 
 299 :       IF(IKG.EQ.2)IKG=1
 300 : 
 301 :       IF(IARG.EQ.5)THEN
 302 : 
 303 : C 4ème coefficient : tn
 304 :       IXV(1)=MELEMS
 305 :       IXV(2)=1
 306 :       IXV(3)=0
 306 :       CALL LEKCOF('Opérateur NSKE :',
 307 :      & MTABX,KINC,4,IXV,MTN,MZTN,NPT4,NC4,IKTN,IRET)
 308 :       IF(IRET.EQ.0)RETURN
 309 : 
 310 : C 5ème coefficient : tref
 311 :       IXV(1)=MELEMS
 312 :       IXV(2)=1
 313 :       IXV(3)=0
 313 :       CALL LEKCOF('Opérateur NSKE :',
 314 :      & MTABX,KINC,5,IXV,MTR,MZTR,NPT5,NC5,IKTR,IRET)
 315 :       IF(IRET.EQ.0)RETURN
 316 : 
 317 :       ENDIF
 318 :       ENDIF
 319 : 
 320 : C--Cas compréssible
 321 :       ELSEIF(IKOMP.EQ.1)THEN
 322 : C 1er coefficient : ro
 323 :       IXV(1)=MELEMC
 324 :       IXV(2)=1
 325 :       IXV(3)=0
 325 :       CALL LEKCOF('Opérateur NSKE :',
 326 :      & MTABX,KINC,1,IXV,MRO,MZRO,NPT1,NCR,IKR,IRET)
 327 :       IF(IRET.EQ.0)RETURN
 328 : 
 329 :       MZGB=MZRO
 330 :       MZTN=MZRO
 331 :       MZTR=MZRO
 332 : 
 333 : C 2ème coefficient : mu
 334 :       IXV(1)=MELEMC
 335 :       IXV(2)=1
 336 :       IXV(3)=0
 336 :       CALL LEKCOF('Opérateur NSKE :',
 337 :      & MTABX,KINC,2,IXV,MNU,MZNU,NPT2,NC2,IKN,IRET)
 338 :       IF(IRET.EQ.0)RETURN
 339 : 
 340 : C 3ème coefficient : mut
 341 :       IXV(1)=MELEMC
 342 :       IXV(2)=0
 343 :       IXV(3)=0
 343 :       CALL LEKCOF('Opérateur NSKE :',
 344 :      & MTABX,KINC,3,IXV,MNT,MZNT,NPT3,NC3,IKNT,IRET)
 345 :       IF(IRET.EQ.0)RETURN
 346 : 
 347 : C 4ème coefficient : un (en compréssible)
 348 :       IXV(1)=-MELEMS
 349 :       IXV(2)=0
 350 :       IXV(3)=0
 350 :       CALL LEKCOF('Opérateur NSKE :',
 351 :      & MTABX,KINC,4,IXV,MUN,UTRANS,NPT4,NC4,IK4,IRET)
 352 :       IPADU=IPADS
 353 :       IF(IRET.EQ.0)RETURN
 354 : 
 355 :       IF(IARG.EQ.5)THEN
 356 : C 5ème coefficient : s (en compréssible)
 357 :       IXV(1)=-MELEMC
 358 :       IXV(2)=0
 359 :       IXV(3)=1
 359 :       CALL LEKCOF('Opérateur NSKE :',
 360 :      & MTABX,KINC,5,IXV,MGB,MZGB,NELG,NC5,IKG,IRET)
 361 :       IF(IRET.EQ.0)RETURN
 362 : 
 363 :       IF(IKG.EQ.2)IKG=1
 364 :       ENDIF
 365 : 
 366 :       ENDIF
 367 : 
 368 : C     write(6,*)' Opérateur NSKE : Fin lecture Arguments '
 369 : C Fin lecture Arguments ************************************************
 370 : 
 371 : 
 371 :       CALL LEKTAB(MTABZ,'XXDXDY',MCHPDX)
 372 :       IF(IRET.EQ.0)RETURN
 372 :       CALL LICHT(MCHPDX,IZTCO,TYPC,IGEOM)
 373 :       NELZ=IZTCO.VPOCHA(/1)
 374 : 
 375 : 
 376 : C     write(6,*)' FORMULATION ',kform
 377 : C*********** FORMULATIONS **********
 378 : 
 379 :       IF(KFORM.EQ.0)THEN
 380 : C Formulation EFM1
 381 :       IF(KIMPL.NE.0)THEN
 382 :       WRITE(6,*)' Operateur NSKE'
 383 : C        Option %m1:8 incompatible avec les données
 384 :             MOTERR( 1: 8) = '  EFM1  '
 384 :       CALL ERREUR(803)
 385 :       RETURN
 386 :       ENDIF
 387 : 
 387 :       CALL LEKTAB(MTABZ,'MATESI',MATRIK)
 388 :       IF(MATRIK.EQ.0)GO TO 90
 389 :       SEGACT MATRIK
 390 :       IMATRI=IRIGEL(4,1)
 391 :       SEGACT IMATRI
 392 : 
 392 :       CALL LEKTAB(MTABZ,'XXPSOML',MCHELM)
 392 :       CALL LEKTAB(MTABZ,'XXVOLUM',MCHVOL)
 393 :       IF(IRET.EQ.0)RETURN
 394 : 
 395 :       SEGACT MCHELM
 395 :       CALL LICHT(MCHVOL,IZVOL,TYPC,IGEOM)
 396 : 
 396 :       CALL LEKTAB(MTAB1,'KIZG',KIZG)
 397 :       IF(KIZG.EQ.0)THEN
 397 :       CALL CRTABL(KIZG)
 397 :       CALL ECMM(KIZG,'SOUSTYPE','KIZG')
 397 :       CALL ECMO(MTAB1,'KIZG','TABLE   ',KIZG)
 398 :       ENDIF
 399 : 
 399 :       CALL LEKTAB(MTAB1,'KIZG1',KIZG1)
 400 :       IF(KIZG1.EQ.0)THEN
 400 :       CALL CRTABL(KIZG1)
 400 :       CALL ECMM(KIZG1,'SOUSTYPE','KIZG1')
 400 :       CALL ECMO(MTAB1,'KIZG1','TABLE   ',KIZG1)
 401 :       ENDIF
 402 : 
 402 :       CALL LEKTAB(MTAB1,'KIZD',KIZD)
 403 :       IF(KIZD.EQ.0)THEN
 404 :       WRITE(6,*)'Il n''y a pas de table KIZD '
 405 :       GO TO 90
 406 :       ENDIF
 407 : 
 408 : C*****************************************************************************
 409 : 
 410 : 
 411 :       TYPE=' '
 411 :       CALL ACMO(KIZG,NOMI,TYPE,IZG1)
 412 :       IF(TYPE.NE.'CHPOINT ')THEN
 413 :       NC=IZTU1.VPOCHA(/2)
 414 :       TYPE='SOMMET'
 414 :       CALL CRCHPT(TYPE,MELEM1,NC,IZG1)
 414 :       CALL ECMO(KIZG,NOMI,'CHPOINT ',IZG1)
 415 :       ENDIF
 416 : 
 416 :       CALL LICHT(IZG1,IZGG1,TYPC,IGEOM)
 417 : 
 418 :       IF(IGEOM.NE.MELEM1)THEN
 419 :       WRITE(6,*)' Opérateur NSKE'
 420 :       WRITE(6,*)'Incompatibilite de SPG entre 1eres inconnues '
 421 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 422 :          MOTERR(1: 8) = 'INC '//NOMI
 423 :          MOTERR(9:16) = 'CHPOINT '
 423 :          CALL ERREUR(788)
 424 :       RETURN 
 425 :       ENDIF 
 426 : 
 427 : 
 428 :       NOMI=LINCO.MOTS(2)
 429 : 
 430 :       TYPE=' '
 430 :       CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
 431 :       IF(TYPE.NE.'CHPOINT ')THEN
 432 :       WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
 433 : C        Indice %m1:8 : ne contient pas un objet de type %m9:16
 434 :          MOTERR( 1: 8) = 'INC '//NOMI
 435 :          MOTERR( 9:16) = 'CHPOINT '
 435 :          CALL ERREUR(800)
 436 :          RETURN
 437 :       RETURN
 438 :       ELSE
 438 :       CALL LICHT(MCHPOI,IZTU2,TYPC,IGEOM0)
 439 :       IF(IGEOM0.NE.MELEM1)THEN
 440 :       WRITE(6,*)' Opérateur NSKE '
 441 :       WRITE(6,*)' Le SPG de l''inconnue 2 n''est pas convenable'
 442 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 443 :          MOTERR(1: 8) = 'INC '//NOMI
 444 :          MOTERR(9:16) = 'CHPOINT '
 444 :          CALL ERREUR(788)
 445 :       RETURN
 446 :       ENDIF
 447 :       ENDIF
 448 : 
 449 :       TYPE=' '
 449 :       CALL ACMO(KIZG,NOMI,TYPE,IZG2)
 450 :       IF(TYPE.NE.'CHPOINT ')THEN
 451 :       NC=IZTU2.VPOCHA(/2)
 452 :       TYPE='SOMMET'
 452 :       CALL CRCHPT(TYPE,MELEM1,NC,IZG2)
 452 :       CALL ECMO(KIZG,NOMI,'CHPOINT ',IZG2)
 453 :       ENDIF
 454 : 
 454 :       CALL LICHT(IZG2,IZGG2,TYPC,IGEOM)
 455 : 
 456 :       IF(IGEOM.NE.MELEM1)THEN
 457 :       WRITE(6,*)' Opérateur NSKE'
 458 :       WRITE(6,*)'Incompatibilite de SPG entre 2emes inconnues'
 459 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 460 :          MOTERR(1: 8) = 'INC '//NOMI
 461 :          MOTERR(9:16) = 'CHPOINT '
 461 :          CALL ERREUR(788)
 462 :       RETURN 
 463 :       ENDIF 
 464 : 
 465 :       TYPE=' '
 465 :       CALL ACMO(KIZG1,NOMI,TYPE,IZGD2)
 466 :       IF(TYPE.NE.'CHPOINT ')THEN
 467 :       NC=IZTU2.VPOCHA(/2)
 468 :       TYPE='SOMMET'
 468 :       CALL CRCHPT(TYPE,MELEM1,NC,IZGD2)
 468 :       CALL ECMO(KIZG1,NOMI,'CHPOINT ',IZGD2)
 469 :       ENDIF
 470 : 
 470 :       CALL LICHT(IZGD2,IZGDD2,TYPC,IGEOM)
 471 : 
 472 :       IF(IGEOM.NE.MELEM1)THEN
 473 :       WRITE(6,*)' Opérateur NSKE'
 474 :       WRITE(6,*)'Incompatibilite de SPG entre 2emes inconnues'
 475 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 476 :          MOTERR(1: 8) = 'INC '//NOMI
 477 :          MOTERR(9:16) = 'CHPOINT '
 477 :          CALL ERREUR(788)
 478 :       RETURN 
 479 :       ENDIF 
 480 : 
 481 :       TYPE=' '
 481 :       CALL ACMO(KIZD,NOMI,TYPE,IZD2)
 482 :       IF(TYPE.NE.'CHPOINT ')THEN
 483 :       WRITE(6,*)' Il n y a pas de diagonale associee a l''inconnue ',
 484 :      &NOMI
 485 :       GO TO 90
 486 :       ENDIF
 487 : 
 487 :       CALL LICHT(IZD2,IZDD2,TYPC,IGEOM)
 488 : 
 489 :       NOMI=LINCO.MOTS(3)
 490 : 
 491 :       TYPE=' '
 491 :       CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
 492 :       IF(TYPE.NE.'CHPOINT ')THEN
 493 :       WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
 494 : C        Indice %m1:8 : ne contient pas un objet de type %m9:16
 495 :          MOTERR( 1: 8) = 'INC '//NOMI
 496 :          MOTERR( 9:16) = 'CHPOINT '
 496 :          CALL ERREUR(800)
 497 :       RETURN
 498 :       ELSE
 498 :       CALL LICHT(MCHPOI,IZTU3,TYPC,IGEOM0)
 499 :       IF(IGEOM0.NE.MELEM1)THEN
 500 :       WRITE(6,*)' Opérateur NSKE '
 501 :       WRITE(6,*)' Le SPG de l''inconnue 3 n''est pas convenable'
 502 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 503 :          MOTERR(1: 8) = 'INC '//NOMI
 504 :          MOTERR(9:16) = 'CHPOINT '
 504 :          CALL ERREUR(788)
 505 :       RETURN
 506 :       ENDIF
 507 :       ENDIF
 508 : 
 509 :       TYPE=' '
 509 :       CALL ACMO(KIZG,NOMI,TYPE,IZG3)
 510 :       IF(TYPE.NE.'CHPOINT ')THEN
 511 :       SEGACT IZTU3
 512 :       NC=IZTU3.VPOCHA(/2)
 513 :       TYPE='SOMMET'
 513 :       CALL CRCHPT(TYPE,MELEM1,NC,IZG3)
 513 :       CALL ECMO(KIZG,NOMI,'CHPOINT ',IZG3)
 514 :       ENDIF
 515 : 
 515 :       CALL LICHT(IZG3,IZGG3,TYPC,IGEOM)
 516 : 
 517 :       IF(IGEOM.NE.MELEM1)THEN
 518 :       WRITE(6,*)' Opérateur NSKE'
 519 :       WRITE(6,*)' Incompatibilite de SPG entre 3emes inconnues'
 520 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 521 :          MOTERR(1: 8) = 'INC '//NOMI
 522 :          MOTERR(9:16) = 'CHPOINT '
 522 :          CALL ERREUR(788)
 523 :       RETURN 
 524 :       ENDIF 
 525 : 
 526 :       TYPE=' '
 526 :       CALL ACMO(KIZG1,NOMI,TYPE,IZGD3)
 527 :       IF(TYPE.NE.'CHPOINT ')THEN
 528 :       NC=IZTU3.VPOCHA(/2)
 529 :       TYPE='SOMMET'
 529 :       CALL CRCHPT(TYPE,MELEM1,NC,IZGD3)
 529 :       CALL ECMO(KIZG1,NOMI,'CHPOINT ',IZGD3)
 530 :       ENDIF
 531 : 
 531 :       CALL LICHT(IZGD3,IZGDD3,TYPC,IGEOM)
 532 : 
 533 :       IF(IGEOM.NE.MELEM1)THEN
 534 :       WRITE(6,*)' Opérateur NSKE'
 535 :       WRITE(6,*)' Incompatibilite de SPG entre 3emes inconnues'
 536 : C     Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
 537 :          MOTERR(1: 8) = 'INC '//NOMI
 538 :          MOTERR(9:16) = 'CHPOINT '
 538 :          CALL ERREUR(788)
 539 :       RETURN 
 540 :       ENDIF 
 541 : 
 542 :       TYPE=' '
 542 :       CALL ACMO(KIZD,NOMI,TYPE,IZD3)
 543 :       IF(TYPE.NE.'CHPOINT ')THEN
 544 :       WRITE(6,*)' Il n y a pas de diagonale associee a l''inconnue ',
 545 :      &NOMI
 546 :       GO TO 90
 547 :       ENDIF
 548 : 
 548 :       CALL LICHT(IZD3,IZDD3,TYPC,IGEOM)
 549 : 
 550 :       NPT=IZGG1.VPOCHA(/1)
 551 : 
 552 :       SEGDES LINCO
 553 : 
 554 : 
 555 : C######################################################################
 556 : 
 557 :       SEGACT MELEME
 558 :       NBSOUS=LISOUS(/1)
 559 :       IF(NBSOUS.EQ.0)NBSOUS=1
 560 :       NUTOEL=0
 561 :       DT=1.D30
 562 :       IES=IDIM
 563 : 
 564 :       DO 1 L=1,NBSOUS
 565 :       IPT1=MELEME
 566 :       IF(NBSOUS.NE.1)IPT1=LISOUS(L)
 567 :       SEGACT IPT1
 568 :       IZAFM=LIZAFM(L,1)
 569 :       IPM1=IZAFM
 570 :       SEGACT IZAFM
 571 :       IF(IAXI.NE.0)THEN
 572 :       IPM1=LIZAFM(L,2)
 573 :       SEGACT IPM1
 574 :       ENDIF
 575 : 
 576 :       MCHAML=ICHAML(L)
 577 :       SEGACT MCHAML
 578 :       MELVAL=IELVAL(1)
 579 :       SEGACT MELVAL
 580 : 
 581 :       IF(IMACHE(L).NE.IPT1)THEN
 582 :        write(*,*)'IPT1,IMACHE ',IPT1,IMACHE(L)
 583 :        goto 90
 584 :       ENDIF
 585 : 
 586 :       NP  =IPT1.NUM(/1)
 587 :       NBEL=IPT1.NUM(/2)
 588 : 
 588 :       CALL ZCVIT(AM,IPM1.AM,VELCHE,
 589 :      & IPT1.NUM,NBEL,NUTOEL,NPT,IES,NP,IAXI,
 590 :      & IPADI.LECT,IKOMP,IARG,
 591 :      & MZRO.VPOCHA,IKR,
 592 :      & MZNU.VPOCHA,IKN,MZGB.VPOCHA,IKG,NELG,MZTN.VPOCHA,IKTN,
 593 :      & MZTR.VPOCHA,IKTR,MZNT.VPOCHA,
 594 :      & IZTU1.VPOCHA,UTRANS.VPOCHA,IZTU2.VPOCHA,IZTU3.VPOCHA,
 595 :      & IZGG1.VPOCHA,IZGG2.VPOCHA,IZGG3.VPOCHA,
 596 :      & IZGDD2.VPOCHA,IZGDD3.VPOCHA,
 597 :      & IZDD2.VPOCHA,IZDD3.VPOCHA,
 598 :      & IZVOL.VPOCHA,IZTCO.VPOCHA,NELZ,IDCEN,IMODEL,
 599 :      & DT,DTT1,DTT2,NUEL,DIAEL,ECHLM)
 600 : 
 601 :       SEGDES IZAFM,IPT1,MCHAML,MELVAL
 602 :       NUTOEL=NUTOEL+NBEL
 603 : 
 604 :  1    CONTINUE
 605 :       SEGDES MELEME
 606 :       SEGDES MATRIK,MCHELM
 607 : 
 608 :       SEGDES MZTN
 609 :       SEGDES IZTU1,IZTU2,IZTU3
 610 :       SEGDES IZGG1,IZGG2,IZGG3
 611 :       SEGDES IZGDD2,IZGDD3
 612 :       SEGDES IZDD2,IZDD3
 613 :       SEGDES IZVOL,IZTCO
 614 : 
 614 :       CALL LEKTAB(MTAB1,'PASDETPS',MTABT)
 615 :       IF(MTABT.EQ.0)THEN
 615 :       CALL CRTABL(MTABT)
 615 :       CALL ECMM(MTABT,'SOUSTYPE','PASDETPS')
 615 :       CALL ECMO(MTAB1,'PASDETPS','TABLE   ',MTABT)
 616 :       DTP=1.D30+DT
 617 :       IPAT=1
 617 :       CALL ECME(MTABT,'NUPASDT',IPAT)
 618 :       ELSE
 618 :       CALL ACMF(MTABT,'DELTAT',DTP)
 619 :       ENDIF
 620 : 
 621 :       IF(DT.LT.DTP)THEN
 621 :       CALL ECMF(MTABT,'DELTAT',DT)
 621 :       CALL ECMM(MTABT,'OPER','NSKE')
 621 :       CALL ACMM(MTABX,'NOMZONE',NOMZ)
 621 :       CALL ECMM(MTABT,'ZONE',NOMZ)
 621 :       CALL ECMF(MTABT,'DTCONV',DTT1)
 621 :       CALL ECMF(MTABT,'DTDIFU',DTT2)
 621 :       CALL ECMF(MTABT,'DIAEL',DIAEL)
 621 :       CALL ECME(MTABT,'NUEL',NUEL)
 622 :       ENDIF
 623 : C*************************************************************************
 624 :       ELSE IF(KFORM.EQ.1)THEN
 625 : C CAS FORMULATION EF
 626 : 
 627 :       IF(KIMPL.EQ.0)THEN
 628 : C        Option %m1:8 incompatible avec les données
 629 :             MOTERR( 1: 8) = '  EF    '
 629 :             CALL ERREUR(803)
 630 :             RETURN
 631 :         ENDIF
 632 : 
 633 :       DT=0.D0
 634 :       IF(IDCEN.EQ.4)THEN
 635 :       TYPE=' '
 635 :       CALL ACMO(MTABT,'DELTAT',TYPE,IENT)
 636 :       IF(TYPE.NE.'ENTIER')THEN
 637 :       WRITE(6,*)' Opérateur NS '
 638 :       WRITE(6,*)' On reclame un pas de temps'
 639 : C        Option %m1:8 incompatible avec les données 
 640 :             MOTERR( 1: 8) = '  EF    '
 640 :             CALL ERREUR(803)
 641 :       RETURN
 642 :       ELSE
 642 :       CALL ACMF(MTABT,'DELTAT',DT)
 643 :       ENDIF
 644 :       ENDIF
 645 : 
 646 :       IHV=1
 647 :       NUTOEL=0
 648 :       NINKO=VITESS.VPOCHA(/2)
 649 :       SEGACT MELEME
 650 :       NBSOUS=LISOUS(/1)
 651 :       IF(NBSOUS.EQ.0)NBSOUS=1
 652 : 
 653 :       TYPE=' '
 653 :       CALL ACMO(MTABX,'MATELM',TYPE,MATRIK)
 654 :       IF(TYPE.EQ.'MATRIK'.AND.KMACO.NE.0)THEN
 655 :       SEGACT MATRIK
 656 :       NMATRI=IRIGEL(/2)
 657 :       MELEME=IRIGEL(1,1)
 658 :       SEGACT MELEME
 659 :       IMATRI=IRIGEL(4,1)
 660 :       SEGACT IMATRI
 661 :       NBME=LIZAFM(/2)
 662 :       NINKO=NBME
 663 :       MELEMS=KSPGP
 664 : 
 665 : 
 666 :       ELSE
 667 : 
 668 :       NRIGE=7
 669 :       NKID =9
 670 :       NKMT =7
 671 :       NMATRI=1
 672 :       SEGINI MATRIK
 673 :       IRIGEL(1,1)=MELEME
 674 :       IRIGEL(2,1)=MELEME
 675 : 
 676 :       IRIGEL(7,1)=2
 677 :       NBOP=0
 678 :       NBME=NINKO
 679 :       NBELC=0
 680 :       SEGINI IMATRI,IMATRS
 681 :       IRIGEL(4,1)=IMATRI
 682 :       KSPGP=MELEMS
 683 :       KSPGD=MELEMS
 684 : 
 685 :       IF(NBME.EQ.1)THEN
 686 :       LISPRI(1)=NOMI(1:4)//'    '
 687 :       LISDUA(1)=NOMA(1:4)//'    '
 688 :       ELSE
 689 :       DO 102 I=1,NBME
 690 :       WRITE(NOM,FMT='(I1,A7)')I,NOMI(1:7)
 691 :       LISPRI(I)=NOM(1:4)//'    '
 692 :       WRITE(NOM,FMT='(I1,A7)')I,NOMA(1:7)
 693 :       LISDUA(I)=NOM(1:4)//'    '
 694 :  102  CONTINUE
 695 :       ENDIF
 696 : 
 697 :       NUTOEL=0
 698 :       DO 101 L=1,NBSOUS
 699 :       IPT1=MELEME
 700 :       IF(NBSOUS.NE.1)IPT1=LISOUS(L)
 701 :       SEGACT IPT1
 702 :       WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'    '
 702 :       CALL KALPBG(NOM0,'FONFORM ',IZFFM)
 703 :       SEGACT IZFFM*MOD
 704 :       IZHR=KZHR(1)
 705 :       SEGACT IZHR*MOD
 706 :       NES=GR(/1)
 707 :       NPG=GR(/3)
 708 : 
 709 :       NP = IPT1.NUM(/1)
 710 :       MP = NP
 711 :       NBEL=IPT1.NUM(/2)
 712 :       SEGINI IPM1,IPS1
 713 :       LIZAFM(L,1)=IPM1
 714 :       LIZAFS(L,1)=IPS1
 715 :       IPM2=IPM1
 716 :       IPM3=IPM1
 717 :       IPS2=IPS1
 718 :       IPS3=IPS1
 719 :       IF(NBME.GE.2)THEN
 720 :       SEGINI IPM2,IPS2
 721 :       LIZAFM(L,2)=IPM2
 722 :       LIZAFS(L,2)=IPS2
 723 :       ENDIF
 724 :       IF(NBME.GE.3)THEN
 725 :       SEGINI IPM3,IPS3
 726 :       LIZAFM(L,3)=IPM3
 727 :       LIZAFS(L,3)=IPS3
 728 :       ENDIF
 729 : 
 730 : 
 731 :       KITT=2
 732 :       KJTT=IKN
 733 :       NPT=UTRANS.VPOCHA(/1)
 734 :       NPTG=IZTU1.VPOCHA(/1)
 735 : 
 735 :       CALL ZCONV(FN,GR,PG,XYZ,HR,PGSQ,RPG,
 736 :      & NES,IDIM,NP,NPG,IAXI,AIMPL,IKOMP,
 737 :      & RO,1,UTRANS.VPOCHA,IKW,NPT,IPADU.LECT,MZNU.VPOCHA,IKN,
 738 :      & IPT1.NUM,NBEL,NUTOEL,XCOOR,
 739 :      & IPM1.AM,IPM2.AM,IPM3.AM,
 740 :      & IPS1.AM,IPS2.AM,IPS3.AM,
 741 :      & NINKO,IDCEN,DT,
 742 :      & IZTU1.VPOCHA,0,NPTG,IPADI.LECT,IZTCO.VPOCHA,NELZ)
 743 : 
 743 :       CALL XLAPL(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,
 744 :      & MZNU.VPOCHA,MZNU.VPOCHA,MZNU.VPOCHA,KITT,KJTT,IKN,
 745 :      & IPT1.NUM,NBEL,NUTOEL,XCOOR,AIMPL,IKOMP,
 746 :      & IPM1.AM,IPM2.AM,IPM3.AM,
 747 :      & IPS1.AM,IPS2.AM,IPS3.AM,
 748 :      & NINKO,IHV,IARG,MZNU.VPOCHA)
 749 : 
 750 :       NUTOEL=NUTOEL+NBEL
 751 :  101  CONTINUE
 752 : 
 753 :       ENDIF
 754 : 
 755 : 
 756 :       IF(KIMPL.EQ.2.OR.KIMPL.EQ.0.OR.IARG.GT.1)THEN
 757 :       NAT=2
 758 :       NSOUPO=1
 759 :       SEGACT MELEMS
 760 :       N=MELEMS.NUM(/2)
 761 :       NC=NINKO
 762 :       SEGINI MCHPO1,MSOUP1,MPOVA1
 763 :       MCHPO1.IFOPOI=IFOMOD
 764 :       MCHPO1.MOCHDE=TITREE
 765 :       MCHPO1.MTYPOI='SMBR'
 766 :       MCHPO1.JATTRI(1)=2
 767 :       MCHPO1.IPCHP(1)=MSOUP1
 768 :       DO 177 N=1,NINKO
 769 :       MSOUP1.NOCOMP(N)=LISDUA(N)(1:4)
 770 :  177  CONTINUE
 771 :       MSOUP1.IGEOC=MELEMS
 772 :       MSOUP1.IPOVAL=MPOVA1
 773 :       ENDIF
 774 : 
 775 :       IF(IARG.EQ.3.OR.IARG.EQ.5)THEN
 775 :        CALL KRIPAD(MELEMQ,IPADQ)
 776 :       IF(IARG.EQ.3)THEN
 777 :        IKAS=2
 778 :       ELSEIF(IARG.EQ.5)THEN
 779 :        IKAS=3
 780 :       ENDIF
 781 : 
 782 : 
 783 : 
 784 :       IF(MACRO.NE.0.AND.KPRE.EQ.2)MELEMI=MELEME
 785 :       SEGACT MELEMI
 786 :       NBSOUS=MELEMI.LISOUS(/1)
 787 :       IF(NBSOUS.EQ.0)NBSOUS=1
 788 : 
 789 :       NUTOEL=0
 790 :       DO 1102 L=1,NBSOUS
 791 :       IPT1=MELEMI
 792 :       IF(NBSOUS.NE.1)IPT1=MELEMI.LISOUS(L)
 793 :       SEGACT IPT1
 794 : 
 795 :        IF(MQUAD.NE.0)THEN
 796 :        IF(KPRE.EQ.2)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'PRP0'
 797 :        IF(KPRE.EQ.3)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'PRP0'
 798 :        IF(KPRE.EQ.4)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'PRP1'
 799 :        ELSEIF(MACRO.NE.0)THEN
 800 :        IF(KPRE.EQ.2)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'    '
 801 :        IF(KPRE.EQ.3)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'MCP0'
 802 :        IF(KPRE.EQ.4)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'MCP1'
 803 :        ELSE
 804 :        IF(KPRE.EQ.2)WRITE(NOM0,FMT='(A8)')NOMS(IPT1.ITYPEL)//'    '
 805 :        ENDIF
 805 :        CALL KALPBG(NOM0,'FONFORM ',IZFFM)
 806 : 
 807 : 
 808 :       SEGACT IZFFM*MOD
 809 :       IZHR=KZHR(1)
 810 :       SEGACT IZHR*MOD
 811 :       NES=GR(/1)
 812 :       NPG=GR(/3)
 813 :       IZF1=KTP(1)
 814 :       SEGACT IZF1*MOD
 815 :       MP1=IZF1.FN(/1)
 816 :       NP = IPT1.NUM(/1)
 817 :       MP = NP
 818 :       NBEL=IPT1.NUM(/2)
 819 :       NELG=MZGB.VPOCHA(/1)
 820 :       NPT =MPOVA1.VPOCHA(/1)
 821 : 
 822 :       SEGACT MELEP1
 823 : 
 824 : 
 824 :       CALL XSOUR(FN,IZF1.FN,GR,PG,XYZ,HR,PGSQ,RPG,
 825 :      & NES,IDIM,NP,MP1,NPG,IAXI,IPT1.NUM,IKAS,KPRE,
 826 :      & MZGB.VPOCHA,IKG,NELG,IPADQ.LECT,MELEP1.NUM,
 827 :      & MZTN.VPOCHA,IKTN,MZTR.VPOCHA,IKTR,IPADS.LECT,
 828 :      & NBEL,NUTOEL,XCOOR,MPOVA1.VPOCHA,NPT)
 829 : 
 830 :       NUTOEL=NUTOEL+NBEL
 831 :  1102 CONTINUE
 832 : 
 833 :       ENDIF
 834 : 
 835 :       IF(KIMPL.EQ.2.OR.KIMPL.EQ.0)THEN
 836 : 
 837 :       NBSOUS=LISOUS(/1)
 838 :       IF(NBSOUS.EQ.0)NBSOUS=1
 839 : 
 840 :       DO 1533 L=1,NBSOUS
 841 :       IPT1=MELEME
 842 :       IF(NBSOUS.NE.1)IPT1=LISOUS(L)
 843 :       SEGACT IPT1
 844 :       NP=IPT1.NUM(/1)
 845 :       NBEL=IPT1.NUM(/2)
 846 :       DO 2 N=1,NINKO
 847 :       IPMS=LIZAFS(L,N)
 848 :       SEGACT IPMS
 849 :       DO 12 K=1,NBEL
 850 :       DO 13 J=1,NP
 851 :       UU=0.D0
 852 :       IU=IPADS.LECT(IPT1.NUM(J,K))
 853 :       DO 14 I=1,NP
 854 :       IK=IPADI.LECT(IPT1.NUM(I,K))
 855 :       UU=UU+IPMS.AM(K,I,J)*IZTU1.VPOCHA(IK,N)
 856 :  14   CONTINUE
 857 :       MPOVA1.VPOCHA(IU,N)=MPOVA1.VPOCHA(IU,N)+UU
 858 :  13   CONTINUE
 859 :  12   CONTINUE
 860 : 
 861 :  2    CONTINUE
 862 : 
 863 :  1533 CONTINUE
 864 :       ENDIF
 865 : 
 866 :       SEGDES IPM1,IPM2,IPM3
 867 :       IPS=IPS1
 868 :       SEGSUP IPS1
 869 :       IF(IPS2.NE.IPS)SEGSUP IPS2
 870 :       IF(IPS3.NE.IPS)SEGSUP IPS3
 871 :       SEGDES IZTCO
 872 : 
 873 :       IF(KIMPL.EQ.2.OR.KIMPL.EQ.0.OR.IARG.GT.1)THEN
 874 : 
 875 :       TYPE=' '
 875 :       CALL ACMO(MTAB1,'SMBR',TYPE,MCHPO2)
 876 :       IF(TYPE.NE.'CHPOINT')THEN
 876 :       CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPO1)
 877 :       ELSE
 877 :       CALL ECROBJ('CHPOINT',MCHPO2)
 877 :       CALL ECROBJ('CHPOINT',MCHPO1)
 877 : C?    CALL OPERAD
 877 :       CALL PRFUSE
 877 :       CALL LIROBJ('CHPOINT',MCHPOI,1,IRET)
 877 :       CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPOI)
 878 :       ENDIF
 879 : 
 880 :       ENDIF
 881 : 
 882 :       SEGDES IMATRI
 883 :       SEGDES MELEME,MATRIK
 884 :       IF(IKN.EQ.0)THEN
 885 :       SEGDES MZNU
 886 :       ENDIF
 886 :       CALL ECMO(MTABX,'MATELM','MATRIK',MATRIK)
 887 : 
 888 : C*************************************************************************
 889 :       ELSE IF(KFORM.EQ.2)THEN
 890 : C CAS FORMULATION VF
 891 :       WRITE(6,*)' FORMULATION VF NON DISPONIBLE '
 892 : C        Option %m1:8 incompatible avec les données
 893 :             MOTERR( 1: 8) = '  EF    '
 893 :             CALL ERREUR(803)
 894 :             RETURN
 895 :       ENDIF
 896 : C*************************************************************************
 897 : 
 898 : 
 899 : 
 900 :       SEGSUP IPADI
 901 :       IPAS=1
 902 : C     write(6,*)' FIN NSKE '
 903 :       RETURN
 904 : 
 905 :  90   CONTINUE
 906 :       WRITE(6,*)' Interuption anormale de NSKE'
 907 : C        Option %m1:8 incompatible avec les données
 908 :             MOTERR( 1: 8) = '  EF    '
 908 :       CALL ERREUR(803)
 909 :       RETURN
 910 :  1002 FORMAT(10(1X,1PE11.4))
 911 :       END
 912 :  
 913 :  
 914 :  
 915 :  
 916 :  
 917 :  
 918 :  
 919 :  
 920 :  
 921 :  
 922 :  
 923 :  
 924 :  
 925 :  
 926 :  
 927 :  

© Cast3M 2003 - All rights reserved.
Disclaimer