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