Download deadktan.procedur

Back to the list

   1 : * DEADKTAN  PROCEDUR  GOUNAND   07/07/05    21:15:21     5784           
   2 : ************************************************************************
   3 : * NOM         : DEADKTAN
   4 : * DESCRIPTION : La matrice tangente (Huang)
   5 : *
   6 : *
   7 : *
   8 : * LANGAGE     : GIBIANE-CAST3M
   9 : * AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  10 : *               mél : gounand@semt2.smts.cea.fr
  11 : **********************************************************************
  12 : * VERSION    : v1, 30/04/2007, version initiale
  13 : * HISTORIQUE : v1, 30/04/2007, création
  14 : * HISTORIQUE :
  15 : * HISTORIQUE :
  16 : ************************************************************************
  17 : * Prière de PRENDRE LE TEMPS de compléter les commentaires
  18 : * en cas de modification de ce sous-programme afin de faciliter
  19 : * la maintenance !
  20 : ************************************************************************
  21 : *
  22 : *
  23 : 'DEBPROC' DEADKTAN ;
  24 : 'ARGUMENT' _mt*'MAILLAGE' ;
  25 : 'ARGUMENT' gdisc*'MOT' ;
  26 : 'ARGUMENT' methgau*'MOT' ;
  27 : 'ARGUMENT' theta*'FLOTTANT' ;
  28 : 'ARGUMENT' gamma*'FLOTTANT' ;
  29 : 'ARGUMENT' dppri*'LISTMOTS' ;
  30 : 'ARGUMENT' dpdua*'LISTMOTS' ;
  31 : *
  32 : dpdis = gdisc ;
  33 : *
  34 : idim  = 'VALEUR' 'DIME' ;
  35 : vdim  = DEADUTIL 'DIMM' _mt ;
  36 : *
  37 : 'ARGUMENT' met/'CHPOINT' ;
  38 : lmet = 'EXISTE' met ;
  39 : 'SI' lmet ;
  40 :    'ARGUMENT' metdisc*'MOT' ;
  41 : *   metdisc = gdisc ;
  42 : 'SINON' ;
  43 :    metdisc = 'CSTE' ;
  44 : 'FINSI' ;   
  45 : *
  46 : debloi = 'CHAINE' 'AHU' ;
  47 : ncmet  = '/' ('*' idim ('+' idim 1)) 2 ;
  48 : lisdat = 'LECT' 1 'PAS' 1 'NPAS' ('+' ncmet 1) ;
  49 : loi = 'CHAINE' debloi 'J' ;
  50 : *
  51 : 'ARGUMENT' jaco/'ENTIER' ;
  52 : 'SI' ('NON' ('EXISTE' jaco)) ;
  53 :    jaco = 1 ;
  54 : 'FINSI' ;
  55 : 'SI' ('OU' ('EGA' jaco 2) ('EGA' jaco 3)) ;
  56 :    'ARGUMENT' idir/'ENTIER' ;
  57 :    'SI' ('EXISTE' idir) ;
  58 :       ldir = 'LECT' idir ;
  59 :    'SINON' ;
  60 :       'ARGUMENT' ldir/'LISTENTI' ;
  61 :       'SI' ('NON' ('EXISTE' ldir)) ;
  62 :          ldir = 'LECT' 1 'PAS' 1 idim ;
  63 :       'FINSI' ;
  64 :    'FINSI' ;
  65 : 'FINSI' ;   
  66 : *
  67 : * Calcul du jacobien complet (jaco = 1)
  68 : *
  69 : 'SI' ('EGA' jaco 1) ;
  70 :    numop  = '*' ('**' vdim 2) ('**' idim 2) ;
  71 :    numder = vdim ;
  72 :    numvar = idim ;
  73 :    numdat = 0 ;
  74 :    numcof = 0 ;
  75 : *
  76 :    A = ININLIN numop numvar numdat numcof numder ;
  77 :    numdat = '+' ncmet 2 ;
  78 :    numcof = numop ;
  79 :    B = ININLIN numop numvar numdat numcof numder ;
  80 :    'REPETER' ivar numvar ;
  81 :       A . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dppri &ivar) ;
  82 :       A . 'VAR' . &ivar . 'DISC'   = dpdis ;
  83 :       B . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dpdua &ivar) ;
  84 :       B . 'VAR' . &ivar . 'DISC'   = dpdis ;
  85 :    'FIN' ivar ;      
  86 :    iop = 0 ;
  87 :    'REPETER' i idim ;
  88 :       'REPETER' j vdim ;
  89 :          'REPETER' k idim ;
  90 :             'REPETER' l vdim ;
  91 :                iop = iop '+' 1 ;
  92 :                A . iop . &i . &j  = 'LECT' ;
  93 :                nomloi = 'CHAINE' loi &i &j &k &l ;
  94 : *              'MESSAGE' ('CHAINE' 'Nomloi=' nomloi) ;
  95 :                B . 'COF' . iop . 'COMPOR' = nomloi ;
  96 :                B . 'COF' . iop . 'LDAT'   = lisdat ;
  97 :                B . iop . &k . &l  = 'LECT' iop ;
  98 :             'FIN' l ;
  99 :          'FIN' k ;
 100 :       'FIN' j ;
 101 :    'FIN' i ;
 102 : 'FINSI' ;   
 103 : 'SI' ('EGA' jaco 2) ;
 104 :    nldir = 'DIME' ldir ;
 105 :    numop  = '*' nldir ('**' vdim 2) ;
 106 :    numder = vdim ;
 107 :    numvar = idim ;
 108 :    numdat = 0 ;
 109 :    numcof = 0 ;
 110 : *
 111 :    A = ININLIN numop numvar numdat numcof numder ;
 112 :    numdat = '+' ncmet 2 ;
 113 :    numcof = numop ;
 114 :    B = ININLIN numop numvar numdat numcof numder ;
 115 :    'REPETER' ivar numvar ;
 116 :       A . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dppri &ivar) ;
 117 :       A . 'VAR' . &ivar . 'DISC'   = dpdis ;
 118 :       B . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dpdua &ivar) ;
 119 :       B . 'VAR' . &ivar . 'DISC'   = dpdis ;
 120 :    'FIN' ivar ;      
 121 :    iop = 0 ;
 122 :    'REPETER' i nldir ;
 123 :       idir = 'EXTRAIRE' ldir &i ;
 124 :       'REPETER' j vdim ;
 125 :          'REPETER' l vdim ;
 126 :             iop = iop '+' 1 ;
 127 :             A . iop . idir . &j  = 'LECT' ;
 128 :             nomloi = 'CHAINE' loi idir &j idir &l ;
 129 : *               'MESSAGE' ('CHAINE' 'Nomloi=' nomloi) ;
 130 :             B . 'COF' . iop . 'COMPOR' = nomloi ;
 131 :             B . 'COF' . iop . 'LDAT'   = lisdat ;
 132 :             B . iop . idir . &l  = 'LECT' iop ;
 133 :          'FIN' l ;
 134 :       'FIN' j ;
 135 :    'FIN' i ;
 136 : 'FINSI' ;   
 137 : 'SI' ('EGA' jaco 3) ;
 138 :    nldir = 'DIME' ldir ;
 139 : *   numop  = '**' vdim 2 ;
 140 :    numop  = '*' nldir vdim ;
 141 :    numder = vdim ;
 142 :    numvar = idim ;
 143 :    numdat = 0 ;
 144 :    numcof = 0 ;
 145 : *
 146 :    A = ININLIN numop numvar numdat numcof numder ;
 147 :    numdat = '+' ncmet 2 ;
 148 :    numcof = numop ;
 149 :    B = ININLIN numop numvar numdat numcof numder ;
 150 :    'REPETER' ivar numvar ;
 151 :       A . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dppri &ivar) ;
 152 :       A . 'VAR' . &ivar . 'DISC'   = dpdis ;
 153 :       B . 'VAR' . &ivar . 'NOMDDL' = 'MOTS' ('EXTRAIRE' dpdua &ivar) ;
 154 :       B . 'VAR' . &ivar . 'DISC'   = dpdis ;
 155 :    'FIN' ivar ;      
 156 :    iop = 0 ;
 157 :    'REPETER' i nldir ;
 158 :       idir = 'EXTRAIRE' ldir &i ;
 159 :       'REPETER' j vdim ;
 160 :          iop = iop '+' 1 ;
 161 :          A . iop . idir . &j  = 'LECT'  ;
 162 :          nomloi = 'CHAINE' loi idir &j idir &j ;
 163 : *               'MESSAGE' ('CHAINE' 'Nomloi=' nomloi) ;
 164 :          B . 'COF' . iop . 'COMPOR' = nomloi ;
 165 :          B . 'COF' . iop . 'LDAT'   = lisdat ;
 166 :          B . iop . idir . &j  = 'LECT' iop ;
 167 :       'FIN' j ;
 168 :    'FIN' i ;
 169 : 'FINSI' ;
 170 : *
 171 : * Partie commune
 172 : *   
 173 : idat = 0 ;   
 174 : 'REPETER' idi idim ;
 175 :    nomdat = 'CHAINE' 'G' &idi &idi ;
 176 : *      'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
 177 :    idat = '+' idat 1 ;
 178 :    B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
 179 :    B . 'DAT' . idat . 'DISC'   = metdisc ;
 180 :    'SI' lmet ;
 181 :       B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
 182 :    'SINON' ;         
 183 :       B . 'DAT' . idat . 'VALEUR' = 1.D0 ;
 184 :    'FINSI' ;         
 185 : 'FIN' idi ;
 186 : 'REPETER' idi idim ;
 187 :    nj = '-' idim &idi ;
 188 : *    'MESSAGE' ('CHAINE' 'nj=' nj) ;
 189 :    'SI' ('>EG' nj 1) ;       
 190 :       'REPETER' jdi nj ;
 191 :          nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ;
 192 : *            'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
 193 :          idat = '+' idat 1 ;
 194 :          B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
 195 :          B . 'DAT' . idat . 'DISC'   = metdisc ;
 196 :          'SI' lmet ;
 197 :             B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
 198 :          'SINON' ;               
 199 :             B . 'DAT' . idat . 'VALEUR' = 0.D0 ;
 200 :          'FINSI' ;               
 201 :       'FIN' jdi ;            
 202 :    'FINSI' ;      
 203 : 'FIN' idi ;
 204 : idat = '+' idat 1 ;
 205 : B . 'DAT' . idat . 'NOMDDL' = 'MOTS' 'DUMM' ;
 206 : B . 'DAT' . idat . 'DISC'   = 'CSTE' ;
 207 : B . 'DAT' . idat . 'VALEUR' = theta ;
 208 : idat = '+' idat 1 ;
 209 : B . 'DAT' . idat . 'NOMDDL' = 'MOTS' 'DUMM' ;
 210 : B . 'DAT' . idat . 'DISC'   = 'CSTE' ;
 211 : B . 'DAT' . idat . 'VALEUR' = gamma ;
 212 : *
 213 : jac = 'NLIN' gdisc _mt A B 'EREF' methgau ;
 214 : *
 215 : 'RESPRO' jac ;
 216 : *
 217 : * End of procedure file DEADKTAN
 218 : *
 219 : 'FINPROC' ;
 220 : 
 221 :  
 222 :  

© Cast3M 2003 - All rights reserved.
Disclaimer