* fichier : nlin_lapn.dgibi
*BEGINPROCEDUR coptab
************************************************************************
* NOM : COPTAB
* DESCRIPTION : copie la table arguments pour NLIN
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 11/05/2004, version initiale
* HISTORIQUE : v1, 11/05/2004, création
* HISTORIQUE : v2, 12/12/2005, version pour nlin final
* 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' COPTAB A*'TABLE ' ;
nop = A . 'NUMOP' ;
nvar = A . 'NUMVAR' ;
ndat = A . 'NUMDAT' ;
ncof = A . 'NUMCOF' ;
nder = A . 'NUMDER' ;
*
B = 'TABLE' ;
B. 'NUMOP' = nop ;
B. 'NUMVAR' = nvar ;
B. 'NUMDAT' = ndat ;
B. 'NUMCOF' = ncof ;
B. 'NUMDER' = nder ;
*
B . 'VAR' = 'TABLE' ;
'REPETER' ivar nvar ;
B . 'VAR' . &ivar = 'TABLE' ;
'SI' ('EXISTE' (A . 'VAR' . &ivar) 'NOMDDL') ;
B . 'VAR' . &ivar . 'NOMDDL' =
A . 'VAR' . &ivar . 'NOMDDL' ;
'FINSI' ;
'SI' ('EXISTE' (A . 'VAR' . &ivar) 'DISC') ;
B . 'VAR' . &ivar . 'DISC' =
A . 'VAR' . &ivar . 'DISC' ;
'FINSI' ;
'SI' ('EXISTE' (A . 'VAR' . &ivar) 'VALEUR') ;
B . 'VAR' . &ivar . 'VALEUR' =
A . 'VAR' . &ivar . 'VALEUR' ;
'FINSI' ;
'FIN' ivar ;
*
B . 'DAT' = 'TABLE' ;
'SI' ('>' ndat 0) ;
'REPETER' idat ndat ;
B . 'DAT' . &idat = 'TABLE' ;
'SI' ('EXISTE' (A . 'DAT' . &idat) 'NOMDDL') ;
B . 'DAT' . &idat . 'NOMDDL' =
A . 'DAT' . &idat . 'NOMDDL' ;
'FINSI' ;
'SI' ('EXISTE' (A . 'DAT' . &idat) 'DISC') ;
B . 'DAT' . &idat . 'DISC' =
A . 'DAT' . &idat . 'DISC' ;
'FINSI' ;
'SI' ('EXISTE' (A . 'DAT' . &idat) 'VALEUR') ;
B . 'DAT' . &idat . 'VALEUR' =
A . 'DAT' . &idat . 'VALEUR' ;
'FINSI' ;
'FIN' idat ;
'FINSI' ;
*
B . 'COF' = 'TABLE' ;
'SI' ('>' ncof 0) ;
'REPETER' icof ncof ;
B . 'COF' . &icof = 'TABLE' ;
'SI' ('EXISTE' (A . 'COF' . &icof) 'COMPOR') ;
B . 'COF' . &icof . 'COMPOR' =
A . 'COF' . &icof . 'COMPOR' ;
'FINSI' ;
'SI' ('EXISTE' (A . 'COF' . &icof) 'LDAT') ;
B . 'COF' . &icof . 'LDAT' =
A . 'COF' . &icof . 'LDAT' ;
'FINSI' ;
* 'SI' ('EXISTE' (A . 'COF' . &icof) 'FACMUL') ;
* B . 'COF' . &icof . 'FACMUL' =
* A . 'COF' . &icof . 'FACMUL' ;
* 'FINSI' ;
'FIN' icof ;
'FINSI' ;
*
'REPETER' iop nop ;
B . &iop = 'TABLE' ;
'REPETER' ivar nvar ;
B . &iop . &ivar = 'TABLE' ;
'REPETER' ider ('+' nder 1) ;
* B . &iop . &ivar . ('-' &ider 1) = 'TABLE' ;
* 'SI' ('EXISTE'
* (A . &iop . &ivar . ('-' &ider 1))
* 'COMPOR') ;
* B . &iop . &ivar . ('-' &ider 1) . 'LCOF' =
* A . &iop . &ivar . ('-' &ider 1) . 'LCOF' ;
* 'FINSI' ;
'SI' ('EXISTE'
(A . &iop . &ivar) ('-' &ider 1)) ;
B . &iop . &ivar . ('-' &ider 1) =
A . &iop . &ivar . ('-' &ider 1) ;
'FINSI' ;
'FIN' ider ;
'FIN' ivar ;
'FIN' iop ;
*
'FINPROC' B ;
*
* End of procedure file COPTAB
*
*ENDPROCEDUR coptab
*
* Plusieurs facons de construire la matrice du laplacien pour tester
* nlin
*
'DEBPROC' LAP1 ;
idim = 'VALEUR' 'DIME' ;
numop = idim ;
numder = idim ;
numvar = 1 ;
numdat = 0 ;
numcof = 0 ;
*
discg = 'LINE' ;
methgau = 'GAU7' ;
*
A = ININLIN numop numvar numdat numcof numder ;
A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'T' ;
A . 'VAR' . 1 . 'DISC' = 'LINE' ;
* Manière simple
A . 1 . 1 . 1 = 'LECT' ;
A . 2 . 1 . 2 = 'LECT' ;
*
B = COPTAB A ;
B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'Q' ;
*
mlapn = 'NLIN' discg _mt A B methgau ;
'RESPRO' mlapn ;
'FINPROC' ;
************************************************************************
* NOM : NLIN_LAPN
* DESCRIPTION : Test tout simple sur un laplacien
*
* Domaine : carré [0,1]x[0,1]
* Equation : \Delta T = 0
* CLim : restriction au bord de la solution exacte
* Solution : T_exact = 2^0.5 x + \pi y
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 28/09/2005, version initiale
* HISTORIQUE : v1, 28/09/2005, création
* HISTORIQUE : v2, 12/12/2005, nouvelle version à l'aide de nlin_final
* 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 ;
'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
'SI' graph ;
'SI' interact ;
'OPTION' 'TRAC' 'X' ;
'SINON' ;
'OPTION' 'TRAC' 'PSC' ;
'FINSI' ;
'FINSI' ;
*
* Maillage
*
nx = 5 ;
ny = 5 ;
pA = 0. 0. ; pB = 1. 0. ;
pC = 1. 1. ; pD = 0. 1. ;
l1 = 'DROIT' nx pA pB ;
l2 = 'DROIT' ny pB pC ;
l3 = 'DROIT' nx pC pD ;
l4 = 'DROIT' ny pD pA ;
*mt = 'DALLER' l1 l2 l3 l4 ;
mt = 'SURFACE' (l1 'ET' l2 'ET' l3 'ET' l4) ;
cmt = l1 'ET' l2 'ET' l3 'ET' l4 ;
*
_mt = 'CHANGER' mt 'QUAF' ;
_cmt = 'CHANGER' cmt 'QUAF' ;
'SI' graph ;
'TRACER' mt 'NOEUD' 'TITRE' ('CHAINE' 'Maillage') ;
'FINSI' ;
*
* Solution exacte du problème
*
xmt ymt = 'COORDONNEE' mt ;
solex = '+' ('*' xmt ('**' 2.D0 0.5D0))
('*' ymt PI) ;
solex = 'NOMC' 'T' solex 'NATURE' 'DISCRET' ;
*
* Matrice du problème
*
mlapn = LAP1 ;
*
* Conditions aux limites
*
clim = 'REDU' solex cmt ;
mbloc = 'BLOQUE' 'T' cmt ;
fbloc = 'DEPIMPOSE' mbloc clim ;
'SI' graph ;
'TRACER' clim cmt 'TITRE' ('CHAINE' 'Conditions aux limites') ;
'FINSI' ;
*
* Résoud le problème
*
mtot = mlapn 'ET' mbloc ;
ftot = fbloc ;
*
solu = 'RESOUD' mtot ftot ;
*
*
* Post-traitement et calcul de l'erreur
*
*
tsol = 'EXCO' 'T' solu 'T' ;
difexa = '-' solex tsol ;
'SI' graph ;
'TRACER' tsol mt 'TITRE' ('CHAINE' 'Solution approchee') ;
'TRACER' difexa mt 'TITRE'
('CHAINE' 'Solution exacte - solution approchee') ;
'FINSI' ;
nerr = '/' ('**' ('XTX' difexa) 0.5D0) ('NBNO' mt) ;
'OPTION' 'ECHO' 0 ;
'SAUTER' 3 'LIGNE' ;
'MESSAGE' ('CHAINE' 'Norme de lerreur : ' nerr) ;
'SAUTER' 3 'LIGNE' ;
'OPTION' 'ECHO' 1 ;
*
'SI' (nerr '>' 1.D-10) ;
'ERREUR' 5 ;
'FINSI' ;
*
'SI' interact ;
'OPTION' 'DONN' 5 ;
'FINSI' ;
*
* End of dgibi file NLIN_LAPN
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer