Télécharger warrickVF.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : warrickVF.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. 'TRACE_CHARGE' = 'TABLE' ;
  295. SATUR. 'CHARGE' = 'TABLE' ;
  296. SATUR. 'FLUX' = 'TABLE' ;
  297. *
  298. *- données géométriques
  299. SATUR. 'SOUSTYPE' = 'DARCY_TRANSATUR' ;
  300. SATUR. 'MODELE' = MODHYB ;
  301. *
  302. *- instant initial
  303. SATUR. 'TEMPS' . 0 = 0. ;
  304. SATUR. 'CHARGE' . 0 = H0 ;
  305. SATUR. 'FLUX' . 0 = QFACE0 ;
  306. *
  307. *- flux impose
  308. SATUR. 'FLUX_IMPOSE' = VALI1 ;
  309. ***********************************************************
  310. * SEULS GROS CHGTS GBM
  311. ***********************************************************
  312. * GBM - optionnel calculée si absente
  313. *SATUR. 'TRACE_CHARGE' . 0 = TH0 ;
  314. *
  315. *- conditions aux limites et chargements
  316. * GBM - MODIFIE
  317. *SATUR. 'BLOCAGES_DARCY' = BSORT ;
  318. *SATUR . 'CHARGEMENT' = VALI0 ;
  319. SATUR . 'TRACE_IMPOSE' = VALI0 ;
  320. *
  321. * GBM - NOUVEAU
  322. SATUR . 'LUMP' = FAUX;
  323. SATUR . 'TYPDISCRETISATION' = 'VF' ;
  324. *SATUR . 'DECENTR' = FAUX;
  325. * gravite
  326. SATUR . 'FORCE_GRAVITE' = 1.D0 ;
  327. ************************************************************
  328. *- données physiques
  329. ************************************************************
  330. * loi de perméabilité (Cf procedure en debut de fichier)
  331. LoiP = 'TABLE' 'PERSONNELLE';
  332. LoiP. 'ALPHA' = 12.58 ;
  333. LoiP. 'PERMSAT' = 1.12E-5 ;
  334. LoiP. 'NOM_PROCEDURE' = 'MOT' 'KR_EXPO1' ;
  335. SATUR.'LOI_PERMEABILITE' = 'TABLE' LoiP ;
  336. *
  337. *****************************************************************
  338. * loi de succion simple
  339. LoiS = 'TABLE' 'VAN_GENUCHTEN';
  340. LoiS. 'PORO' = 0.1 ;
  341. LoiS. 'TERESIDU' = 0.001 ;
  342. LoiS. 'NEXP' = 1.0 ;
  343. LoiS. 'MEXP' = 1.0 ;
  344. LoiS. 'BHETA' = 1.0 ;
  345. SATUR.'LOI_SATURATION' = 'TABLE' LoiS ;
  346. *
  347. *****************************************************************
  348. *- données numériques
  349. *
  350. TF1 = 1.D5 ;
  351. SATUR. 'TEMPS_FINAL' = TF1 ;
  352. SATUR. 'DT_INITIAL' = 1.D4 ;
  353. SATUR. 'ITMAX' = 30;
  354. SATUR. 'HOMOGENEISATION' = 'CHAINE' 'CENTRE' ;
  355. SATUR. 'RESIDU_MAX' = 1.D-3 ;
  356. SATUR. 'NITER' = 40 ;
  357. SATUR. 'MESSAGES' = 2 ;
  358. *
  359. *****************************************************************
  360. *------------------------- Exécution procédure ----------------------
  361. *
  362. TABRES = table METHINV;
  363. TABRES . 'TYPINV' = 3;
  364. TABRES . 'PRECOND' = 5;
  365. *
  366. SATUR . 'METHINV' = TABRES;
  367. SATUR . 'METHINV' . RESID = 1.D-15;
  368. *
  369. *********************************************************************
  370. *
  371. DARCYSAT SATUR ;
  372. *
  373. *********************************************************************
  374. *
  375. * Date de trace
  376. T11 = TF1 ;
  377. *
  378. *-Légende des tracés
  379. TABI1 = TABLE ;
  380. TABI1.'TITRE'= TABLE ;
  381. TABI1.1='MARQ LOSA' ;
  382. TABI1.'TITRE' . 1 = MOT 'permanent' ;
  383. *
  384. *-------------------------------------------------------------------
  385. *-------------------------- Extration des charges ---------------------
  386. T11 = SATUR . TEMPS . (('DIME' SATUR . TEMPS) '-' 1);
  387. CALCTH1 = PECHE SATUR CHARGE T11 ;
  388. *
  389. *-------------------------------------------------------------------
  390. *------------------- Calcul et trace de la pression ----------------
  391. CPRE1 = CALCTH1 '-' ('NOMC' 'H' ZCC) ;
  392. CALOO1 = KCHA MODHYB CPRE1 'CHAM';
  393. savcal = 'NOMC' SCAL CPRE1 ;
  394. * Trace sur elements
  395. 'SI' GRAPH ;
  396. TRAC MODHYB CALOO1 ;
  397. 'FINSI' ;
  398. * Trace sur noeuds
  399. CALOO2 = ELNO MODHYB CPRE1 ;
  400. CONT1 = CONTOUR MASSIF0 ;
  401. 'SI' GRAPH ;
  402. TRAC CALOO2 (MASSIF0) CONT1 ;
  403. 'FINSI' ;
  404. *
  405. *---------------------------------------------------------------------------
  406. * =========================================================================
  407. * Solution analytique pour
  408. * une pression h(m) imposee a h0 sur la frontiere inferieure
  409. * une pression h(m) imposee a h1 sur la frontiere superieure
  410. * flux nul impose sur la frontiere droite
  411. * flux impose a Q1 sur la partie d-r0 < z < d+r0 de la frontiere gauche
  412. * a flux nul sur le reste de la frontiere gauche
  413. * =========================================================================
  414. * Attention, la solution analytique est calculee en pression dans un repere
  415. * ou l'axe z est dirige vers le bas avec
  416. * Xnew = (x*alpha)/2 et Znew = ((z0-z)*alpha)/2
  417. *---------------------------------------------------------------------------
  418. *
  419. * recuperation des coordonnees X et Z aux centres
  420. XCCZ1 = COOR 1 HYCEN ;
  421. ZCCZ1 = COOR 2 HYCEN ;
  422. *
  423. * constantes utiles
  424. KZER1 = LoiP. 'PERMSAT' ;
  425. ALPHA1 = ABS((LoiP. 'ALPHA')) ;
  426. ALPHA2 = ALPHA1 / 2.D0 ;
  427. HZER1 = HN0 ;
  428. HZUN1 = HN1 ;
  429. DELTA1 = ALPHA2 * R0 ;
  430. ZZER1 = YCA1 * ALPHA2 ;
  431. XZER1 = XCA1 * ALPHA2 ;
  432. D111 = YDD1 * ALPHA2 ;
  433. QI1 = Q1 / (2.D0 * DELTA1) ;
  434. *
  435. * X et Z addimentionnels (et reorientation de z)
  436. XCC1 = XCCZ1 * ALPHA2 ;
  437. ZCC1 = (YCA1 - ZCCZ1) * ALPHA2 ;
  438. *
  439. *----------------------------------------------------------------------------
  440. * calcul de phi1(Z)
  441. * (solution en Znew sans source pour pressions imposee en haut et en bas)
  442. * phi1(Z) = (K0.exp(alpha.h1))/alpha *
  443. * ( 1 + (exp(alpha(h0-h1)) -1)(exp(2Z) -1)/(exp(2/Z0) - 1))
  444. *----------------------------------------------------------------------------
  445. NUM1 = KZER1 * (EXP(ALPHA1*HZUN1)) ;
  446. CTE1 = NUM1 / ALPHA1 ;
  447. LIST CTE1 ;
  448. *
  449. DD3 = 2.D0 * ZZER1 ;
  450. NUM2 = (EXP((ALPHA1*(HZER1 - HZUN1))) - 1.D0) / (EXP(DD3) - 1.D0) ;
  451. *
  452. DD1 = KOPS ZCC1 '*' 2.D0 ;
  453. DD2 = EXP(DD1) ;
  454. DD4 = KOPS DD2 '-' 1.D0 ;
  455. DD5 = KOPS DD4 '*' NUM2 ;
  456. DD6 = KOPS DD5 '+' 1.D0 ;
  457. DD7 = KOPS DD6 '*' CTE1 ;
  458. *
  459. * trace de phi1
  460. *PHI1E = KCHA MODHYB DD7 'CHAM';
  461. *TRAC MODHYB PHI1E ;
  462. *PHI1N = ELNO MODHYB DD7 ;
  463. *TRAC MASSIF0 PHI1N ;
  464. *
  465. * calcul de h1 associe a phi1
  466. CC1 = ALPHA1 / KZER1 ;
  467. VPH1 = DD7 * CC1 ;
  468. VPH2 = LOG(VPH1) ;
  469. VCH1 = VPH2 / ALPHA1 ;
  470. *
  471. * trace de pression h1
  472. *H1EL = KCHA MODHYB VCH1 'CHAM';
  473. *TRAC MODHYB H1EL ;
  474. *H1NO = ELNO MODHYB VCH1 ;
  475. *TRAC MASSIF0 H1NO ;
  476. *
  477. *----------------------------------------------------------------------------
  478. *
  479. *----------------------------------------------------------------------------
  480. * calcul de phi2(X,Z)
  481. * phi2(X,Z) = Exp(Z-D) *
  482. * Somme_n (Cn * sin(Mu_n.Z) * (Exp(L_n.(X-2X0)) + Exp(-L_n.X)))
  483. * avec
  484. * Mu_n = n.Pi/Z0
  485. * L_n = Sqrt(1 + Mu_n**2)
  486. * Cn = 2.Q1/(Z0.L_n.((n.Pi/Z0)**2 + 1)) * ((Exp(-2.L_n.X0) - 1)**(-1)) *
  487. * (Exp(R0) * (n.Pi/Z0 * Cos(n.Pi/Z0 * (D-R0)) + Sin(n.Pi/Z0 * (D-R0))) -
  488. * Exp(-R0) * (n.Pi/Z0 * Cos(n.Pi/Z0 * (D+R0)) + Sin(n.Pi/Z0 * (D+R0))))
  489. *
  490. * Remarque: l'indice n=0 n'est pas calcule dans la somme car alors Mu_n=0
  491. * et sin(Mu_n.Z)=0
  492. *----------------------------------------------------------------------------
  493. * constantes trigo pour calcul
  494. PI1 = PI ;
  495. CSD1 = 180.D0/PI1 ;
  496. *
  497. CSTE1 = PI1 / ZZER1 ;
  498. D2XZER1 = 2.D0 * XZER1 ;
  499. *
  500. NBOUC1 = 1000 ;
  501. NNN1 = 1.D0 ;
  502. SOM1 = 0.D0 ;
  503. *---------------------------------------------
  504. REPETER BOU1 NBOUC1 ;
  505. *
  506. * boucle de calcul des mu_n, L_n, sin(Mu_n.Z),
  507. * Exp(L_n.(X-2X0)) + Exp(-L_n.X) et Cn a
  508. * partir de n=1.
  509. * Calcul de la somme.
  510. *
  511. **********************
  512. * Mu_n
  513. MU1 = NNN1 * CSTE1 ;
  514. *******************************
  515. * L_n
  516. MU2 = MU1*MU1 ;
  517. LM2 = 1.D0 + MU2 ;
  518. LM1 = LM2 ** 0.5D0 ;
  519. *******************************
  520. * calcul de SI1 = sin(Mu_n Z)
  521. MU1Z = KOPS ZCC1 '*' MU1 ;
  522. * en degres
  523. MU2Z = MU1Z * CSD1 ;
  524. SI1 = SIN(MU2Z) ;
  525. ***************************************
  526. * calcul des exponentielles en L_n X
  527. MLM1 = -1.D0 * LM1 ;
  528. * expo - lamda X
  529. TEX1 = KOPS XCC1 '*' MLM1 ;
  530. NP1 = EXP(TEX1) ;
  531. * expo lambda (X -2X0)
  532. NTEX1 = KOPS XCC1 '-' D2XZER1 ;
  533. TEX2 = KOPS NTEX1 '*' LM1 ;
  534. NP2 = EXP(TEX2) ;
  535. TOTEX2 = NP1 + NP2;
  536. ***************************************
  537. * calcul de Cn
  538. * calcul terme multiplicatif devant Cn
  539. * on retire 2.Q1/Z0 de la somme
  540. CM1 = (LM1 * LM2) * (EXP((D2XZER1 * MLM1)) - 1.D0) ;
  541. * calcul terme second membre
  542. PHA1 = MU1 * (D111 + DELTA1) ;
  543. PHA2 = MU1 * (D111 - DELTA1) ;
  544. * en degres
  545. PHA1_D = PHA1 * CSD1 ;
  546. PHA2_D = PHA2 * CSD1 ;
  547. * premier terme trigo
  548. PT1 = (MU1 * (COS(PHA1_D))) + (SIN(PHA1_D)) ;
  549. * second terme trigo
  550. PT2 = (MU1 * (COS(PHA2_D))) + (SIN(PHA2_D)) ;
  551. * terme trigo avec exponentielle delta
  552. TT1 = (PT2 * (EXP(DELTA1))) - (PT1 * (EXP((-1.D0 * DELTA1)))) ;
  553. * total second membre
  554. CN1 = TT1 / CM1 ;
  555. MESS 'Indice N =' NNN1 'Mu_n =' MU1 'Lambda_n =' LM1 'Cn =' CN1;
  556. ***************************************
  557. * calcul produit total et somme
  558. COEF1 = CN1 * TOTEX2 * SI1 ;
  559. SOM1 = SOM1 + COEF1 ;
  560. NNN1 = NNN1 + 1. ;
  561. FIN BOU1 ;
  562. ***************************************
  563. * fin de calcul du terme somme
  564. **************************************************************
  565. * multiplication par Exp(Z - D)
  566. VEX1 = ZCC1 - D111 ;
  567. VEX2 = EXP(VEX1) ;
  568. EXT1 = (2.D0 * QI1) / ZZER1 ;
  569. * Calcul final de phi2
  570. VEX3 = VEX2 * SOM1 * EXT1;
  571. **************************************************************
  572. * fin de calcul de phi2
  573. * *********************
  574. * Trace phi2
  575. *PHI2E = KCHA MODHYB VEX3 'CHAM';
  576. *TRAC MODHYB PHI2E ;
  577. *PHI2N = ELNO MODHYB VEX3 ;
  578. *TRAC MASSIF0 PHI2N ;
  579. *
  580. ******************************
  581. * calcul de phi = phi1 + phi2
  582. PHIT1 = DD7 + VEX3 ;
  583. * Trace phi
  584. *PHIT1E = KCHA MODHYB PHIT1 'CHAM';
  585. *TRAC MODHYB PHIT1E ;
  586. *PHIT1N = ELNO MODHYB PHIT1 ;
  587. *TRAC MASSIF0 PHIT1N ;
  588. *
  589. * calcul de h associe a phi
  590. CC1 = ALPHA1 / KZER1 ;
  591. VPH1 = PHIT1 * CC1 ;
  592. VPH2 = LOG(VPH1) ;
  593. VCH1 = VPH2 / ALPHA1 ;
  594. * Trace h sur elements
  595. HFI1E = KCHA MODHYB VCH1 'CHAM';
  596. 'SI' GRAPH ;
  597. TRAC MODHYB HFI1E ;
  598. 'FINSI' ;
  599. * Trace h sur noeuds
  600. HFI1N = ELNO MODHYB VCH1 ;
  601. 'SI' GRAPH ;
  602. TRAC HFI1N (MASSIF0) CONT1 ;
  603. 'FINSI' ;
  604. *
  605. **************************************************************
  606. * Calcul de l'erreur relative par element (en pression)
  607. error = ((savcal '-' vch1) '/' vch1) 'ABS' ;
  608. error = 'KCHA' modhyb error CHAM;
  609. 'SI' GRAPH ;
  610. 'TRACER' modhyb error;
  611. 'FINSI' ;
  612. *
  613. * Erreur Linfini
  614. NUME1 = ABS(savcal '-' vch1) ;
  615. DENU1 = ABS(vch1) ;
  616. DENU2 = MAXI (DENU1) ;
  617. ERR1 = NUME1 / DENU2 ;
  618. ER1C = KCHA MODHYB ERR1 'CHAM';
  619. 'SI' GRAPH ;
  620. TRAC MODHYB ER1C ;
  621. 'FINSI' ;
  622. *
  623. ERINF1 = MAXI (ERR1) ;
  624. MESS 'ERREUR L INFINI' ERINF1;
  625. *
  626. **********************
  627. * Calcul de l'erreur L2 par element (en pression)
  628. ERRL21 = NUME1 ** 2.D0 ;
  629. ERRL22 = DENU1 ** 2.D0 ;
  630. ERRL2 = (ERRL21 '/' ERRL22) ** 0.5D0 ;
  631. ERRL3 = 'KCHA' MODHYB ERRL2 CHAM ;
  632. 'SI' GRAPH ;
  633. TRAC MODHYB ERRL3 ;
  634. 'FINSI' ;
  635. *
  636. * Calcul erreur L2
  637. SURF1 = 'DOMA' MODHYB 'VOLUME' ;
  638. ERNUM1 = ERRL21 * SURF1 ;
  639. ERDEN1 = ERRL22 * SURF1 ;
  640. INT1 = RESU ERNUM1 ;
  641. INT2 = RESU ERDEN1 ;
  642. ERL2 = (MAXI (INT1 / INT2)) ** 0.5 ;
  643. MESS 'ERREUR L2' ERL2 ;
  644. *
  645. **************************************************************
  646. * Test de non regression
  647. ERMAX1 = 0.015 ;
  648. SI (ERL2 > ERMAX1) ;
  649. mess 'ERREUR ANORMALE' ERL2 '>' ERMAX1 ;
  650. 'ERREUR' 5;
  651. SINON ;
  652. 'ERREUR' 0;
  653. FINSI ;
  654. *
  655. *-------------------------------------------------------------------
  656. *
  657. FIN;
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  

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