* fichier : nlin_decent2d.dgibi ************************************************************************ * Section : Thermique Hydraulique * Section : Fluides Thermique ************************************************************************ 'OPTION' echo 0 ; *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 gugrad ************************************************************************ * NOM : GUGRAD * DESCRIPTION : U . grad * * * * 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' GUGRAD ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' gdisc*'MOT ' ; 'ARGUMENT' nomp*'MOT ' ; 'ARGUMENT' discp*'MOT ' ; 'ARGUMENT' nomd*'MOT ' ; 'ARGUMENT' discd*'MOT ' ; 'ARGUMENT' vtot*'CHPOINT ' ; 'ARGUMENT' vcomp*'LISTMOTS' ; 'ARGUMENT' discv*'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 ; * Passé en argument désormais * vcomp = 'MOTS' 'UX' 'UY' ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; * vcomp = 'MOTS' 'UR' 'UZ' ; '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 ; dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ; 'FINSI' ; * numop = 1 ; numder = idim ; mmp = 'MOTS' nomp ; mmd = 'MOTS' nomd ; numvar = 1 ; numdat = idim ; numcof = idim ; * A = ININLIN numop numvar numdat numcof numder ; A . 'VAR' . 1 . 'NOMDDL' = mmp ; A . 'VAR' . 1 . 'DISC' = discp ; 'SI' ('EXISTE' chpop) ; A . 'VAR' . 1 . 'VALEUR' = chpop ; 'FINSI' ; 'REPETER' iidim idim ; nomco = 'EXTRAIRE' vcomp &iidim ; A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' nomco ; A . 'DAT' . &iidim . 'DISC' = discv ; * A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ; A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco vtot nomco ; * A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ; A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ; 'FIN' iidim ; * 'REPETER' iidim idim ; A . 1 . 1 . &iidim = 'LECT' &iidim ; 'FIN' iidim ; * numvar = 1 ; 'SI' iaxi ; numdat = 2 ; numcof = 2 ; 'SINON' ; numdat = 1 ; numcof = 1 ; 'FINSI' ; * B = ININLIN numop numvar numdat numcof numder ; B . 'VAR' . 1 . 'NOMDDL' = mmd ; B . 'VAR' . 1 . 'DISC' = discd ; 'SI' ('EXISTE' chpod) ; B . 'VAR' . 1 . 'VALEUR' = chpod ; 'FINSI' ; * 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' = gdisc ; B . 'DAT' . 2 . 'VALEUR' = dprmt ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ; 'FINSI' ; * 'SI' iaxi ; B . 1 . 1 . 0 = 'LECT' 1 2 ; 'SINON' ; B . 1 . 1 . 0 = 'LECT' 1 ; 'FINSI' ; * mgugrad = 'NLIN' gdisc _mt A B methgau ; * 'RESPRO' mgugrad ; 'FINPROC' ; * * End of procedure file GUGRAD * *ENDPROCEDUR gugrad *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 gdecent ************************************************************************ * NOM : GDECENT * DESCRIPTION : Décentrement * * * * 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' GDECENT ; 'ARGUMENT' imeth*'ENTIER' ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' gdisc*'MOT ' ; 'ARGUMENT' nomp*'MOT ' ; 'ARGUMENT' discp*'MOT ' ; 'ARGUMENT' nomd*'MOT ' ; 'ARGUMENT' discd*'MOT ' ; 'ARGUMENT' vtot*'CHPOINT ' ; 'ARGUMENT' vcomp*'LISTMOTS' ; 'ARGUMENT' discv*'MOT ' ; 'ARGUMENT' rho*'FLOTTANT' ; 'ARGUMENT' nu*'FLOTTANT' ; 'ARGUMENT' Pec*'FLOTTANT' ; '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 ; * Passé en argument désormais * vcomp = 'MOTS' 'UX' 'UY' ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; * vcomp = 'MOTS' 'UR' 'UZ' ; '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 ; dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ; 'FINSI' ; * mdumm = 'MOTS' 'DUMM' ; numop = 1 ; numder = idim ; mmp = 'MOTS' nomp ; mmd = 'MOTS' nomd ; numvar = 1 ; numdat = '+' idim 3 ; numcof = idim ; lisdat = 'LECT' 1 PAS 1 ('+' idim 3) ; * A = ININLIN numop numvar numdat numcof numder ; A . 'VAR' . 1 . 'NOMDDL' = mmp ; A . 'VAR' . 1 . 'DISC' = discp ; 'SI' ('EXISTE' chpop) ; A . 'VAR' . 1 . 'VALEUR' = chpop ; 'FINSI' ; idat = 0 ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = rho ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = nu ; 'REPETER' iidim idim ; nomco = 'EXTRAIRE' vcomp &iidim ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ; A . 'DAT' . idat . 'DISC' = discv ; * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ; A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ; 'FIN' iidim ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = Pec ; * icof = 0 ; 'REPETER' iidim idim ; icof = '+' icof 1 ; A . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ; A . 'COF' . icof . 'LDAT' = lisdat ; 'FIN' iidim ; * 'REPETER' iidim idim ; A . 1 . 1 . &iidim = 'LECT' &iidim ; 'FIN' iidim ; * numvar = 1 ; 'SI' iaxi ; numdat = '+' idim 4 ; numcof = '+' idim 1 ; 'SINON' ; numdat = '+' idim 3 ; numcof = idim ; 'FINSI' ; * B = ININLIN numop numvar numdat numcof numder ; B . 'VAR' . 1 . 'NOMDDL' = mmd ; B . 'VAR' . 1 . 'DISC' = discd ; 'SI' ('EXISTE' chpod) ; B . 'VAR' . 1 . 'VALEUR' = chpod ; 'FINSI' ; idat = 0 ; idat = '+' idat 1 ; B . 'DAT' . idat . 'NOMDDL' = mdumm ; B . 'DAT' . idat . 'DISC' = 'CSTE' ; B . 'DAT' . idat . 'VALEUR' = rho ; idat = '+' idat 1 ; B . 'DAT' . idat . 'NOMDDL' = mdumm ; B . 'DAT' . idat . 'DISC' = 'CSTE' ; B . 'DAT' . idat . 'VALEUR' = nu ; 'REPETER' iidim idim ; nomco = 'EXTRAIRE' vcomp &iidim ; idat = '+' idat 1 ; B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ; B . 'DAT' . idat . 'DISC' = discv ; * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ; B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ; 'FIN' iidim ; idat = '+' idat 1 ; B . 'DAT' . idat . 'NOMDDL' = mdumm ; B . 'DAT' . idat . 'DISC' = 'CSTE' ; B . 'DAT' . idat . 'VALEUR' = Pec ; * icof = 0 ; 'REPETER' iidim idim ; icof = '+' icof 1 ; B . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ; B . 'COF' . icof . 'LDAT' = lisdat ; 'FIN' iidim ; * 'SI' iaxi ; idat = '+' idat 1 ; B . 'DAT' . idat . 'NOMDDL' = 'MOTS' 'SCAL' ; B . 'DAT' . idat . 'DISC' = gdisc ; B . 'DAT' . idat . 'VALEUR' = dprmt ; icof = '+' icof 1 ; B . 'COF' . icof . 'COMPOR' = 'IDEN' ; B . 'COF' . icof . 'LDAT' = 'LECT' idat ; 'FINSI' ; * 'SI' iaxi ; 'REPETER' iidim idim ; B . 1 . 1 . &iidim = 'LECT' &iidim icof ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; B . 1 . 1 . &iidim = 'LECT' &iidim ; 'FIN' iidim ; 'FINSI' ; * mgdecent = 'NLIN' gdisc _mt A B methgau ; * 'RESPRO' mgdecent ; 'FINPROC' ; * * End of procedure file GDECENT * *ENDPROCEDUR gdecent *BEGINPROCEDUR gmustab ************************************************************************ * NOM : GMUSTAB * DESCRIPTION : Décentrement * * * * 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' GMUSTAB ; 'ARGUMENT' imeth*'ENTIER' ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' gdisc*'MOT ' ; 'ARGUMENT' vtot*'CHPOINT ' ; 'ARGUMENT' vcomp*'LISTMOTS' ; 'ARGUMENT' discv*'MOT ' ; 'ARGUMENT' rho*'FLOTTANT' ; 'ARGUMENT' nu*'FLOTTANT' ; 'ARGUMENT' Pec*'FLOTTANT' ; 'ARGUMENT' methgau/'MOT ' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; * vdim = 'VALEUR' 'DIME' ; * mdumm = 'MOTS' 'DUMM' ; numop = 1 ; numder = vdim ; numvar = 1 ; numdat = '+' vdim 3 ; numcof = 1 ; lisdat = 'LECT' 1 PAS 1 ('+' vdim 3) ; * A = ININLIN numop numvar numdat numcof numder ; A . 'VAR' . 1 . 'NOMDDL' = mdumm ; A . 'VAR' . 1 . 'DISC' = 'CSTE' ; A . 'VAR' . 1 . 'VALEUR' = 1.D0 ; idat = 0 ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = rho ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = nu ; 'REPETER' ivdim vdim ; nomco = 'EXTRAIRE' vcomp &ivdim ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ; A . 'DAT' . idat . 'DISC' = discv ; * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ; A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ; 'FIN' ivdim ; idat = '+' idat 1 ; A . 'DAT' . idat . 'NOMDDL' = mdumm ; A . 'DAT' . idat . 'DISC' = 'CSTE' ; A . 'DAT' . idat . 'VALEUR' = Pec ; * A . 'COF' . 1 . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth '0' ; A . 'COF' . 1 . 'LDAT' = lisdat ; * A . 1 . 1 . 0 = 'LECT' 1 ; * numvar = 1 ; numdat = 0 ; numcof = 0 ; * B = ININLIN numop numvar numdat numcof numder ; B . 'VAR' . 1 . 'NOMDDL' = mdumm ; B . 'VAR' . 1 . 'DISC' = 'CSTE' ; B . 'VAR' . 1 . 'VALEUR' = 1.D0 ; * B . 1 . 1 . 0 = 'LECT' ; * mgmustab = 'NLIN' gdisc _mt A B 'ERF1' methgau ; * 'RESPRO' mgmustab ; 'FINPROC' ; * * End of procedure file GMUSTAB * *ENDPROCEDUR gmustab *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 *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 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 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 * 'DEBPROC' SOLEX ; 'ARGUMENT' nu*'FLOTTANT' ; 'ARGUMENT' mesh*'MAILLAGE' ; * ct = '/' 1.D0 nu ; deno = '-' 1. ('EXP' ct) ; nume = 'EXP' ('*' ('COORDONNEE' 1 mesh) ct) ; nume = '*' nume -1. ; nume = '+' nume 1. ; vfon = '*' nume ('/' 1. deno) ; * 'RESPRO' vfon ; 'FINPROC' ; * 'DEBPROC' SOLAPP ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' gau*'MAILLAGE' ; 'ARGUMENT' dro*'MAILLAGE' ; 'ARGUMENT' disc*'MOT ' ; 'ARGUMENT' nu*'FLOTTANT' ; 'ARGUMENT' pec*'FLOTTANT' ; 'ARGUMENT' imeth*'ENTIER' ; * lux = 'MOTS' 'UX' 'UY' ; lval = 'PROG' 1. 0. ; cvit = 'MANUEL' 'CHPO' _mt lux lval ; rho = 1.D0 ; m1 = GUGRAD _mt disc 'T' disc 'Q' disc cvit lux disc 1. 'GAU7' ; m2 = GLAPN _mt disc 'T' disc 'Q' disc nu 'GAU7' ; m2 = '*' m2 -1.D0 ; 'SI' ('EGA' imeth 0) ; musmax = 0. ; 'SINON' ; m3 = GDECENT imeth _mt disc 'T' disc 'Q' disc cvit lux disc rho nu pec 'GAU7' ; musmax = 'MAXIMUM' (GMUSTAB imeth _mt disc cvit lux disc rho nu pec 'GAU7') ; 'FINSI' ; mblo = 'BLOQUE' 'T' (gau 'ET' dro) ; fblo = 'DEPIMPOSE' mblo ('+' ('MANUEL' 'CHPO' gau 1 'T' 0.D0) ('MANUEL' 'CHPO' dro 1 'T' 1.D0)) ; 'SI' ('EGA' imeth 0) ; mtot = m1 'ET' m2 'ET' mblo ; 'SINON' ; mtot = m1 'ET' m2 'ET' m3 'ET' mblo ; 'FINSI' ; ftot = fblo ; sola = 'RESO' mtot ftot ; 'RESPRO' sola musmax ; 'FINPROC' ; * * ************************************************************************ * NOM : NLIN_DECENT2D * DESCRIPTION : Cas-test du décentrement : * couche limite 1D en 2D, on regarde les * ordres de convergences * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 31/08/2006, version initiale * HISTORIQUE : v1, 31/08/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 ! ************************************************************************ * * interact= FAUX ; graph = FAUX ; verbose = FAUX ; 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PS' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; * 'OPTION' 'TRAC' 'OPEN' ; 'FINSI' ; * 'OPTION' 'DIME' 2 ; lnx = 'LECT' 4 10 20 30 ; dlnx = 'DIME' lnx ; nxfin = '*' ('EXTRAIRE' lnx ('DIME' lnx)) 2 ; nu = 0.1 ; Pec = 2.D0 ; * moscal1 = mots 'SCAL'; * idx = 0 ; * * Table des ordres espérés pour chaque méthode * 'LINE' : éléments linéaires * 'QUAD' : éléments quadratiques * imeth = 0 : Pas de décentrement * imeth = 1 : Décentrement full upwind * imeth = 2 : Décentrement type SUPG avec une fonction de coupure * "critical approximation" * imeth = 3 : Décentrement type SUPG avec une fonction de coupure * "doubly asymptotic" tabordv = 'TABLE' ; tabordv . 'LINE' = 'TABLE' ; tabordv . 'LINE' . 0 = 2. ; tabordv . 'LINE' . 1 = 1. ; tabordv . 'LINE' . 2 = 2. ; tabordv . 'LINE' . 3 = 2. ; tabordv . 'QUAD' = 'TABLE' ; tabordv . 'QUAD' . 0 = 3. ; tabordv . 'QUAD' . 1 = 1. ; tabordv . 'QUAD' . 2 = 3. ; tabordv . 'QUAD' . 3 = 2. ; * tabordc = 'TABLE' ; tabordc . 'LINE' = 'TABLE' ; tabordc . 'QUAD' = 'TABLE' ; tabev = 'TABLE' ; tabt = 'TABLE' ; 'REPETER' iiquad 2 ; iquad = &iiquad ; 'SI' ('EGA' iquad 1) ; disc = 'LINE' ; 'SINON' ; disc = 'QUAD' ; 'FINSI' ; 'REPETER' iimeth 4 ; imeth = '-' &iimeth 1 ; 'SI' verbose ; tit = 'CHAINE' ' disc = ' disc ' imeth=' imeth ; 'MESSAGE' tit ; 'FINSI' ; lh = 'PROG' ; lerr = 'PROG' ; 'REPETER' iinx ('DIME' lnx) ; inx = &iinx ; nx = 'EXTRAIRE' lnx inx ; 'SI' ('EGA' iquad 1) ; 'OPTION' 'ELEM' 'TRI3' ; nx2 = nx ; nxfin2 = nxfin ; 'SINON' ; 'OPTION' 'ELEM' 'TRI6' ; nx2 = '/' nx 2 ; nxfin2 = '/' nxfin 2 ; 'FINSI' ; vh = '/' 1. ('FLOTTANT' nx2) ; lh = 'ET' lh ('PROG' vh) ; p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ; bas = 'DROIT' nx2 p1 p2 ; dro = 'DROIT' nx2 p2 p3 ; hau = 'DROIT' nx2 p3 p4 ; gau = 'DROIT' nx2 p4 p1 ; cmt = bas 'ET' dro 'ET' hau 'ET' gau ; mt = 'SURFACE' cmt 'PLAN' ; _mt = 'CHANGER' mt 'QUAF' ; basfin = 'DROIT' nxfin2 p1 p2 ; drofin = 'DROIT' nxfin2 p2 p3 ; haufin = 'DROIT' nxfin2 p3 p4 ; gaufin = 'DROIT' nxfin2 p4 p1 ; cmtfin = basfin 'ET' drofin 'ET' haufin 'ET' gaufin ; mtfin = 'SURFACE' cmtfin 'PLAN' ; _mtfin = 'CHANGER' mtfin 'QUAF' ; * p0 = 'POIN' 0. ; p1 = 'POIN' 1. ; * mt = 'DROIT' nx2 p0 p1 ; * _mt ='CHANGER' mt 'QUAF' ; * mtfin = 'DROIT' nxfin2 p0 p1 ; * _mtfin ='CHANGER' mtfin 'QUAF' ; mas = GMASS _mtfin disc 'SCAL' disc 'SCAL' disc 1. ; sol = SOLEX nu mtfin ; sola musmax = SOLAPP _mt gau dro disc nu pec imeth ; sola = 'EXCO' 'T' sola ; sola2 = proi mtfin ('CHANGER' 'CHAM' sola mt) 1.D-9 ; err = '-' sol sola2 ; * verr = '**' ('XTMX' err mas) 0.5D0 ; verr = '**' (XTY err (mas * err) moscal1 moscal1) 0.5D0 ; lerr = 'ET' lerr ('PROG' verr) ; 'SI' verbose ; ch = 'CHAINE' 'h=' (formar vh 2) ' => err=' (formar verr 2) ; 'MESSAGE' ch ; 'FINSI' ; 'SI' (graph 'ET' verbose) ; montagne sola sola mt 'TITR' ('CHAINE' tit ' ' ch) ; 'FINSI' ; 'OPTION' 'DIME' 2 ; 'FIN' iinx ; * Calcul des ordres lh lerr = LOG10 lh lerr ; everr = 'EVOL' 'VERT' 'MANU' lh lerr ; di = 'DIME' lh ; lh2 = 'EXTRAIRE' lh ('LECT' ('-' di 1) di) ; lerr2 = 'EXTRAIRE' lerr ('LECT' ('-' di 1) di) ; everr2 = 'EVOL' 'MANU' lh2 lerr2 ; cpl dummy = @POMI everr2 1 'IDEM' ; ord = cpl . 1 ; idx = '+' idx 1 ; tabordc . disc . imeth = ord ; tabev . idx = everr ; 'SI' verbose ; tito = 'CHAINE' disc imeth ';ord=' (formar ord 1) ; 'MESSAGE' tito ; 'FINSI' ; tabt . idx = tito ; 'FIN' iimeth ; 'FIN' iiquad ; tit = 'CHAINE' 'Log Err. (Log h)' ; tix = 'CHAINE' 'Log h' ; tiy = 'CHAINE' 'Log Err' ; evt = @STBL tabev ; 'SI' graph ; dessevol evt tabt tit tix tiy FAUX ; 'FINSI' ; 'SAUTER' 2 'LIGNE' ; * Tests des ordres ok = VRAI ; 'REPETER' iiquad 2 ; iquad = &iiquad ; 'SI' ('EGA' iquad 1) ; disc = 'LINE' ; 'SINON' ; disc = 'QUAD' ; 'FINSI' ; 'REPETER' iimeth 4 ; imeth = '-' &iimeth 1 ; 'SI' ('EGA' imeth 0) ; met = 'CHAINE' 'rien ' ; 'FINSI' ; 'SI' ('EGA' imeth 1) ; met = 'CHAINE' 'full upwind ' ; 'FINSI' ; 'SI' ('EGA' imeth 2) ; met = 'CHAINE' 'supg crit approx' ; 'FINSI' ; 'SI' ('EGA' imeth 3) ; met = 'CHAINE' 'supg doub asymp ' ; 'FINSI' ; valvoul = tabordv . disc . imeth ; valobt = tabordc . disc . imeth ; test = ('EGA' valobt valvoul ('*' valvoul 0.2D0)) ; ok = ok 'ET' test ; mess1 = 'CHAINE' 'Eléments ' disc ' Décentrement ' met ' ordre = ' valobt ; 'MESSAGE' mess1 ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' '!!!! On aurait voulu avoir :' valvoul) ; 'FINSI' ; 'FIN' iimeth ; 'FIN' iiquad ; * 'SI' ('NON' ok) ; '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 NLIN_DECENT2D * 'FIN' ;