* fichier : kopscmct2.dgibi ************************************************************************ * 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' 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 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' 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 = 1 ; numder = idim ; numvar = idim ; 'SI' iaxi ; numdat = 3 ; numcof = 3 ; 'SINON' ; numdat = 1 ; numcof = 1 ; 'FINSI' ; * 'REPETER' iidim idim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; 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' ; * 'SI' iaxi ; 'REPETER' iidim idim ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; 'FIN' iidim ; 'FINSI' ; * numvar = 1 ; numdat = 0 ; numcof = 0 ; B . 'VAR' . 1 . 'NOMDDL' = ldp ; B . 'VAR' . 1 . 'DISC' = discp ; * * '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' 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' ; * * 'RESPRO' mgmass ; 'FINPROC' ; * * End of procedure file GMASS * *ENDPROCEDUR gmass * * * * * 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 . 'INCO' = 'TABLE' 'INCO' ; *dummy mlapn = 'LAPN' (rv . '1LAPN') ; mlapn = GLAPN _mt 'LINE' 'T' 'QUAF' 'Q' 'QUAF' 1.D0 ; mablo = 'BLOQUE' 'T' l4 ; *matot = 'ET' ('KOPS' 'CHANINCO' mlapn mmt mmt mmt mmq) * ('KOPS' 'RIMA' mablo) ; matot = mlapn 'ET' mablo ; *'LISTE' matot ; *'LISTE' chdia ; *'LISTE' mt ; *'LISTE' l4 ; *'LISTE' ('EXTRAIRE' mcmct 'COMP') ; *'LISTE' ('EXTRAIRE' mcmct 'COMP' 'DUAL') ; *'OPTION' 'DONN' 5 ; * * Vérification * ch1 = '*' mcmct chtes ; * * Elle est symétrique *matott = 'KOPS' 'TRANSPOS' matot ; 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' ; 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 *'OPTION' 'DONN' 5 ; * Conditions aux limites mvit = gau 'ET' bas 'ET' dro ; * Lagrangien augmenté alpha = 1.D0 ; * chd = 'MANUEL' 'CHPO' mvit mlx ('PROG' 1.D0 1.D0) ; * mlaga1 = 'KOPS' 'CMCT' mblot chd mblot ; * 'OPTION' 'DONN' 5 ; * mlaga = 'KOPS' 'CHANINCO' mlaga mvd mvp mvd mvd ; mlaga = '*' mlaga alpha ; claga = '*' mblot claga ; claga = claga '*' alpha ; * Contrainte en surface 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 ; *'LISTE' ('EXTRAIRE' mtot 'COMP') ; *'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ; *'LISTE' ('EXTRAIRE' mtotk 'COMP') ; *'LISTE' ('EXTRAIRE' mtotk 'COMP' 'DUAL') ; *ftot = fsu '+' cblo '+' claga ; clim = cvit ; *'LISTE' ('EXTRAIRE' mtot 'COMP') ; *'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ; *'LISTE' ('EXTRAIRE' mtot 'COMP') ; *'LISTE' ('EXTRAIRE' mtot 'COMP' 'DUAL') ; *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 ; * echvit = '/' 3.1 nm ; * 'SI' graph ; 'TRACER' vvit1 mt 'TITR' 'vit1' ; 'FINSI' ; *'OPTION' 'DONN' 5 ; * mcontr = mblo 'ET' kdiv ; mcontrt = mblot 'ET' kgra ; mcp = mpp 'ET' mlx ; mcd = mpd 'ET' mflx ; * Verif vec = predi '+' lxdi ; * vec2 = 'NOMC' mcp mcd vec ; res1 = '*' mlapd1 vec ; res2 = '*' mlapd2 vec ; res3 = vec ; res3 = '*' mcontrt res3 ; 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; 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 ; Mmf = 'CHANGER' 'QUAF' mf ; DISCR= 'QUAF' ; KPRESS= 'CENTREP1' ; $mf = model Mmf 'NAVIER_STOKES' DISCR; * * * cvitx = 'BRUIT' blan unif 0.5 0.5 mvit ; cvity = 'BRUIT' blan unif 0.5 0.5 mvit ; 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 - Tous droits réservés.
Mentions légales