1 : * EXAC PROCEDUR CHAT 05/07/27 21:15:07 5137 2 : * Procedure EXAC Ancienne procedure EXEC 3 : * 4 : * Objet : 5 : * 6 : * Algorithme semi implicite pour les equations N.S. incompressible 7 : * Syntaxe : EXAC RV ; 8 : * RV : Table EQEX contenant une entree PRESSION (table EQPR) 9 : * 10 : *********************************************************************** 11 : * VERSION : ???? 12 : * HISTORIQUE : 20/12/99: gounand 13 : * Le second membre et les conditions aux limites sont désormais tt le 14 : * temps des chpoints (et pas des MOT lorsqu'ils sont vides). 15 : * HISTORIQUE : 07/01/99: gounand 16 : * Rajout de la gestion de la matrice servant à l'assemblage 17 : * (rv . 'METHINV' . 'MATASS') 18 : * 19 : * HISTORIQUE : 20 : * HISTORIQUE : 21 : ************************************************************************ 22 : * 23 : * 24 : 'DEBPROC' EXAC ; 25 : 'ARGUMENT' rv*'TABLE ' ; 26 : 27 : tps=0.D0 ; 28 : 'SI' ('EGA' ('VALEUR' 'DIME') 2) ; 29 : vnul=0.D0 0.D0 ; 30 : 'SINON' ; 31 : vnul=0.D0 0.D0 0.D0 ; 32 : 'FINSI' ; 33 : 'SI' ('NON' ('EXISTE' rv 'OMEGA')) ; 34 : omeg=1.D0 ; 35 : 'SINON' ; 36 : omeg=rv . 'OMEGA' ; 37 : 'FINSI' ; 38 : 39 : testpr ='EXISTE' rv 'PRESSION' ; 40 : testran=testpr 'ET' ('EXISTE' rv 'CO') ; 41 : 42 : 'SI' ('NON' ('EXISTE' rv 'HIST')) ; 43 : rv . 'HIST' = 'TABLE' ; 44 : 'FINSI' ; 45 : 'SI' ('NON' ('EXISTE' rv 'KIZG')) ; 46 : rv . 'KIZG' = 'TABLE' 'KIZG' ; 47 : 'FINSI' ; 48 : 'SI' ('NON' ('EXISTE' rv 'KIZG1')) ; 49 : rv . 'KIZG1' = 'TABLE' 'KIZG1' ; 50 : 'FINSI' ; 51 : 'SI' ('NON' ('EXISTE' rv 'KIZD')) ; 52 : 'KDIA' rv ; 53 : 'FINSI' ; 54 : 55 : 'SI' testpr ; 56 : rvp =rv . 'PRESSION' ; 57 : nomvi=rv . 'NOMVI' ; 58 : 'SI' ('EXISTE' rv 'CLIM') ; 59 : rvp . 'CLIM' = rv . 'CLIM' ; 60 : rv . 'KIZD' . nomvi = 'KOPS' (rv . 'KIZD'. nomvi) 61 : 'CLIM' (rv . 'CLIM') 1; 62 : 'FINSI' ; 63 : 'SI' ('NON' ('EXISTE' rvp 'DIAGV')) ; 64 : rvp . 'DIAGV' = rv . 'KIZD' . nomvi ; 65 : 'FINSI' ; 66 : rvp . 'MATC' = 'KMAB' rvp ; 67 : rvp . 'PRESSION' = 'KCHT' (rvp . 'DOMAINE') 'SCAL' 68 : 'CENTRE' 0.D0 ; 69 : rvp . 'GRADP' = 'KCHT' (rvp . 'DOMAINE') 'VECT' 70 : 'SOMMET' vnul ; 71 : 'FINSI' ; 72 : 73 : *mess 'EXAC ITMA=' (rv . 'ITMA') 'NITER=' (rv . 'NITER') ; 74 : ITMA = (rv . 'ITMA') ; 75 : 'SI' ('EGA' ITMA 0) ; 76 : ITMA = 1 ; 77 : 'FINSI' ; 78 : * Gestion de la matrice de préconditionnement 79 : * 80 : * calass : doit-on recalculer l'assemblage 81 : calass = VRAI ; 82 : 'SI'(exist rv 'calass') ; 83 : calass=rv.'calass' ; 84 : matass=rv.'matass'; 85 : 'FINSI' ; 86 : 87 : 'REPETER' bloc1 ITMA ; 88 : 'REPETER' bloci (rv . 'NITER') ; 89 : ma1 = 'KOPS' 'MATRAK' ; 90 : kma1 = 0 ; 91 : 'REPETER' bloc2 ('DIME' (rv . 'LISTOPER')) ; 92 : nomper = 'EXTRAIRE' &bloc2 (rv . 'LISTOPER') ; 93 : notable= 'MOT' ('TEXTE' ('CHAINE' &bloc2 nomper)) ; 94 : * mess ' EXAC OPERATEUR ' nomper ; 95 : ('TEXTE' nomper) (rv . notable) ; 96 : 'SI' ('EXISTE' (rv . notable) 'MATELM' ) ; 97 : 'SI' ('EGA' ('TYPE' (rv . notable . 'MATELM')) 98 : 'MATRIK ') ; 99 : kma1= 1 ; 100 : ma1 = ma1 'ET' (rv . notable . 'MATELM') ; 101 : 'FINSI' ; 102 : 'FINSI' ; 103 : 'FIN' bloc2 ; 104 : dt = (rv . 'PASDETPS' . 'DELTAT') '*' (rv . 'ALFA') ; 105 : tps= tps '+' dt ; 106 : 107 : 'SI' testpr ; 108 : rvp . 'DELTAT' = dt ; 109 : f=rv . 'KIZG' . nomvi ; 110 : u=rv . 'INCO' . nomvi ; 111 : 'SI' ('EXISTE' (RV . 'KIZG1') nomvi) ; 112 : f1 = 'KOPS' f 113 : '+' ('KOPS' (rv . 'KIZG1' . nomvi) '*' u) ; 114 : 'SINON' ; 115 : f1=f ; 116 : 'FINSI' ; 117 : dm1f='KOPS' ('KOPS' f1 '/' (rv . 'KIZD' . nomvi)) 118 : '-' ('KOPS' U '/' dt) ; 119 : 120 : rvp . 'PRESSION' = 'KMF' (rvp . 'MATC') dm1f ; 121 : rvp . 'FORCE' = 'KCHT' (rvp . 'DOMAINE') 'SCAL' 'CENTRE' 122 : 0.D0 ; 123 : 'KRES' rvp (rvp . 'PRESSION') 124 : 'BETA' (rvp . 'KBETA') (rvp . 'BETA') 125 : 'PIMP' (rvp . 'KPIMP') (rvp . 'PIMP') ; 126 : rvp . 'GRADP' = 'KMTP' 0 (rvp . 'MATC') 127 : (rvp . 'PRESSION') ; 128 : rv . 'KIZG' . nomvi = 'KOPS' f 129 : '-' (rvp . 'GRADP') ; 130 : 'FINSI' ; 131 : 132 : 'SI' ('EGA' kma1 1) ; 133 : 'SI' ('EXISTE' rv 'CLIM') ; 134 : s1 = rv . 'CLIM' ; 135 : 'SINON' ; 136 : s1 matnul = 'KOPS' 'MATRIK' ; 137 : 'OUBLIER' matnul ; 138 : 'FINSI' ; 139 : 'SI' calass ; 140 : matass=ma1 ; 141 : rv.'matass'=matass ; 142 : 'FINSI' ; 143 : rv . 'METHINV' . 'MATASS' = matass ; 144 : dt1 = 1. ; 145 : s2 = 'KOPS' 'MTABX' rv 1.D0 ; 146 : rv . 'S2' = s2 ; 147 : 'SI' ('NEG' ('TYPE' s2) 'CHPOINT ') ; 148 : s2 matnul = 'KOPS' 'MATRIK' ; 149 : 'OUBLIER' matnul ; 150 : 'FINSI' ; 151 : res = kres ma1 'TYPI' (rv . 'METHINV') 152 : 'CLIM' s1 153 : 'SMBR' s2 154 : 'IMPR' 0 ; 155 : eps = 'TCRR' res omeg (rv . 'INCO') 'IMPR' 1 ; 156 : 'OUBLIER' res ; 157 : 'FINSI' ; 158 : 'SI' ('NON' calass) ; 159 : 'OUBLIER' ma1 ; 160 : 'FINSI' ; 161 : 'SI' ('EGA' kma1 1) ; 162 : calass = FAUX ; 163 : rv.'calass'=calass ; 164 : 'FINSI' ; 165 : 'MENAGE' ; 166 : 'FIN' bloci ; 167 : 168 : irt=0 ; 169 : 'SI' ('EGA' kma1 1) ; 170 : 'SI' (dt '>' 0.D0) ; 171 : 'TCNM' rv ; 172 : 'FINSI' ; 173 : 'SINON' ; 174 : irt = 'AVCT' rv (rv . 'ALFA') 'IMPR' (rv . 'FIDT') ; 175 : 'FINSI' ; 176 : 177 : 'SI' testran ; 178 : rv . 'CO' . 'VITESSE' ='KOPS' (rv . 'INCO' . nomvi) 179 : '-' (rv . 'SEDIM') ; 180 : k = 'ABS' (rv . 'INCO' . 'KN') ; 181 : e = 'ABS' (rv . 'INCO' . 'EN') ; 182 : k = 'KOPS' ('KOPS' k '*' k) '/' e ; 183 : DIF = 'KOPS' ('KOPS' k '*' 0.09) '+' (rv . 'COEF') ; 184 : rv . 'CO' . 'DIFFU' = 'NOEL' (rv . 'DOMAINE') dif ; 185 : rv . 'CO' . 'TEMPERA' = rv . 'INCO' . 'CN' ; 186 : 'FINSI' ; 187 : 'MENAGE' ; 188 : 189 : 'SI' ('EGA' irt 1) ; 190 : 'MESSAGE' ' Temps final atteint : ' 191 : (rv . 'PASDETPS' . 'TPS') ; 192 : 'QUITTER' bloc1 ; 193 : 'FINSI' ; 194 : 'FIN' bloc1 ; 195 : 196 : 'SI' testpr ; 197 : rvp . 'PRESSION' = 'KCHT' (rvp . 'DOMAINE') 'SCAL' 'CENTRE' 198 : (rvp . 'PRESSION') ; 199 : rvp . 'PN' = 'ELNO' (rvp . 'DOMAINE') 200 : (rvp . 'PRESSION') ; 201 : 'FINSI' ; 202 : ************************ E X A C ************************************ 203 : 'FINPROC' ; 204 : 205 : 206 : 207 :
© Cast3M 2003 - All rights reserved.
Disclaimer