Télécharger nlin_lapncer.dgibi
* fichier : nlin_lapncer.dgibi ************************************************************************ ************************************************************************ 'OPTION' 'ECHO' 0 ; *BEGINPROCEDUR gmass ************************************************************************ * NOM : GMASS * DESCRIPTION : Une matrice de masse * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v2, 14/03/2006, mise à jour NLIN évolué * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/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' GMASS ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' _smt/'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' ; 'ARGUMENT' chpop/'CHPOINT' ; 'ARGUMENT' chpod/'CHPOINT' ; * 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' ; 'SI' iaxi ; dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ; 'FINSI' ; numop = 1 ; numder = idim ; numvar = 1 ; numdat = 1 ; numcof = 1 ; * A . 'VAR' . 1 . 'NOMDDL' = mmt ; A . 'VAR' . 1 . 'DISC' = disct ; 'SI' ('EXISTE' chpop) ; A . 'VAR' . 1 . 'VALEUR' = chpop ; 'FINSI' ; A . 'DAT' . 1 . 'DISC' = discc ; A . 'DAT' . 1 . 'VALEUR' = coef ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * 'SI' iaxi ; numdat = 1 ; numcof = 1 ; 'SINON' ; numdat = 0 ; numcof = 0 ; 'FINSI' ; B . 'VAR' . 1 . 'NOMDDL' = mmq ; B . 'VAR' . 1 . 'DISC' = discq ; 'SI' ('EXISTE' chpod) ; B . 'VAR' . 1 . 'VALEUR' = chpod ; 'FINSI' ; * 'SI' iaxi ; B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = dprmt ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; 'FINSI' ; 'SI' iaxi ; 'SINON' ; 'FINSI' ; * 'SI' ('EXISTE' _smt) ; 'SINON' ; 'FINSI' ; * 'RESPRO' mgmass ; 'FINPROC' ; * * End of procedure file GMASS * *ENDPROCEDUR gmass *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 : v2, 14/03/2006, mise à jour NLIN évolué * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/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' 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' ; 'ARGUMENT' chpop/'CHPOINT' ; 'ARGUMENT' chpod/'CHPOINT' ; * 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' ; 'SI' iaxi ; dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ; '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 ; 'SINON' ; 'SI' ('EGA' idim 2) ; 'SINON' ; 'FINSI' ; 'FINSI' ; * ltens = FAUX ; 'SI' ('EGA' ncomp idim) ; ltens = VRAI ; 'FINSI' ; 'FINSI' ; * tcoef = 'TABLE' ; 'SI' ltens ; 'REPETER' iidim idim ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; tcoef . &iidim = coef ; 'FIN' iidim ; 'FINSI' ; * numop = idim ; numder = idim ; numvar = 1 ; numdat = idim ; numcof = idim ; * A . 'VAR' . 1 . 'NOMDDL' = mmt ; A . 'VAR' . 1 . 'DISC' = disct ; 'SI' ('EXISTE' chpop) ; A . 'VAR' . 1 . 'VALEUR' = chpop ; 'FINSI' ; 'REPETER' iidim idim ; A . 'DAT' . &iidim . 'DISC' = discc ; A . 'DAT' . &iidim . 'VALEUR' = tcoef . &iidim ; A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ; 'FIN' iidim ; * 'REPETER' iidim idim ; 'FIN' iidim ; * 'SI' iaxi ; numdat = 1 ; numcof = 1 ; 'SINON' ; numdat = 0 ; numcof = 0 ; 'FINSI' ; * B . 'VAR' . 1 . 'NOMDDL' = mmq ; B . 'VAR' . 1 . 'DISC' = discq ; 'SI' ('EXISTE' chpod) ; B . 'VAR' . 1 . 'VALEUR' = chpod ; 'FINSI' ; 'SI' iaxi ; B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = dprmt ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; 'FINSI' ; * 'REPETER' iidim idim ; 'SI' iaxi ; 'SINON' ; 'FINSI' ; 'FIN' iidim ; * * Integration par parties mglapn = '*' mglapn -1.D0 ; * 'RESPRO' mglapn ; 'FINPROC' ; * * End of procedure file GLAPN * *ENDPROCEDUR glapn *BEGINPROCEDUR ggrad ************************************************************************ * NOM : GGRAD * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 08/03/2006, version initiale * HISTORIQUE : v1, 08/03/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' GGRAD ; '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' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; dp = ('*' PI 2.D0) ; rmt = 'COORDONNEE' 1 _mt ; 'FINSI' ; * numop = 3 ; numder = idim ; numvar = 1 ; 'SI' iaxi ; numdat = 3 ; numcof = 3 ; 'SINON' ; numdat = 1 ; numcof = 1 ; 'FINSI' ; * A . 'VAR' . 1 . 'NOMDDL' = lpp ; A . 'VAR' . 1 . 'DISC' = discp ; A . 'DAT' . 1 . 'DISC' = discc ; A . 'DAT' . 1 . 'VALEUR' = coef ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; 'SI' iaxi ; A . 'DAT' . 2 . 'DISC' = 'CSTE' ; A . 'DAT' . 2 . 'VALEUR' = dp ; A . 'COF' . 2 . 'COMPOR' = 'IDEN' ; A . 'DAT' . 3 . 'DISC' = gdisc ; A . 'DAT' . 3 . 'VALEUR' = rmt ; A . 'COF' . 3 . 'COMPOR' = 'IDEN' ; 'FINSI' ; * * 'LISTE' iaxi ; 'LISTE' idim ; 'SI' iaxi ; 'REPETER' iidim idim ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; 'FIN' iidim ; 'FINSI' ; * numvar = idim ; numdat = 0 ; numcof = 0 ; 'REPETER' iidim idim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; * 'REPETER' iidim idim ; 'FIN' iidim ; * * 'RESPRO' mggrad ; 'FINPROC' ; * * End of procedure file GGRAD * *ENDPROCEDUR ggrad *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 ; 'REPETER' bouc ; ok = FAUX ; 'ARGUMENT' fl/'FLOTTANT' ; 'ARGUMENT' lr/'LISTREEL' ; 'ARGUMENT' cp/'CHPOINT ' ; 'ARGUMENT' cm/'MCHAML ' ; 'SI' ('EXISTE' fl) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' lr) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cp) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cm) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('NON' ok) ; 'QUITTER' bouc ; 'FINSI' ; 'FIN' bouc ; * * End of procedure file LOG10 * 'FINPROC' ; *ENDPROCEDUR log10 'OPTION' 'ECHO' 1 ; ************************************************************************ * NOM : NLIN_LAPNCER * DESCRIPTION : Vérification de NLIN : on résout un laplacien sur un * bout de cercle de rayon R en 2D. La solution exacte * est une fonction linéaire de l'abscisse curviligne * s = R \theta. * On obtient cette solution exacte par le calcul. * On vérifie également les ordres de convergence sur la * longueur du bout de cercle et sur le champ de vecteur * tangent à ce bout de cercle. * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 25/10/2006, version initiale * HISTORIQUE : v1, 25/10/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 ! ************************************************************************ * * interact = FAUX ; graph = FAUX ; *interact = VRAI ; *graph = VRAI ; 'SI' ('NON' interact) ; 'SINON' ; 'FINSI' ; * * Paramètres * tordlon = 'TABLE' ; tordvec = 'TABLE' ; tordsol = 'TABLE' ; rayo = '**' 2. 0.5D0 ; tabev = 'TABLE' ; tabt = 'TABLE' ; itab = 0 ; ok = VRAI ; * * Boucle sur les discrétisations * idisc = &iidisc ; disc = 'EXTRAIRE' ldisc idisc ; tordlon . disc = 'TABLE' ; tordvec . disc = 'TABLE' ; discg = disc ; disct = disc ; 'SI' ('EGA' disc 'LINE') ; 'OPTION' 'ELEM' 'QUA4' ; 'SINON' ; 'OPTION' 'ELEM' 'QUA8' ; 'FINSI' ; idens = &iidens ; vdens = 'EXTRAIRE' ldens idens ; 'DENS' vdens ; tit = 'CHAINE' 'Discretisation :' disc ' Densité = ' vdens ; 'SAUTER' 1 'LIGNE' ; 'MESSAGE' tit ; * Maillage mt = 'CERCLE' pA p0 pB ; _mt = 'CHANGER' mt 'QUAF' ; * 1 : calcul de la longueur du segment gmas = GMASS _mt discg 'T' disct 'Q' disct 1. ; lonana = '*' ('/' PI 4.D0) rayo ; 'MESSAGE' ('CHAINE' 'Longueur calculee =' lon) ; 'MESSAGE' ('CHAINE' 'Longueur attendue =' lonana) ; errlon = 'ABS' ('-' lon lonana) ; 'MESSAGE' ('CHAINE' 'Erreur sur la longueur =' errlon) ; * 2 : calcul du vecteur tangent xmt ymt = 'COORDONNEE' mt ; ang = 'ATG' ymt xmt ; * 2.1 : calcul de l'abscisse curviligne mat = GLAPN _mt discg 'T' disct 'Q' disct 1. ; mblo = 'BLOQUE' 'T' (pA 'ET' pB) ; * mtot = mat 'ET' mblo ; ftot = fblo ; solu = 'RESOUD' mtot ftot ; * 'DESSIN' evsol ; * 2.2 : vecteur tangent unitaire mux = GMASS _mt discg 'UX' disct 'FX' disct 1. ; muy = GMASS _mt discg 'UY' disct 'FY' disct 1. ; mtot = mux 'ET' muy ; * msmb = GGRAD _mt discg disct disct 1. ; * vvt = 'RESOUD' mtot fsmb ; 'SI' graph ; 'TRACER' ('ET' vvec vvec2) mt ; 'FINSI' ; * 2.3 : calcul de l'erreur 'MESSAGE' ('CHAINE' 'Erreur sur le vecteur tangent =' errvec) ; * 3 : calcul d'une solution analytique (quasi-pareil que 2.1) * xmt ymt = 'COORDONNEE' mt ; mat = GLAPN _mt discg 'T' disct 'Q' disct 1. ; mblo = 'BLOQUE' 'T' (pA 'ET' pB) ; * mtot = mat 'ET' mblo ; ftot = fblo ; solu = 'RESOUD' mtot ftot ; matm = GMASS _mt discg 'T' disct 'Q' disct 1. ; 'MESSAGE' ('CHAINE' 'Erreur sur la sol. analytique =' errsol) ; * Vérification qu'on obtient la solution exacte test = ('<' errsol 1.D-10) ; ok = ok 'ET' test ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait du avoir errsol=' errsol ' < 1.D-10') ; 'FINSI' ; 'FIN' iidens ; * Calcul des ordres lh lerrlon lerrvec lerrsol = LOG10 ldens lerrlon lerrvec lerrsol ; ord = cpl . 1 ; tordlon . disc = ord ; itab = '+' itab 1 ; tabev . itab = evlon ; tabt . itab = 'CHAINE' 'lon;' disc ';ord=' (formar ord 1) ; * ord = cpl . 1 ; tordvec . disc = ord ; itab = '+' itab 1 ; tabev . itab = evvec ; tabt . itab = 'CHAINE' 'vec;' disc ';ord=' (formar ord 1) ; * * On ne calcule pas l'ordre pour la solution car on a la solution exacte. * * evsol = 'EVOL' 'MANU' lh lerrsol ; * cpl dummy = @POMI evsol 1 'IDEM' ; * ord = cpl . 1 ; * itab = '+' itab 1 ; * tabev . itab = evsol ; * tabt . itab = 'CHAINE' 'sol;id=' idisc ';ord=' (formar ord 1) ; 'FIN' iidisc ; * Tracés 'SI' graph ; tix = 'CHAINE' 'Log10 h' ; tiy = 'CHAINE' 'Log10 err' ; DESSEVOL evt tabt tit tix tiy ; 'FINSI' ; * Vérification des ordres valvoul = 1.5 ; valobt = tordlon . 'LINE' ; test = valobt '>' valvoul ; ok = ok 'ET' test ; 'MESSAGE' ('CHAINE' 'Ordre de convergence sur la longueur' '(discretisation lineaire)=' valobt) ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' valvoul) ; 'FINSI' ; * valvoul = 0.5 ; valobt = tordvec . 'LINE' ; test = valobt '>' valvoul ; ok = ok 'ET' test ; 'MESSAGE' ('CHAINE' 'Ordre de convergence sur le vecteur tangent ' '(discretisation lineaire)=' valobt) ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' valvoul) ; 'FINSI' ; * valvoul = 2.5 ; valobt = tordlon . 'QUAI' ; test = valobt '>' valvoul ; ok = ok 'ET' test ; 'MESSAGE' ('CHAINE' 'Ordre de convergence sur la longueur' '(discretisation quadratique)=' valobt) ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' valvoul) ; 'FINSI' ; * valvoul = 1.5 ; valobt = tordvec . 'QUAI' ; test = valobt '>' valvoul ; ok = ok 'ET' test ; 'MESSAGE' ('CHAINE' 'Ordre de convergence sur le vecteur tangent ' '(discretisation quadratique)=' valobt) ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' valvoul) ; 'FINSI' ; * 'SI' ('NON' ok) ; 'MESSAGE' ('CHAINE' 'Il y a eu des erreurs') ; 'ERREUR' 5 ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; * 'SI' interact ; 'OPTION' 'DONN' 5 ; 'FINSI' ; * * End of dgibi file NLIN_LAPNCER * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales