Télécharger satnsathoriz.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : satnsathoriz.dgibi
  2. 'OPTI' 'TRAC' PSC ;
  3. GRAPH = FAUX ;
  4.  
  5.  
  6. ********************************************
  7. DEBPROC HHT_pro H1*FLOTTANT ;
  8. T1 = H1 * BET ** N + 1. ** m * TSR + TR ;
  9. FINPROC T1 ;
  10. ********************************************
  11.  
  12. ********************************************
  13. DEBPROC KKR_pro H0*FLOTTANT ;
  14. *K0 = H0 * ALF EXP * KS ;
  15. tt = HHT_PRO H0;
  16. K0 = (tt '-' tr) '/' TSR ** ALF * KS ;
  17. FINPROC K0 ;
  18. ********************************************
  19.  
  20. ********************************************
  21. DEBPROC TH_pro T1*FLOTTANT ;
  22. H1 = T1 - TR / TSR ** M1 - 1. ** N1 / BET ;
  23. FINPROC H1 ;
  24. ********************************************
  25.  
  26.  
  27.  
  28. ********************************************
  29. DEBPROC DHDT_pro H1*FLOTTANT T1*FLOTTANT ;
  30.  
  31. MESS 'Pour Frederic DEBUT';
  32. MESS '(BET*H1)' (BET*H1);
  33. MESS 'MOINSN' MOINSN;
  34. MESS 'Valeur =' (BET*H1 ** MOINSN);
  35. MESS ' ';
  36. MESS 'Il y a la une puissance negative FLOTTANT d un ';
  37. MESS 'FLOTTANT... au debut ==> 3.36 ** -2.0304';
  38. MESS 'Pour Frederic FIN';
  39. FIN; COMM 'A retirer';
  40.  
  41. DHDT0 = BET*H1 ** MOINSN + 1. * H1 / (T1 - TR) * N1 * M1 ;
  42. *MESS 'DHDT0' DHDT0;
  43. DHDT0 = 1./BET *N1*M1*1./(TSR) *
  44. (((T1 - TR / TSR) ** M1 - 1.)
  45. ** (N1 - 1.)) *((T1 - TR / TSR) ** (M1 - 1.)) ;
  46. *MESS 'DHDT0' DHDT0;
  47. FINPROC DHDT0 ;
  48. ********************************************
  49.  
  50.  
  51.  
  52. ********************************************
  53. DEBPROC KINPHI int00*FLOTTANT ;
  54. phi0 = 0. ;
  55. mess 'int00' int00;
  56. phit = (2* KS * PSI0) / (DT * int00) ;
  57. 'MESS' 'phit' phit ;
  58. * phi0 = 1.15;
  59. phi0 = phit;
  60. int0 = int00 - (phi0/2.); ;
  61. Int_p0 = prog int0 ;
  62. phi_p0 = prog phi0 ;
  63. repeter b1 (nb-1 );
  64. d0 = extr D2_prog &b1 ;
  65. phi0 = (2. * d0 / int0) + phi0 ;
  66. phi_p0 = phi_p0 et (prog phi0) ;
  67. int0 = int0 - phi0 ;
  68. Int_p0 = Int_p0 et (Prog int0) ;
  69. fin b1 ;
  70. d0 = extr D2_prog NB;
  71. phi0 = 2. * d0 / iNT0 + phi0 ;
  72. phi_p0 = phi_p0 et (prog phi0) ;
  73. * list phi_p0 ;
  74. * list int_p0 ;
  75. PNM1 = EXTR phi_p0 NB ;
  76. MESS 'PNM' PNM1 ;
  77. int = EXTR int_p0 NB ;
  78. MESS 'int' int ;
  79. FINPROC phi_p0 Int_p0 ;
  80. ********************************************
  81.  
  82.  
  83.  
  84. ********************************************
  85. DEBPROC KPROG T00*FLOTTANT TN0*FLOTTANT NB0*ENTIER MO1*MOT ;
  86. DT = T00 - TN0 / NB0 ;
  87.  
  88. SI (EGA MO1 DEMI ) ;
  89. MESS 'DEMI = ' MO1 ;
  90. T = T00 - (dt*0.5) ;
  91. h_pr0 = prog ;
  92. K_pr0 = prog ;
  93. D_pr0 = prog ;
  94. C_pr0 = prog ;
  95. T_pr0 = prog ;
  96. H = TH_pro T ;
  97. K = KKR_pro H ;
  98. DHDT = DHDT_pro H T ;
  99. D = K*DHDT ;
  100. C = 1./DHDT ;
  101. h_pr0 = prog H;
  102. K_pr0 = prog K;
  103. D_pr0 = prog D;
  104. C_pr0 = prog C;
  105. T_pr0 = prog T;
  106. T = T - DT ;
  107.  
  108. SINON ;
  109. MESS 'TOTA = ' MO1 ;
  110. T = T00 ;
  111. H = TH_pro T ;
  112. K = KKR_pro H ;
  113. DHDT = DHDT_pro H T ;
  114. D = K*DHDT ;
  115. C = 1./DHDT ;
  116. h_pr0 = prog H;
  117. K_pr0 = prog K;
  118. D_pr0 = prog D;
  119. C_pr0 = prog C;
  120. T_pr0 = prog T;
  121. T = T - DT ;
  122. FINSI;
  123.  
  124. repe b0 nb0 ;
  125. H = TH_pro T ;
  126. K = KKR_pro H ;
  127. DHDT = DHDT_pro H T ;
  128. D = K*DHDT ;
  129. C = 1./DHDT ;
  130. h_pr0 = h_pr0 ET (prog H) ;
  131. K_pr0 = K_pr0 ET (prog K) ;
  132. D_pr0 = D_pr0 ET (prog D) ;
  133. C_pr0 = C_pr0 ET (prog C) ;
  134. T_pr0 = T_pr0 ET (prog T);
  135. T = T - DT ;
  136. FIN B0 ;
  137. FINPROC h_pr0 K_pr0 D_pr0 C_pr0 T_pr0 ;
  138. ********************************************
  139.  
  140.  
  141.  
  142.  
  143. ********************************************
  144. DEBPROC A x*FLOTTANT ;
  145. si (x < 2.9 ) ;
  146. X2 = (-1.)*X*X ;
  147. A0 = X2 EXP * X * (1. - (ERF X) ** (-1.)) * RA2PI + (2.*X2) ;
  148. sinon ;
  149. X2 = X ** (-2.) * -0.5 ;
  150. A0 = 108830.*X2+8162.*X2+706.*X2+74.*X2+10.*X2+2.*X2+1.;
  151. *A0 = 8162.*X2+706.*X2+74.*X2+10.*X2+2.*X2+1.;
  152. *A0 = 706.*X2+74.*X2+10.*X2+2.*X2+1.;
  153. *A0 = 74.*X2+10.*X2+2.*X2+1.;
  154. FINSI ;
  155. FINPROC A0 ;
  156. ********************************************
  157.  
  158.  
  159.  
  160. ********************************************
  161. DEBPROC INTN phi*LISTREEL ;
  162. PNM1 = EXTR phi NB ;
  163. DD0 = EXTR D2_PROG NB ;
  164. XX = PNM1 * 0.5D0 * (DD0 ** -0.5D0) ;
  165. IC0 = PNM1*0.5D0 + (2.D0*DD0/PNM1*(A XX)) ;
  166. FINPROC IC0 ;
  167. ********************************************
  168.  
  169.  
  170.  
  171. 'DEBPROC' CALPHILI ;
  172.  
  173. h_prog K_prog D_prog C_prog T_prog = KPROG T0 TN NB 'TOTA';
  174.  
  175. dinf = extr D_prog 1 ;
  176. mess 'dinf' dinf;
  177. dinf = extr D_prog 2 ;
  178. mess 'dinf2' dinf;
  179. T1 = extr T_prog 1 ;
  180. mess 'T1' T1;
  181. TN1 = extr T_prog (DIME T_prog) ;
  182. T01 = extr T_prog 1 ;
  183. db0 = 2. / ((T01 - TN1) ** 2.) ;
  184.  
  185. Y = T_prog - (prog (DIME T_prog)*TN1) * K_prog ;
  186. KfH_evol = evol manu H_prog Y ;
  187. *-------------------------- Dmoy par K
  188. Db = (-1.) * ((INTG KfH_evol) extr 1) * db0 ;
  189. *-------------------------- calcul de I 1/2 (j = 1)
  190. *????????????????????????????????????
  191. Int = Db/pi**0.5*2.*nb ; 'MESS' 'Int' Int ;
  192. *Int = 1.e-3/(ts - tn)*nb ;list Int ;
  193. *Int = int * 2. ;
  194. *opti donn 5 ;
  195.  
  196. *-------------------------- calcul de D (I + 1/2)
  197. h2_prog K2_prog D2_prog C2_prog T2_prog = KPROG T0 TN nb DEMI ;
  198.  
  199.  
  200. *-------------------------- calcul de PHI (I + 1/2)
  201. phi_prog Int_prog = KINPHI Int ;
  202.  
  203.  
  204. I2_evol = evol manu T_prog phi_prog ;
  205. I2mi = I2_evol INTG * (-1.) / dt ; LIST I2mi ;
  206.  
  207. *I2_evol = evol manu phi_prog T_prog ;
  208. *DESS I2_evol ;
  209. *opti donn 5 ;
  210.  
  211. *-------------------------- calcul de ICHA (N - 1/2)
  212. ICHA = INTN phi_prog ;
  213.  
  214. *-------------------------- DELTA (J=1)
  215. DELTA = (EXTR Int_prog NB) - ICHA ;
  216.  
  217. *-------------------------- calcul de I 1/2 (j = 2)
  218. int1 = int ;
  219. Int = int1 - (DELTA * 0.5d0) ;
  220. deltI = Int - Int1 ;
  221.  
  222. repeter b2 20 ;
  223. *-------------------------- calcul de PHI (I + 1/2)
  224. phi_prog Int_prog = KINPHI Int ;
  225.  
  226. 'MESSAGE' 'valeur de xphi';
  227. 'LISTE' ('EXTRAIRE' 1 phi_prog);
  228.  
  229. I2_evol = evol manu T_prog phi_prog ;
  230. I2mi = I2_evol INTG * (-1.) / dt ;
  231. *-------------------------- calcul de ICHA (N - 1/2)
  232. ICHA = INTN phi_prog ;
  233. 'iter :' &b2 'icha' ICHA 'DELTA' DELTA 'Itot' (maxi I2mi) 'int' int;
  234.  
  235. *-------------------------- DELTA (J=1)
  236. delta1 = DELTA ;
  237. DELTA = (EXTR Int_prog NB) - ICHA ;
  238.  
  239. *-------------------------- calcul de I 1/2
  240. int1 = int ;
  241. *int = int1 - (DELTA * delta1 / (DELTA + delta1)) ;
  242. *int = int1 - (DELTA * deltI / (DELTA + delta1)) ;
  243. Int = int1 - (DELTA * 0.5d0 ) ;
  244. deltI = Int - Int1 ;
  245. si ( (DELTA abs) < (ICHA*1.e-4))
  246. quitter b2 ;
  247. finsi;
  248. menage ;
  249. fin b2 ;
  250.  
  251.  
  252. 'FINPROC' phi_prog h_prog T_prog ;
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263. 'MESS' 'Calcul de la solution de Philip en milieu saturé non saturé';
  264. xf = 0.0;
  265. 'MESS' 'xf (frontiére saturé / non saturé) ' xf;
  266. PSI0 = 1.D0;
  267.  
  268. 'MESS' 'Quelle est la pression d injection dans le milieu saturé?' ;
  269. mess 'PSI0' PSI0;
  270.  
  271. ALF = 0.08 * 100. ;
  272. KS = 5.85E-2 / 3600. ;
  273. TS = 0.3 ;
  274. TR = 0.055 ;
  275. TSR = TS - TR ;
  276. N = 2.0304 ; N1 = 1./N ; MOINSN = (-1.)*N ;
  277. M = -0.5075 ; M1 = 1./M ;
  278. BET = -0.029227 * 100. ;
  279.  
  280. nb = 500 ;
  281. H00 = -1.E-20 ;
  282. *H00 = 0;
  283. Hinf = -1.15D0 ;
  284.  
  285. RA2PI = PI ** (-0.5) * 2. ;
  286.  
  287. phi0 = 0. ;
  288.  
  289. HN = HINF ;
  290.  
  291. TN = HHT_pro HN ; LIST TN ;
  292.  
  293. HN = TH_pro TN ; LIST HN ;
  294.  
  295. KN = KKR_pro HN ; LIST KN ;
  296.  
  297. DHDTN = DHDT_pro HN TN ; LIST DHDTN ;
  298.  
  299. DN = KN*DHDTN ;
  300.  
  301. CN = 1./DHDTN ;
  302.  
  303. T0 = HHT_pro H00 ;
  304.  
  305. LIST (HN - (TH_pro (TN - 1.E-6)) / 1.E-6) ;
  306.  
  307. DT = T0 - TN / NB ;
  308.  
  309.  
  310.  
  311.  
  312. LTEMPS = 'PROG' 1000. 'PAS' 1000. (1000. * 3.) ;
  313. ntemps = 'DIME' LTEMPS ;
  314. lastemps = 0. ;
  315. TETSAT = TS ;
  316. TETNSAT = HHT_pro HINF ;
  317. OLDXDTET = (TETSAT - TETNSAT) * xf ;
  318.  
  319. *
  320. *
  321. * CALCUL DE PHI, H et TETA
  322. *
  323. phi_prog h_prog t_prog = CALPHILI ;
  324.  
  325.  
  326.  
  327. xfini = xf;
  328. 'REPETER' BTEMPS ntemps ;
  329. ttemps = 'EXTR' LTEMPS &BTEMPS ;
  330. DELTEMP = ttemps - lastemps ;
  331. * profile de la charge dans la zone saturée
  332. LXSAT = 'PROG' 0. ;
  333. LHSAT = 'PROG' PSI0 ;
  334. LTETSAT = 'PROG' TETSAT ;
  335.  
  336.  
  337. LXNSAT = phi_prog * ((TTEMPS)** 0.5) ;
  338.  
  339. ID = 'PROG' ('DIME' LXNSAT)*1. ;
  340. phif = EXTR phi_prog 1;
  341. mess 'phif' phif;
  342. xfr = xfini + (phif*(ttemps**0.5));
  343. mess 'xfr= 'xfr;
  344. LXNSAT = LXNSAT + (ID*xfini) ;
  345. LHNSAT = h_prog ;
  346. LTETNSAT = t_prog ;
  347. *
  348. LX = LXSAT ET LXNSAT ;
  349. LTET = LTETSAT ET LTETNSAT ;
  350. LH = LHSAT ET LHNSAT ;
  351.  
  352. 'SI' (&BTEMPS 'EGA' 1) ;
  353. * (LH = 'ORDO' LH CROISSANT);
  354. uun = 'PROG' ('DIME' LX) * 1.D0;
  355. courb = ('EVOL' 'MANU'(uun '-' LX) LH);
  356. 'SINON' ;
  357. * (LH = 'ORDO' LH CROISSANT) ;
  358. courb = courb 'ET' ('EVOL' 'MANU' (uun '-' LX) LH);
  359. 'FINSI' ;
  360. *
  361. 'FIN' BTEMPS ;
  362.  
  363.  
  364. TAB1 = 'TABLE' ;
  365. TAB1 . 'TITRE' = 'TABLE' ;
  366. TAB1 . 'TITRE' . 1 = 'exacte 1000' ;
  367. TAB1 . 'TITRE' . 2 = 'exacte 2000' ;
  368. TAB1 . 'TITRE' . 3 = 'exacte 3000' ;
  369. TAB1 . 1 = 'TIRR ';
  370. TAB1 . 2 = 'TIRR ';
  371. TAB1 . 3 = 'TIRR ';
  372.  
  373.  
  374. 'SI' (GRAPH);
  375. dess (courb) LEGE TAB1;
  376. 'FINSI' ;
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385. ******************** CAS TEST : cacul.dgibi ************************
  386. *
  387. *
  388. * Test de fonctionnement de DARCYSAT en 2D sans effet de gravité.
  389. * ===================================================================
  390. * Infiltration d'eau dans une colonne horizontale de sable uniformément
  391. * désaturé.
  392. *
  393. * - condition initiale : désaturation uniforme correspondant à une
  394. * succion de 1,15 m ;
  395. * - a l'instant initial, une extrémité de la colonne est noyée.
  396. * La frontière est supposée rester a pression nulle ;
  397. *
  398. * ===================================================================
  399. * Les options de modélisation declarées dans la table transmise à
  400. * la procédure DARCYSAT sont les suivantes :
  401. *
  402. *
  403. * - les effets gravitationnels ne sont pas pris en compte : pression =
  404. * charge (indice GRAVITE absent ; valeur par défaut : FAUX);
  405. *
  406. * - Une liste de temps de sauvegarde est fournie en valeur de l'indice
  407. * TEMPS_SAUVES ;
  408. *
  409. * - Le pas de temps est d'abord automatique (indice TEMPS_CALCULES absent)
  410. * L'utilisateur fournit
  411. * > le pas de temps initial (indice 'DT_INITIAL'),
  412. * > le nombre d'itérations recherché par pas de temps (indice 'NITER')
  413. * > le nombre de pas de temps (indice 'NPAS')
  414. *
  415. * - Le calcul est ensuite refais avec une liste de temps de calcul
  416. * donnée à l'indice TEMPS_CALCULES ;
  417. *
  418. * - L'homogenéisation spatiale des propriétes physiques s'effectue
  419. * par moyenne arithmétique des valeurs obtenues aux faces (indice
  420. * HOMOGENEISATION de valeur DECENTRE)
  421. *
  422. *!!!!!!!!!!!!!!!!!!!!!!!!
  423. * - La précision de convergence demandée est de 0,5 mm (indice RESIDU_MAX)
  424. * cas test tiré du rapport DMT 97/25 :
  425. * "Implémentation dans CASTEM 2000 d'un modèle de transfert hydrique
  426. * en milieu poreux non saturé"
  427. *
  428. *
  429. ********************* CAS TEST : cacul.dgibi ************************
  430.  
  431. 'OPTION' 'ECHO' 1 ;
  432. 'SAUTER' 'PAGE';
  433. *
  434.  
  435. 'TITRE' 'infiltration horizontale dans le sable : cacul.dgibi' ;
  436. 'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
  437. *'OPTION' 'ISOV' 'LIGN' ;
  438. *'TRACER' 'PSC' ;
  439.  
  440. ************************************************************************
  441. * Fonction qui calcule la perméabilité en fonction de la
  442. * saturation réduite.
  443. *
  444. * Loi puissance :
  445. * Perméabilité : K = Ks S^B
  446. *
  447. * Paramètres physiques à définir dans la table LOI :
  448. * --------------------------------------------------
  449. * ALPHA : coef. B (s.d.)
  450. * PERMSAT : coef. Ks, perméabilité à saturation (m/s)
  451. *
  452. * Entrée :
  453. * --------
  454. * LOI : table de données décrite ci-dessus
  455. * SAT : saturation réduite
  456. * TEST : mot facultatif 'NOTEST' qui permet de shunter les tests.
  457. *
  458. * Sortie :
  459. * --------
  460. * K1 : perméabilité totale en eau (m/s)
  461. *
  462. ************************************************************************
  463.  
  464.  
  465. *--------------------------------------------------------------------
  466. * Création maillage
  467. *
  468. *- Discrétisation :
  469. ENX = 1 ;
  470. ENY = 50 ;
  471. 'DENS' (1./eny) ;
  472.  
  473. *- Création des points et des droites
  474. *
  475. A0 = -0.5 1.0D0; B0 = 0.5 1.0D0;
  476. 'DENS' (1./eny) ;
  477. A1 = -0.5 0.5D0; B1 = 0.5 0.5D0;
  478. A2 = -0.5 0.25D0 ; B2 = 0.5 0.25D0 ;
  479. A3 = -0.5 0.0D0; B3 = 0.5 0.0D0 ;
  480.  
  481. *- Création des droites
  482. *
  483. AB0 = 'DROIT' ENX A0 B0 ;
  484. AB1 = 'DROIT' ENX A1 B1 ;
  485. AB2 = 'DROIT' ENX A2 B2 ;
  486. AB3 = 'DROIT' ENX A3 B3 ;
  487.  
  488. *- Creation des surfaces
  489. *
  490. MASSIF0 = AB3 'REGLER' AB2 'REGLER' AB1 'REGLER' AB0 ;
  491. ENY = 'NBEL' MASSIF0 ;
  492. ENTR = 'COULEUR' ('INVERSE' AB0) 'ROUGE' ;
  493. SORT = 'COULEUR' (AB3) 'ROUGE' ;
  494.  
  495. 'SI' GRAPH ;
  496. 'TRACER' (MASSIF0 'ET' ENTR 'ET' SORT) ;
  497. 'FINSI' ;
  498.  
  499. *- Creation des maillages contenant tous les points
  500. *
  501. QFTOT = 'CHANGER' MASSIF0 'QUAF' ;
  502. QFSORT = 'CHANGER' SORT 'QUAF' ;
  503. QFENTR = 'CHANGER' ENTR 'QUAF' ;
  504.  
  505.  
  506. 'ELIMINATION' 0.00001 (QFTOT 'ET' QFSORT 'ET' QFENTR) ;
  507.  
  508. *- Modèles
  509. *
  510. MODHYB = 'MODELE' QFTOT 'DARCY' 'ISOTROPE' ;
  511. MODENTR = 'MODELE' QFENTR 'DARCY' 'ISOTROPE' ;
  512. MODSORT = 'MODELE' QFSORT 'DARCY' 'ISOTROPE' ;
  513. CEENTR = 'DOMA' MODENTR 'CENTRE' ;
  514. CESORT = 'DOMA' MODSORT 'CENTRE' ;
  515. HYCEN = 'DOMA' MODHYB 'CENTRE' ;
  516. HYFAC = 'DOMA' MODHYB 'FACE';
  517.  
  518. *- Création ligne de suivi pour le post-traitement et le test
  519. * ligne des points centres (cas 1D)
  520. *
  521. 'REPETER' BCL (ENY - 1) ;
  522. IP = &BCL ;
  523. JP = IP + 1 ;
  524. PI = 'POINT' HYCEN IP ;
  525. PJ = 'POINT' HYCEN JP ;
  526. 'SI' (IP 'EGA' 1);
  527. LCENC = ('MANU' 'SEG2' PI PJ) ;
  528. 'SINON' ;
  529. LCENC = LCENC 'ET' ('MANU' 'SEG2' PI PJ) ;
  530. 'FINSI' ;
  531. FIN BCL ;
  532.  
  533. *--------------------------------------------------------------------
  534. *- pression initiale (metre d'eau) dans le sable
  535. HN = -1.15 ;
  536.  
  537. *--------------------------------------------------------------------
  538. *- Conditions aux limites
  539.  
  540.  
  541. * GBM modifie supprime bloque
  542. *- frontière en limite du domaine de calcul (milieu désaturé)
  543. ESORT = 'MANU' 'CHPO' CESORT 1 'TH' HN 'NATURE' 'DISCRET';
  544.  
  545. *- frontière mouillée
  546. EENTR = 'MANU' 'CHPO' CEENTR 1 'TH' 1. 'NATURE' 'DISCRET';
  547.  
  548.  
  549. *- chargement des CLs
  550. LICALC = 'PROG' 0.D0 1.e20 ;
  551. LIST1 = 'PROG' 2 * 1.D0 ;
  552. VALI0 = 'CHAR' 'THIM' (ESORT et EENTR) ('EVOL' 'MANU' LICALC LIST1) ;
  553.  
  554. *--------------------------------------------------------------------
  555. *- initialisation des inconnues
  556. * (doit être compatible avec les conditions aux limites)
  557. *
  558.  
  559. *- trace de charge d'eau
  560. *TH0 = 'MANU' 'CHPO' ('DIFF' CEENTR HYFAC) 1 'TH' HN 'NATURE' 'DISCRET';
  561. *TH0 = TH0 + SIMPE ;
  562.  
  563. *- charge d'eau
  564. H0 = 'MANU' 'CHPO' HYCEN 1 'H' HN 'NATURE' 'DIFFUS';
  565. H0 = 'MASQUE' ('COORDONNEE' 2 ('DOMA' modhyb centre))
  566. SUPERIEUR 0.98D0;
  567. H0 = 1 '-' H0;
  568. H0 = (HN * H0) + ((1.D0 - H0) * 1.D0);
  569. H0 = 'NOMC' 'H' H0 NATURE DISCRET;
  570. 'TRACER' ('KCHA' MODHYB H0 'CHAM') modhyb;
  571.  
  572.  
  573. *- flux
  574. QFACE0 = 'MANU' 'CHPO' HYFAC 1 'FLUX' 0.D0 'NATURE' 'DISCRET' ;
  575.  
  576.  
  577. * ---------------------------
  578. * = Table DARCY_TRANSITOIRE =
  579. * ---------------------------
  580. *- initialisation table
  581. SATUR = 'TABLE' ;
  582. SATUR. 'TEMPS' = 'TABLE' ;
  583. SATUR. 'CHARGE' = 'TABLE' ;
  584. SATUR. 'FLUX' = 'TABLE' ;
  585.  
  586. SATUR . 'ITMAX' = 45;
  587.  
  588.  
  589. *- données géommétriques
  590. SATUR. 'SOUSTYPE' = 'DARCY_TRANSATUR' ;
  591. SATUR. 'MODELE' = MODHYB ;
  592.  
  593. *- instant initial
  594. SATUR. 'TEMPS' . 0 = 0. ;
  595. SATUR. 'CHARGE' . 0 = 'COPIER' H0 ;
  596. SATUR. 'FLUX' . 0 = 'COPIER' QFACE0 ;
  597.  
  598. *********************************************
  599. * GBM
  600. *- conditions aux limites et chargements
  601. *SATUR. 'BLOCAGES_DARCY' = BSORT 'ET' BENTR ;
  602. *SATUR. 'CHARGEMENT' = VALI0 ;
  603. SATUR . 'TRACE_IMPOSE' = VALI0 ;
  604.  
  605. SATUR . 'LUMP' = FAUX;
  606. SATUR . 'TYPDISCRETISATION' = 'VF' ;
  607.  
  608.  
  609.  
  610. * GBM MODIFIE
  611.  
  612. TABRES = table METHINV;
  613. TABRES . 'TYPINV' = 1;
  614. TABRES . 'PRECOND' = 5;
  615.  
  616. SATUR . 'METHINV' = TABRES;
  617. SATUR . 'METHINV' . RESID = 1.D-20;
  618.  
  619. *******************************************
  620.  
  621.  
  622.  
  623. *******************************************
  624.  
  625.  
  626.  
  627. *- données physiques
  628. * loi de perméabilité
  629. LoiP = 'TABLE' 'PUISSANCE';
  630. LoiP. 'ALPHA' = 8. ;
  631. LoiP. 'PERMSAT' = 5.85E-2 / 3600. ;
  632. SATUR.'LOI_PERMEABILITE' = 'TABLE' LoiP ;
  633.  
  634. * loi de succion
  635. LoiS = 'TABLE' 'VAN_GENUCHTEN';
  636. LoiS. 'PORO' = 0.3 ;
  637. LoiS. 'TERESIDU' = 0.055 ;
  638. LoiS. 'NEXP' = 2.0304 ;
  639. LoiS. 'MEXP' = 0.5075 ;
  640. LoiS. 'BHETA' = 0.029227 * 100. ;
  641. SATUR.'LOI_SATURATION' = 'TABLE' LoiS ;
  642.  
  643. SATUR . 'COEF_EMMAGASINEMENT' = 0.D-6;
  644. *SATUR . 'XI' = 1.D-5;
  645.  
  646. *- données numériques
  647. SATUR. 'TEMPS_FINAL' = 2000.D0 ;
  648. SATUR. 'HOMOGENEISATION' = 'CHAINE' 'DECENTRE' ;
  649.  
  650.  
  651. SATUR.'SOUS_RELAXATION' = 1.;
  652. SATUR. 'NPAS' = 10000 ;
  653. SATUR. 'RESIDU_MAX' = 1.D-4 ;
  654. SATUR. 'NITER' = 10 ;
  655. SATUR. 'DT_INITIAL' = 0.1D0 ;
  656. SATUR. 'TEMPS_SAUVES' = ('PROG' 1 'PAS' 1 2.)*1000. ;
  657. *SATUR. 'TEMPS_CALCULES' = ('PROG' 1 'PAS' 1 3.)*1000. ;
  658. SATUR. 'MESSAGES' = 2 ;
  659.  
  660.  
  661.  
  662. *--------------------------------------------------------------------
  663. *- Vérification du choix du dp minimum pour le calcul de la capacité.
  664. * droite support des variables
  665. dx = 'DROIT' (0. -1.15 ) 1000 (0. 0.) ;
  666. zc = 'COOR' dx 2 ;
  667. ev2 = 'EVOL' 'BLEU' 'CHPO' zc 'SCAL' dx ;
  668. px = 'EXTR' ev2 'ORDO' ;
  669. * calcul de la teneur en eau pour la pression zc
  670. s0 t0 cap = HT_PRO (SATUR.'LOI_SATURATION') ZC ;
  671. ev0 = 'EVOL' 'TURQ' 'CHPO' s0 'SCAL' dx ;
  672. evt = 'EVOL' 'VERT' 'MANU' px (100. * ('EXTR' ev0 'ORDO')) ;
  673.  
  674. 'SI' GRAPH ;
  675. 'DESSIN' evt 'TITX' 'Pc(m)' 'TITY' 'S(%)'
  676. 'TITRE' 'Loi capillaire S(Pc)' ;
  677. 'FINSI' ;
  678.  
  679. * calcul de la teneur en eau pour la pression zc - dp
  680. dp = 1.e-4 ;
  681. s1 t1 cap = HT_PRO (SATUR.'LOI_SATURATION')
  682. ('KOPS' zc '-' dp) ;
  683. * représentation de la capacité
  684. c1 = (t0 - t1) / dp;
  685. ev1 = 'EVOL' 'ROUGE' 'CHPO' c1 'SCAL' dx ;
  686. evc = 'EVOL' 'JAUNE' 'MANU' px ('EXTR' ev1 'ORDO') ;
  687.  
  688. 'SI' GRAPH ;
  689. 'DESSIN' evc 'TITX' 'Pc(m)' 'TITY' 'Capa(1/m)'
  690. 'TITRE' 'Capacite capillaire' ;
  691. 'FINSI' ;
  692.  
  693. * ===========================
  694. * | 1er CALCUL |
  695. * ===========================
  696. *- fonctionnement avec temps automatiques
  697.  
  698.  
  699.  
  700. DARCYSAT SATUR ;
  701.  
  702.  
  703. * Post-traitement
  704. * ===============
  705.  
  706. LT = 'LECT' 0 PAS 1 ((dime SATUR.TEMPS) - 1) ;
  707. liopt = 'MOTS' 'MIMA' 'AXES';
  708. TDES = TRACHIS SATUR 'CHARGE' LCENC LT 'PREF' ' ' 'UNIT' 's' ;
  709.  
  710.  
  711.  
  712.  
  713. * le fichier lu est produit par resanalyphilhorsatnsat.dgibi
  714.  
  715.  
  716. LT = 'LECT' 1 'PAS' 1 (('DIME' SATUR.'TEMPS') - 1) ;
  717. liopt = 'MOTS' 'MIMA' 'AXES';
  718. TDES = TRACHIS SATUR 'CHARGE' LCENC LT 'PREF' ' ' 'UNIT' 's' ;
  719. TDES . 3 = 'TABLE' ;
  720. TDES . 3 . VALEUR = 'EXTRAIRE' courb 'COUR' 1;
  721. TDES . 3 . LEGEND2 = TAB1 . TITRE . 1;
  722. TDES . 3 . LEGEND1 = ' ' ;
  723. TDES . 4 = 'TABLE' ;
  724. TDES . 4 . VALEUR = 'EXTRAIRE' courb 'COUR' 2;
  725. TDES . 4 . LEGEND2 = TAB1 . TITRE . 2;
  726. TDES . 4 . LEGEND1 = ' ' ;
  727. * TDES . 5 = 'TABLE' ;
  728. * TDES . 5 . VALEUR = 'EXTRAIRE' courb 'COUR' 3;
  729. * TDES . 5 . LEGEND2 = TAB1 . TITRE . 3;
  730. * TDES . 5 . LEGEND1 = ' ' ;
  731.  
  732. 'SI' GRAPH ;
  733. DESTRA TDES liopt 'TITX' 'z (m)' 'TITY' 'Pw (m)' ;
  734. 'FINSI' ;
  735.  
  736.  
  737. toto = 'PRIM' TDES . 2 . VALEUR;
  738. inta1 = 'EXTRAIRE' toto 'ORDO';
  739. inta1 = 'EXTRAIRE' ('DIME' inta1) inta1;
  740.  
  741. 'LISTE' inta1;
  742.  
  743. err1 = 'ABS' (inta1);
  744. 'LISTE' err1;
  745.  
  746. 'SI' ((err1 '-' 2.95D-2) > 1.D-3) ;
  747. 'ERREUR' 5;
  748. 'FINSI' ;
  749.  
  750.  
  751. *opti donn 5;
  752.  
  753. * ===========================
  754. * | 2nd CALCUL |
  755. * ===========================
  756. *- fonctionnement avec une liste de temps calculés
  757. SATUR. 'TEMPS' = 'TABLE' ;
  758. SATUR. 'TRACE_CHARGE' = 'TABLE' ;
  759. SATUR. 'CHARGE' = 'TABLE' ;
  760. SATUR. 'FLUX' = 'TABLE' ;
  761. SATUR. 'TEMPS' . 0 = 0. ;
  762. SATUR. 'TRACE_CHARGE' = TABLE ;
  763. SATUR. 'CHARGE' . 0 = H0 ;
  764. SATUR. 'FLUX' . 0 = QFACE0 ;
  765. SATUR . 'TYPDISCRETISATION' = 'EFMH' ;
  766.  
  767.  
  768.  
  769.  
  770. DARCYSAT SATUR ;
  771.  
  772. * Post-traitement
  773. * ===============
  774. *-- Test de non régression
  775. * Le test est effectué en vérifiant la solution
  776.  
  777. *- solution après 10 pas de temps
  778.  
  779.  
  780. *-- Tracé (tous les temps)
  781.  
  782. LT = 'LECT' 0 'PAS' 1 (('DIME' SATUR.'TEMPS') - 1) ;
  783. liopt = 'MOTS' 'MIMA' 'AXES';
  784. TDES = TRACHIS SATUR 'CHARGE' LCENC LT 'PREF' ' ' 'UNIT' 's' ;
  785. LT = 'LECT' 1 'PAS' 1 (('DIME' SATUR.'TEMPS') - 1) ;
  786. liopt = 'MOTS' 'MIMA' 'AXES';
  787. TDES = TRACHIS SATUR LCENC 'CHARGE' LT 'PREF' ' ' 'UNIT' 's' ;
  788. TDES . 3 = 'TABLE' ;
  789. TDES . 3 . VALEUR = 'EXTRAIRE' courb 'COUR' 1;
  790. TDES . 3 . LEGEND2 = TAB1 . TITRE . 1;
  791. TDES . 3 . LEGEND1 = ' ' ;
  792. TDES . 4 = 'TABLE' ;
  793. TDES . 4 . VALEUR = 'EXTRAIRE' courb 'COUR' 2;
  794. TDES . 4 . LEGEND2 = TAB1 . TITRE . 2;
  795. TDES . 4 . LEGEND1 = ' ' ;
  796. 'SI' GRAPH ;
  797. DESTRA TDES liopt 'TITX' 'z (m)' 'TITY' 'Pw (m)' ;
  798. 'FINSI' ;
  799.  
  800.  
  801.  
  802. toto = 'PRIM' TDES . 2 . VALEUR;
  803. inta2 = 'EXTRAIRE' toto 'ORDO';
  804. inta2 = 'EXTRAIRE' ('DIME' inta2) inta2;
  805.  
  806. 'MESSAGE' inta1 inta2;
  807.  
  808. err2 = 'ABS' (inta2);
  809. 'LISTE' err2;
  810.  
  811. 'SI' ((err2 '-' 1.22D-2) > 1.D-3) ;
  812. 'ERREUR' 5;
  813. 'FINSI' ;
  814.  
  815. 'MESSAGE' err1 err2;
  816.  
  817. 'FIN';
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales