Télécharger warrickEFMH.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : warrickEFMH.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ********************************************************************
  5. *
  6. GRAPH = FAUX ;
  7. *
  8. ******************** CAS TEST : warrick.dgibi **********************
  9. *
  10. * Test de fonctionnement de DARCYSAT en 2D avec effet de gravité
  11. * en regime permanent.
  12. *
  13. *-------------------------------------------------------------------
  14. *
  15. * A. GENTY, G. BERNARD-MICHEL - DM2S/SFME/MTMS - 02/2006
  16. *
  17. * ==================================================================
  18. * Infiltration d'eau depuis une source ponctuelle placee dans un
  19. * milieu 2D non sature limite par des surfaces inferieures et
  20. * superieure a pression d'eau (h<0) imposees.
  21. *
  22. * h = h1 (charge H = h1 + z0)
  23. * z=z0 ---------------------------
  24. * I I
  25. * I I
  26. * Q1 -> I I
  27. * (z=z0-d) I I
  28. * I hi = (z/z0)(h1-h0) + h0 I
  29. * I (charge Hi = hi + z) I
  30. * flux nul I I flux nul
  31. * I I
  32. * I I
  33. * I I
  34. * I I
  35. * I I
  36. * I I
  37. * z=0 ---------------------------
  38. * x=0 h = h0 (charge H = h0) x=x0
  39. *
  40. * Ce probleme est du meme type que le Probleme V9 decrit dans la
  41. * notice de validation v 2.50 de Porflow.
  42. *
  43. * La solution analytique (en pression) du probleme est obtenue en
  44. * suivant la demarche de Warrick et Lomen, 1977,
  45. * Soil Sci. Soc. Am. J., Vol 41, pp 849-851.
  46. * ==================================================================
  47. *
  48. * - conditions initiales :
  49. * il s'agit de trouver la solution d'un regime permanent, les
  50. * conditions initiales sont donc a priori sans influence. On
  51. * choisira cependant, dans l'objectif d'accelerer la convergence
  52. * du calcul, la pression initiale dans le domaine sous la forme
  53. * hi = (z/z0)(h1-h0) + h0 (charge initiale Hi = hi + z).
  54. *
  55. * - conditions aux limites :
  56. * > la pression sur la frontiere inferieure du domaine est imposee
  57. * a h = h0 (charge H = h + z = h0)
  58. * > la pression sur la frontiere superieure du domaine est imposee
  59. * a h = h1 (charge H = h + z = h1 + z0)
  60. * > Un flux entrant Q1 est imposé sur une surface d'extention 2*r0
  61. * centree a la cote z = z0 - d sur la frontiere gauche du domaine
  62. * > les autres faces exterieures du domaine sont imposees a flux nul
  63. *
  64. * ===================================================================
  65. * Les options de modélisation declarées dans la table transmise à
  66. * la procédure DARCYSAT sont les suivantes :
  67. *
  68. * - les effets gravitationnels sont pris en compte :
  69. * FORCE_GRAVITE = 1.
  70. *
  71. * - Le calcul est réalisé avec l'option de calcul de pas de temps
  72. * automatique avec dt_initial = 10000 s sur une duree totale
  73. * de 100000 s (regime permanent).
  74. *
  75. * - Les options numeriques testees sont les suivantes:
  76. * EFMH CENTRE TYPINV = 3 PRECOND = 5
  77. * EFMH DECENTRE TYPINV = 3 PRECOND = 5
  78. * VF CENTRE TYPINV = 3 PRECOND = 5
  79. * VF DECENTRE TYPINV = 3 PRECOND = 5
  80. *
  81. * - La précision de convergence demandée est de 1e-03 m
  82. *
  83. * ===================================================================
  84. * RESULTATS ATTENDUS
  85. *
  86. * Le permanent de pression sera compare a la solution analytique
  87. * par l'intermediaire des erreurs L_infini et L_2.
  88. * Une erreur inferieure a 1.5 % est attendue.
  89. *
  90. * ===================================================================
  91. ****************** CAS TEST : warrick.dgibi **********************
  92. *
  93. 'OPTION' 'ECHO' 1 ;
  94. 'SAUTER' 'PAGE';
  95. *
  96. 'TITRE' 'Infiltration source ponctuelle : warrick' ;
  97. OPTI DIME 2 ELEM QUA4 ;
  98. OPTI ISOV SULI ;
  99. *OPTI TRAC PSC ;
  100. *
  101. ********************************************************************
  102. * Fonction qui calcule la perméabilité en fonction de la
  103. * saturation (loi exponentielle)
  104. ************************************************************************
  105. 'DEBPROC' KR_EXPO1 LOI*'TABLE' SAT/'CHPOINT' TEST/'MOT' ;
  106.  
  107. 'SI' ('NON' ('EXISTE' TEST)) ;
  108. TEST = 'MOT' 'OK' ;
  109. 'FINSI' ;
  110.  
  111. *- Vérification des paramètres
  112. 'SI' ('NEG' TEST 'NOTEST') ;
  113. NOMT = 'MOT' LOI.'NOMZONE' ;
  114.  
  115. 'SI' ('NON' ('EXISTE' LOI 'ALPHA' )) ;
  116. 'ERREUR' 'Il manque le coefficient ALPHA dans'
  117. ' la loi de perméabilité de ' NOMT ;
  118. 'QUITTER' KR_PRO ;
  119. 'FINSI' ;
  120. 'SI' ('NON' ('EXISTE' LOI 'PERMSAT' )) ;
  121. 'ERREUR' 'Il manque le coefficient PERMSAT dans'
  122. ' la loi de perméabilité de ' NOMT;
  123. 'QUITTER' KR_PRO ;
  124. 'FINSI' ;
  125. 'FINSI' ;
  126. *
  127. se1 = 'KOPS' SAT '**' -1. ;
  128. se2 = 'KOPS' se1 '-' 1. ;
  129. se3 = 'KOPS' se2 '*' -1. ;
  130. K11 = 'KOPS' se3 '*' LOI.'ALPHA' ;
  131. K12 = EXP(K11) ;
  132. K2 = 'KOPS' K12 '*' LOI.'PERMSAT' ;
  133.  
  134. 'DETRUIT' K11 ;
  135. 'DETRUIT' K12 ;
  136. 'DETRUIT' se1 ;
  137. 'DETRUIT' se2 ;
  138. 'DETRUIT' se3 ;
  139.  
  140. 'FINPROC' K2 ;
  141. *-------------------------------------------------------------------
  142. *-------------------------------------------------------------------
  143. *--------------------- Création du maillage 2D ---------------------
  144. *
  145. *- Densités de mailles
  146. NDX1 = 20 ;
  147. NDY1T = 6 ;
  148. NDY12S = 8 ;
  149. NDY1B = 35 ;
  150. *
  151. NDY1 = NDY1T + NDY12S + NDY1B ;
  152. *
  153. *- Cotes du domaine rectangulaire (x0 et z0)
  154. XCA1 = 0.61 ;
  155. YCA1 = 1.22 ;
  156. *
  157. *- Profondeur du point d'injection (d)
  158. YDD1 = 0.15 ;
  159. *- demi surface d'injection
  160. R0 = 0.05 ;
  161. *
  162. *- Création des points du domaine
  163. A1 = 0. 0. ;
  164. A2 = XCA1 0. ;
  165. A3 = XCA1 YCA1 ;
  166. A4 = 0. YCA1 ;
  167. *
  168. *- Point d'injection
  169. YCAZ1 = YCA1 - YDD1 ;
  170. A5T = 0. (YCAZ1 + R0) ;
  171. A5B = 0. (YCAZ1 - R0) ;
  172. *
  173. * densites
  174. DMINI1 = (2.D0 * R0) / NDY12S ;
  175. DMOY1 = (YCA1 - YDD1 - R0) / NDY1B ;
  176. DMOY2 = (YDD1 - R0) / NDY1T ;
  177. ALP1 = DMINI1 / DMOY1 ;
  178. ALP2 = DMINI1 / DMOY2 ;
  179. DMAX1 = DMOY1 / ALP1 ;
  180. DMAX2 = DMOY2 / ALP2 ;
  181. *
  182. *- Création des lignes
  183. LIN1 = DROIT NDX1 A1 A2 ;
  184. LIN2 = DROIT NDY1 A2 A3 ;
  185. LIN3 = DROIT NDX1 A3 A4 ;
  186. LIN4T = DROIT (-1 * NDY1T) A4 A5T 'DINI' DMAX2 'DFIN' DMINI1 ;
  187. LIN412S = DROIT NDY12S A5T A5B ;
  188. * Attention avec l'operateur droit qui gere comme il peut lorsque
  189. * N (négatif), DINI et DFINI sont donnés et non nécessairement compatibles
  190. DMAX1 = DMAX1 / 2.D0 ;
  191. LIN4B = DROIT (-1 * NDY1B) A5B A1 'DINI' DMINI1 'DFIN' DMAX1 ;
  192. LIN4 = LIN4T ET LIN412S ET LIN4B ;
  193. *
  194. *- Face pour imposition du flux entrant
  195. LSOURCE = COUL VERT LIN412S ;
  196. *
  197. *- Face droite
  198. LDROIT = LIN2 ;
  199. *
  200. *- Face gauche
  201. LGAU = LIN4T ET LIN4B ;
  202. *
  203. *- Création du domaine
  204. MASSIF0 = DALLER LIN1 LIN2 LIN3 LIN4 PLAN ;
  205. LHAUT = LIN3 COUL BLEU ;
  206. LBAS = LIN1 COUL ROUG ;
  207. *
  208. *-Tracé du maillage avec faces sup et inf pour conditions limites
  209. * et surface d'entree du debit
  210. ELIM 0.00001 (MASSIF0 ET LBAS ET LHAUT ET LGAU ET LSOURCE) ;
  211. SI GRAPH;
  212. TRAC CACH (MASSIF0 ET LBAS ET LHAUT ET LGAU ET LSOURCE);
  213. FINSI ;
  214. *
  215. *
  216. ***************************************************************************
  217. ***************************************************************************
  218. *
  219. *- Création des maillages contenant tous les points
  220. QFTOT = 'CHANGER' MASSIF0 'QUAF' ;
  221. QFSORT = 'CHANGER' LBAS 'QUAF' ;
  222. QFSORF = 'CHANGER' LHAUT 'QUAF' ;
  223. QFENT = 'CHANGER' LSOURCE 'QUAF' ;
  224. *
  225. 'ELIMINATION' 0.00001 (QFTOT 'ET' QFSORT 'ET' QFENT 'ET' QFSORF) ;
  226. *
  227. *-------------------------------------------------------------------
  228. *----------------------- Création du Modèle ------------------------
  229. *
  230. MODHYB = 'MODELE' QFTOT 'DARCY' 'ISOTROPE' ;
  231. MODSORT = 'MODELE' QFSORT 'DARCY' 'ISOTROPE' ;
  232. MODSORF = 'MODELE' QFSORF 'DARCY' 'ISOTROPE' ;
  233. MODENT = 'MODELE' QFENT 'DARCY' 'ISOTROPE' ;
  234. CESORT = 'DOMA' MODSORT 'CENTRE' ;
  235. CESORF = 'DOMA' MODSORF 'CENTRE' ;
  236. CEENT = 'DOMA' MODENT 'CENTRE' ;
  237. HYCEN = 'DOMA' MODHYB 'CENTRE' ;
  238. HYFAC = 'DOMA' MODHYB 'FACE' ;
  239. HYSOM = 'DOMA' MODHYB 'SOMMET' ;
  240. *
  241. ZCC = COOR 2 HYCEN ;
  242. ZFF = COOR 2 HYFAC ;
  243. *-------------------------------------------------------------------
  244. *--------------- Conditions aux limites (blocages) ------------------
  245. *
  246. *- surfaces inferieure et superieure
  247. * valeur imposee de pression P = HN0 et HN1
  248. HN0 = -0.387 ;
  249. HN1 = HN0 ;
  250. *HN1 = -0.500 ;
  251. *
  252. * on impose la charge H = P + z
  253. ESORT = 'MANU' 'CHPO' CESORT 1 'TH' HN0 'NATURE' 'DISCRET';
  254. ESORF = 'MANU' 'CHPO' CESORF 1 'TH' (HN1 + YCA1) 'NATURE' 'DISCRET';
  255. ESORT = ESORT + ESORF;
  256. *
  257. *--------------------------------------------------------------------
  258. *- Chargement des conditions à la limite
  259. *
  260. LICALC = 'PROG' 0.D0 1.D8 ;
  261. LIST1 = 'PROG' 2 * 1.D0 ;
  262. VALI0 = 'CHAR' 'THIM' (ESORT) ('EVOL' 'MANU' LICALC LIST1) ;
  263. *
  264. *- Flux impose
  265. Q1 = -5.25E-08 ;
  266. QCA1 = Q1 / NDY12S ;
  267. *EENT = 'MANU' 'CHPO' CEENT 1 'FLUX' Q1 'NATURE' 'DISCRET';
  268. EENT = 'MANU' 'CHPO' CEENT 1 'FLUX' QCA1 'NATURE' 'DISCRET';
  269. VALI1 = 'CHAR' 'FLUX' (EENT) ('EVOL' 'MANU' LICALC LIST1) ;
  270. *
  271. *--------------------------------------------------------------------
  272. *----------------- initialisation des inconnues ---------------------
  273. *
  274. *- charge initiale (en metres d'eau) dans le domaine (H = P + z)
  275. * Pression h
  276. PM = ZCC '*' ((HN1 - HN0)/YCA1) '+' HN0 ;
  277. * Charge H
  278. HM = PM '+' ZCC;
  279. *
  280. H0 = nomc (HM) 'H' 'NATURE' 'DISCRET';
  281. *
  282. *- Flux
  283. QFACE0 = MANU CHPO HYFAC 1 'FLUX' 0.D0 'NATURE' 'DISCRET' ;
  284. *
  285. *--------------------------------------------------------------------
  286. *----------------------------- Calcul -------------------------------
  287. *
  288. * ---------------------------
  289. * = Table DARCY_TRANSITOIRE =
  290. * ---------------------------
  291. *- initialisation table
  292. SATUR = 'TABLE' ;
  293. SATUR. 'TEMPS' = 'TABLE' ;
  294. SATUR. 'CHARGE' = 'TABLE' ;
  295. SATUR. 'FLUX' = 'TABLE' ;
  296. *
  297. *- données géométriques
  298. SATUR. 'SOUSTYPE' = 'DARCY_TRANSATUR' ;
  299. SATUR. 'MODELE' = MODHYB ;
  300. *
  301. *- instant initial
  302. SATUR. 'TEMPS' . 0 = 0. ;
  303. SATUR. 'CHARGE' . 0 = H0 ;
  304. SATUR. 'FLUX' . 0 = QFACE0 ;
  305. *
  306. *- flux impose
  307. SATUR. 'FLUX_IMPOSE' = VALI1 ;
  308. ***********************************************************
  309. * SEULS GROS CHGTS GBM
  310. ***********************************************************
  311. * GBM - optionnel calculée si absente
  312. *
  313. *- conditions aux limites et chargements
  314. * GBM - MODIFIE
  315. *SATUR. 'BLOCAGES_DARCY' = BSORT ;
  316. *SATUR . 'CHARGEMENT' = VALI0 ;
  317. SATUR . 'TRACE_IMPOSE' = VALI0 ;
  318. *
  319. * GBM - NOUVEAU
  320. SATUR . 'LUMP' = FAUX;
  321. SATUR . 'TYPDISCRETISATION' = 'EFMH' ;
  322. * gravite
  323. SATUR . 'FORCE_GRAVITE' = 1.D0 ;
  324. ************************************************************
  325. *- données physiques
  326. ************************************************************
  327. * loi de perméabilité (Cf procedure en debut de fichier)
  328. LoiP = 'TABLE' 'PERSONNELLE';
  329. LoiP. 'ALPHA' = 12.58 ;
  330. LoiP. 'PERMSAT' = 1.12E-5 ;
  331. LoiP. 'NOM_PROCEDURE' = 'MOT' 'KR_EXPO1' ;
  332. SATUR.'LOI_PERMEABILITE' = 'TABLE' LoiP ;
  333. *
  334. *****************************************************************
  335. * loi de succion simple
  336. LoiS = 'TABLE' 'VAN_GENUCHTEN';
  337. LoiS. 'PORO' = 0.1 ;
  338. LoiS. 'TERESIDU' = 0.001 ;
  339. LoiS. 'NEXP' = 1.0 ;
  340. LoiS. 'MEXP' = 1.0 ;
  341. LoiS. 'BHETA' = 1.0 ;
  342. SATUR.'LOI_SATURATION' = 'TABLE' LoiS ;
  343. *
  344. *****************************************************************
  345. *- données numériques
  346. *
  347. TF1 = 1.D5 ;
  348. SATUR. 'TEMPS_FINAL' = TF1 ;
  349. SATUR. 'DT_INITIAL' = 1.D4 ;
  350. SATUR. 'ITMAX' = 30;
  351. SATUR. 'HOMOGENEISATION' = 'CHAINE' 'CENTRE' ;
  352. SATUR. 'RESIDU_MAX' = 1.D-3 ;
  353. SATUR. 'NITER' = 40 ;
  354. SATUR. 'MESSAGES' = 2 ;
  355. *
  356. *****************************************************************
  357. *------------------------- Exécution procédure ----------------------
  358. *
  359. TABRES = table METHINV;
  360. TABRES . 'TYPINV' = 3;
  361. TABRES . 'PRECOND' = 5;
  362. *
  363. SATUR . 'METHINV' = TABRES;
  364. SATUR . 'METHINV' . RESID = 1.D-15;
  365. *
  366. *********************************************************************
  367. *
  368. DARCYSAT SATUR ;
  369. *
  370. *********************************************************************
  371. *
  372. * Date de trace
  373. T11 = TF1 ;
  374. *
  375. *-Légende des tracés
  376. TABI1 = TABLE ;
  377. TABI1.'TITRE'= TABLE ;
  378. TABI1.1='MARQ LOSA' ;
  379. TABI1.'TITRE' . 1 = MOT 'permanent' ;
  380. *
  381. *-------------------------------------------------------------------
  382. *-------------------------- Extration des charges ---------------------
  383. T11 = SATUR . TEMPS . (('DIME' SATUR . TEMPS) '-' 1);
  384. CALCTH1 = PECHE SATUR CHARGE T11 ;
  385. *
  386. *-------------------------------------------------------------------
  387. *------------------- Calcul et trace de la pression ----------------
  388. CPRE1 = CALCTH1 '-' ('NOMC' 'H' ZCC) ;
  389. CALOO1 = KCHA MODHYB CPRE1 'CHAM';
  390. savcal = 'NOMC' SCAL CPRE1 ;
  391. * Trace sur elements
  392. 'SI' GRAPH ;
  393. TRAC MODHYB CALOO1 ;
  394. 'FINSI' ;
  395. * Trace sur noeuds
  396. CALOO2 = ELNO MODHYB CPRE1 ;
  397. CONT1 = CONTOUR MASSIF0 ;
  398. 'SI' GRAPH ;
  399. TRAC CALOO2 (MASSIF0) CONT1 ;
  400. 'FINSI' ;
  401. *
  402. *---------------------------------------------------------------------------
  403. * =========================================================================
  404. * Solution analytique pour
  405. * une pression h(m) imposee a h0 sur la frontiere inferieure
  406. * une pression h(m) imposee a h1 sur la frontiere superieure
  407. * flux nul impose sur la frontiere droite
  408. * flux impose a Q1 sur la partie d-r0 < z < d+r0 de la frontiere gauche
  409. * a flux nul sur le reste de la frontiere gauche
  410. * =========================================================================
  411. * Attention, la solution analytique est calculee en pression dans un repere
  412. * ou l'axe z est dirige vers le bas avec
  413. * Xnew = (x*alpha)/2 et Znew = ((z0-z)*alpha)/2
  414. *---------------------------------------------------------------------------
  415. *
  416. * recuperation des coordonnees X et Z aux centres
  417. XCCZ1 = COOR 1 HYCEN ;
  418. ZCCZ1 = COOR 2 HYCEN ;
  419. *
  420. * constantes utiles
  421. KZER1 = LoiP. 'PERMSAT' ;
  422. ALPHA1 = ABS((LoiP. 'ALPHA')) ;
  423. ALPHA2 = ALPHA1 / 2.D0 ;
  424. HZER1 = HN0 ;
  425. HZUN1 = HN1 ;
  426. DELTA1 = ALPHA2 * R0 ;
  427. ZZER1 = YCA1 * ALPHA2 ;
  428. XZER1 = XCA1 * ALPHA2 ;
  429. D111 = YDD1 * ALPHA2 ;
  430. QI1 = Q1 / (2.D0 * DELTA1) ;
  431. *
  432. * X et Z addimentionnels (et reorientation de z)
  433. XCC1 = XCCZ1 * ALPHA2 ;
  434. ZCC1 = (YCA1 - ZCCZ1) * ALPHA2 ;
  435. *
  436. *----------------------------------------------------------------------------
  437. * calcul de phi1(Z)
  438. * (solution en Znew sans source pour pressions imposee en haut et en bas)
  439. * phi1(Z) = (K0.exp(alpha.h1))/alpha *
  440. * ( 1 + (exp(alpha(h0-h1)) -1)(exp(2Z) -1)/(exp(2/Z0) - 1))
  441. *----------------------------------------------------------------------------
  442. NUM1 = KZER1 * (EXP(ALPHA1*HZUN1)) ;
  443. CTE1 = NUM1 / ALPHA1 ;
  444. LIST CTE1 ;
  445. *
  446. DD3 = 2.D0 * ZZER1 ;
  447. NUM2 = (EXP((ALPHA1*(HZER1 - HZUN1))) - 1.D0) / (EXP(DD3) - 1.D0) ;
  448. *
  449. DD1 = KOPS ZCC1 '*' 2.D0 ;
  450. DD2 = EXP(DD1) ;
  451. DD4 = KOPS DD2 '-' 1.D0 ;
  452. DD5 = KOPS DD4 '*' NUM2 ;
  453. DD6 = KOPS DD5 '+' 1.D0 ;
  454. DD7 = KOPS DD6 '*' CTE1 ;
  455. *
  456. * trace de phi1
  457. *PHI1E = KCHA MODHYB DD7 'CHAM';
  458. *TRAC MODHYB PHI1E ;
  459. *PHI1N = ELNO MODHYB DD7 ;
  460. *TRAC MASSIF0 PHI1N ;
  461. *
  462. * calcul de h1 associe a phi1
  463. CC1 = ALPHA1 / KZER1 ;
  464. VPH1 = DD7 * CC1 ;
  465. VPH2 = LOG(VPH1) ;
  466. VCH1 = VPH2 / ALPHA1 ;
  467. *
  468. * trace de pression h1
  469. *H1EL = KCHA MODHYB VCH1 'CHAM';
  470. *TRAC MODHYB H1EL ;
  471. *H1NO = ELNO MODHYB VCH1 ;
  472. *TRAC MASSIF0 H1NO ;
  473. *
  474. *----------------------------------------------------------------------------
  475. *
  476. *----------------------------------------------------------------------------
  477. * calcul de phi2(X,Z)
  478. * phi2(X,Z) = Exp(Z-D) *
  479. * Somme_n (Cn * sin(Mu_n.Z) * (Exp(L_n.(X-2X0)) + Exp(-L_n.X)))
  480. * avec
  481. * Mu_n = n.Pi/Z0
  482. * L_n = Sqrt(1 + Mu_n**2)
  483. * Cn = 2.Q1/(Z0.L_n.((n.Pi/Z0)**2 + 1)) * ((Exp(-2.L_n.X0) - 1)**(-1)) *
  484. * (Exp(R0) * (n.Pi/Z0 * Cos(n.Pi/Z0 * (D-R0)) + Sin(n.Pi/Z0 * (D-R0))) -
  485. * Exp(-R0) * (n.Pi/Z0 * Cos(n.Pi/Z0 * (D+R0)) + Sin(n.Pi/Z0 * (D+R0))))
  486. *
  487. * Remarque: l'indice n=0 n'est pas calcule dans la somme car alors Mu_n=0
  488. * et sin(Mu_n.Z)=0
  489. *----------------------------------------------------------------------------
  490. * constantes trigo pour calcul
  491. PI1 = PI ;
  492. CSD1 = 180.D0/PI1 ;
  493. *
  494. CSTE1 = PI1 / ZZER1 ;
  495. D2XZER1 = 2.D0 * XZER1 ;
  496. *
  497. NBOUC1 = 1000 ;
  498. NNN1 = 1.D0 ;
  499. SOM1 = 0.D0 ;
  500. *---------------------------------------------
  501. REPETER BOU1 NBOUC1 ;
  502. *
  503. * boucle de calcul des mu_n, L_n, sin(Mu_n.Z),
  504. * Exp(L_n.(X-2X0)) + Exp(-L_n.X) et Cn a
  505. * partir de n=1.
  506. * Calcul de la somme.
  507. *
  508. **********************
  509. * Mu_n
  510. MU1 = NNN1 * CSTE1 ;
  511. *******************************
  512. * L_n
  513. MU2 = MU1*MU1 ;
  514. LM2 = 1.D0 + MU2 ;
  515. LM1 = LM2 ** 0.5D0 ;
  516. *******************************
  517. * calcul de SI1 = sin(Mu_n Z)
  518. MU1Z = KOPS ZCC1 '*' MU1 ;
  519. * en degres
  520. MU2Z = MU1Z * CSD1 ;
  521. SI1 = SIN(MU2Z) ;
  522. ***************************************
  523. * calcul des exponentielles en L_n X
  524. MLM1 = -1.D0 * LM1 ;
  525. * expo - lamda X
  526. TEX1 = KOPS XCC1 '*' MLM1 ;
  527. NP1 = EXP(TEX1) ;
  528. * expo lambda (X -2X0)
  529. NTEX1 = KOPS XCC1 '-' D2XZER1 ;
  530. TEX2 = KOPS NTEX1 '*' LM1 ;
  531. NP2 = EXP(TEX2) ;
  532. TOTEX2 = NP1 + NP2;
  533. ***************************************
  534. * calcul de Cn
  535. * calcul terme multiplicatif devant Cn
  536. * on retire 2.Q1/Z0 de la somme
  537. CM1 = (LM1 * LM2) * (EXP((D2XZER1 * MLM1)) - 1.D0) ;
  538. * calcul terme second membre
  539. PHA1 = MU1 * (D111 + DELTA1) ;
  540. PHA2 = MU1 * (D111 - DELTA1) ;
  541. * en degres
  542. PHA1_D = PHA1 * CSD1 ;
  543. PHA2_D = PHA2 * CSD1 ;
  544. * premier terme trigo
  545. PT1 = (MU1 * (COS(PHA1_D))) + (SIN(PHA1_D)) ;
  546. * second terme trigo
  547. PT2 = (MU1 * (COS(PHA2_D))) + (SIN(PHA2_D)) ;
  548. * terme trigo avec exponentielle delta
  549. TT1 = (PT2 * (EXP(DELTA1))) - (PT1 * (EXP((-1.D0 * DELTA1)))) ;
  550. * total second membre
  551. CN1 = TT1 / CM1 ;
  552. MESS 'Indice N =' NNN1 'Mu_n =' MU1 'Lambda_n =' LM1 'Cn =' CN1;
  553. ***************************************
  554. * calcul produit total et somme
  555. COEF1 = CN1 * TOTEX2 * SI1 ;
  556. SOM1 = SOM1 + COEF1 ;
  557. NNN1 = NNN1 + 1. ;
  558. FIN BOU1 ;
  559. ***************************************
  560. * fin de calcul du terme somme
  561. **************************************************************
  562. * multiplication par Exp(Z - D)
  563. VEX1 = ZCC1 - D111 ;
  564. VEX2 = EXP(VEX1) ;
  565. EXT1 = (2.D0 * QI1) / ZZER1 ;
  566. * Calcul final de phi2
  567. VEX3 = VEX2 * SOM1 * EXT1;
  568. **************************************************************
  569. * fin de calcul de phi2
  570. * *********************
  571. * Trace phi2
  572. *PHI2E = KCHA MODHYB VEX3 'CHAM';
  573. *TRAC MODHYB PHI2E ;
  574. *PHI2N = ELNO MODHYB VEX3 ;
  575. *TRAC MASSIF0 PHI2N ;
  576. *
  577. ******************************
  578. * calcul de phi = phi1 + phi2
  579. PHIT1 = DD7 + VEX3 ;
  580. * Trace phi
  581. *PHIT1E = KCHA MODHYB PHIT1 'CHAM';
  582. *TRAC MODHYB PHIT1E ;
  583. *PHIT1N = ELNO MODHYB PHIT1 ;
  584. *TRAC MASSIF0 PHIT1N ;
  585. *
  586. * calcul de h associe a phi
  587. CC1 = ALPHA1 / KZER1 ;
  588. VPH1 = PHIT1 * CC1 ;
  589. VPH2 = LOG(VPH1) ;
  590. VCH1 = VPH2 / ALPHA1 ;
  591. * Trace h sur elements
  592. HFI1E = KCHA MODHYB VCH1 'CHAM';
  593. 'SI' GRAPH ;
  594. TRAC MODHYB HFI1E ;
  595. 'FINSI' ;
  596. * Trace h sur noeuds
  597. HFI1N = ELNO MODHYB VCH1 ;
  598. 'SI' GRAPH ;
  599. TRAC HFI1N (MASSIF0) CONT1 ;
  600. 'FINSI' ;
  601. *
  602. **************************************************************
  603. * Calcul de l'erreur relative par element (en pression)
  604. error = ((savcal '-' vch1) '/' vch1) 'ABS' ;
  605. error = 'KCHA' modhyb error CHAM;
  606. 'SI' GRAPH ;
  607. 'TRACER' modhyb error;
  608. 'FINSI' ;
  609. *
  610. * Erreur Linfini
  611. NUME1 = ABS(savcal '-' vch1) ;
  612. DENU1 = ABS(vch1) ;
  613. DENU2 = MAXI (DENU1) ;
  614. ERR1 = NUME1 / DENU2 ;
  615. ER1C = KCHA MODHYB ERR1 'CHAM';
  616. 'SI' GRAPH ;
  617. TRAC MODHYB ER1C ;
  618. 'FINSI' ;
  619. *
  620. ERINF1 = MAXI (ERR1) ;
  621. MESS 'ERREUR L INFINI' ERINF1;
  622. *
  623. **********************
  624. * Calcul de l'erreur L2 par element (en pression)
  625. ERRL21 = NUME1 ** 2.D0 ;
  626. ERRL22 = DENU1 ** 2.D0 ;
  627. ERRL2 = (ERRL21 '/' ERRL22) ** 0.5D0 ;
  628. ERRL3 = 'KCHA' MODHYB ERRL2 CHAM ;
  629. 'SI' GRAPH ;
  630. TRAC MODHYB ERRL3 ;
  631. 'FINSI' ;
  632. *
  633. * Calcul erreur L2
  634. SURF1 = 'DOMA' MODHYB 'VOLUME' ;
  635. ERNUM1 = ERRL21 * SURF1 ;
  636. ERDEN1 = ERRL22 * SURF1 ;
  637. INT1 = RESU ERNUM1 ;
  638. INT2 = RESU ERDEN1 ;
  639. ERL2 = (MAXI (INT1 / INT2)) ** 0.5 ;
  640. MESS 'ERREUR L2' ERL2 ;
  641. *
  642. **************************************************************
  643. * Test de non regression
  644. ERMAX1 = 0.015 ;
  645. SI (ERL2 > ERMAX1) ;
  646. mess 'ERREUR ANORMALE' ERL2 '>' ERMAX1 ;
  647. 'ERREUR' 5;
  648. SINON ;
  649. 'ERREUR' 0;
  650. FINSI ;
  651. *
  652. *-------------------------------------------------------------------
  653. *
  654. FIN;
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  

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