Download pmat.eso

Back to the list

   1 : C PMAT      SOURCE    CHAT      11/03/16    21:29:11     6902           
   2 :       subroutine pmat
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : *
   6 : * création des matrices de bloquage pour le changement de phase
   7 : * ces matrices sont de type 2 et des flx a mettre en face
   8 : *
   9 : * en entrée : objet modele 
  10 : -INC CCOPTIO
  11 : -INC SMELEME
  12 : -INC SMMODEL
  13 : -INC SMRIGID
  14 : -INC SMCOORD
  15 : -INC SMCHPOI
  16 : -INC SMCHAML
  17 :       segment icpr(XCOOR(/1)/(idim+1))
  18 :       segment icpr1(XCOOR(/1)/(idim+1))
  19 :       segment icpr2(XCOOR(/1)/(idim+1))
  20 :       segment icpr3(XCOOR(/1)/(idim+1))
  21 :       segment  itvr
  22 :         real*8  tvr(IB)
  23 :       endsegment
  24 :       segment ide(ib)
  24 :       call lirobj('MMODEL',mmodel,1,iretou)
  25 :       if(ierr.ne.0) return
  26 :       segact mmodel
  27 :       nbsou=kmodel(/1)
  28 :       nrigel=nbsou
  29 :       nrige=8
  30 :       segini mrigid,icpr,icpr1,icpr2,icpr3
  31 :       mtymat='BLO_PHAS'
  32 :       ib=0
  33 :       do 100 i=1,nbsou
  34 :       imodel=kmodel(i)
  35 :       segact imodel
  36 :       meleme=imamod
  37 :       segact meleme
  38 :       do 101 mel=1,num(/2)
  39 :       do 101 npo=1,num(/1)
  40 :       ia = num(npo,mel)
  41 :       if(icpr(ia).eq.0) then
  42 :       ib=ib+1
  43 :       icpr(ia)=ib
  44 :       endif
  45 :   101 continue
  46 :       segdes meleme
  47 :   100 continue
  48 :       nbsous=0
  49 :       nbref=0
  50 :       nbnn=1
  51 :       nbelem=ib
  52 : *      write(6,*) 'nbelem nbnn nbref nbsous',nbelem,nbnn,nbref,nbsous
  53 :       segini ipt4
  54 : * boucle sur les sous zones du model pour creer les matrices de
  55 : * blocages 
  56 :       idd=0         
  57 :       do 1 i=1,nbsou
  58 :       imodel=kmodel(i)
  59 :       meleme=imamod
  59 :       call impp1(meleme,ipt2)
  60 :       segact ipt2
  61 : * remplissage d'une matrice et des objets rigidite    
  62 :       nelrig=ipt2.num(/2)
  63 :       segdes ipt2
  64 :       irigel(1,i) = ipt2
  65 :       irigel(5,i)=nifour
  66 :       coerig(i)=1.d0
  67 :       irigel(6,i)=2
  68 :       nligrp=2
  69 :       nligrd=2
  70 :       segini descr
  71 :       irigel(3,i)=descr
  72 :       lisinc(1)='LX'
  73 :       lisinc(2)='T'
  74 :       lisdua(1)='FLX'
  75 :       lisdua(2)='Q'
  76 :       noelep(1)=1     
  77 :       noelep(2)=2     
  78 :       noeled(1)=1     
  79 :       noeled(2)=2     
  80 :       segdes descr
  81 :       segini xmatri
  82 :           do iou=1,nelrig
  83 :        re(1,1,iou)= 0.D0                                                        
  84 :        re(1,2,iou)=1.D0   
  85 :        re(2,1,iou)=1.D0                                                         
  86 :        re(2,2,iou)=0.D0  
  87 :       enddo        
  88 :       segdes xmatri          
  89 : *      segini imatri
  90 :       irigel(4,i)=xmatri
  91 : *      do 3 j=1,nelrig
  92 : *   3  imattt(j)=xmatri
  93 :       segdes xmatri,imodel
  94 :    1  continue
  95 :       segdes mrigid,mmodel
  95 :       call ecrobj ('RIGIDITE',mrigid)
  96 :       return
  97 :       end
  98 :  
  99 :  
 100 :  

© Cast3M 2003 - All rights reserved.
Disclaimer