* fichier : kpre.dgibi ************************************************************************ ************************************************************************ ************************************************************************ * NOM : KPRE * DESCRIPTION : Test operateur preconditionnement KPRE * * Utilisation de la procédure EGARIG * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stephane GOUNAND (CEA/DES/ISAS/DM2S/SEMT/LTA) * mel : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 26/05/2025, version initiale * HISTORIQUE : v1, 26/05/2025, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * * * * Test de l'egalite de 2 rigidites * 'DEBPROC' EGARIG ; 'ARGUMENT' rig1*'RIGIDITE' ; 'ARGUMENT' rig2*'RIGIDITE' ; 'FINS' ; * lok = vrai ; *'MESS' 'dcmm, tol=' dcmm tol ; tst = ('<' dcmm tol) ; lok = lok 'ET' tst ; 'REPE' icomp ncomps ; * 'MESS' 'Composante i=' &icomp ' ' com ; 'REPE' inode nnodes ; * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ; lig1 = '*' rig1 ch1 ; lig2 = '*' rig2 ch1 ; * 'MESS' ' dlig, tol=' dlig tol ; tst = ('<' dlig tol) ; lok = lok 'ET' tst ; 'FIN' inode ; 'FIN' icomp ; * 'RESPRO' lok ; * * End of procedure file EGARIG * 'FINPROC' ; * * Matrice de masse * 'DEBPROC' GMASS ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' nomt*'LISTOBJE' ; 'ARGUMENT' nomq*'LISTOBJE' ; methgau = 'GAU7' ; * numop = dnomt ; numder = dim ; numvar = dnomt ; numdat = 0 ; numcof = 0 ; * 'REPE' iinomt dnomt ; inomt = &iinomt ; A . 'VAR' . inomt . 'DISC' = disct ; * A . inomt . inomt . 0 = 0 ; 'FIN' iinomt ; * * 'REPE' iinomq dnomq ; inomq = &iinomq ; B . 'VAR' . inomq . 'DISC' = discq ; * B . inomq . inomq . 0 = 0 ; 'FIN' iinomq ; * * 'RESPRO' mgmass ; 'FINPROC' ; * * Matrice de gradient * 'DEBPROC' GGRAD ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' nomt*'LISTOBJE' ; 'ARGUMENT' nomq*'LISTOBJE' ; methgau = 'GAU7' ; * numop = dim ; numder = dim ; numvar = 1 ; numdat = 0 ; numcof = 0 ; * A . 'VAR' . 1 . 'DISC' = disct ; * 'REPE' iidim dim ; idim = &iidim ; A . idim . 1 . idim = 0 ; 'FIN' iidim ; * * numvar = dim ; 'REPE' iinomq dnomq ; inomq = &iinomq ; B . 'VAR' . inomq . 'DISC' = discq ; * B . inomq . inomq . 0 = 0 ; 'FIN' iinomq ; * * 'RESPRO' mggrad ; 'FINPROC' ; * * Matrice de laplacien * 'DEBPROC' GLAPN ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' nomt*'LISTOBJE' ; 'ARGUMENT' nomq*'LISTOBJE' ; methgau = 'GAU7' ; * numop = dnomt '*' dim ; numder = dim ; numvar = dnomt ; numdat = 0 ; numcof = 0 ; * iop = 0 ; 'REPE' iinomt dnomt ; inomt = &iinomt ; A . 'VAR' . inomt . 'DISC' = disct ; * 'REPE' iidim dim ; idim = &iidim ; iop = '+' iop 1 ; A . iop . inomt . idim = 0 ; 'FIN' iidim ; 'FIN' iinomt ; * * iop = 0 ; 'REPE' iinomq dnomq ; inomq = &iinomq ; B . 'VAR' . inomq . 'DISC' = discq ; * 'REPE' iidim dim ; idim = &iidim ; iop = '+' iop 1 ; B . iop . inomq . idim = 0 ; 'FIN' iidim ; 'FIN' iinomq ; * * 'RESPRO' mglapn ; 'FINPROC' ; * * Matrice de rigidite * 'DEBPROC' GRIGI ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' nomt*'LISTOBJE' ; 'ARGUMENT' nomq*'LISTOBJE' ; methgau = 'GAU7' ; * * numop = dim '*' dim ; numder = dim ; numvar = dnomt ; numdat = 1 ; numcof = 1 ; * 'REPE' iinomt dnomt ; inomt = &iinomt ; A . 'VAR' . inomt . 'DISC' = disct ; 'FIN' iinomt ; A . 'DAT' . 1 . 'VALEUR' = 2.D0 ; A . 'COF' . 1 . 'LDAT' = 1 ; * iop = 0 ; 'REPETER' bidim dim ; 'REPETER' bjdim dim ; iop = '+' iop 1 ; 'SI' ('EGA' &bidim &bjdim) ; A . iop . &bidim . &bjdim = 1 ; 'SINO' ; A . iop . &bidim . &bjdim = 0 ; A . iop . &bjdim . &bidim = 0 ; 'FINS' ; 'FIN' bjdim ; 'FIN' bidim ; * numdat = 0 ; numcof = 0 ; * 'REPE' iinomq dnomq ; inomq = &iinomq ; B . 'VAR' . inomq . 'DISC' = discq ; 'FIN' iinomq ; * iop = 0 ; 'REPETER' bidim dim ; 'REPETER' bjdim dim ; iop = '+' iop 1 ; B . iop . &bidim . &bjdim = 0 ; 'FIN' bjdim ; 'FIN' bidim ; * * 'RESPRO' mrigi ; 'FINPROC' ; * * Matrice de convection * 'DEBPROC' GUGRAD ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' nomt*'LISTOBJE' ; 'ARGUMENT' nomq*'LISTOBJE' ; 'ARGUMENT' nomv*'LISTOBJE' ; 'ARGUMENT' vv*'CHPOINT ' ; methgau = 'GAU7' ; * * numop = dnomt ; numder = dim ; numvar = dnomt ; numdat = dnomv ; numcof = dnomv ; * 'REPE' iinomt dnomt ; inomt = &iinomt ; A . 'VAR' . inomt . 'DISC' = disct ; 'FIN' iinomt ; 'REPE' iinomv dnomv ; inomv = &iinomv ; A . 'DAT' . inomv . 'DISC' = discv ; A . 'DAT' . inomv . 'VALEUR' = vv ; A . 'COF' . inomv . 'LDAT' = inomv ; 'FIN' iinomv ; * 'REPE' iinomt dnomt ; inomt = &iinomt ; 'REPETER' bidim dim ; idim = &bidim ; A . inomt . inomt . idim = idim ; 'FIN' bidim ; 'FIN' iinomt ; * numdat = 0 ; numcof = 0 ; * 'REPE' iinomq dnomq ; inomq = &iinomq ; B . 'VAR' . inomq . 'DISC' = discq ; 'FIN' iinomq ; * 'REPE' iinomq dnomq ; inomq = &iinomq ; B . inomq . inomq . 0 = 0 ; 'FIN' iinomq ; * * 'RESPRO' mugrad ; 'FINPROC' ; ********************************************************************** * * DEBUT CAS-TEST * ********************************************************************** * interact = faux ; * * Maillage quelconque * pA = 0. 0. ; pB = 1. 0. ; pC = 0. 1. ; * l1 = pA 'DROIT' 2 pB ; l3 = pC 'DROIT' 3 pA ; mt = 'SURFACE' (l1 'ET' l2 'ET' l3) ; _mt = 'CHANGER' mt 'QUAF' ; $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'QUAF' ; * discu = 'CSTE' ; discp = 'LINE' ; discg = 'LINE' ; * * * 'OPTI' inco nompri nomdua ; * masu = GMASS _mt discg nomu discu nomf discu ; mgra = GGRAD _mt discg nomp discp nomf discu ; mdiv2 = mdiv '*' 1.d0 ; *maspu = GGRAD tdisc _mt 'NPRI' 'PN' 'NDUA' 'UN' ; *masup = 'KOPS' 'TRANSPOS' maspu ; mstab = GLAPN _mt discg nomp discp nomfp discp ; * * Test 1 * *'LIST' m1 ; *'LIST' m1 ; *'LIST' mdiv ; *'OPTI' 'DONN' 5 ; *'LIST' masu ; *'OPTI' surv 2138011 ; m2 = KPRE mdiv masud mdiv ; m2b = KPRE mdiv ('*' masud PI) ('*' mdiv PI ) ; *'LIST' m2 ; * *'OPTI' impi 1 ; t0 = egarig m1 m1b tol ; t1 = egarig (m1 '*' -1.) m2 tol ; t2 = egarig (m1 '*' -1.) m2b tol ; * _mtt = 'CHANGER' mtt 'QUAF' ; $mtt = 'MODELISER' _mtt 'NAVIER_STOKES' 'QUAF' ; * masu = GMASS _mtt discg nomu discu nomf discu ; mgra = GGRAD _mtt discg nomp discp nomf discu ; mstab = GLAPN _mtt discg nomp discp nomfp discp ; * m3 = KPRE mdiv masud ('*' mdiv 1.) ; * t3 = egarig (m1c '*' -1.) m3 tol ; t4 = egarig ('*' mstab -1.) m3 tol ; * * Test en rajoutant un bloc de stabilisation * m4 = KPRE mdiv masud ('*' mdiv 1.) ('*' mstab -1.3) ; t5 = egarig ('*' mstab -2.3) m4 tol ; * * Un test en faisant des produits et des résolutions en * quadratiques * discu = 'LINM' ; discp = 'QUAF' ; discg = 'QUAF' ; *discu = 'CSTE' ; discp = 'LINE' ; *discg = 'LINE' ; * * * 'OPTI' inco nompri nomdua ; * masu = GMASS _mt discg nomu discu nomf discu ; mgra = GGRAD _mt discg nomp discp nomf discu ; mstab = GLAPN _mt discg nomp discp nomfp discp ; * mstab2 = '*' mstab 1.3 ; m5 = KPRE mdiv masud ('*' mdiv 1.) ('*' mstab2 -1.) ; m5 = '*' m5 -1. ; *'LIST' m5 ; * lok = vrai ; 'REPE' icomp ncomps ; * 'MESS' 'Composante i=' &icomp ' ' com ; 'REPE' inode nnodes ; * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ; lig1 = '*' m5 ch1 ; lig2a = '*' mstab2 ch1 ; gc = '*' mgra ch1 ; lig2b = '*' mdiv amgc ; lig2 = lig2a '+' lig2b ; * 'MESS' ' dlig, tol=' dlig tol ; tst = ('<' dlig tol) ; lok = lok 'ET' tst ; 'FIN' inode ; 'FIN' icomp ; t6 = lok ; * * Un dernier test en faisant des produits et des résolutions en * quadratiques en non-symétrique * rigu = GRIGI _mt discg nomu discu nomf discu ; 'UY1' 0.213 'UY2' 0.213 'UY3' 0.213 ; gugradu = GUGRAD _mt discg nomu discu nomf discu nomu discu vit ; mtotu = masu 'ET' rigu 'ET' gugradu ; * m6 = KPRE mdiv mtotu ('*' mdiv 1.) ('*' mstab2 -1.) ; m6 = '*' m6 -1. ; *'LIST' m5 ; * lok = vrai ; 'REPE' icomp ncomps ; * 'MESS' 'Composante i=' &icomp ' ' com ; 'REPE' inode nnodes ; * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ; lig1 = '*' m6 ch1 ; lig2a = '*' mstab2 ch1 ; gc = '*' mgra ch1 ; lig2b = '*' mdiv amgc ; lig2 = lig2a '+' lig2b ; * 'MESS' ' dlig, tol=' dlig tol ; tst = ('<' dlig tol) ; lok = lok 'ET' tst ; 'FIN' inode ; 'FIN' icomp ; t7 = lok ; * ttot = t1 'ET' t2 'ET' t3 'ET' t4 'ET' t5 'ET' t6 'ET' t7 ; * 'SI' ('NON' ttot) ; 'MESSAGE' ('CHAINE' 'Il y a eu des erreurs') ; 'ERREUR' 5 ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; * 'SI' interact ; 'OPTION' 'ECHO' 1 ; 'OPTION' 'DONN' 5 ; 'FINSI' ; * * End of dgibi file KPRE * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales