* fichier : kopscmct2.dgibi
'OPTI' echo 0 ;
************************************************************************
* NOM : KOPSCMCT2
* DESCRIPTION : On vérifie que KOPS CMCT donne des résultats corrects
* avec des RIGIDITES et de MATRIKS
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 15/04/2011, version initiale
* HISTORIQUE : v1, 15/04/2011, 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;
*
*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' 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' ;
* 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 ;
lcoef = 'MOTS' 'NURR' 'NUZZ' ;
'SINON' ;
'SI' ('EGA' idim 2) ;
lcoef = 'MOTS' 'NUXX' 'NUYY' ;
'SINON' ;
lcoef = 'MOTS' 'NUXX' 'NUYY' 'NUZZ' ;
'FINSI' ;
'FINSI' ;
*
ltens = FAUX ;
'SI' ('EGA' ('TYPE' coef) 'CHPOINT') ;
ncomp = 'DIME' ('EXTRAIRE' coef 'COMP') ;
'SI' ('EGA' ncomp idim) ;
ltens = VRAI ;
'FINSI' ;
'FINSI' ;
*
tcoef = 'TABLE' ;
'SI' ltens ;
'REPETER' iidim idim ;
tcoef . &iidim = 'EXCO' ('EXTRAIRE' lcoef &iidim) coef ;
'FIN' iidim ;
'SINON' ;
'REPETER' iidim idim ;
tcoef . &iidim = coef ;
'FIN' iidim ;
'FINSI' ;
*
numop = idim ;
numder = idim ;
mmt = 'MOTS' nomt ;
mmq = 'MOTS' nomq ;
numvar = 1 ;
numdat = idim ;
numcof = idim ;
*
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' ;
'REPETER' iidim idim ;
A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . &iidim . 'DISC' = discc ;
A . 'DAT' . &iidim . 'VALEUR' = tcoef . &iidim ;
A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
'FIN' iidim ;
*
'REPETER' iidim idim ;
A . &iidim . 1 . &iidim = 'LECT' &iidim ;
'FIN' iidim ;
*
'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' ;
*
'REPETER' iidim idim ;
'SI' iaxi ;
B . &iidim . 1 . &iidim = 'LECT' 1 ;
'SINON' ;
B . &iidim . 1 . &iidim = 'LECT' ;
'FINSI' ;
'FIN' iidim ;
*
mglapn = 'NLIN' gdisc _mt A B methgau ;
* Integration par parties
mglapn = '*' mglapn -1.D0 ;
*
'RESPRO' mglapn ;
'FINPROC' ;
*
* End of procedure file GLAPN
*
*ENDPROCEDUR glapn
*BEGINPROCEDUR gdiv
************************************************************************
* NOM : GDIV
* 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' GDIV ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' gdisc*'MOT ' ;
'ARGUMENT' discv*'MOT ' ;
'ARGUMENT' discp*'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' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
idim = 0 ;
lpp = 'MOTS' 'LX' ; ldp = 'MOTS' 'FLX' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
lpv = 'MOTS' 'UX' 'UY' ; ldv = 'MOTS' 'FX' 'FY' ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
lpv = 'MOTS' 'UR' 'UZ' ; ldv = 'MOTS' 'FR' 'FZ' ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
lpv = 'MOTS' 'UX' 'UY' 'UZ' ; ldv = 'MOTS' 'FX' 'FY' 'FZ' ;
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 = 1 ;
numder = idim ;
mmp = 'MOTS' nomp ;
numvar = idim ;
'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' lpv &iidim) ;
A . 'VAR' . &iidim . 'DISC' = discv ;
'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 ;
'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' ;
*
numvar = 1 ;
numdat = 0 ;
numcof = 0 ;
B = ININLIN numop numvar numdat numcof numder ;
B . 'VAR' . 1 . 'NOMDDL' = ldp ;
B . 'VAR' . 1 . 'DISC' = discp ;
B . 1 . 1 . 0 = 'LECT' ;
*
mgdiv = 'NLIN' gdisc _mt A B methgau ;
*
'RESPRO' mgdiv ;
'FINPROC' ;
*
* End of procedure file GDIV
*
*ENDPROCEDUR gdiv
*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' 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' ;
*
mgmass = 'NLIN' gdisc _mt A B methgau ;
*
'RESPRO' mgmass ;
'FINPROC' ;
*
* End of procedure file GMASS
*
*ENDPROCEDUR gmass
*
*
*
'OPTION' 'DIME' 2 'ELEM' QUA8 ;
*
* Maillage quelconque
*
pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
l1 = pA 'DROIT' 2 pB ;
l2 = pB 'DROIT' 4 pC ;
l3 = pC 'DROIT' 3 pD ;
l4 = pD 'DROIT' 5 pA ;
mt = 'SURFACE' (l1 'ET' l2 'ET' l3 'ET' l4) ;
_mt = 'CHANGER' mt 'QUAF' ;
$mt = 'MODELISER' _mt 'NAVIER_STOKES' 'QUAF' ;
*
* Construction d'un matrice (ici de laplacien + blocage)
*
rv = 'EQEX' 'OPTI' 'EF' 'IMPL'
'ZONE' $mt 'OPER' 'LAPN' 1. 'INCO' 'T' ;
rv . 'INCO' = 'TABLE' 'INCO' ;
rv . 'INCO' . 'T' = 'KCHT' $mt 'SCAL' 'SOMMET' 0.D0 ;
*dummy mlapn = 'LAPN' (rv . '1LAPN') ;
mlapn = GLAPN _mt 'LINE' 'T' 'QUAF' 'Q' 'QUAF' 1.D0 ;
mablo = 'BLOQUE' 'T' l4 ;
mmt = 'MOTS' 'T' ;
mmq = 'MOTS' 'Q' ;
*matot = 'ET' ('KOPS' 'CHANINCO' mlapn mmt mmt mmt mmq)
* ('KOPS' 'RIMA' mablo) ;
matot = mlapn 'ET' mablo ;
chdia = '+' ('MANUEL' 'CHPO' l4 1 'LX' ('/' 1.D0 3.14D0))
('MANUEL' 'CHPO' mt 1 'T' ('/' 1.D0 1.707D0)) ;
*'LISTE' matot ;
*'LISTE' chdia ;
*'LISTE' mt ;
*'LISTE' l4 ;
mcmct = 'KOPS' 'CMCT' matot matot chdia ;
*'LISTE' ('EXTRAIRE' mcmct 'COMP') ;
*'LISTE' ('EXTRAIRE' mcmct 'COMP' 'DUAL') ;
*'OPTION' 'DONN' 5 ;
*
* Vérification
*
chtes = '+' ('MANUEL' 'CHPO' l4 1 'LX' 3.14D0)
('MANUEL' 'CHPO' mt 1 'T' 1.707D0) ;
ch1 = '*' mcmct chtes ;
*
* Elle est symétrique
*matott = 'KOPS' 'TRANSPOS' matot ;
mo = 'MOTS' 'LX' 'T' ;
mo2 = 'MOTS' 'FLX' 'Q' ;
ch2 = '*' matot ('*' chdia ('*' matot chtes) mo mo2 mo ) ;
*
test1 = 'MAXIMUM' ('-' ch2 ch1) 'ABS' ;
*'OPTION' 'DONN' 5 ;
*
* Un deuxième test
*
nm = 4 ;
*nm = 1 ;
p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
bas = 'DROIT' nm p1 p2 ; dro = 'DROIT' nm p2 p3 ;
hau = 'DROIT' nm p3 p4 ; gau = 'DROIT' nm p4 p1 ;
cmt = bas 'ET' dro 'ET' hau 'ET' gau ;
mt = 'SURFACE' cmt ;
_mt = 'CHANGER' 'QUAF' mt ;
discv = 'QUAF' ;
discp = 'LINE' ;
discg = 'LINE' ;
mvp = 'MOTS' 'UX' 'UY' ;
mvd = 'MOTS' 'FX' 'FY' ;
mpp = 'MOTS' 'LX' ;
mpd = 'MOTS' 'FLX' ;
mlx = 'MOTS' 'LXX' 'LXY' ;
mflx = 'MOTS' 'FLXX' 'FLXY' ;
mlp = mvp 'ET' mpp 'ET' mlx ;
mld = mvd 'ET' mpd 'ET' mflx ;
* Matrice de rigidite
rigx = GLAPN _mt discg 'UX' discv 'FX' discv 1. ;
rigy = GLAPN _mt discg 'UY' discv 'FY' discv 1. ;
rig = 'ET' rigx rigy ;
krig = '*' rig -1.D0 ;
* Matrice de divergence
kdiv = GDIV _mt discg discv discp 1. ;
* Gradient
kgra = 'KOPS' 'TRANSPOS' kdiv ;
kkgra = 'KOPS' 'TRANSPOS' kgra ;
*'OPTION' 'DONN' 5 ;
* Conditions aux limites
mvit = gau 'ET' bas 'ET' dro ;
cvit = 'MANUEL' 'CHPO' mvit mvp ('PROG' 0. 0.) ;
id = 'KOPS' 'MATIDE' mvp mvit ;
mblo = 'KOPS' 'CHANINCO' id mvp mvp mvd mflx ;
mblot = 'KOPS' 'CHANINCO' id mvp mlx mvd mvd ;
cblo = 'NOMC' mvp mflx cvit ;
* Lagrangien augmenté
alpha = 1.D0 ;
* chd = 'MANUEL' 'CHPO' mvit mlx ('PROG' 1.D0 1.D0) ;
* mlaga1 = 'KOPS' 'CMCT' mblot chd mblot ;
mlaga = 'KOPS' 'CMCT' mblot mblot ;
* 'OPTION' 'DONN' 5 ;
* mlaga = 'KOPS' 'CHANINCO' mlaga mvd mvp mvd mvd ;
mlaga = '*' mlaga alpha ;
claga = 'NOMC' mflx mlx cblo ;
claga = '*' mblot claga ;
claga = claga '*' alpha ;
* Contrainte en surface
fs = 'MANUEL' 'CHPO' hau 1 'UX' 1.D0 ;
fsu = GMASS hau discg 'UX' discv 'FX' discv 1. fs ;
*
* Résolution directe
*
*mtot = krig 'ET' kdiv 'ET' kgra 'ET' mblo 'ET' mblot 'ET' mlaga ;
mtot = krig 'ET' kdiv 'ET' kgra 'ET' mblo 'ET' mblot ;
mtotk = 'KOPS' 'RIMA' mtot ;
*'LISTE' ('EXTRAIRE' mtot 'COMP') ;
*'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ;
*'LISTE' ('EXTRAIRE' mtotk 'COMP') ;
*'LISTE' ('EXTRAIRE' mtotk 'COMP' 'DUAL') ;
*ftot = fsu '+' cblo '+' claga ;
ftot = fsu '+' cblo ;
clim = cvit ;
*'LISTE' ('EXTRAIRE' mtot 'COMP') ;
*'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ;
mtot = 'KOPS' 'CHANINCO' mtot mlp mlp mld mlp ;
*'LISTE' ('EXTRAIRE' mtot 'COMP') ;
*'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ;
ftot = 'NOMC' mld mlp ftot ;
*sol1 = 'KRES' mtot ftot 'CLIM' clim ;
*cbr = 'BRUIT' blan unif 0.5 0.5 _mt ;
*'LISTE' cbr ;
*'LISTE' ('RESULT' cbr) ;
*cc = ('NOMC' 'UX' cbr) 'ET' ('NOMC' 'UY' cbr)
*'ET' ('NOMC' 'LXX' cbr) 'ET' ('NOMC' 'LXY' cbr)
*'ET' ('NOMC' 'LX' cbr) ;
*'LISTE' ('*' krig cc) ;
*'LISTE' ('*' kdiv cc) ;
*'LISTE' ('*' kgra cc) ;
*'LISTE' ('*' mblo cc) ;
*'LISTE' ('*' mblot cc) ;
*'OPTION' 'DONN' 5 ;
sol1 = 'KRES' mtot ftot ;
vitdi = 'EXCO' mvp sol1 ;
predi = 'EXCO' mpp sol1 ;
lxdi = 'EXCO' mlx sol1 ;
*
echvit = '/' 3.1 nm ;
*
'SI' graph ;
vvit1 = 'VECTEUR' sol1 echvit 'DEPL' 'JAUN' ;
'TRACER' vvit1 mt 'TITR' 'vit1' ;
'FINSI' ;
*'OPTION' 'DONN' 5 ;
*
chd = 'MANUEL' 'CHPO' _mt mvp ('PROG' 1.D0 1.D0) ;
mcontr = mblo 'ET' kdiv ;
mcontrt = mblot 'ET' kgra ;
mcp = mpp 'ET' mlx ;
mcd = mpd 'ET' mflx ;
mlapd1 = 'KOPS' 'CMCT' mcontr chd mcontr ;
mlapd1 = 'CHANGER' 'INCO' mlapd1 mcd mcp mcd mcd 'MULT' ;
mlapd2 = 'KOPS' 'CMCT' mcontr mcontr ;
mlapd2 = 'CHANGER' 'INCO' mlapd2 mcd mcp mcd mcd 'MULT' ;
* Verif
vec = predi '+' lxdi ;
* vec2 = 'NOMC' mcp mcd vec ;
res1 = '*' mlapd1 vec ;
res2 = '*' mlapd2 vec ;
res3 = vec ;
res3 = '*' mcontrt res3 ;
res3 = 'NOMC' mvd res3 mvp ;
res3 = '*' mcontr res3 ;
test2 = 'MAXIMUM' ('-' res3 res1) 'ABS' ;
test3 = 'MAXIMUM' ('-' res3 res2) 'ABS' ;
*
* Un troisième test du a Jean-Francois Paisant
*
LX = 10. ;
nx= 3;
VH = 0. 1. ;
ny = 5;
epsi = 1.e-6;
P0=0. 0. ; P1=LX 0. ; P3= 0. (1./2.); P4= LX (1./2.);
Milieu= P3 'DROIT' nx P4; co1 = P0 'DROIT' nx P1 ;
MF = 'TRANSLATION' co1 ny vh ;
'ELIMINATION' (MF 'ET' milieu) epsi;
Mmf = 'CHANGER' 'QUAF' mf ;
DISCR= 'QUAF' ;
KPRESS= 'CENTREP1' ;
$mf = model Mmf 'NAVIER_STOKES' DISCR;
rvp='EQEX' 'OPTI' 'EF' KPRESS
'ZONE' $mf 'OPER' 'KBBT' -1. 'INCO' 'UN' 'PRES';
RVP . 'INCO' = 'TABL' 'INCO';
RVP . 'INCO' . 'UN' = 'KCHT' $MF 'VECT' 'SOMMET' (0. 0.);
RVP . 'INCO' . 'PRES' = 'KCHT' $MF 'SCAL' KPRESS 0. ;
sp mc = 'KBBT' (rvp . '1KBBT') ;
*
iden3 = 'KCHT' $mf 'SCAL' KPRESS 1.;
iden4 = 'NOMC' 'PRES' iden3;
*
ct = 'KOPS' 'TRANSPOS' mc;
cct= kops 'CMCT' mc mc;
ctc= 'KOPS' 'CMCT' ct iden4 ct;
*
mvit = 'DOMA' $mf 'MAILLAGE' ;
cvitx = 'BRUIT' blan unif 0.5 0.5 mvit ;
cvity = 'BRUIT' blan unif 0.5 0.5 mvit ;
cvit = '+' ('NOMC' '1UN' cvitx) ('NOMC' '2UN' cvity) ;
cpre = 'NOMC' 'PRES' cvitx ;
mp = 'MOTS' 'PRES' ;
ch1 = '*' ctc cvit ;
ch2 = '*' ('*' ('*' mc cvit) iden4 mp mp mp) ct ;
test4 = 'MAXIMUM' ('-' ch1 ch2) 'ABS' ;
ch3 = '*' cct cpre ;
ch4 = '*' ('*' ct cpre) mc ;
test5 = 'MAXIMUM' ('-' ch3 ch4) 'ABS' ;
*
'MESSAGE' ('CHAINE' 'test1 = ' test1) ;
'MESSAGE' ('CHAINE' 'test2 = ' test2) ;
'MESSAGE' ('CHAINE' 'test3 = ' test3) ;
'MESSAGE' ('CHAINE' 'test4 = ' test4) ;
'MESSAGE' ('CHAINE' 'test5 = ' test5) ;
ok1 = ('<' test1 1.D-12) ;
ok2 = ('<' test2 1.D-12) ;
ok3 = ('<' test3 1.D-12) ;
ok4 = ('<' test4 1.D-12) ;
ok5 = ('<' test5 1.D-12) ;
*
'SI' interact ;
'OPTION' 'DONN' 5 ;
'FINSI' ;
'SI' ('NON' (ok1 'ET' ok2 'ET' ok3 'ET' ok4 'ET' ok5)) ;
'ERREUR' 5 ;
'SINON' ;
'MESSAGE' 'Tout sest bien passe' ;
'FINSI' ;
*
* End of dgibi file KOPSCMCT2
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer