* fichier : kreslap2.dgibi
************************************************************************
************************************************************************
'OPTION' 'ECHO' 0 ;
*BEGINPROCEDUR glapn
************************************************************************
* NOM : GLAPN
* DESCRIPTION : Un laplacien scalaire
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 08/02/2006, version initiale
* HISTORIQUE : v1, 08/02/2006, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' GLAPN ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' coef/'FLOTTANT' ;
'SI' ('NON' ('EXISTE' coef)) ;
'ARGUMENT' coef2/'CHPOINT ' ;
'SI' ('NON' ('EXISTE' coef2)) ;
'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
'SINON' ;
coef = coef2 ;
'FINSI' ;
'SINON' ;
discc = 'CSTE' ;
'FINSI' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
*
idim = 0 ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
idim = 3 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' vdim 1) ;
idim = 1 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' idim 0) ;
'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
'FINSI' ;
* Test bête...
mincoef = 'MINIMUM' coef ;
'SINON' ;
mincoef = coef ;
'FINSI' ;
'SI' ('<' mincoef 0.D0) ;
'ERREUR' 'Le coef (une viscosité) doit etre positive' ;
'FINSI' ;
'SI' iaxi ;
'ERREUR' ('CHAINE' 'Axi non implémenté') ;
'FINSI' ;
*
numop = idim ;
numvar = 1 ;
numdat = 1 ;
numcof = 1 ;
numder = idim ;
*
A . 'VAR' . 1 . 'NOMDDL' = mmt ;
A . 'VAR' . 1 . 'DISC' = disct ;
A . 'DAT' . 1 . 'NOMDDL' = ms ;
A . 'DAT' . 1 . 'DISC' = discc ;
A . 'DAT' . 1 . 'VALEUR' = coef ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
*
'REPETER' iidim idim ;
'FIN' iidim ;
*
numvar = 1 ;
numdat = 0 ;
numcof = 0 ;
*
B . 'VAR' . 1 . 'NOMDDL' = mmq ;
B . 'VAR' . 1 . 'DISC' = discq ;
*
'REPETER' iidim idim ;
'FIN' iidim ;
*
* Integration par parties
mglapn = '*' mglapn -1.D0 ;
*
'RESPRO' mglapn ;
'FINPROC' ;
*
* End of procedure file GLAPN
*
*ENDPROCEDUR glapn
*BEGINPROCEDUR formar
************************************************************************
* NOM : FORMAR
* DESCRIPTION : formate un réel de facon courte
* pratique pour les noms de
* sauvegarde
* Exemples :
* 'MESSAGE' ('CHAINE' (formar 2.9e5 1)) ;
* 2.9E5
* 'MESSAGE' ('CHAINE' (formar -2.9e5 1)) ;
* -2.9E5
* 'MESSAGE' ('CHAINE' (formar 2.9e-5 1)) ;
* 2.9E-5
* 'MESSAGE' ('CHAINE' (formar -2.9e-5 1)) ;
* -2.9E-5
* 'MESSAGE' ('CHAINE' (formar 2.9 1)) ;
* 2.9
* 'MESSAGE' ('CHAINE' (formar -2.9 1)) ;
* -2.9
* 'MESSAGE' ('CHAINE' (formar 0 1)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 0 1)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 2.9e5 0)) ;
* 3E5
* 'MESSAGE' ('CHAINE' (formar -2.9e5 0)) ;
* -3E5
* 'MESSAGE' ('CHAINE' (formar 2.9e-5 0)) ;
* 3E-5
* 'MESSAGE' ('CHAINE' (formar -2.9e-5 0)) ;
* -3E-5
* 'MESSAGE' ('CHAINE' (formar 2.9 0)) ;
* 3
* 'MESSAGE' ('CHAINE' (formar -2.9 0)) ;
* -3
* 'MESSAGE' ('CHAINE' (formar 0 0)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 0 0)) ;
* 0
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 18/02/2003, version initiale
* HISTORIQUE : v1, 18/02/2003, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' FORMAR ;
'ARGUMENT' fl*'FLOTTANT' ;
'ARGUMENT' vir/'ENTIER ' ;
'SI' ('NON' ('EXISTE' vir)) ;
vir = 1 ;
'SINON' ;
'SI' ('<' vir 0) ;
'ERREUR' 'fournir un entier positif' ;
'FINSI' ;
'FINSI' ;
'SI' ('<' ('ABS' fl) 10.D-100) ;
chfl = 'CHAINE' '0' ;
'SINON' ;
*! sans le 1.D-10, ca ne fonctionne pas
*! qd on entre pile poil une puissance de 10
lfl = LOG10 ('ABS' fl) ;
* lfl = '+' (LOG10 ('ABS' fl)) 1.D-10 ;
slfl = 'SIGNE' ('ENTIER' lfl) ;
'SI' ('EGA' slfl 1) ;
elfl = 'ENTIER' lfl ;
'SINON' ;
elfl = '-' ('ENTIER' lfl) 1 ;
'FINSI' ;
man = '/' fl ('**' 10.D0 elfl) ;
*
* Une verrue pour des histoires de précision...
*
'SI' ('EGA' man 10.D0 ('**' 10.D0 ('*' vir -1.D0))) ;
man = '/' man 10.D0 ;
elfl = '+' elfl 1 ;
'FINSI' ;
*
sman = 'SIGNE' man ;
'SI' ('EGA' sman 1) ;
fman = 'CHAINE' '(F' ('+' vir 2) '.0' vir ')' ;
'SINON' ;
fman = 'CHAINE' '(F' ('+' vir 3) '.0' vir ')' ;
'FINSI' ;
'SI' ('NEG' vir 0) ;
'SI' ('NEG' elfl 0) ;
chfl = 'CHAINE' 'FORMAT' fman man 'E' elfl ;
'SINON' ;
chfl = 'CHAINE' 'FORMAT' fman man ;
'FINSI' ;
'SINON' ;
man2 = 'ENTIER' ('+' man ('*' 0.5D0 sman)) ;
'SI' ('NEG' elfl 0) ;
chfl = 'CHAINE' man2 'E' elfl ;
'SINON' ;
chfl = 'CHAINE' man2 ;
'FINSI' ;
'FINSI' ;
'FINSI' ;
'RESPRO' chfl ;
*
* End of procedure file FORMAR
*
'FINPROC' ;
*ENDPROCEDUR formar
*BEGINPROCEDUR log10
************************************************************************
* NOM : LOG10
* DESCRIPTION : Log_10
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 18/02/2003, version initiale
* HISTORIQUE : v1, 18/02/2003, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' LOG10 ;
'ARGUMENT' fl/'FLOTTANT' ;
'ARGUMENT' lr/'LISTREEL' ;
'ARGUMENT' cp/'CHPOINT ' ;
'ARGUMENT' cm/'MCHAML ' ;
'SI' ('EXISTE' fl) ;
'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' lr) ;
'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' cp) ;
'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' cm) ;
'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ;
'FINSI' ;
*
* End of procedure file LOG10
*
'FINPROC' ;
*ENDPROCEDUR log10
*BEGINPROCEDUR exmomod
************************************************************************
* NOM : EXMOMOD
* DESCRIPTION : Extraction d'un mot d'un listmots
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 23/06/2003, version initiale
* HISTORIQUE : v1, 23/06/2003, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' EXMOMOD ;
'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ;
k = '+' (MODULO ('-' i 1) j) 1 ;
lemot = 'EXTRAIRE' lm k ;
* Usage de l'opérateur text pour éviter que lemot
* ne soit interprété comme un opérateur
'RESPRO' 'TEXTE' lemot ;
*
* End of procedure file EXMOMOD
*
'FINPROC' ;
*ENDPROCEDUR exmomod
*BEGINPROCEDUR modulo
************************************************************************
* NOM : MODULO
* DESCRIPTION : Calcule un entier modulo un autre...
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 15/10/2002, version initiale
* HISTORIQUE : v1, 15/10/2002, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' MODULO ;
'ARGUMENT' i*'ENTIER' j*'ENTIER' ;
'SI' ('EGA' j 0) ;
'MESSAGE' 'Impossible de faire modulo 0' ;
'ERREUR' 5 ;
'SINON' ;
k=i '/' j ;
mod=i '-' ( k '*'j ) ;
'RESPRO' mod ;
'FINSI' ;
*
* End of procedure file MODULO
*
'FINPROC' ;
*ENDPROCEDUR modulo
*BEGINPROCEDUR dessevol
************************************************************************
* NOM : DESSEVOL
* DESCRIPTION : Dessine des évolutions : choisit automatiquement
* les options, marqueurs, couleurs...
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 16/11/2004, version initiale
* HISTORIQUE : v1, 16/11/2004, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' DESSEVOL ;
'ARGUMENT' evtot*'EVOLUTION' ;
'ARGUMENT' tabt*'TABLE' ;
'ARGUMENT' lnclk*'LOGIQUE' ;
'ARGUMENT' nb/'LOGIQUE' ;
*
'SI' ('NON' ('EXISTE' nb)) ;
nb = FAUX ;
'FINSI' ;
*
*
* Attention, dans evtot, il y a une évolution avec des noms de points ?
*
*'SI' ('NEG' nev nt) ;
* cherr = 'CHAINE' 'Evolution and title table : not same dim.' ;
* 'ERREUR' cherr ;
*'FINSI' ;
*
tev = 'TABLE' ;
tev . 'TITRE' = tabt ;
*
toto = 'TABLE' ;
*
*
'SI' nb ;
ev2 = evtot ;
'SINON' ;
icou = 0 ;
'REPETER' iev nev ;
ii = &iev ;
icou = '+' icou 1 ;
'FINSI' ;
* ii2 = '/' ('+' ii 1) 2 ;
* ci = EXMOMOD lcoul ii2 ;
* ci = EXMOMOD lcoul ii ;
ci = EXMOMOD lcoul icou ;
APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ;
'FIN' iev ;
ev2 = toto . 'EVOLUTION' ;
'FINSI' ;
*
'REPETER' iev nev ;
ii = &iev ;
mi = EXMOMOD lmarq ii ;
ti = EXMOMOD ltirr ii ;
'SI' nb ;
tev . ii = 'CHAINE' 'MARQ' ' ' mi ' ' ti ;
'SINON' ;
tev . ii = 'CHAINE' 'MARQ' ' ' mi ;
'FINSI' ;
'FIN' iev ;
*
'SI' lnclk ;
'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev
'NCLK' ;
'SINON' ;
'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ;
'FINSI' ;
*
* End of procedure file DESSEVOL
*
'FINPROC' ;
*ENDPROCEDUR dessevol
*BEGINPROCEDUR append
************************************************************************
* NOM : APPEND
* DESCRIPTION : Rajoute :
* - un entier à un listentier
* - un réel à un listreel
* - un objet (liste, evolution, matrice ou chpoint)
* à un indice de table ('MOT' ou 'ENTIER')
* * si l'indice n'existe pas
* * 'ET' si l'indice existe
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 10/09/2004, version initiale
* HISTORIQUE : v1, 10/09/2004, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' APPEND ;
'ARGUMENT' tab/'TABLE' ;
'SI' ('EXISTE' tab) ;
'SI' ('NON' ('EXISTE' itab)) ;
'ARGUMENT' itab*'ENTIER' ;
'FINSI' ;
lobj = FAUX ;
'SI' ('NON' lobj) ;
'ARGUMENT' lr/'LISTREEL' ;
'SI' ('EXISTE' lr) ;
obj = lr ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'ARGUMENT' le/'LISTENTI' ;
'SI' ('EXISTE' le) ;
obj = le ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'ARGUMENT' lev/'EVOLUTION' ;
'SI' ('EXISTE' lev) ;
obj = lev ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'ARGUMENT' lm/'MAILLAGE' ;
'SI' ('EXISTE' lm) ;
obj = lm ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'ARGUMENT' rig/'RIGIDITE' ;
'SI' ('EXISTE' rig) ;
obj = rig ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
'ARGUMENT' matk/'MATRIK' ;
'SI' ('EXISTE' matk) ;
obj = matk ; lobj = VRAI ;
'FINSI' ;
'FINSI' ;
'SI' ('NON' lobj) ;
cherr = 'CHAINE'
'Il faut fournir un objet liste, evolution, matrice ou chpoint.'
;
'ERREUR' cherr ;
'FINSI' ;
'SI' ('EXISTE' tab itab) ;
tab . itab = 'ET' (tab . itab) obj ;
'SINON' ;
tab . itab = obj ;
'FINSI' ;
'RESPRO' tab ;
'FINSI' ;
'ARGUMENT' lenti/'LISTENTI' ;
'ARGUMENT' lreel/'LISTREEL' ;
'SI' ('EXISTE' lenti) ;
'ARGUMENT' enti*'ENTIER' ;
'RESPRO' lenti ;
'FINSI' ;
'SI' ('EXISTE' lreel) ;
'ARGUMENT' reel*'FLOTTANT' ;
'RESPRO' lreel ;
'FINSI' ;
*
* End of procedure file APPEND
*
'FINPROC' ;
*ENDPROCEDUR append
* Laplacien avec CLIM
'DEBPROC' discr ;
*
* Solution
*
xm ym = 'COORDONNEE' mt ;
'SI' graph ;
tit = 'CHAINE' 'Sol exacte' ;
'TRACER' sol mt 'TITRE' tit ;
'FINSI' ;
*
* Matrice
*
disc = 'QUAI' ;
nomt = 'T' ;
nomq = 'Q' ;
mat1 = GLAPN _mt 'LINE' nomt disc nomq disc 1. ;
mtot = mat1 ;
fcli = csol ;
* SG CLIM ne marche plus avec les RIGIDITES
*'LIST' mtot ;
*'LIST' mtotr 3 ;
*
'RESPRO' mtotr fcli sol ;
'FINPROC' ;
*
* Laplacien avec BLOQ
'DEBPROC' discr2 ;
*
* Solution
*
xm ym = 'COORDONNEE' mt ;
'SI' graph ;
tit = 'CHAINE' 'Sol exacte' ;
'TRACER' sol mt 'TITRE' tit ;
'FINSI' ;
*
* Matrice
*
disc = 'QUAI' ;
nomt = 'T' ;
nomq = 'Q' ;
mat1 = GLAPN _mt 'LINE' nomt disc nomq disc 1. ;
matc = 'BLOQUE' 'T' cmt ;
fc = 'DEPIMPOSE' matc csol ;
mtot = mat1 'ET' matc ;
ftot = fc ;
'RESPRO' mtot ftot sol ;
'FINPROC' ;
*
************************************************************************
* NOM : KRESLAP2
* DESCRIPTION : Test de KRES sur un laplacien avec CLIM ou BLOQ
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 08/02/2006, version initiale
* HISTORIQUE : v1, 08/02/2006, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
complet = FAUX ;
interact= FAUX ;
graph = FAUX ;
'SI' ('NON' interact) ;
'OPTION' 'TRAC' 'PS' ;
'SINON' ;
'OPTION' 'TRAC' 'X' ;
'FINSI' ;
*
* Maillage
*
'SI' complet ;
nm = 100 ;
'SINON' ;
nm = 20 ;
'FINSI' ;
p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
d1 = 'DROIT' nm p1 p2 ; d2 = 'DROIT' nm p2 p3 ;
d3 = 'DROIT' nm p3 p4 ; d4 = 'DROIT' nm p4 p1 ;
cmt = d1 'ET' d2 'ET' d3 'ET' d4 ;
*mt = 'DALLER' d1 d2 d3 d4 ;cmt = 'CONTOUR' mt ;
mt = 'SURFACE' cmt ;
_mt = 'CHANGER' 'QUAF' mt ;
tabmit = 'TABLE' ;
tabmit . 1 = 'CHAINE' 'CG' ;
tabmit . 2 = 'CHAINE' 'BiCGStab' ;
tabmit . 3 = 'CHAINE' 'BiCGStab(4)' ;
tabmit . 4 = 'CHAINE' 'GMRES(50)' ;
tabmit . 5 = 'CHAINE' 'CGS' ;
tabprec = 'TABLE' ;
tabprec . 0 = 'CHAINE' 'Rien' ;
tabprec . 2 = 'CHAINE' 'DILU' ;
tabprec . 3 = 'CHAINE' 'ILU(0)' ;
tabprec . 4 = 'CHAINE' 'MILU(0)' ;
tabprec . 5 = 'CHAINE' 'ILUT' ;
tabprec . 6 = 'CHAINE' 'ILUT2' ;
tabprec . 7 = 'CHAINE' 'ILUTP' ;
tabprec . 8 = 'CHAINE' 'ILUTP+0' ;
tabpec = 'TABLE' ;
tabpec . 1 = 1.D-4 ;
tabpec . 2 = 1.D-2 ;
tabpec . 3 = 1.D-1 ;
tabpec . 4 = 1.D0 ;
tabpec . 5 = 5.D0 ;
*
* Toutes les méthodes avec ILU(0) (Laplacien + CLIM)
*
mtot fcli sol = DISCR ;
'TEMPS' 'ZERO' ;
rvm . 'TYPINV' = &imetit '+' 1 ;
rvm . 'PRECOND' = 3 ;
rvm . 'CALRES' = 1 ;
rvm . 'XINIT' = xini ;
rvm . 'CLIM' = fcli ;
lnmv = 'FLOTTANT' (rvm . 'NMATVEC') ;
lres = rvm . 'CONVINV' ;
'FIN' imetit ;
* Tableau récapitulatif
'SAUTER' 1 'LIGNE' ;
cc = 'CHAINE' 'Laplacien + CLIM ILU(0)' ;
'MESSAGE' cc ;
cc3 = 'CHAINE' 'Nb pmatvec'/20 'Temps CPU'/40 'Erreur'/60 ;
'MESSAGE' cc3 ;
cc4 = 'CHAINE' (tabmit . &imetit)
nit*30 (formar tcpu 2)*50
(formar ok 4)*70 ;
'MESSAGE' cc4 ;
'FIN' imetit ;
'SAUTER' 1 'LIGNE' ;
* Graphique
'SI' graph ;
tabt = 'TABLE' ;
tabt . &imetit = tabmit . &imetit ;
'FIN' imetit ;
tit = 'CHAINE' 'Laplacien+CLIM ILU(0)' ;
titx = 'CHAINE' 'Nb pmatvec' ;
tity = 'CHAINE' 'Log10 critere' ;
DESSEVOL evtot tabt tit titx tity FAUX ;
'FINSI' ;
*
* Le test vérifie que toutes les méthodes ont donné
* une erreur inférieure à 1.D-8
*
test = VRAI ;
test = test 'ET' ('<' ok 5.D-7) ;
'FIN' imetit ;
*
* Tous les préconditionneurs BiCGSTAB(4) (Laplacien + CLIM)
*
mtot fcli sol = DISCR ;
'TEMPS' 'ZERO' ;
rvm . 'TYPINV' = 4 ;
rvm . 'PRECOND' = '-' &iprec 1 ;
rvm . 'CALRES' = 1 ;
rvm . 'XINIT' = xini ;
rvm . 'CLIM' = fcli ;
lnmv = 'FLOTTANT' (rvm . 'NMATVEC') ;
lres = rvm . 'CONVINV' ;
* tres . 'EVOS' . &iprec = 'EVOL' 'MANU' lnmv (log10 lres) ;
'FIN' iprec ;
* Tableau récapitulatif
cc = 'CHAINE' 'Laplacien + CLIM BiCGSTAB(4)' ;
'MESSAGE' cc ;
cc3 = 'CHAINE' 'Nb pmatvec'/20 'Temps CPU'/40 'Erreur'/60 ;
'MESSAGE' cc3 ;
cc4 = 'CHAINE' (tabprec . ('-' &iprec 1))
nit*30 (formar tcpu 2)*50
(formar ok 4)*70 ;
'MESSAGE' cc4 ;
'FIN' iprec ;
'SAUTER' 1 'LIGNE' ;
* Graphique
'SI' graph ;
tabt = 'TABLE' ;
tabt . &iprec = tabprec . ('-' &iprec 1) ;
'FIN' iprec ;
tit = 'CHAINE' 'Laplacien+CLIM BiGSTAB(4)' ;
titx = 'CHAINE' 'Log10 Nb pmatvec' ;
* titx = 'CHAINE' 'Nb pmatvec' ;
tity = 'CHAINE' 'Log10 critere' ;
DESSEVOL evtot tabt tit titx tity FAUX ;
'FINSI' ;
*
* Toutes les méthodes avec ILU(0) (Laplacien + BLOQ)
*
mtot ftot sol = DISCR2 ;
'TEMPS' 'ZERO' ;
rvm . 'TYPINV' = &imetit '+' 1 ;
rvm . 'PRECOND' = 3 ;
rvm . 'CALRES' = 1 ;
rvm . 'XINIT' = xini ;
lnmv = 'FLOTTANT' (rvm . 'NMATVEC') ;
lres = rvm . 'CONVINV' ;
'FIN' imetit ;
* Tableau récapitulatif
'SAUTER' 1 'LIGNE' ;
'MESSAGE' cc ;
cc3 = 'CHAINE' 'Nb pmatvec'/20 'Temps CPU'/40 'Erreur'/60 ;
'MESSAGE' cc3 ;
cc4 = 'CHAINE' (tabmit . &imetit)
nit*30 (formar tcpu 2)*50
(formar ok 4)*70 ;
'MESSAGE' cc4 ;
'FIN' imetit ;
'SAUTER' 1 'LIGNE' ;
* Graphique
'SI' graph ;
tabt = 'TABLE' ;
tabt . &imetit = tabmit . &imetit ;
'FIN' imetit ;
titx = 'CHAINE' 'Nb pmatvec' ;
tity = 'CHAINE' 'Log10 critere' ;
DESSEVOL evtot tabt tit titx tity FAUX ;
'FINSI' ;
*
* Le test vérifie que toutes les méthodes ont donné
* une erreur inférieure à 1.D-8
*
test2 = VRAI ;
test2 = test2 'ET' ('<' ok 5.D-7) ;
'FIN' imetit ;
*
* Tous les préconditionneurs BiCGSTAB(4) (Laplacien + BLOQ)
*
mtot ftot sol = DISCR2 ;
*SG 2025/04/25 ILUTP ne marche plus en RIGIDITE
'REPETER' iprec dtprec ;
'TEMPS' 'ZERO' ;
rvm . 'TYPINV' = 4 ;
rvm . 'PRECOND' = '-' &iprec 1 ;
rvm . 'CALRES' = 1 ;
rvm . 'XINIT' = xini ;
lnmv = 'FLOTTANT' (rvm . 'NMATVEC') ;
lres = rvm . 'CONVINV' ;
* tres . 'EVOS' . &iprec = 'EVOL' 'MANU' lnmv (log10 lres) ;
'FIN' iprec ;
* Tableau récapitulatif
'MESSAGE' cc ;
cc3 = 'CHAINE' 'Nb pmatvec'/20 'Temps CPU'/40 'Erreur'/60 ;
'MESSAGE' cc3 ;
'REPETER' iprec dtprec ;
cc4 = 'CHAINE' (tabprec . ('-' &iprec 1))
nit*30 (formar tcpu 2)*50
(formar ok 4)*70 ;
'MESSAGE' cc4 ;
'FIN' iprec ;
'SAUTER' 1 'LIGNE' ;
* Graphique
'SI' graph ;
tabt = 'TABLE' ;
tabt . &iprec = tabprec . ('-' &iprec 1) ;
'FIN' iprec ;
titx = 'CHAINE' 'Log10 Nb pmatvec' ;
* titx = 'CHAINE' 'Nb pmatvec' ;
tity = 'CHAINE' 'Log10 critere' ;
DESSEVOL evtot tabt tit titx tity FAUX ;
'FINSI' ;
*
'SI' ('NON' ('ET' test test2)) ;
'ERREUR' 5 ;
'FINSI' ;
*
'SI' interact ;
'OPTION' 'DONN' 5 ;
'FINSI' ;
*
* End of dgibi file KRESLAP2
*
'FIN' ;
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales