* fichier : trainee_2d.dgibi
'OPTION' 'ECHO' 0 ;
*BEGINPROCEDUR calcul
************************************************************************
* NOM : CALCUL
* DESCRIPTION :
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 10/10/2006, version initiale
* HISTORIQUE : v1, 10/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 !
************************************************************************
*
*
'DEBPROC' CALCUL ;
'ARGUMENT' tymesh*'ENTIER' ;
'ARGUMENT' irig*'ENTIER' ;
'ARGUMENT' iden*'FLOTTANT' ;
'ARGUMENT' debug/'LOGIQUE' ;
*
'SI' ('NON' ('EXISTE' debug)) ;
debug = FAUX ;
'FINSI' ;
*
'DENS' iden ;
*
tabgeo = CMAIL Ar Az discg tymesh ;
_mt = tabgeo . 'mt' . 'QUAF' ;
titgeo = 'CHAINE' 'mt ' 'NBPO=' ('NBNO' _mt)
' NBELEM=' ('NBEL' _mt) ;
'SI' debug ;
'TRACER' _mt 'TITRE' titgeo ;
'FINSI' ;
*
* Solution exacte
*
mvit = tabgeo . 'mt' . discv ;
mvitq = tabgeo . 'mt' . 'QUAF' ;
cmvit = 'CONTOUR' (tabgeo . 'mt' . 'QUAI') ;
solx = SOLEX mvit ;
vsolx = 'VECTEUR' solx 'DEPL' 'JAUN' ;
*'TRACER' vsolx mvit ;
*
* Conditions aux limites
*
mur = (tabgeo . 'cmt' . discv) ;
muz = (tabgeo . 'sph' . discv) 'ET' (tabgeo . 'bot' . discv)
'ET' (tabgeo . 'inf' . discv) 'ET' (tabgeo . 'top' . discv) ;
ppres = 'POIN' (tabgeo . 'bot' . discv)
'PROC' (('*' Ar 0.5) ('*' Az -1.)) ;
*lpres = 'ELEM' mvclim 'APPUYE' 'LARGEMENT' ppres ;
*mvclim = 'DIFF' mvclim lpres ;
lpres = 'MANUEL' 'POI1' ppres ;
muz = 'DIFF' ('CHANGER' muz 'POI1') lpres ;
'SI' debug ;
'TRACER' muz 'TITR' 'Maillage clim' ;
'FINSI' ;
cclim = '+' ('REDU' ('EXCO' 'UR' solx 'UR') mur)
('REDU' ('EXCO' 'UZ' solx 'UZ') muz) ;
mblo = 'ET' ('BLOQUE' 'UR' mur) ('BLOQUE' 'UZ' muz) ;
fblo = 'DEPIMPOSE' mblo cclim ;
*
* Matrice de rigidité
*
mrig = GRIG _mt discg discv lvip lvid 1. ;
'SI' ('EGA' irig 1) ;
mrigt = mrig ;
'FINSI' ;
'SI' ('EGA' irig 2) ;
mrig2 = GRIG2 _mt discg discv lvip lvid 1. ;
mrigt = mrig 'ET' mrig2 ;
'FINSI' ;
'SI' ('EGA' irig 3) ;
mrig3 = GRIG3 _mt discg discv lvip lvid 1. ;
mrigt = mrig 'ET' mrig3 ;
'FINSI' ;
*
* Matrice de contrainte div u = 0
*
mbbt = GBBT2 _mt discg discv lvip lvid discp lpip lpid 1. ;
*
mtot = ('*' mrigt -1.) 'ET' mblo 'ET' ('*' mbbt -1.) ;
ftot = fblo ;
sola = 'KRES' mtot ftot ;
dsol = 'EXCO' lvip ('-' sola solx) ;
*
* Post-traitement
*
'SI' debug ;
vsola = 'VECTEUR' sola 'DEPL' 'ROUG' ;
vdsol = 'VECTEUR' dsol 'DEPL' 'JAUN' ;
'TRACER' (vsolx 'ET' vsola) mvitq ;
'FINSI' ;
*'TRACER' vdsol mvitq ;
*
* Erreur L2 avec poids entre vitesse approchée
* et interpolé de la vitesse exacte
*
mmass = GMASS _mt discg 'SCAL' discv 'SCAL' discv 1. ;
ms = 'MOTS' 'SCAL' ;
mur = 'EXTRAIRE' lvip ('LECT' 1) ;
mfr = 'EXTRAIRE' lvid ('LECT' 1) ;
muz = 'EXTRAIRE' lvip ('LECT' 2) ;
mfz = 'EXTRAIRE' lvid ('LECT' 2) ;
mmasr = 'CHANGER' 'INCO' mmass ms mur ms mfr ;
mmasz = 'CHANGER' 'INCO' mmass ms muz ms mfz ;
mmas = mmasr 'ET' mmasz ;
dsol = 'EXCO' lvip ('-' sola solx) ;
errl2 = '**' (xtmx dsol mmas) 0.5D0 ;
errli = 'MAXIMUM' dsol 'ABS' ;
*
* Force de traînée de Stokes
*
ft = 'REAC' mblo sola ;
fts = 'REDU' ft (tabgeo . 'sph' . discv) ;
rft = 'RESULT' fts ;
fstox = '*' PI 6.D0 ;
fstoa = 'MAXIMUM' ('EXCO' 'FZ' rft) 'ABS' ;
errfst = '/' ('ABS' ('-' fstox fstoa)) fstox ;
*
'SI' debug ;
'MESSAGE' ('CHAINE' 'Résultante de la force de trainee =' fstoa) ;
* 'LISTE' rft ;
'MESSAGE' ('CHAINE' 'Force de Stokes = ' fstox) ;
'MESSAGE' ('CHAINE' 'Err rel. trainee = ' errfst) ;
'MESSAGE' ('CHAINE' 'Erreur L2 = ' errl2) ;
'MESSAGE' ('CHAINE' 'Maxi sola - solex = ' errli) ;
'FINSI' ;
*
'RESPRO' errl2 errli errfst ;
*
* End of procedure file CALCUL
*
'FINPROC' ;
*ENDPROCEDUR calcul
*BEGINPROCEDUR cmail
************************************************************************
* NOM : CMAIL
* DESCRIPTION : Maillages pour le cas-test Stokes
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 11/04/2006, version initiale
* HISTORIQUE : v1, 11/04/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' CMAIL ;
'ARGUMENT' Ar*'FLOTTANT' ;
'ARGUMENT' Az*'FLOTTANT' ;
'ARGUMENT' discg*'MOT' ;
'ARGUMENT' tymesh*'ENTIER' ;
*
'SI' ('EGA' tymesh 1) ;
ell = 'TRI3' ; elq = 'TRI6' ;
'FINSI' ;
'SI' ('OU' ('EGA' tymesh 2) ('EGA' tymesh 3)) ;
ell = 'QUA4' ; elq = 'QUA8' ;
'FINSI' ;
disq = 'OU' ('EGA' discg 'QUAF') ('EGA' discg 'QUAD') ;
'OPTION' 'ELEM' elq ;
*
* Points
*
pA = 0. ('*' Az -1.) ; pB = Ar ('*' Az -1.) ;
pC = Ar Az ; pD = 0. Az ;
pE = 0. 1. ; pF = 1. 0. ; pG = 0. -1. ;
p0 = 0. 0. ;
* Lignes
'SI' ('OU' ('EGA' tymesh 1) ('EGA' tymesh 3)) ;
bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ;
top = 'DROIT' pC pD ;
axt = 'DROIT' pD pE ;
'SI' ('NON' disq) ;
'OPTION' 'ELEM' ell ;
sph = 'CER3' pE pF pG ;
sph = 'CHANGER' sph 'QUADRATIQUE' ;
'OPTION' 'ELEM' elq ;
'SINON' ;
sph = 'CER3' pE pF pG ;
'FINSI' ;
axb = 'DROIT' pG pA ;
axe = axt 'ET' axb ;
cmt = bot 'ET' inf 'ET' top 'ET' axt 'ET' sph 'ET' axb ;
* Surface
mt = 'SURFACE' cmt ;
'FINSI' ;
'SI' ('EGA' tymesh 2) ;
'SI' ('NON' disq) ;
'OPTION' 'ELEM' ell ;
bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ;
top = 'DROIT' pC pD ;
ext = bot 'ET' inf 'ET' top ;
sph = 'PROJETER' ext 'CONI' p0 'CERC' p0 pF ;
* 'TRACER' sph 'TITRE' 'Lineaire' 'NOEU' ;
sph = 'CHANGER' sph 'QUADRATIQUE' ;
bot = 'CHANGER' bot 'QUADRATIQUE' ;
top = 'CHANGER' top 'QUADRATIQUE' ;
inf = 'CHANGER' inf 'QUADRATIQUE' ;
ext = bot 'ET' inf 'ET' top ;
* 'TRACER' sph 'TITRE' 'Quadratique' 'NOEU' ;
'OPTION' 'ELEM' elq ;
'SINON' ;
bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ;
top = 'DROIT' pC pD ;
ext = bot 'ET' inf 'ET' top ;
sph = 'PROJETER' ext 'CONI' p0 'CERC' p0 pF ;
'FINSI' ;
* Surface
'OPTION' 'ELEM' elq ;
mt = 'REGLER' sph ext ;
sph = 'INVERSE' sph ;
cmt = 'CONTOUR' mt ;
axe = 'DIFF' cmt (ext 'ET' sph) ;
'FINSI' ;
_mt = 'CHANGER' mt 'QUAF' ;
*
tabgeo = 'TABLE' ;
tabgeo . 'mt' = 'TABLE' ;
tabgeo . 'mt' . 'QUAF' = _mt ;
q9 = 'NEG' (ISINLIS 'QUA9' ('ELEM' _mt 'TYPE')) 0 ;
t6 = 'NEG' (ISINLIS 'TRI6' ('ELEM' mt 'TYPE')) 0 ;
'SI' ('ET' q9 t6) ;
tabgeo . 'mt' . 'QUAD' = 'ET' ('ELEM' _mt 'QUA9')
('ELEM' mt 'TRI6') ;
'SINON' ;
'SI' t6 ;
tabgeo . 'mt' . 'QUAD' = mt ;
'FINSI' ;
'SI' q9 ;
tabgeo . 'mt' . 'QUAD' = _mt ;
'FINSI' ;
'FINSI' ;
tabgeo . 'mt' . 'QUAI' = mt ;
tabgeo . 'mt' . 'LINM' = 'DOMA'
('MODELISER' _mt 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'mt' . 'LINE' = 'CHANGER' mt 'LINEAIRE' ;
tabgeo . 'mt' . 'LINC' = 'DOMA'
('MODELISER' _mt 'NAVIER_STOKES' 'QUAF') 'FACE' ;
tabgeo . 'mt' . 'CSTE' = tabgeo . 'mt' . 'LINM' ;
tabgeo . 'bot' = 'TABLE' ;
tabgeo . 'bot' . 'QUAF' = bot ;
tabgeo . 'bot' . 'QUAD' = bot ;
tabgeo . 'bot' . 'QUAI' = bot ;
tabgeo . 'bot' . 'LINE' = 'CHANGER' bot 'LINEAIRE' ;
tabgeo . 'bot' . 'LINC' = 'DOMA'
('MODELISER' bot 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'inf' = 'TABLE' ;
tabgeo . 'inf' . 'QUAF' = inf ;
tabgeo . 'inf' . 'QUAD' = inf ;
tabgeo . 'inf' . 'QUAI' = inf ;
tabgeo . 'inf' . 'LINE' = 'CHANGER' inf 'LINEAIRE' ;
tabgeo . 'inf' . 'LINC' = 'DOMA'
('MODELISER' inf 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'top' = 'TABLE' ;
tabgeo . 'top' . 'QUAF' = top ;
tabgeo . 'top' . 'QUAD' = top ;
tabgeo . 'top' . 'QUAI' = top ;
tabgeo . 'top' . 'LINE' = 'CHANGER' top 'LINEAIRE' ;
tabgeo . 'top' . 'LINC' = 'DOMA'
('MODELISER' top 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'axe' = 'TABLE' ;
tabgeo . 'axe' . 'QUAF' = axe ;
tabgeo . 'axe' . 'QUAD' = axe ;
tabgeo . 'axe' . 'QUAI' = axe ;
tabgeo . 'axe' . 'LINE' = 'CHANGER' axe 'LINEAIRE' ;
tabgeo . 'axe' . 'LINC' = 'DOMA'
('MODELISER' axe 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'sph' = 'TABLE' ;
tabgeo . 'sph' . 'QUAF' = sph ;
tabgeo . 'sph' . 'QUAD' = sph ;
tabgeo . 'sph' . 'QUAI' = sph ;
tabgeo . 'sph' . 'LINE' = 'CHANGER' sph 'LINEAIRE' ;
tabgeo . 'sph' . 'LINC' = 'DOMA'
('MODELISER' sph 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
tabgeo . 'cmt' = 'TABLE' ;
tabgeo . 'cmt' . 'QUAF' = cmt ;
tabgeo . 'cmt' . 'QUAD' = cmt ;
tabgeo . 'cmt' . 'QUAI' = cmt ;
tabgeo . 'cmt' . 'LINE' = 'CHANGER' cmt 'LINEAIRE' ;
tabgeo . 'cmt' . 'LINC' = 'DOMA'
('MODELISER' cmt 'NAVIER_STOKES' 'QUAF') 'CENTRE' ;
'RESPRO' tabgeo ;
*
* End of procedure file CMAIL
*
'FINPROC' ;
*ENDPROCEDUR cmail
*BEGINPROCEDUR solex
************************************************************************
* NOM : SOLEX
* DESCRIPTION : Solution exacte de l'équation de Stokes
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 04/10/2006, version initiale
* HISTORIQUE : v1, 04/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 !
************************************************************************
*
*
'DEBPROC' SOLEX ;
'ARGUMENT' mail*'MAILLAGE' ;
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
rho z = 'COORDONNEE' mail ;
r = '**' ('+' ('**' rho 2) ('**' z 2)) 0.5 ;
cphi = '/' z r ;
sphi = '/' rho r ;
unsr = 'INVERSE' r ;
unsr3 = '**' unsr 3 ;
vrho = cphi '*' sphi '*' ('-' ('*' unsr 0.75) ('*' unsr3 0.75)) ;
vz = '+' ('*' ('**' cphi 2) ('-' ('*' unsr 1.5) ('*' unsr3 0.5)))
('*' ('**' sphi 2) ('+' ('*' unsr 0.75) ('*' unsr3 0.25))) ;
solv = '+' ('NOMC' 'UR' vrho) ('NOMC' 'UZ' vz) ;
'FINSI' ;
'SI' ('EGA' vdim 3) ;
x y z = 'COORDONNEE' mail ;
r2 = ('**' x 2) '+' ('**' y 2) '+' ('**' z 2) ;
rho2 = ('**' x 2) '+' ('**' y 2) ;
r = '**' r2 0.5 ;
unsr = 'INVERSE' r ;
unsr2 = 'INVERSE' r2 ;
unsr3 = '**' unsr 3 ;
alpha = '-' ('*' unsr 1.5) ('*' unsr3 0.5) ;
beta = '+' ('*' unsr 0.75) ('*' unsr3 0.25) ;
amb = '-' alpha beta ;
vx = amb '*' x '*' z '*' unsr2 ;
vy = amb '*' y '*' z '*' unsr2 ;
vz = ('+' (alpha '*' z '*' z)
(beta '*' rho2)) '*' unsr2 ;
solv = ('NOMC' 'UX' vx) '+' ('NOMC' 'UY' vy) '+' ('NOMC' 'UZ' vz) ;
'FINSI' ;
'RESPRO' solv ;
*
* End of procedure file SOLEX
*
'FINPROC' ;
*ENDPROCEDUR solex
*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' gdisc*'MOT ' ;
'ARGUMENT' nomt*'MOT ' ;
'ARGUMENT' disct*'MOT ' ;
'ARGUMENT' nomq*'MOT ' ;
'ARGUMENT' discq*'MOT ' ;
'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 ;
'ARGUMENT' discc*'MOT ' ;
'FINSI' ;
'SINON' ;
discc = 'CSTE' ;
'FINSI' ;
'ARGUMENT' methgau/'MOT ' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
'ARGUMENT' chpop/'CHPOINT' ;
'ARGUMENT' chpod/'CHPOINT' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
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 ;
mmt = 'MOTS' nomt ;
mmq = 'MOTS' nomq ;
numvar = 1 ;
numdat = 1 ;
numcof = 1 ;
*
A = ININLIN numop numvar numdat numcof numder ;
A . 'VAR' . 1 . 'NOMDDL' = mmt ;
A . 'VAR' . 1 . 'DISC' = disct ;
'SI' ('EXISTE' chpop) ;
A . 'VAR' . 1 . 'VALEUR' = chpop ;
'FINSI' ;
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = discc ;
A . 'DAT' . 1 . 'VALEUR' = coef ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
A . 1 . 1 . 0 = 'LECT' 1 ;
*
'SI' iaxi ;
numdat = 1 ;
numcof = 1 ;
'SINON' ;
numdat = 0 ;
numcof = 0 ;
'FINSI' ;
B = ININLIN numop numvar numdat numcof numder ;
B . 'VAR' . 1 . 'NOMDDL' = mmq ;
B . 'VAR' . 1 . 'DISC' = discq ;
'SI' ('EXISTE' chpod) ;
B . 'VAR' . 1 . 'VALEUR' = chpod ;
'FINSI' ;
*
'SI' iaxi ;
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = gdisc ;
B . 'DAT' . 1 . 'VALEUR' = dprmt ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
'FINSI' ;
'SI' iaxi ;
B . 1 . 1 . 0 = 'LECT' 1 ;
'SINON' ;
B . 1 . 1 . 0 = 'LECT' ;
'FINSI' ;
*
'SI' ('EXISTE' _smt) ;
mgmass = 'NLIN' gdisc _mt _smt A B methgau ;
'SINON' ;
mgmass = 'NLIN' gdisc _mt A B methgau ;
'FINSI' ;
*
'RESPRO' mgmass ;
'FINPROC' ;
*
* End of procedure file GMASS
*
*ENDPROCEDUR gmass
*BEGINPROCEDUR grig
************************************************************************
* NOM : GRIG
* DESCRIPTION : Matrice de rigidité axisymétrique
* sous forme (gradu . gradv)
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* 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' GRIG ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' gdisc*'MOT ' ;
'ARGUMENT' discv*'MOT ' ;
'ARGUMENT' lvp*'LISTMOTS' ;
'ARGUMENT' lvd*'LISTMOTS' ;
'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 ;
'ARGUMENT' discc*'MOT ' ;
'FINSI' ;
'SINON' ;
discc = 'CSTE' ;
'FINSI' ;
'ARGUMENT' methgau/'MOT ' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
'ARGUMENT' chpop/'CHPOINT' ;
'ARGUMENT' chpod/'CHPOINT' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
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 ;
rmt = 'COORDONNEE' 1 _mt ;
deupi = ('*' PI 2.D0) ;
'FINSI' ;
* Test bête...
'SI' ('EGA' ('TYPE' coef) 'CHPOINT ') ;
mincoef = 'MINIMUM' coef ;
'SINON' ;
mincoef = coef ;
'FINSI' ;
'SI' ('<' mincoef 0.D0) ;
'ERREUR' 'Le coef (une viscosité) doit etre positive' ;
'FINSI' ;
*
'SI' iaxi ;
numop = 5 ;
numder = idim ;
numvar = 2 ;
numdat = 2 ;
numcof = 2 ;
*
A = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
lnom = 'EXTRAIRE' lvp &iidim ;
A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' lnom ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'SI' ('EXISTE' chpop) ;
A . 'VAR' . &iidim . 'VALEUR' = 'EXCO' lnom chpop lnom ;
'FINSI' ;
'FIN' iidim ;
*
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = gdisc ;
A . 'DAT' . 1 . 'VALEUR' = rmt ;
A . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 2 . 'DISC' = discc ;
A . 'DAT' . 2 . 'VALEUR' = coef ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
A . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
*
A . 1 . 1 . 1 = 'LECT' 2 ;
A . 2 . 1 . 2 = 'LECT' 2 ;
A . 3 . 1 . 0 = 'LECT' -1 2 ;
A . 4 . 2 . 1 = 'LECT' 2 ;
A . 5 . 2 . 2 = 'LECT' 2 ;
*
numdat = 2 ;
numcof = 2 ;
*
B = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
lnom = 'EXTRAIRE' lvd &iidim ;
B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' lnom ;
B . 'VAR' . &iidim . 'DISC' = discv ;
'SI' ('EXISTE' chpod) ;
B . 'VAR' . &iidim . 'VALEUR' = 'EXCO' lnom chpod lnom ;
'FINSI' ;
'FIN' iidim ;
*
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = gdisc ;
B . 'DAT' . 1 . 'VALEUR' = rmt ;
B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 2 . 'DISC' = 'CSTE' ;
B . 'DAT' . 2 . 'VALEUR' = deupi ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
*
B . 1 . 1 . 1 = 'LECT' 1 2 ;
B . 2 . 1 . 2 = 'LECT' 1 2 ;
B . 3 . 1 . 0 = 'LECT' 2 ;
B . 4 . 2 . 1 = 'LECT' 1 2 ;
B . 5 . 2 . 2 = 'LECT' 1 2 ;
'SINON' ;
numop = '**' idim 2 ;
*! numop = idim ;
numder = idim ;
numvar = idim ;
numdat = 1 ;
numcof = 1 ;
*
A = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
lnom = 'EXTRAIRE' lvp &iidim ;
A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' lnom ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'SI' ('EXISTE' chpop) ;
A . 'VAR' . &iidim . 'VALEUR' = 'EXCO' lnom chpop lnom ;
'FINSI' ;
'FIN' iidim ;
*
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = discc ;
A . 'DAT' . 1 . 'VALEUR' = coef ;
*
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
iop = 0 ;
'REPETER' iidim idim ;
* 'REPETER' iidim 1 ;
'REPETER' jidim idim ;
iop = '+' iop 1 ;
A . iop . &iidim . &jidim = 'LECT' 1 ;
'FIN' jidim ;
'FIN' iidim ;
*
numdat = 0 ;
numcof = 0 ;
*
B = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
lnom = 'EXTRAIRE' lvd &iidim ;
B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' lnom ;
B . 'VAR' . &iidim . 'DISC' = discv ;
'SI' ('EXISTE' chpod) ;
B . 'VAR' . &iidim . 'VALEUR' = 'EXCO' lnom chpod lnom ;
'FINSI' ;
'FIN' iidim ;
*
iop = 0 ;
'REPETER' iidim idim ;
*! 'REPETER' iidim 1 ;
'REPETER' jidim idim ;
iop = '+' iop 1 ;
B . iop . &iidim . &jidim = 'LECT' ;
'FIN' jidim ;
'FIN' iidim ;
'FINSI' ;
*
mgrig = 'NLIN' gdisc _mt A B methgau ;
* Integration par parties
mgrig = '*' mgrig -1.D0 ;
*
'RESPRO' mgrig ;
'FINPROC' ;
*
* End of procedure file GRIG
*
*ENDPROCEDUR grig
*BEGINPROCEDUR grig2
************************************************************************
* NOM : GRIG2
* DESCRIPTION : Additif à la matrice de rigidité axisymétrique
* de forme (tgradu . gradv)
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* 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' GRIG2 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' gdisc*'MOT ' ;
'ARGUMENT' discv*'MOT ' ;
'ARGUMENT' lvp*'LISTMOTS' ;
'ARGUMENT' lvd*'LISTMOTS' ;
'ARGUMENT' methgau/'MOT ' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
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 ;
** vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
* '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 ;
rmt = 'COORDONNEE' 1 _mt ;
deupi = ('*' PI 2.D0) ;
'FINSI' ;
*
numop = 5 ;
numder = idim ;
numvar = 2 ;
numdat = 1 ;
numcof = 1 ;
*
A = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvp &iidim) ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
*
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = gdisc ;
A . 'DAT' . 1 . 'VALEUR' = rmt ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
A . 1 . 1 . 1 = 'LECT' ;
A . 2 . 2 . 1 = 'LECT' ;
A . 3 . 1 . 0 = 'LECT' -1 ;
A . 4 . 1 . 2 = 'LECT' ;
A . 5 . 2 . 2 = 'LECT' ;
*
numdat = 2 ;
numcof = 2 ;
*
B = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvd &iidim) ;
B . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
*
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = gdisc ;
B . 'DAT' . 1 . 'VALEUR' = rmt ;
B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 2 . 'DISC' = 'CSTE' ;
B . 'DAT' . 2 . 'VALEUR' = deupi ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
*
B . 1 . 1 . 1 = 'LECT' 1 2 ;
B . 2 . 1 . 2 = 'LECT' 1 2 ;
B . 3 . 1 . 0 = 'LECT' 2 ;
B . 4 . 2 . 1 = 'LECT' 1 2 ;
B . 5 . 2 . 2 = 'LECT' 1 2 ;
*
mgrig = 'NLIN' gdisc _mt A B methgau ;
* Integration par parties
mgrig = '*' mgrig -1.D0 ;
*
'RESPRO' mgrig ;
'FINPROC' ;
*
* End of procedure file GRIG2
*
*ENDPROCEDUR grig2
*BEGINPROCEDUR grig3
************************************************************************
* NOM : GRIG3
* DESCRIPTION : Additif à la matrice de rigidité axisymétrique
* de forme (div u . div v)
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* 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' GRIG3 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' gdisc*'MOT ' ;
'ARGUMENT' discv*'MOT ' ;
'ARGUMENT' lvp*'LISTMOTS' ;
'ARGUMENT' lvd*'LISTMOTS' ;
'ARGUMENT' methgau/'MOT ' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
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 ;
** vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
* '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 ;
rmt = 'COORDONNEE' 1 _mt ;
deupi = ('*' PI 2.D0) ;
'FINSI' ;
*
numop = 1 ;
numder = idim ;
numvar = 2 ;
numdat = 1 ;
numcof = 1 ;
*
A = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvp &iidim) ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
*
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = gdisc ;
A . 'DAT' . 1 . 'VALEUR' = rmt ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
A . 1 . 1 . 0 = 'LECT' -1 ;
A . 1 . 1 . 1 = 'LECT' ;
A . 1 . 2 . 2 = 'LECT' ;
*
numdat = 2 ;
numcof = 2 ;
*
B = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvd &iidim) ;
B . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
*
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = gdisc ;
B . 'DAT' . 1 . 'VALEUR' = rmt ;
B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 2 . 'DISC' = 'CSTE' ;
B . 'DAT' . 2 . 'VALEUR' = deupi ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
*
B . 1 . 1 . 0 = 'LECT' 2 ;
B . 1 . 1 . 1 = 'LECT' 1 2 ;
B . 1 . 2 . 2 = 'LECT' 1 2 ;
*
mgrig = 'NLIN' gdisc _mt A B methgau ;
* Integration par parties
mgrig = '*' mgrig -1.D0 ;
*
'RESPRO' mgrig ;
'FINPROC' ;
*
* End of procedure file GRIG3
*
*ENDPROCEDUR grig3
*BEGINPROCEDUR gbbt2
************************************************************************
* NOM : GBBT2
* DESCRIPTION : Copie de GBBT
* Version customisée pour la sphère
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 05/10/2006, version initiale
* HISTORIQUE : v1, 05/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 !
************************************************************************
*
*
'DEBPROC' GBBT2 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' gdisc*'MOT ' ;
'ARGUMENT' discv*'MOT ' ;
'ARGUMENT' lvp*'LISTMOTS' ;
'ARGUMENT' lvd*'LISTMOTS' ;
'ARGUMENT' discp*'MOT ' ;
'ARGUMENT' lpp*'LISTMOTS' ;
'ARGUMENT' lpd*'LISTMOTS' ;
'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 ;
'ARGUMENT' discc*'MOT ' ;
'FINSI' ;
'SINON' ;
discc = 'CSTE' ;
'FINSI' ;
'ARGUMENT' methgau/'MOT ' ;
'SI' ('NON' ('EXISTE' methgau)) ;
methgau = 'GAU7' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
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 = 2 ;
numder = idim ;
mmp = 'MOTS' nomp ;
idim1 = '+' idim 1 ;
numvar = idim1 ;
'SI' iaxi ;
numdat = 3 ;
numcof = 3 ;
'SINON' ;
numdat = 1 ;
numcof = 1 ;
'FINSI' ;
*
A = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvp &iidim) ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
A . 'VAR' . idim1 . 'NOMDDL' = lpp ;
A . 'VAR' . idim1 . 'DISC' = discp ;
A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 1 . 'DISC' = discc ;
A . 'DAT' . 1 . 'VALEUR' = coef ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
'SI' iaxi ;
A . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 2 . 'DISC' = 'CSTE' ;
A . 'DAT' . 2 . 'VALEUR' = dp ;
A . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
A . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . 3 . 'DISC' = gdisc ;
A . 'DAT' . 3 . 'VALEUR' = rmt ;
A . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
'FINSI' ;
*
'SI' iaxi ;
'REPETER' iidim idim ;
A . 1 . &iidim . &iidim = 'LECT' 1 2 3 ;
'FIN' iidim ;
A . 1 . 1 . 0 = 'LECT' 1 2 ;
'SINON' ;
'REPETER' iidim idim ;
A . 1 . &iidim . &iidim = 'LECT' 1 ;
'FIN' iidim ;
'FINSI' ;
A . 2 . idim1 . 0 = 'LECT' ;
*
'SI' iaxi ;
numdat = 3 ;
numcof = 3 ;
'SINON' ;
numdat = 1 ;
numcof = 1 ;
'FINSI' ;
B = ININLIN numop numvar numdat numcof numder ;
'REPETER' iidim idim ;
B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lvd &iidim) ;
B . 'VAR' . &iidim . 'DISC' = discv ;
'FIN' iidim ;
B . 'VAR' . idim1 . 'NOMDDL' = lpd ;
B . 'VAR' . idim1 . 'DISC' = discp ;
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = discc ;
B . 'DAT' . 1 . 'VALEUR' = coef ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
'SI' iaxi ;
B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 2 . 'DISC' = 'CSTE' ;
B . 'DAT' . 2 . 'VALEUR' = dp ;
B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
B . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 3 . 'DISC' = gdisc ;
B . 'DAT' . 3 . 'VALEUR' = rmt ;
B . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
'FINSI' ;
*
'SI' iaxi ;
'REPETER' iidim idim ;
B . 2 . &iidim . &iidim = 'LECT' 1 2 3 ;
'FIN' iidim ;
B . 2 . 1 . 0 = 'LECT' 1 2 ;
'SINON' ;
'REPETER' iidim idim ;
B . 2 . &iidim . &iidim = 'LECT' 1 ;
'FIN' iidim ;
'FINSI' ;
B . 1 . idim1 . 0 = 'LECT' ;
*
mgbbt2 = 'NLIN' gdisc _mt A B methgau ;
*
'RESPRO' mgbbt2 ;
'FINPROC' ;
*
* End of procedure file GBBT2
*
*ENDPROCEDUR gbbt2
*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
*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' tit*'MOT' ;
'ARGUMENT' tix*'MOT' ;
'ARGUMENT' tiy*'MOT' ;
'ARGUMENT' lnclk/'LOGIQUE' ;
'ARGUMENT' nb/'ENTIER' ;
*
'SI' ('NON' ('EXISTE' lnclk)) ;
lnclk = FAUX ;
'FINSI' ;
*
'SI' ('NON' ('EXISTE' nb)) ;
nb = 3 ;
'FINSI' ;
*
nt = 'DIME' tabt ;
nev = 'DIME' evtot ;
*
* 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' ;
*
lcoul = 'MOTS' 'TURQ' 'VERT' 'JAUN' 'ROSE' 'ROUG' 'BLEU' ;
lmarq = 'MOTS' 'TRIB' 'TRIA' 'LOSA' 'CARR' 'ETOI' 'PLUS' 'CROI' ;
ltirr = 'MOTS' 'TIRR' 'TIRC' 'TIRL' 'TIRM' ;
*
'SI' ('EGA' nb 0) ;
ev2 = evtot ;
'SINON' ;
icou = 0 ;
'REPETER' iev nev ;
ii = &iev ;
evi = 'EXTRAIRE' evtot 'COUR' ii ;
'SI' ('NEG' ('TYPE' ('EXTRAIRE' evi 'ORDO')) 'LISTMOTS') ;
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 2) ;
tev . ii = 'CHAINE' 'MARQ ' mi ' ' ti ;
'FINSI' ;
'SI' ('>' nb 1) ;
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 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' ;
j = 'DIME' lm ;
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 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) ;
'ARGUMENT' itab/'MOT' ;
'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) ;
'ARGUMENT' chpo/'CHPOINT' ;
'SI' ('EXISTE' chpo) ;
obj = chpo ; lobj = VRAI ;
'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) ;
'SI' ('EGA' ('TYPE' obj) 'CHPOINT') ;
tab . itab = '+' (tab . itab) obj ;
'SINON' ;
tab . itab = 'ET' (tab . itab) obj ;
'FINSI' ;
'SINON' ;
tab . itab = obj ;
'FINSI' ;
'RESPRO' tab ;
'FINSI' ;
'ARGUMENT' lenti/'LISTENTI' ;
'ARGUMENT' lreel/'LISTREEL' ;
'SI' ('EXISTE' lenti) ;
'ARGUMENT' enti*'ENTIER' ;
lenti = 'ET' lenti ('LECT' enti) ;
'RESPRO' lenti ;
'FINSI' ;
'SI' ('EXISTE' lreel) ;
'ARGUMENT' reel*'FLOTTANT' ;
lreel = 'ET' lreel ('PROG' reel) ;
'RESPRO' lreel ;
'FINSI' ;
*
* End of procedure file APPEND
*
'FINPROC' ;
*ENDPROCEDUR append
*BEGINPROCEDUR isinlis
************************************************************************
* NOM : ISINLIS
* DESCRIPTION : Index d'un mot dans un liste de mots
* (0 s'il n'y est pas)
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 15/12/2004, version initiale
* HISTORIQUE : v1, 15/12/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' ISINLIS ;
'ARGUMENT' tutu*'MOT' ;
'ARGUMENT' ltoto*'LISTMOTS' ;
'ARGUMENT' lerr/'LOGIQUE' ;
*
'SI' ('NON' ('EXISTE' lerr)) ;
lerr = FAUX ;
'FINSI' ;
*
isin = 0 ;
ntoto = 'DIME' ltoto ;
'SI' ('>' ntoto 0) ;
'REPETER' itoto ntoto ;
mtoto = 'EXTRAIRE' ltoto &itoto ;
'SI' ('EGA' mtoto tutu) ;
isin = &itoto ;
'QUITTER' itoto ;
'FINSI' ;
'FIN' itoto ;
'FINSI' ;
'SI' lerr ;
'SI' ('EGA' isin 0) ;
cherr = 'CHAINE' ' ne contient pas ' tutu ;
'LISTE' ltoto ;
'ERREUR' cherr ;
'FINSI' ;
'SINON' ;
'RESPRO' isin ;
'FINSI' ;
*
* End of procedure file ISINLIS
*
'FINPROC' ;
*ENDPROCEDUR isinlis
*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
************************************************************************
* NOM : TRAINEE_2D
* DESCRIPTION : Cas-test Traînée de Stokes (axisymétrique)
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 04/10/2006, version initiale
* HISTORIQUE : v1, 04/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 !
************************************************************************
*
complet = FAUX ;
interact = FAUX ;
graph = FAUX ;
*
'OPTION' 'DIME' 2 'MODE' 'AXIS' ;
'OPTION' 'ISOV' 'SURF' ;
'SI' ('NON' interact) ;
'OPTION' 'TRAC' 'PSC' ;
'SINON' ;
'OPTION' 'TRAC' 'X' ;
'FINSI' ;
*
* Paramètres maillage
*
Ar = 2. ; Az = 2. ;
* 1 = triangle
* 2 = quadrangle
* 3 = quadrangle + triangles
ok = VRAI ;
'REPETER' iimesh 2 ;
imesh = &iimesh ;
'SI' ('EGA' imesh 1) ;
tmesh = 'CHAINE' 'Triangle' ;
'FINSI' ;
'SI' ('EGA' imesh 2) ;
tmesh = 'CHAINE' 'Quadrangle' ;
'FINSI' ;
'SI' ('EGA' imesh 3) ;
tmesh = 'CHAINE' 'Qua et Tri' ;
'FINSI' ;
*
* Paramètres numériques (I)
* Espaces de discrétisation
* idisc = 1 : QUAF + CENTREP1
* idisc = 2 : QUAD + LINE
* idisc = 3 : LINC + CSTE
* discrétisation du terme de contrainte
* irig = 1 : (grad u . grad v)
* irig = 2 : (grad u . grad v) + (tgradu . tgradv)
* irig = 3 : (grad u . grad v) + (div u . div v)
irig = 1 ;
tabevl2 = 'TABLE' ; tabevli = 'TABLE' ; tabevst = 'TABLE' ;
tabtl2 = 'TABLE' ; tabtli = 'TABLE' ; tabtst = 'TABLE' ;
'REPETER' iidisc 3 ;
idisc = &iidisc ;
'SI' ('EGA' idisc 1) ;
tdisc = 'CHAINE' 'QUAF/LINM' ;
ordvoul = 3. ;
discg = 'QUAF' ;
discv = 'QUAF' ;
lvip = 'MOTS' 'UR' 'UZ' ;
lvid = 'MOTS' 'FR' 'FZ' ;
discp = 'LINM' ;
lpip = 'MOTS' 'LX1' 'LX2' 'LX3' ;
lpid = 'MOTS' 'LX1' 'LX2' 'LX3' ;
'SI' complet ;
lisden = 'PROG' 0.5 0.25 0.125 0.0625 ;
'SINON' ;
lisden = 'PROG' 0.5 0.25 0.125 ;
'FINSI' ;
'FINSI' ;
*
'SI' ('EGA' idisc 2) ;
tdisc = 'CHAINE' 'QUAD/LINE' ;
ordvoul = 3. ;
discg = 'QUAD' ;
discv = 'QUAD' ;
lvip = 'MOTS' 'UR' 'UZ' ;
lvid = 'MOTS' 'FR' 'FZ' ;
discp = 'LINE' ;
lpip = 'MOTS' 'LXP' ;
lpid = 'MOTS' 'LXP' ;
'SI' complet ;
lisden = 'PROG' 0.5 0.25 0.125 0.0625 ;
'SINON' ;
lisden = 'PROG' 0.5 0.25 0.125 ;
'FINSI' ;
'FINSI' ;
*
'SI' ('EGA' idisc 3) ;
tdisc = 'CHAINE' 'LINC/CSTE' ;
* On devrait avoir 2. mais il faut raffiner !
ordvoul = 1.7 ;
discg = 'LINE' ;
discv = 'LINC' ;
lvip = 'MOTS' 'UR' 'UZ' ;
lvid = 'MOTS' 'FR' 'FZ' ;
discp = 'CSTE' ;
lpip = 'MOTS' 'LXP' ;
lpid = 'MOTS' 'LXP' ;
'SI' complet ;
lisden = 'PROG' 0.5 0.25 0.125 0.0625 0.03125 ;
'SINON' ;
lisden = 'PROG' 0.5 0.25 0.125 0.0625 ;
'FINSI' ;
'FINSI' ;
*
nden = 'DIME' lisden ;
lh = 'PROG' ; ll2 = 'PROG' ; lli = 'PROG' ; lst = 'PROG' ;
'REPETER' iiden nden ;
iden = &iiden ;
den = 'EXTRAIRE' lisden iden ;
* errl2 errli errfst = CALCUL imesh irig den VRAI ;
errl2 errli errfst = CALCUL imesh irig den ;
lh = APPEND lh den ; ll2 = APPEND ll2 errl2 ;
lli = APPEND lli errli ; lst = APPEND lst errfst ;
'FIN' iiden ;
*
lh ll2 lli lst = LOG10 lh ll2 lli lst ;
*
* Calcul des ordres de convergence
*
evl2 = 'EVOL' 'MANU' lh ll2 ;
cpl2 dummy = @POMI evl2 1 'IDEM' ;
ordl2 = cpl2 . 1 ;
tabevl2 . idisc = evl2 ;
tabtl2 . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordl2 1) ;
*
* Test de l'ordre
*
test = 'EGA' ordl2 ordvoul ('*' ordvoul 0.2) ;
ok = ok 'ET' test ;
titcas = 'CHAINE' 'Maillage : ' tmesh ' Discretisation : ' tdisc ;
'MESSAGE' titcas ;
'MESSAGE' ('CHAINE' ' Ordre de convergence norme L2 axi sur la vitesse '
ordl2) ;
'SI' ('NON' test) ;
'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' ordvoul) ;
'FINSI' ;
evli = 'EVOL' 'MANU' lh lli ;
cpli dummy = @POMI evli 1 'IDEM' ;
ordli = cpli . 1 ;
tabevli . idisc = evli ;
tabtli . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordli 1) ;
evst = 'EVOL' 'MANU' lh lst ;
cpst dummy = @POMI evst 1 'IDEM' ;
ordst = cpst . 1 ;
tabevst . idisc = evst ;
tabtst . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordst 1) ;
'FIN' iidisc ;
*
'SI' graph ;
evtl2 = @STBL tabevl2 ;
tit = 'CHAINE' 'Ordre de convergence en norme L2 axi sur la vitesse' ;
tix = 'CHAINE' 'Log10 h' ;
tiy = 'CHAINE' 'Log10 errl2' ;
DESSEVOL evtl2 tabtl2 tit tix tiy ;
*
evtli = @STBL tabevli ;
tit = 'CHAINE' 'Ordre de convergence en norme Linf sur la vitesse' ;
tix = 'CHAINE' 'Log10 h' ;
tiy = 'CHAINE' 'Log10 errli' ;
DESSEVOL evtli tabtli tit tix tiy ;
*
evtst = @STBL tabevst ;
tit = 'CHAINE' 'Ordre de convergence sur la trainee de Stokes' ;
tix = 'CHAINE' 'Log10 h' ;
tiy = 'CHAINE' 'Log10 errst' ;
DESSEVOL evtst tabtst tit tix tiy ;
'FINSI' ;
'FIN' iimesh ;
*
'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 ;
'OPTION' 'ECHO' 1 ;
'FINSI' ;
*
* End of dgibi file TRAINEE_2D
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer